Kamis, 28 Maret 2013

JAVA - Membuat Virtual ATM


Jadi kita akan membuat sebuah class untuk mensimulasikan sebuah mesin ATM. Class tersebut dapat menyimpan saldo nasabah. Saldo awal yang diberikan adalah Rp.10.000.000,-. 

Kita akan melakukan  inisialisasi nama dan password nasabah dengan menggunakan constructor. Awal proses ATM menanyakan password ke user kemudian dicocokan dengan password yang telah disimpan sebelumnya. 

Jika password salah mesin ATM meminta password kembali ke user sampai dua kali, jika tetap salah langsung keluar. Jika password benar maka ATM akan menampilkan menu dan user memilih menu yang diinginkan. 


Jadi aturan lebih detailnya sebagai berikut :

Menu yang ada pada ATM meliputi : informasi saldo, penarikan, dan transfer.

Variabel
Gunakan modifier private untuk variabel saldo, nama dan password.

Method
cekPassword() : digunakan untuk mengecek password yang dimasukkan oleh user. (modifier : private)
infoSaldo() : digunakan untuk mengetahui jumlah saldo/sisa uang yang dimiliki nasabah. (modifier : private)
penarikan() : digunakan untuk melakukan penarikan uang oleh nasabah. Method ini mengembalikan nilai berupa saldo setelah dikurangi dengan uang yang ditarik. Jika penarikan melebihi saldo nasabah maka ATM menampilkan pesan pemberitahuan bahwa saldo tidak mencukupi. Jika penarikan sukses dilakukan ATM akan menampilkan pesan pemberitahuan bahwa user telah melakukan penarikan sejumlah nominal yang dimasukkan. (modifier : protected)
transfer() : digunakan untuk melakukan transfer uang. Merupakan method overload, jika user mentransfer ke bank yang sama maka hanya ada 2 parameter yaitu untuk menangkap nomor rekening dan jumlah uang yang akan di transfer. Jika user mentransfer antar bank maka parameternya ada 3 yaitu untuk menangkap nomor rekening, nama bank, dan jumlah uang yang akan di transfer. Jika jumlah yang akan di transfer melebihi saldo nasabah maka ATM menampilkan pesan pemberitahuan bahwa saldo tidak mencukupi. Jika transfer berhasil dilakukan ATM akan menampilkan pesan pemberitahuan bahwa user telah melakukan transfer sejumlah nominal yang dimasukkan kebank dan no rek yang dimaksud. (modifier default)


Source code :
package ATMku;

import java.util.Scanner;

public class ATM {
    private double saldo=1000000;
    private String nama;
    private String pwd;

    ATM(String nm, String pas) {
        nama=nm;
        pwd=pas;
    }
    
    private Boolean cekPwd(){
        Scanner input=new Scanner(System.in);
        System.out.print("Masukkan nama :");
        String namai=input.next();
        System.out.print("Masukkan password :");
        String pwdi=input.next();
        Boolean o=false;
        if (nama.equals(namai)){
            if (pwd.equals(pwdi)){
                o= true;
            }
        }else{
            o= false;
        }
        return o;
    }
    
    private double infoSaldo(){
        System.out.println("Saldo anda : Rp."+saldo);
        return saldo;
    }
    
    protected double penarikan(){
        Scanner input=new Scanner(System.in);
        System.out.print("Masukkan jumlah penarikan : Rp");
        double tarik=input.nextDouble();
        double out=0;
        if (tarik>saldo){
            System.out.println("saldo tidak mencukupi");
        }else{
            System.out.println("user telah melakukan penarikan sejumlah Rp."+tarik);
            saldo-=tarik;
            out= saldo;
        }
        return out;
    }
    
    void transfer(int norek, double jml){
        if (saldo>jml){
            saldo-=jml;
            System.out.println("user telah melakukan transfer sejumlah Rp."+ jml +" pada nomor rekening "+ norek);
        }else{
            System.out.println("saldo tidak mencukupi");
        }
    }
    
    void transfer(int norek, String nmBank, double jml){
        
        if (saldo>jml){
            saldo-=jml;
            System.out.println("user telah melakukan transfer sejumlah Rp."+ jml +" pada nomor rekening "+ norek +" pada bank "+ nmBank);
        }else{
            System.out.println("saldo tidak mencukupi");
        }
    }
    
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        ATM mesin= new ATM("sofyan","123");
        int s=2;
        for (int i = 0; i < 1; i++) {
            if (mesin.cekPwd()){
                for (int u = 0; u < 1; u++) {
                    System.out.println("Menu :");
                    System.out.println("1. Info saldo");
                    System.out.println("2. Penarikan");
                    System.out.println("3. Transfer");
                    System.out.println("4. Exit");
                    int tbl=input.nextInt();
                    switch(tbl){
                        case 1:
                            mesin.infoSaldo();
                            u--;
                            break;
                        case 2:
                            mesin.penarikan();
                            u--;
                            break;
                        case 3:
                            System.out.println("1. Bank sama \n2. Luar \n3. Batalkan");
                            int ms=input.nextInt();
                            int noreki;
                            String nmBanki;
                            double jmli;
                            switch(ms){
                                case 1:
                                    System.out.print("Nomor rekening tujuan : ");
                                    noreki=input.nextInt();
                                    System.out.print("Jumlah uang yang akan dikirim : Rp.");
                                    jmli=input.nextInt();
                                    mesin.transfer(noreki, jmli);
                                    break;
                                case 2:
                                    System.out.print("Nomor rekening tujuan : ");
                                    noreki=input.nextInt();
                                    System.out.print("Nama bank tujuan : ");
                                    nmBanki=input.next();
                                    System.out.print("Jumlah uang yang akan dikirim : Rp");
                                    jmli=input.nextInt();
                                    mesin.transfer(noreki, nmBanki, jmli);
                                    break;
                                default:
                                    break;
                            }
                            u--;
                            break;
                        default:
                            break;
                    }
                }
            }else{
                System.out.println("! Paassword salah");
                if (s==0){
                    break;
                }else{
                    s--;
                    i--;
                }
            }
        }
    }
}


Untuk flowchartnya akan menyusul.
Jika ada alur yang tidak paham silahkan ditanyakan.
Terima kasih.

10 komentar:

  1. hoho, atm y,,,,,,,,,,,,,,,,

    BalasHapus
  2. tanya bang, bedanya print sama println apa ?

    BalasHapus
    Balasan
    1. println : "ln" digunakan untuk inputan user otomatis lgsg ke enter saat run program
      print : inputan user berada di samping lgsg

      Hapus
  3. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  4. mautanya itu "package ATMku;" buat apa ya.???
    thaks before....

    BalasHapus
    Balasan
    1. itu package-nya atau istilah gampangnya itu folder templat classnya disimpan.

      Hapus
  5. kak, boleh minta penjelasan nya?hehe

    BalasHapus