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

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

جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 27 من 61.

challenge icon

التحدي

سهل

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

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

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

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

ستتلقى خمس مدخلات: معرّف account (عدد صحيح)، وfirst deposit، وwithdrawal، وsecond deposit، ومحاولة overdraft (عملية سحب يجب أن تفشل بسبب عدم كفاية الأموال).

يجب أن يحكي برنامج main الخاص بك قصة حياة هذا account:

  1. أنشئ account وأعلن عنه
  2. اعرض starting balance
  3. نفّذ first deposit واعرض balance الجديدة
  4. اسحب بعض funds واعرض balance المحدثة
  5. نفّذ deposit آخر واعرض balance
  6. حاول تنفيذ withdrawal يتجاوز balance. يجب أن تفشل هذه العملية
  7. اعرض final balance (دون تغيير بعد withdrawal الفاشلة)
  8. أغلق account

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

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 هو معرّف account، والمبالغ تعكس مدخلاتك. نسّق جميع القيم المالية بمنزلتين عشريتين باستخدام %.2f. يجب طباعة رسالة withdrawal الفاشلة عندما تُرجع withdraw القيمة 0.

توضح هذه الخاتمة كل ما تعلمته عن التغليف. يتفاعل برنامج main الخاص بك مع 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: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
    // TODO: اطبع الرصيد النهائي

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

    return 0;
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم C عبر الإنترنت