Menu
CoddyTech

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.

challenge icon

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:

  1. 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 đó
  2. Đọ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")
  3. 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()
  4. 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()
  5. 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
  6. Cộng tất cả giá để tính tổng chi phí cuối cùng
  7. 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 checkout

Nế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 checkout

Nế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 checkout

Chươ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

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