项目设置
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 33 课,共 65 课。
挑战
简单你将构建一个简单的购物车计算器,演示不同的数据结构如何在实际应用中协同工作。
创建一个程序,通过初始化电子商务应用所需的基本数据结构,为购物车计算器系统搭建基础。你的程序应该:
- 读取一个表示商店名称的字符串输入
- 读取多组输入,每组包含商品名称和价格(收到
"products_done"后结束输入) - 创建一个 Map,用商品名称作为键、价格作为值来存储可购买的商品
- 创建一个空的 List 来表示购物车
- 显示初始设置信息,并确认数据结构已正确初始化
- 按照下方所示的准确格式输出商店设置报告
例如,如果商店名称是 "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 在线编译器