Menu
Coddy logo textTech

Einen Rabatt anwenden

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 36 von 65.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das das Warenkorb-Kalkulator-Projekt fortsetzt, indem es ein Rabattsystem implementiert, das prozentuale Rabatte auf qualifizierte Bestellungen anwendet. Aufbauend auf der Berechnung der Gesamtkosten aus der vorherigen Lektion sollte Ihr Programm Folgendes tun:

  1. Verwenden Sie die vorhandene Produktkatalog-Map und die Warenkorb-Funktionalität aus dem vorherigen Setup
  2. Lesen Sie mehrere String-Eingaben ein, die Artikel darstellen, die Kunden ihrem Warenkorb hinzufügen möchten (die Eingabe endet, wenn Sie "cart_done" erhalten)
  3. Prüfen Sie für jeden Artikel mit containsKey(), ob er im Produktkatalog existiert, und fügen Sie gültige Artikel dem Warenkorb hinzu
  4. Berechnen Sie die Zwischensumme, indem Sie alle Artikelpreise im Warenkorb addieren
  5. Lesen Sie eine String-Eingabe ein, die den Schwellenwert für den Rabatt darstellt
  6. Lesen Sie eine String-Eingabe ein, die den anzuwendenden Rabattsatz in Prozent darstellt
  7. Wenden Sie den Rabatt nur an, wenn die Zwischensumme den Schwellenwert erreicht oder überschreitet
  8. Berechnen Sie den Rabattbetrag und die Endsumme nach Anwendung des Rabatts
  9. Zeigen Sie den Bericht zur Rabattberechnung in dem unten gezeigten exakten Format an

Wenn der Laden beispielsweise die Produkte "Apple" für 1.50, "Banana" für 0.80, "Orange" für 2.00, "Milk" für 3.25 hat, Kunden "Apple", "Orange", "Milk", "Apple" hinzufügen möchten, der Rabatt-Schwellenwert 5.00 beträgt und der Rabattsatz 10 Prozent ist, sollte Ihr Programm Folgendes ausgeben:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Orange': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Cart Contents: [Apple, Orange, Milk, Apple]
Cost Calculation:
Apple: $1.50
Orange: $2.00
Milk: $3.25
Apple: $1.50
Subtotal: $8.25
Discount Analysis:
Threshold: $5.00
Discount Rate: 10%
Subtotal ($8.25) meets threshold requirement
Discount Applied: $0.83
Final Total: $7.42
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 10% discount applied
Cart Status: Ready for checkout

Wenn der Laden die Produkte "Laptop" für 999.99, "Mouse" für 25.50, "Keyboard" für 75.00 hat, Kunden "Mouse", "Keyboard" hinzufügen möchten, der Rabatt-Schwellenwert 150.00 beträgt und der Rabattsatz 15 Prozent ist, sollte Ihr Programm Folgendes ausgeben:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Cart Contents: [Mouse, Keyboard]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Subtotal: $100.50
Discount Analysis:
Threshold: $150.00
Discount Rate: 15%
Subtotal ($100.50) does not meet threshold requirement
Discount Applied: $0.00
Final Total: $100.50
Cart Summary:
Total items in cart: 2
Unique products in cart: 2
Items successfully added: 2
Items not found: 0
Discount Status: No discount applied
Cart Status: Ready for checkout

Wenn der Laden die Produkte "Novel" für 12.99, "Magazine" für 4.50, "Textbook" für 89.00 hat, Kunden "Novel", "Textbook", "Magazine", "Novel" hinzufügen möchten, der Rabatt-Schwellenwert 75.00 beträgt und der Rabattsatz 20 Prozent ist, sollte Ihr Programm Folgendes ausgeben:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Cart Contents: [Novel, Textbook, Magazine, Novel]
Cost Calculation:
Novel: $12.99
Textbook: $89.00
Magazine: $4.50
Novel: $12.99
Subtotal: $119.48
Discount Analysis:
Threshold: $75.00
Discount Rate: 20%
Subtotal ($119.48) meets threshold requirement
Discount Applied: $23.90
Final Total: $95.58
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Discount Status: 20% discount applied
Cart Status: Ready for checkout

Ihr Programm muss zuerst die Zwischensumme berechnen und dann mit einer bedingten if-Anweisung prüfen, ob sie den Rabatt-Schwellenwert erreicht oder überschreitet. Wenn der Schwellenwert erreicht ist, berechnen Sie den Rabattbetrag, indem Sie die Zwischensumme mit dem Rabattsatz multiplizieren und durch 100 dividieren. Ziehen Sie den Rabattbetrag von der Zwischensumme ab, um die Endsumme zu erhalten. Formatieren Sie alle Geldwerte so, dass sie genau 2 Dezimalstellen anzeigen. Das Eingabeformat ist: Artikelnamen, die dem Warenkorb hinzugefügt werden sollen, endend mit "cart_done", gefolgt vom Rabatt-Schwellenwert und dem Rabattsatz (beides als Strings, die in entsprechende numerische Typen umgewandelt werden müssen).

Probier es selbst

import 'dart:io';

void main() {
  // Product catalog with prices
  Map<String, double> products = {
    '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 list
  List<String> cart = [];
  
  // Counters for summary
  int itemsAdded = 0;
  int itemsNotFound = 0;
  
  print('Shopping Cart Operations:');
  
  // Read items until "cart_done"
  String? item;
  while ((item = stdin.readLineSync()) != 'cart_done') {
    if (item != null) {
      if (products.containsKey(item)) {
        cart.add(item);
        print("Adding '$item': Item added to cart successfully");
        itemsAdded++;
      } else {
        print("Adding '$item': Item not available in store");
        itemsNotFound++;
      }
    }
  }
  
  // Display cart contents
  print('Cart Contents: $cart');
  
  // Calculate total cost
  print('Cost Calculation:');
  double totalCost = 0.0;
  
  for (String cartItem in cart) {
    double price = products[cartItem]!;
    totalCost += price;
    print('$cartItem: \$${price.toStringAsFixed(2)}');
  }
  
  print('Total Cost: \$${totalCost.toStringAsFixed(2)}');
  
  // Cart summary
  Set<String> uniqueProducts = cart.toSet();
  print('Cart Summary:');
  print('Total items in cart: ${cart.length}');
  print('Unique products in cart: ${uniqueProducts.length}');
  print('Items successfully added: $itemsAdded');
  print('Items not found: $itemsNotFound');
  print('Cart Status: Ready for checkout');
}

Alle Lektionen in Logik & Ablauf