Menu
Coddy logo textTech

Добавление товаров в корзину

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

challenge icon

Задание

Легко

Создайте программу, которая реализует функциональность добавления товаров в корзину. Ваша программа должна использовать жестко заданный словарь (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
};

Ваша программа должна:

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

Например, если покупатели хотят добавить "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');
}

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