إضافة العناصر إلى العربة
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 34 من 65.
التحدي
سهلقم بإنشاء برنامج ينفذ وظيفة إضافة العناصر إلى عربة التسوق. يجب أن يستخدم برنامجك خريطة (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
};يجب على برنامجك القيام بما يلي:
- استخدام خريطة (Map) كتالوج المنتجات المحددة أعلاه وقائمة (List) فارغة لعربة التسوق
- قراءة مدخلات نصية متعددة تمثل العناصر التي يريد العملاء إضافتها إلى عربتهم (ستنتهي المدخلات عندما تتلقى
"cart_done") - لكل عنصر، تحقق مما إذا كان موجوداً في كتالوج المنتجات باستخدام
containsKey() - إذا كان العنصر موجوداً، قم بإضافته إلى قائمة عربة التسوق باستخدام التابع
add() - إذا لم يكن العنصر موجوداً، فتخطاه واستمر في المعالجة
- تتبع الإضافات الناجحة والمحاولات الفاشلة
- عرض تقرير إدارة العربة بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا أراد العملاء إضافة "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
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة