diff options
| Commit | cab933f9d682283a07fdf725ca9034abbbd482d7 (patch) | |
|---|---|---|
| Author | 2026-03-03 19:19:55 +0200 | |
| Committer | 2026-03-03 19:19:55 +0200 | |
| Files | f46f056a19c1906ded0ac2f758ce3b66a86aecf2 /src/teaching | |
| syndamia.com-cab933f9d682283a07fdf725ca9034abbbd482d7.tar syndamia.com-cab933f9d682283a07fdf725ca9034abbbd482d7.tar.gz syndamia.com-cab933f9d682283a07fdf725ca9034abbbd482d7.zip | ||
| Parent | b7a227c5f3c86d06663a3a2e87e10be6f945d286 (diff) | |
feat(teaching/oop-2025/w03): Add exercises
2 files changed, 262 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2025/index.du | 9 | ||||
| -rw-r--r-- | src/teaching/oop-2025/week03/index.du | 253 |
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du index e5062ac..954c0c5 100644 --- a/src/teaching/oop-2025/index.du +++ b/src/teaching/oop-2025/index.du @@ -41,3 +41,12 @@ |: [url ./week02 Задачи] || [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week02 Решения] + +|: 3 +|: 04.03.2026 +|: Структурирани програми + +|: +|: +|: +[url ./week03 Задачи] diff --git a/src/teaching/oop-2025/week03/index.du b/src/teaching/oop-2025/week03/index.du new file mode 100644 index 0000000..1c99504 --- /dev/null +++ b/src/teaching/oop-2025/week03/index.du @@ -0,0 +1,253 @@ +# Задачи - ООП, Седмица 3, 04.03.2026 + +'define expected-reading 4 min +'define created 03 March 2026 +'define edited 03 March 2026 +[$pagenav] + +## За решаване + +### Задача 1 + +Реализирайте система за онлайн магазин. +Трябва да имате потребители, администратори и продукти. + +Всеки потребител (и администратор) си има потребителско име и парола. +Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да "купи" продукти. + +Администраторски акаунти, [=допълнително=], могат да променят дали акаунти са администраторски и да добавят продукти. +Всеки продукт си има име, бройка и цена. + +Имената и пароли на потребители, както и имена на продукти не съдържат шпации. + +При стартирането на програмата, трябва да има наличен администраторски акаунт с потребителско име "admin" и парола "admin". + +От входа първо се получава буква, която обозначава команда/действие в платформата. +Когато няма "логнат" потребител, имаме следните команди налични: +.bulleted +- [`l`] - влизане в потребителски акаунт, поискват се потребителско име и парола. + Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира +- [`r`] - регистриране на потребител, поискват се потребителско име и парола. + Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение +- [`p`] - изкарване на всички продукти и техните цени. + Ако няма въведени продукти, тогава да се изкара съответното съобщение. + +Когато потребител влезе в акаунта си, има достъп към следните команди: +.bulleted +- [`p`] - изкарване на всички продукти и техните цени. + Ако няма въведени продукти, тогава да се изкара съответното съобщение. +- [`e`] - излизане от акаунта си +- [`b`] - купуване на продукти, първо потребителя казва колко (различни) продукта ще си купи и след това въвежда за всеки продукт, неговото име и бройка. + Ако името е грешно или няма достатъчно количество, изкарва се съответното съобщение и процеса се анулира. + При успешно купуване се изкарва общата цена на продуктите и тяхната обща бройка е намалена. + +Когато администратор влезе в акаунта си, той има всички команди които и нормалния потребител има, заедно с: +.bulleted +- [`a`] - променя дали потребител е администратор (прави администратор на нормален или нормален на администратор) +- [`s`] - въвежда име на продукт, бройка и цена. + Ако продукта не съществува, тогава го създава. + Ако съществува (със същото име), тогава го обновява: бройката се добавя към текущата и ценята се заменя. + +[=Смесен вход/изход:=] [*(удебеления текст е въведен от потребителя, останалото е изкарано от програмата)*] +``` +[=r=] +Username: [=gg=] +Password: [=ez=] +Successfully registered user 'gg'! +[=l=] +Username: [=gogo=] +User 'gogo' does not exist! +[=l=] +Username: [=gg=] +Password: [=pie=] +Incorrect password! +[=l=] +Username: [=gg=] +Password: [=ez=] +Successful login! +[=p=] +No products! +[=s=] +No permissions! +[=e=] +Logged out! +[=l=] +Username: [=admin=] +Password: [=admin=] +Successful login! +[=s=] +Name: [=Apple=] +Quantity: [=50=] +Price: [=0.5=] +[=s=] +Name: [=Bread=] +Quantity: [=20=] +Price: [=1.15=] +[=s=] +Name: [=Apple=] +Quantity: [=10=] +Price: [=0.5=] +[=s=] +Name: [=Bread=] +Quantity: [=0=] +Price: [=2=] +[=p=] +Apple 60 0.5 +Bread 20 2 +[=b=] +Number of products: [=2=] +Name: [=Apple=] +Quantity: [=100=] +Invalid quantity! +[=b=] +Number of products: [=3=] +Invalid number of products! +[=b=] +Number of products: [=2=] +Name: [=Apple=] +Quantity: [=5=] +Name: [=Bread=] +Quantity: [=1=] +Purchase successful! Total cost: 4.5 +[=p=] +Apple 55 0.5 +Bread 19 2 +[=a=] +Username: [=gogo=] +User 'gogo' does not exist! +[=a=] +Username: [=gg=] +Made user 'gg' into an administrator. +[=e=] +Logged out! +[=l=] +Username: [=gg=] +Password: [=ez=] +Successful login! +[=s=] +Name: [=Apple=] +Quantity: [=0=] +Price: [=0.75=] +[=b=] +Number of products: [=1=] +Name: [=Apple=] +Quantity: [=3=] +Purchase successful! Total cost: 2.25 +[=p=] +Apple 52 0.75 +Bread 19 2 + +## За самоподготовка + +### Задача 2 + +Реализирайте система за писане на съобщения между потребители. + +Всеки потребител си има потребителско име и парола. +Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да изпрати съобщение. + +Имената и пароли на потребители не съдържа шпации. +Съобщенията винаги са едноредови. + +От входа първо се получава буква, която обозначава команда/действие в платформата. +Когато няма "логнат" потребител, имаме следните команди налични: +.bulleted +- [`l`] - влизане в потребителски акаунт, поискват се потребителско име и парола. + Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира +- [`r`] - регистриране на потребител, поискват се потребителско име и парола. + Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение + +Когато потребител влезе в акаунта си, има достъп към следните команди: +.bulleted +- [`e`] - излизане от акаунта +- [`u`] - изреждане на имената на всички регистрирани потребители (включително себе си) +- [`m`] - изпращане на съобщение, поискват се име на потребител и след това самото съобщение +- [`i`] - изкарване на съобщения, изпратени към текущо влезли потребител. + Поисква се бройка и след това се изкарват последните толкова на брой съобщения, които са изпратени към нас. + Ако се поискат повече съобщения отколкото има, тогава се изкарват всичките. +- [`h`] - изкарва се разговора между нас и даден потребител. + Поисква се име на потребител и след това се изкарват съобщенията които той е изпратил и които ние сме изпратили, в коректен ред. + +[=Смесен вход/изход:=] [*(удебеления текст е въведен от потребителя, останалото е изкарано от програмата)*] +``` +[=r=] +Username: [=barry=] +Password: [=1234=] +Successfully registered user 'barry'! +[=r=] +Username: [=map=] +Password: [=1234=] +Successfully registered user 'map'! +[=r=] +Username: [=joe=] +Password: [=1234=] +Successfully registered user 'joe'! +[=l=] +Username: [=map=] +Password: [=1234=] +Successful login! +[=u=] +barry +map +joe +[=m=] +Username: [=dd=] +User 'dd' does not exist! +[=m=] +Username: [=barry=] +Message: [=Hello barry!=] +[=m=] +Username: [=barry=] +Message: [=How are you?=] +[=e=] +Logged out! +[=l=] +Username: [=joe=] +Password: [=1234=] +Successful login! +[=m=] +Username: [=barry=] +Message: [=Are you there?=] +[=e=] +Logged out! +[=l=] +Username: [=barry=] +Password: [=1234=] +Successful login! +[=m=] +Username: [=map=] +Message: [=I'm fine=] +[=i=] +Number of messages: [=10=] +map: Hello barry! +map: How are you? +joe: Are you there? +[=e=] +Logged out! +[=l=] +Username: [=map=] +Password: [=1234=] +Successful login! +[=m=] +Username: [=barry=] +Message: [=Good to hear!=] +[=e=] +Logged out! +[=l=] +Username: [=barry=] +Password: [=1234=] +Successful login! +[=h=] +Username: [=map=] +map: Hello barry! +map: How are you? +barry: I'm fine +map: Good to hear! +[=m=] +Username: [=barry=] +Message: [=Note to self: do not talk to map=] +[=i=] +Number of messages: [=3=] +joe: Are you there? +map: Good to hear! +barry: Note to self: do not talk to map |