Parkir Online

Ulangan Tengah Semester (UTS)
Pemrograman Berbasis Objek
Kelas A

Kali ini saya akan membuat program pembayaran parkir secara online. Pembayaran parkir secara online dilakukan dengan kartu. Tiap kendaraan akan dibuatkan ID akun masing-masing sehingga pembayaran dilakukan dengan memasukkan ID akun bukan plat nomor karena saya pikir memasukkan angka saja akan lebih mudah untuk diingat daripada memasukkan campuran huruf dan angka yang susah diingat. Jadi ID yang harus dimasukkan adalah ID yang sudah terdaftar.

Disini saya membutuhkan 6 class disini yaitu, Keypad, PO, POStudyCase, Account, Screen, dan EMoneyDatabase. Berikut source code tiap kelasnya dan tampilan akhirnya :

1. Source Code Keypad
Berfungsi sebagai method untuk mengambil input dari user.

 import java.util.Scanner;  
 /**  
  * Write a description of class KeyPad here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class Keypad  
 {  
   private Scanner input;  
   public Keypad()  
   {  
     input = new Scanner(System.in);  
   }  
   public int getInput()  
   {  
     return input.nextInt();  
   }  
 }  

2. Source Code PO
Berfungsi sebagai method untuk mencetak output ke layer.

 /**  
  * Write a description of class PO here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class PO  
 {  
   private Account currentAccount;  
   private Keypad keypad;  
   private Screen screen;  
   private double bill;  
   private EMoneyDatabase eMoneyDatabase;  
   public PO()  
   {  
     currentAccount = null;  
     keypad = new Keypad();  
     screen = new Screen();  
     bill = 2000;  
     eMoneyDatabase = new EMoneyDatabase();  
   }  
   public void run() {  
     while (true)  
     {  
       while (currentAccount == null)  
       {  
         displayGetAccount();  
       }        
       screen.displayMessageLine("");  
       if (currentAccount.getBalance() >= bill)  
       {  
         currentAccount.pay(bill);  
         printStruk();  
       }   
       else   
       {  
         screen.displayMessageLine("Saldo anda tidak mencukupi untuk membayar biaya parkir.");  
         screen.displayMessage("Saldo anda: ");  
         screen.displayRupiah(currentAccount.getBalance());  
       }  
       currentAccount = null;  
     }  
   }  
   public void displayGetAccount()  
   {  
     screen.displayMessageLine("=====DINAS PERHUBUNGAN KOTA SURABAYA=====");  
     screen.displayMessage("Tarif Parkir: ");  
     screen.displayRupiah(bill);  
     screen.displayMessageLine("Masukkan ID Akun Anda Untuk Membayar Biaya Parkir!");  
     screen.displayMessage("ID Akun: ");  
     currentAccount = eMoneyDatabase.getAccount(keypad.getInput());  
   }  
   public void printStruk()  
   {  
     screen.displayMessageLine("=====DINAS PERHUBUNGAN KOTA SURABAYA=====");  
     screen.displayCurrentTime();  
     screen.displayMessage("Tarif Parkir: ");  
     screen.displayRupiah(bill);  
     screen.displayMessage("Sisa saldo: ");  
     screen.displayRupiah(currentAccount.getBalance());  
     screen.displayMessageLine("Terima Kasih Sudah Menggunakan Layanan Kami");  
   }  
 }  

3. Source Code POStudyCase
Class ini merupakan model dari akun user, di dalamnya terdapat method untuk mendapat ID akun, emndapat saldo akun, dan melakukan pembayaran biaya parkir.

 /**  
  * Write a description of class POCase here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class POStudyCase  
 {  
   public static void main(String[] args)  
   {  
     PO po = new PO();  
     po.run();  
   }  
 }  

4. Source Code Account
Dalam class ini terdapat method constructor yang berfungsi untuk membuat akun berdasarkan model pada class account, juga terdapat method untuk mendapatkan user.

 /**  
  * Write a description of class Account here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class Account  
 {  
   private int accountID;  
   private double balance;  
   public Account(int accountID, double balance)  
   {  
     this.accountID = accountID;  
     this.balance = balance;  
   }  
   public int getAccountID()  
   {  
     return accountID;  
   }  
   public void pay(double amount)  
   {  
     balance -= amount;  
   }  
   public double getBalance()  
   {  
     return balance;  
   }  
 }  

5. Source Code Screen
Dalam class ini terdapat method run yang berfungsi untuk menjalankan fungsi utama PO.

 import java.text.SimpleDateFormat;  
 import java.util.Calendar;  
 /**  
  * Write a description of class Screen here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class Screen  
 {    
   public void displayMessage(String string)  
   {  
     System.out.print(string);  
   }  
   public void displayMessageLine(String string)  
   {  
     System.out.println(string + "\n");  
   }  
   public void displayRupiah(double money)  
   {      
     System.out.print("Rp. " + money + "\n");  
   }  
   public void displayCurrentTime() {  
     Calendar cal = Calendar.getInstance();  
     SimpleDateFormat sdf = new SimpleDateFormat("EEE , dd/MM/yyyy HH:mm:ss");  
     System.out.println( sdf.format(cal.getTime()) );  
   }  
 }  

6. Source Code EMoneyDatabase
Dalam class ini terdapat method run untuk menjalankan program Utama. Dalam method main ini akan memanggil method run yang ada di class PO.

 /**  
  * Write a description of class EParkir here.  
  *  
  * @author Yuki Y.R.  
  * @version 15/10/2018  
  */  
 public class EMoneyDatabase  
 {  
   private Account[] accounts;  
   public EMoneyDatabase()  
   {  
     accounts = new Account[10];  
     accounts[0] = new Account(35221107, 200000);  
     accounts[1] = new Account(35220103, 300000);  
     accounts[2] = new Account(35221411, 200000);  
     accounts[3] = new Account(35220410, 300000);  
     accounts[4] = new Account(35220612, 200000);  
     accounts[5] = new Account(35221404, 300000);  
     accounts[6] = new Account(35222207, 200000);  
     accounts[7] = new Account(35220302, 300000);  
     accounts[8] = new Account(35222001, 200000);  
     accounts[9] = new Account(35221504, 300000);  
   }  
   public Account getAccount(int accountID)  
   {  
     for (Account currentAccount : accounts)  
     {  
       if (currentAccount.getAccountID() == accountID)  
       {  
         return currentAccount;  
       }       
     }     
     return null;  
   }  
 }  

7. Tampilan Akhir



Sekian, terima kasih sudah membaca.

Komentar

Postingan populer dari blog ini

Codeigniter "Toko Buah"

AC Remote Control

Laman Berita