Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Mengatur Layar yang akan ditampilkan pada mesin ATM
- *
- * @author (Ega Prabu Pamungkas-05111940000014)
- * @version (1.2)
- */
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.swing.border.*;
- public class LayarManager
- {
- private JFrame frame;
- private JPanel contentPane;
- private ATMMachine atm;
- private KartuDebit kartuPengguna;
- /**
- * Constructor untuk LayarManager
- */
- public LayarManager()
- {
- makeFrame();
- }
- /**
- * Membuat frame baru untuk mesin ATM
- */
- private void makeFrame()
- {
- frame = new JFrame("Mesin ATM BCA");
- contentPane = (JPanel) frame.getContentPane();
- makeContentPane();
- frame.setMinimumSize(new Dimension(720,480));
- viewLayarAwal();
- frame.pack();
- frame.setVisible(true);
- }
- /**
- * Membuat border dan layout dari konten di dalam frame
- */
- private void makeContentPane()
- {
- contentPane.setBorder(new EmptyBorder(12,12,12,12));
- contentPane.setLayout(new BorderLayout(6,6));
- }
- /**
- * Menampilkan layar awal dari ATM
- */
- private void viewLayarAwal()
- {
- JPanel layarawal = new JPanel(new GridLayout(0,1));
- layarawal.add(addSpace());
- layarawal.add(addSpace());
- layarawal.add(addSpace());
- JLabel selamatDatang = new JLabel("SELAMAT DATANG", JLabel.CENTER);
- selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
- layarawal.add(selamatDatang);
- selamatDatang = new JLabel("DI ATM BCA", JLabel.CENTER);
- selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
- layarawal.add(selamatDatang);
- selamatDatang = new JLabel("SILAHKAN MASUKKAN KARTU ANDA", JLabel.CENTER);
- selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
- layarawal.add(selamatDatang);
- JPanel flow = new JPanel();
- flow.add(layarawal);
- contentPane.add(flow, BorderLayout.CENTER);
- JButton kartu = new JButton("Kartu Impostor");
- kartu.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ inserted();}
- });
- contentPane.add(kartu, BorderLayout.SOUTH);
- }
- /**
- * Menampilkan layar untuk memasukkan PIN ATM
- */
- private void viewLayarPIN()
- {
- JLabel header = new JLabel("ATM BCA", JLabel.CENTER);
- header.setFont(new Font("Calibri", Font.BOLD, 40));
- contentPane.add(header, BorderLayout.NORTH);
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- deskripsi.add(addSpace());
- JLabel desc = new JLabel("MASUKKAN PIN ANDA", JLabel.LEFT);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- JPanel inputPin = new JPanel();
- desc = new JLabel(">");
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- inputPin.add(desc);
- JTextField pin = new JTextField(10);
- pin.setFont(new Font("Calibri", Font.BOLD, 30));
- inputPin.add(pin);
- deskripsi.add(inputPin);
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(flow, BorderLayout.CENTER);
- JPanel btn = new JPanel(new GridLayout(1,0));
- JButton cancel = new JButton("CANCEL");
- cancel.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ System.exit(0); }
- });
- btn.add(cancel);
- JButton okeBt = new JButton("OKE");
- okeBt.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ insertPin(pin);}
- });
- btn.add(okeBt);
- contentPane.add(btn, BorderLayout.SOUTH);
- frame.pack();
- }
- /**
- * Menampilkan layar utama dari mesin ATM
- */
- private void viewLayarUtama()
- {
- boolean struk = false;
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- JLabel desc = new JLabel("UNTUK MENCETAK UANG TANPA STRUK", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("PILIH NOMINAL UANG YANG TELAH DISEDIAKAN", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("UNTUK MEMBATALKAN TRANSAKSI", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("TEKAN CANCEL", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(deskripsi, BorderLayout.NORTH);
- JPanel btnWest = new JPanel(new GridLayout(0,1));
- JButton money = new JButton("100.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(100000,struk);}
- });
- btnWest.add(money);
- money = new JButton("500.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(500000,struk);}
- });
- btnWest.add(money);
- money = new JButton("1.000.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(1000000,struk);}
- });
- btnWest.add(money);
- money = new JButton("DAFTAR E-BANKING");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnWest.add(money);
- contentPane.add(btnWest, BorderLayout.WEST);
- JPanel btnEast = new JPanel(new GridLayout(0,1));
- money = new JButton("2.000.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(2000000,struk);}
- });
- btnEast.add(money);
- money = new JButton("3.000.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(3000000,struk);}
- });
- btnEast.add(money);
- money = new JButton("5.000.000");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(5000000,struk);}
- });
- btnEast.add(money);
- money = new JButton("TRANSAKSI LAINNYA");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ transaksiLainnya();}
- });
- btnEast.add(money);
- contentPane.add(btnEast, BorderLayout.EAST);
- JButton cancel = new JButton("CANCEL");
- cancel.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ System.exit(0); }
- });
- contentPane.add(cancel, BorderLayout.SOUTH);
- frame.pack();
- }
- /**
- * Menampilkan layar transaksi lainnya
- */
- private void viewLayarLainnya()
- {
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- JLabel desc = new JLabel("SILAHKAN MEMILIH SALAH SATU OPSI", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("UNTUK MEMBATALKAN TRANSAKSI", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("TEKAN CANCEL", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- deskripsi.add(addSpace());
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(deskripsi, BorderLayout.NORTH);
- JPanel btnWest = new JPanel(new GridLayout(0,1));
- JButton money = new JButton("INFORMASI");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnWest.add(money);
- money = new JButton("PENARIKAN TUNAI");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- money.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ viewLayarTarikManual();}
- });
- btnWest.add(money);
- money = new JButton("TRANSFER");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnWest.add(money);
- money = new JButton("VOUCHER ISI ULANG");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnWest.add(money);
- contentPane.add(btnWest, BorderLayout.WEST);
- JPanel btnEast = new JPanel(new GridLayout(0,1));
- money = new JButton("PEMBAYARAN");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnEast.add(money);
- money = new JButton("GANTI PIN");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnEast.add(money);
- money = new JButton("FLAZZ");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnEast.add(money);
- money = new JButton("PEMBELIAN");
- money.setFont(new Font("Calibri", Font.BOLD, 20));
- btnEast.add(money);
- contentPane.add(btnEast, BorderLayout.EAST);
- JButton back = new JButton("BACK");
- back.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- contentPane.removeAll();
- makeContentPane();
- viewLayarUtama();
- }
- });
- contentPane.add(back, BorderLayout.SOUTH);
- frame.pack();
- }
- /**
- * Menampilkan layar tarik manual
- */
- private void viewLayarTarikManual()
- {
- contentPane.removeAll();
- makeContentPane();
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- JLabel desc = new JLabel("SILAHKAN MASUKKAN JUMLAH UANG", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("YANG DIINGINKAN", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- contentPane.add(deskripsi, BorderLayout.NORTH);
- JPanel center = new JPanel(new GridLayout(0,1));
- center.add(addSpace());
- JPanel inputpin = new JPanel();
- JLabel rp = new JLabel("RP");
- rp.setFont(new Font("Calibri", Font.BOLD, 30));
- JTextField inputUang = new JTextField(20);
- inputUang.setFont(new Font("Calibri", Font.BOLD, 30));
- inputpin.add(rp);
- inputpin.add(inputUang);
- center.add(inputpin);
- JPanel btn = new JPanel();
- JButton benar = new JButton("BENAR");
- benar.setFont(new Font("Calibri", Font.BOLD, 30));
- benar.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- if(!inputUang.getText().equals("")){;
- cetakStruk(Integer.parseInt(inputUang.getText()));
- }
- }
- });
- btn.add(benar);
- JButton salah = new JButton("SALAH");
- salah.setFont(new Font("Calibri", Font.BOLD, 30));
- salah.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- inputUang.setText("");
- }
- });
- btn.add(salah);
- center.add(btn);
- JButton back = new JButton("BACK");
- back.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ transaksiLainnya(); }
- });
- contentPane.add(back, BorderLayout.SOUTH);
- JPanel flow = new JPanel();
- flow.add(center);
- contentPane.add(flow, BorderLayout.CENTER);
- frame.pack();
- }
- /**
- * Menampilkan layar apakah pengguna ingin mencetak struk atau tidak
- */
- private void viewCetakStruk(int uang)
- {
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- deskripsi.add(addSpace());
- deskripsi.add(addSpace());
- JLabel quest = new JLabel("APAKAH ANDA INGIN MENCETAK STRUK", JLabel.CENTER);
- quest.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(quest);
- quest = new JLabel("PADA TRANSAKSI INI?", JLabel.CENTER);
- quest.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(quest);
- deskripsi.add(addSpace());
- JPanel btn = new JPanel();
- JButton opsi = new JButton("YA");
- opsi.setFont(new Font("Calibri", Font.BOLD, 30));
- opsi.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(uang, true);}
- });
- btn.add(opsi);
- opsi = new JButton("TIDAK");
- opsi.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ tarik(uang, false);}
- });
- opsi.setFont(new Font("Calibri", Font.BOLD, 30));
- btn.add(opsi);
- deskripsi.add(btn);
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(flow, BorderLayout.CENTER);
- frame.pack();
- }
- /**
- * Menampilkan layar saat proses penarikan terjadi (karena tidak ada sistem yang
- * mengatur maka proses berakhir secara manual)
- *
- * @param dapatProses Menunjukkan apakah proses penarikan berhasil atau tidak
- */
- private void viewLayarProses(boolean struk)
- {
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- deskripsi.add(addSpace());
- deskripsi.add(addSpace());
- JLabel desc = new JLabel("TRANSAKSI ANDA", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("SEDANG DIPROSES.......", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- deskripsi.add(addSpace());
- deskripsi.add(addSpace());
- desc = new JLabel("BILA ANDA MENGALAMI PROBLEM", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("MOHON MENGHUBUNGI BCA 021XXXXX", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(flow, BorderLayout.CENTER);
- JButton lanjut = new JButton("Lanjut");
- lanjut.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ prosesEnd(struk);}
- });
- contentPane.add(lanjut, BorderLayout.SOUTH);
- frame.pack();
- }
- /**
- * Menampilkan layar akhir
- */
- private void viewLayarAkhir(boolean struk)
- {
- JPanel deskripsi = new JPanel(new GridLayout(0,1));
- deskripsi.add(addSpace());
- deskripsi.add(addSpace());
- JLabel desc = new JLabel("SILAHKAN MENGAMBIL UANG ANDA", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- if(!struk){
- desc = new JLabel("ATM BCA TIDAK AKAN MENCETAK", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- }
- else{
- desc = new JLabel("ATM BCA AKAN MENCETAK", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- }
- desc = new JLabel("STRUK UNTUK TRANSAKSI INI", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- deskripsi.add(addSpace());
- desc = new JLabel("TERIMA KASIH", JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- desc = new JLabel("Rp "+atm.getNominal(), JLabel.CENTER);
- desc.setFont(new Font("Calibri", Font.BOLD, 30));
- deskripsi.add(desc);
- JPanel flow = new JPanel();
- flow.add(deskripsi);
- contentPane.add(flow, BorderLayout.CENTER);
- JButton tutup = new JButton("AMBIL");
- tutup.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){ System.exit(0);}
- });
- contentPane.add(tutup, BorderLayout.SOUTH);
- frame.pack();
- }
- /**
- * Memasukkan kartu impostor (sebagai demo) untuk mesin ATM
- */
- private void inserted()
- {
- kartuPengguna = new KartuDebit();
- atm = new ATMMachine(kartuPengguna);
- contentPane.removeAll();
- makeContentPane();
- viewLayarPIN();
- }
- /**
- * Memproses PIN yang dimasukkan pada mesin
- */
- private void insertPin(JTextField pin)
- {
- if(atm.getPin().equals(pin.getText())){
- contentPane.removeAll();
- makeContentPane();
- viewLayarUtama();
- }
- else{
- JOptionPane.showMessageDialog(frame, "PIN ANDA SALAH!", "Pesan",
- JOptionPane.INFORMATION_MESSAGE);
- pin.setText("");
- }
- }
- /**
- * Memproses untuk menampilkan layar transaksi lainnya
- */
- private void transaksiLainnya()
- {
- contentPane.removeAll();
- makeContentPane();
- viewLayarLainnya();
- }
- /**
- * Memproses untuk menampilkan layar cetak struk
- */
- private void cetakStruk(int uang)
- {
- if(uang <= atm.getNominal()){
- contentPane.removeAll();
- makeContentPane();
- viewCetakStruk(uang);
- }
- else{
- JOptionPane.showMessageDialog(frame, "MAAF SALDO ANDA TIDAK CUKUP",
- "Pesan", JOptionPane.INFORMATION_MESSAGE);
- }
- }
- /**
- * Memproses uang yang ditarik
- */
- private void tarik(int uang, boolean struk)
- {
- if(uang <= atm.getNominal()){
- atm.prosesPenarikan(uang);
- contentPane.removeAll();
- makeContentPane();
- viewLayarProses(struk);
- }
- else{
- JOptionPane.showMessageDialog(frame, "MAAF SALDO ANDA TIDAK CUKUP",
- "Pesan", JOptionPane.INFORMATION_MESSAGE);
- }
- }
- /**
- * Menampilkan layar selanjutnya setelah proses penarikan selesai
- */
- private void prosesEnd(boolean struk)
- {
- contentPane.removeAll();
- makeContentPane();
- viewLayarAkhir(struk);
- }
- /**
- * Menambhkan spacing
- */
- private JLabel addSpace()
- {
- return new JLabel("");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement