Tính tổng chi phí
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 35 trên 65.
Thử thách
DễTạo một chương trình tiếp tục dự án tính tiền giỏ hàng bằng cách triển khai chức năng tính tổng chi phí của tất cả mặt hàng trong giỏ. Dựa trên phần quản lý giỏ hàng ở bài học trước, chương trình của bạn cần:
- Sử dụng Map danh mục sản phẩm hiện có và List giỏ hàng đã được điền ở phần thiết lập trước đó
- Đọc nhiều đầu vào dạng chuỗi, đại diện cho các mặt hàng khách hàng muốn thêm vào giỏ hàng (đầu vào sẽ kết thúc khi bạn nhận được
"cart_done") - Với mỗi mặt hàng, kiểm tra xem mặt hàng đó có trong danh mục sản phẩm hay không bằng
containsKey() - Nếu mặt hàng có trong danh mục, thêm mặt hàng đó vào List giỏ hàng bằng phương thức
add() - Tính tổng chi phí bằng cách lặp qua danh sách giỏ hàng và tra cứu giá của từng mặt hàng trong Map sản phẩm
- Cộng tất cả giá để tính tổng chi phí cuối cùng
- Hiển thị báo cáo tính tiền giỏ hàng theo đúng định dạng bên dưới
Ví dụ: nếu cửa hàng có các sản phẩm "Apple" giá 1.50, "Banana" giá 0.80, "Orange" giá 2.00, "Milk" giá 3.25, và khách hàng muốn thêm "Apple", "Banana", "Apple", "Milk", chương trình của bạn cần in ra:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkoutNếu cửa hàng có các sản phẩm "Laptop" giá 999.99, "Mouse" giá 25.50, "Keyboard" giá 75.00, và khách hàng muốn thêm "Mouse", "Keyboard", "Mouse", "Monitor", chương trình của bạn cần in ra:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkoutNếu cửa hàng có các sản phẩm "Novel" giá 12.99, "Magazine" giá 4.50, "Textbook" giá 89.00, và khách hàng muốn thêm "Novel", "Magazine", "Novel", "Textbook", "Dictionary", chương trình của bạn cần in ra:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkoutChương trình của bạn cần lặp qua từng mặt hàng trong danh sách giỏ hàng, tra cứu giá của mặt hàng đó trong Map danh mục sản phẩm, rồi cộng giá vào tổng đang tính. Dùng vòng lặp để xử lý từng mặt hàng trong giỏ và cộng dồn tổng chi phí. Hiển thị giá riêng của từng mặt hàng trong bước tính chi phí. Định dạng tất cả giá sao cho có chính xác 2 chữ số thập phân. Định dạng đầu vào gồm tên các mặt hàng cần thêm vào giỏ hàng, kết thúc bằng "cart_done".
Tự làm thử
import 'dart:io';
void main() {
// Product catalog with items and prices
Map<String, double> productCatalog = {
'Apple': 1.50,
'Banana': 0.80,
'Orange': 2.00,
'Milk': 3.25,
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00,
'Novel': 12.99,
'Magazine': 4.50,
'Textbook': 89.00
};
// Shopping cart to store selected items
List<String> shoppingCart = [];
// Counters for tracking operations
int successfulAdditions = 0;
int itemsNotFound = 0;
print("Shopping Cart Operations:");
// Read items until "cart_done" is received
String? item;
while ((item = stdin.readLineSync()) != "cart_done") {
if (item != null) {
if (productCatalog.containsKey(item)) {
shoppingCart.add(item);
successfulAdditions++;
print("Adding '$item': Item added to cart successfully");
} else {
itemsNotFound++;
print("Adding '$item': Item not available in store");
}
}
}
// Display cart contents
print("Cart Contents: $shoppingCart");
// Calculate unique products
Set<String> uniqueProducts = shoppingCart.toSet();
// Display cart summary
print("Cart Summary:");
print("Total items in cart: ${shoppingCart.length}");
print("Unique products in cart: ${uniqueProducts.length}");
print("Items successfully added: $successfulAdditions");
print("Items not found: $itemsNotFound");
print("Cart Status: Ready for checkout");
}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