import 'dart:io'; void main() { // 3. تخزين البيانات: قوائم تحتوي على خرائط (Maps) لتخزين الوصف والمبلغ List> incomeList = []; List> expenseList = []; // 1. الدالة الأساسية ورسالة الترحيب print("--- مرحباً بك في نظام إدارة ميزانية الأعمال ---"); // 5. استخدام حلقة (Loop) لاستمرار تشغيل البرنامج bool isRunning = true; while (isRunning) { print("\n--- قائمة الخيارات ---"); print("1. إضافة دخل (Income)"); print("2. إضافة مصروف (Expense)"); print("3. عرض ملخص الميزانية"); print("4. خروج"); stdout.write("اختر رقم العملية: "); String? choice = stdin.readLineSync(); // 5. استخدام if/else للتعامل مع خيارات القائمة if (choice == '1') { // إضافة دخل stdout.write("أدخل وصف الدخل (مثلاً: مبيعات): "); String description = stdin.readLineSync() ?? "بدون وصف"; stdout.write("أدخل مبلغ الدخل: "); double? amount = double.tryParse(stdin.readLineSync() ?? ""); // 4. التحقق من المدخلات (مبلغ غير سالب ورقدي صحيح) if (amount != null && amount > 0) { incomeList.add({"description": description, "amount": amount}); print("تمت إضافة الدخل بنجاح."); } else { print("خطأ: يرجى إدخال مبلغ صحيح أكبر من الصفر."); } } else if (choice == '2') { // إضافة مصروف stdout.write("أدخل وصف المصروف (مثلاً: إيجار): "); String description = stdin.readLineSync() ?? "بدون وصف"; stdout.write("أدخل مبلغ المصروف: "); double? amount = double.tryParse(stdin.readLineSync() ?? ""); // 4 & 8. التحقق من المدخلات والعمليات المنطقية if (amount != null && amount > 0) { expenseList.add({"description": description, "amount": amount}); print("تمت إضافة المصروف بنجاح."); } else { print("خطأ: يرجى إدخال مبلغ صحيح أكبر من الصفر."); } } else if (choice == '3') { // 7. العمليات الحسابية: حساب إجمالي الدخل والمصاريف double totalIncome = 0; for (var item in incomeList) { totalIncome += item["amount"]; } double totalExpenses = 0; for (var item in expenseList) { totalExpenses += item["amount"]; } double netBalance = totalIncome - totalExpenses; // 8. تمرين حساب الضرائب (Tax Calculation) // استخدام ternary operator لحساب الضريبة 15% فقط إذا وجد ربح double tax = netBalance > 0 ? netBalance * 0.15 : 0.0; // 6. استخدام String Interpolation لعرض الملخص print("\n--- ملخص الميزانية ---"); print("إجمالي الدخل: \$${totalIncome.toStringAsFixed(2)}"); print("إجمالي المصاريف: \$${totalExpenses.toStringAsFixed(2)}"); if (netBalance >= 0) { print("صافي الربح: \$${netBalance.toStringAsFixed(2)}"); } else { // تحويل الرقم السالب لموجب عند الطباعة ليكون "صافي الخسارة" أوضح print("صافي الخسارة: \$${(netBalance * -1).toStringAsFixed(2)}"); } // عرض الضريبة إذا كان هناك ربح if (netBalance > 0) { print("الضريبة المستحقة (15%): \$${tax.toStringAsFixed(2)}"); print("الربح الصافي بعد الضريبة: \$${(netBalance - tax).toStringAsFixed(2)}"); } else { print("لا توجد ضرائب مستحقة لهذا الشهر بسبب الخسارة."); } print("---------------------"); } else if (choice == '4') { print("شكراً لاستخدامك تطبيق الميزانية. وداعاً!"); isRunning = false; } else { print("خيار غير صحيح، يرجى المحاولة مرة أخرى."); } } }