Menu
Coddy logo textTech

Aggiungere articoli al carrello

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 34 di 65.

challenge icon

Sfida

Facile

Crea un programma che implementi la funzionalità per aggiungere articoli a un carrello della spesa. Il programma deve usare una Map del catalogo prodotti definita direttamente nel codice e una List vuota per il carrello, quindi elaborare gli articoli inseriti dall’utente.

Definisci direttamente nel codice il seguente catalogo prodotti:

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

Il programma deve:

  1. Usare il catalogo prodotti Map definito sopra e una List vuota per il carrello
  2. Leggere più stringhe di input che rappresentano gli articoli che i clienti vogliono aggiungere al carrello (l’input terminerà quando riceverai "cart_done")
  3. Per ogni articolo, verificare se esiste nel catalogo prodotti usando containsKey()
  4. Se l’articolo esiste, aggiungerlo alla List del carrello usando il metodo add()
  5. Se l’articolo non esiste, saltarlo e continuare l’elaborazione
  6. Tenere traccia delle aggiunte riuscite e dei tentativi non riusciti
  7. Visualizzare il resoconto della gestione del carrello esattamente nel formato mostrato di seguito

Per esempio, se i clienti vogliono aggiungere "Apple", "Bread", "Banana", "Apple", "Juice", il programma deve produrre:

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

Se i clienti vogliono aggiungere "Mouse", "Monitor", "Keyboard", "Mouse", il programma deve produrre:

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

Se i clienti vogliono aggiungere "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", il programma deve produrre:

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

Il programma deve usare containsKey() per verificare che ogni articolo esista nel catalogo prodotti prima di aggiungerlo al carrello. Usa il metodo add() per aggiungere gli articoli validi alla List del carrello. Conta il numero totale di articoli nel carrello usando la proprietà length e determina i prodotti unici convertendo il carrello in un Set e controllandone la lunghezza. Tieni traccia sia delle aggiunte riuscite sia degli articoli non trovati nel catalogo. Il formato dell’input sarà: nomi degli articoli da aggiungere al carrello, con termine indicato da "cart_done".

Provalo tu

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

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online