Билетная система для сети общественного транспорта
Это система продажи билетов для сети общественного транспорта, в которой внешний интерфейс (клиентская часть) разрабатывается с использованием React JS, а серверная часть (серверная часть) — с использованием Node JS и Express JS. Это веб-приложение использует MongoDB в качестве базы данных, которая представляет собой кроссплатформенную документо-ориентированную базу данных.
Пользователи могут зарегистрироваться в системе. На электронную почту пассажира будет отправлено письмо с подтверждением. ему необходимо подтвердить это перед входом в систему. После регистрации пассажир может войти в систему, используя адрес электронной почты и пароль, в противном случае он может использовать вход через социальную сеть. Администратор также может войти в систему, используя тот же логин, введя адрес электронной почты и пароль, предоставленные главным администратором.
Как только главный администратор создаст администратора, созданный администратор получит электронное письмо с подтверждением, а пассажиры также после регистрации получат электронное письмо с подтверждением для активации своей учетной записи.
Используя свой профиль, они могут просмотреть историю своих бронирований. Как зарегистрированные пользователи, так и незарегистрированные пользователи могут просматривать стоимость бронирования брони. но только авторизованные пользователи могут подтвердить бронирование. После подтверждения бронирования пользователь получит электронное письмо, содержащее детали бронирования и уникальный QR-код для этого бронирования. Пользователь может отсканировать QR-код на вокзале и получить билет. Когда они садятся в поезд, им необходимо отсканировать QR-код, а в конце поездки им необходимо еще раз отсканировать QR-код, чтобы проверить станцию назначения и станцию отправления. Если QR-код и фактические станции отправления не совпадают, пассажиру придется заплатить дополнительную сумму.
Мы также внедрили панель администратора для управления маршрутами поездов, сведениями о железнодорожных станциях, сведениями о поездах и пользователями. Администраторы железных дорог могут создавать ежемесячные и годовые финансовые отчеты, отфильтрованные по поездам.
Это приложение соответствует архитектуре Модель-Представление-Контроллер (MVC). Представление реализовано с помощью ReactJS, который использует шаблон составного представления. Контроллер и модель реализованы с использованием Node.js, база данных MongoDB NoSQL подключена к серверной части. Интерфейсная и серверная части взаимодействуют посредством вызовов REST API.
В качестве улучшения спецификации мы добавили функцию регистрации в социальных сетях с использованием API Google. Как указано в спецификации, пользователи должны предоставить свои данные нашей системе, используя пользовательский интерфейс. Кроме того, в нашей системе в настоящее время мы проверяем адрес электронной почты пассажира, чтобы на него было отправлено электронное письмо. Пассажиру необходимо сначала это подтвердить. Это дополнительная работа для пассажиров. Итак, мы сократили эту дополнительную задачу, добавив вход через социальную сеть. Благодаря этому пользователям не нужно вручную вводить адрес электронной почты, имя, фамилию и т. д. Они могут легко войти в систему через свои учетные записи Google.
В этом приложении пользователи могут предоставить данные бронирования, проверить наличие мест и сделать заказ. Наше приложение отслеживает сделанные ранее бронирования и отображает фактические места, доступные на момент, когда пользователь собирается сделать бронирование. При бронировании пользователю необходимо добавить места отправления и назначения, поезд, класс, время, количество билетов и дату бронирования. После ввода данных приложение получает предыдущие заказы на то же время и дату поезда и вычитает их из количества мест в этом поезде.
Даже если у пользователя нет учетной записи, созданной для приложения, он может просмотреть наличие мест. Как только пользователю необходимо сделать бронирование, ему необходимо иметь учетную запись.
Как только пользователь сделает бронирование, приложение сгенерирует QR-код для отслеживания бронирования. Затем на электронную почту пользователя будет отправлено письмо с деталями бронирования и сгенерированным QR-кодом, который будет использоваться для печати билета на железнодорожном вокзале. Также система отправит на зарегистрированный номер мобильного телефона пользователя текстовое сообщение с деталями бронирования.
Это новая функция, которую мы представили в приложении. Если пользователь является государственным служащим, он может получить специальные скидки. Как только пользователь предоставляет свой сетевой адаптер при регистрации, этот сетевой адаптер проверяется с помощью правительственной веб-службы, чтобы гарантировать, что пользователь имеет право на скидки. Если пользователь имеет право на скидки, он будет добавлен к бронированию.
В спецификации этого приложения нет прямого способа оплаты. Согласно спецификации, пользователи должны пополнить свой счет, а затем оплатить комиссию за резервирование. Это включает в себя дополнительное взаимодействие с пользователем, и удобство приложения для пользователя снизится.
Поэтому мы добавили метод прямой оплаты и возможность оплаты наличными. Пользователь может выбрать любой вариант при бронировании. Если пользователь выбирает карту, ему необходимо добавить действительные данные карты. Или пользователи могут выбрать оплату наличными и оплатить на вокзале.
В качестве улучшения спецификации в разделе управления пользователями имеется список пользователей, администраторы могут отключить конкретного пользователя из этого списка. После отключения пользователь не сможет получить доступ к учетной записи, используя свои учетные данные. Пользователю будет показано сообщение об ошибке. Мы добавили эту функцию, потому что, если какой-либо пассажир каким-либо образом ведет себя плохо, должен быть способ отключить этого пользователя от системы. В спецификации не было возможности отключить пользователя.
В качестве еще одного улучшения спецификации администраторы могут редактировать учетную запись пассажира. например, их электронная почта. В представлении пользователя пользователи не могут изменять свои адреса электронной почты. однако, если специальный запрос исходит от пассажира, администраторы могут обновить адрес электронной почты и другие данные конкретного пассажира.
В оригинальном дизайне менеджер не имеет функции добавления или удаления другого менеджера в/из системы. Таким образом, если количество менеджеров в компании увеличится или уменьшится, не будет возможности добавить нового менеджера или удалить существующего менеджера из системы.
Таким образом, в качестве улучшения спецификации для панели администратора добавлена новая функция, которая позволяет администратору добавлять или удалять другого администратора из системы. Таким образом, когда администратор вновь добавляется в систему, он/она получит электронное письмо на соответствующий адрес электронной почты, указанный при регистрации администратора, в котором будет указано, что он/она был добавлен в качестве администратора в систему и ему/ей необходимо войти в систему. в систему, используя свой номер NC. После регистрации вы можете изменить пароль, используя настройки учетной записи в админ-панели.
В исходном проекте они упомянули, что администрация железнодорожного транспорта должна иметь возможность планировать расписания, поэтому мы предоставили им интерфейс для управления различными маршрутами, используя уникальное имя маршрута, и назначали станции, которые должны быть включены в этот маршрут, с соответствующими ярмарками. Ниже приведены функциональные возможности, доступные в управлении маршрутами для управления железнодорожными перевозками.
В первоначальном проекте не упоминалось, что администрация железнодорожного транспорта должна управлять поездами через систему, но в качестве дополнительной функции мы также создали интерфейс для управления поездами с использованием уникального названия поезда, распределения мест в разных классах этого поезда и назначения маршрут, по которому будет курсировать поезд. Ниже приведены функциональные возможности, доступные в Train Management для управления железнодорожными перевозками.
Рисунок_9: создать поездВ первоначальном проекте они упомянули, что администрация железнодорожного транспорта должна иметь возможность формировать отчеты, обрабатывая детали бронирования. Поэтому мы добавили функцию создания ежемесячных и ежегодных отчетов о доходах, полученных от каждого поезда. После этого мы реализовали два представления: круговую диаграмму и гистограмму для просмотра отчетов. Ниже приведены функциональные возможности, доступные в Управлении отчетами для управления железнодорожными перевозками.
Если вы получаете сообщение об ошибке, как показано ниже, это не вина серверных служб. Это происходит потому, что некоторые антивирусные приложения блокируют почтовую службу nodemailer.
{ Error: self signed certificate in certificate chain
at TLSSocket . < anonymous > ( _tls_wrap . js : 1105 : 38 )
at emitNone ( events . js : 106 : 13 )
at TLSSocket . emit ( events . js : 208 : 7 )
at TLSSocket . _finishInit ( _tls_wrap . js : 639 : 8 )
at TLSWrap . ssl . onhandshakedone ( _tls_wrap . js : 469 : 38 ) code: 'ESOCKET' ,
command : 'CONN' }
Это распространенная проблема с антивирусом Avast, эта проблема не возникает в ESET и Касперском.
Я также задал проблему на https://stackoverflow.com. Они также предлагают отключить защиту от вирусов при запуске серверных служб.
Если вы получаете подобную ошибку, отключите защиту от вирусов и повторите попытку. В любом случае процесс резервирования не прервется, даже если произошла ошибка.
Если вы получаете сообщение об ошибке, как показано ниже, это происходит потому, что я использую бесплатную пробную версию Twilio, и введенный номер мобильного телефона должен быть проверен на панели управления Twilio, прежде чем отправлять сообщения на этот номер. Если у вас есть платная учетная запись Twilio, добавьте данные учетной записи во внутренний файл «config.json».
{ [Error: The number +94777123456 is unverified . Trial accounts cannot send messages to unverified numbers ; verify + 94777123456 at twilio . com / user / account / phonenumbers / verified , or purchase a Twilio number to send messages to unverified numbers .]
status : 400 ,
message : 'The number +94777123456 is unverified. Trial accounts cannot send messages to unverified numbers; verify +94777123456 at twilio.com/user/account/phonenumbers/verified, or purchase a Twilio number to send messages to unverified numbers.' ,
code : 21608 ,
moreInfo : 'https: //www.twilio.com/docs/errors/21608',
detail: undefined }
На данный момент мы внедрили решение для железных дорог, но планируем расширить это решение, чтобы его можно было использовать и в автобусах.
У нас есть идея внедрить систему отслеживания в реальном времени для железных дорог и автобусов, чтобы пассажиры могли знать точное время прибытия автобусов и поездов на станцию, что сэкономит время пассажиров.
На данный момент решение по пополнению наличных, упомянутое в спецификации, реализовать непрактично.
(C) 2019 Тенуша Гугурге
tenusha.wordpress.com