Menu
CoddyTech

Ôn tập: Cập nhật kho hàng

Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 32 trên 65.

challenge icon

Thử thách

Dễ

Tạo một chương trình quản lý hệ thống tồn kho của nhà kho bằng cách theo dõi số lượng hàng trong kho, kiểm tra mặt hàng đã có, thêm sản phẩm mới một cách an toàn và cập nhật số lượng. Chương trình của bạn cần:

  1. Đọc một chuỗi đầu vào biểu thị tên nhà kho
  2. Đọc nhiều cặp đầu vào biểu thị tên sản phẩm và số lượng tồn kho hiện tại của chúng (đầu vào sẽ kết thúc khi bạn nhận được "inventory_done")
  3. Đọc một chuỗi đầu vào biểu thị sản phẩm cần kiểm tra xem có tồn tại hay không
  4. Đọc một chuỗi đầu vào biểu thị sản phẩm mới cần thêm với lượng hàng mặc định
  5. Đọc một chuỗi đầu vào biểu thị sản phẩm cần nhập thêm hàng
  6. Đọc một chuỗi đầu vào biểu thị số lượng bổ sung cần thêm vào sản phẩm được nhập thêm hàng
  7. Tạo một Map để lưu tên sản phẩm làm khóa và số lượng tồn kho làm giá trị
  8. Dùng containsKey() để kiểm tra sản phẩm được chỉ định có trong kho hay không
  9. Dùng putIfAbsent() để thêm sản phẩm mới với lượng hàng mặc định là 50 đơn vị
  10. Cập nhật số lượng tồn kho của sản phẩm được nhập thêm hàng bằng cách cộng số lượng bổ sung
  11. In báo cáo quản lý tồn kho theo đúng định dạng bên dưới

Ví dụ, nếu tên nhà kho là "Central Warehouse", hàng tồn kho gồm "Laptops" với 25 đơn vị, "Mice" với 150 đơn vị, "Keyboards" với 75 đơn vị, sản phẩm cần kiểm tra là "Laptops", sản phẩm mới cần thêm là "Monitors", sản phẩm cần nhập thêm hàng là "Mice" và số lượng bổ sung là 30, chương trình của bạn cần in ra:

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

Nếu tên nhà kho là "North Storage", hàng tồn kho gồm "Tablets" với 40 đơn vị, "Headphones" với 80 đơn vị, sản phẩm cần kiểm tra là "Smartphones", sản phẩm mới cần thêm là "Tablets", sản phẩm cần nhập thêm hàng là "Headphones" và số lượng bổ sung là 20, chương trình của bạn cần in ra:

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

Nếu tên nhà kho là "South Depot", hàng tồn kho gồm "Printers" với 15 đơn vị, "Scanners" với 35 đơn vị, "Cables" với 200 đơn vị, sản phẩm cần kiểm tra là "Scanners", sản phẩm mới cần thêm là "Webcams", sản phẩm cần nhập thêm hàng là "Printers" và số lượng bổ sung là 45, chương trình của bạn cần in ra:

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

Chương trình của bạn phải dùng containsKey() để xác minh sản phẩm có trong kho hay không, dùng putIfAbsent() để thêm sản phẩm mới an toàn với lượng hàng mặc định là 50 đơn vị, và cập nhật trực tiếp giá trị trong Map để tăng số lượng tồn kho. Hãy tính những mặt hàng có số lượng dưới 30 đơn vị là hàng tồn kho thấp. Tính tổng số đơn vị hàng tồn kho bằng cách cộng tất cả số lượng trong kho cuối cùng. Định dạng đầu vào sẽ là: tên nhà kho, sau đó là tên sản phẩm và số lượng tồn kho xen kẽ (dưới dạng chuỗi cần chuyển thành số nguyên), kết thúc bằng "inventory_done", tiếp theo là sản phẩm cần kiểm tra, sản phẩm mới cần thêm, sản phẩm cần nhập thêm hàng và số lượng bổ sung.

Tự làm thử

import 'dart:io';

void main() {
  // Đọc tên kho
  String? warehouseName = stdin.readLineSync();
  
  // Đọc các mặt hàng tồn kho cho đến khi gặp "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;
  }
  
  // Đọc tên sản phẩm cần kiểm tra
  String? productToCheck = stdin.readLineSync();
  
  // Đọc tên sản phẩm mới cần thêm
  String? newProduct = stdin.readLineSync();
  
  // Đọc tên sản phẩm cần bổ sung hàng
  String? productToRestock = stdin.readLineSync();
  
  // Đọc số lượng cần bổ sung
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: Viết code của bạn bên dưới
  // Dùng containsKey() để kiểm tra sản phẩm có tồn tại không
  // Dùng putIfAbsent() để thêm sản phẩm mới với số lượng tồn kho mặc định là 50
  // Cập nhật số lượng tồn kho và tính các số liệu thống kê hàng tồn kho
  
  // In ra báo cáo quản lý hàng tồn kho
  print("Warehouse: $warehouseName");
  // Thêm các câu lệnh in ra tại đây
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Dart online