Menu
Coddy logo textTech

Dodawanie produktów do koszyka

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 34 z 65.

challenge icon

Wyzwanie

Łatwy

Utwórz program implementujący funkcjonalność dodawania produktów do koszyka. Program powinien używać zdefiniowanej na stałe mapy katalogu produktów oraz pustej listy koszyka, a następnie przetwarzać dane wejściowe użytkownika dotyczące produktów.

Zdefiniuj w kodzie bezpośrednio następujący katalog produktów:

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 powinien:

  1. Używać zdefiniowanej powyżej mapy katalogu produktów oraz pustej listy koszyka
  2. Odczytywać wiele ciągów znaków reprezentujących produkty, które klienci chcą dodać do koszyka (dane wejściowe zakończą się po otrzymaniu "cart_done")
  3. Dla każdego produktu sprawdzać, czy znajduje się w katalogu produktów, używając containsKey()
  4. Jeśli produkt istnieje, dodawać go do listy koszyka za pomocą metody add()
  5. Jeśli produkt nie istnieje, pomijać go i kontynuować przetwarzanie
  6. Śledzić udane dodania i nieudane próby
  7. Wyświetlać raport zarządzania koszykiem dokładnie w formacie pokazanym poniżej

Na przykład, jeśli klienci chcą dodać "Apple", "Bread", "Banana", "Apple", "Juice", program powinien wyświetlić:

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

Jeśli klienci chcą dodać "Mouse", "Monitor", "Keyboard", "Mouse", program powinien wyświetlić:

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

Jeśli klienci chcą dodać "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", program powinien wyświetlić:

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 musi używać containsKey(), aby przed dodaniem produktu do koszyka sprawdzić, czy znajduje się on w katalogu produktów. Użyj metody add(), aby dopisać prawidłowe produkty do listy koszyka. Policz łączną liczbę produktów w koszyku za pomocą właściwości length, a unikalne produkty określ, konwertując koszyk na Set i sprawdzając jego długość. Śledź zarówno udane dodania, jak i produkty, których nie znaleziono w katalogu. Format danych wejściowych: nazwy produktów do dodania do koszyka, zakończone przez "cart_done".

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online