Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

خاتمة المشروع: الحلقة الرئيسية

جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 27 من 61.

challenge icon

التحدي

سهل

تهانينا—لقد قمت ببناء مكتبة حساب بنكي كاملة! الآن حان الوقت لتبديل الأدوار. بدلاً من أن تكون منشئ المكتبة، ستصبح مستخدم المكتبة. مهمتك هي كتابة برنامج رئيسي يختبر وحدة Account الخاصة بك.

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

ستعمل مع ثلاثة ملفات:

  • account.h: ملف الترويسة الكامل الخاص بك مع نوع Account غير الشفاف وجميع النماذج الأولية للدوال: create_account، و destroy_account، و deposit، و withdraw، و get_balance.
  • account.c: التنفيذ الكامل الخاص بك مع الهيكل المخفي الذي يحتوي على id و balance، بالإضافة إلى جميع تنفيذات الدوال التي قمت ببنائها طوال هذا المشروع.
  • main.c: هذا هو المكان الذي ستتألق فيه! اكتب برنامجاً يوضح دورة الحياة الكاملة لحساب بنكي من خلال تسلسل واقعي للمعاملات.

ستتلقى خمسة مدخلات: معرف الحساب (عدد صحيح)، و إيداع أول، و سحب، و إيداع ثانٍ، و محاولة سحب زائد (عملية سحب يجب أن تفشل بسبب عدم كفاية الأموال).

يجب أن يحكي برنامجك الرئيسي قصة حياة هذا الحساب:

  1. إنشاء الحساب والإعلان عن ذلك
  2. إظهار رصيد البداية
  3. إجراء الإيداع الأول وإظهار الرصيد الجديد
  4. سحب بعض الأموال وإظهار الرصيد المحدث
  5. إجراء إيداع آخر وإظهار الرصيد
  6. محاولة سحب تتجاوز الرصيد—يجب أن تفشل هذه العملية
  7. إظهار الرصيد النهائي (دون تغيير بعد السحب الفاشل)
  8. إغلاق الحساب

اطبع المخرجات بهذا التنسيق:

Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closed

حيث 2001 هو معرف الحساب، والمبالغ تعكس مدخلاتك. قم بتنسيق جميع القيم النقدية بمنزلتين عشريتين باستخدام %.2f. يجب طباعة رسالة فشل السحب عندما تعيد الدالة withdraw القيمة 0.

يوضح هذا الختام كل ما تعلمته عن التغليف (encapsulation)—يتفاعل برنامجك الرئيسي مع Account حصرياً من خلال واجهته العامة، دون لمس البيانات الداخلية المخفية مباشرةً.

جرّب بنفسك

#include <stdio.h>
#include "account.h"

int main() {
    // TODO: اقرأ account_id و deposit1 و withdraw_amount و deposit2 و overdraft من المدخلات

    // TODO: أنشئ الحساب واطبع "Account <id> created"

    // TODO: اطبع رصيد البداية

    // TODO: قم بالإيداع الأول، واطبع "Deposited <amount>" والرصيد الجديد

    // TODO: اسحب الأموال، واطبع "Withdrew <amount>" والرصيد المحدث

    // TODO: قم بالإيداع الثاني، واطبع "Deposited <amount>" والرصيد الجديد

    // TODO: حاول إجراء سحب على المكشوف؛ إذا فشل، اطبع "Withdrawal failed: insufficient funds"
    // TODO: اطبع الرصيد النهائي

    // TODO: اطبع "Account <id> closed" وقم بتدمير الحساب

    return 0;
}

جميع دروس Object Oriented Programming