Anda diminta untuk membuat sebuah program Java mengenai aplikasi sederhana di sebuah restoran makanan. Aplikasi tersebut memiliki beberapa fungsi:
Input Menu Restoran: Program harus memiliki data menu makanan dan minuman beserta harganya. Data ini dapat disimpan dalam sebuah array. Setiap item menu harus memiliki nama, harga, dan kategori (makanan, minuman).
Pemesanan: Program harus memungkinkan pelanggan untuk memesan makanan dan minuman berdasarkan daftar menu yang ditampilkan sebelumnya. Pelanggan dapat memasukkan menu-menu yang ingin mereka pesan (maksimal 4 menu) dan menyertakan jumlahnya.
Contoh format input pemesanan:
Nasi Padang = 2
Menghitung Total Biaya: Program harus dapat menghitung total biaya pesanan berdasarkan item-menu yang dipilih dan jumlahnya. Total Biaya keseluruhan pesanan ditambahkan dengan biaya pajak 10% dari total biaya keseluruhan dan biaya pelayanan sebesar Rp. 20.000,-. Selain itu, restoran ini juga menerapkan diskon atau penawaran khusus:
Diskon 10% jika total biaya keseluruhan pesanan melebihi Rp 100.000,-
Penawaran beli satu gratis satu untuk salah satu kategori minuman jika total biaya keseluruhan pesanan melebihi Rp 50.000
Mencetak Struk Pesanan: Program harus dapat mencetak struk pesanan yang mencantumkan item-menu yang dipesan, jumlahnya, harga per item, total harga per item, total biaya pemesanan, informasi pajak dan biaya pajak, dan biaya pelayanan. jika ada diskon dan harga setelah diskon / penawaran , tampilkan informasinya ke dalam struk pembayaran.
Jawaban:
import java.util.*;
class Menu {
String nama;
int harga;
String kategori;
public Menu(String nama, int harga, String kategori) {
this.nama = nama;
this.harga = harga;
this.kategori = kategori;
}
}
class Pesanan {
Menu menu;
int jumlah;
public Pesanan(Menu menu, int jumlah) {
this.menu = menu;
this.jumlah = jumlah;
}
public int hitungSubTotal() {
return menu.harga * jumlah;
}
}
class Restoran {
List<Menu> daftarMenu = new ArrayList<>();
List<Pesanan> daftarPesanan = new ArrayList<>();
final int BIAYA_PELAYANAN = 20000;
final double PAJAK = 0.1;
public void tambahMenu(String nama, int harga, String kategori) {
daftarMenu.add(new Menu(nama, harga, kategori));
}
public void buatPesanan(String namaMenu, int jumlah) {
for (Menu menu : daftarMenu) {
if (menu.nama.equals(namaMenu)) {
daftarPesanan.add(new Pesanan(menu, jumlah));
break;
}
}
}
public void cetakStruk() {
int totalBiaya = 0;
System.out.println("Struk Pesanan:");
for (Pesanan pesanan : daftarPesanan) {
int subTotal = pesanan.hitungSubTotal();
System.out.println(pesanan.menu.nama + " x " + pesanan.jumlah + " = Rp" + subTotal);
totalBiaya += subTotal;
}
System.out.println("Total Biaya: Rp" + totalBiaya);
System.out.println("Biaya Pelayanan: Rp" + BIAYA_PELAYANAN);
double pajak = totalBiaya * PAJAK;
System.out.println("Pajak: Rp" + pajak);
totalBiaya += BIAYA_PELAYANAN + pajak;
System.out.println("Total Biaya Keseluruhan: Rp" + totalBiaya);
if (totalBiaya > 100000) {
double diskon = totalBiaya * 0.1;
System.out.println("Diskon 10%: Rp" + diskon);
totalBiaya -= diskon;
System.out.println("Total Biaya Setelah Diskon: Rp" + totalBiaya);
}
if (totalBiaya > 50000) {
System.out.println("Penawaran Spesial: Beli satu gratis satu untuk minuman");
}
}
}