Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Class ini akan menjadi Class utama. Program ATM ini
- * memakai ID dan PIN untuk masuk. Bisa kalian Lihat di
- * Class DatabaseBank. Untuk transaksi nya berfokus pada
- * transaksi tarik tunai. Class ini akan menjadi menampilkan
- * menu ATM dan berjalan selayaknya ATM
- *
- * Author thomasdwi.a
- * Version 20201124
- */
- public class ATM {
- private DatabaseBank databaseBank;
- private Screen screen;
- private Keypad keypad;
- private TarikTunai tarikTunai;
- private int akun = 0;
- //tanda kalau belum ada akun yang dipakai
- private boolean isUsing = false;
- /**
- * Constructor yang meninisialisasi
- * variabel yang akan dipakai
- */
- public ATM() {
- screen = new Screen();
- keypad = new Keypad();
- databaseBank = new DatabaseBank();
- tarikTunai = new TarikTunai();
- }
- /**
- * program akan berjalan disini
- */
- public void runATM() {
- //menjadi flag/tanda kapan program harus berhenti
- boolean exit = false;
- //program akan terus jalan hingga exit = true
- while (!exit) {
- /**
- * layaknya ATM, user harus memasukkan id dan pin
- * (bisa diliat di Class DatabaseBank).
- * Jika benar, maka isUsing = true dan
- * akan lanjut ke menu ATM, jika tidak
- * Input lagi hingga benar.
- */
- while (!isUsing) {
- screen.display("SELAMAT DATANG DI ATM BANK JAGO\n\n");
- inputATM();
- }
- int pilihan = menu();
- switch (pilihan) {
- case 1:
- opsiTarikTunai();
- break;
- case 2:
- case 3:
- break;
- case 0:
- exit = true;
- break;
- default:
- screen.display("Salah Input!/n Coba Lagi");
- break;
- }
- }
- screen.display("TERIMAKASIH SUDAH MENGGUNAKAN ATM BANK JAGO");
- }
- /**
- * method ini berfungsi untuk memasukkan id dan pin
- * dari user.
- */
- public void inputATM() {
- screen.display("MASUKAN ID ATM ANDA: \n");
- //menerima input id
- int id = keypad.input();
- screen.display("MASUKAN PIN ATM ANDA: \n");
- //menerima input pin
- int pin = keypad.input();
- //memeriksa apakah id & pin ada di database bank
- if (databaseBank.cekAkun(id, pin)) {
- akun = id;
- isUsing = true;
- } else {
- screen.display("ID/PIN YANG ANDA MASUKAN SALAH\n"
- + "SILAKAN COBA LAGI\n");
- }
- }
- /**
- * menampilkan isi Main Menu ATM yang disediakan
- * @return angka yang mewakili menu yang dipilih
- */
- public int menu() {
- screen.display("\nMain menu\n");
- screen.display("1. Tarik Tunai\n");
- screen.display("2. Cek Saldo\n");
- screen.display("3. Transfer antar Bank\n");
- screen.display("0. Exit\n");
- screen.display("Input: \n");
- return keypad.input();
- }
- /**
- * method ini khusus untuk penarikan tunai, dibuat berdasarkan
- * video ATM diatas. pilihan 1-5 menjadi nominal yang disediakan.
- * User bisa memakai pilihan 6 untuk memasukkan nominal yang
- * diingankannya
- */
- public void opsiTarikTunai() {
- screen.display("SILAKAN PILIH NOMINAL YANG DIINGINKAN\n");
- screen.display("1. Rp150.000\n");
- screen.display("2. Rp300.000\n");
- screen.display("3. Rp500.000\n");
- screen.display("4. Rp1.000.000\n");
- screen.display("5. Rp1.500.000\n");
- screen.display("6. Nominal Lainnya\n");
- screen.display("Input: \n");
- //membaca input pilihan dari user
- int flag = keypad.input();
- if (flag == 6) {
- //jika user memilih nominal lain, maka menjalankan
- // fungsi tarik tunai dengan nominal lain
- tarikTunai.nominalLain(akun);
- } else {
- //jika user memilih 1-5, maka menjalankan
- // fungsi tarik tunai dengan nominal transaksi yang tersedia
- int jumlahTarik;
- switch (flag) {
- case 1:
- jumlahTarik = 150000; break;
- case 2:
- jumlahTarik = 300000; break;
- case 3:
- jumlahTarik = 500000; break;
- case 4:
- jumlahTarik = 1000000; break;
- case 5:
- jumlahTarik = 1500000; break;
- default:
- //akan muncul Error jika menerima input selain 1-6
- //dan program berhenti
- throw new IllegalStateException("Unexpected value: " + flag);
- }
- tarikTunai.trans(akun, jumlahTarik);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement