Добавление товаров в корзину
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 34 из 65.
Задание
ЛегкоСоздайте программу, которая реализует функциональность добавления товаров в корзину. Ваша программа должна использовать жестко заданный словарь (Map) с каталогом товаров и пустой список (List) для корзины, а затем обрабатывать вводимые пользователем названия товаров.
Определите следующий каталог товаров непосредственно в вашем коде:
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
};Ваша программа должна:
- Использовать определенный выше словарь product catalog и пустой список shopping cart
- Считывать несколько строковых вводов, представляющих товары, которые покупатели хотят добавить в свою корзину (ввод закончится, когда вы получите
"cart_done") - Для каждого товара проверять его наличие в каталоге товаров с помощью
containsKey() - Если товар существует, добавлять его в список shopping cart с помощью метода
add() - Если товара не существует, пропускать его и продолжать обработку
- Отслеживать успешные добавления и неудачные попытки
- Выводить отчет об управлении корзиной в точном формате, показанном ниже
Например, если покупатели хотят добавить "Apple", "Bread", "Banana", "Apple", "Juice", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Bread': Item not available in store
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Juice': Item not available in store
Cart Contents: [Apple, Banana, Apple]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 2
Cart Status: Ready for checkoutЕсли покупатели хотят добавить "Mouse", "Monitor", "Keyboard", "Mouse", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Cart Contents: [Mouse, Keyboard, Mouse]
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Если покупатели хотят добавить "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Comic': Item not available in store
Adding 'Textbook': Item added to cart successfully
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 2
Cart Status: Ready for checkoutВаша программа должна использовать containsKey() для проверки наличия каждого товара в каталоге перед его добавлением в корзину. Используйте метод add() для добавления допустимых товаров в список shopping cart. Подсчитайте общее количество товаров в корзине с помощью свойства length и определите количество уникальных товаров, преобразовав корзину в Set и проверив его длину. Отслеживайте как успешные добавления, так и товары, которые не были найдены в каталоге. Формат ввода: названия товаров для добавления в корзину, заканчивающиеся строкой "cart_done".
Попробуйте сами
import 'dart:io';
void main() {
// Read store name
String? storeName = stdin.readLineSync();
// Initialize data structures
Map<String, double> products = {};
List<String> shoppingCart = [];
// Read products until "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!);
// Add product to map
products[productName] = price;
}
// Calculate statistics
double totalPrice = 0;
double maxPrice = 0;
double minPrice = double.infinity;
String mostExpensiveItem = '';
String cheapestItem = '';
for (String productName in products.keys) {
double price = products[productName]!;
totalPrice += price;
if (price > maxPrice) {
maxPrice = price;
mostExpensiveItem = productName;
}
if (price < minPrice) {
minPrice = price;
cheapestItem = productName;
}
}
double averagePrice = totalPrice / products.length;
// Print the store setup report
print('Store: $storeName');
print('Product Catalog Setup:');
print('Available Products: $products');
print('Shopping Cart Initialized: $shoppingCart');
print('System Status:');
print('Total products available: ${products.length}');
print('Cart status: Empty');
print('Most expensive item: $mostExpensiveItem (\$${maxPrice.toStringAsFixed(2)})');
print('Cheapest item: $cheapestItem (\$${minPrice.toStringAsFixed(2)})');
print('Average product price: \$${averagePrice.toStringAsFixed(2)}');
print('Setup Status: Shopping cart system ready for customers');
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей