Sistema de emisión de billetes para una red de transporte público
Este es un sistema de Ticketing para una Red de Transporte Público, en el que el front end (lado del cliente) se desarrolla utilizando React JS y el back end (lado del servidor) se desarrolla utilizando Node JS y Express JS. Esta aplicación web utiliza MongoDB como base de datos, que es una base de datos multiplataforma orientada a documentos.
Los usuarios pueden registrarse en el sistema. Se enviará un correo electrónico de verificación al correo electrónico del pasajero. necesita confirmarlo antes de iniciar sesión en el sistema. Después del registro, un pasajero puede iniciar sesión en el sistema utilizando el correo electrónico y la contraseña; de lo contrario, puede utilizar el inicio de sesión social. El administrador también puede iniciar sesión en el sistema utilizando el mismo inicio de sesión ingresando el correo electrónico y la contraseña proporcionados por el administrador principal.
Una vez que el administrador principal crea un administrador, el administrador creado recibirá un correo electrónico de confirmación y, para los pasajeros, también una vez que estén registrados, recibirán un correo electrónico de verificación para activar su cuenta.
Usando su perfil, pueden ver su historial de reservas. Tanto los usuarios registrados como los no registrados pueden ver el coste de las reservas. pero sólo los usuarios registrados pueden confirmar la reserva. Una vez confirmada la reserva, el usuario recibirá un correo electrónico que incluye los detalles de la reserva y el código QR único para esa reserva. El usuario puede escanear el código QR en la estación de tren y adquirir un billete. Cuando suben al tren, deben escanear el código QR y al final del viaje, deben escanear el código QR nuevamente para verificar la estación de destino y la estación de salida. Si el código QR y las estaciones de salida reales no coinciden, el pasajero deberá pagar una cantidad adicional.
También hemos implementado un panel de administración para gestionar rutas de trenes, detalles de estaciones de trenes, detalles de trenes y usuarios. Para los administradores ferroviarios, pueden generar informes financieros mensuales y anuales filtrados por tren.
Esta aplicación sigue la arquitectura Modelo-Vista-Controlador (MVC). La vista se implementa utilizando ReactJS, que utiliza un patrón de vista compuesto. El controlador y el modelo se implementan utilizando Node.js, la base de datos MongoDB NoSQL está conectada al back-end. El front-end y el back-end se comunican a través de llamadas a la API REST.
Como mejora al documento de especificaciones, hemos agregado una función de registro social utilizando la API de Google. Como se especifica en el documento de especificaciones, los usuarios deben proporcionar sus datos a nuestro sistema mediante la interfaz de usuario. Además, en nuestro sistema estamos validando actualmente la dirección de correo electrónico del pasajero para que se envíe un correo electrónico al correo electrónico del pasajero. El pasajero debe confirmarlo primero. Eso supone un trabajo extra para los pasajeros. Por eso, hemos reducido esa tarea adicional agregando un inicio de sesión social. Debido a eso, los usuarios no necesitan ingresar manualmente su correo electrónico, nombre, apellido, etc. Pueden iniciar sesión fácilmente a través de sus cuentas de Google.
En esta aplicación, los usuarios pueden proporcionar los detalles de la reserva y comprobar la disponibilidad actual de asientos y realizar la reserva. Nuestra aplicación rastrea las reservas realizadas antes y muestra los asientos reales disponibles en el momento en que el usuario va a realizar una reserva. Al realizar la reserva, el usuario debe agregar las ubicaciones de inicio y destino, el tren, la clase, la hora, la cantidad de boletos y la fecha de la reserva. Una vez ingresados los datos en la aplicación se obtienen las reservas anteriores para la hora y fecha del mismo tren y se restan por el número de asientos que tiene ese tren.
Incluso si el usuario no tiene una cuenta creada para la aplicación, puede ver la disponibilidad de plazas. Una vez que el usuario necesita hacer la reserva, debe tener una cuenta.
Una vez que el usuario realiza una reserva, la aplicación generará un código QR para realizar un seguimiento de la reserva. Luego se enviará un correo electrónico al correo electrónico del usuario junto con los detalles de la reserva y el código QR generado, que se utilizará para imprimir el billete en la estación de tren. Además, el sistema enviará un mensaje de texto al número de móvil registrado del usuario con los datos de la reserva.
Esta es una nueva característica que introdujimos en la aplicación. Si el usuario es empleado del gobierno, podrá tener descuentos especiales. Una vez que el usuario proporciona su NIC al registrarse, esa NIC se valida mediante el servicio web del gobierno para garantizar que el usuario sea elegible para recibir descuentos. Si el usuario es elegible para descuentos, se agregará a la reserva.
En la especificación de esta aplicación no dispone de método de pago directo. Según las especificaciones, los usuarios deben recargar su cuenta y luego pagar la tarifa de reserva. Eso incluye interacción adicional del usuario y la facilidad de uso de la aplicación disminuirá.
Por lo tanto, agregamos el método de pago directo y la opción de pago en efectivo. El usuario puede seleccionar cualquier opción al realizar una reserva. Si el usuario selecciona una tarjeta, deberá agregar detalles válidos de la tarjeta. O los usuarios pueden seleccionar pagar en efectivo y pagar en la estación de tren.
Como mejora a la especificación, en la sección de administración de usuarios, hay una lista de usuarios, los administradores pueden deshabilitar un usuario en particular de esa lista. Después de deshabilitar, el usuario no puede acceder a la cuenta utilizando sus credenciales. Se mostrará un mensaje de error al usuario. Hemos agregado esta característica porque si algún pasajero se porta mal de alguna manera, debería haber una manera de desactivar a ese usuario del sistema. En la especificación, no había forma de deshabilitar a un usuario.
Como otra mejora de las especificaciones, los administradores pueden editar la cuenta del pasajero. como su correo electrónico. En la vista de usuario, los usuarios no pueden cambiar sus direcciones de correo electrónico. sin embargo, si la solicitud especial proviene del pasajero, los administradores pueden actualizar la dirección de correo electrónico del pasajero específico y otros detalles.
En el diseño original no existe ninguna función para que un administrador agregue o elimine otro administrador hacia/desde el sistema. Entonces, si el número de gerentes aumenta o disminuye dentro de la empresa, no habría forma de agregar un nuevo gerente o eliminar un gerente existente del sistema.
Entonces, como mejora de la especificación, se agrega una nueva función para el panel de administración que permite a un administrador agregar o eliminar a otro administrador del sistema. Por lo tanto, cuando se agrega un administrador recientemente al sistema, recibirá un correo electrónico al correo electrónico respectivo proporcionado cuando un administrador está registrado indicando que ha sido agregado como administrador al sistema y que debe iniciar sesión. al sistema usando su número NC. Después de registrarse, uno puede cambiar la contraseña usando la configuración de la cuenta en el panel de administración.
En el diseño original mencionaron que la administración del transporte ferroviario debería poder planificar horarios, por lo que les hemos proporcionado una interfaz para gestionar diferentes rutas utilizando nombres de ruta únicos y asignar las estaciones que deberían incluirse en esa ruta con ferias relevantes. A continuación se detallan las funcionalidades disponibles en la gestión de rutas para la administración del transporte ferroviario.
En el diseño original no mencionaron que la administración del transporte ferroviario debería administrar los trenes a través del sistema, pero como característica adicional también hemos creado una interfaz para administrar los trenes usando un nombre de tren único y asignar los asientos en las diferentes clases de ese tren y asignar la ruta en la que circulará el tren. A continuación se detallan las funcionalidades disponibles en Train Management para la administración del transporte ferroviario.
Figura_9: crear trenEn el diseño original mencionaron que la administración del transporte ferroviario debería poder generar informes procesando los detalles de la reserva. Por eso hemos agregado una función para generar informes mensuales y anuales de los ingresos generados por cada tren. Después de eso, implementamos dos vistas: gráfico circular y gráfico de barras para la vista de informes. A continuación se detallan las funcionalidades disponibles en la Gestión de Informes para la administración del transporte ferroviario.
Si recibe un error como el siguiente, no es culpa de los servicios de back-end. Ocurre porque algunas aplicaciones de protección antivirus bloquean el servicio de correo electrónico "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' }
Este es un problema común con el antivirus Avast; este problema no ocurrirá en ESET ni Kaspersky.
También pregunté el problema en https://stackoverflow.com. También sugieren desactivar la protección antivirus cuando se ejecutan los servicios de back-end.
Si recibe algún error como este, desactive la protección antivirus y vuelva a intentarlo. De todos modos, el proceso de reserva no se cancelará aunque se produzca el error.
Si recibe un error como el siguiente, se debe a que estoy usando la prueba gratuita de Twilio y el número de teléfono móvil ingresado debe validarse a través del panel de control de Twilio antes de enviar mensajes a ese número. Si tiene una cuenta Twilio pagada, agregue los detalles de la cuenta en el archivo back-end “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 }
Por el momento hemos implementado la solución para los ferrocarriles, pero estamos planeando ampliar esta solución para que esté disponible para su uso también en autobuses.
Tenemos la idea de implementar un sistema de seguimiento en vivo para los ferrocarriles y autobuses para que los pasajeros puedan saber la hora exacta en que llegarán los autobuses y los trenes a la estación, lo que les ahorrará tiempo.
Por el momento, la solución de recarga de efectivo mencionada en la especificación no es práctica de implementar.
(C) 2019 Tenusha Guruge
tenusha.wordpress.com