Menu
Coddy logo textTech

Podsumowanie – aktualizacja stanu magazynowego

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 32 z 65.

challenge icon

Wyzwanie

Łatwy

Utwó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:

  1. Odczytać ciąg znaków reprezentujący nazwę magazynu
  2. 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")
  3. Odczytać ciąg znaków reprezentujący produkt, którego istnienie ma zostać sprawdzone
  4. Odczytać ciąg znaków reprezentujący nowy produkt do dodania z domyślnym zapasem
  5. Odczytać ciąg znaków reprezentujący produkt, którego zapas ma zostać uzupełniony
  6. Odczytać ciąg znaków reprezentujący dodatkową ilość, która ma zostać dodana do uzupełnianego zapasu produktu
  7. Utworzyć Mapę do przechowywania nazw produktów jako kluczy, a ilości ich zapasów jako wartości
  8. Użyć containsKey(), aby sprawdzić, czy wskazany produkt istnieje w magazynie
  9. Użyć putIfAbsent(), aby dodać nowy produkt z domyślnym zapasem wynoszącym 50 sztuk
  10. Zaktualizować ilość zapasów uzupełnianego produktu, dodając dodatkową ilość
  11. 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 completed

Jeś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 completed

Jeś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 completed

Twó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

Poćwicz samodzielnie: Kompilator Dart online