Program Dart I/O Menu Pemesanan Makanan & Minuman
KiyaRaven
dart
9 months ago
2.9 kB
6
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;
}
Editor is loading...
Leave a Comment