Задачи - ООП, Седмица 3, 04.03.2026
За решаване
Задача 1
Реализирайте система за онлайн магазин. Трябва да имате потребители, администратори и продукти.
Всеки потребител (и администратор) си има потребителско име и парола. Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да "купи" продукти.
Администраторски акаунти, допълнително, могат да променят дали акаунти са администраторски и да добавят продукти. Всеки продукт си има име, бройка и цена.
Имената и пароли на потребители, както и имена на продукти не съдържат шпации.
При стартирането на програмата, трябва да има наличен администраторски акаунт с потребителско име "admin" и парола "admin".
От входа първо се получава буква, която обозначава команда/действие в платформата. Когато няма "логнат" потребител, имаме следните команди налични:
-
l- влизане в потребителски акаунт, поискват се потребителско име и парола. Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира -
r- регистриране на потребител, поискват се потребителско име и парола. Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение -
p- изкарване на всички продукти и техните цени. Ако няма въведени продукти, тогава да се изкара съответното съобщение.
Когато потребител влезе в акаунта си, има достъп към следните команди:
-
p- изкарване на всички продукти и техните цени. Ако няма въведени продукти, тогава да се изкара съответното съобщение. -
e- излизане от акаунта си -
b- купуване на продукти, първо потребителя казва колко (различни) продукта ще си купи и след това въвежда за всеки продукт, неговото име и бройка. Ако името е грешно или няма достатъчно количество, изкарва се съответното съобщение и процеса се анулира. При успешно купуване се изкарва общата цена на продуктите и тяхната обща бройка е намалена.
Когато администратор влезе в акаунта си, той има всички команди които и нормалния потребител има, заедно с:
-
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
Реализирайте система за писане на съобщения между потребители.
Всеки потребител си има потребителско име и парола. Чрез вход и изход, трябва да може потребител да се регистрира, да влезе в акаунта си и да изпрати съобщение.
Имената и пароли на потребители не съдържа шпации. Съобщенията винаги са едноредови.
От входа първо се получава буква, която обозначава команда/действие в платформата. Когато няма "логнат" потребител, имаме следните команди налични:
-
l- влизане в потребителски акаунт, поискват се потребителско име и парола. Ако не съвпадат на някой регистриран потребител, изкарва се съответното съобщение и процеса се анулира -
r- регистриране на потребител, поискват се потребителско име и парола. Ако потребителско имеа се повтаря с този на вече регистриран потребител, изкарва се съответното съобщение
Когато потребител влезе в акаунта си, има достъп към следните команди:
-
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