Задание 2: Расширенная кассовая система супермаркетаJAVA

Программисты JAVA общаются здесь
Anonymous
Задание 2: Расширенная кассовая система супермаркета

Сообщение Anonymous »

Это задание было заблокировано 11 марта в 23:59.

Цель

В этом задании вы продолжите моделировать систему кассира супермаркета, используя передовые принципы объектно-ориентированного проектирования (ООП). Вам необходимо применить наследование, полиморфизм, интерфейсы, дженерики и обработку исключений в вашей реализации.

Функции системы

В супермаркете продаются разнообразные продукты, разделенные на следующие категории:
  • Продукты на полках:

    Такие продукты как упакованные продукты питания или напитки, имеющие срок годности. Если до истечения срока действия продукта осталось 30 дней или меньше, он продается по цене 30 % от первоначальной цены.

    В нашей системе учитывается только дата (а не время). Текущий день не учитывается в расчете. Например, если срок действия товара истекает 10 декабря, а сегодня 9 декабря, до истечения срока действия остается всего 1 день.
[*]Продукты длительного пользования:
  • У этих товаров нет срока годности (например, книг, одежды, электронных устройств). Некоторые товары длительного пользования подлежат возврату, тогда как другие (например, интимная одеждане подлежат возврату.
[*]Скоропортящиеся продукты:
  • Свежие продукты, такие как фрукты, овощи и свежее молоко. На их цену влияет свежесть: если срок годности продукта истёк наполовину, он продается по 50 % от первоначальной цены.

В супермаркете действуют следующие правила:
  • Продукты с истекшим сроком годности продаваться не могут.
  • Премиум-участники платят только 95 % от общей стоимости.
  • Правила возврата:

    Продукты длительного пользования могут быть возвращены в течение (≤) 30 дней .
  • Полка товары могут быть возвращены в течение (≤) 7 дней.
  • Скоропортящиеся продукты возврату не подлежат.

Обязательные требования к реализации

Ваша реализация должна включать следующие объектно-ориентированные функции:
  • Абстрактные классы и методы: определите подходящие места для использования абстрактных классов и абстрактных методов для обеспечения структуры.
  • Обобщенные типы: используйте универсальные типы для создания многоразовых и безопасных типов код.
  • Интерфейсы: реализуйте два интерфейса:

    Возврат → Для продуктов, подлежащих возврату.
  • Срок годности → Для продуктов со сроком годности.
[*]Категоризация продуктов. Внедрите следующие конкретные классы продуктов:
Книга, Бытовая техника, Молоко, Овощи, Одежда, Упакованная еда, Напитки.

[*]Обработка настраиваемых исключений.  Определите собственное исключение ExpiredProductException для обработки случаев, когда клиент случайно пытается приобрести товары с истекшим сроком годности.

Обязательные сценарии (реализованы в вашем основном методе)

Сценарий 1 (S1): 03.03.2026 Премиум-участник совершает покупку, состоящую из:

  • 1 банка Колы → 8 HKD, до окончания срока годности осталось 20 дней. (Срок годности: 23-03-2026)
  • 1 книга («Маленький принц») → 100 гонконгских долларов.
  • 1 пара носков (возврату не подлежат) → 30 гонконгских долларов.
  • 1 бутылка свежего молока (Дата производства: 01.03.2026, Срок годности: 7 дней, Первоначальная цена: 24 гонконгских доллара).
  • 1 пакетик картофельных чипсов (с истекшим сроком годности).

Ожидаемый результат (S1):
  • Система должна обнаружить и отклонить картофельные чипсы с истекшим сроком годности с сообщением об ошибке (система не должна дать сбой):

    "Ошибка: Срок годности картофельных чипсов истек. Вы не можете их купить".
  • Затем система должна рассчитать и отобразить общую сумму после применения всех соответствующих скидок.

    "Общая сумма платежа равна: ??? HKD"
Сценарий 2 (S2):  Тот же клиент запрашивает возврат средств за весь заказ 11 марта 2026 г.
Ожидаемый результат (S2):
Ваша система сначала должна:
  • Отклонить возврат средств за носки (не подлежит возврату).

    Вывод: «К сожалению, товар [Носок] не подлежит возврату».
[*]Отклонить возврат средств за молоко (скоропортящиеся товары возврату не подлежат).
  • Вывод: «К сожалению, этот товар [Молоко] возврату не подлежит».
[*]Отклонить возврат средств за колу (превышен срок возврата – только 7-дневная политика возврата для продуктов, находящихся на полке).
  • Вывод: «К сожалению, период возврата [Колы] истек».

Затем утвердите возврат средств за другие подходящие продукты (например, книги и товары длительного пользования). бытовая техника).
  • Рассчитайте и отобразите общую сумму возврата

    (напоминание: поскольку клиент является участником, для возврата необходимо применить сумму со скидкой).

    "Общая сумма возврата: ??? HKD"

Оценочные баллы:

  • Ваша система может выводить ожидаемый результат
  • Ваш код соответствует ПЯТИ обязательным требованиям реализации
  • Ваш код соответствует хорошему стилю программирования Java (именование и организация пакетов)

Отправка:

  • Отправьте исходный код (вся папка проекта).
  • Диаграмма классов UML

    Не рукописный, используйте такие инструменты, как draw.io, экспортируйте в формате pdf.
[*]Снимок экрана, показывающий выходные данные вашей программы (и мы запустит и проверит ваш код для подтверждения).

[*]Сжимайте исходный код и PDF-файл UML в zip-файл с именем в следующем формате:


StudentId_YourName_Assignment2.zip (например, 56343732_Chris_Assignment2.zip)

Вернуться в «JAVA»