ETS PBO C (NO 3 dan 4)
Avind Pramana Azhari - 05111940000226
Dalam tugas kali ini, saya diminta untuk :
- Menuliskan skenario fungsionalitas aplikasi pada mesin ATM
- Mendefinisikan Class dan membuat Diagram Classnya.
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 :
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!"); } } |
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; } } } |
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; } } |
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; } } |
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("-----------------------------------"); } } |
Comments
Post a Comment