Skip to content
This repository was archived by the owner on Sep 7, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions BankSystem/Bank.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;

public class Bank {

protected ArrayList<UserDetail> userDetail = new ArrayList<>();
protected int index;
protected boolean isUser;

public void getUserDetails(String directory) throws IOException {
Path file = Paths.get(directory);
String data = new String(Files.readAllBytes(file));
String[] line = data.split("\n");
for (int i = 0; i < line.length; i++) {
String[] user = line[i].split(";");
this.userDetail.add(i, new UserDetail(user[0], user[1], Integer.parseInt(user[2]),
Integer.parseInt(user[3]), user[4], user[5], user[6]));
}
}

public void printDetails() {
System.out.println("Nama\t\t: " + userDetail.get(index).getName());
System.out.println("Umur \t\t: " + userDetail.get(index).getAge());
System.out.println("Alamat \t\t: " + userDetail.get(index).getAddress());
System.out.println("Email \t\t: " + userDetail.get(index).getEmail());
System.out.println("Nomor Rekening\t: " + userDetail.get(index).getAccountNumber());
System.out.println("Jumlah Uang\t: " + "₩ " + userDetail.get(index).getMoneyAmount());
}

public void login(String name, String password) {

}

public void saving(int amount) {
userDetail.get(index).saving(amount);
}

public void transfer(int amount, String accountNumber) {

}

public void takeMoney(int amount) {
userDetail.get(index).takeMoney(amount);
}

public void getActivityLog() {
String activityLog = ("" + userDetail.get(index).getActivityLog()).replace("[", "").replace("]", "")
.replace(", ", "");
System.out.println("\nLog Aktivitas");
System.out.println(activityLog);
}

public boolean isUser() {
return isUser;
}

protected void saveData() throws IOException {
Path file = Paths.get("D:/PBO/bilaTask/BankSystem/BankPark.txt");
String saveData = "";
for (int i = 0; i < userDetail.size(); i++) {
saveData += userDetail.get(i).getName() + ";" + userDetail.get(i).getPassword() + ";"
+ userDetail.get(i).getAge() + ";" + userDetail.get(i).getMoneyAmount() + ";"
+ userDetail.get(i).getEmail() + ";" + userDetail.get(i).getAccountNumber() + ";"
+ userDetail.get(i).getAddress() + "\n";
}
Files.write(file, saveData.getBytes(StandardCharsets.ISO_8859_1));
}
}
56 changes: 56 additions & 0 deletions BankSystem/BankPark.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import java.io.IOException;

public class BankPark extends Bank {

private String directory = "D:/PBO/bilaTask/BankSystem/BankPark.txt";

public BankPark() throws Exception {
getUserDetails();
}

public void getUserDetails() throws IOException {
super.getUserDetails(directory);
}

@Override
public void printDetails() {
super.printDetails();
}

@Override
public void saveData() throws IOException {
super.saveData();
}

@Override
public void saving(int amount) {
super.saving(amount);
}

@Override
public void login(String name, String password) {
for (int i = 0; i < userDetail.size(); i++) {
if (userDetail.get(i).getName().equals(name) && userDetail.get(i).getPassword().equals(password)) {
index = i;
System.out.println("---------------------------------------------");
isUser = true;
return;
}
}
System.out.println("Username atau password salah");
isUser = false;
}

@Override
public void transfer(int amount, String accountNumber) {
for (int i = 0; i < userDetail.size(); i++) {
if (userDetail.get(i).getAccountNumber().equals(accountNumber)) {
userDetail.get(i).savingFromTransfer(amount);
userDetail.get(index).transfer(amount, accountNumber, userDetail.get(i).getName());
return;
}
}
System.out.println("Nomor rekening tidak ditemukan");
}

}
4 changes: 4 additions & 0 deletions BankSystem/BankPark.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bilbubble;susadbans305;19;100000;putrinabila065@gmail.com;202012340321;Jl.S.Saddang
septintan;susadbans305;20;120000;asep@unhas.com;202017921233;Jl.A.Tonro
ghaisis;susadbans305;23;500000;aizchubchub@yahoo.com;20201861273;Jl.Faisal
hyung;susadbans305;24;857400;japas@ymail.com;20204332833;Jl.Alauddin
166 changes: 166 additions & 0 deletions BankSystem/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
import java.util.Scanner;

public class Main {
static Scanner sc = new Scanner(System.in);
static boolean done = false;
static BankPark nasabah;

public static void main(String[] args) throws Exception {
Bank nasabah = new BankPark();
int amount;
loginMenu();
System.out.print("Username : ");
String userName = sc.nextLine();
System.out.print("Password : ");
String password = sc.nextLine();

nasabah.login(userName, password);
if (nasabah.isUser()) {
while (!done) {
mainMenu();
System.out.print("\nInput : ");
userName = sc.next();
switch (userName) {
case "1":
System.out.println(" MENU TRANSFER ");
System.out.print("Masukkan no rekening tujuan anda : ");
String ok = sc.next();
password = sc.nextLine();
System.out.print("Masukkan jumlah nominal yang akan ditransfer : ");
amount = sc.nextInt();
nasabah.transfer(amount, ok);
backToMainMenu();
break;
case "2":
System.out.println(" MENU SETOR TUNAI ");
System.out.print("Masukkan jumlah nominal yang akan disetor tunai : ");
amount = sc.nextInt();
nasabah.saving(amount);
backToMainMenu();
break;
case "3":
System.out.println(" MENU PENARIKAN TUNAI ");
System.out.print("Masukkan jumlah nominal yang akan ditarik tunai : ");
amount = sc.nextInt();
nasabah.takeMoney(amount);
backToMainMenu();
break;
case "4":
nasabah.getActivityLog();
backToMainMenu();
break;
case "5":
nasabah.printDetails();
backToMainMenu();
break;
case "0":
done = true;
nasabah.saveData();
return;
default:
System.out.println("Silahkan pilih menu kembali");
mainMenu();
System.out.print("Input : ");
userName = sc.nextLine();
break;
}
}
} else {
for (int i = 0; i < 3; i++) {
if (i == 3) {
System.out.println("Anda sudah melewati batas dari percobaan\nSilahkan coba lagi nanti");
return;
}
System.out.print("Username : ");
userName = sc.nextLine();
System.out.print("Password : ");
password = sc.nextLine();
nasabah.login(userName, password);
if (nasabah.isUser()) {
while (!done) {
mainMenu();
System.out.print("\nInput : ");
userName = sc.next();
switch (userName) {
case "1":
System.out.println(" MENU TRANSFER ");
System.out.print("Masukkan no rekening tujuan anda : ");
password = sc.next();
String accountNumber = sc.nextLine();
System.out.print("Masukkan jumlah nominal yang akan ditransfer : ");
amount = sc.nextInt();
nasabah.transfer(amount, accountNumber);
backToMainMenu();
break;
case "2":
System.out.println(" MENU SETOR TUNAI ");
System.out.print("Masukkan jumlah nominal yang akan disetor tunai : ");
amount = sc.nextInt();
nasabah.saving(amount);
backToMainMenu();
break;
case "3":
System.out.println(" MENU PENARIKAN TUNAI ");
System.out.print("Masukkan jumlah nominal yang akan ditarik tunai : ");
amount = sc.nextInt();
backToMainMenu();
break;
case "4":
nasabah.getActivityLog();
backToMainMenu();
break;
case "5":
nasabah.printDetails();
backToMainMenu();
break;
case "0":
done = true;
nasabah.saveData();
return;
default:
System.out.println("Silahkan pilih menu kembali");
mainMenu();
System.out.print("Input : ");
userName = sc.next();
break;
}
}
}

}
}
}

public static void loginMenu() {
System.out.println(" SEALAMAT DATANG DI BANK PARK SEO JOON ");
System.out.println("---------------------------------------------");
System.out.println(" -Masukkan Username dan Password anda- ");
}

public static void mainMenu() {
System.out.println(" PILIH TRANSAKSI YANG ANDA INGINKAN ");
System.out.println(" TEKAN EXIT UNTUK PEMBATALAN ");
System.out.println("1.Transfer");
System.out.println("2.Setor Tunai");
System.out.println("3.Penarikan Tunai");
System.out.println("4.Log Aktivitas");
System.out.println("5.Informasi Detail");
System.out.println("0.Exit");
}

public static void backToMainMenu() {
System.out.println("Lanjutkan ? (y/t)");
String stopOrContinue = sc.next();
switch (stopOrContinue) {
case "y":
done = false;
break;
case "t":
done = true;
break;
default:
stopOrContinue = sc.next();
break;
}
}
}
20 changes: 20 additions & 0 deletions BankSystem/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Bank
Spesifikasi Project
• Program ini merupakan Sistem Bank Sederhana
• Terdapat Bank yang tersimpan di dalam file (BankPark).txt, Terdapat Nasabah, setiap nasabah dapat memiliki lebih dari 1 akun, namun hanya terdapat 1 akun dalam 1 bank
• Setiap Nasabah memiliki Rekening, jika nasabah memiliki akun dibeberapa bank, maka masing-masing akun memiliki detail rekening yang berbeda-beda
• Nasabah dapat melakukan aktifitas menabung, transfer dan menarik uang
• Aktifitas menabung dan menarik uang hanya dapat dilakukan jika nasabah menggunakan akun yang sesuai dengan bank yang dikunjungi
• Untuk aktifitas transfer, terdapat nasabah lain yang ditransferkan
• Setiap nasabah dapat melihat log aktifitas mereka, log aktifitas dikategorikan berdasarkan aktifitas menabung, menarik, mentransfer dan ditarnsferkan
• Setiap aktifitas diatas hanya dapat dilihat oleh nasabah yang bersangkutan setelah melakukan proses autentikasi
Alur Kerja
Ketika di run maka akan muncul perintah login menggunakan UserName dan password yang terdaftar di (BankPark).txt , setelah itu akan muncul diberikan menu yang bisa dipilih, seperti transfer, informasi detail, penarikan uang dan sebagainya, input harus (1,2,3,4,5,atau 0), tidak boleh salah, jika ada yang salah akan diminta untuk melakukan input baru.
Bagian dari project anda yang menerapkan konsep object oriented
1. Class dan Objek terdapat pada class UserDetail
2. Setter dan getter terdapat pada class UserDetail
3. Encapsulation terdapat pada class BankPark, Bank, UserDetail
4. Inheritence dan polymorphisme terdapat pada class BankPark

Hal-hal yang ingin diimprove kedepannya mengenai project Bank
Semoga bisa lebih irit memory jika memungkinkan dan Menerapkan javaFX.
Loading