Это консольное приложение предоставляет возможность аутентификации двух типов пользователей (посетителей и администраторов) и управления блюдами и заказами. Система обрабатывает заказы в многопоточном режиме, позволяя клиентам добавлять блюда в заказ в реальном времени, а также отображать статусы заказов. Администраторы могут управлять меню, добавляя или удаляя блюда, а также просматривать статистику по отзывам и заказам.
-
Запуск приложения
- Запустите приложение, выполните файл
mainв вашей среде разработки или в консоли. - Приложение откроет меню для входа или регистрации.
- Запустите приложение, выполните файл
-
Аутентификация
- Введите логин и пароль для входа в систему.
- Если у вас нет аккаунта, выберите опцию регистрации и следуйте инструкциям.
-
Главное меню
- После успешной аутентификации откроется главное меню, предоставляющее различные действия в зависимости от вашей роли в системе.
- Выберите нужное действие, введя соответствующую цифру.
-
Действия пользователя
- Пользователи могут просматривать меню, создавать заказы, проверять статус своих текущих заказов, отменять заказы до их готовности, добавлять блюда в заказы, находящиеся в обработке, оплачивать готовые заказы и оставлять к ним отзывы.
-
Действия администратора
- Администраторы имеют доступ к дополнительным функциям:
- Добавление, удаление и изменение блюд.
- Просмотр статистики, включающей в себя общее число заказов, среднее количество блюд в заказе, среднюю стоимость заказа, среднюю оценку заказов
- Администраторы имеют доступ к дополнительным функциям:
-
Выход
- Чтобы завершить работу с приложением, выберите опцию "Выход".
-
Сохранение данных
- Данные о пользователях, блюдах и выручке сохраняются автоматически при выходе из приложения.
-
Шаблоны проектирования
- В данном проекте используется паттерн Proxy. Благодаря нему не нужно отдельно обрабатывать случаи, когда посетители по ошибке пытаются совершить то действие, которое им недоступно, паттерн отвечает за это. В рамках Proxy существует класс Logger, сейчас вывод логов закомментирован, чтобы избежать засорения консоли, однако при необходимости вывод логов можно включить.
-
Многопоточный режим
- Заказы обрабатываются в отдельных потоках, реализованных с помощью ExecutorService, время работы зависит от сложности приготовления блюд, которые входят в заказ.
-
Система приоритетов
- Заказы тех пользователей, которые в сумме сделали меньше 5 заказов, обрабатываются дольше по времени.
- Приложение сохраняет данные о блюдах, сумме выручки и пользователях в формате JSON в соответствующие файлы (например, "dish.json", "money.json", "users.json").
- Пользователи могут регистрироваться как посетители или администраторы, что влияет на доступные им функции.