Senin, 03 April 2017

Evaluasi Tengah Semester 2017 - Rancangan Mesin Antrian Bank


Bank merupakan  tempat berkumpulnya masyarakat untuk menyimpan atau pun mengambil uang. Sebelum melakukan transaksi biasanya nasabah diminta mengambil nomor antrian di mesin pencetak antrian.

Mesin pencetak antrian bank adalah system yang berfungsi untuk mengelola nomor urut antrian nasabah bank. Mesin ini mempunyai fungsi, mempermudah teller dan customer service, atau layanan lain pada bank tersebut, memanggil nasabah dan melayani sesuai dengan keperluan nasabah, pada masing-masing layanan.


Rancangan Mesin Antrian Bank:




Setelah membuat rancangan Visualisasi Class-nya, kini saatnya saya mengimplementasikannya ke dalam Source Code. Berikut ini merupakan hasil implementasi SOURCE CODE dalam bahasa Java (Saya menggunakan tools BlueJ) beserta OUTPUT nya:

SOURCE CODE

  1. import java.awt.*;
  2. import java.util.*;
  3. import java.text.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6. public class AntrianBank
  7. {
  8.    private JFrame mainFrame;
  9.    private JLabel headerLabel;
  10.    private JLabel statusLabel;
  11.    private JPanel controlPanel;
  12.    private tambah a;
  13.    public AntrianBank(){
  14.        GUI();
  15.        this.a = new tambah();
  16.    }
  17.    public static void main(String[] args){
  18.        AntrianBank test = new AntrianBank();
  19.        test.tombol();
  20.    }
  21.    private void GUI(){
  22.        mainFrame = new JFrame("BANK NAFI");
  23.        mainFrame.setSize(300,150);
  24.        mainFrame.setLayout(new GridLayout(3, 1));
  25.      
  26.        mainFrame.addWindowListener(new WindowAdapter() {
  27.            public void windowClosing(WindowEvent windowEvent){
  28.                System.exit(0);
  29.            }        
  30.        });
  31.        
  32.        headerLabel = new JLabel("", JLabel.CENTER);        
  33.        statusLabel = new JLabel("", JLabel.CENTER);    
  34.        statusLabel.setSize(350,100);
  35.        controlPanel = new JPanel();
  36.        controlPanel.setLayout(new FlowLayout());
  37.        mainFrame.add(headerLabel);
  38.        mainFrame.add(controlPanel);
  39.        mainFrame.add(statusLabel);
  40.        mainFrame.setVisible(true);  
  41.    }
  42.    private void tombol(){
  43.        headerLabel.setText("SELAMAT DATANG DI BANK NAFI");
  44.        
  45.        JButton okButton = new JButton("Nasabah");
  46.        JButton oceButton = new JButton("Pegawai");
  47.        okButton.addActionListener(new ActionListener(){
  48.            public void actionPerformed(ActionEvent e){
  49.                a.show();
  50.            }          
  51.        });
  52.        oceButton.addActionListener(new ActionListener(){
  53.            public void actionPerformed(ActionEvent e){
  54.                String pil= JOptionPane.showInputDialog("Melayani sebagai: \n1. Teller\n2.Customer Service\n");
  55.                a.kurang(pil);
  56.            }          
  57.        });
  58.        controlPanel.add(okButton);
  59.        controlPanel.add(oceButton);
  60.        mainFrame.setVisible(true);  
  61.    }
  62. }
  63. class tambah
  64. {
  65.    public int noTell=0;
  66.    public int noCS=0;
  67.    public int jmlhT=0;
  68.    public int jmlhCS=0;
  69.    public void show(){
  70.        Date dNow = new Date();
  71.        SimpleDateFormat ft = new SimpleDateFormat("E, dd.MM.yyyy   hh:mm:ss a");
  72.        
  73.        String pilihan = JOptionPane.showInputDialog("Silahkan pilih:\n 1. Teller\n 2. Customer Service");
  74.        char c = pilihan.charAt(0);
  75.        
  76.        if(c=='1'){
  77.            String message0 = String.format("#BANK NAFI#\n\n"+ft.format(dNow)+"\n\nNomor Antrian Anda:\n\nTELLER\nA%d\n\nMohon menunggu hingga nomor dipanggil.\nJumlah antrian: %d nasabah.", noTell+1, noTell-jmlhT);
  78.            JOptionPane.showMessageDialog(null, message0);
  79.            noTell++;
  80.        }
  81.        else if(c=='2'){
  82.            String message1 = String.format("#BANK NAFI#\n\n"+ft.format(dNow)+"\n\nNomor Antrian Anda:\n\nCUSTOMER SERVICE\nB0%d\n\nMohon menunggu hingga nomor dipanggil.\nJumlah antrian: %d nasabah.", noCS+1, noCS-jmlhCS);
  83.            JOptionPane.showMessageDialog(null, message1);
  84.            noCS++;
  85.        }
  86.        else{
  87.            String message2 = String.format("Pilihan yang Anda masukkan salah. Silahkan coba lagi!");
  88.            JOptionPane.showMessageDialog(null, message2);
  89.        }
  90.     }
  91.    public void kurang(String x){
  92.        switch (x){
  93.            case "1":
  94.               if(noTell-jmlhT<=0){
  95.                   String message3 = String.format("Tidak ada antrian untuk Teller");
  96.                   JOptionPane.showMessageDialog(null, message3);
  97.               }
  98.               else{
  99.                   jmlhT++;
  100.                   String message4 = String.format("Berhasil mengurangi nasabah pada antrian %s.\nSisa nasabah yang belum mendapatkan pelayanan %d", x, noTell-jmlhT);
  101.                   JOptionPane.showMessageDialog(null, message4);
  102.               }
  103.               break;
  104.            case "2":
  105.                if(noCS-jmlhCS<=0){
  106.                   String message5 = String.format("Tidak ada antrian untuk Customer Service");
  107.                   JOptionPane.showMessageDialog(null, message5);
  108.               }
  109.               else{
  110.                   jmlhCS++;
  111.                   String message6 = String.format("Berhasil mengurangi nasabah pada antrian %s.\nSisa nasabah yang belum mendapatkan pelayanan %d", x, noCS-jmlhCS);
  112.                   JOptionPane.showMessageDialog(null, message6);
  113.               }
  114.               break;
  115.            default:
  116.               String message7 = String.format("Pilihan yang Anda masukkan salah. Silahkan coba lagi!");
  117.               JOptionPane.showMessageDialog(null, message7);
  118.               break;
  119.        }
  120.    }
  121. }

OUTPUT

Pilih sebagai nasabah atau Pegawai



Jika memilih sebagai nasabah:
Jika ingin mengantri di Teller, maka pilih opsi 1
Jika ingin mengantri di Customer Service, maka pilih opsi 2



Nomor antrian akan keluar seperti ini




Jika memilih sebagai pegawai:
Jika melayani sebagai Teller, maka pilih opsi 1
Jika melayani sebagai Customer Service, maka pilih opsi 2



Akan keluar seperti ini



Penggunaan Dialog Box

JOption Pane merupakan sebuah class yang digunakan sebagai standar dialog box untuk memberikan informasi kepada pengguna aplikasi. Sebenarnya JOption Pane memiliki banyak method, dan kebanyakan method tersebut merupakan static method. Berikut empat method dari JOption Pane, yaitu 

  1. showConfirmDialog
  2. showInputDialog
  3. showMessageDialog
  4. showOptionDialog. 

Di bawah ini merupakan contoh dari penggunaan JOption Pane yang menggunakan method  showInputDialog dan showMessageDialog.

  • Source Code




      DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
      1. import javax.swing.JOptionPane;
      2.  
      3. public class NameDialog
      4. {
      5.    public static void main (String[] args)
      6.    {
      7.        String name= JOptionPane.showInputDialog ("Hello, what is your name?");
      8.        String message= String.format ("Welcome to Java Programming, %s!", name);
      9.        
      10.        JOptionPane.showMessageDialog (null, message);
      11.    }
      12. }


      • Output





      Lalu bagaimana jika sebuah program yang berisi class Account yang tujuannya untuk mempertahankan keseimbangan sebuah rekening Bank menggunakan JOption Pane? Berikut perbedaan dimana program yang tidak menggunakan dan menggunakan JOption Pane.

      Source Code Class Account 

      DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
      1.  
      2. public class Account
      3. {
      4.     private double balance;
      5.    
      6.     public Account (double initialBalance)
      7.     {
      8.         if (initialBalance > 0.0)
      9.             balance = initialBalance;
      10.     }
      11.    
      12.     public void credit (double amount)
      13.     {
      14.         balance = balance + amount;
      15.     }
      16.    
      17.     public double getBalance()
      18.     {
      19.         return balance;
      20.     }
      21. }


      Tanpa Menggunakan JOption Pane

      • Source Code



        DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
        1. import java.util.Scanner;
        2.  
        3. public class AccountTest
        4. {
        5.     public static void main (String[] args)
        6.     {
        7.         Account account1= new Account (50.00);
        8.         Account account2= new Account (-7.53);
        9.        
        10.         System.out.printf ("account1 balance: $%.2f\n", account1.getBalance());
        11.         System.out.printf ("account2 balance: $%.2f\n\n", account2.getBalance());
        12.        
        13.         Scanner input= new Scanner (System.in);
        14.         double depositAmount;
        15.        
        16.         System.out.print ("Enter deposit amount for account1: ");
        17.         depositAmount= input.nextDouble();
        18.         System.out.printf ("\nadding %.2f to account1 balance\n\n", depositAmount);
        19.         account1.credit (depositAmount);
        20.        
        21.         System.out.printf ("account1 balance: $%.2f\n", account1.getBalance());
        22.         System.out.printf ("account2 balance: $%.2f\n\n", account2.getBalance());
        23.        
        24.         System.out.print ("Enter deposit amount for account2: ");
        25.         depositAmount= input.nextDouble();
        26.         System.out.printf ("\nadding %.2f to account2 balance\n\n", depositAmount);
        27.         account2.credit (depositAmount);
        28.        
        29.         System.out.printf ("account1 balance: $%.2f\n", account1.getBalance());
        30.         System.out.printf ("account2 balance: $%.2f\n", account2.getBalance());
        31.     }
        32. }


        • Output




        Menggunakan JOption Pane

        • Source Code



            DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
            1. import javax.swing.JOptionPane;
            2.  
            3. public class AccountTestWithDialogBox
            4. {
            5.    public static void main (String[] args)
            6.    {
            7.        Account account1 = new Account(50.00);
            8.        Account account2 = new Account(-7.53);
            9.  
            10.        String message0 = String.format("account1 balance: $%.2f\naccount2 balance: $%.2f", account1.getBalance(), account2.getBalance());
            11.        JOptionPane.showMessageDialog(null, message0);
            12.        
            13.        String depositAmount0 = JOptionPane.showInputDialog("Enter deposit amount for account1: ");
            14.        
            15.        double double1 = Double.parseDouble(depositAmount0);
            16.        account1.credit(double1);
            17.        
            18.        String message1 = String.format("\nadding %s to account1 balance\n\n", depositAmount0);
            19.        JOptionPane.showMessageDialog(null, message1);
            20.        String message2 = String.format("account1 balance: $%.2f\naccount2 balance: $%.2f", account1.getBalance(), account2.getBalance());
            21.        JOptionPane.showMessageDialog(null, message2);
            22.        
            23.        String depositAmount1 = JOptionPane.showInputDialog("Enter deposit amount for account2: ");
            24.        
            25.        double double2 = Double.parseDouble(depositAmount1);
            26.        account2.credit(double2);
            27.        
            28.        String message3 = String.format("\nadding %s to account2 balance\n\n", depositAmount1);
            29.        JOptionPane.showMessageDialog(null, message3);
            30.        String message4 = String.format("account1 balance: $%.2f\naccount2 balance: $%.2f", account1.getBalance(), account2.getBalance());
            31.        JOptionPane.showMessageDialog(null, message4);
            32.    }
            33. }


            • Output






            Rangkuman Buku System Analysis and Design

            BAB 3: Requirements Determination -           Fase Analisis Fase analisis menentukan garis besar tujuan bisnis untuk sistem, menentukan...