Menu
CoddyTech

復習 - 在庫の更新

CoddyのDartジャーニー「論理とフロー」セクションの一部。レッスン 32/65。

challenge icon

チャレンジ

簡単

製品の在庫レベルの追跡、既存アイテムの確認、新しい製品の安全な追加、および数量の更新を行うことで、倉庫在庫システムを管理するプログラムを作成してください。プログラムは以下の処理を行う必要があります:

  1. 倉庫名を表す文字列入力を読み込む
  2. 製品名とその現在の在庫数量を表す入力のペアを複数読み込む(入力は "inventory_done" を受け取った時点で終了します)
  3. 存在を確認する製品を表す文字列入力を読み込む
  4. デフォルトの在庫で追加する新しい製品を表す文字列入力を読み込む
  5. 補充する製品を表す文字列入力を読み込む
  6. 補充する製品に追加する数量を表す文字列入力を読み込む
  7. 製品名をキー、在庫数量を値として保存する Map を作成する
  8. containsKey() を使用して、指定された製品が在庫に存在するかどうかを確認する
  9. putIfAbsent() を使用して、デフォルト在庫 50 ユニットで新しい製品を追加する
  10. 追加数量を加算することで、補充する製品の在庫数量を更新する
  11. 以下の形式で在庫管理レポートを出力する

例えば、倉庫名が "Central Warehouse"、在庫に "Laptops" が 25 ユニット、"Mice" が 150 ユニット、"Keyboards" が 75 ユニット含まれており、確認する製品が "Laptops"、追加する新しい製品が "Monitors"、補充する製品が "Mice"、追加数量が 30 の場合、プログラムは以下のように出力する必要があります:

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

倉庫名が "North Storage"、在庫に "Tablets" が 40 ユニット、"Headphones" が 80 ユニット含まれており、確認する製品が "Smartphones"、追加する新しい製品が "Tablets"、補充する製品が "Headphones"、追加数量が 20 の場合、プログラムは以下のように出力する必要があります:

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

倉庫名が "South Depot"、在庫に "Printers" が 15 ユニット、"Scanners" が 35 ユニット、"Cables" が 200 ユニット含まれており、確認する製品が "Scanners"、追加する新しい製品が "Webcams"、補充する製品が "Printers"、追加数量が 45 の場合、プログラムは以下のように出力する必要があります:

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

プログラムでは、containsKey() を使用して製品が在庫に存在するかどうかを確認し、putIfAbsent() を使用してデフォルト在庫 50 ユニットで新しい製品を安全に追加し、Map の値を直接更新して在庫数量を増やす必要があります。在庫不足のアイテムは、数量が 30 ユニット未満のものとしてカウントしてください。最終的な在庫のすべての数量を合計して、総在庫ユニット数を計算してください。入力形式は、倉庫名、次に製品名と在庫数量(整数に変換する必要がある文字列)の交互の入力、"inventory_done" による終了、その後に確認する製品、追加する新しい製品、補充する製品、および追加数量が続きます。

自分で試してみよう

import 'dart:io';

void main() {
  // 倉庫名を読み込む
  String? warehouseName = stdin.readLineSync();
  
  // "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;
  }
  
  // 確認する製品を読み込む
  String? productToCheck = stdin.readLineSync();
  
  // 追加する新しい製品を読み込む
  String? newProduct = stdin.readLineSync();
  
  // 補充する製品を読み込む
  String? productToRestock = stdin.readLineSync();
  
  // 追加の数量を読み込む
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: 以下にコードを記述してください
  // 製品が存在するか確認するには containsKey() を使用します
  // デフォルトの在庫数 50 で新しい製品を追加するには putIfAbsent() を使用します
  // 在庫数量を更新し、在庫統計を計算します
  
  // 在庫管理レポートを出力します
  print("Warehouse: $warehouseName");
  // ここに出力ステートメントを追加してください
}

論理とフローのすべてのレッスン

自分で練習してみよう: Dartオンラインコンパイラ