Pemrograman Lanjut

Document Sample
Pemrograman Lanjut Powered By Docstoc
					                                                                                                                        Pemrograman Lanjut| 5/18/2011                                    1



Table of Contents
DAO Pattern ................................................................................................................................................ 3
Contoh Kasus .............................................................................................................................................. 4
Diagram UML dan Database ....................................................................................................................... 4
   Use Case Diagram Perpustakaan ..................................................................................................... 4
   Class Diagram Entity Perpustakaan .................................................................................................. 5
   Class Diagram DAO............................................................................................................................. 5
   Diagram Database ............................................................................................................................... 6
Target dari perkuliahan ini adalah.......................................................................................................... 7
Memulai Project SistemPerpustakaan .................................................................................................. 7
   Membuat project baru di Netbeans.................................................................................................... 7
Membuat Tampilan .................................................................................................................................. 9
   Mendesain Form Utama ...................................................................................................................... 9
   Mendesain Form Data Mahasiswa .................................................................................................. 16
   Menghubungkan FrmMain dengan FrmDataMahasiswa ...................................................................... 23
   Mengatur Main kelas ............................................................................................................................ 24
Membuat Entity ........................................................................................................................................ 25
   Class Diagram Entity Perpustakaan ....................................................................................................... 25
   Kode Program ....................................................................................................................................... 26
             Kelas Anggota......................................................................................................................... 26
             Kelas Mahasiswa ................................................................................................................... 27
             Kelas PetugasPerpus ............................................................................................................ 27
             Kelas Koleksi .......................................................................................................................... 28        Pemrograman Lanjut | 5/18/2011

             Kelas ItemKoleksi ................................................................................................................. 29
             Kelas Transaksi ..................................................................................................................... 30
             Kelas TransaksiPeminjaman .............................................................................................. 31
             Kelas TransaksiPengembalian ........................................................................................... 31
             Kelas Karyawan ..................................................................................................................... 31
             Kelas Denda ............................................................................................................................ 32
             Kelas Buku .............................................................................................................................. 33


                                                                                                                                                                   1
                                                                                                                     Pemrograman Lanjut| 5/18/2011                                   2

             ItemTransaksi ........................................................................................................................ 34
Membuat DAO .......................................................................................................................................... 35
   Diagram Database ................................................................................................................................. 35
   Class Diagram DAO Perpustakaan ......................................................................................................... 36
   Kode Program ....................................................................................................................................... 37
             Kelas Database .......................................................................................................................... 37
             Kelas AbstractDao ..................................................................................................................... 39
             Kelas DaoMahasiswa ................................................................................................................. 40
   Untuk DAO Selanjutnya slahkan dikembangkan sendiri ....................................................................... 42
             Kelas DaoPetugasPerpus ........................................................................................................... 42
             Kelas DaoPengembalian ............................................................................................................ 42
             Kelas DaoPeminjaman............................................................................................................... 42
             Kelas DaoItemKoleksi ................................................................................................................ 42
             Kelas DaoPetugasPerpus ........................................................................................................... 42
             Kelas DaoKaryawan ................................................................................................................... 42
Menghubungkan DAO dengan View ......................................................................................................... 43
   Mendesain JTable ................................................................................................................................. 43
Menambahkan JDBC Driver ...................................................................................................................... 46
Mendatarkan MySQL ke Netbeans ........................................................................................................... 47
Membuat Form Input Mahasiswa ............................................................................................................. 50
Menambahkan event di Form Input Dialog Mahasiswa............................................................................ 61
Menghubungkan Form Data Mahasiswa dan Dialog Input Mahasiswa .................................................... 63
Mendesain Report .................................................................................................................................... 64
                                                                                                                                                             Pemrograman Lanjut | 5/18/2011




                                                                                                                                                               2
                                                                              Pemrograman Lanjut| 5/18/2011                       3


DAO Pattern
Salah satu aspek dari lapisan bisnis adalah lapisan akses data yang menghubungkan layanan dengan
database. Mengakses data bervariasi tergantung pada sumber data. Akses ke data persisten sangat
bervariasi tergantung pada jenis penyimpanan (database, flat file, file xml, dan sebagainya) dan bahkan
berbeda dari pelaksanaannya (misalnya berbeda-dialek SQL). Tujuannya adalah untuk merangkum
semua akses ke data dan menyediakan interface. Ini disebut pola DAO.

Dari sudut pandang aplikasi, tidak ada bedanya ketika mengakses sebuah database relasional atau mem-
parsing file xml (menggunakan DAO). DAO ini biasanya mampu menciptakan sebuah instance dari objek
data ("untuk membaca data") dan juga untuk menyimpan data sebagai sumber data.

DAO Digunakan ketika

      Membutuhkan akses data lebih dari satu kali dan ada kemungkinan pertukaran data antar
       aplikasi
      Menginginkan pemisahan antarmuka dengan mekanisme pengaksesan data
      Pada tim pengembang yang besar, memungkinkan untuk melakukan pemisahan pekerjaan

Contoh kelas diagram untuk DAO




                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                            3
                                                                         Pemrograman Lanjut| 5/18/2011                      4


Contoh Kasus
Perpustakaan STMIK AMIKOM Yogyakarta menyewakan buku dan CD kepada mahasiswa,
dosen, dan karyawan. Dimana seorang mahasiswa hanya diijinkan meminjam buku berbahasa
Indonesia, CD. Sementara itu dosen diijinkan meminjam semua koleksi di perpustakaan
termasuk buku asing, begitu juga karyawan. Seorang mahasiswa hanya diijinkan meminjam
maksimal 3 buah koleksi, berbeda dengan dosen dan karyawan yang bisa meminjam tanpa
batas. Para pengunjung perpustakaan dapat melakukan pencarian koleksi berasarkan judul,
pengarang atau penerbit, melihat daftar koleksi di komputer pencarian.
       Prosedur peminjaman adalah dengan membawa buku yang hendak dipinjam dan
menunjukkan KTM untuk mahasiswa, NIK untuk dosen dan karyawan kepada petugas
perpustakaan. Mahasiswa diperbolehkan meminjam selama satu minggu, selebihnya didenda.
       Petugas perpustakaan bertugas melakukan pendataan buku, mencatat peminjaman dan
pengembalian, menghitung denda, serta membantu mencarikan koleksi melalui mesin pencari.
Para pengunjung perpustakaan dapat meminjam buku, mencari koleksi di mesin pencari dan
membayar denda. Selain itu petugas perpustakaan juga dapat mencetak laporan seperti
Laporan Daftar Koleksi, Laporan Transaksi Harian, Bulanan, Laporan Daftar Anggota, Laporan
Pembayaran Denda. Berikut ini adalah beberapa diagram UML yang akan menjadi acuan kita
dalam pengembangan Sistem Perpustakaan ini

Diagram UML dan Database
Use Case Diagram Perpustakaan




                                                                                                    Pemrograman Lanjut | 5/18/2011




                                                                                                      4
                                    Pemrograman Lanjut| 5/18/2011                      5




Class Diagram Entity Perpustakaan




Class Diagram DAO




                                                               Pemrograman Lanjut | 5/18/2011




                                                                 5
                   Pemrograman Lanjut| 5/18/2011                      6

Diagram Database




                                              Pemrograman Lanjut | 5/18/2011




                                                6
                                                                         Pemrograman Lanjut| 5/18/2011                      7


Target dari perkuliahan ini adalah
     Memahami konsep DAO
     Membuat koneksi database ke mysql
     Merancang tampilan
     Menyelesaikan minimal modul pengolahan data mahasiswa
     Menyelesaikan minimal modul peminjaman
     Menyelesaikan minimal report peminjaman harian




Memulai Project SistemPerpustakaan
Membuat project baru di Netbeans
  1. Jalankan Netbeans Anda
  2. Pilih menu File  New Project




  3. Pada Categories pilih Java, Project Pilih Java Application  Next




                                                                                                    Pemrograman Lanjut | 5/18/2011




                                                                                                      7
                                                                   Pemrograman Lanjut| 5/18/2011                      8

4. Pada project name berinama SistemPerpustakaan




   Project Location diisi dengan folder anda di lab.
   Beri tanda check pada Use Dedicated Folder for Storing Libraries, Create Main Class
   dan Set as Main Project. Pilih Finish
5. Tampilan project baru yang anda dapatkan




                                                                                              Pemrograman Lanjut | 5/18/2011




                                                                                                8
                                                               Pemrograman Lanjut| 5/18/2011                      9


Membuat Tampilan

Mendesain Form Utama
  1. Buat 1 buah paket baru didalam paket sistemperpustakaan




  2. Beri nama view untuk paket baru  Finish




                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                            9
                                                Pemrograman Lanjut| 5/18/2011       10

3. Tambahkan 1 buah JFrame didalam paket view




4. Beri nama FrmMain  Finish




                                                                                Pemrograman Lanjut | 5/18/2011




                                                                            10
                                                         Pemrograman Lanjut| 5/18/2011       11

5. Maka anda akan mendapatkan tampilan sebagai berikut




6. Pada palette pilih Swing Menus  Menu Bar




7. Kemudian drag di tempat kosong di bagian atas                                         Pemrograman Lanjut | 5/18/2011




                                                                                     11
                                                                  Pemrograman Lanjut| 5/18/2011       12

8. Cari window inspector di kiri bawah




9. Silahkan tanda + pada jMenuBar1 diklik, maka anda akan mendapatkan JMenu1 dan JMenu2
10. Klik kanan pada JMenu2 kemudian pilih Edit Text




11. Ubah dari tulisan Edit menjadi Laporan




                                                                                                  Pemrograman Lanjut | 5/18/2011




                                                                                              12
                                                                       Pemrograman Lanjut| 5/18/2011       13

12. Ubah variabel name dari JMenu1 menjadi mnuFile kemudian pilih OK




13. Untuk JMenu2 ubah variabel namenya menjadi mnuLaporan, sehingga di inspector tampak
    seperti gambar berikut




14. Tambahkan MenuItem di mnuFile dengan cara klik kanan mnuFile Add From Palette 
    Menu Item




                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   13
                                                                   Pemrograman Lanjut| 5/18/2011       14

15. Tambahkan sampai 3 jMenuItem, seperti inspector berikut ini




16. Ubah text dari jMenuItem1 menjadi Data Mahasiswa dengan cara klik kanan jMenuItem1 
    Edit Text




17. Untuk jMenuItem2 ubah textnya menjadi Data Karyawan, jMenuItem2 ubah textnya menjadi
    Data Buku


                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               14
                                                                   Pemrograman Lanjut| 5/18/2011       15

18. Ubah variabel name dari jMenuItem1 menjadi mnuDataMahasiswa dengan cara klik kanan
    jMenuItem1  Change Variabel Name




19. Ubah juga variabel name jMenuItem2 menjadi mnuDataKaryawan dan jMenuItem3 menjadi
    mnuDataBuku




20. Tambahkan 2 buah jMenuItem pada mnuLaporan, yaitu jMenuItem1 dan jMenuItem2




                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               15
                                                                   Pemrograman Lanjut| 5/18/2011       16

  21. Ubah text menjadi Peminjaman dan Pengembalian




  22. Ubah variabel name menjadi seperti berikut




Mendesain Form Data Mahasiswa
  1. Tambahkan 1 buah JFrame didalam paket view, beri nama FrmDataMahasiswa




                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               16
                                                                 Pemrograman Lanjut| 5/18/2011       17

2. Klik kanan pada FrmDataMahasiswa, kemudian pilih menu LayoutBorderLayout




3. Tambahkan 1 buah panel di Posisi atas




                                                                                                 Pemrograman Lanjut | 5/18/2011




                                                                                             17
                                                                       Pemrograman Lanjut| 5/18/2011       18

4. Tambahkan 1 buah panel di posisi bawah




5. Ubah agar layout dari jPanel1 menjadi FlowLayout




6. Ubah juga agar layout dari jPanel2 menjadi FlowLayout, sama seperti langkah 5


                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   18
                                                                          Pemrograman Lanjut| 5/18/2011       19

7. Tambahkan label dan jtextfield ke jPanel1 seperti gambar berikut ini




   Sehingga form seperti berikut




   Sehingga di inspector tampak seperti gambar berikut




                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                      19
                                                               Pemrograman Lanjut| 5/18/2011       20

8. Tambahkan 4 buah button di jPanel2 seperti gambar berikut




   Diinspector tampak seperti berikut




                                                                                               Pemrograman Lanjut | 5/18/2011




                                                                                           20
                                                                 Pemrograman Lanjut| 5/18/2011       21

9. Ubah agar FlowLayout di jPanel1 aligmentnya menjadi Left




10. Lakukan hal yang sama dengan jPanel2 dengan aligment Right
11. Tambahkan 1 buah JTable di tengah




                                                                                                 Pemrograman Lanjut | 5/18/2011




                                                                                             21
                                                                         Pemrograman Lanjut| 5/18/2011       22

12. Atur agar seperti gambar berikut




13. Atur agar tombol seperti berikut




14. Atur agar jTextField widthnya menjadi 100,20




15. Ubah variabel name dari jTextField1 menjadi txtCari, kemudian button urut dari kiri ke kanan
    menjadi btnTambah, btnUbah, btnHapus, btnTutup dan tabel menjadi tbMhs sehingga di
    inspector menjadi seperti berikut




                                                                                                         Pemrograman Lanjut | 5/18/2011




                                                                                                     22
                                                                     Pemrograman Lanjut| 5/18/2011       23

Menghubungkan FrmMain dengan FrmDataMahasiswa
  1. Masuk ke editor dari FrmMain dengan menekan tombol Source di desain form FrmMain




  2. Tambahkan implements ActionListener
  3. Tambahkan import :
        a. import java.awt.event.ActionEvent;
        b. import java.awt.event.ActionListener;
  4. Tambahkan method actionPerformed
       public void actionPerformed(ActionEvent e) {
           throw new UnsupportedOperationException("Not supported yet.");
       }

  5. Sesudah pemanggilan method iniComponents() tambahkan kode program berikut
     mnuDataMahasiswa.addActionListener(this);
     sehingga kode program di Constructor menjadi seperti berikut
       public FrmMain() {
           initComponents();
           mnuDataMahasiswa.addActionListener(this);
       }

  6. Deklarasikan objek frmDataMahasiswa dengan tipe FrmDataMahasiswa seperti kode program
     berikut
     private FrmDataMahasiswa frmDataMahasiswa;
  7. Lengkapi method actionPerformed seperti kode program dibawah ini
       public void actionPerformed(ActionEvent e) {                                                  Pemrograman Lanjut | 5/18/2011
           if(e.getSource().equals(mnuDataMahasiswa)){
              if(frmDataMahasiswa==null)
                 frmDataMahasiswa=new FrmDataMahasiswa();
              frmDataMahasiswa.setVisible(true);
           }
         }




                                                                                                 23
                                                                       Pemrograman Lanjut| 5/18/2011       24

  8. Sehingga kode program FrmDataMahasiswa seperti berikut
       package sistemperpustakaan.view;

       import java.awt.event.ActionEvent;
       import java.awt.event.ActionListener;

       public class FrmMain extends javax.swing.JFrame implements ActionListener{

           private FrmDataMahasiswa frmDataMahasiswa;

           public FrmMain() {
             initComponents();
             mnuDataMahasiswa.addActionListener(this);
           }

           public void actionPerformed(ActionEvent e) {
             if(e.getSource().equals(mnuDataMahasiswa)){
                if(frmDataMahasiswa==null)
                   frmDataMahasiswa=new FrmDataMahasiswa();
                frmDataMahasiswa.setVisible(true);
             }
           }
       }


Mengatur Main kelas
  1. Silahkan buka kelas Main.java
  2. Pada method main, tambahkan kode program yang ditebali
       package sistemperpustakaan;

       import sistemperpustakaan.view.FrmMain;
                                                                                                       Pemrograman Lanjut | 5/18/2011
       public class Main {

           public static void main(String[] args) {
             FrmMain frmMain=new FrmMain();
             frmMain.setVisible(true);
           }
       }




                                                                                                   24
                                    Pemrograman Lanjut| 5/18/2011       25


Membuat Entity

Class Diagram Entity Perpustakaan




                                                                    Pemrograman Lanjut | 5/18/2011




                                                                25
                                                             Pemrograman Lanjut| 5/18/2011       26

Kode Program
     Kelas Anggota
       package sistemperpustakaan.entity;
       import java.util.Date;
       public class Anggota {
                private int id;
                private String nama;
                private String tmpLahir;
                private Date tglLahir;
                public int getId() {
                         return id;
                }
                public void setId(int id) {
                         this.id = id;
                }
                public String getNama() {
                         return nama;
                }
                public void setNama(String nama) {
                         this.nama = nama;
                }
                public String getTmpLahir() {
                         return tmpLahir;
                }
                public void setTmpLahir(String tmpLahir) {
                         this.tmpLahir = tmpLahir;
                }
                public Date getTglLahir() {
                         return tglLahir;
                }
                public void setTglLahir(Date tglLahir) {
                         this.tglLahir = tglLahir;
                }
       }

                                                                                             Pemrograman Lanjut | 5/18/2011




                                                                                         26
                                                            Pemrograman Lanjut| 5/18/2011       27

   Kelas Mahasiswa
     package sistemperpustakaan.entity;
     public class Mahasiswa extends Anggota {
              private String nim;
              private int tahunMasuk;
              public String getNim() {
                       return nim;
              }
              public void setNim(String nim) {
                       this.nim = nim;
              }
              public int getTahunMasuk() {
                       return tahunMasuk;
              }
              public void setTahunMasuk(int tahunMasuk) {
                       this.tahunMasuk = tahunMasuk;
              }
     }

   Kelas PetugasPerpus
     package sistemperpustakaan.entity;
     public class PetugasPerpus extends Karyawan {
              private String user;
              private String pwd;
              public String getUser() {
                      return user;
              }
              public void setUser(String user) {
                      this.user = user;
              }
              public String getPwd() {
                      return pwd;                                                           Pemrograman Lanjut | 5/18/2011
              }
              public void setPwd(String pwd) {
                      this.pwd = pwd;
              }
     }




                                                                                        27
                                                                        Pemrograman Lanjut| 5/18/2011       28

   Kelas Koleksi
     package sistemperpustakaan.entity;
     public class Koleksi {
              private int id;
              private String judul;
              private boolean cd;
              private boolean referensi;
              private ItemKoleksi[] itemKoleksi;
              public ItemKoleksi[] getItemKoleksi() {
                       return itemKoleksi;
              }
              public void setItemKoleksi(ItemKoleksi[] itemKoleksi) {
                       this.itemKoleksi = itemKoleksi;
              }
              public int getId() {
                       return id;
              }
              public void setId(int id) {
                       this.id = id;
              }
              public String getJudul() {
                       return judul;
              }
              public void setJudul(String judul) {
                       this.judul = judul;
              }
              public boolean isCd() {
                       return cd;
              }
              public void setCd(boolean cd) {
                       this.cd = cd;
                                                                                                        Pemrograman Lanjut | 5/18/2011
              }
              public boolean isReferensi() {
                       return referensi;
              }
              public void setReferensi(boolean referensi) {
                       this.referensi = referensi;
              }
     }




                                                                                                    28
                                                          Pemrograman Lanjut| 5/18/2011       29

   Kelas ItemKoleksi
     package sistemperpustakaan.entity;
     public class ItemKoleksi {
              private String kode;
              private Koleksi koleksi;
              public Koleksi getKoleksi() {
                      return koleksi;
              }
              public void setKoleksi(Koleksi koleksi) {
                      this.koleksi = koleksi;
              }
              public String getKode() {
                      return kode;
              }
              public void setKode(String kode) {
                      this.kode = kode;
              }
     }




                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                      29
                                                                             Pemrograman Lanjut| 5/18/2011       30

   Kelas Transaksi
     package sistemperpustakaan.entity;
     import java.util.Date;
     public class Transaksi {
               private int idTransaksi;
               private Date tanggal;
               private PetugasPerpus petugasPerpus;
               private Anggota anggota;
               private ItemKoleksi[] itemKoleksi;
               public int getIdTransaksi() {
                         return idTransaksi;
               }
               public void setIdTransaksi(int idTransaksi) {
                         this.idTransaksi = idTransaksi;
               }
               public Date getTanggal() {
                         return tanggal;
               }
               public void setTanggal(Date tanggal) {
                         this.tanggal = tanggal;
               }
               public PetugasPerpus getPetugasPerpus() {
                         return petugasPerpus;
               }
               public void setPetugasPerpus(PetugasPerpus petugasPerpus) {
                         this.petugasPerpus = petugasPerpus;
               }
               public Anggota getAnggota() {
                         return anggota;
               }
               public void setAnggota(Anggota anggota) {
                         this.anggota = anggota;
               }
               public ItemKoleksi[] getItemKoleksi() {
                         return itemKoleksi;
               }
               public void setItemKoleksi(ItemKoleksi[] itemKoleksi) {
                         this.itemKoleksi = itemKoleksi;
               }
     }
                                                                                                             Pemrograman Lanjut | 5/18/2011




                                                                                                         30
                                                                        Pemrograman Lanjut| 5/18/2011       31

   Kelas TransaksiPeminjaman
     package sistemperpustakaan.entity;
     public class TransaksiPeminjaman extends Transaksi{
              @Override
              public void setItemKoleksi(ItemKoleksi[] itemKoleksi) {
                      // TODO Auto-generated method stub
                      super.setItemKoleksi(itemKoleksi);
              }
     }

   Kelas TransaksiPengembalian
     package sistemperpustakaan.entity;
     public class TransaksiPengembalian extends Transaksi{
              private Denda denda;
              @Override
              public void setItemKoleksi(ItemKoleksi[] itemKoleksi) {
                      // TODO Auto-generated method stub
                      super.setItemKoleksi(itemKoleksi);
              }
              public Denda getDenda() {
                      return denda;
              }
              public void setDenda(Denda denda) {
                      this.denda = denda;
              }
     }

   Kelas Karyawan
     package sistemperpustakaan.entity;
     public class Karyawan extends Anggota {
              private String nik;
              public String getNik() {                                                                  Pemrograman Lanjut | 5/18/2011
                      return nik;
              }
              public void setNik(String nik) {
                      this.nik = nik;
              }
     }




                                                                                                    31
                                                                   Pemrograman Lanjut| 5/18/2011       32

   Kelas Denda
     package sistemperpustakaan.entity;
     public class Denda {
              private int idDenda;
              private double nominalDenda;
              private int lamaTerlambat;
              public int getIdDenda() {
                       return idDenda;
              }
              public void setIdDenda(int idDenda) {
                       this.idDenda = idDenda;
              }
              public double getNominalDenda() {
                       return nominalDenda;
              }
              public void setNominalDenda(double nominalDenda) {
                       this.nominalDenda = nominalDenda;
              }
              public int getLamaTerlambat() {
                       return lamaTerlambat;
              }
              public void setLamaTerlambat(int lamaTerlambat) {
                       this.lamaTerlambat = lamaTerlambat;
              }
     }




                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               32
                                                             Pemrograman Lanjut| 5/18/2011       33

   Kelas Buku
     package sistemperpustakaan.entity;
     public class Buku extends Koleksi {
              private String isbn;
              private String penerbit;
              private String pengarang;
              public String getIsbn() {
                      return isbn;
              }
              public void setIsbn(String isbn) {
                      this.isbn = isbn;
              }
              public String getPenerbit() {
                      return penerbit;
              }
              public void setPenerbit(String penerbit) {
                      this.penerbit = penerbit;
              }
              public String getPengarang() {
                      return pengarang;
              }
              public void setPengarang(String pengarang) {
                      this.pengarang = pengarang;
              }
     }




                                                                                             Pemrograman Lanjut | 5/18/2011




                                                                                         33
                                                                      Pemrograman Lanjut| 5/18/2011       34

   ItemTransaksi
     package sistemperpustakaan.entity;
     public class ItemTransaksi {
              private ItemKoleksi itemKoleksi;
              private Transaksi transaksi;
              public ItemKoleksi getItemKoleksi() {
                       return itemKoleksi;
              }
              public void setItemKoleksi(ItemKoleksi itemKoleksi) {
                       this.itemKoleksi = itemKoleksi;
              }
              public Transaksi getTransaksi() {
                       return transaksi;
              }
              public void setTransaksi(Transaksi transaksi) {
                       this.transaksi = transaksi;
              }
     }




                                                                                                      Pemrograman Lanjut | 5/18/2011




                                                                                                  34
                   Pemrograman Lanjut| 5/18/2011       35


Membuat DAO

Diagram Database




                                                   Pemrograman Lanjut | 5/18/2011




                                               35
                                 Pemrograman Lanjut| 5/18/2011       36

Class Diagram DAO Perpustakaan




                                                                 Pemrograman Lanjut | 5/18/2011




                                                             36
                                                                                   Pemrograman Lanjut| 5/18/2011       37

      Kode Program
             Kelas Database
package sistemperpustakaan.helper;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Database {
         private Connection con;
         private PreparedStatement prep;
         private ResultSet rs;
         public boolean connect() {
                 try {
                          Class.forName("com.mysql.jdbc.Driver");
                          con = DriverManager.getConnection("jdbc:mysql://localhost:3306/perpustakaan", "root", "");
                 } catch (SQLException ex) {
                          System.out.println("Error 1 : " + ex.getMessage());
                          return false;
                 } catch (ClassNotFoundException ex) {
                          System.out.println("Error 2 : " + ex.getMessage());
                          return false;
                 }
                 return true;
         }
         public Database(){
                 connect();
         }
         public ResultSet getRs() {
                 return rs;
         }                                                                                                         Pemrograman Lanjut | 5/18/2011




                                                                                                               37
                                                                            Pemrograman Lanjut| 5/18/2011       38


    public boolean dml(String query, boolean getRow, Object... objects) {
             try {
                      prep = con.prepareStatement(query);
                      int i = 1;
                      for (Object obj : objects) {
                                 prep.setObject(i, obj);
                                 i++;
                      }
                      if (getRow) {
                                 rs = prep.executeQuery();
                      } else {
                                 prep.executeUpdate();
                      }
             } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                      return false;
             }
             return true;
    }
    public int getGeneratedKeys() {
             int keys=0;
             try{
                      if(dml("SELECT LAST_INSERT_ID();",true)){
                                 rs.next();
                                 keys=rs.getInt("LAST_INSERT_ID()");
                                 rs.close();
                                 return keys;
             }
                      return -1;
             }catch(SQLException e){
                                                                                                            Pemrograman Lanjut | 5/18/2011
                      return -1;
             }

    }
}




                                                                                                        38
                                                      Pemrograman Lanjut| 5/18/2011       39

   Kelas AbstractDao
     package sistemperpustakaan.dao;
     import java.sql.ResultSet;
     import helper.Database;
     public abstract class AbstractDao<T> {
             protected Database database;
             protected String ss="";
             protected ResultSet rs;
             public AbstractDao(){
                      database=new Database();
             }
             public abstract boolean insert(T obj);
             public abstract boolean update(T obj);
             public abstract boolean delete(T obj);
             public abstract T[] findAll();
             public abstract T findById(int id);
     }




                                                                                      Pemrograman Lanjut | 5/18/2011




                                                                                  39
                                                                                     Pemrograman Lanjut| 5/18/2011       40

              Kelas DaoMahasiswa
package sistemperpustakaan.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import entity.Mahasiswa;
public class DaoMahasiswa extends AbstractDao<Mahasiswa> {
         @Override
         public boolean delete(Mahasiswa obj) {
                 obj.setId(findId(obj.getNim()));
                 ss="delete mahasiswa where idanggota=?";
                 if(!database.dml(ss, false, obj.getId())){
                          return false;
                 }
                 ss="delete anggota where idanggota=?";
                 if(!database.dml(ss, false, obj.getId())){
                          return false;
                 }
                 return true;
         }
         @Override
         public Mahasiswa findById(int id) {
                 return null;
         }

       @Override
       public boolean insert(Mahasiswa obj) {
               ss="insert into anggota(nama,tmplahir,tgllahir)values(?,?,?);";
               if(!database.dml(ss, false, obj.getNama(),obj.getTmpLahir(),obj.getTglLahir())){
                        return false;
               }
                                                                                                                     Pemrograman Lanjut | 5/18/2011

               obj.setId(database.getGeneratedKeys());
               ss="insert into mahasiswa(idanggota,nim,tahunMasuk)values(?,?,?)";
               if(!database.dml(ss, false, obj.getId(),obj.getNim(),obj.getTahunMasuk())){
                        return false;
               }
               return true;
       }




                                                                                                                 40
                                                                               Pemrograman Lanjut| 5/18/2011       41


@Override
public Mahasiswa[] findAll() {
        ss="select a.idAnggota,nim,nama,tmplahir,tgllahir,tahunmasuk ";
        ss+="from mahasiswa m ";
        ss+="inner join anggota a on m.idanggota=a.idanggota";
        if(database.dml(ss, true)){
                 rs=database.getRs();
                 List<Mahasiswa> lstMahasiswa=new ArrayList<Mahasiswa>();
                 try {
                          while(rs.next()){
                                   Mahasiswa mahasiswa=new Mahasiswa();
                                   mahasiswa.setId(rs.getInt("idAnggota"));
                                   mahasiswa.setNim(rs.getString("nim"));
                                   mahasiswa.setNama(rs.getString("nama"));
                                   mahasiswa.setTmpLahir(rs.getString("tmplahir"));
                                   mahasiswa.setTglLahir(rs.getDate("tgllahir"));
                                   mahasiswa.setTahunMasuk(rs.getInt("tahunmasuk"));
                                   lstMahasiswa.add(mahasiswa);
                          }
                          rs.close();
                          return lstMahasiswa.toArray(new Mahasiswa[lstMahasiswa.size()]);
                 } catch (SQLException e) {
                          e.printStackTrace();
                          return null;
                 }
        }
        return null;
}
@Override
public boolean update(Mahasiswa obj) {
        obj.setId(findId(obj.getNim()));
                                                                                                               Pemrograman Lanjut | 5/18/2011
        ss="update anggota set nama=?,tmplahir=?,tgllahir=? where idanggota=?";
        if(!database.dml(ss, false, obj.getNama(),obj.getTmpLahir(),obj.getTglLahir(),obj.getId())){
                 return false;
        }
        ss="update mahasiswa set tahunmasuk=? where idanggota=?";
        if(!database.dml(ss, false, obj.getTahunMasuk(),obj.getId())){
                 return false;
        }
        return true;
}


                                                                                                           41
                                                                              Pemrograman Lanjut| 5/18/2011       42


     private int findId(String nim){
              int result=0;
              try{
                       ss="select idAnggota from anggota a ";
                       ss+="inner join mahasiswa m on a.idanggota=m.idanggota ";
                       ss+="where nim=?";
                       if(database.dml(ss, true, nim)){
                               rs=database.getRs();
                               if(rs.next()){
                                        result= rs.getInt("idAnggota");
                               }
                               rs.close();
                       }
                       return result;
              }catch(SQLException ex){
                       ex.printStackTrace();
                       return result;
              }
     }
}


    Untuk DAO Selanjutnya slahkan dikembangkan sendiri
         Kelas DaoPetugasPerpus
         Kelas DaoPengembalian
         Kelas DaoPeminjaman
         Kelas DaoItemKoleksi
         Kelas DaoPetugasPerpus
         Kelas DaoKaryawan



                                                                                                              Pemrograman Lanjut | 5/18/2011




                                                                                                          42
                                                                        Pemrograman Lanjut| 5/18/2011       43


Menghubungkan DAO dengan View
Pada bagian ini akan diberikan contoh bagaimana menghubungkan antara dao dengan view.

Mendesain JTable
   1. Silahkan anda buka kelas FrmDataMahasiswa




   2. Klik kanan pada Jtable yang bernama tbMhs, kemudian pilih Table Contents




                                                                                                        Pemrograman Lanjut | 5/18/2011

   3. Maka akan muncul Costumized Dialog, silahkan pilih Column




                                                                                                    43
                                                                       Pemrograman Lanjut| 5/18/2011       44

4. Ubah count yang merupakan jumlah kolom menjadi 6 yaitu untuk menampung kolom no,
   nim,nama, tmpLahir,tglLahir, tahunMasuk. Kemudian ubah titlenya seperti gambar berikut




   Jangan lupa ubah agar Selection Model menjadi Single Selection, kemudian hilangkan tanda
   check pada Allo to reorder columns by drag and drop.
5. Silahkan anda pilih tab Rows, kemudian ubah nilai countnya menjadi 0 agar row diset menjadi
   kosong.




                                                                                                       Pemrograman Lanjut | 5/18/2011




6. Kemudian klik tombol close untuk menutup Costumized Dialog dan melihat hasil atau
   perubahan yang terjadi




                                                                                                   44
                                                                        Pemrograman Lanjut| 5/18/2011       45

7. Silahkan anda pilih source view untuk melihat source code dari FrmDataMahasiswa
8. Deklarasikan objek dm dengan tipe DaoMahasiswa
    private DaoMahasiswa dm;
9. Inisialisasi objek dengan sesudah pemanggilan initComponents();
    dm=new DaoMahasiswa();
10. Tambahkan kode program berikut sesudah melakukan inisialisasi objek dm
    Mahasiswa[] lstMahasiswa = dm.findAll();
          DefaultTableModel dtm = (DefaultTableModel) tbMhs.getModel();
          int i = 1;
          for (Mahasiswa m : lstMahasiswa) {
            dtm.addRow(new Object[]{
                i,m.getNim(),m.getNama(),
                m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk()
            });
            i++;
          }
11. Mahasiswa[] lstMahasiswa=dm.findAll();
    maksudnya memanggil method findAll dari objek dm dan menampungnya di array lstMahasiswa
    yang bertipe Mahasiswa.
12. DefaultTableModel dtm=(DefaultTableModel)tbMhs.getModel();
    Memanggil method getModel dari objek tbMhs, model disini adalah tabel yang struktur
    kolomnya sudah kita definisikan lewat menu Table Content. Kemudian hasil pemanggilan
    method getModel kita konversi dengan perintah Casting ke DefaultTabelModel, dimana hasil
    casting ini akan kita simpan di objek dtm yang bertipe DefaultTabelModel.
    DefaultTabelModel
    Adalah sebuah kelas yang merupakan kelas default untuk melakukan pengisian JTable.
13. int i = 1;
    Digunakan untuk deklarasi variabel i yang nantinya akan digunakan untuk membuat nomor.
14. for ( Mahasiswa m : lstMahasiswa)
    Adalah cara untuk melakukan perulangan yang serupa dengan for(int i) atau while atau do
    while. Cara ini dipilih dikarenakan cara ini dianggap lebih sederhana untuk diimplementasikan
    dimana m adalah objek dengan tipe Mahasiswa yang akan menampung item dari lstMahasiswa              Pemrograman Lanjut | 5/18/2011
    setiap 1 kali perulangan.
15. dtm.addRow
    Digunakan untuk menambahkan baris ke Jtable melalui DefaultTabelModel. Method ini
    meminta masukan berupa Vector atau array Object (Object[])
16. New Object[]{}
    Digunakan untuk menginisialisasi array objek yang nantinya akan diisi data
17. i,m.getNim(),m.getNama(), m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk()
    maksudnya adalah mengisi array objek yaitu sebagai berikut i, nim, nama, tempat lahir, tanggal
    lahir, tahun masuk.


                                                                                                     45
                                                                              Pemrograman Lanjut| 5/18/2011       46

    18. i++
        Digunakan untuk increment nilai i agar bertambah 1 tiap 1 kali perulangan


Menambahkan JDBC Driver
Didalam java untuk terkoneksi dengan database menggunakan library yang yang disebut JDBC Driver.
Setiap database memiliki jdbc driver sendiri – sendiri sehingga JDBC driver untuk Microsoft SQL Server
hanya dapat digunakan oleh Microsoft SQL Server, tidak dapat digunakan oleh MySQL dan sebaliknya.

    1. Silahkan klik kanan pada Libraries kemudian pilih Add JAR/Folder




    2. Silahkan anda cari driver mysql yang sudah anda miliki, contohnya




                                                                                                              Pemrograman Lanjut | 5/18/2011




       Kemudian klik Open
    3. Pastikan pada Project anda tampak seperti berikut




                                                                                                          46
                                                                            Pemrograman Lanjut| 5/18/2011       47


Mendatarkan MySQL ke Netbeans
Disini kita akan meregister MySQL kedalam Netbeans agar memudahkan kita untuk mengelola database
mysql.

   1. Pilih tab Service di netbeans




   2. Pada Databases klik kanan kemudian pilih menu Register MySQL Server




   3. Maka muncul MySQL Server Properties




                                                                                                            Pemrograman Lanjut | 5/18/2011




       Localhost berarti mewakili ip 127.0.0.1, 3306 (SQL Server 1433) adalah port yang digunakan oleh
       mysql, root (SQLServer sa) adalah user tertinggi di mysql, password defaultnya kosong. Beri
       tance check pada Save Password kemudian klik OK



                                                                                                         47
                                                                 Pemrograman Lanjut| 5/18/2011       48

4. Klik kanan pada MySQL kemudian pilih Create Database




5. Maka muncul window Create MySQL Database, pada New Database Name ketik Perpustakaan,
   kemudian Grant Full Access to root@localhost lalu OK




6. Maka tampilan anda akan seperti berikut



                                                                                                 Pemrograman Lanjut | 5/18/2011




                                                                                             48
                                                                     Pemrograman Lanjut| 5/18/2011       49

7. Klik kanan kemudian pilih Execute Command




8. Silahkan jalankan Script SQL anda di SQL Command 1




9. Maka pada Services, database perpustakaan anda akan tampak seperti berikut




                                                                                                     Pemrograman Lanjut | 5/18/2011




                                                                                                 49
                                                                            Pemrograman Lanjut| 5/18/2011       50

   10. Jalankan perintah SQL berikut di SQL Command
       insert into anggota(nama,`tmpLahir`,`tglLahir`) values ('Kamarudin','Riau','1980/05/15');

       insert into mahasiswa(`idAnggota`,nim,`tahunMasuk`) values ('1','04.11.1785','2004')


Membuat Form Input Mahasiswa
Pada bagian ini kita akan memulai untuk membuat form input mahasiswa, dimana form input ini akan
berguna ketika kita hendak menambah data mahasiswa dan mengubah data mahasiswa.

   1. Tambahkan 1 buah JDialogForm, jika tidak ketemu pilih other kemudian Swing Gui Forms, maka
      akan muncul JDialogForm. Beri nama DialogInputMahasiswa




   2. Atur agar layoutnya menjadi BorderLayout




                                                                                                            Pemrograman Lanjut | 5/18/2011




                                                                                                        50
                                                                        Pemrograman Lanjut| 5/18/2011       51

3. Tambahkan 1 buah JPanel dengan posisi South




4. Atur agar layout dari jpanel menjadi FlowLayout, di inspector tampak seperti gambar berikut




   Atur agar alignment dari FlowLayout di jPanel1 menjadi Right
5. Tambahkan 2 buah button di jPanel1




                                                                                                        Pemrograman Lanjut | 5/18/2011




                                                                                                    51
                                                                   Pemrograman Lanjut| 5/18/2011       52

6. Ubah nama dari JButton 1 menjadi btnSimpan dan JButton2 menjadi btnTutup




7. Ubah text dari btnSimpan menjadi Simpan dan btnTutup menjadi Tutup




8. Tambahkan 1 buah JPanel di posisi Center


                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               52
                                                                        Pemrograman Lanjut| 5/18/2011       53

9. Atur agar layout dari JPanel2 menjadi GridBagLayout




10. Tambahkan 6 buah JLabel di jPanel2, biarkan posisi apa adanya, kita atur belakangan




11. Klik kanan kemudian pilih costumize pada tulisan GridBagLayout di inspector

                                                                                                        Pemrograman Lanjut | 5/18/2011




                                                                                                    53
                                                                         Pemrograman Lanjut| 5/18/2011       54

12. Maka akan muncul gambar seperti berikut




13. Tarik jLabel2 agar dibawah jLabel1, jLabel3 dibawah jLabel 2 dan seterusnya




                                                                                                         Pemrograman Lanjut | 5/18/2011




   Kemudian Close


                                                                                                     54
                                                                   Pemrograman Lanjut| 5/18/2011       55

14. Tambahkan 3 buah JtextField, sehingga seperti gambar berikut




15. Kemudian masuk kembali ke GridBagLayoutCostumizer




                                                                                                   Pemrograman Lanjut | 5/18/2011




                                                                                               55
                                       Pemrograman Lanjut| 5/18/2011       56

16. Atur agar seperti gambar berikut




    Lalu Close
17. Tambahkan 3 JFormattedTextField




                                                                       Pemrograman Lanjut | 5/18/2011




                                                                   56
                                                                       Pemrograman Lanjut| 5/18/2011       57

18. Atur agar posisinya seperti gambar dibawah ini melalui GridBagLayout Costumizer




19. Sesuaikan DialogInputMahasiswa anda agar seperti gambar dibawah ini




20. Kosongkan semua text yang ada di jTextField1 sampai jTextField3 dan jFormattedTextField1
    sampai jFormattedTextField3



                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   57
                                                                          Pemrograman Lanjut| 5/18/2011       58

21. Pilih Jlabel1 sampai jLabel 6, kemudian cari Properties Anchor, ubah menjadi West




    Hasilnya yaitu




22. Pilih jTextField1 sampai jTextField3 dan jFormattedTextField1 sampai jFormattedTextField3,
    kemudian cari Properties Anchor, ubah menjadi west
23. Secara bergantian atur melalui properties agar preferred Size dari jTextField1 sampai jTextField3
    dan jFormattedTextField1 sampai jFormattedTextField3 menjadi [150, 20]
24. Ubah variabel name dengan cara klik kanan jTextField1, pilih Change Variabel Name



                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                        58
                                                                  Pemrograman Lanjut| 5/18/2011       59

25. Ubah Variabel Name seperti tabel berikut
     Variabel Name yang sebelumnya               Variabel name yang baru
     jTextField1                                 txtID
     jTextField2                                 txtNama
     jTextField3                                 txtTempatLahir
     jFormattedTextField1                        txtTanggalLahir
     jFormattedTextField2                        txtNIM
     jFormattedTextField3                        txtTahunMasuk
    Di inspector tampak seperti gambar berikut




                                                                                                  Pemrograman Lanjut | 5/18/2011




                                                                                              59
                                                                    Pemrograman Lanjut| 5/18/2011       60

26. Tambahkan 1 buah Java interface




27. Beri nama DialogInputListener
28. Hasilnya kode program seperti dibawah ini
     package sistemperpustakaan.view;

     public interface DialogInputListener {

     }


29. Tambahkan 1 buah abstract method dengan nama refresh, sehingga kode program anda seperti
    dibawah ini
     package sistemperpustakaan.view;

     public interface DialogInputListener {

         void refresh();

     }


30. Implements method DialogInputListener di kelas FrmDataMahasiswa sehingga tampak seperti         Pemrograman Lanjut | 5/18/2011
    gambar berikut (tambahkan yang dicetak tebal)




                                                                                                60
                                                                        Pemrograman Lanjut| 5/18/2011       61


       public class FrmDataMahasiswa extends javax.swing.JFrame

         implements DialogInputListener{

         public void refresh() {

             throw new UnsupportedOperationException("Not supported yet.");

         }

         ……..(kode program selanjutnya)

  31. Ubah agar method refresh seperti kode program dibawah ini (tambahkan yang dicetak tebal)
       public void refresh() {
           Mahasiswa[] lstMahasiswa = dm.findAll();
           DefaultTableModel dtm = (DefaultTableModel) tbMhs.getModel();
           dtm.setRowCount(0);
           int i = 1;
           for (Mahasiswa m : lstMahasiswa) {
              dtm.addRow(new Object[]{
                 i,m.getNim(),m.getNama(),
                 m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk()
              });
              i++;
           }
         }



Menambahkan event di Form Input Dialog Mahasiswa
  1. Pada DialogInputMahasiswa deklarasikan objek listener dengan tipe DialogInputListener
     private DialogInputListener listener;
  2. Pada DialogInptMahasiswa deklarasikan objek mahasiswa dengan tipe Mahasiswa
     private Mahasiswa mahasiswa;
  3. Tambahkan event pada btnTutup
         private void btnTutupActionPerformed(java.awt.event.ActionEvent evt) {                         Pemrograman Lanjut | 5/18/2011
               setVisible(false);
         }
     Event ini nantinya akan membuat FrmInputDialog Mahasiswa menghilang
  4. Hapus method main di FrmInputDialogMahasiswa




                                                                                                    61
                                                                      Pemrograman Lanjut| 5/18/2011       62

5. Buat 1 buah Setter untuk objek mahasiswa dan listener
       public void setListener(DialogInputListener listener) {
         this.listener = listener;
       }

       public void setMahasiswa(Mahasiswa mahasiswa) {
         this.mahasiswa = mahasiswa;
       }
6. Deklarasikan 1 buah objek daoMahasiswa dengan tipe DaoMahasiswa
   private DaoMahasiswa daoMahasiswa;
7. Ubah agar konstruktor DialogInputMahasiswa seperti kode program berikut
     public DialogInputMahasiswa(java.awt.Frame parent, DaoMahasiswa daoMahasiswa) {
         super(parent, true);
         initComponents();
         this.daoMahasiswa = daoMahasiswa;
       }
8. Ubah agar method set mahasiswa anda seperti kode program berikut
     public void setMahasiswa(Mahasiswa mahasiswa) {
         this.mahasiswa = mahasiswa;
         txtID.setText(String.valueOf(mahasiswa.getId()));
         txtNIM.setText(mahasiswa.getNim());
         txtNama.setText(mahasiswa.getNama());
         txtTahunMasuk.setText(String.valueOf(mahasiswa.getTahunMasuk()));
         DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
         txtTanggalLahir.setText(df.format(mahasiswa.getTglLahir()));
         txtTempatLahir.setText(mahasiswa.getTmpLahir());
       }
9. Tambahkan action performed untuk btnSimpan.
10. Didalam method btnSimpanActionPerformed, cek, apakah objek mahasiswa masih null atau
    tidak, jika null maka inisialisasi

   if (mahasiswa == null) {
               mahasiswa = new Mahasiswa();                                                           Pemrograman Lanjut | 5/18/2011
   }
11. Beri nilai untuk nama, nim dan tahun masuk

   mahasiswa.setNama(txtNama.getText());
   mahasiswa.setNim(txtNIM.getText());
   mahasiswa.setTahunMasuk(Integer.parseInt(txtTahunMasuk.getText()));
   mahasiswa.setTmpLahir(txtTempatLahir.getText());




                                                                                                  62
                                                                         Pemrograman Lanjut| 5/18/2011       63

  12. Lakukan pemformatan tanggal lahir

     DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            try {
                 mahasiswa.setTglLahir(df.parse(txtTanggalLahir.getText()));
             } catch (ParseException ex) {
     Logger.getLogger(DialogInputMahasiswa.class.getName()).log(Level.SEVERE, null,
     ex);
             }
  13. Lakukan pengecekan bila txtID masih kosong maka prosesnya adalah insert, sedangkan bila txtID
      sudah ada isinya maka prosesnya adalah update. Bila proses update maka bila sukses
      sembunyikan form dialog input mahasiswa. Munculkan pesan bila gagal.

     if (txtID.getText().isEmpty()) {
                 if (daoMahasiswa.insert(mahasiswa)) {
                      listener.refresh();
                      mahasiswa=null;
                      return;
                 }
             } else {
                 if (daoMahasiswa.update(mahasiswa)) {
                      listener.refresh();
                      mahasiswa=null;
                      setVisible(false);
                      return;
                 }
             }
             JOptionPane.showMessageDialog(this, "Proses gagal");



Menghubungkan Form Data Mahasiswa dan Dialog Input Mahasiswa
  1. Tambahkan event untuk btnTambah di FrmDataMahasiswa

     private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
             DialogInputMahasiswa inputMahasiswa=new DialogInputMahasiswa(this, dm);
             inputMahasiswa.setListener(this);
             inputMahasiswa.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
             inputMahasiswa.setVisible(true);
         }                                                                                               Pemrograman Lanjut | 5/18/2011
  2. Ubah modifier dari method findId di kelas DaoMahasiswa dari private menjadi public




                                                                                                      63
                                                                          Pemrograman Lanjut| 5/18/2011       64

  3. Tambahkan event untuk btnUbah di FrmDataMahasiswa

     private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) {
             // TODO add your handling code here:
             int selectedRow = tbMhs.getSelectedRow();
             String nim = tbMhs.getValueAt(selectedRow, 1).toString();
             int id = dm.findId(nim);
             Mahasiswa mahasiswa = new Mahasiswa();
             mahasiswa.setId(id);
             mahasiswa.setNim(nim);
             mahasiswa.setNama(tbMhs.getValueAt(selectedRow, 2).toString());
             mahasiswa.setTmpLahir(tbMhs.getValueAt(selectedRow, 3).toString());
             DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
             try {
                 mahasiswa.setTglLahir(df.parse(
                         tbMhs.getValueAt(selectedRow, 4).toString()));
             } catch (ParseException ex) {
                 Logger.getLogger(
                         FrmDataMahasiswa.class.getName()).log(
                         Level.SEVERE, null, ex);
             }
             mahasiswa.setTahunMasuk(Integer.parseInt(
                     tbMhs.getValueAt(selectedRow, 5).toString()));
             DialogInputMahasiswa inputMahasiswa =
                     new DialogInputMahasiswa(this, dm);
             inputMahasiswa.setMahasiswa(mahasiswa);
             inputMahasiswa.setListener(this);
             inputMahasiswa.setVisible(true);
         }
  4. Silahkan anda coba untuk menjalankan aplikasi anda.


Mendesain Report
  1. Pastikan sudah terinstall plugin ireport di netbeans anda, melalui menu tools  plugin 
     Installed, kemudian cari ireport designer




                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                      64
                                                                      Pemrograman Lanjut| 5/18/2011       65

2. Buatlah tambahan 1 buah paket dengan nama report




   Maka kurang lebih seperti berikut




3. Tambahkan 1 buah empty report, dengan cara klik kanan pada paket sistemperpustakaan.report
   kemudian pilih other. Pada categories pilih Report, pada File Types pilih Empty Report, beri
   nama RptMahasiswa.




                                                                                                      Pemrograman Lanjut | 5/18/2011




                                                                                                  65
                                                         Pemrograman Lanjut| 5/18/2011       66

4. Maka anda akan mendapatkan tampilan seperti berikut




   Dan tampilan seperti berikut




5. Tambahkan 1 buah Static Text di Title




                                                                                         Pemrograman Lanjut | 5/18/2011




                                                                                     66
                                                                       Pemrograman Lanjut| 5/18/2011       67

6. Silahkan anda atur agar ukuran font dan aligmentnya seperti digambar




7. Ubah melalui properties  text agar tulisan Static text berubah menjadi ”Laporan Daftar
   Anggota”




                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   67
                                                                       Pemrograman Lanjut| 5/18/2011       68

8. Buka report inspector kemudian pada Fields tambahkan Field 4 buah field yaitu id, nama,
   tmlLahir, tglLahir




   Sehingga tampak seperti gambar berikut




   Untuk id FieldClassnya diubah melalui properties menjadi java.lang.Integer
   Untuk tglLahir FieldClassnya diubah melalui properties menjadi java.util.Date
9. Tambahkan 4 field tersebut ke bagian Detail 1, sehingga pada bagian Column Header akan
   tertambah secara otomatis nama field yang anda tambahkan




                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   68
                                                                          Pemrograman Lanjut| 5/18/2011       69

10. Rapikan agar seperti gambar berikut




11. Coba pilih pada label yang bertuliskan id, kemudian klik kanan pilih Padding and Borders




                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                      69
                                                                  Pemrograman Lanjut| 5/18/2011       70

12. Pada window berikut, atur agar Line width menjadi 1




   Sehingga seperti berikut




                                                    kemudian OK


                                                                                                  Pemrograman Lanjut | 5/18/2011




                                                                                              70
                                                                       Pemrograman Lanjut| 5/18/2011       71

13. Lakukan pada semua komponen di report anda kecuali pada Header, sehingga tampak seperti
    berikut




14. Melalui report inspector, atur agar Page Header, Column Footer, Page Footer dan Summary
    Band Heightnya menjadi 0 atau dengan cara klik kanan delete band, sehingga tampak seperti
    gambar berikut




   Pada Report Inspector tampak seperti




                                                                                                       Pemrograman Lanjut | 5/18/2011




                                                                                                   71
                                                                         Pemrograman Lanjut| 5/18/2011       72

15. Silahkan anda compile report anda




    Cari icon
16. Pastikan anda mendapat pesan sebagai berikut




17. Pada Libraries di Project Sistem Perpustakaan anda coba klik kanan, kemudian pilih Add Libraries




18. Pada window berikut klik tombol Import
                                                                                                         Pemrograman Lanjut | 5/18/2011




                                                                                                       72
                                                                       Pemrograman Lanjut| 5/18/2011       73

19. Coba cari Jasper Report 3.0.1, kemudian klik Import Library




20. Kemudian pilih Add Library
21. Pastikan pada Libraries anda seperti berikut




                                                                                                       Pemrograman Lanjut | 5/18/2011
22. Pastikan anda bisa menemukan libraries yang mengandung bertuliskan jasperreports-4.0.2.jar




                                                                                                   73
                                                                         Pemrograman Lanjut| 5/18/2011       74

23. Bila tidak ketemu, maka tambahkan dulu melalui Add Jar/Folder, pilih library Jasper Report anda
    lalu pilih Copy to Libraries Folder  Open




24. Tambahkan 1 buah paket dibawah paket sistemperpustakaan.view, beri nama report




   Sehingga susunan paket anda seperti berikut
                                                                                                         Pemrograman Lanjut | 5/18/2011




                                                                                                      74
                                                                        Pemrograman Lanjut| 5/18/2011       75

25. Tambahkan 1 buah Jframe pada paket sistemperpustakaan.view.report
26. Atur agar desainya sebagai berikut




   Pada Inspector tampak seperti gambar berikut




27. Pada btnTutup tambahkan panggil method
    Dispose();
    untuk menutup Form
28. Deklaraskan objek dm dengan tipe DaoMahasiswa
29. Sesudah pemanggilan InitComponents di konstruktor, lakukan inisialisasi objek dm
                                                                                                        Pemrograman Lanjut | 5/18/2011




                                                                                                    75
                                                                 Pemrograman Lanjut| 5/18/2011       76

30. Pada btnRefresh tambahkan kode program berikut

   private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {
           // TODO add your handling code here:
           Mahasiswa[] arrMahasiswa = dm.findAll();
           ArrayList<Mahasiswa> al = new ArrayList<Mahasiswa>();
           for (Mahasiswa mahasiswa : arrMahasiswa) {
               al.add(mahasiswa);
           }
           JRDataSource ds = new JRBeanCollectionDataSource(al);
           try {
               JasperPrint jasperPrint = JasperFillManager.fillReport(
                       getClass().getResourceAsStream(
                       "/sistemperpustakaan/report/RptMahasiswa.jasper"),
                       new HashMap<String, String>(), ds);
               JRViewer viewer = new JRViewer(jasperPrint);
               viewer.setFitWidthZoomRatio();
               pnCenter.removeAll();
               pnCenter.add(viewer);
               pnCenter.validate();
           } catch (JRException ex) {
               ex.printStackTrace();
           }
   }



31. Pada FrmMain, tambahkan 1 menu item pada menu Laporan




32. Tambahkan event untuk memunculkan pada menu Daftar Anggota
                                                                                                 Pemrograman Lanjut | 5/18/2011
   private void mnuDaftarAnggotaActionPerformed(java.awt.event.ActionEvent evt) {
           // TODO add your handling code here:
           FrmLaporanDataMahasiswa laporanDataMahasiswa=
                   new FrmLaporanDataMahasiswa();
           laporanDataMahasiswa.setSize(new Dimension(558, 297));
   laporanDataMahasiswa.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
           laporanDataMahasiswa.setVisible(true);
       }




                                                                                             76
                                                                          Pemrograman Lanjut| 5/18/2011       77

33. Jangan lupa tambahkan commons-beanutils-1.8.0.jar pada libraries anda
34. Klik tombol ini agar file jasper anda ikut tercopy, ingat setiap kali anda mengubah susunan
    laporan, pastikan anda compile kemudian klik tombol ini




35. Pada output tampak seperti berikut




36. Coba anda kunjingi seperti yang dicetak tebal lewat explorer




37. Coba double klik SistemPerpustakaan.jar, seharusnya berjalan, bila tidak jalan coba anda cek lagi




                                                                                                          Pemrograman Lanjut | 5/18/2011




                                                                                                        77

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:136
posted:11/21/2011
language:Indonesian
pages:77