Dart I/O Menu Pesan Makanan Minuman

 avatar
KiyaRaven
dart
9 days ago
2.0 kB
3
Indexable
import 'dart:io';

void main() {
  List<String> menuMakanan = ['Nasi Goreng', 'Mie Goreng', 'Ayam Penyet', 'Sate', 'Rendang'];
  List<String> menuMinuman = ['Teh', 'Kopi', 'Jus Jeruk', 'Air Mineral', 'Soda'];
  List<double> hargaMakanan = [20000, 15000, 25000, 30000, 40000];
  List<double> hargaMinuman = [5000, 10000, 15000, 3000, 8000];

  double totalHarga = 0;

  while (true) {
    print('=== Menu Pemesanan Makanan & Minuman ===');
    print('1. Pesan Makanan');
    print('2. Pesan Minuman');
    print('3. Lihat Total Harga');
    print('4. Keluar');
    stdout.write('Pilih menu (1/2/3/4): ');
    String? pilihan = stdin.readLineSync();

    if (pilihan == '1') {
      totalHarga += pesan('Makanan', menuMakanan, hargaMakanan);
    } else if (pilihan == '2') {
      totalHarga += pesan('Minuman', menuMinuman, hargaMinuman);
    } else if (pilihan == '3') {
      print('Total harga pesanan: Rp ${totalHarga}');
    } else if (pilihan == '4') {
      print('Terima kasih telah menggunakan layanan kami!');
      break;
    } else {
      print('Pilihan tidak valid. Silakan coba lagi.');
    }
    print('');
  }
}

double pesan(String jenis, List<String> menu, List<double> harga) {
  print('\n=== Menu $jenis ===');
  for (int i = 0; i < menu.length; i++) {
    print('${i + 1}. ${menu[i]} - Rp ${harga[i]}');
  }
  stdout.write('Pilih $jenis (1-${menu.length}): ');
  int? pilihan = int.tryParse(stdin.readLineSync()!);
  
  if (pilihan != null && pilihan > 0 && pilihan <= menu.length) {
    stdout.write('Jumlah pesanan: ');
    int? jumlah = int.tryParse(stdin.readLineSync()!);
    
    if (jumlah != null && jumlah > 0) {
      double total = harga[pilihan - 1] * jumlah;
      print('Total harga $jenis: Rp ${total}');
      return total; 
    } else {
      print('Jumlah pesanan tidak valid.');
    }
  } else {
    print('Pilihan $jenis tidak valid.');
  }
  return 0; 
}
Leave a Comment