Menu
Coddy logo textTech

Son Fişi Görüntüleme

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 37 / 65.

challenge icon

Görev

Kolay

Profesyonel bir formatta tüm işlem ayrıntılarını görüntüleyen kapsamlı bir son makbuz oluşturarak alışveriş sepeti hesaplayıcı projesini tamamlayan bir program oluşturun. Önceki dersteki indirim sistemini temel alan programınız şunları yapmalıdır:

  1. Önceki kurulumdaki mevcut ürün kataloğu Map'ini ve alışveriş sepeti işlevselliğini kullanmak
  2. Müşterilerin sepetlerine eklemek istediği öğeleri temsil eden birden çok string girdisini okumak (girdi, "cart_done" alındığında sona erecektir)
  3. Her öğe için containsKey() kullanarak ürün kataloğunda mevcut olup olmadığını kontrol etmek ve geçerli öğeleri sepete eklemek
  4. Sepetteki tüm öğe fiyatlarını toplayarak ara toplamı hesaplamak
  5. İndirim eşiği tutarını temsil eden bir string girdisi okumak
  6. Uygulanacak indirim yüzdesini temsil eden bir string girdisi okumak
  7. İndirimi yalnızca ara toplam eşik tutarına eşit veya bundan büyükse uygulamak
  8. İndirim tutarını ve indirim uygulandıktan sonraki son toplamı hesaplamak
  9. Müşteri adını temsil eden bir string girdisi okumak
  10. İşlem kimliğini temsil eden bir string girdisi okumak
  11. Aşağıda gösterilen tam biçimde tüm işlem ayrıntılarını içeren eksiksiz bir makbuz oluşturmak ve görüntülemek

Örneğin mağazada "Apple" fiyatı 1.50, "Banana" fiyatı 0.80, "Orange" fiyatı 2.00, "Milk" fiyatı 3.25 olan ürünler varsa, müşteriler sepete "Apple", "Orange", "Milk", "Apple" eklemek istiyorsa, indirim eşiği 5.00, indirim yüzdesi 10, müşteri adı "John Smith" ve işlem kimliği "TXN001" ise programınız şunları üretmelidir:

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
========================================
           FINAL RECEIPT
========================================
Transaction ID: TXN001
Customer: John Smith
Date: 2024-01-15
Time: 14:30:25
----------------------------------------
ITEMS PURCHASED:
Apple                           $1.50
Orange                          $2.00
Milk                            $3.25
Apple                           $1.50
----------------------------------------
Subtotal:                       $8.25
Discount (10%):                -$0.83
----------------------------------------
TOTAL:                          $7.42
----------------------------------------
Payment Method: Cash
Items Count: 4
Unique Products: 3
Thank you for shopping with us!
========================================

Mağazada "Laptop" fiyatı 999.99, "Mouse" fiyatı 25.50, "Keyboard" fiyatı 75.00 olan ürünler varsa, müşteriler sepete "Mouse", "Keyboard" eklemek istiyorsa, indirim eşiği 150.00, indirim yüzdesi 15, müşteri adı "Sarah Johnson" ve işlem kimliği "TXN002" ise programınız şunları üretmelidir:

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
========================================
           FINAL RECEIPT
========================================
Transaction ID: TXN002
Customer: Sarah Johnson
Date: 2024-01-15
Time: 14:30:25
----------------------------------------
ITEMS PURCHASED:
Mouse                          $25.50
Keyboard                       $75.00
----------------------------------------
Subtotal:                     $100.50
Discount (15%):                $0.00
----------------------------------------
TOTAL:                        $100.50
----------------------------------------
Payment Method: Cash
Items Count: 2
Unique Products: 2
Thank you for shopping with us!
========================================

Mağazada "Novel" fiyatı 12.99, "Magazine" fiyatı 4.50, "Textbook" fiyatı 89.00 olan ürünler varsa, müşteriler sepete "Novel", "Textbook", "Magazine", "Novel" eklemek istiyorsa, indirim eşiği 75.00, indirim yüzdesi 20, müşteri adı "Mike Davis" ve işlem kimliği "TXN003" ise programınız şunları üretmelidir:

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
========================================
           FINAL RECEIPT
========================================
Transaction ID: TXN003
Customer: Mike Davis
Date: 2024-01-15
Time: 14:30:25
----------------------------------------
ITEMS PURCHASED:
Novel                          $12.99
Textbook                       $89.00
Magazine                        $4.50
Novel                          $12.99
----------------------------------------
Subtotal:                     $119.48
Discount (20%):               -$23.90
----------------------------------------
TOTAL:                         $95.58
----------------------------------------
Payment Method: Cash
Items Count: 4
Unique Products: 3
Thank you for shopping with us!
========================================

Programınız son makbuzu uygun hizalama ve boşluklarla biçimlendirmelidir. Müşteri bilgileri, kalem bazında satın alımlar, fiyat hesaplamaları ve özet istatistikleri de dahil olmak üzere tüm işlem ayrıntılarını görüntülemek için string interpolation kullanın. Makbuz, tarih (2024-01-15), saat (14:30:25) ve ödeme yöntemi (Cash) için sabit değerler içermelidir. Tüm para değerlerini tam olarak 2 ondalık basamak gösterecek şekilde biçimlendirin. Öğe sayısını sepet uzunluğunu kullanarak, benzersiz ürünleri ise sepeti bir Set'e dönüştürerek hesaplayın. Girdi biçimi şu şekilde olacaktır: "cart_done" ile sona eren, sepete eklenecek öğe adları; ardından indirim eşiği tutarı, indirim yüzdesi, müşteri adı ve işlem kimliği (tümü string olarak).

Kendin dene

import 'dart:io';

void main() {
  // Product catalog
  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
  };
  
  List<String> cart = [];
  int itemsAdded = 0;
  int itemsNotFound = 0;
  
  print('Shopping Cart Operations:');
  
  // Read items until "cart_done"
  while (true) {
    String? item = stdin.readLineSync();
    if (item == 'cart_done') break;
    
    if (products.containsKey(item)) {
      cart.add(item!);
      print("Adding '$item': Item added to cart successfully");
      itemsAdded++;
    } else {
      print("Adding '$item': Item not found in catalog");
      itemsNotFound++;
    }
  }
  
  print('Cart Contents: $cart');
  
  // Calculate subtotal
  print('Cost Calculation:');
  double subtotal = 0.0;
  for (String item in cart) {
    double price = products[item]!;
    print('$item: \$${price.toStringAsFixed(2)}');
    subtotal += price;
  }
  print('Subtotal: \$${subtotal.toStringAsFixed(2)}');
  
  // Read discount threshold and percentage
  String? thresholdInput = stdin.readLineSync();
  String? discountPercentageInput = stdin.readLineSync();
  
  double threshold = double.parse(thresholdInput!);
  int discountPercentage = int.parse(discountPercentageInput!);
  
  // Discount analysis
  print('Discount Analysis:');
  print('Threshold: \$${threshold.toStringAsFixed(2)}');
  print('Discount Rate: $discountPercentage%');
  
  double discountAmount = 0.0;
  double finalTotal = subtotal;
  String discountStatus = 'No discount applied';
  
  if (subtotal >= threshold) {
    print('Subtotal (\$${subtotal.toStringAsFixed(2)}) meets threshold requirement');
    discountAmount = subtotal * (discountPercentage / 100);
    finalTotal = subtotal - discountAmount;
    discountStatus = '$discountPercentage% discount applied';
  } else {
    print('Subtotal (\$${subtotal.toStringAsFixed(2)}) does not meet threshold requirement');
  }
  
  print('Discount Applied: \$${discountAmount.toStringAsFixed(2)}');
  print('Final Total: \$${finalTotal.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('Discount Status: $discountStatus');
  print('Cart Status: Ready for checkout');
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi