'def title Задачи - ООП, Седмица 3, 04.03.2026 'def desc Условията на задачите за упражнение. # {title} {pagenav 4 min;03 March 2026;03 March 2026} ## За решаване ### Задача 1 .solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week03/Exercise01} Реализирайте система за онлайн магазин. Трябва да имате потребители, администратори и продукти. Всеки потребител (и администратор) си има потребителско име и парола. Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да "купи" продукти. Администраторски акаунти, {b допълнително}, могат да променят дали акаунти са администраторски и да добавят продукти. Всеки продукт си има име, бройка и цена. Имената и пароли на потребители, както и имена на продукти не съдържат шпации. При стартирането на програмата, трябва да има наличен администраторски акаунт с потребителско име "admin" и парола "admin". От входа първо се получава буква, която обозначава команда/действие в платформата. Когато няма "логнат" потребител, имаме следните команди налични: .bulleted - {` l} - влизане в потребителски акаунт, поискват се потребителско име и парола. Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира - {` r} - регистриране на потребител, поискват се потребителско име и парола. Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение - {` p} - изкарване на всички продукти и техните цени. Ако няма въведени продукти, тогава да се изкара съответното съобщение. Когато потребител влезе в акаунта си, има достъп към следните команди: .bulleted - {` p} - изкарване на всички продукти и техните цени. Ако няма въведени продукти, тогава да се изкара съответното съобщение. - {` e} - излизане от акаунта си - {` b} - купуване на продукти, първо потребителя казва колко (различни) продукта ще си купи и след това въвежда за всеки продукт, неговото име и бройка. Ако името е грешно или няма достатъчно количество, изкарва се съответното съобщение и процеса се анулира. При успешно купуване се изкарва общата цена на продуктите и тяхната обща бройка е намалена. Когато администратор влезе в акаунта си, той има всички команди които и нормалния потребител има, заедно с: .bulleted - {` a} - променя дали потребител е администратор (прави администратор на нормален или нормален на администратор) - {` s} - въвежда име на продукт, бройка и цена. Ако продукта не съществува, тогава го създава. Ако съществува (със същото име), тогава го обновява: бройката се добавя към текущата и ценята се заменя. {b Смесен вход/изход:} {i (удебеления текст е въведен от потребителя, останалото е изкарано от програмата)} ``` {b r} Username: {b gg} Password: {b ez} Successfully registered user 'gg'! {b l} Username: {b gogo} User 'gogo' does not exist! {b l} Username: {b gg} Password: {b pie} Incorrect password! {b l} Username: {b gg} Password: {b ez} Successful login! {b p} No products! {b s} No permissions! {b e} Logged out! {b l} Username: {b admin} Password: {b admin} Successful login! {b s} Name: {b Apple} Quantity: {b 50} Price: {b 0.5} {b s} Name: {b Bread} Quantity: {b 20} Price: {b 1.15} {b s} Name: {b Apple} Quantity: {b 10} Price: {b 0.5} {b s} Name: {b Bread} Quantity: {b 0} Price: {b 2} {b p} Apple 60 0.5 Bread 20 2 {b b} Number of products: {b 2} Name: {b Apple} Quantity: {b 100} Invalid quantity! {b b} Number of products: {b 3} Invalid number of products! {b b} Number of products: {b 2} Name: {b Apple} Quantity: {b 5} Name: {b Bread} Quantity: {b 1} Purchase successful! Total cost: 4.5 {b p} Apple 55 0.5 Bread 19 2 {b a} Username: {b gogo} User 'gogo' does not exist! {b a} Username: {b gg} Made user 'gg' into an administrator. {b e} Logged out! {b l} Username: {b gg} Password: {b ez} Successful login! {b s} Name: {b Apple} Quantity: {b 0} Price: {b 0.75} {b b} Number of products: {b 1} Name: {b Apple} Quantity: {b 3} Purchase successful! Total cost: 2.25 {b p} Apple 52 0.75 Bread 19 2 ## За самоподготовка ### Задача 2 Реализирайте система за писане на съобщения между потребители. Всеки потребител си има потребителско име и парола. Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да изпрати съобщение. Имената и пароли на потребители не съдържа шпации. Съобщенията винаги са едноредови. От входа първо се получава буква, която обозначава команда/действие в платформата. Когато няма "логнат" потребител, имаме следните команди налични: .bulleted - {` l} - влизане в потребителски акаунт, поискват се потребителско име и парола. Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира - {` r} - регистриране на потребител, поискват се потребителско име и парола. Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение Когато потребител влезе в акаунта си, има достъп към следните команди: .bulleted - {` e} - излизане от акаунта - {` u} - изреждане на имената на всички регистрирани потребители (включително себе си) - {` m} - изпращане на съобщение, поискват се име на потребител и след това самото съобщение - {` i} - изкарване на съобщения, изпратени към текущо влезли потребител. Поисква се бройка и след това се изкарват последните толкова на брой съобщения, които са изпратени към нас. Ако се поискат повече съобщения отколкото има, тогава се изкарват всичките. - {` h} - изкарва се разговора между нас и даден потребител. Поисква се име на потребител и след това се изкарват съобщенията които той е изпратил и които ние сме изпратили, в коректен ред. {b Смесен вход/изход:} {i (удебеления текст е въведен от потребителя, останалото е изкарано от програмата)} ``` {b r} Username: {b barry} Password: {b 1234} Successfully registered user 'barry'! {b r} Username: {b map} Password: {b 1234} Successfully registered user 'map'! {b r} Username: {b joe} Password: {b 1234} Successfully registered user 'joe'! {b l} Username: {b map} Password: {b 1234} Successful login! {b u} barry map joe {b m} Username: {b dd} User 'dd' does not exist! {b m} Username: {b barry} Message: {b Hello barry!} {b m} Username: {b barry} Message: {b How are you?} {b e} Logged out! {b l} Username: {b joe} Password: {b 1234} Successful login! {b m} Username: {b barry} Message: {b Are you there?} {b e} Logged out! {b l} Username: {b barry} Password: {b 1234} Successful login! {b m} Username: {b map} Message: {b I'm fine} {b i} Number of messages: {b 10} map: Hello barry! map: How are you? joe: Are you there? {b e} Logged out! {b l} Username: {b map} Password: {b 1234} Successful login! {b m} Username: {b barry} Message: {b Good to hear!} {b e} Logged out! {b l} Username: {b barry} Password: {b 1234} Successful login! {b h} Username: {b map} map: Hello barry! map: How are you? barry: I'm fine map: Good to hear! {b m} Username: {b barry} Message: {b Note to self: do not talk to map} {b i} Number of messages: {b 3} joe: Are you there? map: Good to hear! barry: Note to self: do not talk to map