نواصل الحديث عن مشاريع التخرج لطلاب مشاريعنا التعليمية. في هذا العدد سنخبرك عن ثلاثة مشاريع في تخصص "التطوير في C ++" في تكنوبارك. المنشورات السابقة: واحد ، اثنان ، ثلاثة ، أربعة .
— . .
JunTracker — CRM
أراد مؤلفو المشروع القيام بشيء مفيد يمكن استخدامه في الحياة الواقعية. عمل أحد الطلاب كمدرس في مجال الروبوتات والبرمجة والنمذجة ثلاثية الأبعاد في مدرسة للتعليم الإضافي. في Excel ، تم عمل جدول ، ومحاسبة مالية ، ومجلة مع درجات الطلاب. كان كل هذا غير مريح للغاية لإدراكه ، ولا يمكنك إظهار والديك. هذه هي الطريقة التي نشأت بها فكرة إنشاء خدمة ملائمة لمثل هذه المدارس ، مما يسمح لها بوضع جدول زمني ومراقبة الشؤون المالية للمدارس والاحتفاظ بمجلة إلكترونية للطلاب. في هذه الحالة ، يجب أن تكون الخدمة مع فصل الحقوق.
تمت كتابة CRM من الصفر في فصل دراسي. فعلنا الكثير ، لكننا لم ننجح في القيام ببعض الأشياء. في الفصل الدراسي القادم ، سيقوم المؤلفون بعمل نسخة ثانية بواجهة أمامية في React وخادم في Go.

الجانب الأيسر لمدير المدرسة ، والجانب الأيمن يعرض جميع المعلومات حول اليوم الحالي. في قاعدة بيانات الطالب ، يمكنك البحث بالاسم الأول والأخير.

لكل طالب بطاقة شخصية بها إحصائيات:

تبدو بنية CRM كما يلي:

الواجهة الأمامية مكتوبة بلغة JS و HTML و CSS. يستخدم أنماط الحالة والمركب. يستخدم القالب بناء جملة Django ونمط "المصنع". يستخدم الخادم نمط الوسيط. للعمل مع قاعدة بيانات PostgreSQL ، كتب المؤلفون غلافًا.
فريق المشروع: مارك بيخوفيتس ، ميخائيل تروشيليف ، تيموفي ماكاروف ، أندري مافرين.
مستودع جيثب .
فيديو من مشروع الدفاع .
برنامج المراسلة المكتبي JMICKHENGER
أراد الطلاب أن يجربوا أيديهم في إنشاء رسول له الوظائف الأساسية لمثل هذه التطبيقات الحديثة. يعمل JMICKHENGER على Linux و macOS. إنه يعرف كيفية إنشاء محادثات مع أشخاص من قائمة جهات الاتصال (يدعم عددًا غير محدود من المستخدمين في دردشة واحدة) ، وإرسال الصور وإظهار حالة الرسالة (مقروءة أم لا).

تم إنشاء برنامج المراسلة باستخدام التقنيات التالية:
- OpenSSL.
- Qt - تُستخدم لتقديم الواجهة ، وتطبق نمط تصميم MVC.
- تعزيز.
- MongoDB.
- سكليتي.
بنية النظام العامة:

على جانب التطبيق ، توجد مكتبة لأجزاء الشبكة. بمجرد أن يتفاعل المستخدم مع التطبيق ، يتم استدعاء وظيفة محددة للعميل. واعتمادًا على الإجراء ، يتم تمرير رد الاتصال بالوظيفة المطلوبة ، والتي سيتم تنفيذها بعد معالجة جزء الشبكة للاستجابة من الخادم أو إخطار النموذج بوجود خطأ. في حالة وجود إجراءات غير صحيحة ، سيقوم التطبيق بمعالجة وإعلام المستخدم بعدم دقة البيانات المدخلة أو الإجراءات الأخرى (تسجيل الدخول أو كلمة المرور الخاطئة ، مستخدم مسجل بالفعل ، صديق غير موجود ، أو صديق موجود بالفعل في القائمة ، إلخ). تم تقليل عدد الطلبات إلى الخادم: يتم تخصيص معرفات فريدة لإعلام جميع المستخدمين في الدردشة ، والتي يتم استخدامها بدلاً من الطلبات. هناك حماية ضد المستخدمين غير الصبورين: لا جدوى من النقر فوق الزر نفسه عدة مرات ، في كل مرة ترسل طلبًاعلى أمل الحصول على رد من الخادم في أسرع وقت ممكن :)
يتفاعل جزء الشبكة مع الخادم البعيد. يتم تشغيل العميل غير المتزامن على مؤشر ترابط مخصص منفصل ويتم كتابته باستخدام Boost Asio. يحافظ العميل على اتصال TLS بالخادم. تنسيق تبادل البيانات هو JSON. OpenSSL يستخدم للأمن. يحدث التفاعل مع جزء الشبكة باستخدام عمليات الاسترجاعات. يتم تنفيذ بعض عمليات الاسترجاعات مرة واحدة بعد وصول استجابة من الخادم ، بينما يتم تعيين البعض الآخر طوال مدة تشغيل التطبيق ويتم تشغيلها في كل مرة يتم فيها تلقي معلومات معينة من الخادم (على غرار المراقب في Google Firestore). بالنسبة لبعض المعلومات التي نادرًا ما يتم تحديثها ، يتم تنفيذ ذاكرة التخزين المؤقت باستخدام SQLite.
تتم كتابة خادم TCP غير المتزامن أيضًا باستخدام Boost Asio و OpenSSL. يحدد الخادم الاتصالات بمعرفات فريدة ويستخدم قائمة انتظار الطلبات لتفويض تنفيذها إلى مثيل لفئة منطق الأعمال. أيضًا ، كتب المؤلفون الذين يستخدمون مكتبة mongocxx فصلًا دراسيًا مجمّعًا للعمل مع MongoDB. عند إنشائها ، تم استخدام مكتبة mongocxx. يمكن تقسيم منطق الأعمال بشكل مشروط إلى ثلاثة أجزاء: تلقي طلب من العميل في شكل JSON وتحليله ؛ العمل مع قاعدة البيانات ، وفي بعض الحالات ، التحقق من صحتها ؛ تشكيل الرد على العميل. بالإضافة إلى ذلك ، تم تنفيذ منطق الأعمال كمكتبة ديناميكية ، بحيث يكون من الملائم دمجها مع أجزاء الخادم.
مخطط تبادل البيانات بين العميل والخادم:

وهذه هي طريقة عمل تبادل البيانات مع قاعدة البيانات:

فريق المشروع: كونستانتين بافلوف ، سيرجي أليكسيف ، نيكولاي مانزييف ، نيكيتا شيلكانوف.
مستودع جيثب .
فيديو من مشروع الدفاع .
نظام الباركود
صنع المؤلفون نظام تشفير شريطي للشركات التي تنتج جميع أنواع الإلكترونيات. النظام قادر على مراعاة المنتجات تلقائيًا ، والتحكم في مرور المنتجات عبر مراحل مختلفة من العملية التكنولوجية ، ويسمح بزيادة أتمتة الإنتاج.
يقلل النظام من عبء التحكم في إنتاج المنتجات. جميع المعلومات ذات الصلة متاحة على الإنترنت. يزيل النظام أيضًا الأخطاء البشرية عند عد المنتجات في مراحل الإنتاج المختلفة.
مخطط العمل:

يسمح برنامج العميل بإنشاء رموز شريطية وتسجيل المنتجات المصنعة في قاعدة البيانات على الخادم. يستخدم فناني الأداء الماسحات الضوئية اللاسلكية لقراءة الرموز الشريطية المطبوعة على العبوة أو المنتجات نفسها. يرسل الماسح معلومات حول الرمز الشريطي الممسوح ويطلب من قاعدة البيانات تسجيل منتج جديد.
يتطلب النظام ماسحًا لاسلكيًا للرموز الشريطية ، مثل هذا:

ميزات البرنامج الثابت:
- IDE حديث يدعم لغة C.
- واجهة برمجة تطبيقات C موثقة جزئيًا للمسح الضوئي والعمل باستخدام المفاتيح والعرض والأضواء و WiFi والتخزين الداخلي.
- هناك أداة لتحميل البرامج الثابتة في الذاكرة.
لجعل الماسح الضوئي متوافقًا مع نظام الترميز الشريطي الخاص به ، قام مؤلفو المشروع بتصميم IDE بشكل عكسي. اتضح أن الجهاز مجهز بمتحكم STM32F103xx مع نواة ARMv7-M. تمكنا أيضًا من العثور على مكتبة ثابتة مع منطق الأعمال للتعامل مع استدعاءات API.
الأدوات المستخدمة لتطوير النظام:
- cc-arm-none-eabi (GNU ARM Toolchain) - مجموعة من الأدوات لتطوير معمارية ARM (المجمعين ، ++ ، ASM ؛ ld ، objdump).
- رابط النص - لترميز الفلاش وذاكرة الوصول العشوائي.
- cmake كنظام إنشاء + ملف أدوات cmake للتجميع المتقاطع لوحدات التحكم الدقيقة STM32 (بفضل المستودع https://github.com/ObKo/stm32-cmake ) /
- المواصفات ، التوثيق ، Stackoverflow ، مواضيع المنتدى.
كان علي أن أكتب الوحدات التالية:
- فئة مجمعة لتفاعل المستخدم من خلال المفاتيح.
- "واجهة المستخدم الرسومية" للعمل مع المستخدم.
- مكدس TCP-HTTP-JSON فوق طبقة IP المطبقة في واجهة برمجة تطبيقات الماسح الضوئي.
- فئة مجمعة فوق واجهة برمجة تطبيقات الماسح الضوئي لمسح الرموز الشريطية والحصول على نتائج المسح.
بعد ذلك ، كتب الفريق برنامج عميل يتيح لك:
- تخويل المستخدم.
- عرض جميع نماذج المنتجات والمعلومات عنها.
- عرض جميع الاجهزة.
- أضف الأجهزة.
- أضف النماذج.
- إنشاء رمز شريطي للنموذج.
- طباعة الباركود على الطابعة
- حفظ الباركود في ملف.
تمت كتابة هذا البرنامج باستخدام:
- QtCreator (واجهة رسومية).
- Boost (تنفيذ الشبكات وتحليل JSON).
- مكتبات لتحويل معرف المنتج إلى رمز شريطي.
تم إنشاء خادم HTTP باستخدام Boost.beast و MySqlCppConnector و Boost.thread و OpenSSL. مهامها:
- استقبال طلبات HTTP.
- الوصول إلى قاعدة البيانات.
- مصادقة المستخدم / الماسح الضوئي.
- تسجيل المستخدم / الماسح الضوئي.
- توليد رموز QR الفريدة.
- إرسال استجابات HTTP.
تعمل MySQL كقاعدة بيانات.
بنية الخادم وقاعدة البيانات:

فريق المشروع: دانييل تشيرني ، نيكولاي أومريخين ، سيرجي تشيبورنوي.
فيديو من مشروع الدفاع .
يمكنك قراءة المزيد عن مشاريعنا التعليمية على هذا الرابط . وغالبًا ما تذهب إلى قناة Technostream ، حيث تظهر بانتظام مقاطع فيديو تدريبية جديدة حول البرمجة والتطوير والتخصصات الأخرى.