albertvision / nbu-citb408-shop

Част от разработката ми за проекта в курса CITB408, който се води в НБУ.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Курсов проект по CITB408 (Програмиране на Java)

Въведение

Проектът представлява частична симулация на физически магазин чрез интерфейс през команндия ред (CLI).

Важно правило в имплементацията е методите в моделите да не реализират бизнес логика, в която участници са обекти и от други модели. Когато това е необходимо, въпросното действие се изплементира като команда (commands.Command). Всички налични команди се описват в App::commands.

За улесняване на работата при четене и валидиране на вход са изградени съответно абстракциите cli.Reader и validation.Rule, които не допускат потребителят да продължи напред, докато не въведе стойност, която удовлетворява всички правила, които са указани при инстанцирането на всяко поле.

Проектът е направен така, че да може всяка една част от него да се тества. Това означава, че не се използват статични методи, а само инстанционни такива.

Команди

add_product - добавяне на продукт

Полета

  1. SKU;
  2. име;
  3. доставна цена;
  4. тип (стойности от models.Category);
  5. дата на изтичане на годността;

Примерен вход

add_product
SKU-1234
My product
10.55
GROCERY
2023-06-23

add_shop - добяване на магазин

Полета

  1. Марж за всеки един от типовете продукти;
  2. отстъпка за продукти с изтичащ срок на годност;
  3. от колко дни преди изтичането на срока на годност да се прилага отстъпката за това;
  4. информация за служителите в магазина - служебен номер, имена и месечна заплата.

Примерен вход

add_shop
10
5
3
2
3
2
S1C1
Petko
1500.50
S1C2
Ivanko
1600

add_product_in_shop - зареждане на стока в магазин

Полета

  1. SKU на продукта;
  2. количество
  3. магазин, в който да се зареди.

Примерен вход

add_product_in_shop
SKU-1234
5
0

set_cashier_desk - изпращане на касиер на дадена каса

Полета

  1. Магазин;
  2. служебен номер на служителя;
  3. каса, на която да отиде.

Примерен вход

set_cashier_desk
0
S1C2
2

add_customer - дейност на клиент в магазин (избор на продукти и нареждане на опашка)

Полета

  1. Стойност в портфейл;
  2. магазин;
  3. SKU и количество на продуктите, които иска да купи. При въвеждане на празен ред се спира въвеждането им.
  4. избор на отворена каса, на която да се нареди.

Примерен вход

add_customer
0
0
SKU-1234
6
3

0

serve_cash_desk - обслужване на каса

Полета

  1. магазин;
  2. отворена каса.

Примерен вход

serve_cash_desk
0
0

exit - изход от програмата

About

Част от разработката ми за проекта в курса CITB408, който се води в НБУ.


Languages

Language:Java 99.2%Language:Kotlin 0.8%