Dalam ETS PBO D kali ini, kami mendapatkan tugas supaya membuat program java untuk sebuah permasalahan, yaitu Pembayaran E-Toll. Dalam Permasalahan ini diberi Flow Char yaitu
Setelah Account dibuat maka langkah selanjutnya yang dibuat yaitu Account_Database. yang berguna untuk menyimpan data Account yang sudah dibuat.
Class Screen berfungsi sebagai tampilan display untuk para pengguna E-Toll
Class ini berfungsi ketika transaksi sukses dilaksanakan, maka fungsi nota berfungsi untuk ngeprint hasil dari transaksi
class ini merupakan inti dari semua fungsi, karena semua proses akan melalui class ini
nah dari sini berasumsi bahwa komponen yang dibutuhkan dalam hal ini yaitu :
- Menempelkan Kartu E-Money ke dalam mesin GTO atau Gardu Tol Otomatis
- Jika Saldo kartu E-Money mencukupi maka gerbang Tol akan terbuka, dan jika tidak mencukupi maka Gerbang Tol tetap tertutup dan pengendara tidak bisa melewatinya
- Setelah transaksi pembayaran selesai maka mesin gto akan mengeluarkan bukti pembayaran yang berisi tanggal transaksi, biaya tol dan sisa saldo dalam E-Money
- class Account
Class Account ini berfungsi sebagai pencatatan Acount Number
public class Account
{
private int accountNumber;
private int balance;
public Account(int AccountNumber, int Balance)
{
accountNumber = AccountNumber;
balance = Balance;
}
public int getBalance()
{
return balance;
}
public int getAccountNumber()
{
return accountNumber;
}
public void pay(int Cost)
{
balance = balance - Cost;
}
}
- class Account_Database
Setelah Account dibuat maka langkah selanjutnya yang dibuat yaitu Account_Database. yang berguna untuk menyimpan data Account yang sudah dibuat.
public class Account_Database
{
private Account accounts[];
public Account_Database(){
accounts = new Account[3];
accounts[0] = new Account(11111,1000000);
accounts[1] = new Account(12345, 10000);
accounts[2] = new Account(99999, 9900);
}
public Account getAccount(int AccountNumber)
{
for(Account currentAccount : accounts)
{
if ( currentAccount.getAccountNumber() == AccountNumber ) return currentAccount;
}
return null;
}
public boolean authenticateUser(int UserAccount)
{
Account userAccount = getAccount(UserAccount);
if(userAccount == null)
return false;
return true;
}
public int getAccountBalance(Account useraccount)
{
return useraccount.getBalance();
}
public void tollpay(Account useraccount, int amount)
{
useraccount.pay(amount);
}
}
- class Keypad
class ini berfungsi sebagai Autentifikasi ketika kartunya di tempel
import java.util.Scanner;
public class Keypad
{
private Scanner input;
public Keypad(){
input = new Scanner(System.in);
}
public int getInput(){
return input.nextInt();
}
}
- class Screen
Class Screen berfungsi sebagai tampilan display untuk para pengguna E-Toll
public class Screen
{
public void displayMessage(String message){
System.out.print(message);
}
public void displayMessageLine(String message){
System.out.println(message);
}
public void displayDollarAmount(double amount){
System.out.printf("$%,.2f", amount);
}
}
- class Nota
Class ini berfungsi ketika transaksi sukses dilaksanakan, maka fungsi nota berfungsi untuk ngeprint hasil dari transaksi
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Nota
{
int balance;
int price;
private Date date;
private DateFormat dateFormat;
public Nota(int Balance, int Price)
{
balance = Balance;
price = Price;
dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
date = new Date();
}
public void print()
{
System.out.println("###############################################");
System.out.println("##Transaksi E-Toll");
System.out.println("##Tanggal Transaksi: " + dateFormat.format(date));
System.out.println("##Biaya Tol: " + price);
System.out.println("##Sisa Saldo: " + balance);
System.out.println("###############################################");
}
}
- class TollMachine
class ini merupakan inti dari semua fungsi, karena semua proses akan melalui class ini
/**
* Write a description of class TollMachine here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class TollMachine
{
private int cost;
private Account_Database acc_db;
private Keypad keypad;
private Nota nota;
private Screen screen;
public TollMachine()
{
cost = 10000;
acc_db = new Account_Database();
keypad = new Keypad();
screen = new Screen();
}
public void run()
{
while(true)
{
screen.displayMessageLine("Please enter your Card Number\n");
int accNum = keypad.getInput();
if(acc_db.authenticateUser(accNum))
{
if(acc_db.getAccountBalance(acc_db.getAccount(accNum)) >= cost)
{
acc_db.tollpay(acc_db.getAccount(accNum), cost);
nota = new Nota(acc_db.getAccount(accNum).getBalance(), cost);
nota.print();
screen.displayMessageLine("Thank you for using our service\nPlease take your card and proof of transaction\n");
}
else
{
screen.displayMessageLine("Insufficient funds\nPlease take your card back\n");
}
}
else
{
screen.displayMessageLine("Card Number not found\nPlease take your card back");
}
}
}
}
Komentar
Posting Komentar