Ô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.
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:
- Đọc một chuỗi đầu vào biểu thị tên nhà kho
- Đọ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") - Đọ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
- Đọ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
- Đọc một chuỗi đầu vào biểu thị sản phẩm cần nhập thêm hàng
- Đọ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
- 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ị
- Dùng
containsKey()để kiểm tra sản phẩm được chỉ định có trong kho hay không - Dùng
putIfAbsent()để thêm sản phẩm mới với lượng hàng mặc định là 50 đơn vị - 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
- 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 completedNế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 completedNế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 completedChươ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
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online