بناء تطبيق بنك Bank 💰 باستخداك لغة C++ ( Console )
Kamal Dev
0:00 / 0:00
بناء تطبيق بنك Bank 💰 باستخداك لغة C++ ( Console )
41 просмотр · 9 дн. назад
Kamal Dev
21 подписчик
41 просмотр · 9 дн. назад
Instagram : kamal_salh
🏦 شرح مشروع نظام إدارة بنك باستخدام لغة C++ 💻
📌 أولاً: خلونا نشوف كيف اشتغلت على المشروع، وشو المفاهيم البرمجية اللي استخدمتها فيه 👇🔥
تعريف بيانات العميل باستخدام "struct"
استخدمت "struct" وعطيتها اسم "sClient"، حتى جمّع كل المعلومات الخاصة بالعميل ضمن بنية واحدة.
البنية بتحتوي على رقم الحساب، والرقم السري، والاسم، ورقم الهاتف، ورصيد الحساب، بالإضافة لمتغير بيحدد إذا كان العميل معلّماً للحذف أو لا.
👤 ثانياً: تنظيم القوائم باستخدام "enum"
استخدمت "enum" حتى نظّم خيارات القائمة الرئيسية وقائمة العمليات المالية.
مثلاً، القائمة الرئيسية فيها خيارات لعرض العملاء، وإضافة عميل، وحذفه، وتعديل بياناته، والبحث عنه، بالإضافة للعمليات المالية والخروج من البرنامج.
بدل ما اعتمد على الأرقام لحالها، عطيت كل خيار اسماً واضحاً، وهيك صار الكود أسهل بالقراءة والفهم.
💾 ثالثاً: حفظ البيانات ضمن الملفات
أنشأت ملف اسمه "Clients.txt" حتى خزّن فيه بيانات العملاء، وتضل البيانات موجودة حتى بعد ما سكّر البرنامج.
استخدمت الدالة "Client_ConvertToLine" لتحويل بيانات العميل إلى سطر نصي واحد، وفصلت بين كل معلومة والتانية باستخدام الفاصل "#//#".
أما الدالة "Line_ConvertToRecourd"، فهي بتعمل العكس؛ بتستقبل السطر النصي، وبتقسّمه باستخدام "SplitString"، وبعدها بترجّع البيانات إلى متغير من النوع "sClient".
يعني باختصار، عند الحفظ بحوّل بيانات العميل إلى نص، وعند القراءة برجع بحوّل النص إلى بيانات منظمة فيني تعامل معها ضمن البرنامج.
📂 رابعاً: قراءة بيانات العملاء باستخدام "vector"
الدالة "FromFile_To_Vector" مسؤولة عن قراءة بيانات العملاء من الملف.
بتفتح الملف، وبتقرأه سطر سطر باستخدام "getline"، وبعدها بتحوّل كل سطر إلى بيانات عميل، وبتضيفه إلى الـ "vector" باستخدام "push_back".
هيك بصير عندي جميع العملاء ضمن الذاكرة، وبقدر أبحث عنهم وأعدّل بياناتهم وأنفّذ العمليات المالية على أرصدتهم.
👨💻 خامساً: الوظائف الرئيسية بالبرنامج
🔹 1- عرض العملاء
الدالة "Show_Client_List" بتعرض بيانات العملاء ضمن جدول مرتب، فيه رقم الحساب والرقم السري والاسم والهاتف والرصيد.
واستخدمت الدالة "Print_Client_List" لطباعة بيانات عميل واحد، بينما الدالة "List" بتطبع عناوين الجدول.
🔹 2- إضافة عميل جديد
الدالة "Add_New_Client" بتطلب من المستخدم إدخال بيانات العميل الجديد، وبعدها بتحوّل البيانات إلى نص وبتضيفها إلى ملف العملاء.
وبعد الحفظ، بقرأ الملف مرة تانية حتى حدّث بيانات العملاء الموجودة بالـ "vector".
🔹 3- البحث عن عميل
الدالة "Find_Client" بتطلب من المستخدم رقم الحساب اللي بدو يبحث عنه، وبعدها بتستدعي "Check_Client" حتى تدور على الحساب ضمن مجموعة العملاء.
إذا لقت الحساب، بتعرض بيانات العميل، وإذا ما لقيته، بتظهر رسالة بتوضح إن الحساب غير موجود.
🔹 4- حذف عميل
الدالة "Delete_Client" بتطلب رقم الحساب، وبتعرض بيانات العميل قبل الحذف، وبعدها بتطلب تأكيد العملية من المستخدم.
إذا وافق، بتستخدم الدالة "MarkForDelete" حتى تعلّم العميل المطلوب حذفه.
بعدها الدالة "Re_Data_File" بتعيد كتابة الملف، مع استبعاد العملاء المعلّمين للحذف، وبعدين بحدّث الـ "vector" من جديد.
🔹 5- تعديل بيانات عميل
الدالة "Update_Client_Info" بتبحث عن العميل باستخدام رقم حسابه، وبعد التأكيد بتطلب إدخال البيانات الجديدة.
💰 سادساً: العمليات المالية
عملت قائمة منفصلة للعمليات المالية، حتى يكون عندي تنظيم أفضل للكود.
🔹 الإيداع "Deposit"
الدالة "Deposi_t" بتبحث عن العميل، وبتعرض بياناته، وبعدها بتطلب مبلغ الإيداع والتأكيد عليه.
إذا وافق المستخدم، بتضيف المبلغ إلى رصيد العميل، وبتحفظ البيانات الجديدة بالملف.
🔹 السحب "Withdraw"
الدالة "Withdra_w" بتبحث عن العميل وبتعرض بياناته، وبعدها بتطلب مبلغ السحب.
بعد التحقق من المبلغ وتأكيد العملية، بيتم خصم المبلغ من الرصيد وحفظ البيانات الجديدة بالملف.
🔹 عرض إجمالي الأرصدة "Total_Balances"
الدالة "Total_Balance_s" بتمرّ على جميع العملاء باستخدام حلقة تكرار، وبتعرض رصيد كل عميل.
وبنفس الوقت، بتجمع الأرصدة ضمن متغير اسمه "Number"، حتى تعرض مجموع أرصدة جميع العملاء بنهاية الجدول.
🔄 سابعاً: القوائم والتحكم بتدفّق البرنامج
استخدمت الدالة "PrintMenueScreen" لعرض القائمة الرئيسية، والدالة "start" لقراءة اختيار المستخدم وتنفيذ الوظيفة المناسبة باستخدام "switch".
أما قائمة العمليات المالية، فعندها دالة خاصة لعرض الخيارات اسمها "Print_Transactions_MenueScreen"، ودالة "Transaction_start" للتحكم بالخيارات وتنفيذ العمليات.
واستخدمت حلقات "do-while" حتى تضل القوائم ظاهرة وتتكرر لحد ما يختار المستخدم الخروج أو الرجوع للقائمة السابقة.
أما الدالة "esc"، فوظيفتها توقف الشاشة مؤقتاً حتى يقدر المستخدم يقرأ النتيجة قبل ما ينتقل للخطوة التالية.
🚀 تامناً: نقطة بداية البرنامج "main"
الدالة "main" هي نقطة البداية عند تشغيل البرنامج.
بالبداية، بقرأ بيانات العملاء من الملف وبخزّنها ضمن "vector".
بعدها بيدخل البرنامج ضمن حلقة تكرار، وبيستدعي الدالة "start" حتى يعرض القائمة الرئيسية وينفّذ اختيارات المستخدم.
وبيضل البرنامج شغّال لحد ما يختار المستخدم الخروج، وعندها بتنتهي الحلقة وبينتهي البرنامج.
🎯 بالنهاية
الفكرة من المشروع مو مجرد كتابة كود، وإنما تعلّم كيف نربط المفاهيم اللي مندرسها ونستخدمها لبناء برنامج عملي قابل للتطوير والتحسين. 💻🔥
📌 ملاحظة: المشروع تدريبي وتعليمي، ولساته قابل للتطوير، خصوصاً من ناحية التحقق من المدخلات وتحسين أمان البيانات.