公共交通網的票務系統
這是一個公共交通網路的票務系統,其中前端(客戶端)使用 React JS 開發,後端(伺服器端)使用 Node JS 和 Express JS 開發。這個Web應用程式使用MongoDB作為資料庫,這是一個跨平台的以文件為導向的資料庫。
用戶可以在系統上註冊。驗證電子郵件將發送至乘客的電子郵件信箱。他需要在登入系統之前進行確認。註冊後,乘客可以使用電子郵件和密碼登入系統,也可以使用社群登入。管理員也可以透過輸入主管理員提供的電子郵件和密碼,使用相同的登入名稱登入系統。
一旦主管理員創建了管理員,創建的管理員將收到一封確認電子郵件,對於乘客來說,一旦註冊,他們將收到一封驗證電子郵件以啟動其帳戶。
使用他們的個人資料,他們可以查看他們的預訂歷史記錄。註冊用戶和未註冊用戶都可以查看預訂費用。但只有登入用戶才能確認預訂。預訂確認後,用戶將收到一封電子郵件,其中包含預訂詳細資訊和該預訂的唯一二維碼。用戶可以在火車站掃描二維碼取票。當他們上車時,需要掃描二維碼,在旅程結束時,他們需要再次掃描二維碼,以驗證目的地站和出發站。如果二維碼與實際出發站不符,乘客需支付額外費用。
我們還實作了一個管理面板來管理火車路線、火車站詳細資訊、火車詳細資訊和使用者。對於鐵路管理者來說,他們可以產生按列車篩選的月度和年度財務報告。
該應用程式遵循模型-視圖-控制器 (MVC) 架構。該視圖是使用 ReactJS 實現的,它使用複合視圖模式。控制器和模型使用Node.js實現,後端連接MongoDB NoSQL資料庫。前端和後端透過 REST API 呼叫進行通訊。
作為規範文件的改進,我們新增了使用 google API 的社交註冊功能。根據規範文件中的規定,使用者需要使用使用者介面向我們的系統提供其詳細資訊。此外,在我們的系統中,我們目前正在驗證乘客的電子郵件地址,以便將電子郵件發送到乘客的電子郵件地址。需要旅客先確認。這對乘客來說是額外的工作。因此,我們透過新增社交登入來減少額外的任務。因此,使用者無需手動輸入電子郵件、姓名、姓氏等。
在此應用程式中,用戶可以提供預訂詳細資訊並檢查當前可用座位並進行預訂。我們的應用程式會追蹤先前進行的預訂,並顯示用戶進行預訂時的實際可用座位。用戶在預訂時需要新增出發地和目的地、車次、艙等、時間、車票數量和預訂日期。輸入資料後,應用程式將獲取同一列車的時間和日期的先前預訂,並減去該列車的座位數。
即使用戶沒有為該應用程式建立帳戶,他們也可以查看席位的可用性。當用戶需要預訂時,他們需要有一個帳戶。
用戶進行預訂後,應用程式將產生一個二維碼來追蹤預訂。然後,系統將向使用者的電子郵箱發送一封電子郵件,其中包含預訂詳細資訊和產生的二維碼,該二維碼將用於在火車站列印車票。此外,系統還會向用戶註冊的手機號碼發送一條短信,其中包含預訂詳細資訊。
這是我們向該應用程式引入的一項新功能。如果用戶是政府僱員,他們可以享有特別折扣。一旦用戶在註冊時提供了 NIC,該 NIC 就會使用政府 Web 服務進行驗證,以確保用戶有資格獲得折扣。如果用戶有資格享受折扣,則會將其添加到預訂中。
在該應用程式的規範中沒有直接付款方式。根據規範,用戶必須為其帳戶充值,然後支付預訂費。這包括額外的用戶交互,並且應用程式的用戶友好性將會下降。
因此,我們增加了直接支付方式和現金支付選項。用戶在預訂時可以選擇任何選項。如果用戶選擇卡,則用戶需要添加有效的卡詳細資訊。或者使用者可以選擇現金支付,到火車站支付。
作為規範的改進,在使用者管理部分,有一個使用者列表,管理員可以從該列表中停用特定使用者。停用後,使用者無法使用其憑證存取該帳戶。將向使用者顯示一條錯誤訊息。我們添加此功能是因為如果任何乘客有某種不當行為,則應該有一種方法可以從系統中停用該使用者。在規格中,沒有辦法禁用使用者。
作為規範的另一項改進,管理員可以編輯乘客帳戶。例如他們的電子郵件。在使用者檢視中,使用者無法變更其電子郵件地址。但是,如果乘客提出特殊要求,管理員可以更新特定乘客的電子郵件地址和其他詳細資訊。
在最初的設計中,管理員沒有在系統中新增或刪除其他管理員的功能。因此,如果公司內經理的數量增加或減少,則無法新增經理或從系統中刪除現有經理。
因此,作為對規範的改進,為管理面板添加了一個新功能,使管理員能夠在系統中新增或刪除另一個管理員。因此,當管理員新添加到系統時,他/她將收到一封電子郵件,該電子郵件發送到管理員註冊時提供的相應電子郵件地址,表明他/她已被添加為系統管理員,而他/她必須登入使用他/她的 NC 編號連接到系統。註冊後,可以使用管理面板中的帳戶設定更改密碼。
在最初的設計中,他們提到鐵路運輸管理部門應該能夠規劃時刻表,因此我們為他們提供了一個介面,使用唯一的路線名稱來管理不同的路線,並將該路線中應包含的車站與相關市集一起分配。以下是鐵路運輸管理線路管理中可用的功能。
在最初的設計中,他們沒有提到鐵路運輸管理部門應該透過系統來管理列車,但作為一個附加功能,我們還創建了一個介面來使用唯一的列車名稱來管理列車,並分配該列車不同等級的座位並分配火車運行的路線。以下是鐵路運輸管理列車管理中可用的功能。
圖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