Вариант: Приложение "Кинотеатр" (система бронирования билетов)
Общее описание
Разработайте WPF-приложение для выбора фильма, просмотра расписания и бронирования мест в кинозале. Приложение должно активно использовать дополнительные окна для всех основных операций.
Состав интерфейса
Главное окно (MainWindow):
• ListBox — список фильмов (Название, Жанр, Рейтинг, Постер)
• TextBox — поиск по названию фильма
• ComboBox — фильтр по жанру (Все, Боевик, Комедия, Драма, Фантастика, Ужасы)
• Button «Выбрать фильм» — открывает окно с расписанием сеансов
• Button «Добавить фильм» — открывает окно добавления (администратор)
• Button «Удалить фильм» — удаляет выбранный фильм
• Label — количество фильмов в прокате
Дополнительное окно 1 (SessionWindow) — немодальное:
• Отображает информацию о фильме (название, жанр, рейтинг, описание)
• ListBox — список сеансов на сегодня (время, зал, цена, свободные места)
• Button «Забронировать» — открывает окно выбора мест
• Button «Закрыть» — закрывает окно
Дополнительное окно 2 (SeatSelectionWindow) — модальное:
• Grid с кнопками, имитирующими кинозал (ряды и места)
o Свободные места — зелёные
o Занятые места — красные (недоступны для выбора)
o Выбранные места — жёлтые
• Label — выбранные места (например, "Ряд 5, Место 7; Ряд 5, Место 8")
• Label — итоговая стоимость
• Button «Подтвердить бронирование» — бронирует места и закрывает окно
• Button «Отмена» — закрывает без бронирования
Дополнительное окно 3 (AddMovieWindow) — модальное:
• TextBox — название фильма
• TextBox — описание
• ComboBox — жанр
• NumericUpDown — рейтинг (1-10)
• TextBox — постер (путь к картинке)
• Button «Добавить» — добавляет фильм
• Button «Отмена» — закрывает без добавления
Дополнительное окно 4 (TicketWindow) — немодальное:
• Отображает информацию о бронировании:
o Название фильма
o Дата и время сеанса
o Ряд и места
o Стоимость
o QR-код (или просто номер брони)
• Button «Распечатать» — имитация печати (сохранить в текстовый файл)
• Button «Закрыть» — закрывает окно
Требования к реализации
Работа с фильмами:
1. При запуске приложения должно быть предустановлено 5-7 фильмов (захардкодьте или загрузите из JSON)
2. Фильтры и поиск работают в реальном времени
3. При выборе фильма и нажатии «Выбрать фильм» открывается окно с расписанием
Работа с сеансами:
1. У каждого фильма должно быть 3-5 сеансов на сегодня (разное время)
2. В окне сеансов показывать: время, зал, цену, количество свободных мест
3. При выборе сеанса и нажатии «Забронировать» открывается окно выбора мест
Работа с бронированием:
1. Зал: 8 рядов × 10 мест (имитация сетки 8×10)
2. Занятые места (уже забронированные) должны быть красными и недоступными
3. При клике на свободное место — оно становится жёлтым (выбрано)
4. При повторном клике на жёлтое место — оно снова становится свободным
5. После подтверждения бронирования места становятся занятыми
6. Вывести чек/билет в отдельном окне
Сохранение данных:
1. Все данные (фильмы, сеансы, бронирования) сохраняются в JSON
2. При запуске приложения данные загружаются из JSON
3. При добавлении/удалении фильма — данные обновляются в JSON
Валидация:
1. При добавлении фильма: название не может быть пустым
2. Рейтинг должен быть от 1 до 10
3. При бронировании: нельзя забронировать 0 мест