Загрузка данных


Вариант: Приложение "Кинотеатр" (система бронирования билетов)
Общее описание
Разработайте 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 мест