Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 

Repository files navigation

RestaurantMenu

Alt Text

Команда

  • Пикель Герман
  • Бужор Роман

Описание проекта

Приложение для составления меню ресторанов, кафе, кофеен. Проект содержитв себе:

  • Обращение к определенным типам заведений
  • Обращение к классичесому/сезонному меню заведения
  • Создание сезонного меню у конкретного заведения
  • Просмотр блюд в определенном меню
  • Добавление и удаление блюд

Требования к запуску проекта

  • ⭐ Динамики на устройстве 🔊
  • ⭐ Включить динамики на максимальную громкость 🕺
  • ⭐ Пересмотреть все серии сериала "Кухня" 👨‍🍳
  • ⭐ Не воспринимать происходящее близко к сердцу ( В приложении Виктóр - это кафешка без звезды мишлен ) 🌟

Требования и оценка

Проект соответствует всем критериям для оценки 5 (25 баллов):

  • ✅ 2+ интерфейса (IMenu, IMeal, ISerializer)
  • ✅ 2+ абстрактных класса (Meal, Menu, Venue)
  • ✅ 6+ приведений типов (SeasonMenu в T, Drink в Meal, Salad в Meal, HotMeal в Meal, Dessert в Meal, SeasonMenu в Menu, DefaultMenu в Menu)
  • ✅ Перегрузка методов (ToString() в Menu, ToString() в Meal, Serialize<T> в JsonSerialize, Serialize<T> в XMLSerialize)
  • ✅ Перегруженные операторы (+ для класса Menu)
  • ✅ Делегаты (private delegate void ChangeFormatDelegate(string format);, А так же добавление в делигаты item.Click += CommonBtn_Click;)
  • ✅ Дженерики (Serialize<T> в JsonSerialize, Serialize<T> в XMLSerialize)
  • ✅ 4+ элемента UI (Label, ComboBox, Button, CheckBox, FlowLayoutPanel)

Архитектура

RestaurantMenu/
├── Model/ (библиотека)
│ ├── Core/ # Бизнес-логика
│ └── Data/ # Сериализация
└── RestaurantMenu/ # WindowsForms приложение, сами формы

Руководство пользователя

Главное окно

  1. Выбор типа заведения:

    • Кафе. рестораны или фастфуд
  2. Кнопка создания сезонного меню:

    • Кнопка доступна, если у выбранного заведения нет сезонного меню
  3. Выбор меню у конкретного заведения:

    • Классическое, сезонное(если создано)
Alt Text

Окно редактирования меню

  1. ComboBox для фильтрации блюд

    • Выбор типа блюда и вывод только данный тип блюд
  2. DropBox для выбора типа файла для сохранений меню:

    • Выбор между XML и JSON
  3. Кнопка ( галочка ) для подтвержддения выбора

  4. Кнопка добавить блюдо.

    • После нажатия на кнопку открывается форма с параметрами блюда, и по завершению редактирования формы, необходимо нажать кнопку добавить. Сразу после этого блюдо сохранится. А меню сохранится в файл. -Alt Text
  5. Список блюд в меню

  • Около каждого блюда есть кнопка удалить, по нажатию на которую, блюдо удаляется, и меню сохраняется в файл.
Alt Text

Особенности реализации

ООП принципы

  • Инкапсуляция: приватные сеттеры, методы валидации
  • Наследование: LaptopITProduct
  • Полиморфизм: переопределение свойства Price
  • Абстракция: интерфейс IReportable

SOLID

  1. Single Responsibility:

    • MainSerializer - хранение данных
    • Menu.Id - Уникальность
  2. Open-Closed:

    • Новые типы блюд через наследование
  3. Liskov Substitution:

    • Все наследники IMeal совместимы
  4. Interface Segregation:

    • IVenue только для мест питания
    • IMeal только для блюд
    • IMenu только для меню
  5. Dependency Inversion:

    • Зависимости от абстракций (ISerializer)

Технические детали

  • Требуется библиотеки Newtonsoft.Json
  • JSON/XML сериализация
Alt Text

About

mambo Italiono HIMBAM BO!!! OGUZOK OTKLEIVAI ETIKETKI

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages