diff options
3 files changed, 68 insertions, 0 deletions
| -rw-r--r-- | meta/meta.tsv | 1 | ||||
| -rw-r--r-- | src/teaching/oop-2025/index.du | 9 | ||||
| -rw-r--r-- | src/teaching/oop-2025/week07/index.du | 58 |
diff --git a/meta/meta.tsv b/meta/meta.tsv index 86959a9..07b4620 100644 --- a/meta/meta.tsv +++ b/meta/meta.tsv @@ -122,6 +122,7 @@ teaching/oop-2025/week04/index.html Задачи - ООП, Седмица 4, 11. teaching/oop-2025/week05/index.html Задачи - ООП, Седмица 5, 18.03.2026 Условията на задачите за упражнение. teaching/oop-2025/oop-notes/index.html Бележки по ООП при C++ - ООП, КН, 2025-2026 Полезна информация и детайли относно обектно-ориентираното програмиране при C++ teaching/oop-2025/week06/index.html Задачи - ООП, Седмица 6, 25.03.2026 Условията на задачите за упражнение. +teaching/oop-2025/week07/index.html Задачи - ООП, Седмица 7, 01.04.2026 Условията на задачите за упражнение. blog/connect-to-mysql-in-dotnet-ef/index.html Connect to MySql in .NET and Entity Framework Connecting a .NET application to a MySql database (with Entity Framework) can be tricky. Here is what works for me. diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du index 3fefa57..cc2da00 100644 --- a/src/teaching/oop-2025/index.du +++ b/src/teaching/oop-2025/index.du @@ -84,3 +84,12 @@ |: [url ./week06 Задачи] || [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06 Решения] + +|: 7 +|: 01.04.2026 +|: Файлове + +|: +|: +|: +[url ./week07 Задачи] diff --git a/src/teaching/oop-2025/week07/index.du b/src/teaching/oop-2025/week07/index.du new file mode 100644 index 0000000..dbcefab --- /dev/null +++ b/src/teaching/oop-2025/week07/index.du @@ -0,0 +1,58 @@ +# Задачи - ООП, Седмица 7, 01.04.2026 + +'define expected-reading 4 min +'define created 01 April 2026 +'define edited 01 April 2026 +[$pagenav] + +.warn За всеки клас имплементирайте [=голяма петица!=] + +## За решаване + +### Задача 1 + +Реализирайте система за менажиране на онлайн книги. + +В тази система имате: +.bulleted +- потребители, които могат да купуват и четат книги +- библиотекари, които могат да добавят и махат книги, както и да променят цената им +- банкови служители, които одобряват или отказват транзакции + +[=Книгите=] имат заглавие, автор, година на издаване, (многоредово) текстово съдържание и цена. + +[=Потребителите=] имат имейл и парола с които влизат, своя библиотека от книги които могат да достъпват и номер на банкова карта. +Всеки потребител има възможността да смени своята парола или номер на банкова карта. + +Номер "0" на банкова карта обозначава, че няма свързана банкова карта (и потребителя може да купува само безплатни книги). +Потребителя може да изреди всички книги в библиотеката си и да чете всяка от тях (цялото съдържание на книгата се изкарва на екрана). + +Допълнително, потребител може да изреди всички налични книги и да си закупи някоя. +В този случай се създава транзакция, която трябва да бъде одобрена от банков служител (освен когато книгата е безплатна). + +Потребителите могат да виждат всички свои транзакции и техния статус: чакащ одобрение, одобрен, отхвърлен. +Допълнително, могат да изкарат справка за купени книги, която е текстов файл, съдържащ всяка (одобрена) транзакция, заглавието и цената на закупената книга. + +[=Библиотекарите=] имат библиотекарски номер и парола с които влизат. +Те могат да добавят нови книги, където на един ред се въвежда заглавието на книгата, на втори се въвежда автора, на трети година на издаване, на четвърти цената и след това се въвежда съдържанието на книгата. +Това съдържание свършва, когато се въведе знака точка [`.`] на самостоятелен ред. + +За вече съществуващи книги, могат да се редактират заглавието, автора, и цената. +Да се има впредвид, че тези всички тези промени, освен върху цената, се разпространяват на потребителите. +Тоест, промененото заглавие излиза на всички потребители закупили книгата, но веднъж закупена, потребителя не я губи от библиотеката си. + +Допълтенилно, библиотекарите могат да експортират и импортират книги от двоичен текстов файл. +Обаче, файла не може да съдържа цената, т.е. след импортиране библиотекаря трябва да я въведе. + +Освен това библиотекар може да маркира книга дали е налична или не. +Това обозначава дали потребител може да си я купи или не (и дали излиза в списъка с налични книги за купуване; но не променя нищо ако е вече закупена). +По подразбиране всяка нова книга е налична и трябва експлитно да бъде "свалена". + +[=Банковите служители=] влизат със служителски номер, динамична парола и статична парола. +Статичната парола е текстова, докато динамичната парола е положително число, което трябва да изпълнява тъждеството [`(служителски_номер * динамича_парола) mod 8581 = 0`]. + +Допълнително, нито служителския номер, нито статичната парола, могат да бъдат числата 0, 1 или 8581. +Примери за такива двойки числа са: 27 17162, 572 51486, 901 42905. + +Един банков служител може да одобри или отхвърли дадена належаща транзакция. +Допълнително може да изкара историята на всички одобрени или отхвърлени транзакции в текстов файл, където се записват номер на транзакцията, цена, номер на банкова карта и банков служител, който е одобрил/отхвърли. |