Obliczanie całkowitego kosztu
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 35 z 65.
Wyzwanie
ŁatwyUtwó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:
- Używać istniejącej mapy katalogu produktów i wypełnionej listy koszyka z poprzedniej konfiguracji
- 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") - Dla każdego produktu sprawdzać, czy istnieje w katalogu produktów, używając
containsKey() - Jeśli produkt istnieje, dodawać go do listy koszyka za pomocą metody
add() - Obliczać łączny koszt, iterując po liście koszyka i wyszukując cenę każdego produktu w mapie produktów
- Zsumować wszystkie ceny, aby uzyskać końcowy łączny koszt
- 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 checkoutJeś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 checkoutJeś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 checkoutProgram 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
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online