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

إضافة العناصر إلى العربة

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 34 من 65.

challenge icon

التحدي

سهل

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

قم بتعريف كتالوج المنتجات التالي مباشرة في الكود الخاص بك:

Map<String, double> productCatalog = {
  'Apple': 1.50,
  'Banana': 0.80,
  'Orange': 2.00,
  'Milk': 3.25,
  'Laptop': 999.99,
  'Mouse': 25.50,
  'Keyboard': 75.00,
  'Novel': 12.99,
  'Magazine': 4.50,
  'Textbook': 89.00
};

يجب على برنامجك القيام بما يلي:

  1. استخدام خريطة (Map) كتالوج المنتجات المحددة أعلاه وقائمة (List) فارغة لعربة التسوق
  2. قراءة مدخلات نصية متعددة تمثل العناصر التي يريد العملاء إضافتها إلى عربتهم (ستنتهي المدخلات عندما تتلقى "cart_done")
  3. لكل عنصر، تحقق مما إذا كان موجوداً في كتالوج المنتجات باستخدام containsKey()
  4. إذا كان العنصر موجوداً، قم بإضافته إلى قائمة عربة التسوق باستخدام التابع add()
  5. إذا لم يكن العنصر موجوداً، فتخطاه واستمر في المعالجة
  6. تتبع الإضافات الناجحة والمحاولات الفاشلة
  7. عرض تقرير إدارة العربة بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا أراد العملاء إضافة "Apple"، "Bread"، "Banana"، "Apple"، "Juice"، يجب أن يخرج برنامجك ما يلي:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Bread': Item not available in store
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Juice': Item not available in store
Cart Contents: [Apple, Banana, Apple]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 2
Cart Status: Ready for checkout

إذا أراد العملاء إضافة "Mouse"، "Monitor"، "Keyboard"، "Mouse"، يجب أن يخرج برنامجك ما يلي:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Cart Contents: [Mouse, Keyboard, Mouse]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkout

إذا أراد العملاء إضافة "Novel"، "Dictionary"، "Magazine"، "Novel"، "Comic"، "Textbook"، يجب أن يخرج برنامجك ما يلي:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Comic': Item not available in store
Adding 'Textbook': Item added to cart successfully
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 2
Cart Status: Ready for checkout

يجب أن يستخدم برنامجك containsKey() للتحقق من وجود كل عنصر في كتالوج المنتجات قبل إضافته إلى العربة. استخدم التابع add() لإلحاق العناصر الصالحة بقائمة عربة التسوق. قم بحساب إجمالي العناصر في العربة باستخدام خاصية length، وحدد المنتجات الفريدة عن طريق تحويل العربة إلى مجموعة (Set) والتحقق من طولها. تتبع كلاً من الإضافات الناجحة والعناصر التي لم يتم العثور عليها في الكتالوج. سيكون تنسيق الإدخال هو: أسماء العناصر المراد إضافتها إلى العربة، وتنتهي بـ "cart_done".

جرّب بنفسك

import 'dart:io';

void main() {
  // Read store name
  String? storeName = stdin.readLineSync();
  
  // Initialize data structures
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // Read products until "products_done"
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "products_done") {
      break;
    }
    String productName = input!;
    String? priceInput = stdin.readLineSync();
    double price = double.parse(priceInput!);
    
    // Add product to map
    products[productName] = price;
  }
  
  // Calculate statistics
  double totalPrice = 0;
  double maxPrice = 0;
  double minPrice = double.infinity;
  String mostExpensiveItem = '';
  String cheapestItem = '';
  
  for (String productName in products.keys) {
    double price = products[productName]!;
    totalPrice += price;
    
    if (price > maxPrice) {
      maxPrice = price;
      mostExpensiveItem = productName;
    }
    
    if (price < minPrice) {
      minPrice = price;
      cheapestItem = productName;
    }
  }
  
  double averagePrice = totalPrice / products.length;
  
  // Print the store setup report
  print('Store: $storeName');
  print('Product Catalog Setup:');
  print('Available Products: $products');
  print('Shopping Cart Initialized: $shoppingCart');
  print('System Status:');
  print('Total products available: ${products.length}');
  print('Cart status: Empty');
  print('Most expensive item: $mostExpensiveItem (\$${maxPrice.toStringAsFixed(2)})');
  print('Cheapest item: $cheapestItem (\$${minPrice.toStringAsFixed(2)})');
  print('Average product price: \$${averagePrice.toStringAsFixed(2)}');
  print('Setup Status: Shopping cart system ready for customers');
}

جميع دروس Logic & Flow