Расчет общей стоимости
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 35 из 65.
Задание
ЛегкоСоздайте программу, которая продолжает проект калькулятора корзины покупок, реализуя функциональность для расчета общей стоимости всех товаров в корзине. Опираясь на управление корзиной из предыдущего урока, ваша программа должна:
- Использовать существующий объект Map с каталогом товаров и заполненный объект List с корзиной покупок из предыдущей настройки
- Считывать несколько строковых входных данных, представляющих товары, которые покупатели хотят добавить в свою корзину (ввод закончится, когда вы получите
"cart_done") - Для каждого товара проверять его наличие в каталоге товаров с помощью
containsKey() - Если товар существует, добавлять его в список корзины покупок с помощью метода
add() - Рассчитывать общую стоимость, перебирая список корзины и находя цену каждого товара в карте товаров
- Суммировать все цены, чтобы получить итоговую общую стоимость
- Выводить отчет о расчете корзины в точном формате, показанном ниже
Например, если в магазине есть товары "Apple" по цене 1.50, "Banana" по цене 0.80, "Orange" по цене 2.00, "Milk" по цене 3.25, и покупатели хотят добавить "Apple", "Banana", "Apple", "Milk", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkoutЕсли в магазине есть товары "Laptop" по цене 999.99, "Mouse" по цене 25.50, "Keyboard" по цене 75.00, и покупатели хотят добавить "Mouse", "Keyboard", "Mouse", "Monitor", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
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" по цене 12.99, "Magazine" по цене 4.50, "Textbook" по цене 89.00, и покупатели хотят добавить "Novel", "Magazine", "Novel", "Textbook", "Dictionary", ваша программа должна вывести:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkoutВаша программа должна перебирать каждый элемент в списке корзины покупок, искать его цену в карте каталога товаров и прибавлять эту цену к текущей сумме. Используйте цикл для обработки каждого товара в корзине и накопления общей стоимости. Выводите индивидуальную цену каждого товара на этапе расчета стоимости. Форматируйте все цены так, чтобы они отображали ровно 2 знака после запятой. Формат ввода будет следующим: названия товаров для добавления в корзину, заканчивающиеся строкой "cart_done".
Попробуйте сами
import 'dart:io';
void main() {
// Product catalog with items and prices
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
};
// Shopping cart to store selected items
List<String> shoppingCart = [];
// Counters for tracking operations
int successfulAdditions = 0;
int itemsNotFound = 0;
print("Shopping Cart Operations:");
// Read items until "cart_done" is received
String? item;
while ((item = stdin.readLineSync()) != "cart_done") {
if (item != null) {
if (productCatalog.containsKey(item)) {
shoppingCart.add(item);
successfulAdditions++;
print("Adding '$item': Item added to cart successfully");
} else {
itemsNotFound++;
print("Adding '$item': Item not available in store");
}
}
}
// Display cart contents
print("Cart Contents: $shoppingCart");
// Calculate unique products
Set<String> uniqueProducts = shoppingCart.toSet();
// Display cart summary
print("Cart Summary:");
print("Total items in cart: ${shoppingCart.length}");
print("Unique products in cart: ${uniqueProducts.length}");
print("Items successfully added: $successfulAdditions");
print("Items not found: $itemsNotFound");
print("Cart Status: Ready for checkout");
}Все уроки раздела Логика и управление потоком
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Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей