redo21

tugas 6

Dec 4th, 2021
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.81 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Tugas6 {
  4.     static Scanner sc = new Scanner(System.in);
  5.  
  6.     static String[] history = new String[100];
  7.     static int historySize = 0;
  8.     static double[] hargaTotal = new double[100];
  9.  
  10.     public static void main(String[] args) {
  11.         int pilihan;
  12.  
  13.         do {
  14.             System.out.println("SELAMAT DATANG DI UB MART");
  15.             System.out.println(
  16.                     "Menu:\n" +
  17.                             "1. Berbelanja\n" +
  18.                             "2. Laundry\n" +
  19.                             "3. Lihat History\n" +
  20.                             "4. Keluar"
  21.             );
  22.             System.out.print("Pilihan anda: ");
  23.             pilihan = Integer.parseInt(sc.nextLine());
  24.             switch (pilihan) {
  25.                 case 1:
  26.                     belanjaAction();
  27.                     break;
  28.                 case 2:
  29.                     laundryAction();
  30.                     break;
  31.                 case 3:
  32.                     showHistory();
  33.                     break;
  34.                 case 4:
  35.                     /*
  36.                     Untuk keluar dari program, bisa ditambahkan penutup
  37.                     (opsional)
  38.                     */
  39.                     break;
  40.             }
  41.         } while (pilihan != 4);
  42.     }
  43.  
  44.     static void belanjaAction() {
  45.         System.out.println();
  46.         System.out.printf("%-40s %4s", "Masukkan banyak barang yang ingin dibeli", ": ");
  47.         int jml_barang = sc.nextInt();
  48.         sc.nextLine();
  49.         //deklarasi
  50.         int totalJumlahBarang = 0;
  51.         int jumlahBarang1 = 0;
  52.         float totalHargaBarang = 0;
  53.         float ppn = 0;
  54.         double diskon = 0;
  55.         double subtotal2 = 0;
  56.         String nim = "",nama = "";
  57.         String hari = "";
  58.         //inisiasi array
  59.         int[] jml_barang_array = new int[jml_barang];
  60.         String[] nama_barang_array = new String[jml_barang];
  61.         int[] jumlah_satuan_barang_array = new int[jml_barang];
  62.         float[] harga_barang_unit_array = new float[jml_barang];
  63.         float[] total_harga_array = new float[jml_barang];
  64.         //input
  65.         for (int a = 0; a < jml_barang_array.length; a++) {
  66.             System.out.printf("%-40s %4s", "Masukkan nama barang " + (a + 1), " : ");
  67.             nama_barang_array[a] = sc.nextLine();
  68.             System.out.printf("%-40s %4s", "Masukkan jumlah barang " + (a + 1), " : ");
  69.             jumlah_satuan_barang_array[a] = sc.nextInt();
  70.             totalJumlahBarang += jumlahBarang1;
  71.             System.out.printf("%-40s %4s", "Masukkan harga barang " + (a + 1), " : ");
  72.             harga_barang_unit_array[a] = sc.nextFloat();
  73.             total_harga_array[a] = jumlah_satuan_barang_array[a] * harga_barang_unit_array[a];
  74.             totalHargaBarang += total_harga_array[a];
  75.             sc.nextLine();
  76.         }
  77.         System.out.println();
  78.         System.out.printf("%-40s %4s", "Masukkan hari sekarang", ": ");
  79.         hari = sc.nextLine();
  80.         System.out.printf("%-40s %4s", "Apakah anda mahasiswa UB (true/false)", ": ");
  81.         boolean status = sc.nextBoolean();
  82.         sc.nextLine(); //status mahasiswa atau bukan
  83.             if (status) {
  84.                 System.out.printf("%-40s %4s", "Masukkan User ID (NIM)", ": ");
  85.                 nim = sc.nextLine();
  86.                 System.out.printf("%-40s %4s", "Masukkan nama pembeli", ": ");
  87.                 nama = sc.nextLine();
  88.                 System.out.println();
  89.                 System.out.println("===============================" + " Struk Pembelian " + "=====================================\n");
  90.                 switch (nim.substring(5, 9)) {
  91.                     case "0701":
  92.                         if (hari.equalsIgnoreCase("Senin") || hari.equalsIgnoreCase("Kamis")) {
  93.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 10.00%");
  94.                         } else if (hari.equalsIgnoreCase("Minggu")) {
  95.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 5.00%");
  96.                         }
  97.                         break;
  98.                     case "0700":
  99.                         if (hari.equalsIgnoreCase("Selasa") || hari.equalsIgnoreCase("Jumat")) {
  100.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 10.00%");
  101.                         } else if (hari.equalsIgnoreCase("Minggu")) {
  102.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 5.00%");
  103.                         }
  104.                         break;
  105.                     case "0707":
  106.                         if (hari.equalsIgnoreCase("Rabu") || hari.equalsIgnoreCase("Sabtu")) {
  107.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 10.00%");
  108.                         } else if (hari.equalsIgnoreCase("Minggu")) {
  109.                             System.out.println("Selamat, anda mendapatkan bonus diskon mahasiswa sebesar 5.00%");
  110.                         }
  111.                         break;
  112.                 }
  113.                 String kapital = hari.substring(0, 1);
  114.                 String huruf1 = hari.substring(1).toLowerCase();
  115.                 System.out.printf("%-10s %10s %-30s\n", "User ID", ":", nim);
  116.                 System.out.printf("%-10s %10s %-30s\n", "Nama", ":", nama);
  117.                 System.out.printf("%-10s %10s %-1s%-10s\n\n", "Hari", ":", kapital.toUpperCase(), huruf1);
  118.                 diskon = diskonMahasiswa(nim, hari);
  119.             } else {
  120.                 System.out.println();
  121.                 System.out.println("===============================" + " Struk Pembelian " + "=====================================\n");
  122.                 String kapital = hari.substring(0, 1);
  123.                 String huruf1 = hari.substring(1).toLowerCase();
  124.                 System.out.println("Hari : " + kapital.toUpperCase() + huruf1);
  125.                 System.out.println();
  126.             }
  127.         //output
  128.         System.out.printf("%-10s\n", "-------------------------------------------------------------------------------------");
  129.         System.out.printf("| %-2s | %-19s | %4s | %-25s | %-16s |\n", "No.", "Nama Barang", "Jumlah", "Harga/unit", "Total Harga");
  130.         System.out.printf("%-10s\n", "-------------------------------------------------------------------------------------");
  131.         for (int a = 0; a < jml_barang_array.length; a++) {
  132.             System.out.printf("| %-3s | %-19s | %-6s | %3s %-,21.2f | %3s %-,12.2f |\n", (a+1)+".", nama_barang_array[a], jumlah_satuan_barang_array[a], "Rp.", harga_barang_unit_array[a], "Rp.", total_harga_array[a]);
  133.             System.out.printf("%-10s\n", "-------------------------------------------------------------------------------------");
  134.         }
  135.  
  136.         ppn = totalHargaBarang / 10;
  137.         float subtotal = totalHargaBarang + ppn;
  138.         if (subtotal >= 100_000) {
  139.             diskon += 10.00f;
  140.         } else if (subtotal >= 50_000 && subtotal < 100_000) {
  141.             diskon += 5.00f;
  142.         }
  143.         double diskonBelanja = diskon * subtotal / 100;
  144.         subtotal2 = subtotal - diskonBelanja;
  145.         System.out.printf("%36s | %-25s | %3s %-,12.2f | \n", " ", "PPN 10%", "Rp.", ppn);
  146.         System.out.printf("%85s\n", "------------------------------------------------");
  147.         System.out.printf("%36s | %-15s %6.2f%-2s | %3s %-,12.2f | \n", " ", "Diskon Belanja: ", diskon, "%", "Rp.", diskonBelanja);
  148.         System.out.printf("%85s\n", "------------------------------------------------");
  149.         System.out.printf("%36s | %-25s | %3s %-,12.2f | \n", " ", "Subtotal", "Rp.", subtotal2);
  150.         System.out.printf("%85s\n", "------------------------------------------------");
  151.         //masukkan ke history
  152.         addToHistory("Belanja",subtotal2);
  153.     }
  154.  
  155.     static void laundryAction() {
  156.         System.out.println();
  157.         System.out.printf("%-40s %4s", "Masukkan berat pakaian (kg) ", " : ");
  158.         int berat = sc.nextInt();
  159.         sc.nextLine();
  160.         System.out.printf("%-40s %4s", "Masukkan tanggal sekarang ", " : ");
  161.         String tanggalPesan = sc.nextLine();
  162.         System.out.printf("%-40s %4s", "Masukkan cara pengiriman (Ambil/Kirim) ", " : ");
  163.         String kondisi = sc.nextLine();
  164.         System.out.println();
  165.         float harga = 0;
  166.  
  167.         if (kondisi.equals("Kirim")){
  168.             if (berat%4 == 0){
  169.                 int hari = berat/4;
  170.                 String hariPesan = tanggalPesan.substring(0,2);
  171.                 String bulanPesan = tanggalPesan.substring(3,5);
  172.                 String tahunPesan = tanggalPesan.substring(6,10);
  173.                 int hariInt = Integer.parseInt(hariPesan);
  174.                 int bulanInt = Integer.parseInt(bulanPesan);
  175.                 int tahunInt = Integer.parseInt(tahunPesan);
  176.                 System.out.println("Lama hari proses laundry : " + hari + " hari");
  177.                 System.out.println("Tanggal selesai : " + tanggalSelesai(hari,hariInt,bulanInt,tahunInt) + " (Diantarkan)");
  178.                 harga = 7500 * hari + ((7500 * (float)hari) / 10);
  179.                 System.out.printf("Total harga yang harus dibayar : Rp %-,12.2f\n\n" , harga );
  180.             } else {
  181.                 int hari = berat/4 + (berat%4) / (berat%4);
  182.                 String hariPesan = tanggalPesan.substring(0,2);
  183.                 String bulanPesan = tanggalPesan.substring(3,5);
  184.                 String tahunPesan = tanggalPesan.substring(6,10);
  185.                 int hariInt = Integer.parseInt(hariPesan);
  186.                 int bulanInt = Integer.parseInt(bulanPesan);
  187.                 int tahunInt = Integer.parseInt(tahunPesan);
  188.                 System.out.println("Lama hari proses laundry : " + hari + " hari");
  189.                 System.out.println("Tanggal selesai : " + tanggalSelesai(hari,hariInt,bulanInt,tahunInt) + " (Diantarkan)");
  190.                 harga = 7500 * hari + ((7500 * (float)hari) / 10);
  191.                 System.out.printf("Total harga yang harus dibayar : Rp %-,12.2f\n\n" , harga );
  192.             }
  193.         } else if (kondisi.equals("Ambil")){
  194.             if (berat%4 == 0){
  195.                 int hari = berat/4;
  196.                 System.out.println("Lama hari proses laundry : " + hari + " hari");
  197.                 String hariPesan = tanggalPesan.substring(0,2);
  198.                 String bulanPesan = tanggalPesan.substring(3,5);
  199.                 String tahunPesan = tanggalPesan.substring(6,10);
  200.                 int hariInt = Integer.parseInt(hariPesan);
  201.                 int bulanInt = Integer.parseInt(bulanPesan);
  202.                 int tahunInt = Integer.parseInt(tahunPesan);
  203.                 System.out.println("Tanggal selesai : " + tanggalSelesai(hari,hariInt,bulanInt,tahunInt) + " (Diambil)");
  204.                 harga = 7500 * hari;
  205.                 System.out.printf("Total harga yang harus dibayar : Rp %-,12.2f\n\n" , harga );
  206.             } else {
  207.                 int hari = berat/4 + (berat%4) / (berat%4);
  208.                 System.out.println("Lama hari proses laundry : " + hari + " hari");
  209.                 String hariPesan = tanggalPesan.substring(0,2);
  210.                 String bulanPesan = tanggalPesan.substring(3,5);
  211.                 String tahunPesan = tanggalPesan.substring(6,10);
  212.                 int hariInt = Integer.parseInt(hariPesan);
  213.                 int bulanInt = Integer.parseInt(bulanPesan);
  214.                 int tahunInt = Integer.parseInt(tahunPesan);
  215.                 System.out.println("Tanggal selesai : " + tanggalSelesai(hari,hariInt,bulanInt,tahunInt) + " (Diambil)");
  216.                 harga = 7500 * hari;
  217.                 System.out.printf("Total harga yang harus dibayar : Rp %-,12.2f\n\n" , harga);
  218.             }
  219.         }
  220.         addToHistory("Laundry",harga);
  221.     }
  222.  
  223.     static void showHistory() {
  224.         if (historySize == 0){
  225.             System.out.println("\nBelum ada transaksi\n");
  226.         } else {
  227.             System.out.println("\nHistory Transaksi UB Mart\n");
  228.             System.out.println("--------------------------------------------------");
  229.             System.out.printf("| %-3s | %-19s | %-18s |\n", "No.", "Jenis transaksi", "Total Harga");
  230.             System.out.println("--------------------------------------------------");
  231.             for (int a = 0; a < historySize; a++){
  232.                 System.out.printf("| %-3s | %-19s | Rp. %-,14.2f |\n", (a+1) + ".", history[a], hargaTotal[a]);
  233.                 System.out.println("--------------------------------------------------");
  234.             }
  235.             System.out.println();
  236.         }
  237.     }
  238.  
  239.     static void addToHistory(String jenisTransaksi, double totalHarga) {
  240.         history[historySize] = jenisTransaksi;
  241.         hargaTotal[historySize] = totalHarga;
  242.         historySize++;
  243.     }
  244.  
  245.     static double diskonMahasiswa(String nim, String hari) {
  246.         double diskon = 0;
  247.         switch (nim.substring(5, 9)) {
  248.             case "0701":
  249.                 if (hari.equalsIgnoreCase("Senin") || hari.equalsIgnoreCase("Kamis")) {
  250.                     diskon += 10.00;
  251.                 } else if (hari.equalsIgnoreCase("Minggu")) {
  252.                     diskon += 5.00;
  253.                 }
  254.                 break;
  255.             case "0700":
  256.                 if (hari.equalsIgnoreCase("Selasa") || hari.equalsIgnoreCase("Jumat")) {
  257.                     diskon += 10.00f;
  258.                 } else if (hari.equalsIgnoreCase("Minggu")) {
  259.                     diskon += 5.00f;
  260.                 }
  261.                 break;
  262.             case "0707":
  263.                 if (hari.equalsIgnoreCase("Rabu") || hari.equalsIgnoreCase("Sabtu")) {
  264.                     diskon += 10.00f;
  265.                 } else if (hari.equalsIgnoreCase("Minggu")) {
  266.                     diskon += 5.00f;
  267.                 }
  268.                 break;
  269.         }
  270.         return diskon;
  271.     }
  272.  
  273.     static String tanggalSelesai(
  274.             int lamaLaundry, int hari, int bulan, int tahun
  275.     ) {
  276.         int a;
  277.         if (lamaLaundry < 30){
  278.             a = 0;
  279.         } else {
  280.             a = 1;
  281.         }
  282.         int hariSelesai;
  283.         hariSelesai = hari + lamaLaundry;
  284.         for (int b = a; b <= lamaLaundry/30; b++) {
  285.             while (hariSelesai > 30) {
  286.                 hariSelesai -= 30;
  287.                 bulan++;
  288.                 if (bulan > 12) {
  289.                     bulan %= 12;
  290.                     tahun++;
  291.                 }
  292.             }
  293.         }
  294.         String hari3,bulan3;
  295.         //jika hari 1 digit, maka akan ditambahi 0 di depannya
  296.         if (hariSelesai < 10){
  297.             hari3 = "0" + hariSelesai;
  298.         } else {
  299.             hari3 = Integer.toString(hariSelesai);
  300.         }
  301.         //jika bulan 1 digit, maka akan ditambahi 0 di depannya
  302.         if (bulan < 10){
  303.             bulan3 = "0" + bulan;
  304.         } else {
  305.             bulan3 = Integer.toString(bulan);
  306.         }
  307.         String tanggal;
  308.         tanggal = hari3 + "-" + bulan3 + "-" + tahun;
  309.         return tanggal;
  310.     }
  311. }
  312.  
Add Comment
Please, Sign In to add comment