Menu
CoddyTech

项目设置

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 33 课,共 65 课。

challenge icon

挑战

简单

你将构建一个简单的购物车计算器,演示不同的数据结构如何在实际应用中协同工作。

创建一个程序,通过初始化电子商务应用所需的基本数据结构,为购物车计算器系统搭建基础。你的程序应该:

  1. 读取一个表示商店名称的字符串输入
  2. 读取多组输入,每组包含商品名称和价格(收到 "products_done" 后结束输入)
  3. 创建一个 Map,用商品名称作为键、价格作为值来存储可购买的商品
  4. 创建一个空的 List 来表示购物车
  5. 显示初始设置信息,并确认数据结构已正确初始化
  6. 按照下方所示的准确格式输出商店设置报告

例如,如果商店名称是 "Fresh Market",商品包括价格为 1.50 的 "Apple"、价格为 0.80 的 "Banana"、价格为 2.00 的 "Orange" 和价格为 3.25 的 "Milk",你的程序应该输出:

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

如果商店名称是 "Tech Store",商品包括价格为 999.99 的 "Laptop"、价格为 25.50 的 "Mouse" 和价格为 75.00 的 "Keyboard",你的程序应该输出:

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

如果商店名称是 "Book Corner",商品包括价格为 12.99 的 "Novel"、价格为 4.50 的 "Magazine"、价格为 89.00 的 "Textbook"、价格为 3.99 的 "Comic" 和价格为 15.75 的 "Journal",你的程序应该输出:

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

你的程序必须创建一个键为 String(商品名称)、值为 double(价格)的 Map,并创建一个用于购物车的空 String 列表。通过比较商品 Map 中的所有价格,找出最贵和最便宜的商品。将所有价格相加,再除以商品数量,计算平均价格。显示时将平均价格四舍五入到小数点后 2 位。输入格式为:商店名称,然后依次输入商品名称和价格(以字符串形式输入,需要转换为 double),最后以 "products_done" 结束。

亲手试试

import 'dart:io';

void main() {
  // 读取商店名称
  String? storeName = stdin.readLineSync();
  
  // 初始化数据结构
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // 读取商品,直到遇到 "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!);
    
    // 将商品添加到映射中
    products[productName] = price;
  }
  
  // TODO:在下方编写代码,计算统计数据并生成报告
  
  // 输出商店设置报告
  // 你的输出应与示例中的格式完全一致
}

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器