nurzain-pradana

Tugas 2 Pemograman Berbasis Desktop - Nur Zain Pradana

May 19th, 2026
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.34 KB | Source Code | 0 0
  1. package id.ac.ut.tugaspemogramandesktop2;
  2.  
  3. import java.text.NumberFormat;
  4. import java.util.Locale;
  5. import java.util.Scanner;
  6.  
  7. /**
  8.  *
  9.  * @author Zain
  10.  */
  11. class Menu {
  12.  
  13.     String nama;
  14.     int harga;
  15.     String kategori;
  16.  
  17.     Menu(String nama, int harga, String kategori) {
  18.         this.nama = nama;
  19.         this.harga = harga;
  20.         this.kategori = kategori;
  21.     }
  22. }
  23.  
  24. public class TugasPemogramanDesktop2 {
  25.  
  26.     static Scanner input = new Scanner(System.in);
  27.  
  28.     static NumberFormat rupiah = NumberFormat.getInstance(new Locale("id", "ID"));
  29.  
  30.     // ================================================================
  31.     // ARRAY MENU
  32.     // ================================================================
  33.     static Menu[] daftarMenu = new Menu[100];
  34.  
  35.     // ================================================================
  36.     // ARRAY PESANAN
  37.     // ================================================================
  38.     static int[] pesananMenu = new int[100];
  39.     static int[] jumlahPesanan = new int[100];
  40.  
  41.     static int jumlahMenu = 8;
  42.  
  43.     static {
  44.         daftarMenu[0] = new Menu("Nasi Padang", 25000, "Makanan");
  45.         daftarMenu[1] = new Menu("Mie Goreng", 20000, "Makanan");
  46.         daftarMenu[2] = new Menu("Ayam Bakar", 30000, "Makanan");
  47.         daftarMenu[3] = new Menu("Sate Ayam", 28000, "Makanan");
  48.  
  49.         daftarMenu[4] = new Menu("Es Teh", 5000, "Minuman");
  50.         daftarMenu[5] = new Menu("Jus Jeruk", 10000, "Minuman");
  51.         daftarMenu[6] = new Menu("Kopi", 8000, "Minuman");
  52.         daftarMenu[7] = new Menu("Air Mineral", 4000, "Minuman");
  53.  
  54.     }
  55.  
  56.     public static void main(String[] args) {
  57.  
  58.         int pilihan;
  59.  
  60.         do {
  61.  
  62.             System.out.println("\n===================================================");
  63.             System.out.println("                RESTORAN ZAIN SEPAKAT");
  64.             System.out.println("===================================================");
  65.  
  66.             System.out.println("1. Pesan Menu");
  67.             System.out.println("2. Kelola Menu");
  68.             System.out.println("0. Keluar");
  69.  
  70.             System.out.println("===================================================");
  71.  
  72.             System.out.print("Pilih Menu :");
  73.             pilihan = input.nextInt();
  74.  
  75.             switch (pilihan) {
  76.  
  77.                 case 1:
  78.                     pesanMenu();
  79.                     break;
  80.  
  81.                 case 2:
  82.                     kelolaMenu();
  83.                     break;
  84.  
  85.                 case 0:
  86.                     System.out.println("Terima Kasih.");
  87.  
  88.                 default:
  89.                     System.out.println("Menu tidak valid!");
  90.             }
  91.  
  92.         } while (pilihan != 0);
  93.     }
  94.  
  95.     // ================================================================
  96.     // TAMPIL MENU
  97.     // ================================================================
  98.     static void tampilMenu() {
  99.  
  100.         System.out.println("\n===================================================");
  101.         System.out.println("                DAFTAR MENU");
  102.         System.out.println("===================================================");
  103.  
  104.         System.out.println("\n---- MAKANAN ----");
  105.  
  106.         for (int i = 0; i < jumlahMenu; i++) {
  107.             if (daftarMenu[i].kategori.equalsIgnoreCase("Makanan")) {
  108.                 System.out.println((i + 1) + ". " + daftarMenu[i].nama + " - Rp. " + rupiah.format(daftarMenu[i].harga));
  109.             }
  110.         }
  111.  
  112.         System.out.println("\n---- MINUMAN ----");
  113.  
  114.         for (int i = 0; i < jumlahMenu; i++) {
  115.             if (daftarMenu[i].kategori.equalsIgnoreCase("Minuman")) {
  116.                 System.out.println((i + 1) + ". " + daftarMenu[i].nama + " - Rp. " + rupiah.format(daftarMenu[i].harga));
  117.             }
  118.         }
  119.  
  120.         System.out.println("===================================================");
  121.  
  122.     }
  123.  
  124.     // ================================================================
  125.     // PESAN MENU
  126.     // ================================================================
  127.     static void pesanMenu() {
  128.  
  129.         tampilMenu();
  130.  
  131.         int indexPesanan = 0;
  132.  
  133.         while (true) {
  134.  
  135.             System.out.println("\nInput 0 untuk selesai.");
  136.  
  137.             System.out.print("Pilih nomor menu: ");
  138.             int pilih = input.nextInt();
  139.  
  140.             // VALIDASI
  141.             while (pilih < 0 || pilih > jumlahMenu) {
  142.                 System.out.println("Nomor menu tidak valid!");
  143.  
  144.                 System.out.print("Masukan ulang: ");
  145.                 pilih = input.nextInt();
  146.             }
  147.  
  148.             if (pilih == 0) {
  149.                 break;
  150.             }
  151.  
  152.             System.out.print("Jumlah Pesanan : ");
  153.             int jumlah = input.nextInt();
  154.  
  155.             pesananMenu[indexPesanan] = pilih - 1;
  156.             jumlahPesanan[indexPesanan] = jumlah;
  157.  
  158.             indexPesanan++;
  159.         }
  160.  
  161.         hitungTotal(indexPesanan);
  162.     }
  163.  
  164.     // ================================================================
  165.     // HITUNG TOTAL
  166.     // ================================================================
  167.     static void hitungTotal(int totalPesanan) {
  168.         int subtotal = 0;
  169.  
  170.         int diskonMinuman = 0;
  171.  
  172.         String bonusMinuman = "";
  173.  
  174.         System.out.println("\n===================================================");
  175.         System.out.println("                STRUK PEMBAYARAN");
  176.         System.out.println("===================================================");
  177.  
  178.         for (int i = 0; i < totalPesanan; i++) {
  179.  
  180.             Menu menu = daftarMenu[pesananMenu[i]];
  181.  
  182.             int totalHarga = menu.harga * jumlahPesanan[i];
  183.  
  184.             subtotal += totalHarga;
  185.  
  186.             System.out.println(menu.nama + " x " + jumlahPesanan[i] + " = Rp. " + rupiah.format(totalHarga));
  187.  
  188.             // PROMO MINUMAN
  189.             if (menu.kategori.equalsIgnoreCase("Minuman")) {
  190.  
  191.                 int gratis = jumlahPesanan[i] / 2;
  192.  
  193.                 if (subtotal > 50000 && gratis > 0) {
  194.                     diskonMinuman += gratis * menu.harga;
  195.  
  196.                     bonusMinuman = menu.nama;
  197.                 }
  198.             }
  199.         }
  200.  
  201.         // DISKON 10%
  202.         int diskon = 0;
  203.  
  204.         if (subtotal > 100000) {
  205.             diskon = subtotal * 10 / 100;
  206.         }
  207.  
  208.         // PAJAK
  209.         int setelahDiskon = subtotal - diskon - diskonMinuman;
  210.  
  211.         int pajak = setelahDiskon * 10 / 100;
  212.  
  213.         int service = 20000;
  214.  
  215.         int totalBayar = setelahDiskon + pajak + service;
  216.  
  217.         // CETAK TOTAL
  218.         System.out.println("---------------------------------------------------");
  219.  
  220.         System.out.println("Subtotal        = Rp. " + rupiah.format(subtotal));
  221.         System.out.println("Diskon 10%      = Rp. " + rupiah.format(diskon));
  222.         System.out.println("Promo Minuman   = Rp. " + rupiah.format(diskonMinuman));
  223.  
  224.         if (diskonMinuman > 0) {
  225.  
  226.             System.out.println("Bonus           = " + bonusMinuman + " GRATIS");
  227.         }
  228.         System.out.println("Pajak           = Rp. " + rupiah.format(pajak));
  229.         System.out.println("Biaya Service   = Rp. " + rupiah.format(service));
  230.  
  231.         System.out.println("---------------------------------------------------");
  232.  
  233.         System.out.println("TOTAL BAYAR     = Rp. " + rupiah.format(totalBayar));
  234.         System.out.println("===================================================");
  235.     }
  236.  
  237.     // ================================================================
  238.     // KELOLA MENU
  239.     // ================================================================
  240.     static void kelolaMenu() {
  241.  
  242.         int pilihan;
  243.  
  244.         do {
  245.  
  246.             System.out.println("\n===================================================");
  247.             System.out.println("                KELOLA MENU");
  248.             System.out.println("===================================================");
  249.  
  250.             System.out.println("1. Tambah Menu");
  251.             System.out.println("2. Ubah Harga Menu");
  252.             System.out.println("3. Hapus Menu");
  253.             System.out.println("4. Lihat Menu");
  254.  
  255.             System.out.println("0. Keluar");
  256.  
  257.             System.out.println("===================================================");
  258.  
  259.             System.out.print("Pilih Menu :");
  260.             pilihan = input.nextInt();
  261.  
  262.             switch (pilihan) {
  263.  
  264.                 case 1:
  265.                     tambahMenu();
  266.                     break;
  267.  
  268.                 case 2:
  269.                     ubahMenu();
  270.                     break;
  271.  
  272.                 case 3:
  273.                     hapusMenu();
  274.                     break;
  275.  
  276.                 case 4:
  277.                     tampilMenu();
  278.                     break;
  279.  
  280.                 case 0:
  281.                     System.out.println("Kembali ke Menu Utama.");
  282.  
  283.                 default:
  284.                     System.out.println("Pilihan tidak valid!");
  285.             }
  286.  
  287.         } while (pilihan != 0);
  288.     }
  289.    
  290.    
  291.     // ================================================================
  292.     // TAMBAH MENU
  293.     // ================================================================
  294.     static void tambahMenu() {
  295.         char tambahLagi;
  296.        
  297.         do {
  298.            
  299.             System.out.print("Nama Menu : ");
  300.             String nama = input.next();
  301.             input.nextLine();
  302.            
  303.             System.out.print("Harga : ");
  304.             int harga = input.nextInt();
  305.             input.nextLine();
  306.            
  307.             System.out.print("Kategori (Makanan/Minuman) : ");
  308.             String kategori = input.nextLine();
  309.            
  310.             daftarMenu[jumlahMenu] = new Menu(nama, harga, kategori);
  311.            
  312.             jumlahMenu++;
  313.            
  314.             System.out.println("Menu berhasil ditambahkan.");
  315.            
  316.             System.out.print("Tambah menu lagi ? (Y/T) : ");
  317.             tambahLagi = input.next().charAt(0);
  318.             input.nextLine();
  319.            
  320.            
  321.         } while (tambahLagi == 'Y' || tambahLagi == 'y');
  322.                
  323.     }
  324.    
  325.     // ================================================================
  326.     // UBAH MENU
  327.     // ================================================================
  328.     static void ubahMenu() {
  329.        
  330.         tampilMenu();
  331.        
  332.         System.out.print("Pilih nomor menu yang diubah : ");
  333.         int nomor = input.nextInt();
  334.        
  335.         while(nomor < 1 || nomor > jumlahMenu) {
  336.             System.out.println("Nomor Menu tidak valid!");
  337.            
  338.             System.out.print("Masukkan Ulang : ");
  339.             nomor = input.nextInt();
  340.         }
  341.        
  342.         Menu menu = daftarMenu[nomor - 1];
  343.        
  344.         System.out.println("Menu dipilih : " + menu.nama);
  345.        
  346.         System.out.print("Yakin ingin mengubah ? (Ya/Tidak) : ");
  347.         String konfirmasi = input.next();
  348.        
  349.         if(konfirmasi.equalsIgnoreCase("Ya")) {
  350.             System.out.print("Harga Baru : ");
  351.             int hargaBaru = input.nextInt();
  352.            
  353.             menu.harga = hargaBaru;
  354.            
  355.             System.out.println("Harga berhasil diubah.");
  356.         } else {
  357.             System.out.println("Perubahan Dibatalkan.");
  358.         }
  359.        
  360.     }
  361.    
  362.     // ================================================================
  363.     // HAPUS MENU
  364.     // ================================================================
  365.     static void hapusMenu() {
  366.        
  367.         tampilMenu();
  368.        
  369.         System.out.print("Pilih nomor menu yang dihapus : ");
  370.         int nomor = input.nextInt();
  371.        
  372.         while (nomor < 1 || nomor > jumlahMenu)
  373.         {
  374.             System.out.println("Nomor menu tidak valid!");
  375.            
  376.             System.out.print("Masukkan ulang : ");
  377.             nomor = input.nextInt();
  378.         }
  379.        
  380.         System.out.println("Menu dipilih : " + daftarMenu[nomor - 1].nama);
  381.        
  382.         System.out.print("Yakin ingin menghapus ? (Ya/Tidak) : ");
  383.         String konfirmasi = input.next();
  384.        
  385.         if(konfirmasi.equalsIgnoreCase("Ya"))
  386.         {
  387.             for(int i = nomor - 1; i < jumlahMenu - 1; i++)
  388.             {
  389.                 daftarMenu[i] = daftarMenu[i +1];
  390.                
  391.             }
  392.            
  393.             jumlahMenu--;
  394.            
  395.             System.out.println("Menu berhasil dihapus.");
  396.         } else {
  397.             System.out.println("Penghapusan dibatalkan.");
  398.         }
  399.        
  400.        
  401.     }
  402. }
  403.  
Advertisement
Add Comment
Please, Sign In to add comment