ระบบจำหน่ายตั๋วสำหรับเครือข่ายการขนส่งสาธารณะ
นี่คือระบบ Ticketing สำหรับเครือข่ายการขนส่งสาธารณะ ซึ่งส่วนหน้า (ฝั่งไคลเอ็นต์) ได้รับการพัฒนาโดยใช้ React JS และส่วนหลัง (ฝั่งเซิร์ฟเวอร์) ได้รับการพัฒนาโดยใช้ Node JS และ Express JS เว็บแอปพลิเคชันนี้ใช้ MongoDB เป็นฐานข้อมูล ซึ่งเป็นฐานข้อมูลเชิงเอกสารข้ามแพลตฟอร์ม
ผู้ใช้สามารถลงทะเบียนในระบบได้ อีเมลยืนยันจะถูกส่งไปยังอีเมลของผู้โดยสาร เขาต้องยืนยันก่อนเข้าสู่ระบบ หลังจากลงทะเบียน ผู้โดยสารสามารถเข้าสู่ระบบโดยใช้อีเมลและรหัสผ่าน มิฉะนั้น ผู้โดยสารจะสามารถใช้การเข้าสู่ระบบโซเชียลได้ ผู้ดูแลระบบยังสามารถเข้าสู่ระบบโดยใช้ข้อมูลเข้าสู่ระบบเดียวกันได้โดยการกรอกอีเมลและรหัสผ่านที่ผู้ดูแลระบบหลักให้ไว้
เมื่อผู้ดูแลระบบหลักสร้างผู้ดูแลระบบ ผู้ดูแลระบบที่สร้างขึ้นจะได้รับอีเมลยืนยัน และสำหรับผู้โดยสารเมื่อลงทะเบียนแล้ว พวกเขาจะได้รับอีเมลยืนยันเพื่อเปิดใช้งานบัญชีของพวกเขา
พวกเขาใช้โปรไฟล์เพื่อดูประวัติการจองได้ ทั้งผู้ใช้ที่ลงทะเบียนและผู้ใช้ที่ไม่ได้ลงทะเบียนสามารถดูค่าใช้จ่ายในการจองได้ แต่เฉพาะผู้ใช้ที่เข้าสู่ระบบเท่านั้นที่สามารถยืนยันการจองได้ เมื่อการจองได้รับการยืนยันแล้ว ผู้ใช้จะได้รับอีเมลที่มีรายละเอียดการจองและรหัส QR ที่ไม่ซ้ำกันสำหรับการจองนั้น ผู้ใช้สามารถสแกนรหัส QR ที่สถานีรถไฟและรับตั๋วได้ เมื่อขึ้นรถไฟจะต้องสแกน QR Code และเมื่อสิ้นสุดการเดินทางต้องสแกน QR Code อีกครั้งเพื่อตรวจสอบสถานีปลายทางและสถานีต้นทาง หากรหัส QR และสถานีต้นทางจริงไม่ตรงกัน ผู้โดยสารจะต้องชำระเงินเพิ่ม
นอกจากนี้เรายังได้ใช้แผงผู้ดูแลระบบเพื่อจัดการเส้นทางรถไฟ รายละเอียดสถานีรถไฟ รายละเอียดรถไฟ และผู้ใช้ สำหรับผู้ดูแลระบบการรถไฟ พวกเขาสามารถสร้างรายงานทางการเงินรายเดือนและรายปีที่กรองรถไฟได้อย่างชาญฉลาด
แอปพลิเคชันนี้เป็นไปตามสถาปัตยกรรม Model-View-Controller (MVC) มุมมองถูกนำมาใช้โดยใช้ ReactJS ซึ่งใช้รูปแบบมุมมองแบบคอมโพสิต ตัวควบคุมและโมเดลถูกใช้งานโดยใช้ Node.js ฐานข้อมูล MongoDB NoSQL เชื่อมต่อกับส่วนหลัง ส่วนหน้าและส่วนหลังสื่อสารผ่านการเรียก REST API
เพื่อเป็นการปรับปรุงเอกสารข้อกำหนด เราได้เพิ่มฟังก์ชันการลงทะเบียนทางสังคมโดยใช้ Google API ตามที่ระบุไว้ในเอกสารข้อกำหนด ผู้ใช้จำเป็นต้องให้รายละเอียดแก่ระบบของเราโดยใช้อินเทอร์เฟซผู้ใช้ นอกจากนี้ ในระบบของเรา เรากำลังตรวจสอบที่อยู่อีเมลของผู้โดยสาร เพื่อที่จะได้ส่งอีเมลไปยังอีเมลของผู้โดยสาร ผู้โดยสารจะต้องยืนยันก่อน นั่นเป็นงานพิเศษสำหรับผู้โดยสาร ดังนั้นเราจึงลดงานพิเศษนั้นลงด้วยการเพิ่มการเข้าสู่ระบบโซเชียล เนื่องจากผู้ใช้ไม่จำเป็นต้องกรอกอีเมล ชื่อ นามสกุล ฯลฯ ด้วยตนเอง พวกเขาสามารถเข้าสู่ระบบผ่านบัญชี Google ของตนได้อย่างง่ายดาย
ในแอปพลิเคชันนี้ผู้ใช้สามารถระบุรายละเอียดการจองและตรวจสอบที่นั่งว่างในปัจจุบันและทำการจองได้ แอปพลิเคชันของเราจะติดตามการจองที่ทำไว้ก่อนหน้านี้และแสดงที่นั่งจริงที่มีอยู่ในเวลาที่ผู้ใช้จะทำการจอง เมื่อทำการจอง ผู้ใช้จำเป็นต้องเพิ่มสถานที่เริ่มต้นและสถานที่ปลายทาง รถไฟ ชั้น เวลา จำนวนตั๋ว และวันที่ทำการจอง เมื่อป้อนข้อมูลแล้ว แอปพลิเคชันจะได้รับการจองก่อนหน้าสำหรับเวลาและวันที่ของรถไฟขบวนเดียวกัน และลบด้วยจำนวนที่นั่งที่รถไฟมี
แม้ว่าผู้ใช้จะไม่ได้สร้างบัญชีสำหรับแอปพลิเคชัน แต่ก็สามารถดูที่นั่งว่างได้ เมื่อผู้ใช้จำเป็นต้องทำการจอง พวกเขาจำเป็นต้องมีบัญชี
เมื่อผู้ใช้ทำการจองแอปพลิเคชันจะสร้างรหัส QR เพื่อติดตามการจอง จากนั้นอีเมลจะถูกส่งไปยังอีเมลของผู้ใช้พร้อมกับรายละเอียดการจองและรหัส QR ที่สร้างขึ้นซึ่งจะใช้ในการพิมพ์ตั๋วที่สถานีรถไฟ นอกจากนี้ระบบจะส่งข้อความไปยังหมายเลขโทรศัพท์มือถือที่ลงทะเบียนของผู้ใช้พร้อมรายละเอียดการจอง
นี่เป็นคุณสมบัติใหม่ที่เราแนะนำในแอปพลิเคชัน หากผู้ใช้บริการเป็นพนักงานราชการก็สามารถรับส่วนลดพิเศษได้ เมื่อผู้ใช้ให้ NIC เมื่อลงทะเบียน NIC นั้นจะได้รับการตรวจสอบโดยใช้บริการเว็บของรัฐบาลเพื่อให้แน่ใจว่าผู้ใช้มีสิทธิ์ได้รับส่วนลด หากผู้ใช้มีสิทธิ์ได้รับส่วนลด ก็จะถูกเพิ่มเข้าไปในการจอง
ในข้อกำหนดของแอปพลิเคชันนี้ไม่มีวิธีการชำระเงินโดยตรง ตามข้อกำหนดผู้ใช้จะต้องเติมเงินในบัญชีแล้วชำระค่าธรรมเนียมการจอง ซึ่งรวมถึงการโต้ตอบของผู้ใช้เพิ่มเติมและความเป็นมิตรต่อผู้ใช้ของแอปพลิเคชันจะลดลง
ดังนั้นเราจึงเพิ่มวิธีการชำระเงินโดยตรงและชำระด้วยตัวเลือกเงินสด ผู้ใช้สามารถเลือกตัวเลือกใดก็ได้เมื่อทำการจอง หากผู้ใช้เลือกการ์ด ผู้ใช้จะต้องเพิ่มรายละเอียดบัตรที่ถูกต้อง หรือผู้ใช้สามารถเลือกชำระด้วยเงินสดและชำระที่สถานีรถไฟได้
เพื่อเป็นการปรับปรุงข้อกำหนด ในส่วนการจัดการผู้ใช้จะมีรายชื่อผู้ใช้ ผู้ดูแลระบบสามารถปิดการใช้งานผู้ใช้รายใดรายหนึ่งจากรายการนั้นได้ หลังจากปิดการใช้งาน ผู้ใช้จะไม่สามารถเข้าถึงบัญชีโดยใช้ข้อมูลประจำตัวของตนได้ ข้อความแสดงข้อผิดพลาดจะปรากฏแก่ผู้ใช้ เราได้เพิ่มฟีเจอร์นี้เพราะหากผู้โดยสารคนใดมีพฤติกรรมไม่เหมาะสม ก็ควรมีวิธีปิดการใช้งานผู้ใช้รายนั้นจากระบบ ในข้อกำหนด ไม่มีวิธีปิดการใช้งานผู้ใช้
การปรับปรุงคุณสมบัติอีกประการหนึ่ง ผู้ดูแลระบบสามารถแก้ไขบัญชีผู้โดยสารได้ เช่นอีเมลของพวกเขา ในมุมมองผู้ใช้ ผู้ใช้ไม่สามารถเปลี่ยนที่อยู่อีเมลของตนได้ อย่างไรก็ตาม หากคำขอพิเศษมาจากผู้โดยสาร ผู้ดูแลระบบสามารถอัปเดตที่อยู่อีเมลของผู้โดยสารรายใดรายหนึ่งและรายละเอียดอื่นๆ ได้
ในการออกแบบดั้งเดิมไม่มีฟังก์ชันสำหรับผู้จัดการในการเพิ่มหรือลบผู้จัดการคนอื่นเข้า/ออกจากระบบ ดังนั้น หากจำนวนผู้จัดการเพิ่มขึ้นหรือลดลงภายในบริษัท ก็จะไม่มีทางเพิ่มผู้จัดการใหม่หรือลบผู้จัดการที่มีอยู่ออกจากระบบได้
เพื่อเป็นการปรับปรุงข้อกำหนด จึงได้เพิ่มฟังก์ชันใหม่สำหรับแผงผู้ดูแลระบบซึ่งช่วยให้ผู้ดูแลระบบสามารถเพิ่มหรือลบผู้ดูแลระบบรายอื่นออกจากระบบได้ ดังนั้นเมื่อมีการเพิ่มผู้ดูแลระบบใหม่ในระบบ เขา/เธอจะได้รับอีเมลไปยังอีเมลที่เกี่ยวข้องที่ให้ไว้เมื่อผู้ดูแลระบบลงทะเบียนโดยระบุว่าเขา/เธอถูกเพิ่มเป็นผู้ดูแลระบบในระบบและเขา/เธอต้องเข้าสู่ระบบ เข้าสู่ระบบโดยใช้หมายเลข 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 และ Kaspersky
ฉันได้ถามปัญหาใน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