/KPO_idz

Primary LanguageKotlinMIT LicenseMIT

KPO_idz

Данное консольное приложение имитиркет работу кинотеатра.

После запуска вам нужно будет войти в аккаунт (в базе уже представлены два акканута, но можно создать новый).

Каждый аккаунт сериализуется в json по пути root/userdata. Каждый пароль к аккаунту шифруется с помощью хеш функции BCRYPT. Каждая сериализация данных отображается в консоли. File rwited succcessfully и т.д

После логина, аккаунт передается в главный класс Cinema (функционал с ним никак не взаимодействует, но если программу нужно будет расширить...), управление программой происходит из этого класса. Внутри класса Cinema присутсвуют классы MovieManager, SessionManager, TicketManager, они отвечают за продажу билетов, показ фильмов.

При запуске программа будет искать файл с базой фильмов и билетов для сериализации, в случае неуспеха она создаст пустой список.

В консоли пользователя встречает интерфейс с набором команд, которые нужно вводить без аргументов, они вводятся отдельной строкой позже. Список команд: mvlist) Вывести на экран все фильмы mvadd) Добавить фильм в список mvrmv) Удалить фильм по номеру в списке mvrmvid) Удалить фильм по ID mvedit) Изменить информацию о фильме

seslist) Список сиансов sesadd) Новый сеанс sesdel) Удалить сеанс по ID sesshowseats) Показать занятые места сеансов.

sesedit) Изменить информацию о сессии ticklist) Показать список билетов ticksell) Продать билет tickreturn) Возвратить билет

save) Сохранить все изменения в базу данных

exit) Выйти из программы

При создании билета учитывается занятость места и то, прошел ли сеанс относительно времени на машине. При создании сеанса учитывается накладывание времени с другими сеансами


в коде есть несколько проблем, которые я не смог/не успел решить:

  1. Изменение в классе фильма влечет изменения в показе этого фильма только в данных созданных в этой сессии, все сериализованные данные теряют ссылку друг на друга.
  2. Не успел реализовать интерфейсы для классов