mbah_bejo

ATM

Nov 24th, 2020
631
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Class ini akan menjadi Class utama. Program ATM ini
  3.  * memakai ID dan PIN untuk masuk. Bisa kalian Lihat di
  4.  * Class DatabaseBank. Untuk transaksi nya berfokus pada
  5.  * transaksi tarik tunai. Class ini akan menjadi menampilkan
  6.  * menu ATM dan berjalan selayaknya ATM
  7.  *
  8.  * Author thomasdwi.a
  9.  * Version 20201124
  10.  */
  11.  
  12. public class ATM {
  13.     private DatabaseBank databaseBank;
  14.     private Screen screen;
  15.     private Keypad keypad;
  16.     private TarikTunai tarikTunai;
  17.     private int akun = 0;
  18.  
  19.     //tanda kalau belum ada akun yang dipakai
  20.     private boolean isUsing = false;
  21.  
  22.  
  23.     /**
  24.      * Constructor yang meninisialisasi
  25.      * variabel yang akan dipakai
  26.      */
  27.     public ATM() {
  28.         screen = new Screen();
  29.         keypad = new Keypad();
  30.         databaseBank = new DatabaseBank();
  31.         tarikTunai = new TarikTunai();
  32.     }
  33.  
  34.     /**
  35.      * program akan berjalan disini
  36.      */
  37.     public void runATM() {
  38.         //menjadi flag/tanda kapan program harus berhenti
  39.         boolean exit = false;
  40.  
  41.         //program akan terus jalan hingga exit = true
  42.         while (!exit) {
  43.  
  44.             /**
  45.              * layaknya ATM, user harus memasukkan id dan pin
  46.              * (bisa diliat di Class DatabaseBank).
  47.              *  Jika benar, maka isUsing = true dan
  48.              *  akan lanjut ke menu ATM, jika tidak
  49.              *  Input lagi hingga benar.
  50.              */
  51.             while (!isUsing) {
  52.                 screen.display("SELAMAT DATANG DI ATM BANK JAGO\n\n");
  53.                 inputATM();
  54.             }
  55.  
  56.             int pilihan = menu();
  57.             switch (pilihan) {
  58.                 case 1:
  59.                     opsiTarikTunai();
  60.                     break;
  61.                 case 2:
  62.                 case 3:
  63.                     break;
  64.                 case 0:
  65.                     exit = true;
  66.                     break;
  67.                 default:
  68.                     screen.display("Salah Input!/n Coba Lagi");
  69.                     break;
  70.             }
  71.         }
  72.         screen.display("TERIMAKASIH SUDAH MENGGUNAKAN ATM BANK JAGO");
  73.     }
  74.  
  75.     /**
  76.      * method ini berfungsi untuk memasukkan id dan pin
  77.      * dari user.
  78.      */
  79.     public void inputATM() {
  80.  
  81.         screen.display("MASUKAN ID ATM ANDA: \n");
  82.         //menerima input id
  83.         int id = keypad.input();
  84.  
  85.         screen.display("MASUKAN PIN ATM ANDA: \n");
  86.         //menerima input pin
  87.         int pin = keypad.input();
  88.  
  89.         //memeriksa apakah id & pin ada di database bank
  90.         if (databaseBank.cekAkun(id, pin)) {
  91.             akun = id;
  92.             isUsing = true;
  93.         } else {
  94.             screen.display("ID/PIN YANG ANDA MASUKAN SALAH\n"
  95.                     + "SILAKAN COBA LAGI\n");
  96.         }
  97.     }
  98.  
  99.     /**
  100.      * menampilkan isi Main Menu ATM yang disediakan
  101.      * @return angka yang mewakili menu yang dipilih
  102.      */
  103.     public int menu() {
  104.         screen.display("\nMain menu\n");
  105.         screen.display("1. Tarik Tunai\n");
  106.         screen.display("2. Cek Saldo\n");
  107.         screen.display("3. Transfer antar Bank\n");
  108.         screen.display("0. Exit\n");
  109.         screen.display("Input: \n");
  110.         return keypad.input();
  111.     }
  112.  
  113.     /**
  114.      * method ini khusus untuk penarikan tunai, dibuat berdasarkan
  115.      * video ATM diatas. pilihan 1-5 menjadi nominal yang disediakan.
  116.      * User bisa memakai pilihan 6 untuk memasukkan nominal yang
  117.      * diingankannya
  118.      */
  119.     public void opsiTarikTunai() {
  120.         screen.display("SILAKAN PILIH NOMINAL YANG DIINGINKAN\n");
  121.         screen.display("1. Rp150.000\n");
  122.         screen.display("2. Rp300.000\n");
  123.         screen.display("3. Rp500.000\n");
  124.         screen.display("4. Rp1.000.000\n");
  125.         screen.display("5. Rp1.500.000\n");
  126.         screen.display("6. Nominal Lainnya\n");
  127.         screen.display("Input: \n");
  128.  
  129.         //membaca input pilihan dari user
  130.         int flag = keypad.input();
  131.  
  132.         if (flag == 6) {
  133.             //jika user memilih nominal lain, maka menjalankan
  134.             // fungsi tarik tunai dengan nominal lain
  135.             tarikTunai.nominalLain(akun);
  136.         } else {
  137.             //jika user memilih 1-5, maka menjalankan
  138.             // fungsi tarik tunai dengan nominal transaksi yang tersedia
  139.             int jumlahTarik;
  140.             switch (flag) {
  141.                 case 1:
  142.                     jumlahTarik = 150000; break;
  143.                 case 2:
  144.                     jumlahTarik = 300000; break;
  145.                 case 3:
  146.                     jumlahTarik = 500000; break;
  147.                 case 4:
  148.                     jumlahTarik = 1000000; break;
  149.                 case 5:
  150.                     jumlahTarik = 1500000; break;
  151.                 default:
  152.                     //akan muncul Error jika menerima input selain 1-6
  153.                     //dan program berhenti
  154.                     throw new IllegalStateException("Unexpected value: " + flag);
  155.             }
  156.             tarikTunai.trans(akun, jumlahTarik);
  157.         }
  158.     }
  159. }
RAW Paste Data