Menu
Coddy logo textTech

Ajout d'articles au panier

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 34 sur 65.

challenge icon

Défi

Facile

Créez un programme qui implémente la fonctionnalité d'ajout d'articles à un panier d'achat. Votre programme doit utiliser une Map de catalogue de produits codée en dur et une List de panier d'achat vide, puis traiter les entrées d'articles de l'utilisateur.

Définissez le catalogue de produits suivant directement dans votre code :

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

Votre programme doit :

  1. Utiliser la Map de catalogue de produits définie ci-dessus et une List de panier d'achat vide
  2. Lire plusieurs entrées de chaînes de caractères représentant les articles que les clients souhaitent ajouter à leur panier (l'entrée se terminera lorsque vous recevrez "cart_done")
  3. Pour chaque article, vérifier s'il existe dans le catalogue de produits en utilisant containsKey()
  4. Si l'article existe, l'ajouter à la List du panier d'achat en utilisant la méthode add()
  5. Si l'article n'existe pas, l'ignorer et continuer le traitement
  6. Suivre les ajouts réussis et les tentatives échouées
  7. Afficher le rapport de gestion du panier dans le format exact indiqué ci-dessous

Par exemple, si les clients souhaitent ajouter "Apple", "Bread", "Banana", "Apple", "Juice", votre programme doit afficher :

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 les clients souhaitent ajouter "Mouse", "Monitor", "Keyboard", "Mouse", votre programme doit afficher :

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 les clients souhaitent ajouter "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", votre programme doit afficher :

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

Votre programme doit utiliser containsKey() pour vérifier que chaque article existe dans le catalogue de produits avant de l'ajouter au panier. Utilisez la méthode add() pour ajouter les articles valides à la List du panier d'achat. Comptez le nombre total d'articles dans le panier à l'aide de la propriété length, et déterminez les produits uniques en convertissant le panier en un Set et en vérifiant sa taille. Suivez à la fois les ajouts réussis et les articles qui n'ont pas été trouvés dans le catalogue. Le format d'entrée sera : les noms des articles à ajouter au panier, se terminant par "cart_done".

Essayez vous-même

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

Toutes les leçons de Logique & Flux