Système de billetterie pour un réseau de transports publics
Il s'agit d'un système de billetterie pour un réseau de transports publics, dans lequel le front-end (côté client) est développé à l'aide de React JS et le back-end (côté serveur) est développé à l'aide de Node JS et Express JS. Cette application Web utilise MongoDB comme base de données, qui est une base de données multiplateforme orientée document.
Les utilisateurs peuvent s'inscrire sur le système. Un e-mail de vérification sera envoyé à l'adresse e-mail du passager. il doit le confirmer avant de se connecter au système. Après l'enregistrement, un passager peut se connecter au système en utilisant son e-mail et son mot de passe, sinon il peut utiliser la connexion sociale. L'administrateur peut également se connecter au système en utilisant le même identifiant en saisissant l'e-mail et le mot de passe fournis par l'administrateur principal.
Une fois que l'administrateur principal a créé un administrateur, l'administrateur créé recevra un e-mail de confirmation et pour les passagers également, une fois enregistrés, ils recevront un e-mail de vérification pour activer leur compte.
Grâce à leur profil, ils peuvent consulter leur historique de réservation. Les utilisateurs enregistrés et les utilisateurs non enregistrés peuvent consulter le coût des réservations. mais seuls les utilisateurs connectés peuvent confirmer la réservation. Une fois la réservation confirmée, l'utilisateur recevra un e-mail contenant les détails de la réservation et le code QR unique pour cette réservation. L'utilisateur peut scanner le code QR à la gare et obtenir un ticket. Lorsqu'ils montent dans le train, ils doivent scanner le code QR et à la fin du voyage, ils doivent scanner à nouveau le code QR pour vérifier la gare de destination et la gare de départ. Si le code QR et les gares de départ réelles ne correspondent pas, le passager doit payer un montant supplémentaire.
Nous avons également mis en place un panneau d'administration pour gérer les itinéraires de train, les détails des gares, les détails des trains et les utilisateurs. Pour les administrateurs ferroviaires, ils peuvent générer des rapports financiers mensuels et annuels filtrés par train.
Cette application suit l'architecture Model-View-Controller (MVC). La vue est implémentée à l'aide de ReactJS qui utilise un modèle de vue composite. Le contrôleur et le modèle sont implémentés à l'aide de Node.js, la base de données MongoDB NoSQL est connectée au back-end. Le front-end et le back-end communiquent via des appels d’API REST.
En guise d'amélioration du document de spécification, nous avons ajouté une fonction d'inscription sociale utilisant l'API Google. Comme spécifié dans le document de spécification, les utilisateurs doivent fournir leurs coordonnées à notre système à l'aide de l'interface utilisateur. De plus, dans notre système, nous validons actuellement l'adresse e-mail du passager afin qu'un e-mail soit envoyé à l'adresse e-mail du passager. Le passager doit d'abord le confirmer. C'est un travail supplémentaire pour les passagers. Nous avons donc réduit cette tâche supplémentaire en ajoutant une connexion sociale. De ce fait, les utilisateurs n'ont pas besoin de saisir manuellement leur adresse e-mail, leur prénom, leur nom, etc. Ils peuvent facilement se connecter via leurs comptes Google.
Dans cette application, les utilisateurs peuvent fournir les détails de la réservation, vérifier la disponibilité actuelle des sièges et effectuer la réservation. Notre application suit les réservations effectuées auparavant et affiche les sièges réellement disponibles au moment où l'utilisateur va effectuer une réservation. Lors de la réservation, l'utilisateur doit ajouter les lieux de départ et de destination, le train, la classe, l'heure, la quantité de billets et la date de réservation. Une fois les données saisies, l'application récupère les réservations précédentes pour la même heure et la même date du train et les soustrait du nombre de sièges dont dispose le train.
Même si l'utilisateur n'a pas de compte créé pour l'application, il peut consulter la disponibilité des places. Une fois que l’utilisateur doit effectuer la réservation, il doit disposer d’un compte.
Une fois que l'utilisateur effectue une réservation, l'application génère un code QR pour suivre la réservation. Ensuite, un e-mail sera envoyé à l'adresse e-mail de l'utilisateur avec les détails de la réservation et le code QR généré, qui sera utilisé pour imprimer le billet à la gare. En outre, le système enverra un message texte au numéro de mobile enregistré de l'utilisateur avec les détails de la réservation.
Il s'agit d'une nouvelle fonctionnalité que nous avons introduite dans l'application. Si l’utilisateur est un employé du gouvernement, il peut bénéficier de réductions spéciales. Une fois que l'utilisateur a donné sa carte réseau lors de son inscription, cette carte réseau est validée à l'aide du service Web du gouvernement pour garantir que l'utilisateur est éligible à des réductions. Si l'utilisateur est éligible à des réductions, cela sera ajouté à la réservation.
Dans les spécifications de cette application, il n'y a pas de méthode de paiement direct. Selon les spécifications, les utilisateurs doivent recharger leur compte puis payer les frais de réservation. Cela inclut une interaction utilisateur supplémentaire et la convivialité de l’application diminuera.
Par conséquent, nous avons ajouté une méthode de paiement direct et une option de paiement en espèces. L'utilisateur peut sélectionner n'importe quelle option lors de la réservation. Si l'utilisateur sélectionne une carte, l'utilisateur doit alors ajouter des détails de carte valides. Les utilisateurs peuvent également choisir de payer en espèces et payer à la gare.
En guise d'amélioration de la spécification, dans la section de gestion des utilisateurs, il existe une liste d'utilisateurs, les administrateurs peuvent désactiver un utilisateur particulier de cette liste. Après la désactivation, l'utilisateur ne peut pas accéder au compte en utilisant ses informations d'identification. Un message d'erreur sera affiché à l'utilisateur. Nous avons ajouté cette fonctionnalité car si un passager se comporte mal d'une manière ou d'une autre, il devrait y avoir un moyen de désactiver cet utilisateur du système. Dans la spécification, il n'y avait aucun moyen de désactiver un utilisateur.
Autre amélioration de la spécification, les administrateurs peuvent modifier le compte passager. comme leur email. Dans la vue utilisateur, les utilisateurs ne peuvent pas modifier leur adresse e-mail. cependant, si la demande spéciale provient du passager, les administrateurs peuvent mettre à jour l'adresse e-mail spécifique du passager et d'autres détails.
Dans la conception originale, il n'existe aucune fonction permettant à un gestionnaire d'ajouter ou de supprimer un autre gestionnaire du système. Ainsi, si le nombre de managers augmente ou diminue au sein de l'entreprise, il n'y aura aucun moyen d'ajouter un nouveau manager ou de supprimer un manager existant du système.
Ainsi, en guise d'amélioration de la spécification, une nouvelle fonction est ajoutée pour le panneau d'administration qui permet à un administrateur d'ajouter ou de supprimer un autre administrateur du système. Ainsi, lorsqu'un administrateur est nouvellement ajouté au système, il recevra un e-mail à l'adresse e-mail correspondante fournie lorsqu'un administrateur est enregistré indiquant qu'il a été ajouté en tant qu'administrateur au système et qu'il doit se connecter. au système en utilisant son numéro NC. Après l'inscription, vous pouvez modifier le mot de passe en utilisant les paramètres du compte dans le panneau d'administration.
Dans la conception originale, ils ont mentionné que l'administration du transport ferroviaire devrait être en mesure de planifier les horaires. Nous leur avons donc fourni une interface pour gérer différents itinéraires en utilisant un nom d'itinéraire unique et attribuer les gares qui devraient être incluses dans cet itinéraire avec les foires pertinentes. Voici les fonctionnalités disponibles dans la gestion des itinéraires pour l'administration du transport ferroviaire.
Dans la conception originale, ils n'ont pas mentionné que l'administration du transport ferroviaire devrait gérer les trains via le système, mais comme fonctionnalité supplémentaire, nous avons également créé une interface pour gérer les trains en utilisant un nom de train unique et attribuer les sièges dans les différentes classes de ce train et attribuer l'itinéraire sur lequel le train circulera. Voici les fonctionnalités disponibles dans Train Management pour l’administration du transport ferroviaire.
Figure_9 : créer un trainDans la conception originale, ils ont mentionné que l'administration du transport ferroviaire devrait être capable de générer des rapports en traitant les détails des réservations. Nous avons donc ajouté une fonctionnalité permettant de générer des rapports mensuels et annuels sur les revenus générés par chaque train. Après cela, nous avons implémenté deux vues sous forme de diagramme circulaire et de graphique à barres pour l'affichage des rapports. Voici les fonctionnalités disponibles dans la gestion des rapports pour l'administration du transport ferroviaire.
Si vous obtenez une erreur comme ci-dessous, ce n'est pas une faute des services back-end. Cela se produit parce que certaines applications antivirus bloquent le service de messagerie « 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' }
Il s'agit d'un problème courant avec l'antivirus Avast, ce problème ne se produira pas dans ESET et Kaspersky.
J'ai également posé le problème sur https://stackoverflow.com. Ils suggèrent également de désactiver la protection antivirus lors de l'exécution des services back-end.
Si vous obtenez une erreur de ce type, veuillez désactiver la protection antivirus et réessayer. Quoi qu'il en soit, le processus de réservation ne sera pas interrompu même si l'erreur s'est produite.
Si vous obtenez une erreur comme ci-dessous, cela se produit parce que j'utilise l'essai gratuit de Twilio et que le numéro de mobile saisi doit être validé via le tableau de bord Twilio avant d'envoyer des messages à ce numéro. Si vous avez un compte Twilio payant, veuillez ajouter les détails du compte dans le fichier 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 }
Pour le moment, nous avons implémenté la solution dans les chemins de fer, mais nous prévoyons d'étendre cette solution pour qu'elle soit également disponible dans les bus.
Nous avons l'idée de mettre en œuvre un système de suivi en direct pour les chemins de fer et les bus afin que les passagers puissent connaître l'heure exacte à laquelle les bus et les trains arriveront à la gare, ce qui leur fera gagner du temps.
Pour le moment, la solution de recharge en espèces mentionnée dans le cahier des charges n’est pas pratique à mettre en œuvre.
(C) Tenusha Guruge 2019
tenusha.wordpress.com