Menu
Coddy logo textTech

Agregar artículos al carrito

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 34 de 65.

challenge icon

Desafío

Fácil

Crea un programa que implemente la funcionalidad para agregar artículos a un carrito de compras. Tu programa debe usar un Map de catálogo de productos predefinido y una List de carrito de compras vacía, luego procesar las entradas de artículos del usuario.

Define el siguiente catálogo de productos directamente en tu 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
};

Tu programa debe:

  1. Usar el Map de catálogo de productos definido anteriormente y una List de carrito de compras vacía
  2. Leer múltiples entradas de cadenas que representan los artículos que los clientes desean agregar a su carrito (la entrada terminará cuando recibas "cart_done")
  3. Para cada artículo, verificar si existe en el catálogo de productos usando containsKey()
  4. Si el artículo existe, agregarlo a la List del carrito de compras usando el método add()
  5. Si el artículo no existe, omitirlo y continuar con el procesamiento
  6. Rastrear las adiciones exitosas y los intentos fallidos
  7. Mostrar el informe de gestión del carrito en el formato exacto que se muestra a continuación

Por ejemplo, si los clientes desean agregar "Apple", "Bread", "Banana", "Apple", "Juice", tu programa debería mostrar:

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

Si los clientes desean agregar "Mouse", "Monitor", "Keyboard", "Mouse", tu programa debería mostrar:

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

Si los clientes desean agregar "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", tu programa debería mostrar:

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

Tu programa debe usar containsKey() para verificar que cada artículo exista en el catálogo de productos antes de agregarlo al carrito. Usa el método add() para añadir artículos válidos a la List del carrito de compras. Cuenta el total de artículos en el carrito usando la propiedad length, y determina los productos únicos convirtiendo el carrito en un Set y verificando su longitud. Rastra tanto las adiciones exitosas como los artículos que no se encontraron en el catálogo. El formato de entrada será: nombres de artículos para agregar al carrito, terminando con "cart_done".

Pruébalo tú mismo

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 las lecciones de Lógica y Flujo