Java Code
1 import [Link];
2
3 // -------------------- KELAS MENU --------------------
4 class Menu {
5 String nama;
6 double harga;
7 String kategori;
8
9 // Constructor
10 public Menu(String nama, double harga, String kategori) {
11 [Link] = nama;
12 [Link] = harga;
13 [Link] = kategori;
14 }
15 }
16
17 // -------------------- KELAS UTAMA --------------------
18 public class Main {
19 public static void main(String[] args) {
20 Scanner input = new Scanner([Link]);
21
22 // a. Data menu makanan dan minuman (menggunakan array)
23 Menu[] makanan = {
24 new Menu("Nasi Padang", 25000, "Makanan"),
25 new Menu("Ayam Geprek", 20000, "Makanan"),
26 new Menu("Mie Goreng Spesial", 22000, "Makanan"),
27 new Menu("Sate Ayam", 30000, "Makanan")
28 };
29
30 Menu[] minuman = {
31 new Menu("Es Teh Manis", 8000, "Minuman"),
32 new Menu("Kopi Hitam", 10000, "Minuman"),
33 new Menu("Jus Alpukat", 15000, "Minuman"),
34 new Menu("Air Mineral", 5000, "Minuman")
35 };
36
37 // b. Tampilkan daftar menu berdasarkan kategori
38 [Link]("===== MENU RESTORAN =====");
39 [Link](">> Makanan:");
40 [Link]("1. " + makanan[0].nama + " - Rp" + makanan[0].harga);
41 [Link]("2. " + makanan[1].nama + " - Rp" + makanan[1].harga);
42 [Link]("3. " + makanan[2].nama + " - Rp" + makanan[2].harga);
43 [Link]("4. " + makanan[3].nama + " - Rp" + makanan[3].harga);
44
45 [Link]("\n>> Minuman:");
46 [Link]("5. " + minuman[0].nama + " - Rp" + minuman[0].harga);
47 [Link]("6. " + minuman[1].nama + " - Rp" + minuman[1].harga);
48 [Link]("7. " + minuman[2].nama + " - Rp" + minuman[2].harga);
49 [Link]("8. " + minuman[3].nama + " - Rp" + minuman[3].harga);
50
51 [Link]("\nSilakan pilih hingga 4 menu (contoh: Nasi Padang =
2)");
52
53 // c. Input pesanan pelanggan (maksimal 4)
54 [Link]("\nMasukkan pesanan 1: ");
55 String pesanan1 = [Link]();
56 [Link]("Masukkan pesanan 2: ") ;
57 String pesanan2 = [Link]();
58 [Link]("Masukkan pesanan 3: ") ;
59 String pesanan3 = [Link]();
60 [Link]("Masukkan pesanan 4: ") ;
61 String pesanan4 = [Link]();
62
63 // Proses pesanan tanpa perulangan
64 double total = 0;
65 total += hitungSubtotal(pesanan1, makanan, minuman);
66 total += hitungSubtotal(pesanan2, makanan, minuman);
67 total += hitungSubtotal(pesanan3, makanan, minuman);
68 total += hitungSubtotal(pesanan4, makanan, minuman);
69
70 // d. Hitung pajak dan biaya layanan
71 double pajak = total * 0.10;
72 double biayaLayanan = 20000;
73
74 // e. Diskon dan promo
75 double diskon = 0;
76 boolean dapatBeliSatuGratisSatu = false;
77
78 if (total > 100000) {
79 diskon = total * 0.10; // Diskon 10%
80 } else if (total > 50000) {
81 dapatBeliSatuGratisSatu = true; // Promo minuman
82 }
83
84 double totalSetelahDiskon = total - diskon;
85 double totalBayar = totalSetelahDiskon + pajak + biayaLayanan;
86
87 // f. Cetak struk
88 [Link]("\n===== STRUK PEMBAYARAN =====");
89 [Link]("Total Pesanan : Rp" + total);
90 [Link]("Pajak (10%) : Rp" + pajak);
91 [Link]("Biaya Layanan : Rp" + biayaLayanan);
92
93 if (diskon > 0) {
94 [Link]("Diskon (10%) : -Rp" + diskon);
95 }
96
97 if (dapatBeliSatuGratisSatu) {
98 [Link]("Promo : Beli 1 Gratis 1 (Minuman)");
99 }
100
101 [Link]("----------------------------");
102 [Link]("TOTAL BAYAR : Rp" + totalBayar);
103 [Link]("============================");
104 [Link]("Terima kasih telah memesan!");
105 }
106
107 // -------------------- METHOD UNTUK MENGHITUNG SUBTOTAL --------------------
108 public static double hitungSubtotal(String pesanan, Menu[] makanan, Menu[] minu
man) {
109 if ([Link]()) return 0;
110
111 String[] bagian = [Link]("=");
112 String namaMenu = bagian[0].trim();
113 int jumlah = [Link](bagian[1].trim());
114
115 // Cari di array makanan
116 if ([Link](makanan[0].nama)) {
117 return makanan[0].harga * jumlah;
118 } else if ([Link](makanan[1].nama)) {
119 return makanan[1].harga * jumlah;
120 } else if ([Link](makanan[2].nama)) {
121 return makanan[2].harga * jumlah;
122 } else if ([Link](makanan[3].nama)) {
123 return makanan[3].harga * jumlah;
124 }
125 // Cari di array minuman
126 else if ([Link](minuman[0].nama)) {
127 return minuman[0].harga * jumlah;
128 } else if ([Link](minuman[1].nama)) {
129 return minuman[1].harga * jumlah;
130 } else if ([Link](minuman[2].nama)) {
131 return minuman[2].harga * jumlah;
132 } else if ([Link](minuman[3].nama)) {
133 return minuman[3].harga * jumlah;
134 } else {
135 [Link]("Menu \"" + namaMenu + "\" tidak ditemukan!");
136 return 0;
137 }
138 }
139 }
140