Tuesday, July 5, 2011

Program Pendataan Buku Sederhana Dengan Java

Berikut ini saya coba membuat contoh program pendataan buku sederhana dengan  java  dan menggunakan database Mysql serta pengembanganya menggunakan NetBeans IDE 6.9.1, Langkah pertama buatlah rancangan tabel untuk pendataan buku seperti dibawah ini. 

Nama tabel : pbo_buku

Kemudian desain form seperti dibawah.


Selanjutnya import paket yang berisi kelas-kelas yang nantinya akan kita gunakan dalam form pendataan buku tersebut :



selanjutnya definisikan variabel yang akan digunakan.
kemudian buat method yang akan sering digunakan pada form pendataan buku tersebut seperti
mengkosongkan isian, mengaktifkan dan menonaktifkan isian :

    void aktiv(boolean sts)
    {
        txtKode.setEnabled(sts);
        txtJudul.setEnabled(sts);
        txtPengarang.setEnabled(sts);
        txtPenerbit.setEnabled(sts);
        txtISBN.setEnabled(sts);
        txtThnTerbit.setEnabled(sts);
        txtHargaBeli.setEnabled(sts);
        txtDiskon.setEnabled(sts);
        txtHargaJual.setEnabled(sts);
        txtHargaPokok.setEnabled(sts);
        txtStok.setEnabled(sts);
        cmbJenis.setEnabled(sts);
        cmbKategori.setEnabled(sts);

    }
   
    void kosong()
    {
        txtKode.setText("");
        txtJudul.setText("");
        txtPengarang.setText("");
        txtPenerbit.setText("");
        txtISBN.setText("");
        txtThnTerbit.setText("");
        txtHargaBeli.setText("");
        txtDiskon.setText("");
        txtHargaJual.setText("");
        txtHargaPokok.setText("");
        txtStok.setText("");

        aktiv(false);
    }


kemudian mulai membuka koneksi ke database mysql, perintah untuk koneksi dapat kita tempatkan pada konstruktor dari kelas tersebut berikut contohnya :













Nah selanjutnya coba anda jalankan form pendataan buku anda apabila tidak muncul pesan kesalahan berarti koneksi database mysql dengan java sudah benar.

Selanjutnya adalah bagaimana menampilkan data dari table pbo_buku pada database mysql kedalam JTable pada form pendataan buku :

Untuk menampilkan data ke dalam JTable dapat anda lakukan dengan cara berikut, pertama siapkan satu method yang akan kita gunakan untuk menampilkan data ke dalam JTable.


    void tampilTabel()
    {
        Object[] kolom = {"Kode Buku","Judul","Pengarang",
    "Harga Jual","Stok"};
        tabMode = new DefaultTableModel(null,kolom);

        String strsql="Select * from pbo_buku";
        try
        {
        stmt = conn.createStatement();
        rs = stmt.executeQuery(strsql);
          while (rs.next())
          {
              String[] data={ rs.getString("kode_buku"),
rs.getString("judul"), rs.getString("pengarang"),
rs.getString("Hargajual"),rs.getString("stok") };

              tabMode.addRow(data);
          }

        }catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, e);
        }

       
        JTableBuku.setModel(tabMode);

    }

Kemudian method tampilTabel() tersebut anda panggil pada bagian konstruktor menjadi sbb :

    public form_Buku()
    {
        initComponents();
        aktiv(false);

        koneksi = new koneksiMysql();
        conn = koneksi.getConnection();

        tampilTabel();
    }


Nah setelah method tampilTabel() selesai anda buat, kemudian method tersebut anda panggil pada konstruktor, selanjutnya coba anda Run form anda, jika instruksi yang anda masukkan benar maka akan muncul seperti gambar dibawah ini :

 
 
Ketika dijalankan maka isian non aktif dan JTable menampilkan data dari tabel pbo_buku pada database mysql, selanjutnya anda tambahkan event actionPerformed() pada JButtonTambah.


Selanjutnya tambahkan kode beriku :

private void JButtonTambahActionPerformed(java.awt.event.ActionEvent evt)
{                                             
        // TODO add your handling code here:

        tekan = JButtonTambah.getText();
        aktiv(true);
        txtKode.requestFocus();

    }

Maksud dari kode diatas adalah apabila tombol tambah ditekan maka, variabel tekan akan berisi nilai sesuai dengan teks dari JButtonTambah, kemudian isian di aktifkan, dan kursor akan diarahkan pada txtKode.                                             

Tambahkan pula event actionPerformed pada tombol ubah sbb :

Selanjutnya tambahkan kode sbb :

private void JButtonUbahActionPerformed(java.awt.event.ActionEvent evt)    {                                           
        // TODO add your handling code here:

        tekan = JButtonUbah.getText();
        aktiv(true);
        txtKode.requestFocus();

    }                                     

Selanjutnya tambahkan event actionPerformed pada tombol simpan, tombol simpan ini nantinya akan berfungsi untuk menyimpan data dan mengubah data, tombol simpan akan menjalankan instruksi simpan data apabila user menekan tombol tambah (insert), dan akan menjalankan instruksi ubah data (update) data apabila user menekan tombol ubah,        



Tambahkan kode berikut :

private void JButtonSImpanActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:

        if (tekan==JButtonTambah.getText())
        {

            String strsql="insert into pbo_buku (kode_buku,judul,pengarang,penerbit,isbn"
                    + ",thn_terbit,jenis,kategori,hargabeli,diskon,hargapokok,hargajual,stok)"
                    + " values ('"+txtKode.getText()+"','"+txtJudul.getText()+"' "
                    + ",'"+txtPengarang.getText()+"','"+txtPenerbit.getText()+"'"
                    + ",'"+txtISBN.getText()+"',"+txtThnTerbit.getText()+" "
                    + ",'"+cmbJenis.getSelectedItem()+"', '"+cmbKategori.getSelectedItem()+"' "
                    + ","+txtHargaBeli.getText()+","+txtDiskon.getText()+","+txtHargaPokok.getText()+" "
                    + ","+txtHargaJual.getText()+","+txtStok.getText()+" ) ";
            try
            {
            stmt.executeUpdate(strsql);
            kosong();
            tampilTabel();

            JOptionPane.showMessageDialog(null, "Data berhasil disimpan");
            }catch(Exception erSimpan)
            {
                JOptionPane.showMessageDialog(null, erSimpan);
            }

        }

        if(tekan==JButtonUbah.getText())
        {

            String strsql="update pbo_buku set  "
                    + " judul='"+txtJudul.getText()+"' "
                    + " ,pengarang='"+txtPengarang.getText()+"' "
                    + " ,penerbit='"+txtPenerbit.getText()+"' "
                    + " ,isbn="+txtISBN.getText()+" "
                    + " ,thn_terbit="+txtThnTerbit.getText()+" "
                    + " ,jenis='"+cmbJenis.getSelectedItem()+"' "
                    + " ,kategori='"+cmbKategori.getSelectedItem()+"' "
                    + " ,hargabeli="+txtHargaBeli.getText()+" "
                    + " ,diskon="+txtDiskon.getText()+" "
                    + " ,hargapokok="+txtHargaPokok.getText()+" "
                    + " ,hargajual="+txtHargaJual.getText()+" "
                    + " ,stok="+txtStok.getText()+" "
                    + " where kode_buku='"+txtKode.getText()+"' ";

            try
            {

                stmt.executeUpdate(strsql);
                kosong();
                tampilTabel();

                JOptionPane.showMessageDialog(null, "Data berhasil diubah");


            }catch(Exception erUbah)
            {
                JOptionPane.showMessageDialog(null, erUbah);
            }
        }


    }                                       


Sampai tahap ini, apabila form anda jalankan dan tidak ada pesan kesalahan maka form tersebut sudah dapat digunakan untuk transaksi simpan data.

Selanjutnya anda tambahkan event focustLost pada txtDiskon untuk menghitung hargapokok sbb:


private void txtDiskonFocusLost(java.awt.event.FocusEvent evt) {                                   
        // TODO add your handling code here:

        double hargaPokok=
(Double.parseDouble(txtHargaBeli.getText()))-
                (Double.parseDouble(txtHargaBeli.getText())*
                (Double.parseDouble(txtDiskon.getText())/100));

        txtHargaPokok.setText(""+hargaPokok);

    }            

Jika kode ini selesai anda tulis, maka ketika JTextField txtDiskon kehilangan focus, akan menghitung nilai harga pokok, dan selanjutnya txtHargaPokok secara otomatis akan menampilkan hasil harga pokok setelah perhitungan pada txtDiskon event focusLost()


Kemudian anda tambahkan event focusLost pada txtKode, pada txtKode ini akan dilakukan proses seleksi yaitu:
1.      ketika user menekan tombol tambah (ingin menambah data) kemudian user memasukkan kode barang yang sudah ada maka akan ditolak karena isian kode barang yang sama akan menyebabkan redudandsi data,
2.      ketika user menekan tombol ubah (ingin mengubah data) kemudian user memasukkan kode barang yang sudah ada, maka informasi data sebelumnya akan ditampilkan pada isian dalam form, namun apabila kode barang yang diinput belum ada akan dimunculkan konfirmasi bahwa data yang akan diubah belum/tidak ada

maka tambahkan even focustLost pada txtKode sbb:


private void txtKodeFocusLost(java.awt.event.FocusEvent evt) {                                 
        // TODO add your handling code here:
     
  String strsql="select * from pbo_buku where “
                     +“kode_buku='"+txtKode.getText()+"' ";
        try
        {
            rs = stmt.executeQuery(strsql);

            if(tekan==JButtonTambah.getText())
            {
                 if(rs.first())
                 {
                     JOptionPane.showMessageDialog(null, "Data sudah ada");
                     kosong();
                 }
            }

            if(tekan==JButtonUbah.getText())
            {
                if(rs.first())
                {
                    txtJudul.setText(rs.getString("judul"));
                    txtPengarang.setText(rs.getString("Pengarang"));
                    txtPenerbit.setText(rs.getString("Penerbit"));
                    txtISBN.setText(rs.getString("isbn"));
                    txtThnTerbit.setText(rs.getString("thn_terbit"));
                    cmbJenis.setSelectedItem(rs.getString("jenis"));
                    cmbKategori.setSelectedItem(rs.getString("kategori"));
                    txtHargaBeli.setText(rs.getString("hargabeli"));
                    txtDiskon.setText(rs.getString("diskon"));
                    txtHargaPokok.setText(rs.getString("hargapokok"));
                    txtHargaJual.setText(rs.getString("hargajual"));
                    txtStok.setText(rs.getString("stok"));
                }else
                {
                    JOptionPane.showMessageDialog(null, "Data tidak ada");
                    kosong();
                }
            }
        }catch(Exception erFocus)
        {
           JOptionPane.showMessageDialog(null, erFocus);
        }

    } 



Sampai tahap ini apabila form anda jalankan, maka akan tampak sebagai berikut:


Apabila txtKode kehilangan fokus maka akan muncul konfirmasi bahwa data sudah ada.


Apabila sebelumnya user menekan tombol ubah (ingin mengubah data dan memasukkan kode yang sama ).



Maka data akan ditampilkan pada isian.
 
Jika terjadi perubahan data kemudian tekan tombol simpan, maka data akan diubah (update)

Selanjutnya tambahkan kode untuk hapus data, maka tambahkan event actionPerformed pada tombol Hapus sbb :

private void JButtonHapusActionPerformed(java.awt.event.
ActionEvent evt) 
{                                            
        // TODO add your handling code here:

   int pil=JOptionPane.showConfirmDialog(null, "Yakin akan dihapus ?",
     "Hapus Data",JOptionPane.OK_CANCEL_OPTION);
   
        if(pil==0)
        {
            String strsql="delete from pbo_buku where “ +
  “ kode_buku='"+txtKode.getText()+"'";
            try
            {
                stmt.executeUpdate(strsql);
                kosong();
                tampilTabel();

            }catch(Exception erDel)
            {
                JOptionPane.showMessageDialog(null, erDel);
            }
        }

    }                                           

Sampai tahap ini, jika kita akan menghapus suatu data maka akan ditampilkan pesan konfirmasi OK atau Cancel.

Jika tekan OK maka data akan dihapus. 

Selanjutnya tambahkan event actionPerformed pada tombol batal, fungsi tombol batal ini digunakan untuk membatalkan inputan yakni dengan mengkosongkan isian dan menonaktifkan isian.
private void JButtonBatalActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        kosong();
        aktiv(false);
       
}                                           

Terakhir tambahkan event actionPerformed pada tombol keluar.

private void JButtonKeluarActionPerformed(java.awt.event.
ActionEvent evt) {                                             
        // TODO add your handling code here:
        dispose();

}    



Semoga Bermanfaat 
(edisugiarto.blogspot.com)

Related Posts by Categories



2 comments:

ridha said...

Terimakasih banyak mas tutorialnya... sangat bermanfaat buat saya... ditunggu postingan berikutnya tentang java... :)

dhejack said...

Selamat pagi Pak.
Ada link untuk download javanya tidak?
Terima kasih sebelumnya




Powered By Blogger