Podsumowanie – aktualizacja stanu magazynowego
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 32 z 65.
Wyzwanie
ŁatwyUtwórz program, który zarządza systemem inwentaryzacji magazynu, śledząc poziomy zapasów produktów, sprawdzając, czy dane produkty już istnieją, bezpiecznie dodając nowe produkty i aktualizując ilości. Twój program powinien:
- Odczytać ciąg znaków reprezentujący nazwę magazynu
- Odczytać wiele par danych wejściowych reprezentujących nazwy produktów i ich bieżące ilości zapasów (wprowadzanie danych zakończy się po otrzymaniu
"inventory_done") - Odczytać ciąg znaków reprezentujący produkt, którego istnienie ma zostać sprawdzone
- Odczytać ciąg znaków reprezentujący nowy produkt do dodania z domyślnym zapasem
- Odczytać ciąg znaków reprezentujący produkt, którego zapas ma zostać uzupełniony
- Odczytać ciąg znaków reprezentujący dodatkową ilość, która ma zostać dodana do uzupełnianego zapasu produktu
- Utworzyć Mapę do przechowywania nazw produktów jako kluczy, a ilości ich zapasów jako wartości
- Użyć
containsKey(), aby sprawdzić, czy wskazany produkt istnieje w magazynie - Użyć
putIfAbsent(), aby dodać nowy produkt z domyślnym zapasem wynoszącym 50 sztuk - Zaktualizować ilość zapasów uzupełnianego produktu, dodając dodatkową ilość
- Wyświetlić raport zarządzania zapasami w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli nazwa magazynu to "Central Warehouse", zapasy obejmują "Laptops" w ilości 25 sztuk, "Mice" w ilości 150 sztuk, "Keyboards" w ilości 75 sztuk, sprawdzanym produktem jest "Laptops", nowym produktem do dodania jest "Monitors", uzupełnianym produktem jest "Mice", a dodatkowa ilość wynosi 30, program powinien wyświetlić:
Warehouse: Central Warehouse
Initial Inventory: {Laptops: 25, Mice: 150, Keyboards: 75}
Inventory Operations:
Checking for 'Laptops': Product found in inventory
Adding 'Monitors': New product added with default stock 50
Restocking 'Mice': Updated quantity from 150 to 180
Final Inventory: {Laptops: 25, Mice: 180, Keyboards: 75, Monitors: 50}
Inventory Summary:
Total products: 4
Total stock units: 330
Low stock items (below 30): 1
Products restocked: 1
Status: Inventory management completedJeśli nazwa magazynu to "North Storage", zapasy obejmują "Tablets" w ilości 40 sztuk, "Headphones" w ilości 80 sztuk, sprawdzanym produktem jest "Smartphones", nowym produktem do dodania jest "Tablets", uzupełnianym produktem jest "Headphones", a dodatkowa ilość wynosi 20, program powinien wyświetlić:
Warehouse: North Storage
Initial Inventory: {Tablets: 40, Headphones: 80}
Inventory Operations:
Checking for 'Smartphones': Product not found in inventory
Adding 'Tablets': Product already exists, keeping stock 40
Restocking 'Headphones': Updated quantity from 80 to 100
Final Inventory: {Tablets: 40, Headphones: 100}
Inventory Summary:
Total products: 2
Total stock units: 140
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completedJeśli nazwa magazynu to "South Depot", zapasy obejmują "Printers" w ilości 15 sztuk, "Scanners" w ilości 35 sztuk, "Cables" w ilości 200 sztuk, sprawdzanym produktem jest "Scanners", nowym produktem do dodania jest "Webcams", uzupełnianym produktem jest "Printers", a dodatkowa ilość wynosi 45, program powinien wyświetlić:
Warehouse: South Depot
Initial Inventory: {Printers: 15, Scanners: 35, Cables: 200}
Inventory Operations:
Checking for 'Scanners': Product found in inventory
Adding 'Webcams': New product added with default stock 50
Restocking 'Printers': Updated quantity from 15 to 60
Final Inventory: {Printers: 60, Scanners: 35, Cables: 200, Webcams: 50}
Inventory Summary:
Total products: 4
Total stock units: 345
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completedTwój program musi używać containsKey(), aby sprawdzić, czy produkt istnieje w zapasach, putIfAbsent(), aby bezpiecznie dodawać nowe produkty z domyślnym zapasem wynoszącym 50 sztuk, oraz bezpośrednio aktualizować wartości w mapie, aby zwiększać ilości zapasów. Za produkty o niskim stanie zapasów uznaj te, których ilość jest mniejsza niż 30 sztuk. Oblicz łączną liczbę sztuk w zapasach, sumując wszystkie ilości w końcowej inwentaryzacji. Format danych wejściowych będzie następujący: nazwa magazynu, następnie naprzemiennie nazwy produktów i ilości ich zapasów (jako ciągi znaków, które należy przekonwertować na liczby całkowite), zakończone ciągiem "inventory_done", a następnie produkt do sprawdzenia, nowy produkt do dodania, produkt do uzupełnienia i dodatkowa ilość.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj nazwę magazynu
String? warehouseName = stdin.readLineSync();
// Wczytuj produkty w magazynie aż do "inventory_done"
Map<String, int> inventory = {};
while (true) {
String? input = stdin.readLineSync();
if (input == "inventory_done") break;
String productName = input!;
String? quantityStr = stdin.readLineSync();
int quantity = int.parse(quantityStr!);
inventory[productName] = quantity;
}
// Wczytaj produkt do sprawdzenia
String? productToCheck = stdin.readLineSync();
// Wczytaj nowy produkt do dodania
String? newProduct = stdin.readLineSync();
// Wczytaj produkt, którego zapas należy uzupełnić
String? productToRestock = stdin.readLineSync();
// Wczytaj dodatkową ilość
String? additionalQuantityStr = stdin.readLineSync();
int additionalQuantity = int.parse(additionalQuantityStr!);
// TODO: Napisz swój kod poniżej
// Użyj containsKey(), aby sprawdzić, czy produkty istnieją
// Użyj putIfAbsent(), aby dodać nowe produkty z domyślnym stanem magazynowym 50
// Zaktualizuj stany magazynowe i oblicz statystyki magazynowe
// Wyświetl raport zarządzania magazynem
print("Warehouse: $warehouseName");
// Dodaj tutaj instrukcje wyświetlające wyniki
}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