Evaluasi Tengah Semester PBO D - Kasus i-Kios

1. Class abstract untuk menu-menu dalam i-Kios

public abstract class buyMenu {

    int biaya;
    int harga;
    
    void buy() {
        this.biaya -= harga;
    }
    
    int getBiaya() {
        return this.biaya;
    }
    
    void unknown() {
        System.out.println("Perintah tidak diketahui!");
    }
}

2. Class untuk menu pembelian pulsa
import java.util.Random;
import java.util.Scanner;

public class buyPulsa extends buyMenu {
    
    private String nohp;
    
    private String[] amount = {"10000", "25000", "50000", "100000", "250000", "500000"};
    private String[] kartu = {"XL", "Telkomsel", "Indosat", "3"};
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyPulsa(int biaya) {
        this.biaya = biaya;
        System.out.println("===Pembelian Pulsa===");
        System.out.print("Masukkan no. HP Anda: ");
        
        nohp = scan.next();
        
        String kartu = this.kartu[rand.nextInt(3)];
        
        System.out.println("Daftar jumlah pulsa yang bisa dibeli:");
        for(int i=1;i<=6;i++) {
            System.out.println(i + ". Rp " + amount[i-1]);
        }
        System.out.println("Semua pembelian dikenakan biaya tambahan 2000 untuk biaya administrasi");
        while(true) {
            System.out.print("Pilih nomor jumlah pulsa yang ingin dibeli: ");
            int mode = scan.nextInt();
            if(mode>=1 && mode<=6) {
                this.harga = Integer.parseInt(amount[mode-1]) + 2000;
                break;
            }
            else{
                unknown();
            }
        }
        
        boolean confirm = false;
        while(true) {
            System.out.println("Apakah Anda ingin membeli pulsa sebesar Rp " + (harga - 2000) + "(+Rp2000) untuk no. HP " + nohp + "(kartu " + kartu + ")?");
            System.out.println("1. Ya\n2. Tidak");
            int conf = scan.nextInt();
            
            switch(conf) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(conf==1 || conf==2)
                break;
        }
        
        if(confirm==false) {
            System.out.println("Pembelian Pulsa Dibatalkan");
        }
        else {
            if(this.biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Pulsa berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: Pembelian Pulsa");
                System.out.println("Harga : " + harga);
                System.out.println("No. HP:" + nohp);
                System.out.println("Kartu :" + kartu);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}

3. Class untuk pembelian barang online
import java.util.Scanner;
import java.util.Random;

public class buyOnline extends buyMenu{

    private String kodeBarang;
    private String onlineShop[] = {"Tokopedia", "Bukalapak", "Shopee", "Lazada"};
    private String jenisShop;
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyOnline(int biaya) {
        this.biaya = biaya;
        System.out.println("Daftar Online Shop:");
        for(int i=1; i<=4; i++) {
            System.out.println(i + ". " + onlineShop[i-1]);
        }
        while(true) {
            System.out.println("Pilih online shop: ");
            int shop = scan.nextInt();
            if(shop>=1 && shop<=4) {
                jenisShop = onlineShop[shop-1];
                break;
            }
            else {
                unknown();
            }
        }
        
        System.out.println("Masukkan kode pembayaran: ");
        kodeBarang = scan.next();
        
        this.harga = rand.nextInt(1000000 - 50000 + 1) + 50000;
        
        boolean confirm = false;
        
        while(true) {
            System.out.println("Anda akan melakukan pembelian dari online shop " + jenisShop + " dengan kode barang " + kodeBarang + " seharga " + harga);
            System.out.println("Apakah anda ingin melanjutkan?");
            System.out.println("1. Ya");
            System.out.println("2. Tidak");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(mode==1 || mode==2) {
                break;
            }
        }
        
        if (confirm == false) {
            System.out.println("Pembelian online dibatalkan");
        }
        else {
            if(biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Online berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: Pembelian Online");
                System.out.println("Online Shop : " + jenisShop);
                System.out.println("Kode        :" + kodeBarang);
                System.out.println("Harga       :" + harga);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}

4.Class untuk menu i-Delivery
import java.util.Scanner;
import java.util.Random;

public class buyIDelivery extends buyMenu{

    private String barang[] = {"Gas 12 kg", "Galon Aqua", "Kardus Air Mineral Club 600ml"};
    private int hargaBarang[] = {60000, 70000, 25000};
    private String namaBarang;
    private String alamat;
    private int tanggal,bulan,tahun;
    private String nama;
    private String nohp;
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyIDelivery(int biaya) {
        this.biaya = biaya;
        System.out.println("Daftar Barang:");
        for(int i=1; i<=3; i++) {
            System.out.println(i + ". " + barang[i-1] + " (Rp " + hargaBarang[i-1] + ")");
        }
        
        while(true) {
            System.out.println("Pilih barang: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                namaBarang = barang[pilih-1];
                harga = hargaBarang[pilih-1];
                break;
            }
            else {
                unknown();
            }
        }
        
        System.out.print("Masukkan banyak barang yang ingin dibeli: ");
        int multi = scan.nextInt();
        harga = harga * multi;
        
        System.out.println("Masukkan data diri: ");
        System.out.print("Nama: ");
        nama = scan.next();
        System.out.print("No. HP: ");
        nohp = scan.next();
        System.out.print("Alamat: ");
        alamat = scan.next();
        while(true) {
            System.out.print("Tanggal Pengantaran: ");
            tanggal = scan.nextInt();
            if(tanggal<1 || tanggal>31) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        while(true) {
            System.out.print("Bulan Pengantaran: ");
            bulan = scan.nextInt();
            if(bulan<1 || bulan>12) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        System.out.print("Tahun Pengantaran: ");
        tahun = scan.nextInt();
        
        boolean confirm = false;
        
        while(true) {
            System.out.println("Anda akan melakukan pembelian " +  namaBarang + " sebanyak " + multi + " unit, seharga Rp " + harga);
            System.out.println("Apakah anda ingin melanjutkan?");
            System.out.println("1. Ya");
            System.out.println("2. Tidak");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(mode==1 || mode==2) {
                break;
            }
        }
        
        if (confirm == false) {
            System.out.println("Pembelian i-Delivery dibatalkan");
        }
        else {
            if(biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Barang melalui i-Delivery berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: i-Delivery");
                System.out.println("Barang : " + namaBarang);
                System.out.println("Nama   : " + nama);
                System.out.println("Alamat : " + alamat);
                System.out.println("No. HP : " + nohp);
                System.out.println("Tanggal Pengantaran : " + tanggal + "/" + bulan + "/" + tahun);
                System.out.println("Banyak : " + multi);
                System.out.println("Harga  : " + harga);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}
5. Class untuk pembelian tiket kereta
import java.util.Scanner;
import java.util.Random;

public class buyKereta extends buyMenu{

    private String kota[] = {"Surabaya", "Semarang", "Bandung"};
    private String nama;
    private int asal,tujuan,tanggal,bulan,tahun;
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyKereta(int biaya) {
        this.biaya = biaya;
        System.out.println("Daftar Kota:");
        for(int i=1; i<=3; i++) {
            System.out.println(i + ". " + kota[i-1]);
        }
        
        while(true) {
            System.out.println("Pilih asal kota: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                asal = pilih;
                break;
            }
            else {
                unknown();
            }
        }
        
        while(true) {
            System.out.println("Pilih tujuan kota: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                tujuan = pilih;
                if(tujuan == asal) {
                    System.out.println("Tidak dapat memesan tiket kereta ke tujuan sendiri");
                }
                else {
                    break;
                }
            }
            else {
                unknown();
            }
        }
        
        if(asal == 1 && tujuan == 2 || asal == 2 && tujuan == 1) {
            harga = 80000;
        }
        else if(asal == 1 && tujuan == 3 || asal == 3 && tujuan == 1) {
            harga = 150000;
        }
        else if(asal == 2 && tujuan == 3 || asal == 3 && tujuan == 2) {
            harga = 85000;
        }
        
        System.out.print("Masukkan banyak tiket yang ingin dibeli: ");
        int multi = scan.nextInt();
        harga = harga * multi;
        
        System.out.println("Masukkan data diri: ");
        System.out.print("Nama: ");
        nama = scan.next();
        while(true) {
            System.out.print("Tanggal Keberangkatan: ");
            tanggal = scan.nextInt();
            if(tanggal<1 || tanggal>31) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        while(true) {
            System.out.print("Bulan Keberangkatan: ");
            bulan = scan.nextInt();
            if(bulan<1 || bulan>12) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        System.out.print("Tahun Keberangkatan: ");
        tahun = scan.nextInt();
        
        boolean confirm = false;
        
        while(true) {
            System.out.println("Anda akan melakukan pembelian tiket kereta dari " +  kota[asal-1] + " ke " + kota[tujuan-1] + " sebanyak " + multi + " unit, seharga Rp " + harga);
            System.out.println("Apakah anda ingin melanjutkan?");
            System.out.println("1. Ya");
            System.out.println("2. Tidak");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(mode==1 || mode==2) {
                break;
            }
        }
        
        if (confirm == false) {
            System.out.println("Pembelian Tiket Kereta dibatalkan");
        }
        else {
            if(biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Tiket Kereta berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: Pembelian Tiket Kereta");
                System.out.println("Asal   : " + kota[asal-1]);
                System.out.println("Tujuan : " + kota[tujuan-1]);
                System.out.println("Nama   : " + nama);
                System.out.println("Tanggal Pengantaran : " + tanggal + "/" + bulan + "/" + tahun);
                System.out.println("Banyak : " + multi);
                System.out.println("Harga  : " + harga);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}
6.Class untuk pembelian tiket pesawat
import java.util.Scanner;
import java.util.Random;

public class buyPesawat extends buyMenu{

    private String kota[] = {"Surabaya", "Jakarta", "Medan"};
    private String maskapai[] = {"Air Asia", "Citilink", "Garuda Indonesia", "Lion Air"};
    private String nama;
    private int asal,pesawat,tujuan,tanggal,bulan,tahun;
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyPesawat(int biaya) {
        this.biaya = biaya;
        System.out.println("Daftar Kota:");
        for(int i=1; i<=3; i++) {
            System.out.println(i + ". " + kota[i-1]);
        }
        
        while(true) {
            System.out.println("Pilih asal kota: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                asal = pilih;
                break;
            }
            else {
                unknown();
            }
        }
        
        while(true) {
            System.out.println("Pilih tujuan kota: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                tujuan = pilih;
                if(tujuan == asal) {
                    System.out.println("Tidak dapat memesan tiket pesawat ke tujuan sendiri");
                }
                else {
                    break;
                }
            }
            else {
                unknown();
            }
        }
        
        if(asal == 1 && tujuan == 2 || asal == 2 && tujuan == 1) {
            harga = 900000;
        }
        else if(asal == 1 && tujuan == 3 || asal == 3 && tujuan == 1) {
            harga = 1500000;
        }
        else if(asal == 2 && tujuan == 3 || asal == 3 && tujuan == 2) {
            harga = 2000000;
        }
        
        for(int i=1; i<=4; i++) {
            System.out.println(i + ". " + maskapai[i-1]);
        }
        
        while(true) {
            System.out.println("Pilih maskapai: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=4) {
                pesawat = pilih;
                break;
            }
            else {
                unknown();
            }
        }
        
        if(pesawat==1)
            harga -= 100000;
        else if(pesawat==2)
            harga -= 50000;
        else if(pesawat==3)
            harga += 150000;
        else if(pesawat==4)
            harga -= 110000;
        
        System.out.println("Masukkan data diri: ");
        System.out.print("Nama: ");
        nama = scan.next();
        while(true) {
            System.out.print("Tanggal Keberangkatan: ");
            tanggal = scan.nextInt();
            if(tanggal<1 || tanggal>31) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        while(true) {
            System.out.print("Bulan Keberangkatan: ");
            bulan = scan.nextInt();
            if(bulan<1 || bulan>12) {
                System.out.println("Format Salah!");
            }
            else {
                break;
            }
        }
        System.out.print("Tahun Keberangkatan: ");
        tahun = scan.nextInt();
        
        boolean confirm = false;
        
        while(true) {
            System.out.println("Anda akan melakukan pembelian tiket pesawat dari " +  kota[asal-1] + " ke " + kota[tujuan-1] + " seharga Rp " + harga);
            System.out.println("Apakah anda ingin melanjutkan?");
            System.out.println("1. Ya");
            System.out.println("2. Tidak");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(mode==1 || mode==2) {
                break;
            }
        }
        
        if (confirm == false) {
            System.out.println("Pembelian Tiket Pesawat dibatalkan");
        }
        else {
            if(biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Tiket Pesawat berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: Pembelian Tiket Pesawat");
                System.out.println("Asal                : " + kota[asal-1]);
                System.out.println("Tujuan              : " + kota[tujuan-1]);
                System.out.println("Maskapai            : " + maskapai[pesawat-1]);
                System.out.println("Nama                : " + nama);
                System.out.println("Tanggal Pengantaran : " + tanggal + "/" + bulan + "/" + tahun);
                System.out.println("Harga                  : " + harga);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}
7.Class untuk pembelian tiket konser
import java.util.Scanner;
import java.util.Random;

public class buyKonser extends buyMenu{

    private String[] jenisTiket = {"Regular", "VIP", "VVIP"}; 
    private String[] jenisHarga = {"0%", "20%", "50%"};
    private String nama,namaKonser;
    private int jenis;
    
    Scanner scan = new Scanner(System.in);
    Random rand = new Random();
    
    public buyKonser(int biaya) {
        this.biaya = biaya;
        System.out.println("Masukkan Nama Konser:");
        namaKonser = scan.next();
        
        harga = (rand.nextInt(450) + 50) * 1000;
        
        System.out.println("Harga Tiket: " + harga);
        System.out.println("Jenis Tiket:");
        for(int i=1; i<=3; i++) {
            System.out.println(i + ". " + jenisTiket[i-1] + "(Harga tiket +" + jenisHarga[i-1] + ")");
        }
        
        while(true) {
            System.out.println("Pilih jenis tiket: ");
            int pilih = scan.nextInt();
            if(pilih>=1 && pilih<=3) {
                jenis = pilih;
                    break;
            }
            else {
                unknown();
            }
        }
        
        if(jenis == 2)
            harga = harga + (harga*1/5);
        else if(jenis==3)
            harga = harga + (harga*1/2);
        
        System.out.print("Masukkan nama: ");
        nama = scan.next();
        
        System.out.print("Masukkan jumlah tiket yang ingin dibeli: ");
        int multi = scan.nextInt();
        
        harga = harga * multi;
        
        boolean confirm = false;
        
        while(true) {
            System.out.println("Anda akan melakukan pembelian tiket konser " +  namaKonser + " sebanyak " + multi + " seharga Rp " + harga);
            System.out.println("Apakah anda ingin melanjutkan?");
            System.out.println("1. Ya");
            System.out.println("2. Tidak");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    confirm = true;
                    break;
                case 2:
                    confirm = false;
                    break;
                default:
                    unknown();
                    break;
            }
            
            if(mode==1 || mode==2) {
                break;
            }
        }
        
        if (confirm == false) {
            System.out.println("Pembelian Tiket Konser dibatalkan");
        }
        else {
            if(biaya<harga) {
                System.out.println("Saldo Anda tidak cukup untuk melakukan transaksi. Harap mengisi ulang saldo di kasir");
            }
            else {
                buy();
                System.out.println("Pembelian Tiket Konser berhasil!");
                System.out.println("===-+-===Struk Pembayaran===-+-===");
                System.out.println("Jenis Pembayaran: Pembelian Tiket Konser");
                System.out.println("Nama Konser    : " + namaKonser);
                System.out.println("Nama        : " + nama);
                System.out.println("Jenis Tiket : " + jenisTiket[jenis-1]);
                System.out.println("Jumlah        : " + multi);
                System.out.println("Harga          : " + harga);
                System.out.println("===-+-======+===++===+======-+-===");
            }
        }
    }
}
8. Program untuk mesin i-Kios
import java.util.Scanner;

public class iKios {

    private int money;
    private boolean exit = false;
    Scanner scan = new Scanner(System.in);
    
    public iKios() {
        System.out.println("Selamat datang di i-kios");
        operator();
    }
    
    public iKios(int money) {
        System.out.println("Selamat datang di i-kios");
        setMoney(money);
        operator();
    }
    
    public void setMoney(int money) {
        this.money = money;
    }
    
    public void addMoney(int money) {
        this.money += money;
    }
    
    public int getMoney() {
        return money;
    }
    
    public void operator() {
        while(true) {
            System.out.println("Pilih menu i-kios:");
            System.out.println("1. Pembelian Pulsa");
            System.out.println("2. Pembelian Online");
            System.out.println("3. i-Delivery");
            System.out.println("4. Pembelian Tiket Kereta");
            System.out.println("5. Pembelian Tiket Pesawat");
            System.out.println("6. Pembelian Tiket Konser");
            System.out.println("7. Isi Ulang Saldo i-Kios");
            System.out.println("8. Informasi Saldo i-Kios");
            System.out.println("9. Keluar");
            int mode = scan.nextInt();
            
            switch(mode) {
                case 1:
                    buyPulsa pulsa = new buyPulsa(money);
                    this.money = pulsa.getBiaya();
                    System.out.println();
                    break;
                case 2:
                    buyOnline online = new buyOnline(money);
                    this.money = online.getBiaya();
                    System.out.println();
                    break;
                case 3:
                    buyIDelivery delivery = new buyIDelivery(money);
                    this.money = delivery.getBiaya();
                    System.out.println();
                    break;
                case 4:
                    buyKereta train = new buyKereta(money);
                    this.money = train.getBiaya();
                    System.out.println();
                    break;
                case 5:
                    buyPesawat plane = new buyPesawat(money);
                    this.money = plane.getBiaya();
                    System.out.println();
                    break;
                case 6:
                    buyKonser konser = new buyKonser(money);
                    this.money = konser.getBiaya();
                    System.out.println();
                    break;
                case 7:
                    System.out.println("Masukkan jumlah saldo yang akan diisi: ");
                    int topup = scan.nextInt();
                    addMoney(topup);
                    System.out.println("Pengisian sebanyak " + topup + " berhasil, Saldo sekarang: Rp " + money);
                    break;
                case 8:
                    System.out.println("Saldo sekarang: Rp " + money);
                    break;
                case 9:
                    exit = true;
                    break;
                default:
                    System.out.println("Perintah tidak diketahui!");
                    break;
            }
            
            if(exit==true) {
                break;
            }
        }
    }
}

9. Program untuk eksekusi:
import java.util.Scanner;


public class iKios_Mesin {

    public static void main(String[] args) {
        System.out.println("Selamat datang di i-Kios");
        System.out.print("Masukkan jumlah saldo: ");
        
        Scanner scan = new Scanner(System.in);
        int saldo = scan.nextInt();
        iKios kios = new iKios(saldo);
    }
}

Comments