Array Multi Dimensi

Calista Donna 'Aaqilah
25082010133
Pararel C

package pkg.arraymultidimensi;
import java.util.Scanner;
public class ArrayMultiDimensi {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        boolean programBerjalan = true;
        
        System.out.println("=== SISTEM KASIR WARUNG MAKAN SEDERHANA ===");
        System.out.println("=== MULTI-PEMBELI ===");
        
        // Loop utama untuk multiple pembeli
        while (programBerjalan) {
            // Array untuk menyimpan data pembelian pembeli saat ini
            String[] namaMakanan = new String[10];
            int[] hargaSatuan = new int[10];
            int[] jumlahPorsi = new int[10];
            int[] totalBiaya = new int[10];
            
            int grandTotal = 0;
            int jumlahPembelian = 0;
            boolean transaksiBerjalan = true;
            
            // Daftar menu makanan yang tersedia
            String[] menuMakanan = {
                "Sate Ayam", "Sate Kambing", 
                "Pecel Ayam", "Pecel Lele",
                "Ayam Goreng", "Bebek Goreng",
                "Nasi Goreng", "Mie Goreng",
                "Gado-gado", "Soto Ayam",
                "Es Teh", "Es Jeruk"
            };
            
            int[] hargaMenu = {
                1500, 3000,     // Sate
                12000, 8000,    // Pecel
                10000, 16000,   // Gorengan
                12000, 10000,   // Nasi/Mie Goreng
                8000, 10000,    // Gado-gado & Soto
                3000, 4000      // Minuman
            };
            
            System.out.println("\n=== TRANSAKSI PEMBELI BARU ===");
            System.out.print("Masukkan nama pembeli: ");
            sc.nextLine(); // Membersihkan buffer
            String namaPembeli = sc.nextLine();
            
            System.out.println("\nSelamat datang, " + namaPembeli + "!");
            System.out.println("=== DAFTAR MENU ===");
            System.out.println("============================================");
            System.out.println("No  | Nama Menu\t\t| Harga");
            System.out.println("============================================");
            
            for (int i = 0; i < menuMakanan.length; i++) {
                System.out.printf("%-3d | %-18s | Rp %-8d\n", 
                    (i + 1), menuMakanan[i], hargaMenu[i]);
            }
            System.out.println("============================================");
            
            // Loop transaksi untuk pembeli saat ini
            while (transaksiBerjalan && jumlahPembelian < 10) {
                System.out.println("\n--- Pembelian ke-" + (jumlahPembelian + 1) + " ---");
                
                // Pilih dari menu yang tersedia
                System.out.print("Pilih nomor menu (1-" + menuMakanan.length + "): ");
                int pilihanMenu = sc.nextInt();
                
                // Validasi pilihan menu
                if (pilihanMenu < 1 || pilihanMenu > menuMakanan.length) {
                    System.out.println("Nomor menu tidak valid! Silakan pilih 1-" + menuMakanan.length);
                    continue;
                }
                
                // Ambil data dari menu yang dipilih
                int indexMenu = pilihanMenu - 1;
                namaMakanan[jumlahPembelian] = menuMakanan[indexMenu];
                hargaSatuan[jumlahPembelian] = hargaMenu[indexMenu];
                
                // Tampilkan menu yang dipilih
                System.out.println("Anda memilih: " + menuMakanan[indexMenu] + " - Rp " + hargaMenu[indexMenu]);
                
                // Input jumlah porsi
                System.out.print("Masukkan jumlah porsi: ");
                jumlahPorsi[jumlahPembelian] = sc.nextInt();
                
                // Validasi jumlah porsi
                if (jumlahPorsi[jumlahPembelian] <= 0) {
                    System.out.println("Jumlah porsi harus lebih dari 0! Silakan ulangi.");
                    continue;
                }
                
                // Hitung total biaya untuk item ini
                totalBiaya[jumlahPembelian] = hargaSatuan[jumlahPembelian] * jumlahPorsi[jumlahPembelian];
                
                // Tambahkan ke grand total
                grandTotal += totalBiaya[jumlahPembelian];
                
                // Tampilkan ringkasan pembelian ini
                System.out.println("✓ Berhasil ditambahkan: " + namaMakanan[jumlahPembelian] + 
                                 " x" + jumlahPorsi[jumlahPembelian] + " = Rp " + totalBiaya[jumlahPembelian]);
                
                jumlahPembelian++;
                
                // Tanya apakah mau tambah item lagi
                if (jumlahPembelian < 10) {
                    System.out.print("\nTambah item lagi? (y/t): ");
                    String pilihan = sc.next();
                    if (pilihan.equalsIgnoreCase("t")) {
                        transaksiBerjalan = false;
                    }
                } else {
                    System.out.println("\nMaksimal 10 item pembelian sudah tercapai!");
                    transaksiBerjalan = false;
                }
            }
            
            // Menampilkan struk pembelian untuk pembeli saat ini
            System.out.println("\n\n=== STRUK PEMBELIAN ===");
            System.out.println("Nama Pembeli: " + namaPembeli);
            System.out.println("==================================================");
            System.out.println("No | Nama Makanan\t\t| Harga  | Jumlah | Total");
            System.out.println("==================================================");
            
            for (int i = 0; i < jumlahPembelian; i++) {
                System.out.printf("%-2d | %-18s | Rp %-5d | %-6d | Rp %-7d\n", 
                    (i + 1), 
                    namaMakanan[i], 
                    hargaSatuan[i], 
                    jumlahPorsi[i], 
                    totalBiaya[i]);
            }
            
            System.out.println("==================================================");
            System.out.printf("GRAND TOTAL: Rp %d\n", grandTotal);
            System.out.println("==================================================");
            System.out.println("Total item: " + jumlahPembelian + " jenis makanan");
            System.out.println("Terima kasih " + namaPembeli + "!");
            
            // Tanya apakah mau melayani pembeli baru
            System.out.print("\nLayani pembeli baru? (y/t): ");
            String pilihanLanjut = sc.next();
            if (pilihanLanjut.equalsIgnoreCase("t")) {
                programBerjalan = false;
                System.out.println("\nProgram selesai. Terima kasih!");
            } else {
                System.out.println("\nMempersiapkan transaksi untuk pembeli berikutnya...");
                // Array akan di-reset otomatis karena deklarasi ulang di loop berikutnya
            }
        }
        
        sc.close();
    }
}




Comments