P

project c

5. Система бронирования билетов (кино/театр/концерт)

Цель: Проектирование системы с ограниченными ресурсами (места), управление состоянием объектов, реализация бизнес-правил. Требования:

  • Класс Event (Событие):
    • Атрибуты: event_id, name, date, time, venue (зал).
    • Связь с объектом SeatMap.
  • Класс Seat (Место):
    • Атрибуты: row, number, seat_type (standard/vip), price, is_booked.
  • Класс SeatMap (План зала):
    • Атрибут: seats (двумерный список/словарь объектов Seat).
    • Методы: display_map() (отображает схему зала с символами: [ ] свободно, [X] занято), find_available_seats(seat_type).
  • Класс Booking (Бронь):
    • Атрибуты: booking_id, customer (объект Customer), event, booked_seats (список объектов Seat), total_price, booking_date.
    • Метод: cancel() (освобождает места).
  • Класс Customer (Покупатель):
    • Атрибуты: customer_id, name, email, bookings (история).
  • Класс BookingSystem (Основная система):
    • Координирует все объекты. Методы: create_event(), show_events(), make_booking(customer_id, event_id, list_of_seats), cancel_booking(booking_id).
  • Интерфейс: Консольный, с визуализацией схемы зала. Сохранение каталога событий и броней в файл. Критерии оценки: Невозможность двойного бронирования одного места, удобство выбора мест на схеме, полнота информации в брони.