Dodawanie produktów do koszyka
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 34 z 65.
Wyzwanie
ŁatwyUtwórz program implementujący funkcjonalność dodawania produktów do koszyka. Program powinien używać zdefiniowanej na stałe mapy katalogu produktów oraz pustej listy koszyka, a następnie przetwarzać dane wejściowe użytkownika dotyczące produktów.
Zdefiniuj w kodzie bezpośrednio następujący katalog produktów:
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
};Program powinien:
- Używać zdefiniowanej powyżej mapy katalogu produktów oraz pustej listy koszyka
- Odczytywać wiele ciągów znaków reprezentujących produkty, które klienci chcą dodać do koszyka (dane wejściowe zakończą się po otrzymaniu
"cart_done") - Dla każdego produktu sprawdzać, czy znajduje się w katalogu produktów, używając
containsKey() - Jeśli produkt istnieje, dodawać go do listy koszyka za pomocą metody
add() - Jeśli produkt nie istnieje, pomijać go i kontynuować przetwarzanie
- Śledzić udane dodania i nieudane próby
- Wyświetlać raport zarządzania koszykiem dokładnie w formacie pokazanym poniżej
Na przykład, jeśli klienci chcą dodać "Apple", "Bread", "Banana", "Apple", "Juice", program powinien wyświetlić:
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 checkoutJeśli klienci chcą dodać "Mouse", "Monitor", "Keyboard", "Mouse", program powinien wyświetlić:
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 checkoutJeśli klienci chcą dodać "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", program powinien wyświetlić:
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 checkoutProgram musi używać containsKey(), aby przed dodaniem produktu do koszyka sprawdzić, czy znajduje się on w katalogu produktów. Użyj metody add(), aby dopisać prawidłowe produkty do listy koszyka. Policz łączną liczbę produktów w koszyku za pomocą właściwości length, a unikalne produkty określ, konwertując koszyk na Set i sprawdzając jego długość. Śledź zarówno udane dodania, jak i produkty, których nie znaleziono w katalogu. Format danych wejściowych: nazwy produktów do dodania do koszyka, zakończone przez "cart_done".
Spróbuj swoich sił
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');
}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