ETS PBO C (NO 3 dan 4)

 Avind Pramana Azhari - 05111940000226

Dalam tugas kali ini, saya diminta untuk :

  1. Menuliskan skenario fungsionalitas aplikasi pada mesin ATM
  2. Mendefinisikan Class dan membuat Diagram Classnya.
tugas ini dibuat berdasarkan video berikut:



1.

 Yang harus dilakukan pertama yaitu pergi ke atm terdekat. Kemudian, masukkan kartu ATM anda dan pilih Bahasa Indonesia. Setelah itu, masukkan pin ATM anda(6 digit). Pilihlah menu lain > metode transfer > dari rekening tabungan > ke rekening BNI. Masukkanlah nomor rekening tujuan (rekening penjual tokopedia berdasarkan video) kemudian pilih benar. Selanjutnya, masukkan jumlah uang yang ingin di transfer sesuai dengan tagihannya (total harga di tokopedia) dengan kode unik pesanan (3 digit terakhir total harga) dan pilih benar jika sudah sesuai. Kosongkan berita yang ingin disampaikan kemudian pilih benar. Cek konfirmasi  transaksi yang ingin anda lakukan, jika sudah benar/sesuai harga dan rekening tujuan dengan yang ada di tokopedia, pilih iya. Terakhir, pilih tidak jika tidak ingin melakikan transaksi yang lain. Jika tidak terjadi masalah, maka transaksi anda sudah berhasil. Ambilah kartu ATM anda beserta bukti transfernya.


2.

Diagram Class yang akan digunakan adalah sebagai berikut:





diamana:

DataPembeli    : berisi pim, nama, tabungan pembeli.

Main menu    : tempat pengecekan pin dan kontrol utama.

DataPenjual    : berisi nomor rekening penjual

MetodeTransfer    : membaca rekening penjual, jumlah transfer, den mengecek jika isi tabungan dapat membayar harga transfer.

BuktiTransfer    : berisi rangkuman transaksi.


Untuk tugas no 3 dan 4 adalah pengimplementasiannya. Saya melakukan perubahan Diagram Class yang dipakai menjadi bentuk berikut :

dengan fungsi Class sama seperti sebelumnya.
Source code yang saya gunakan adalah sebagai berikut:

MainMenu
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import java.util.Scanner;
/**
 * Menu utama aplikasi ATM.
 *
 * @author Avind Pramana Azhari
 * @version 26 November 2020
 */
public class MainMenu 
{
    private DataPembeli akun;
    private MetodeTransfer pengiriman;
    private BuktiTransfer resi;
    private Scanner reader;
    
    public MainMenu()
    {
        reader = new Scanner(System.in);
    }
    
    public void mulai()
    {
        String inputLine;
        int rupiah;
        DataPembeli akun = new DataPembeli("Budi", "123456", 1000000);
        boolean PINcheck = false;
        printWelcome();
        
        
        while(!PINcheck) {
            inputLine  = reader.nextLine();
            if(inputLine.equals(akun.GetPIN())) {
                PINcheck = true;
            }
            else {
                System.out.println("PIN yang anda masukkan salah, silahkan coba lagi");
            }
        }
        
        
        printMasukAkun();
        
        boolean transferSelesai = false;
        
        while (!transferSelesai) {
            inputLine  = reader.nextLine();
            if(inputLine.equals("transfer")) {
                
                MetodeTransfer pengiriman = new MetodeTransfer(akun);
                boolean rekeningcheck = false;
                boolean hargacheck = false;
                
                System.out.println("Tulislah nomor rekening pengirim");
                System.out.println("Tokopedia = 1020304050607080");
                while(!rekeningcheck)
                {
                    inputLine  = reader.nextLine();
                    if(pengiriman.TransferCheckRekening(inputLine))
                    {
                        rekeningcheck = true;
                    }
                }
                System.out.println("Tulislah harga total transfer");
                System.out.println("Barang = Rp 600000");
                while(!hargacheck)
                {
                    rupiah  = reader.nextInt();
                    if(pengiriman.TransferCheckHarga(rupiah))
                    {
                        hargacheck = true;
                    }
                }
                transferSelesai = true;
            }
            else {
                System.out.println("Input tidak terbaca, silahkan coba lagi.");
            }
        }
        MetodeTransfer pengiriman = new MetodeTransfer(akun);
        akun.tabungan = akun.tabungan - pengiriman.infokirim.GetHarga();
        
        resi = new BuktiTransfer(akun.GetName(), pengiriman);
        
        resi.ShowResi(resi);
        System.out.println("Sisa tabungan anda adalah : Rp " + akun.GetTabungan());
        
        printGoodbye();
        reader.close();
    }
    
    
    public void printWelcome()
    {
        System.out.println("Selamat datang di aplikasi ATM ini");
        System.out.println("(PIN Anda = 123456)");
        System.out.println("Silahkan isi PIN anda :");
    }
    
    public void printMasukAkun()
    {
         System.out.println("Selamat datang!");
         System.out.println("Silahkan ketik transfer");
         System.out.println("untuk melakukan transfer ke rekening lain");

    }
    
    public void printGoodbye()
    {
        System.out.println("Terima kasih untuk menggunakan jasa kami!");
    }
    
    
    
    

}

MetodeTransfer
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
 * Pengecekan transfer
 *
 * @author Avind Pramana Azhari
 * @version 26 November 2020
 */
public class MetodeTransfer
{
    public DataPenjual infokirim;
    public DataPembeli akun;
   
    public MetodeTransfer(DataPembeli akun)
    {
        this.akun = akun;
        this.infokirim = new DataPenjual("Tokopedia", "1020304050607080", 600000);
    }

    public boolean TransferCheckRekening(String rekeningTujuan)
    {
        if(rekeningTujuan.equals(infokirim.GetRekening()))
        {
            return true;
        }
        else if(rekeningTujuan == null)
        {
             return false;
        }
        else
        {
            System.out.println("Tidak ada rekening dengan nomor tersebut, "+
             "silahkan coba lagi");
             return false;
        }
        
    }
    
    public boolean TransferCheckHarga(int pembayaran)
    {
        if(pembayaran == infokirim.GetHarga() && pembayaran <= akun.GetTabungan())
        {
            return true;
        }
        else if(pembayaran > akun.GetTabungan())
        {
            System.out.println("Isi tabungan anda tidak mencukupi");
             return false;
        }
        else
        {
            System.out.println("Jumlah transfer yang ana masukkan salah, "+
             "silahkan coba lagi");
             return false;
        }
        
    }
}

DataPenjual
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * Data dari penjual
 *
 * @author Avind Pramana Azhari
 * @version 26 November 2020
 */
public class DataPenjual
{
    private final String name;
    private final String rekening;
    
    private int harga;
   
    /**
    * membuat akun penjual
    *
    * @param name : nama
    * @param rekening : no rekening
    * @param harga : jumlah harga barang yang dibeli
    */
    public DataPenjual(String name, String rekening, int harga )
    {
        this.name = name;
        this.rekening = rekening;
        this.harga = harga;
    }
    
    public String GetName()
    {
        return name;
    }

    public String GetRekening()
    {
        return rekening;
    }
    
    public int GetHarga()
    {
        return harga;
    }
}

DataPembeli
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
 * Data dari pembeli
 *
 * @author Avind Pramana Azhari
 * @version 26 November 2020
 */
public class DataPembeli
{
    private final String name;
    private final String PIN;
    public int tabungan;
    
    /**
    * membuat akun pembeli
    *
    * @param name : nama
    * @param PIN : PIN
    * @param tabungan : isi tabungan
    */
    public DataPembeli(String name, String PIN, int tabungan)
    {
        this.name = name;
        this.PIN = PIN;
        this.tabungan = tabungan;
    }
    
    public String GetName()
    {
        return name;
    }
    
    public String GetPIN()
    {
        return PIN;
    }
    
    public double GetTabungan()
    {
        return tabungan;
    }
}

BuktiTransfer
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
 * Memperlihatkan hasil transfer
 *
 * @author Avind Pramana Azhari
 * @version 26 November 2020
 */
public class BuktiTransfer
{
    private MetodeTransfer infoTransfer;
    private String resiNamaPembeli;
    
    public BuktiTransfer(String resiNamaPembeli, MetodeTransfer transferinfo)
    {
      this.resiNamaPembeli =  resiNamaPembeli;
      this.infoTransfer = transferinfo;
      
    }
    
    
    public void ShowResi(BuktiTransfer resi)
    {
        System.out.println("----------------------------------");
        System.out.println("Resi Transfer");
        System.out.println("----------------------------------");
        System.out.println("Nama pembeli : " + resi.resiNamaPembeli);
        System.out.println("Nama penjual : " + resi.infoTransfer.infokirim.GetName());
        System.out.println("Nomor rekening penjual : " + resi.infoTransfer.infokirim.GetRekening());
        System.out.println("Total transfer : Rp "+ resi.infoTransfer.infokirim.GetHarga());
        System.out.println("-----------------------------------");
        
    }
}


Output dari aplikasi tersebut adalah sebagai berikut :

untuk output ini, saya menggunakan tabungan awal pengguna sebesar Rp 1.000.000.

Comments

Popular posts from this blog

Membuat Web Warung Tegal

TUGAS 2 PBO C