ETS soal 3

 

3. Implementasikan rancangan Class dengan menggunakan bahasa pemrograman Java.

        Pada rancangan diagram class saya menggunakan 5 class dalam program ini, Pada kali ini saya akan menampilkan kodingan untuk program dengan menggunakan bahasa java beserta penjelasannya.

a. ATM 
        Pada class ini kita memasukkan pin akun atm kita yang disinkronkan dengan class akun, apabila salah maka program akan berhenti dan menampilkan pesan "PIN anda salah". Apabila pin yg dimasukkan benar maka akan langsung beralih ke menu utama.
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1.  /**
     * Write a description of class ATM here.
     *
     * Fais Rafii Akbar Hidiya
     * 05111940000026
     */
     
    import java.util.*;
    public class ATM
    {
       
        Akun u1 = new Akun();
        MenuUtama s1 = new MenuUtama();
        Scanner sc = new Scanner(System.in); //MEMBUAT FUNGSI SCANNER
     
        public void start(){
            System.out.println("Masukkan PIN : "); //SCAN PIN TRUE OR FALSE (AKUN)
            if(cekPIN()){ 
                s1.MenuUtama(); //IF TRUE, -> MENU UTAMA
            }
            else {
                System.out.println("PIN anda salah");//STOP
            }
        }
     
        public boolean cekPIN(){
            String pin = sc.nextLine();
            return u1.cekpin(pin);
        }
       
    }
     

b. Akun
       Pada class ini kita mengatur saldo awal dan pin yang ada untuk memverifikasi penggunanya (seperti database) dan terdapat fungsi untuk mengecek kebenaran. Selain itu ada juga fungsi untuk mengecek kebenaran untuk menambil nilai pada variabel saldo apabila nilai yg diambil tidak memenuhi atau kurang. Terdapat juga fungsi set untuk mengatur nilai jika telah diprosesn dan fungsi get untuk mengambil nilai agar bisa diproses.

  1. /**
     * Write a description of class Akun here.
     *
     * Fais Rafii Akbar Hidiya
     * 051119400000026
     */
     
    import java.util.*;
    public class Akun
    {
       
        private String PIN; //ANGKA PIN
        private int Nominal; //SALDO
       
     
        /**
         * Constructor for objects of class Akun
         */
        public Akun()//DATABASE AKUN
        {
            this.PIN = "181818";
            this.Nominal = 500000000;
        }
     
        public boolean cekpin(String pin){ //U/CEK PIN
            return this.PIN.equals(pin);
        }
       
        public boolean ceknominal(int NOM){ //CUKUP ATAU TIDAK
            if((Nominal-NOM)>0){
                return true;
            }
            else {
                return false;
            }
        }
       
        public void setnominal(int NOM){ //FUNGSI UNTUK UBAH
            Nominal = NOM;
        }
       
        public int getnominal(){ //MENDAPATKAN NILAI NOMINAL
            return Nominal;
        }
    }

c. Menu Utama
        Pada class ini terdapat beberapa pilihan untuk berapa nominal uang yang mau kita ambil, apabila ingin mengambil nominal sesuai yang diinginkan maka pilih transaksi lain dan jika ingin mengaktifkan mobile banking maka pilih E-banking.
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
     * Write a description of class MenuUtama here.
     *
     * Fais Rafii Akbar Hidiya
     * 05111940000026
     */
    import java.util.*;
    public class MenuUtama
    {
       //AKSES BEBERAPA KELAS
        Akun u1 = new Akun();
        Ebank lain = new Ebank();
        MenuLain bebas = new MenuLain();
        private int flag; //PARAMETER USER
       
        Scanner sc = new Scanner(System.in);
     
        public void MenuUtama()
        {
           System.out.println("Silahkan pilih transaksi yang anda inginkan : ");
           System.out.println("Tekan 9 untuk membatalkan transaksi");
           System.out.println("1. Rp. 100.000,00        5. Rp. 1.500.000,00");
           System.out.println("2. Rp. 500.000,00        6. Rp. 2.000.000,00");
           System.out.println("3. Rp. 1.000.000,00      7. Rp. 2.500.000,00");
           System.out.println("4. E-Banking             8. Transaksi Lainnya");
     
           
           flag=sc.nextInt();
           while(flag>0 && flag <=9)
           {
               
             switch(flag)
             {
               case 1:
               if (u1.ceknominal(100000))
               {
               u1.setnominal(u1.getnominal() - 100000);
               System.out.println("Silahkan melanjutkan Transaksi");
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               break;
               
               case 2:
               if (u1.ceknominal(500000))
               {
               u1.setnominal(u1.getnominal() - 500000);
               System.out.println("Silahkan melanjutkan Transaksi");
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               break;
               
               case 3:
               if (u1.ceknominal(1000000))
               {
               u1.setnominal(u1.getnominal() - 1000000);
               System.out.println("Silahkan melanjutkan Transaksi");
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               break;
               
               case 4:
               lain.pesan();
               break;
               
               case 5:
               if (u1.ceknominal(1500000))
               {
               u1.setnominal(u1.getnominal() - 1500000);
               System.out.println("Silahkan melanjutkan Transaksi");
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               break;
               
               case 6:
               if (u1.ceknominal(2000000))
               {
               u1.setnominal(u1.getnominal() - 2000000);
               System.out.println("Silahkan melanjutkan Transaksi");
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               break;
               
               case 7:
               if (u1.ceknominal(2500000))
               {
               u1.setnominal(u1.getnominal() - 2500000);
               System.out.println("Silahkan melanjutkan Transaksi");
               }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               return;
               
               case 8:
               bebas.MenuLain(u1);
               return;
               
               case 9:
               System.out.println("Sisa saldo anda : Rp."+ u1.getnominal());
               return;
             }
             flag=sc.nextInt();
           }
           
        }    
    }

d. Menu Lain
        Pada class ini terdapat beberapa pilihan transaksi lain, amun karena pada video hanya diminta untuk melakukan Transfer maka fitur yang lain saya atur default untuk mengirim pesan "Layanan masih dalam perbaikan". Pada fungsi transfer kita diminta untuk menginput nominal yang ingin ditransfer dan nomor rekening
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
     * Write a description of class MenuLain here.
     *
     * Fais Rafii Akbar Hidiya
     * 05111940000026
     */
    import java.util.*;
    public class MenuLain
    {
        Akun u1 = new Akun();
        private int flag;
        Scanner sc = new Scanner (System.in);
       
        public void MenuLain(Akun user)
          {
           System.out.println("Silahkan pilih transaksi yang anda inginkan : ");
           System.out.println("1. Ganti Pin             5. Informasi Saldo");
           System.out.println("2. Transfer              6. Uang Elektronik");
           System.out.println("3. Pembayaran            7. BNI SIMPONI");
           System.out.println("4. Penarikan Tunai       8. Menu Sebelumnya");
           flag=sc.nextInt();
           
           switch(flag)
           {
               
               case 2:
               int no_rekening= 18432584;
               int jum_transfer;
               int pilihrek;
               System.out.print( "1.Rekening Tabungan \n" );
               System.out.print( "2.Rekening Giro\n" );
               pilihrek=sc.nextInt();
               if(pilihrek==1)
               {
               System.out.print( "Masukan No Rekening     : " );
               no_rekening=sc.nextInt();
               }
               if(pilihrek==2)
               {
                System.out.print( "Tidak ada Rekening Giro Tersedia");
                break;
            }
               if(no_rekening==18432584)
               { System.out.print("Nomor Rekening : 18432584\n " );
                 System.out.print("A/N: TOKOPEDIA INDONESIA\n" );
                 System.out.print("Masukan Jumlah Transfer : " );
               }
               
               else
               {
                   System.out.print("Nomor rekening yang anda masukkan salah,Transaksi Dibatalkan");
                   System.out.print("\n Silahkan ambil kartu ATM anda");
                   break;
               }
            
               jum_transfer=sc.nextInt();
               
               if (user.ceknominal(jum_transfer))
               {
               user.setnominal(user.getnominal() - jum_transfer);
               System.out.println("Transaksi Anda Telah Berhasil \n Silahkan ambil kartu ATM anda");
               System.out.println("Sisa saldo anda : Rp."+ user.getnominal());
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               return ;
               
               case 4:
               int uang;
               System.out.println("Masukkan jumlah nominal : ");
               uang = sc.nextInt();
               if (user.ceknominal(uang))
               {
               user.setnominal(user.getnominal() - uang);
               System.out.println("Sisa saldo anda : Rp."+ user.getnominal());
                }
               else
               System.out.println("Saldo Anda tidak mencukupi.");
               return;
               
               default :
               System.out.println("Layanan masih dalam perbaikan");
               break;
           }
        }
    }

e. Ebank
        Pada class ini digunakan untuk mengaktifkan mobile banking, namun karena pada video tidak digunakan maka saya atur default untuk mengirim pesan "Layanan masih dalam perbaikan".
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
     * Write a description of class Ebank here.
     *
     * Fais Rafii Akbar Hidiya
     * 05111940000026
     */
    public class Ebank
    {
        public void pesan(){
            System.out.println("Layanan masih dalam perbaikan");
        }
    }