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

Tüm işlem ayrıntılarını profesyonel bir formatta görüntüleyen kapsamlı bir final makbuzu oluşturarak alışveriş sepeti hesaplayıcı projesini tamamlayan bir program oluşturun. Önceki dersin indirim sistemini temel alarak programınız şunları yapmalıdır:

  1. Önceki kurulumdaki mevcut ürün kataloğu Map yapısını ve alışveriş sepeti işlevselliğini kullanın
  2. Müşterilerin sepetlerine eklemek istedikleri ürünleri temsil eden birden fazla dize girişi okuyun (giriş "cart_done" ifadesini aldığınızda sona erecektir)
  3. Her bir ürün için, containsKey() kullanarak ürün kataloğunda mevcut olup olmadığını kontrol edin ve geçerli ürünleri sepete ekleyin
  4. Sepetteki tüm ürün fiyatlarını toplayarak ara toplamı hesaplayın
  5. İndirim eşik tutarını temsil eden bir dize girişi okuyun
  6. Uygulanacak indirim yüzdesini temsil eden bir dize girişi okuyun
  7. İndirimi yalnızca ara toplam eşik tutarını karşılıyorsa veya aşıyorsa uygulayın
  8. İndirim uygulandıktan sonra indirim tutarını ve nihai toplamı hesaplayın
  9. Müşteri adını temsil eden bir dize girişi okuyun
  10. İşlem kimliğini (transaction ID) temsil eden bir dize girişi okuyun
  11. Tüm işlem ayrıntılarını içeren eksiksiz bir makbuzu aşağıda gösterilen tam formatta oluşturun ve görüntüleyin

Örneğin, mağazada 1.50 fiyatıyla "Apple", 0.80 fiyatıyla "Banana", 2.00 fiyatıyla "Orange", 3.25 fiyatıyla "Milk" ürünleri varsa; müşteriler "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 şu çıktıyı vermelidir:

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!
========================================

Eğer mağazada 999.99 fiyatıyla "Laptop", 25.50 fiyatıyla "Mouse", 75.00 fiyatıyla "Keyboard" ürünleri varsa; müşteriler "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 şu çıktıyı vermelidir:

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!
========================================

Eğer mağazada 12.99 fiyatıyla "Novel", 4.50 fiyatıyla "Magazine", 89.00 fiyatıyla "Textbook" ürünleri varsa; müşteriler "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 şu çıktıyı vermelidir:

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 final makbuzunu uygun hizalama ve boşluklarla formatlamalıdır. Müşteri bilgileri, kalem kalem satın alınanlar, fiyatlandırma hesaplamaları ve özet istatistikler dahil tüm işlem ayrıntılarını görüntülemek için dize enterpolasyonu (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 parasal değerleri tam olarak 2 ondalık basamak gösterecek şekilde formatlayın. Ürün sayısını sepet uzunluğunu kullanarak, benzersiz ürünleri ise sepeti bir Set yapısına dönüştürerek hesaplayın. Giriş formatı şu şekilde olacaktır: "cart_done" ile biten sepete eklenecek ürün adları, ardından indirim eşik tutarı, indirim yüzdesi, müşteri adı ve işlem kimliği (tümü dize 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