Embed
Email

Pemrograman Lanjut

Document Sample

Shared by: linzhengnd
Categories
Tags
Stats
views:
51
posted:
11/20/2011
language:
Indonesian
pages:
77
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 {

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 {

@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 lstMahasiswa=new ArrayList();

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 al = new ArrayList();

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(), 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



Related docs
Other docs by linzhengnd
F_Rehab
Views: 0  |  Downloads: 0
affirmative asylum
Views: 1  |  Downloads: 0
er-oz_spor_malzemeleri__fiyatlar_a_dan_z_ye
Views: 19  |  Downloads: 0
Questions to homeworks 1 and 2
Views: 0  |  Downloads: 0
_FP7_partnerkeres__int_zm_nyek_honlapra
Views: 0  |  Downloads: 0
200811251358390.November 24_ 2008
Views: 0  |  Downloads: 0
2nd Grade Summaries Theme 3
Views: 1  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!