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.
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:
- Đọc một chuỗi đầu vào đại diện cho tên cửa hàng
- Đọ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") - 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ị
- Tạo một List trống để biểu thị giỏ hàng
- 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
- 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 customersNế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 customersNế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 customersChươ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
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