Menu
CoddyTech

Menerapkan Diskon

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 36 dari 65.

challenge icon

Tantangan

Mudah

Buat program yang melanjutkan proyek kalkulator keranjang belanja dengan menerapkan sistem diskon yang memberikan diskon berdasarkan persentase untuk pesanan yang memenuhi syarat. Berdasarkan perhitungan biaya total dari pelajaran sebelumnya, programmu harus:

  1. Menggunakan Map katalog produk dan fungsi keranjang belanja yang sudah ada dari pengaturan sebelumnya
  2. Membaca beberapa input string yang mewakili barang yang ingin ditambahkan pelanggan ke keranjang mereka (input akan berakhir saat kamu menerima "cart_done")
  3. Untuk setiap barang, memeriksa apakah barang tersebut ada di katalog produk menggunakan containsKey() dan menambahkan barang yang valid ke keranjang
  4. Menghitung subtotal dengan menjumlahkan harga semua barang di keranjang
  5. Membaca input string yang mewakili jumlah ambang batas diskon
  6. Membaca input string yang mewakili persentase diskon yang akan diterapkan
  7. Menerapkan diskon hanya jika subtotal memenuhi atau melebihi jumlah ambang batas
  8. Menghitung jumlah diskon dan total akhir setelah diskon diterapkan
  9. Menampilkan laporan perhitungan diskon dengan format persis seperti yang ditunjukkan di bawah

Contohnya, jika toko memiliki produk "Apple" seharga 1.50, "Banana" seharga 0.80, "Orange" seharga 2.00, "Milk" seharga 3.25, pelanggan ingin menambahkan "Apple", "Orange", "Milk", "Apple", ambang batas diskonnya adalah 5.00, dan persentase diskonnya adalah 10, programmu harus menampilkan:

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

Jika toko memiliki produk "Laptop" seharga 999.99, "Mouse" seharga 25.50, "Keyboard" seharga 75.00, pelanggan ingin menambahkan "Mouse", "Keyboard", ambang batas diskonnya adalah 150.00, dan persentase diskonnya adalah 15, programmu harus menampilkan:

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

Jika toko memiliki produk "Novel" seharga 12.99, "Magazine" seharga 4.50, "Textbook" seharga 89.00, pelanggan ingin menambahkan "Novel", "Textbook", "Magazine", "Novel", ambang batas diskonnya adalah 75.00, dan persentase diskonnya adalah 20, programmu harus menampilkan:

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

Programmu harus menghitung subtotal terlebih dahulu, lalu memeriksa apakah subtotal memenuhi atau melebihi ambang batas diskon menggunakan pernyataan percabangan if. Jika ambang batas terpenuhi, hitung jumlah diskon dengan mengalikan subtotal dengan persentase diskon dibagi 100. Kurangi subtotal dengan jumlah diskon untuk mendapatkan total akhir. Format semua nilai uang agar menampilkan tepat 2 angka di belakang koma. Format inputnya adalah: nama barang yang akan ditambahkan ke keranjang, diakhiri dengan "cart_done", lalu jumlah ambang batas diskon dan persentase diskon (keduanya berupa string yang perlu diubah menjadi tipe numerik yang sesuai).

Coba sendiri

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online