Menu
Coddy logo textTech

İndirim Uygulama

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

challenge icon

Görev

Kolay

Uygun siparişlere yüzde bazlı indirimler uygulayan bir indirim sistemi ekleyerek alışveriş sepeti hesaplama projesine devam eden bir program oluşturun. Önceki dersteki toplam maliyet hesaplamasının üzerine inşa ederek, 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 öğeleri temsil eden birden fazla dize girişi okuyun (giriş "cart_done" aldığınızda sona erecektir)
  3. Her öğe için, containsKey() kullanarak ürün kataloğunda mevcut olup olmadığını kontrol edin ve geçerli öğeleri sepete ekleyin
  4. Sepetteki tüm öğe 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ına eşitse veya bu tutarı aşıyorsa uygulayın
  8. İndirim miktarını ve indirim uygulandıktan sonraki nihai toplamı hesaplayın
  9. İndirim hesaplama raporunu tam olarak aşağıda gösterilen formatta 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 ve müşteriler "Apple", "Orange", "Milk", "Apple" eklemek istiyorsa, indirim eşiği 5.00 ve indirim yüzdesi 10 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
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

Eğer mağazada 999.99 fiyatıyla "Laptop", 25.50 fiyatıyla "Mouse", 75.00 fiyatıyla "Keyboard" ürünleri varsa ve müşteriler "Mouse", "Keyboard" eklemek istiyorsa, indirim eşiği 150.00 ve indirim yüzdesi 15 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
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

Eğer mağazada 12.99 fiyatıyla "Novel", 4.50 fiyatıyla "Magazine", 89.00 fiyatıyla "Textbook" ürünleri varsa ve müşteriler "Novel", "Textbook", "Magazine", "Novel" eklemek istiyorsa, indirim eşiği 75.00 ve indirim yüzdesi 20 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
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

Programınız önce ara toplamı hesaplamalı, ardından bir koşullu if ifadesi kullanarak bunun indirim eşiğini karşılayıp karşılamadığını veya aşıp aşmadığını kontrol etmelidir. Eşik karşılanırsa, ara toplamı 100'e bölünmüş indirim yüzdesiyle çarparak indirim miktarını hesaplayın. Nihai toplamı elde etmek için indirim miktarını ara toplamdan çıkarın. Tüm parasal değerleri tam olarak 2 ondalık basamak gösterecek şekilde biçimlendirin. Giriş formatı şu şekilde olacaktır: "cart_done" ile biten sepete eklenecek öğe adları, ardından indirim eşik tutarı ve indirim yüzdesi (her ikisi de uygun sayısal türlere dönüştürülmesi gereken dizeler olarak).

Kendin dene

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

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