Untitled

 avatar
KiyaRaven
dart
6 days ago
2.9 kB
4
Indexable
import 'dart:io';

void main() {
  List<Map<String, dynamic>> menu = [
    {"nama": "Nasi Goreng", "harga": 20000},
    {"nama": "Mie Ayam", "harga": 15000},
    {"nama": "Ayam Geprek", "harga": 18000},
    {"nama": "Es Teh", "harga": 5000},
    {"nama": "Jus Jeruk", "harga": 10000}
  ];

  List<Map<String, dynamic>> keranjang = [];
  int totalHarga = 0;

  while (true) {
    print("\n========== MENU UTAMA ==========");
    print("1. Lihat Menu");
    print("2. Pesan Makanan/Minuman");
    print("3. Lihat Keranjang");
    print("4. Keluar");
    stdout.write("Pilih menu (1-4): ");

    String? pilihan = stdin.readLineSync();

    switch (pilihan) {
      case '1':
        tampilkanMenu(menu);
        break;
      case '2':
        pesanMenu(menu, keranjang);
        totalHarga = hitungTotal(keranjang);
        break;
      case '3':
        tampilkanKeranjang(keranjang, totalHarga);
        break;
      case '4':
        print("\nTerima kasih telah memesan. Sampai jumpa!");
        exit(0);
      default:
        print("Pilihan tidak valid! Silakan pilih kembali.");
    }
  }
}

void tampilkanMenu(List<Map<String, dynamic>> menu) {
  print("\n========== DAFTAR MENU ==========");
  for (int i = 0; i < menu.length; i++) {
    print("${i + 1}. ${menu[i]['nama']} - Rp${menu[i]['harga']}");
  }
}

void pesanMenu(List<Map<String, dynamic>> menu, List<Map<String, dynamic>> keranjang) {
  tampilkanMenu(menu);
  stdout.write("\nMasukkan nomor menu yang ingin dipesan: ");
  String? input = stdin.readLineSync();
  int? nomorMenu = int.tryParse(input ?? '');

  if (nomorMenu != null && nomorMenu > 0 && nomorMenu <= menu.length) {
    stdout.write("Masukkan jumlah pesanan: ");
    String? jumlahInput = stdin.readLineSync();
    int? jumlah = int.tryParse(jumlahInput ?? '');

    if (jumlah != null && jumlah > 0) {
      Map<String, dynamic> item = {
        "nama": menu[nomorMenu - 1]['nama'],
        "harga": menu[nomorMenu - 1]['harga'],
        "jumlah": jumlah
      };
      keranjang.add(item);
      print("\nāœ… ${item['nama']} (${item['jumlah']}x) berhasil ditambahkan ke keranjang!");
    } else {
      print("Jumlah pesanan harus berupa angka positif!");
    }
  } else {
    print("Nomor menu tidak valid!");
  }
}

void tampilkanKeranjang(List<Map<String, dynamic>> keranjang, int totalHarga) {
  if (keranjang.isEmpty) {
    print("\nšŸ›’ Keranjang masih kosong.");
    return;
  }

  print("\n========== KERANJANG ==========");
  for (var item in keranjang) {
    print("${item['nama']} - ${item['jumlah']}x - Rp${item['harga'] * item['jumlah']}");
  }
  print("Total Harga: Rp$totalHarga");
}

int hitungTotal(List<Map<String, dynamic>> keranjang) {
  int total = 0;
  for (var item in keranjang) {
    total += item['harga'] * item['jumlah'];
  }
  return total;
}
Leave a Comment