# Задачи - ООП, Седмица 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