Applicare uno sconto
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 36 di 65.
Sfida
FacileCrea un programma che prosegua il progetto del calcolatore del carrello implementando un sistema di sconti che applica sconti percentuali agli ordini idonei. Basandosi sul calcolo del costo totale della lezione precedente, il tuo programma dovrà:
- Usare la Map del catalogo prodotti esistente e le funzionalità del carrello della configurazione precedente
- Leggere più input stringa che rappresentano gli articoli che i clienti vogliono aggiungere al carrello (l’input terminerà quando riceverai
"cart_done") - Per ogni articolo, controllare se esiste nel catalogo prodotti usando
containsKey()e aggiungere al carrello gli articoli validi - Calcolare il subtotale sommando i prezzi di tutti gli articoli nel carrello
- Leggere un input stringa che rappresenta l’importo soglia dello sconto
- Leggere un input stringa che rappresenta la percentuale di sconto da applicare
- Applicare lo sconto solo se il subtotale raggiunge o supera l’importo soglia
- Calcolare l’importo dello sconto e il totale finale dopo aver applicato lo sconto
- Visualizzare il resoconto del calcolo dello sconto nel formato esatto mostrato di seguito
Per esempio, se il negozio ha i prodotti "Apple" a 1.50, "Banana" a 0.80, "Orange" a 2.00, "Milk" a 3.25, i clienti vogliono aggiungere "Apple", "Orange", "Milk", "Apple", la soglia dello sconto è 5.00 e la percentuale di sconto è 10, il tuo programma dovrebbe produrre:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Orange': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Cart Contents: [Apple, Orange, Milk, Apple]
Cost Calculation:
Apple: $1.50
Orange: $2.00
Milk: $3.25
Apple: $1.50
Subtotal: $8.25
Discount Analysis:
Threshold: $5.00
Discount Rate: 10%
Subtotal ($8.25) meets threshold requirement
Discount Applied: $0.83
Final Total: $7.42
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 10% discount applied
Cart Status: Ready for checkoutSe il negozio ha i prodotti "Laptop" a 999.99, "Mouse" a 25.50, "Keyboard" a 75.00, i clienti vogliono aggiungere "Mouse", "Keyboard", la soglia dello sconto è 150.00 e la percentuale di sconto è 15, il tuo programma dovrebbe produrre:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Cart Contents: [Mouse, Keyboard]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Subtotal: $100.50
Discount Analysis:
Threshold: $150.00
Discount Rate: 15%
Subtotal ($100.50) does not meet threshold requirement
Discount Applied: $0.00
Final Total: $100.50
Cart Summary:
Total items in cart: 2
Unique products in cart: 2
Items successfully added: 2
Items not found: 0
Discount Status: No discount applied
Cart Status: Ready for checkoutSe il negozio ha i prodotti "Novel" a 12.99, "Magazine" a 4.50, "Textbook" a 89.00, i clienti vogliono aggiungere "Novel", "Textbook", "Magazine", "Novel", la soglia dello sconto è 75.00 e la percentuale di sconto è 20, il tuo programma dovrebbe produrre:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Cart Contents: [Novel, Textbook, Magazine, Novel]
Cost Calculation:
Novel: $12.99
Textbook: $89.00
Magazine: $4.50
Novel: $12.99
Subtotal: $119.48
Discount Analysis:
Threshold: $75.00
Discount Rate: 20%
Subtotal ($119.48) meets threshold requirement
Discount Applied: $23.90
Final Total: $95.58
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 20% discount applied
Cart Status: Ready for checkoutIl tuo programma deve prima calcolare il subtotale, quindi verificare se raggiunge o supera la soglia dello sconto usando un’istruzione condizionale if. Se la soglia viene raggiunta, calcolare l’importo dello sconto moltiplicando il subtotale per la percentuale di sconto divisa per 100. Sottrarre l’importo dello sconto dal subtotale per ottenere il totale finale. Formattare tutti gli importi monetari in modo da mostrare esattamente 2 cifre decimali. Il formato dell’input sarà: i nomi degli articoli da aggiungere al carrello, terminati da "cart_done", seguiti dall’importo soglia dello sconto e dalla percentuale di sconto (entrambi come stringhe da convertire nei tipi numerici appropriati).
Provalo tu
import 'dart:io';
void main() {
// Product catalog with prices
Map<String, double> products = {
'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 list
List<String> cart = [];
// Counters for summary
int itemsAdded = 0;
int itemsNotFound = 0;
print('Shopping Cart Operations:');
// Read items until "cart_done"
String? item;
while ((item = stdin.readLineSync()) != 'cart_done') {
if (item != null) {
if (products.containsKey(item)) {
cart.add(item);
print("Adding '$item': Item added to cart successfully");
itemsAdded++;
} else {
print("Adding '$item': Item not available in store");
itemsNotFound++;
}
}
}
// Display cart contents
print('Cart Contents: $cart');
// Calculate total cost
print('Cost Calculation:');
double totalCost = 0.0;
for (String cartItem in cart) {
double price = products[cartItem]!;
totalCost += price;
print('$cartItem: \$${price.toStringAsFixed(2)}');
}
print('Total Cost: \$${totalCost.toStringAsFixed(2)}');
// Cart summary
Set<String> uniqueProducts = cart.toSet();
print('Cart Summary:');
print('Total items in cart: ${cart.length}');
print('Unique products in cart: ${uniqueProducts.length}');
print('Items successfully added: $itemsAdded');
print('Items not found: $itemsNotFound');
print('Cart Status: Ready for checkout');
}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