Menu
Coddy logo textTech

Obliczanie całkowitego kosztu

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

challenge icon

Wyzwanie

Łatwy

Utwórz program, który rozwija projekt kalkulatora koszyka, dodając funkcjonalność obliczania łącznego kosztu wszystkich produktów w koszyku. Rozbudowując zarządzanie koszykiem z poprzedniej lekcji, Twój program powinien:

  1. Używać istniejącej mapy katalogu produktów i wypełnionej listy koszyka z poprzedniej konfiguracji
  2. Odczytywać wiele ciągów znaków reprezentujących produkty, które klienci chcą dodać do koszyka (wprowadzanie zakończy się po otrzymaniu "cart_done")
  3. Dla każdego produktu sprawdzać, czy istnieje w katalogu produktów, używając containsKey()
  4. Jeśli produkt istnieje, dodawać go do listy koszyka za pomocą metody add()
  5. Obliczać łączny koszt, iterując po liście koszyka i wyszukując cenę każdego produktu w mapie produktów
  6. Zsumować wszystkie ceny, aby uzyskać końcowy łączny koszt
  7. Wyświetlić raport z obliczeń koszyka dokładnie w formacie pokazanym poniżej

Na przykład, jeśli w sklepie są produkty "Apple" w cenie 1.50, "Banana" w cenie 0.80, "Orange" w cenie 2.00, "Milk" w cenie 3.25, a klienci chcą dodać "Apple", "Banana", "Apple", "Milk", program powinien wyświetlić:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkout

Jeśli w sklepie są produkty "Laptop" w cenie 999.99, "Mouse" w cenie 25.50, "Keyboard" w cenie 75.00, a klienci chcą dodać "Mouse", "Keyboard", "Mouse", "Monitor", program powinien wyświetlić:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
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 w sklepie są produkty "Novel" w cenie 12.99, "Magazine" w cenie 4.50, "Textbook" w cenie 89.00, a klienci chcą dodać "Novel", "Magazine", "Novel", "Textbook", "Dictionary", program powinien wyświetlić:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkout

Program musi iterować po każdym produkcie na liście koszyka, wyszukiwać jego cenę w mapie katalogu produktów i dodawać tę cenę do bieżącej sumy. Użyj pętli, aby przetworzyć każdy produkt w koszyku i zsumować łączny koszt. W fazie obliczania kosztów wyświetl cenę każdego produktu z osobna. Formatuj wszystkie ceny tak, aby zawierały dokładnie 2 miejsca po przecinku. Format danych wejściowych będzie następujący: nazwy produktów do dodania do koszyka, zakończone wartością "cart_done".

Spróbuj swoich sił

import 'dart:io';

void main() {
  // Product catalog with items and prices
  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
  };
  
  // Shopping cart to store selected items
  List<String> shoppingCart = [];
  
  // Counters for tracking operations
  int successfulAdditions = 0;
  int itemsNotFound = 0;
  
  print("Shopping Cart Operations:");
  
  // Read items until "cart_done" is received
  String? item;
  while ((item = stdin.readLineSync()) != "cart_done") {
    if (item != null) {
      if (productCatalog.containsKey(item)) {
        shoppingCart.add(item);
        successfulAdditions++;
        print("Adding '$item': Item added to cart successfully");
      } else {
        itemsNotFound++;
        print("Adding '$item': Item not available in store");
      }
    }
  }
  
  // Display cart contents
  print("Cart Contents: $shoppingCart");
  
  // Calculate unique products
  Set<String> uniqueProducts = shoppingCart.toSet();
  
  // Display cart summary
  print("Cart Summary:");
  print("Total items in cart: ${shoppingCart.length}");
  print("Unique products in cart: ${uniqueProducts.length}");
  print("Items successfully added: $successfulAdditions");
  print("Items not found: $itemsNotFound");
  print("Cart Status: Ready for checkout");
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online