Пишу приложение для поиска и продажи билетов на автобусы. Но столкнулся с трудностью составления алгоритма поиска билетов. Буду рад любому совету и помощи, или ссылке.
Задача такова: у нас есть расписание, которое состоит из рейсов. Рейс создаётся как ежедневный или по числам или дням недели. Рейсы по одному маршруту, но в разное время отправления считаются разными рейсами(например, рейс 111 в 8.00 и рейс 117 в 10.00).
Как организовать поиск билетов от станции А до станции Б, т.е. найти все рейсы идущие через эти станции, причём направление от А до Б, наоборот не подходит.
Обновление: Есть рейсы, которые состоят из:
Каждый рейс содержит таблицу графика его движения по маршруту: время отправления и время прибытия на каждую станцию остановки, но это все без даты, т.к. рейс ходит например ежедневно. Есть рейсы обратные от станции Б до станции А, есть проходящие рейсы через станцию А и станцию Б.
Как можно организовать поиск билетов, а значит рейсов, которые идут, например 11.06 от станции А до станции Б, причём дата прибытия на станцию Б 12.06?
Пока не видно в чем проблема, тут скорее задача на аккуратность и усидчивость. Попробую расписать свое понимание процесса по шагам:
Задача: Определить все рейсы, которые отправляются из А в дату ДатаА и прибывают в Б в дату ДатаБ.
Шаг 0. У нас есть список всех рейсов.
Шаг 1. Выберем рейсы, которые проезжают через А.
Пробегаемся по всем рейсам, отсеиваем те, у которых в маршруте нету А.
Шаг 2. Из оставшихся, рейсы, которые проезжают через Б после А.
Отфильтровываем рейсы, у которых в маршруте после А нет Б.
Шаг 3. Из оставшихся, рейсы, которые проезжают через А в ДатаА.
Тут нужен некий метод, который умеет:
Если тут может быть несколько дат отправления для одного рейса, то имеет смысл разбить рейсы на сущности КонкретныйРейс (Рейс, ДатаОтправления).
Шаг 4. Из оставшихся, рейсы, которые прибывают в Б в ДатаБ.
Для каждого из рейсов вычисляем дату прибытия в Б. Те, по которым дата не сойдется с ДатаБ отбрасываем.
Для этого шага будет удобно если КонкретныйРейс будет уметь рассчитывать время прибытия на заданную станцию в своем маршруте.
Это общий подход, который можно реализовать по шагам и проверять после каждого шага. После того как реализация будет хорошо проверена на корректность можно будет подумать о скорости выполнения. Если рейсы будут хранится в БД, то часть шагов (если не все) можно будет выполнить запросами.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть интерфейс , в котором объявлен метод
Написал я свое первое веб приложение (писал на Spring Boot)Запускаю на localhost - все работает как надо