Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit2a63161bccb8e448e4c5ce0bec3bf82b517b09d6 (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-04-01 09:41:45 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-04-01 09:41:45 +0300
Filesfcdf80bdc436580241527695f682523823c3951c
syndamia.com-2a63161bccb8e448e4c5ce0bec3bf82b517b09d6.tar
syndamia.com-2a63161bccb8e448e4c5ce0bec3bf82b517b09d6.tar.gz
syndamia.com-2a63161bccb8e448e4c5ce0bec3bf82b517b09d6.zip
Parent1455da7ebd25bf787a4c448553be5caca7f33aba (diff)
feat(teaching/oop-2025/w07): Add exercises
3 files changed, 68 insertions, 0 deletions
-rw-r--r--meta/meta.tsv1
-rw-r--r--src/teaching/oop-2025/index.du9
-rw-r--r--src/teaching/oop-2025/week07/index.du58
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.
+
+Един банков служител може да одобри или отхвърли дадена належаща транзакция.
+Допълнително може да изкара историята на всички одобрени или отхвърлени транзакции в текстов файл, където се записват номер на транзакцията, цена, номер на банкова карта и банков служител, който е одобрил/отхвърли.