Menu
Coddy logo textTech

Расчет общей стоимости

Часть раздела Логика и управление потоком путешествия по Dart на Coddy. Урок 35 из 65.

challenge icon

Задание

Легко

Создайте программу, которая продолжает проект калькулятора корзины покупок, реализуя функциональность для расчета общей стоимости всех товаров в корзине. Опираясь на управление корзиной из предыдущего урока, ваша программа должна:

  1. Использовать существующий объект Map с каталогом товаров и заполненный объект List с корзиной покупок из предыдущей настройки
  2. Считывать несколько строковых входных данных, представляющих товары, которые покупатели хотят добавить в свою корзину (ввод закончится, когда вы получите "cart_done")
  3. Для каждого товара проверять его наличие в каталоге товаров с помощью containsKey()
  4. Если товар существует, добавлять его в список корзины покупок с помощью метода add()
  5. Рассчитывать общую стоимость, перебирая список корзины и находя цену каждого товара в карте товаров
  6. Суммировать все цены, чтобы получить итоговую общую стоимость
  7. Выводить отчет о расчете корзины в точном формате, показанном ниже

Например, если в магазине есть товары "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");
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Dart