Menu
Coddy logo textTech

Sepete Ürün Ekleme

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 34 / 65.

challenge icon

Görev

Kolay

Alışveriş sepetine ürün ekleme işlevini uygulayan bir program oluştur. Programın sabit kodlanmış bir ürün kataloğu Map'i ve boş bir alışveriş sepeti List'i kullanmalı, ardından kullanıcıdan alınan ürün girdilerini işlemelidir.

Aşağıdaki ürün kataloğunu doğrudan kodunda tanımla:

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
};

Programın şunları yapmalıdır:

  1. Yukarıda tanımlanan ürün kataloğu Map'ini ve boş bir alışveriş sepeti List'ini kullan
  2. Müşterilerin sepetlerine eklemek istediği ürünleri temsil eden birden fazla string girdisini oku (girdi, "cart_done" alındığında sona erecektir)
  3. Her ürün için, containsKey() kullanarak ürünün ürün kataloğunda bulunup bulunmadığını kontrol et
  4. Ürün varsa add() metodunu kullanarak alışveriş sepeti List'ine ekle
  5. Ürün yoksa ürünü atla ve işlemeye devam et
  6. Başarılı eklemeleri ve başarısız denemeleri takip et
  7. Sepet yönetimi raporunu aşağıda gösterilen tam biçimde görüntüle

Örneğin müşteriler "Apple", "Bread", "Banana", "Apple", "Juice" eklemek isterse programın şu çıktıyı vermelidir:

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

Müşteriler "Mouse", "Monitor", "Keyboard", "Mouse" eklemek isterse programın şu çıktıyı vermelidir:

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

Müşteriler "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook" eklemek isterse programın şu çıktıyı vermelidir:

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

Programın, sepete eklemeden önce her ürünün ürün kataloğunda bulunduğunu doğrulamak için containsKey() kullanması gerekir. Geçerli ürünleri alışveriş sepeti List'ine eklemek için add() metodunu kullan. Sepetteki toplam ürün sayısını length özelliğini kullanarak say ve sepeti bir Set'e dönüştürüp uzunluğunu kontrol ederek benzersiz ürünleri belirle. Hem başarılı eklemeleri hem de katalogda bulunamayan ürünleri takip et. Girdi biçimi şu şekilde olacaktır: sepete eklenecek ürün adları ve sonunda "cart_done".

Kendin dene

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');
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi