Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Конструирование программного обеспечения: Домашняя работа №2

Notifications You must be signed in to change notification settings

adadgoff/RestaurantManagementSystem

Repository files navigation

Конструирование Программного Обеспечения: Домашняя работа №2

Условие

Разработать систему управления заказами в ресторане, которая поддерживает два типа пользователей: посетителей и администраторов. Система должна обрабатывать заказы в многопоточном режиме, позволяя клиентам добавлять блюда в заказ в реальном времени, а также отображать статусы заказов. Администраторы могут управлять меню, добавляя или удаляя блюда. Все решения должны соблюдать принципы ООП и SOLID, а также использовать шаблоны проектирования, где это уместно.

Требования

  • Реализуйте систему аутентификации для двух типов пользователей: посетителей и администраторов.
  • Администратор может добавлять и удалять блюда из меню, а также устанавливать их количество, цену и сложность выполнения (время, которое оно будет готовиться).
  • Посетители могут составлять заказ, выбирая блюда из актуального меню.
  • Заказы обрабатываются в отдельных потоках, симулируя процесс приготовления.
  • Посетители могут добавлять блюда в существующий заказ, пока он находится в обработке.
  • Посетители должны иметь возможность отменять заказ до того, как он будет готов.
  • Система должна отображать актуальный статус заказа (например, "принят", "готовится", "готов").
  • По завершению выполнения заказа посетитель должен иметь возможность его оплатить.
  • Необходимо сохранять состояния программы: меню, сумму выручки, пользователей в системе, а также то, что вы посчитаете нужным.

Критерии оценки

  • Применение принципов ООП и SOLID (0 – 1 балл)
  • Аутентификация (0 – 1 балл)
  • Использование шаблонов проектирования (0 – 1 балл)
  • Хранение данных (0 – 1 балл)
  • Реализация многопоточности для обработки заказов (0 – 2 балла)
  • Codestyle (0 – 1 балл)
  • readme с описанием того, как пользоваться программой, какие шаблоны были использованы в проекте и почему (0 – 0.5 балла)
  • Понятный интерфейс (0 – 0.5 балла)

Опциональное задание (на дополнительные 1 – 2 балла)

  • Дать возможность клиентам оставлять отзывы о блюдах после оплаты заказа. Отзывы должны включать оценку от 1 до 5 и текстовый комментарий.
  • Реализовать функционал, позволяющий администратору просматривать статистику по заказам и отзывам (например, самые популярные блюда, средняя оценка блюд, количество заказов за период).
  • Система приоритетов для обработки заказов (вы должны сами решить, по какому принципу приоритезированы заказы, объяснив своё решение в readme).

Дополнительно

  • Штраф –3 балла за наличие ошибки во время выполнения кода
  • Оценка снижается до 0, если программа не собирается (должен быть предоставлен полный код программы)
  • Код должен быть загружен на удаленный Git-репозиторий с четкой структурой каталогов и созданным pull/merge request из ветки develop в пустую ветку main.
  • Предусмотрено снижение оценки пропорционально объему невыполненных функциональных требований.

Дополнительная информация

  • Выполнять ДЗ можно на языках Kotlin или Java.
  • Дедлайн сдачи: 10 марта, 23:59.

Зависимости

Lombok

Apache Freemaker
Thymeleaf

Java Mail Sender
JDBC API

Spring Data JPA
Spring Security
Spring Web

PostgreSQL Driver

Информация

Пользователь БД: postgres Пароль от БД: postgres

Команды

docker-compose up -d

Структура проекта

| src
|-- main
|---- java
|------ com.RestaurantManagementSystem
|-------- controlles <- "ручки" приложения.
|-------- models <- связь с БД.
|-------- repositories <- .
|-------- services <- CRUD-операции.
|-- test

Задачи

  • Привести к норм кодстайлу;

  • Алфавитный порядок декораторов?

  • Makefile;

  • .env;

  • В Orders хранятся выполненные заказы. Заказы входят по принципу Stack'а FIFO.

  • Добавить логику для сжатия файлов.

Дополнительные задачи

  • Сделать возможность смены почты и пароля;
  • Сделать проверку по почте;

About

Конструирование программного обеспечения: Домашняя работа №2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages