Skip to content

Project for the course "Development of web applications" CMC MSU

Notifications You must be signed in to change notification settings

sadimer/bus_web_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система информации об автобусных рейсах и билетах

Доступна здесь:<место под url>

Схема базы данных приложения:

database

Страницы приложения:

Стартовая страница:

Доступна без авторизации, отображается при первоначальном попадании на сайт. Элементы:

  • Поле для поиска билетов из точки А в точку Б в конкретную дату/время. При вводе данных открывается страница с рейсами (с заданным фильтром). Для этого применяется фильтр nameCityFilter в DAO методе filter (тест filterStats) в таблице stations, на выходе получаем list id станций, с помощью DAO метода getEntityById (тестируется например в deleteStat) и DAO методов getByJoinDep и getByJoinArr (getByJoinSubr) получаем 2 списка подмаршрутов (одни начинаются с указанной станции, другие заканчиваются, не указывать один из этих параметров тоже можно), после находятся подмаршруты, которые находятся в обоих этих списках, таким образом выполняется запрос. Если указана дата и время то применяются фильтры departFilter и arrivalFilter в DAO методе filter (filterStrts) в таблице stations_of_route и DAO getByJoin (getByJoinStat) в таблице stations, а уже после полученный список станций пересекается со списком полученным за счет nameCityFilter, а дальше все аналогично.
  • Поле входа в аккаунт/регистрации. Открывается страница входа/регистрации.

Страница с рейсами

Доступна после введения фильтров поиска на стартовой странице. Элементы:

  • Список рейсов (с указанием свободных мест, точным временем отправления и прибытия, цен за место, номером маршрута). Указание свободных мест реализовано через DAO метод getByJoin (тестируется в getByJoinTick) в таблице tickets (указываются все кроме списка полученного из метода). Время отправления указывается через метод getByJoin (getByJoinStrt) в таблице stations_of_route и getArrival_st() и getDepart_st() (getByJoinSubr) из списка подмаршрутов. Номер маршрута через getRoute().getName() в уже полученном списке подмаршрутов.
  • Поле выбора рейса и места, кнопка "Забронировать место". Если пользователь не вошел, при нажатии кнопки сначала открывается страница входа/регистрации, а затем страница информации о заказе. Если авторизация была проведена, то сразу страница информации о заказе.
  • Кнопка информация о рейсе. При нажатии открывается страница информации о рейсе.
  • Кнопка входа в аккаунт/регистрации.
  • Кнопка домой (возврат на стартовую страницу).

Страница информации о рейсе

Здесь расположены:

  • Список названий всех станций данного маршрута, времена прибытия и отправления, компания перевозчик. Реализовано с помощью getRoute() из списка подмаршрутов и getByJoin в таблице stations_of_route для вывода информации о станциях данного маршрута.
  • Кнопка входа в аккаунт/регистрации.
  • Поле выбора места, станции отправления и станции прибытия, кнопка "Забронировать место". Если пользователь не вошел, при нажатии кнопки сначала открывается страница входа/регистрации, а затем страница информации о заказе. Если авторизация была проведена, то сразу страница информации о заказе.
  • Кнопка назад и домой (возврат на страницу с рейсами и на стартовую соответственно).

Страница информации о заказе

Не доступна без авторизации! Здесь отображается:

  • Номер рейса, время отправления и прибытия, место, номер билета, конечная и стартовая станции. В таблице tickets метод create (createTick).
  • Кнопка подтверждения брони (оставляет с user id в таблицу tickets и возвращает на стартовую страницу).
  • Кнопка назад и домой (возврат на страницу с рейсами и на стартовую соответственно, запись из таблицы tickets удаляется). В таблице tickets метод delete (deleteTick).

Страница входа/регистрации

Здесь расположены:

  • Поле ввода логина, пароля (в случае выбора регистрации еще ФИО, контактные данные). После успешного входа или регистрации открывается предыдущая страница. Рядом с кнопкой домой появляется кнопки "Мои заказы" и "Мои данные" (в случае если пользователь admin, то еще кнопка "Панель администратора").
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно). Пользователь вводит логин и пароль, далее с помощью метода filter и фильтра loginFilter в таблице users (filterUsers) находится пользователь с таким логином, пароль сверяется и происходит авторизация, а случае регистрации используется метод create (createUsers).

Страница "Мои заказы"

Не доступна без авторизации! Здесь расположены:

  • Список билетов, заказанных данным пользователем, по нажатию кнопки можно перейти на страницу информации о заказе (уже без кнопки подтверждения). Используется метод getByJoin в таблице tickets (getByJoinTick).
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Страница "Мои данные"

Не доступна без авторизации! Здесь расположены:

  • Данные пользователя: логин, ФИО, контактные данные (телефон, почта), есть возможность отредактировать эти данные и задать новый пароль. Возможность редактирования обеспечивает метод update (updateUser).
  • Кнопка удаления пользователя. Метод delete (deleteUser).
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Страница "Панель администратора"

Не доступна не админам! Здесь расположены:

  • Кнопка "Новый рейс", по ней админ переходит на страницу добавления нового рейса.
  • Кнопка "Изменить или удалить рейс" с полем для номера рейса, по ней админ переходит на страницу изменения рейса.
  • Кнопка "Изменить или удалить пользователя" с полем для логина или id пользователя, по ней админ переходит на страницу "Мои данные" конкретного пользователя. Используется либо getEntityById, либо filter (filterUsers) c фильтром loginFilter.
  • Кнопка "История покупок пользователя" с полем для логина или id пользователя, по ней админ переходит на страницу "Мои заказы" конкретного пользователя. Используется либо getEntityById, либо filter (filterUsers) c фильтром loginFilter.
  • Кнопка "Список пассажиров" c полями для ввода названия компании перевозчика, номера рейса, точки А и точки Б, времени отправления и прибытия, по ней админ переходит на страницу списка пассажиров.
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Страница добавления нового рейса

Не доступна не админам! Здесь расположены:

  • Поле указания номера маршрута и названия компании перевозчика. Метод create (createRout). Если нужно, перед этим могут быть отредактированы, удалены и/или добавлены компании перевозчики через методы update, delete и create (deleteComp, updateComp и createComp), для поиска компании по называнию используется метод filter (filterComp).
  • Поле добавления новой остановки (с указанием времени отправления и прибытия, называния остановки), кнопки "Добавть с номером" и "Добавить в конец". Используется getEntityById для указания айди нового маршрута, create (createStrt) для создания записи в stations_of_route, сама станция может быть создана с помощью create (createStat), либо найдена по названию и городу с помощью filter и фильтра nameCityFilter (filterStats).
  • Список остановок с их данными (время отправления и прибытия, называние остановки), кнопки "Изменить" (открывает доступ к полям изменения данных) и "Удалить". Метод getByJoin (getByJoinStrt) обеспечивает вывод всех станций данного маршрута. Методы delete и update в таблицах stations и stations_of_route позволяют удалить или изменить остановку (updateStat, deleteStat, updateStrt, deleteStrt). Все подмаршруты удаляются, создаются и обновляются здесь же автоматически с помощью методов update, create, delete (updateSubr, сreateSubr, deleteSubr).
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Страница изменения рейса

Не доступна не админам! Здесь расположены:

  • Поле изменения номера маршрута и названия компании перевозчика, кнопка "Изменить". Метод update (updateRout). Если нужно, перед этим могут быть отредактированы, удалены и/или добавлены компании перевозчики через методы update, delete и create (deleteComp, updateComp и createComp), для поиска компании по называнию используется метод filter (filterComp).
  • Поле добавления новой остановки (с указанием времени отправления и прибытия, называния остановки), кнопки "Добавть с номером" и "Добавить в конец". Используется getEntityById для указания айди нового маршрута, create (createStrt) для создания записи в stations_of_route, сама станция может быть создана с помощью create (createStat), либо найдена по названию и городу с помощью filter и фильтра nameCityFilter (filterStats).
  • Список остановок с их данными (время отправления и прибытия, называние остановки), кнопки "Изменить" (открывает доступ к полям изменения данных) и "Удалить". Метод getByJoin (getByJoinStrt) обеспечивает вывод всех станций данного маршрута. Методы delete и update в таблицах stations и stations_of_route позволяют удалить или изменить остановку (updateStat, deleteStat, updateStrt, deleteStrt). Все подмаршруты удаляются, создаются и обновляются здесь же автоматически с помощью методов update, create, delete (updateSubr, сreateSubr, deleteSubr).
  • Кнопка "Удалить рейс". Метод delete (deleteRout).
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Страница списка пассажиров

Не доступна не админам! Здесь расположены:

  • Список пассажиров рейсов с заданным фильтром (указываются ФИО, логин, контактные данные, номер рейса, точки отправления и прибытия). Сначала методом getByJoin (getByJoinSubr) находятся все возможные подмаршурты данного маршрута (здесь возможна фильтрация путем пересечения со списком полученным через getByJoinDep и getByJoinArr (getByJoinSubr) с таблицей stations c фильтром nameCityFilter (filterStats), она нужна для фильтрации по месту прибытия/отправления) потом для каждого подмаршрута находятся все билеты методом getByJoin (getByJoinTick) и создается список пользователей с поммощью getUser() в классе Ticket. Этот список пользователей пересекается со списком полученным методом filter в таблице users (filterUsers), на тот случай когда нам надо узнатьехал ли такой то пассажир этим рейсом.
  • Кнопка назад и домой (возврат на предыдущую и на стартовую соответственно).

Сценарии использования:

Без авторизации:

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

С авторизацией:

  • Все то же самое, но появляется возможность забронировать билет на определенное место выбранного рейса (по нажатию кнопки рядом с выбранным местом).
  • Пользователь нажимает "Мои заказы" и получает доступ к истории своих заказов, прошедших и предстоящих.
  • Пользователь нажимает "Мои данные" и может изменить/дополнить информацию о себе или удалить аккаунт.

Админы:

  • Админ нажимает в панели администратора "Новый рейс" и может добавить новый рейс, введя его название, перевозчика и последовательно добавляя станции от стартовой к конечной.
  • Админ нажимает в панели администратора "Изменить или удалить рейс" и похожим образом изменяет рейс, удаляя/добавляя станции, меняя название/перевозчика.
  • Админ нажимает в панели администратора "Изменить или удалить пользователя", вводит логин или айди пользователя, попадает в меню аналогичное странице "Мои данные", где может изменить/дополнить информацию пользователя или удалить аккаунт.
  • Админ нажимает в панели администратора "История покупок пользователя", вводит логин или айди пользователя и получает доступ к истории его заказов, прошедших и предстоящих.
  • Админ нажимает в панели администратора "Список пассажиров", вводит пункт отправления и пункт назначения (из заданного списка) или перевозчика или номер рейса, диапазон дат и времен, и получает список рейсов и всех пассажиров, купивших билет на данные рейсы.

About

Project for the course "Development of web applications" CMC MSU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published