Ticketsystem für ein öffentliches Verkehrsnetz
Dabei handelt es sich um ein Ticketsystem für ein öffentliches Verkehrsnetz, bei dem das Frontend (Clientseite) mit React JS und das Backend (Serverseite) mit Node JS und Express JS entwickelt wird. Diese Webanwendung verwendet MongoDB als Datenbank, eine plattformübergreifende dokumentenorientierte Datenbank.
Benutzer können sich im System registrieren. Eine Bestätigungs-E-Mail wird an die E-Mail-Adresse des Passagiers gesendet. Er muss es bestätigen, bevor er sich am System anmeldet. Nach der Registrierung kann sich ein Passagier mit E-Mail und Passwort beim System anmelden, ansonsten kann er sich über soziale Netzwerke anmelden. Der Administrator kann sich auch mit demselben Login beim System anmelden, indem er die vom Hauptadministrator bereitgestellte E-Mail-Adresse und das Passwort eingibt.
Sobald der Hauptadministrator einen Administrator erstellt, erhält der erstellte Administrator eine Bestätigungs-E-Mail. Passagiere erhalten nach der Registrierung eine Bestätigungs-E-Mail zur Aktivierung ihres Kontos.
Über ihr Profil können sie ihre Buchungshistorie einsehen. Sowohl registrierte als auch nicht registrierte Benutzer können die Kosten für Buchungsreservierungen einsehen. aber nur eingeloggte Benutzer können die Reservierung bestätigen. Sobald die Reservierung bestätigt ist, erhält der Benutzer eine E-Mail mit den Reservierungsdetails und dem eindeutigen QR-Code für diese Reservierung. Der Nutzer kann am Bahnhof den QR-Code scannen und sich ein Ticket sichern. Wenn sie in den Zug einsteigen, müssen sie den QR-Code scannen und am Ende der Fahrt müssen sie den QR-Code erneut scannen, um den Zielbahnhof und den Abfahrtsbahnhof zu überprüfen. Wenn QR-Code und tatsächlicher Abfahrtsbahnhof nicht übereinstimmen, muss der Passagier einen zusätzlichen Betrag zahlen.
Wir haben außerdem ein Admin-Panel implementiert, um Zugrouten, Bahnhofsdetails, Zugdetails und Benutzer zu verwalten. Für die Bahnverwalter können sie monatliche und jährliche Finanzberichte gefiltert nach Zugart erstellen.
Diese Anwendung folgt der Model-View-Controller (MVC)-Architektur. Die Ansicht wird mit ReactJS implementiert, das ein zusammengesetztes Ansichtsmuster verwendet. Der Controller und das Modell werden mit Node.js implementiert, die MongoDB-NoSQL-Datenbank ist mit dem Backend verbunden. Front-End und Back-End kommunizieren über REST-API-Aufrufe.
Als Verbesserung des Spezifikationsdokuments haben wir mithilfe der Google API eine Social-Signup-Funktion hinzugefügt. Wie im Spezifikationsdokument angegeben, müssen Benutzer ihre Daten über die Benutzeroberfläche an unser System übermitteln. Außerdem validieren wir in unserem System derzeit die E-Mail-Adresse des Passagiers, sodass eine E-Mail an die E-Mail-Adresse des Passagiers gesendet wird. Der Passagier muss dies zunächst bestätigen. Das ist Mehrarbeit für die Passagiere. Deshalb haben wir diese zusätzliche Aufgabe durch das Hinzufügen eines Social-Logins reduziert. Dadurch müssen Benutzer ihre E-Mail-Adresse, ihren Vor- und Nachnamen usw. nicht manuell eingeben. Sie können sich einfach über ihre Google-Konten anmelden.
In dieser Anwendung können Benutzer die Reservierungsdetails angeben, die aktuelle Verfügbarkeit von Sitzplätzen überprüfen und die Buchung vornehmen. Unsere Anwendung verfolgt die zuvor vorgenommenen Reservierungen und zeigt die tatsächlich verfügbaren Sitzplätze zum Zeitpunkt der Reservierung an. Bei der Buchung muss der Benutzer Start- und Zielorte, Zug, Klasse, Uhrzeit, Ticketmenge und das Buchungsdatum hinzufügen. Sobald die Daten eingegeben wurden, ruft die Anwendung die vorherigen Buchungen für die gleiche Uhrzeit und das gleiche Datum des Zuges ab und subtrahiert die Anzahl der Sitzplätze, über die dieser Zug verfügt.
Auch wenn der Benutzer kein Konto für die Anwendung erstellt hat, kann er die Verfügbarkeit von Plätzen einsehen. Sobald der Benutzer die Reservierung vornehmen möchte, muss er über ein Konto verfügen.
Sobald der Benutzer eine Reservierung vornimmt, generiert die Anwendung einen QR-Code, um die Reservierung zu verfolgen. Anschließend wird eine E-Mail mit Reservierungsdetails und einem generierten QR-Code an die E-Mail-Adresse des Benutzers gesendet, der zum Ausdrucken des Tickets am Bahnhof verwendet wird. Außerdem sendet das System eine Textnachricht mit den Reservierungsdetails an die registrierte Mobiltelefonnummer des Benutzers.
Dies ist eine neue Funktion, die wir in die Anwendung eingeführt haben. Wenn der Benutzer ein Regierungsangestellter ist, kann er spezielle Rabatte erhalten. Sobald der Benutzer bei der Registrierung seine NIC angibt, wird diese NIC mithilfe eines Webdienstes der Regierung validiert, um sicherzustellen, dass der Benutzer Anspruch auf Rabatte hat. Wenn der Benutzer Anspruch auf Ermäßigungen hat, werden diese der Reservierung hinzugefügt.
In der Spezifikation dieser Anwendung gibt es keine direkte Zahlungsmethode. Gemäß der Spezifikation müssen Benutzer ihr Konto aufladen und anschließend die Reservierungsgebühr bezahlen. Dies führt zu zusätzlicher Benutzerinteraktion und die Benutzerfreundlichkeit der Anwendung wird sinken.
Aus diesem Grund haben wir die Direktzahlungsmethode und die Option „Barzahlung“ hinzugefügt. Der Benutzer kann bei der Reservierung eine beliebige Option auswählen. Wenn der Benutzer eine Karte auswählt, muss er gültige Kartendetails hinzufügen. Oder Benutzer können die Zahlung per Bargeld wählen und am Bahnhof bezahlen.
Als Verbesserung der Spezifikation gibt es im Abschnitt „Benutzerverwaltung“ eine Liste von Benutzern. Administratoren können einen bestimmten Benutzer aus dieser Liste deaktivieren. Nach der Deaktivierung kann der Benutzer mit seinen Anmeldeinformationen nicht auf das Konto zugreifen. Dem Benutzer wird eine Fehlermeldung angezeigt. Wir haben diese Funktion hinzugefügt, da es eine Möglichkeit geben sollte, diesen Benutzer aus dem System zu sperren, wenn sich ein Passagier in irgendeiner Weise daneben benimmt. In der Spezifikation gab es keine Möglichkeit, einen Benutzer zu deaktivieren.
Als weitere Verbesserung der Spezifikation können Administratoren Passagierkonten bearbeiten. wie zum Beispiel ihre E-Mail. In der Benutzeransicht können Benutzer ihre E-Mail-Adressen nicht ändern. Wenn der spezielle Wunsch jedoch vom Passagier stammt, können Administratoren die E-Mail-Adresse und andere Details des jeweiligen Passagiers aktualisieren.
Im ursprünglichen Design gibt es für einen Manager keine Funktion zum Hinzufügen oder Entfernen eines anderen Managers zum/aus dem System. Wenn also die Anzahl der Manager innerhalb des Unternehmens zunimmt oder abnimmt, besteht keine Möglichkeit, einen neuen Manager hinzuzufügen oder einen vorhandenen Manager aus dem System zu entfernen.
Als Verbesserung der Spezifikation wird dem Admin-Panel eine neue Funktion hinzugefügt, die es einem Administrator ermöglicht, einen anderen Administrator zum System hinzuzufügen oder daraus zu entfernen. Wenn also ein Administrator neu zum System hinzugefügt wird, erhält er/sie eine E-Mail an die entsprechende E-Mail-Adresse, die bei der Registrierung eines Administrators angegeben wurde, mit der Mitteilung, dass er/sie als Administrator zum System hinzugefügt wurde und sich anmelden muss über seine NC-Nummer in das System ein. Nach der Registrierung kann man das Passwort über die Kontoeinstellungen im Admin-Bereich ändern.
Im ursprünglichen Entwurf wurde erwähnt, dass die Eisenbahnverkehrsverwaltung in der Lage sein sollte, Fahrpläne zu planen. Deshalb haben wir ihnen eine Schnittstelle zur Verfügung gestellt, mit der sie verschiedene Strecken mithilfe eindeutiger Streckennamen verwalten und den Bahnhöfen, die in diese Strecke einbezogen werden sollten, relevante Messen zuweisen können. Im Folgenden sind die im Streckenmanagement für die Verwaltung des Schienenverkehrs verfügbaren Funktionalitäten aufgeführt.
Im ursprünglichen Entwurf wurde nicht erwähnt, dass die Eisenbahntransportverwaltung Züge über das System verwalten sollte, aber als zusätzliche Funktion haben wir auch eine Schnittstelle erstellt, um Züge mithilfe eindeutiger Zugnamen zu verwalten und die Sitzplätze in den verschiedenen Klassen dieses Zugs zuzuweisen und zuzuweisen die Strecke, auf der der Zug verkehren wird. Im Zugmanagement sind folgende Funktionen für die Verwaltung des Schienenverkehrs verfügbar.
Abbildung_9: Zug erstellenIm ursprünglichen Entwurf wurde erwähnt, dass die Eisenbahnverkehrsverwaltung in der Lage sein sollte, Berichte durch die Verarbeitung von Reservierungsdetails zu erstellen. Deshalb haben wir eine Funktion hinzugefügt, um monatliche und jährliche Berichte über die von jedem Zug generierten Einnahmen zu erstellen. Danach haben wir zwei Ansichten als Kreisdiagramm und Balkendiagramm für die Ansicht von Berichten implementiert. Im Folgenden sind die in der Berichtsverwaltung für die Eisenbahntransportverwaltung verfügbaren Funktionen aufgeführt.
Wenn Sie eine Fehlermeldung wie die folgende erhalten, liegt dies nicht an den Back-End-Diensten. Dies liegt daran, dass einige Virenschutzanwendungen den E-Mail-Dienst „Nodemailer“ blockieren.
{ 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' }
Dies ist ein häufiges Problem bei Avast Antivirus. Dieses Problem tritt bei ESET und Kaspersky nicht auf.
Ich habe das Problem auch in https://stackoverflow.com gefragt. Sie schlagen außerdem vor, den Virenschutz zu deaktivieren, wenn die Back-End-Dienste ausgeführt werden.
Wenn Sie eine solche Fehlermeldung erhalten, deaktivieren Sie bitte den Virenschutz und versuchen Sie es erneut. Der Reservierungsvorgang wird jedoch auch dann nicht abgebrochen, wenn der Fehler auftritt.
Wenn Sie eine Fehlermeldung wie die folgende erhalten, liegt das daran, dass ich die kostenlose Testversion von Twilio verwende und die eingegebene Mobiltelefonnummer über das Twilio-Dashboard validiert werden sollte, bevor Nachrichten an diese Nummer gesendet werden. Wenn Sie ein kostenpflichtiges Twilio-Konto haben, fügen Sie bitte Kontodetails in der Back-End-Datei „config.json“ hinzu.
{ [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 }
Im Moment haben wir die Lösung bei den Eisenbahnen implementiert, aber wir planen, diese Lösung zu erweitern, um sie auch für den Einsatz in Bussen verfügbar zu machen.
Wir haben die Idee, ein Live-Tracking-System für die Eisenbahnen und Busse zu implementieren, damit die Fahrgäste genau wissen, wann die Busse und Züge am Bahnhof ankommen, was den Fahrgästen Zeit spart.
Derzeit ist die in der Spezifikation erwähnte Bargeldaufladelösung nicht praktikabel umsetzbar.
(C) 2019 Tenusha Guruge
tenusha.wordpress.com