Menu
Coddy logo textTech

Adicionando Itens ao Carrinho

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 34 de 65.

challenge icon

Desafio

Fácil

Crie um programa que implemente a funcionalidade de adicionar itens a um carrinho de compras. Seu programa deve usar um Map de catálogo de produtos fixo no código e uma List de carrinho de compras vazia, e então processar as entradas de itens do usuário.

Defina o seguinte catálogo de produtos diretamente em seu código:

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
};

Seu programa deve:

  1. Usar o Map de catálogo de produtos definido acima e uma List de carrinho de compras vazia
  2. Ler múltiplas entradas de string representando itens que os clientes desejam adicionar ao carrinho (a entrada terminará quando você receber "cart_done")
  3. Para cada item, verificar se ele existe no catálogo de produtos usando containsKey()
  4. Se o item existir, adicioná-lo à List do carrinho de compras usando o método add()
  5. Se o item não existir, ignorá-lo e continuar o processamento
  6. Rastrear adições bem-sucedidas e tentativas falhas
  7. Exibir o relatório de gerenciamento do carrinho no formato exato mostrado abaixo

Por exemplo, se os clientes quiserem adicionar "Apple", "Bread", "Banana", "Apple", "Juice", seu programa deve exibir:

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

Se os clientes quiserem adicionar "Mouse", "Monitor", "Keyboard", "Mouse", seu programa deve exibir:

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

Se os clientes quiserem adicionar "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", seu programa deve exibir:

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

Seu programa deve usar containsKey() para verificar se cada item existe no catálogo de produtos antes de adicioná-lo ao carrinho. Use o método add() para anexar itens válidos à List do carrinho de compras. Conte o total de itens no carrinho usando a propriedade length e determine os produtos únicos convertendo o carrinho para um Set e verificando seu tamanho. Rastreie tanto as adições bem-sucedidas quanto os itens que não foram encontrados no catálogo. O formato de entrada será: nomes de itens para adicionar ao carrinho, terminando com "cart_done".

Experimente você mesmo

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');
}

Todas as lições de Lógica & Fluxo