Menu
CoddyTech

Thiết lập dự án

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 33 trên 65.

challenge icon

Thử thách

Dễ

Bạn sẽ xây dựng một bộ tính giỏ hàng đơn giản, minh họa cách các cấu trúc dữ liệu khác nhau phối hợp với nhau trong một ứng dụng thực tế.

Tạo một chương trình thiết lập nền tảng cho hệ thống tính giỏ hàng bằng cách khởi tạo các cấu trúc dữ liệu thiết yếu cần thiết cho một ứng dụng thương mại điện tử. Chương trình của bạn cần:

  1. Đọc một chuỗi đầu vào đại diện cho tên cửa hàng
  2. Đọc nhiều cặp dữ liệu đầu vào đại diện cho tên sản phẩm và giá của chúng (đầu vào sẽ kết thúc khi bạn nhận được "products_done")
  3. Tạo một Map để lưu các sản phẩm hiện có, dùng tên sản phẩm làm khóa và giá làm giá trị
  4. Tạo một List trống để biểu thị giỏ hàng
  5. Hiển thị thông tin thiết lập ban đầu và xác nhận các cấu trúc dữ liệu đã được khởi tạo chính xác
  6. In báo cáo thiết lập cửa hàng theo đúng định dạng bên dưới

Ví dụ, nếu tên cửa hàng là "Fresh Market" và các sản phẩm gồm "Apple" có giá 1.50, "Banana" có giá 0.80, "Orange" có giá 2.00, "Milk" có giá 3.25, chương trình của bạn sẽ in ra:

Store: Fresh Market
Product Catalog Setup:
Available Products: {Apple: 1.5, Banana: 0.8, Orange: 2.0, Milk: 3.25}
Shopping Cart Initialized: []
System Status:
Total products available: 4
Cart status: Empty
Most expensive item: Milk ($3.25)
Cheapest item: Banana ($0.80)
Average product price: $1.84
Setup Status: Shopping cart system ready for customers

Nếu tên cửa hàng là "Tech Store" và các sản phẩm gồm "Laptop" có giá 999.99, "Mouse" có giá 25.50, "Keyboard" có giá 75.00, chương trình của bạn sẽ in ra:

Store: Tech Store
Product Catalog Setup:
Available Products: {Laptop: 999.99, Mouse: 25.5, Keyboard: 75.0}
Shopping Cart Initialized: []
System Status:
Total products available: 3
Cart status: Empty
Most expensive item: Laptop ($999.99)
Cheapest item: Mouse ($25.50)
Average product price: $366.83
Setup Status: Shopping cart system ready for customers

Nếu tên cửa hàng là "Book Corner" và các sản phẩm gồm "Novel" có giá 12.99, "Magazine" có giá 4.50, "Textbook" có giá 89.00, "Comic" có giá 3.99, "Journal" có giá 15.75, chương trình của bạn sẽ in ra:

Store: Book Corner
Product Catalog Setup:
Available Products: {Novel: 12.99, Magazine: 4.5, Textbook: 89.0, Comic: 3.99, Journal: 15.75}
Shopping Cart Initialized: []
System Status:
Total products available: 5
Cart status: Empty
Most expensive item: Textbook ($89.00)
Cheapest item: Comic ($3.99)
Average product price: $25.25
Setup Status: Shopping cart system ready for customers

Chương trình của bạn phải tạo một Map có khóa kiểu String (tên sản phẩm) và giá trị kiểu double (giá), cùng một List String trống cho giỏ hàng. Tìm sản phẩm đắt nhất và rẻ nhất bằng cách so sánh tất cả giá trong Map sản phẩm. Tính giá trung bình bằng cách chia tổng tất cả giá cho số lượng sản phẩm. Làm tròn giá trung bình đến 2 chữ số thập phân khi hiển thị. Định dạng đầu vào sẽ là: tên cửa hàng, sau đó là các cặp tên sản phẩm và giá xen kẽ (giá được nhập dưới dạng chuỗi cần chuyển đổi sang số thực), kết thúc bằng "products_done".

Tự làm thử

import 'dart:io';

void main() {
  // Đọc tên cửa hàng
  String? storeName = stdin.readLineSync();
  
  // Khởi tạo các cấu trúc dữ liệu
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // Đọc các sản phẩm cho đến khi gặp "products_done"
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "products_done") {
      break;
    }
    String productName = input!;
    String? priceInput = stdin.readLineSync();
    double price = double.parse(priceInput!);
    
    // Thêm sản phẩm vào map
    products[productName] = price;
  }
  
  // TODO: Viết code bên dưới để tính toán số liệu thống kê và tạo báo cáo
  
  // In ra báo cáo thiết lập cửa hàng
  // Đầu ra phải đúng định dạng trong các ví dụ
}

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