Rückblick – Inventar-Update
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 32 von 65.
Aufgabe
EinfachErstellen Sie ein Programm, das ein Lagerverwaltungssystem verwaltet, indem es Produktbestände verfolgt, auf vorhandene Artikel prüft, neue Produkte sicher hinzufügt und Mengen aktualisiert. Ihr Programm sollte:
- Einen String einlesen, der den Namen des Lagers darstellt
- Mehrere Paare von Eingaben einlesen, die Produktnamen und deren aktuelle Lagerbestände darstellen (die Eingabe endet, wenn Sie
"inventory_done"erhalten) - Einen String einlesen, der ein Produkt darstellt, dessen Existenz geprüft werden soll
- Einen String einlesen, der ein neues Produkt darstellt, das mit einem Standardbestand hinzugefügt werden soll
- Einen String einlesen, der ein Produkt darstellt, das nachgefüllt werden soll
- Einen String einlesen, der die zusätzliche Menge darstellt, die dem nachgefüllten Produkt hinzugefügt werden soll
- Eine Map erstellen, um Produktnamen als Schlüssel und deren Lagerbestände als Werte zu speichern
containsKey()verwenden, um zu prüfen, ob das angegebene Produkt im Inventar vorhanden istputIfAbsent()verwenden, um das neue Produkt mit einem Standardbestand von 50 Einheiten hinzuzufügen- Die Bestandsmenge des nachgefüllten Produkts durch Hinzufügen der zusätzlichen Menge aktualisieren
- Den Lagerverwaltungsbericht exakt im unten gezeigten Format ausgeben
Wenn zum Beispiel der Lagername "Central Warehouse" ist, das Inventar "Laptops" mit 25 Einheiten, "Mice" mit 150 Einheiten, "Keyboards" mit 75 Einheiten umfasst, das zu prüfende Produkt "Laptops" ist, das neu hinzuzufügende Produkt "Monitors" ist, das nachzufüllende Produkt "Mice" ist und die zusätzliche Menge 30 beträgt, sollte Ihr Programm Folgendes ausgeben:
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 completedWenn der Lagername "North Storage" ist, das Inventar "Tablets" mit 40 Einheiten, "Headphones" mit 80 Einheiten umfasst, das zu prüfende Produkt "Smartphones" ist, das neu hinzuzufügende Produkt "Tablets" ist, das nachzufüllende Produkt "Headphones" ist und die zusätzliche Menge 20 beträgt, sollte Ihr Programm Folgendes ausgeben:
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 completedWenn der Lagername "South Depot" ist, das Inventar "Printers" mit 15 Einheiten, "Scanners" mit 35 Einheiten, "Cables" mit 200 Einheiten umfasst, das zu prüfende Produkt "Scanners" ist, das neu hinzuzufügende Produkt "Webcams" ist, das nachzufüllende Produkt "Printers" ist und die zusätzliche Menge 45 beträgt, sollte Ihr Programm Folgendes ausgeben:
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 completedIhr Programm muss containsKey() verwenden, um zu überprüfen, ob das Produkt im Inventar vorhanden ist, putIfAbsent(), um neue Produkte sicher mit einem Standardbestand von 50 Einheiten hinzuzufügen, und direkte Map-Wert-Aktualisierungen, um die Bestandsmengen zu erhöhen. Zählen Sie Artikel mit geringem Bestand als solche mit Mengen unter 30 Einheiten. Berechnen Sie die gesamten Bestandseinheiten, indem Sie alle Mengen im endgültigen Inventar summieren. Das Eingabeformat ist: Lagername, dann abwechselnd Produktnamen und Bestandsmengen (als Strings, die in Ganzzahlen umgewandelt werden müssen), endend mit "inventory_done", gefolgt von dem zu prüfenden Produkt, dem neu hinzuzufügenden Produkt, dem nachzufüllenden Produkt und der zusätzlichen Menge.
Probier es selbst
import 'dart:io';
void main() {
// Lagerhausnamen lesen
String? warehouseName = stdin.readLineSync();
// Inventarartikel lesen bis "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;
}
// Zu prüfendes Produkt lesen
String? productToCheck = stdin.readLineSync();
// Neu hinzuzufügendes Produkt lesen
String? newProduct = stdin.readLineSync();
// Nachzufüllendes Produkt lesen
String? productToRestock = stdin.readLineSync();
// Zusätzliche Menge lesen
String? additionalQuantityStr = stdin.readLineSync();
int additionalQuantity = int.parse(additionalQuantityStr!);
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie containsKey(), um zu prüfen, ob Produkte existieren
// Verwenden Sie putIfAbsent(), um neue Produkte mit einem Standardbestand von 50 hinzuzufügen
// Aktualisieren Sie die Bestandsmengen und berechnen Sie die Inventarstatistik
// Den Bestandsverwaltungsbericht ausgeben
print("Warehouse: $warehouseName");
// Fügen Sie hier Ihre Ausgabeanweisungen hinzu
}Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste