Konfiguracja projektu
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 33 z 65.
Wyzwanie
ŁatwyBędziesz tworzyć prosty kalkulator koszyka zakupowego, który pokazuje, jak różne struktury danych współpracują ze sobą w rzeczywistej aplikacji.
Utwórz program, który przygotowuje podstawy systemu kalkulatora koszyka zakupowego, inicjalizując niezbędne struktury danych potrzebne w aplikacji e-commerce. Program powinien:
- Odczytać ciąg znaków reprezentujący nazwę sklepu
- Odczytać wiele par danych wejściowych reprezentujących nazwy produktów i ich ceny (dane wejściowe zakończą się po otrzymaniu
"products_done") - Utworzyć Mapę do przechowywania dostępnych produktów, używając ich nazw jako kluczy, a cen jako wartości
- Utworzyć pustą Listę reprezentującą koszyk zakupowy
- Wyświetlić informacje o początkowej konfiguracji i sprawdzić, czy struktury danych zostały prawidłowo zainicjalizowane
- Wypisać raport konfiguracji sklepu w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli nazwa sklepu to "Fresh Market", a wśród produktów są "Apple" w cenie 1.50, "Banana" w cenie 0.80, "Orange" w cenie 2.00 i "Milk" w cenie 3.25, program powinien wypisać:
Store: Fresh Market
Product Catalog Setup:
Available Products: {Apple: 1.5, Banana: 0.8, Orange: 2.0, Milk: 3.25}
Shopping Cart Initialized: []
System Status:
Total products available: 4
Cart status: Empty
Most expensive item: Milk ($3.25)
Cheapest item: Banana ($0.80)
Average product price: $1.84
Setup Status: Shopping cart system ready for customersJeśli nazwa sklepu to "Tech Store", a wśród produktów są "Laptop" w cenie 999.99, "Mouse" w cenie 25.50 i "Keyboard" w cenie 75.00, program powinien wypisać:
Store: Tech Store
Product Catalog Setup:
Available Products: {Laptop: 999.99, Mouse: 25.5, Keyboard: 75.0}
Shopping Cart Initialized: []
System Status:
Total products available: 3
Cart status: Empty
Most expensive item: Laptop ($999.99)
Cheapest item: Mouse ($25.50)
Average product price: $366.83
Setup Status: Shopping cart system ready for customersJeśli nazwa sklepu to "Book Corner", a wśród produktów są "Novel" w cenie 12.99, "Magazine" w cenie 4.50, "Textbook" w cenie 89.00, "Comic" w cenie 3.99 i "Journal" w cenie 15.75, program powinien wypisać:
Store: Book Corner
Product Catalog Setup:
Available Products: {Novel: 12.99, Magazine: 4.5, Textbook: 89.0, Comic: 3.99, Journal: 15.75}
Shopping Cart Initialized: []
System Status:
Total products available: 5
Cart status: Empty
Most expensive item: Textbook ($89.00)
Cheapest item: Comic ($3.99)
Average product price: $25.25
Setup Status: Shopping cart system ready for customersProgram musi utworzyć Mapę z kluczami typu String (nazwy produktów) i wartościami typu double (ceny), a także pustą Listę ciągów znaków na koszyk zakupowy. Znajdź najdroższe i najtańsze produkty, porównując wszystkie ceny w mapie produktów. Oblicz średnią cenę, dzieląc sumę wszystkich cen przez liczbę produktów. Zaokrąglij średnią do 2 miejsc po przecinku na potrzeby wyświetlenia. Format danych wejściowych będzie następujący: nazwa sklepu, a następnie naprzemiennie nazwy produktów i ceny (jako ciągi znaków, które trzeba przekonwertować na liczby typu double), aż do "products_done".
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj nazwę sklepu
String? storeName = stdin.readLineSync();
// Zainicjalizuj struktury danych
Map<String, double> products = {};
List<String> shoppingCart = [];
// Wczytuj produkty aż do "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!);
// Dodaj produkt do mapy
products[productName] = price;
}
// TODO: Napisz poniżej kod obliczający statystyki i generujący raport
// Wyświetl raport z konfiguracji sklepu
// Wynik powinien mieć dokładnie taki format, jak pokazano w przykładach
}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