نظام التذاكر لشبكة النقل العام
هذا هو نظام التذاكر لشبكة النقل العام، حيث يتم تطوير الواجهة الأمامية (جانب العميل) باستخدام React JS والواجهة الخلفية (جانب الخادم) باستخدام Node JS وExpress JS. يستخدم تطبيق الويب هذا MongoDB كقاعدة بيانات، وهي قاعدة بيانات موجهة للمستندات عبر الأنظمة الأساسية.
يمكن للمستخدمين التسجيل في النظام. سيتم إرسال بريد إلكتروني للتحقق إلى البريد الإلكتروني الخاص بالراكب. فهو يحتاج إلى تأكيد ذلك قبل تسجيل الدخول إلى النظام. بعد التسجيل، يمكن للراكب تسجيل الدخول إلى النظام باستخدام البريد الإلكتروني وكلمة المرور أو يمكنه استخدام تسجيل الدخول الاجتماعي. يمكن للمسؤول أيضًا تسجيل الدخول إلى النظام باستخدام نفس معلومات تسجيل الدخول عن طريق إدخال البريد الإلكتروني وكلمة المرور المقدمة من المشرف الرئيسي.
بمجرد قيام المشرف الرئيسي بإنشاء مسؤول، سيتلقى المسؤول الذي تم إنشاؤه رسالة تأكيد عبر البريد الإلكتروني وبالنسبة للمسافرين أيضًا بمجرد تسجيلهم، سيتلقون رسالة تحقق عبر البريد الإلكتروني لتنشيط حسابهم.
باستخدام ملف التعريف الخاص بهم، يمكنهم عرض سجل الحجز الخاص بهم. يمكن لكل من المستخدمين المسجلين والمستخدمين غير المسجلين الاطلاع على تكلفة حجوزات الحجز. ولكن فقط المستخدمين الذين قاموا بتسجيل الدخول يمكنهم تأكيد الحجز. بمجرد تأكيد الحجز، سيتلقى المستخدم رسالة بريد إلكتروني تتضمن تفاصيل الحجز ورمز QR الفريد لهذا الحجز. يمكن للمستخدم مسح رمز الاستجابة السريعة في محطة القطار والحصول على تذكرة. عندما يصعدون إلى القطار، يحتاجون إلى مسح رمز الاستجابة السريعة ضوئيًا وفي نهاية الرحلة، يحتاجون إلى مسح رمز الاستجابة السريعة مرة أخرى للتحقق من محطة الوجهة ومحطة المغادرة. إذا كان رمز الاستجابة السريعة ومحطات المغادرة الفعلية غير متطابقين، فيجب على الراكب دفع مبلغ إضافي.
لقد قمنا أيضًا بتنفيذ لوحة إدارة لإدارة مسارات القطارات وتفاصيل محطة القطار وتفاصيل القطار والمستخدمين. بالنسبة لمديري السكك الحديدية، يمكنهم إنشاء تقارير مالية شهرية وسنوية تمت تصفيتها حسب القطار.
يتبع هذا التطبيق بنية Model-View-Controller (MVC). يتم تنفيذ العرض باستخدام ReactJS الذي يستخدم نمط عرض مركب. يتم تنفيذ وحدة التحكم والنموذج باستخدام Node.js، ويتم توصيل قاعدة بيانات MongoDB NoSQL بالنهاية الخلفية. تتواصل الواجهة الأمامية والخلفية من خلال مكالمات REST API.
كتحسين لوثيقة المواصفات، أضفنا وظيفة الاشتراك الاجتماعي باستخدام Google API. كما هو محدد في وثيقة المواصفات، يحتاج المستخدمون إلى تقديم التفاصيل الخاصة بهم إلى نظامنا باستخدام واجهة المستخدم. أيضًا، في نظامنا نقوم حاليًا بالتحقق من صحة عنوان البريد الإلكتروني للراكب بحيث يتم إرسال بريد إلكتروني إلى البريد الإلكتروني للراكب. يحتاج الراكب إلى تأكيد ذلك أولاً. وهذا عمل إضافي للركاب. لذلك، قمنا بتقليل هذه المهمة الإضافية عن طريق إضافة معلومات تسجيل الدخول الاجتماعية. ولهذا السبب، لا يحتاج المستخدمون إلى إدخال بريدهم الإلكتروني أو الاسم الأول أو اسم العائلة وما إلى ذلك يدويًا. يمكنهم تسجيل الدخول بسهولة من خلال حسابات Google الخاصة بهم.
في هذا التطبيق يمكن للمستخدمين تقديم تفاصيل الحجز والتحقق من التوفر الحالي للمقاعد وإجراء الحجز. يتتبع تطبيقنا الحجوزات التي تم إجراؤها من قبل ويعرض المقاعد الفعلية المتاحة في الوقت الذي يقوم فيه المستخدم بإجراء الحجز. عند إجراء الحجز، يحتاج المستخدم إلى إضافة مواقع البداية والوجهة والقطار والدرجة والوقت وكمية التذكرة وتاريخ الحجز. بمجرد إدخال البيانات، يحصل التطبيق على الحجوزات السابقة لنفس وقت وتاريخ القطار وطرحها حسب عدد المقاعد الموجودة في القطار.
حتى إذا لم يكن لدى المستخدم حساب تم إنشاؤه للتطبيق، فيمكنه الاطلاع على توفر المقاعد. بمجرد أن يحتاج المستخدم إلى إجراء الحجز، يجب أن يكون لديه حساب.
بمجرد قيام المستخدم بالحجز، سيقوم التطبيق بإنشاء رمز الاستجابة السريعة لتتبع الحجز. سيتم بعد ذلك إرسال بريد إلكتروني إلى البريد الإلكتروني للمستخدم مع تفاصيل الحجز ورمز الاستجابة السريعة الذي تم إنشاؤه، والذي سيتم استخدامه لطباعة التذكرة في محطة السكة الحديد. كما سيقوم النظام بإرسال رسالة نصية إلى رقم الجوال المسجل للمستخدم تتضمن تفاصيل الحجز.
هذه ميزة جديدة قدمناها للتطبيق. إذا كان المستخدم موظفًا حكوميًا، فيمكنه الحصول على خصومات خاصة. بمجرد قيام المستخدم بتقديم بطاقة 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 antivirus، ولن تحدث هذه المشكلة في 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 }
لقد قمنا حاليًا بتنفيذ الحل الخاص بالسكك الحديدية، ولكننا نخطط لتوسيع هذا الحل ليكون متاحًا للاستخدام في الحافلات أيضًا.
لدينا فكرة لتطبيق نظام التتبع المباشر للسكك الحديدية والحافلات حتى يتمكن الركاب من معرفة الوقت المحدد لوصول الحافلات والقطارات إلى المحطة مما سيوفر وقت الركاب.
في الوقت الحالي، ليس من العملي تنفيذ حل زيادة الرصيد النقدي المذكور في المواصفات.
(ج) 2019 تينوشا جوروج
Tenusha.wordpress.com