Minggu, 17 April 2016

Aplikasi Sistem Informasi



Sistem Informasi ( Pengenalan Swing Menus ) &
Sistem Informasi with Saving ( Operasi File, Simple Notepad )

Jika pada sesi sebelumnya hanya menampilkan output ke tabel, pada sesi kali ini akan membahas bagaimana cara menampilkan menu ( Swing Menus ), jika data pada tabel di klik kanan akan ada menu ( hapus ), operasi file, dan menyimpan data ( pada tabel ) ke notepad. Oke, Langsung saja berikut langkah-langkahnya gan, monggo disimak:
1.        Buka Netbeans 8.0.2 , buat project baru dengan cara klik file - new project atau langsung pilih icon new project.
2.       Isi project name ( sesuai keinginan ) dan atur lokasi penyimpanan pekerjaan pada project location. Jangan lupa untuk menghilangkan centang pada create main class, klik finish.
3.         Project telah dibuat, kemudian klik kanan pada source packages - new - JFrame Form, maka akan muncul lembar kerja frame. Kemudian desain sesuai dengan aplikasi yang akan dibuat.
4.             Berikut gambar tampilan desain yang telah saya buat :



5.             Source code

a.       Deklarasi pada public class
public class utama extends javax.swing.JFrame {

    /**
     * Creates new form utama
     */
    private Vector<Vector<String>> DB = new Vector(), data = new Vector();
    private Vector head = new Vector();
    private int max = 0;
    private String fileName = "D:/dataMahasiswa.txt";
    private DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
    public utama() {
        initComponents();
        rightRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
        bacaData();
        updateTabel();
    }

b.      Method bacaData()
Digunakan untuk membaca data yang telah kita buat dan tersimpan ke notepad.
private void bacaData(){
        try {
            BufferedReader br = new BufferedReader(new FileReader(fileName));
            String tmp;
            while((tmp=br.readLine())!=null){
                StringTokenizer st = new StringTokenizer(tmp, "#");
                Vector<String> tmp2 = new Vector();
                String No = st.nextToken();
                String NIM = st.nextToken();
                String Nama = st.nextToken();
                String Alamat = st.nextToken();
                tmp2.add(No); tmp2.add(NIM); tmp2.add(Nama); tmp2.add(Alamat);
                DB.add(tmp2);
                if(Integer.parseInt(No) > max) max = Integer.parseInt(No);
            }
            br.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

c.       Method UpdateTable()
Digunakan untuk meng-update tabel. Pada tampilan desain terdapat checkbox ( tampilkan alamat ), ketika checkbox di checklist maka tabel akan meng-update. Jika checklist dihilangkan, maka kolom alamat akan hilang.
private void updateTabel(){
        data = new Vector();
        head = new Vector();
        head.add("No"); head.add("NIM"); head.add("Nama");
        if(ckbShowAlamat.isSelected()) head.add("Alamat");
       
        for (Vector<String> v1 : DB) {
            Vector<String> v2 = new Vector<>();
            v2.add(v1.get(0));
            v2.add(v1.get(1));
            v2.add(v1.get(2));
            if(ckbShowAlamat.isSelected()) v2.add(v1.get(3));
            data.add(v2);
        }
       
        tbData.setModel(new DefaultTableModel(data, head));
        tbData.getColumnModel().getColumn(0).setPreferredWidth(50);
        tbData.getColumnModel().getColumn(1).setPreferredWidth(100);
        tbData.getColumnModel().getColumn(2).setPreferredWidth(200);
        if(ckbShowAlamat.isSelected()) tbData.getColumnModel().getColumn(3).setPreferredWidth(300);
        tbData.getColumnModel().getColumn(0).setCellRenderer(rightRenderer);
        tbData.getColumnModel().getColumn(1).setCellRenderer(rightRenderer);
    }

d.      Method simpanData()
Digunakan untuk menyimpan data yang yang telah diinput ke notepad.
private void simpanData(){
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
            for (Vector<String> v : DB) {
                bw.write(v.get(0)+"#"+v.get(1)+"#"+v.get(2)+"#"+v.get(3));
                bw.newLine();
            }
            bw.close();
        } catch (Exception e) {
        }
    }

e.       Method hapusData()
Digunakan untuk menghapus data pada tabel. Source code ini beroperasi pada button hapus dan menu hapus.
private void hapusData() {
        String nim = tfNIM.getText().trim();
        if(nim.equals("")) {
            JOptionPane.showMessageDialog(this, "Tentukan NIM yang ingin dihapus.");
        } else {
            if(JOptionPane.showConfirmDialog(this, "Data "+nim+" dihapus?", "Konfirmasi", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) return;
            boolean b = false;
            int i;
            for (i = 0; i < DB.size(); i++) {
                if(DB.get(i).get(1).equals(nim)) { b = true; break; }
            }
            if(b){
                DB.remove(i);
                JOptionPane.showMessageDialog(this, "Proses Hapus sukses.");
                max = 0;
                for (Vector<String> v : DB) {
                    if(Integer.parseInt(v.get(0)) > max) max = Integer.parseInt(v.get(0));
                }
                updateTabel();
                tfNIM.setText(""); tfNama.setText(""); tfAlamat.setText("");
            } else {
                JOptionPane.showMessageDialog(this, "Data tidak ditemukan.");
            }
        }
    }

f.       Source code pada button simpan
Untuk menuliskan kode pada button,  klik kanan button simpan – Event – Action – Action Performed terlebih dahulu atau klik dua kali button tersebut.
private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        String no = String.valueOf(max+1);
        String nim = tfNIM.getText().trim();
        String nama = tfNama.getText().trim();
        String alamat = tfAlamat.getText().trim();
        if(nim.equals("") || nama.equals("") || alamat.equals(""))
            JOptionPane.showMessageDialog(this, "Semua isian harus diisi.");
        else {
            boolean b = false;
            int i;
            Vector<String> v = new Vector<>();
           
            for (i = 0; i < DB.size(); i++) {
                if(DB.get(i).get(1).equals(nim)) { b = true; break; }
            }
            if(b){
                v.add(DB.get(i).get(0)); v.add(nim); v.add(nama); v.add(alamat);
                DB.setElementAt(v, i);
                updateTabel();
                JOptionPane.showMessageDialog(this, "Proses update sukses.");
            } else {
                v.add(no); v.add(nim); v.add(nama); v.add(alamat);
                DB.add(v);
                updateTabel(); max++;
                JOptionPane.showMessageDialog(this, "Proses simpan sukses.");
            }
            tfNIM.setText(""); tfNama.setText(""); tfAlamat.setText(""); tfNIM.setEditable(false);
        }
    }
g.      Kode pada button hapus
private void bHapusActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        hapusData();
    }

h.      Source kode pada mouseclicked
Klik kanan tabel – Event – Mouse – MouseClicked – tulis kode..
private void tbDataMouseClicked(java.awt.event.MouseEvent evt) {                                   
        // TODO add your handling code here:
        int row = tbData.getSelectedRow();
        if(row < 0) {
            JOptionPane.showMessageDialog(this, "Pilih data (klik kiri) terlebih dahulu.");
            return;
        }
        tfNIM.setText(DB.get(row).get(1));
        tfNama.setText(DB.get(row).get(2));
        tfAlamat.setText(DB.get(row).get(3));
        tfNIM.setEditable(false);
        if(evt.getButton() == java.awt.event.MouseEvent.BUTTON3) {
            miHapus.setText("Hapus "+tfNIM.getText()+", "+tfNama.getText());
            popupMenu.show(tbData, evt.getX(), evt.getY());
        }
    }

i.        Source code pada button tambah
private void bBaruActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        tfNIM.setEditable(true);
        tfNIM.setText(""); tfNama.setText(""); tfAlamat.setText(""); tfNIM.requestFocus();
    }

j.        Kode pada checkbox
private void ckbShowAlamatActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        updateTabel();
    }

k.      Kode pada menu hapus(klik kanan)
Cara membuat menu :
1.      klik kanan Other Component ( terdapat pada menu navigator ) -  Add From Pallete – Swing Menus – Popup menu.
2.      klik kanan Popup menu -  Add From Pallete – Swing Menus – Menu Item
private void bHapusActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        hapusData();
    }


l.        Kode pada formWindowClosing
ketika hasil run telah terisi data maka ketika di close data tersebut tersimpan ke notepad. klik kanan Jframe – Event – Window – window Closing
private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        // TODO add your handling code here:
        simpanData();
        dispose();
    }

n.      Source code pada textfield NIM, Nama, dan Alamat
Klik kanan masing-masing textfield – Event – Action – Action Performed
private void tfNIMActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        tfNama.requestFocus();
    }                                    

    private void tfNamaActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        tfAlamat.requestFocus();
    }                                     

    private void tfAlamatActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        bSimpanActionPerformed(null);
    }
o.    Berikut hasil Run

kemudian isi data:
 
Setelah di isi dan disave akan muncul joptionpane message proses simpan berhasil.

Data yang sudah disave tadi bisa dilihat di notepad, karena tadi di inputkan buffredreader dan bufferead writer.


Klik kanan pada data yang ada ditabel untuk hapus.



Sekian, monggo di coba gan.. salam sukses..

Tidak ada komentar:

Posting Komentar