Aggiungere articoli al carrello
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 34 di 65.
Sfida
FacileCrea 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:
- Usare il catalogo prodotti Map definito sopra e una List vuota per il carrello
- Leggere più stringhe di input che rappresentano gli articoli che i clienti vogliono aggiungere al carrello (l’input terminerà quando riceverai
"cart_done") - Per ogni articolo, verificare se esiste nel catalogo prodotti usando
containsKey() - Se l’articolo esiste, aggiungerlo alla List del carrello usando il metodo
add() - Se l’articolo non esiste, saltarlo e continuare l’elaborazione
- Tenere traccia delle aggiunte riuscite e dei tentativi non riusciti
- 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 checkoutSe 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 checkoutSe 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 checkoutIl 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
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati5Progetto: Calcolo del carrello
Configurazione del progettoAggiungere articoli al carrello3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online