Anda di halaman 1dari 47

MODUL PRAKTIKUM DATABASE JAVA

STUDI KASUS RENTAL DVD FILM BERBASIS OOP MURNI

Penyusun :
Mokhamad Ramdhani Raharjo S.Kom., M.Kom

Tim Labkom Fakultas Teknologi Informasi (FTI)


UNIVERSITAS ISLAM KALIMANTAN (UNISKA)
Muhammad Arsyad Al Banjari
Banjarmasin

1.

Database Rental VCD


Database yang akan kita gunakan yaitu MySQL (XamppTools).Penulis disini tidak
menggunakan tools dari NetBeans untuk membuat database. Peserta praktikum bisa
menggunakan tools lain untuk mendasain tabel dan view yang akan digunakan.

a.

Buat database dengan nama dbfilm

b.

Buat tabel dengan anggota, dimana tabel ini digunakan untuk menyimpan data
master anggota .
No
1
2
3
4
5
6
7
8

Field
IDAnggota
nama
tempat_lahir
tgl_lahir
jkl
status
alamat
telp

Type
Varchar (8)
Varchar (40)
Varchar(15)
Date
Varchar(15)
Varchar(15)
Varchar(50)
Varchar(15)

Keterangan
Primary Key

c. Buat tabel dengan nama film, dimana tabel ini digunakan untuk menyimpan
data master filem.
No
1
2
3
4
5
6

Field
KodeFilm
Judul
Genre
Tahun
Asal
Stok

Type
Varchar (5)
Varchar (30)
Varchar(20)
Int(4)
Varchar(15)
Int(3)

Keterangan
Primary Key

Negara

d. Buat tabel dengan nama pinjam, dimana tabel ini digunakan untuk menyimpan
data pinjaman anggota
No
1
2
3

Field
IDPinjam
IDAnggota
TotalDenda

Type
Varchar (8)
Varchar (8)
Int(6)

Keterangan
Primary Key
Foreign Key

e. Pada tahap ini , akan membuat VIEW , View digunakan untuk proses penampilan
laporan. View merupakan perintah SQL untuk menggabungkan beberapa tabel
menjadi satu yang mempunyai sifat hanya menampilkan data saja dan tidak bisa
digunakan proses simpan, ubah, dan hapus, karena isi data dari view tergantung
dari tabe-tabel yang sudah gabungkan. DISARANKAN SELAIN ANDA
MENDALAMI BAHASA PEMROGRAMAN JAVA ATAU LAINYA ANDA
JUGA HARUS

BISA SQL DALAM TEKNIK DATABASE DALAM

PEMBUATAN APLIKASI, KARENA INI JUGA HARUS DIKUASAI OLEH


SEORANG PROGRAMMER DEKSTOP ATAUPUN WEBSITE. Berikut ini
langkah membuat view di Xampp melalui browser :

Pilih Database yang sudah dibuat

Klik menu Query Seperti gambar dibawah ini

Kemudian pada tampilan isian Query pada database ketikan


seperti dibawah ini :

perintah

SELECT DISTINCT
pinjam.IDPinjam,
pinjam.IDAnggota,
anggota.nama,
detail_pinjam.KodeFilm,
film.judul,
detail_pinjam.tgl_pinjam,
detail_pinjam.tgl_kembali,
detail_pinjam.`status`,
detail_pinjam.keterangan,
detail_pinjam.denda
FROM
anggota
INNER JOIN pinjam ON anggota.IDAnggota = pinjam.IDAnggota
INNER JOIN detail_pinjam ON detail_pinjam.IDPinjam =
pinjam.IDPinjam
INNER JOIN film ON film.KodeFilm = detail_pinjam.KodeFilm

Ketikan kode SQL di atas seperti gambar dibawah ini dan kemudian klik
tombol Submit Query

Kemudian klik menu Create View, seperti gambar dibawah ini :

Kemudian ketikan nama view dengan nama view_pinjam pada


tampilan form seperti dibawah ini dan kemudian klik tombl GO.

Ketikan Nama View


pada area ini

2.

Berikut ini tampilan list tabel dan view yang sudah dibuat

Pembuatan Class ConfigDB


Dalam tahapan ini akan mencoba untuk membuat kode program dijava
dengan konsep OOP mendekati 100% untuk proses transaksi,laporan, dan
lainya yang akan digunakan pada kasus rental dvd filem

a. Buat project utama klik menu File-New Project-Java-Java Application-Next


b. Kemudian beri nama project tersebut dengan nama RentalDVD kemudian klik

tombol finish.
2.1 Membuat kelas ConfigDB
Kelas ini akan digunakan untuk menempatkan kode koneksi kedatabase, simpan, ubah,
hapus, atau kode lainya yang berhubungan dengan transaksi yang terjadi di setiap form
aplikasi yang akan digunakan. Buat kelas tersebut dengan nama ConfigDB.
-

Klik kanan pada area package rentaldvd- New Java Class seperti gambar dibawah ini :

Klik Kanan pada Area Libraries Add JAR/Folder- kemudian masuk kefolder lib
yang sudah disediakan Open semua file yang terdapat pada folder tersebut
untuk dijadikan library pada aplikasi yang dibuat, seperti gambar dibawah ini :

Jika semua sudah diload maka pada area libraries terdapat tambahan seperti
dibawah ini :

Penjelasan :

Mysql-connector-java-5.1.18-bin.jar : digunakan untuk koneksi database


MySQL.

Jasperreports-5.0.0.jar : digunakan untuk proses pemanggilan laporan di


aplikasi java
Library lainya selain yang sebutkan digunakan untuk membantuk membuat
proses tampil laporan.
6

Proses selanjutnya memanggil semua library yang akan digunakan untuk proses
pembuatan method pada kelas ConfigDB, library tersebut diataranya :
import java.sql.*;
{Berfungsi untuk koneksi database, semua perinta SQL}
import javax.swing.JTable;
{Berfungsi untuk parameter table yang akan digunakan di class}
import javax.swing.table.DefaultTableModel;
{Berfungsi untuk mengatur lebar kolom JTable dan member judul kolom}
import javax.swing.JOptionPane;
{Berfungsi membuat pesan dialog}
import java.io.File;
{Berfungsi mengambil file laporan yang dibuat dari IReport}
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JRDesignQuery;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
{Semua library bagia jasperreport berfungsi untuk penampilan laporan file
.jrxml baik berupa compile, query pada laporan, preview laporan, dll}
Dibawah tampilan hasil import beberapa library yang digunakan pada class
ConfigDB

2.2 Pembuatan variable global pada class ConfigDB


Variabel ini akan digunakan pada method method umum yang akan digunakan pada class
ini saja. Jabarkan variable tersebut sebagai variable global yang bersifat private seperti
gambar dibawah ini :

2.3 Pembuatan method koneksi yang juga sebagai contructor pada class ConfigDB
Silahkan ketikan kode method dibawah ini untuk proses koneksi database mysql.
public ConfigDB() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
koneksi=DriverManager.getConnection("jdbc:mysql://localhost:3306/"+this.Database,t
his.Username,this.Password);
System.out.println("Koneksi Berhasil");
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian :
\n ["+e.toString() +"]");
}
}
2.4 Pembuatan function isiTabel pada class ConfigDB
Function ini berfungsi untuk mengambil data dari table MySQL dan disimpan pada
dirinya sendiri setalah mengambil data dari table, karena function ini mempunyai tipe
pengembalian Object yang berupa array.
public Object[][] isiTabel(String SQL, int jumlah){
Object[][] data=null;
try {
Statement st = ConfigDB.this.koneksi.createStatement();
ResultSet rs = st.executeQuery(SQL);
rs.last();
8

int baris=rs.getRow();
rs.beforeFirst();
int j=0;
data = new Object[baris][jumlah];
while (rs.next()) {
for (int i = 0; i < jumlah; i++) {
data[j][i]=rs.getString(i+1);
}
j++;
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian
method isiTable : \n ["+e.toString() +"]");
}
return data;
}
2.5 Pembuatan method tampilTabel pada class ConfigDB
Method ini diguakan untuk menampilkan Judul Tabel pada kolom dikomponen JTable
dan juga sekaligus memanggil function isiTabel yag sudah dibuat, guna untuk
menampilkan data table pada setiap baris diJTable.

public void tampilTabel(String Judul[],String SQL, JTable Tabel){


try {
String title[]=Judul;
int jum =title.length;
Tabel.setModel(new DefaultTableModel(isiTabel(SQL,jum), title));
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian
method tampilTabel : \n ["+e.toString() +"]");
}
}
2.6 Pembuatan method aturlebarKolom pada class ConfigDB
Method ini digunakan untuk mengatur lebar dari setiap kolom judul pada komponen
JTable
public void aturLebarKolom(JTable tabel,int baris[]){
try {
int getBaris[]=baris;
int JumlahBaris=getBaris.length;
tabel.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
for (int i = 0; i < JumlahBaris-1; i++) {
tabel.getColumnModel().getColumn(i).setPreferredWidth(getBaris[i]);
9

}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian
method aturLebarKolom : \n ["+e.toString() +"]");
}
}
2.7 Pembuatan method simpanData pada class ConfigDB
Method ini digunakan untuk proses simpan data untuk semua table yang digunakan pada
kasus ini ,karena kode simpan sudah dirancang sedemikian rupa agar bisa dipanggil
berkali-kali sesuai parameter yang digunakan.
public void simpanData(String SQL){
try {
Statement st = ConfigDB.this.koneksi.createStatement();
st.execute(SQL);
st.close();
JOptionPane.showMessageDialog(null,"Data berhasil disimpan");
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan

pada bagian

method simpanData : \n ["+e.toString() +"]");


}
}

2.8 Pembuatan method ubahData pada class ConfigDB


Method ini digunakan untuk proses ubah data untuk semua table yang digunakan pada
kasus ini ,karena kode ubah sudah

dirancang sedemikian rupa agar bisa dipanggil

berkali-kali sesuai parameter yang digunakan.


public void ubahData(String SQL){
try {
Statement st = ConfigDB.this.koneksi.createStatement();
st.execute(SQL);
st.close();
JOptionPane.showMessageDialog(null,"Data berhasil diubah");
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan
method ubahData : \n ["+e.toString() +"]");
}
}
10

pada bagian

2.9 Pembuatan method hapus data pada class ConfigDB


Method ini digunakan untuk proses hapus data untuk semua table yang digunakan pada
kasus ini ,karena kode hapus sudah dirancang sedemikian rupa agar bisa dipanggil
berkali-kali sesuai parameter yang digunakan.
public void hapusData(String SQL){
try {
Statement st = ConfigDB.this.koneksi.createStatement();
st.execute(SQL);
st.close();
JOptionPane.showMessageDialog(null,"Data berhasil dihapus");
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan
method hapusData : \n ["+e.toString() +"]");
}
}

pada bagian

2.10 Pembuatan function duplikasiData pada class ConfigDB


Function ini digunakan untuk proses pengecekan data yang sama sesuia dengan primary
key yang digunakan dan juga bisa digunakan untuk semua table yang ada, karena sudah
dirancang agar bisa dipakai berkali-kali
public boolean duplikasiData(String tabel,String Key,String nilai){
boolean ada =false;
try {
Statement st = ConfigDB.this.koneksi.createStatement();
ResultSet rs = st.executeQuery("SELECT*FROM "+tabel+" WHERE
"+Key+"="+nilai);
if (rs.next()){
ada=true;
}else {ada=false;}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian
method duplikasiData : \n ["+e.toString() +"]");
}
return ada;
}
2.11 Pembuatan method cariData pada class ConfigDB
Method ini digunakan untuk proses pencarian data dari berbagai table yang akan
digunakan, Karena method ini sudah dirancang untuk bisa dipanggil berkali-kali sesuai
table yang digunakan.
public void cariData(String Judul[],String Cari, JTable Tabel){
try {
Statement st = ConfigDB.this.koneksi.createStatement();
String title[]=Judul;
int jum =title.length;
11

Tabel.setModel(new DefaultTableModel(isiTabel(Cari,jum), title));


} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan
method cariData : \n ["+e.toString() +"]");
}
}

pada bagian

2.12 Pembuatan method tampilLaporan pada class ConfigDB


Method ini digunakan untuk proses menapilkan beberapa laporan yang akan digunakan
dengan perintah query yang sudah disediakan. Method ini bisa dipanggil berkali-kali
sesuai kebutuhan dengan masing-masing laporan.
public void tampilLaporan(String laporanFile, String SQL){
try {
File file = new File(laporanFile);
JasperDesign jasDes = JRXmlLoader.load(file);
JRDesignQuery sqlQuery = new JRDesignQuery();
sqlQuery.setText(SQL);
jasDes.setQuery(sqlQuery);
JasperReport JR = JasperCompileManager.compileReport(jasDes);
JasperPrint JP = JasperFillManager.fillReport(JR,null,ConfigDB.this.koneksi);
JasperViewer.viewReport(JP);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan
pada bagian
method TampilLaporan : \n ["+e.toString() +"]");
}
}
2.13 Pembuatan function jumlahRecord pada class Config
Buatlah kode function jumlahRecord yang akan digunakan untuk mengetahui jumlah record
dari proses pencarian yang akan dilakukan dari masing-masing table yang akan dicari,
dibawah ini merupakan potongan kode mencari jumlah record.
public int jumlahRecord(String SQL){
int hasil=0;
int i=0;
try {
Statement st=ConfigDB.this.koneksi.createStatement();
ResultSet rs = st.executeQuery(SQL);
while (rs.next()) {
i++; }
hasil=i;
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Maaf Terjadi Kesalahan pada bagian method
jumlahRecord : \n ["+e.toString() +"]");
12

}
return hasil;
}

3.

Pembuatan Frame formFilm


Form ini akan diguakan untuk proses transaksi simpan, ubah, hapus, cari data pada master
data film. Pembuatan Frame formFilm pada package rentaldvd. Klik kanan pada
package rentaldvd- New JFrame Form berinama formFilem Finish. Pada
Properties Frame dibagian defaultCloseOperation ubah menjadi Dispose.

Pada class formFile silakan tambahkan library :


import javax.swing.JOptionPane; // membuat pesan dialog
import java.sql.*; // untuk menampilkan data dara perintah query

Tabel dibawah ini merupakan kompon-komponen yang ditambahkan kedalam form yang
akan dibuat.
Komponen
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
JTextField
JTextField
JTextField
JTextField
JTextField
JTextField

Name
JLabel1
JLabel2
JLabel3
JLabel4
JLabel5
JLabel6
JLabel7
txtKode
txtJudul
txtTahun
txtAsal
txtStok
txtCari

Value/ Model/Text
Kode Film
Judul
Genre
Tahun
Asal Negara
Stok
Pencarian Judul Film

13

Jcombobo

cmbGenre

Jbutton
Jbutton
Jbutton
Jbutton
Jbutton
Jtable

btnSimpan
btnHapus
btnUbah
btnClear
btnRefresh
JTableFilm

.: Pilih Judul :.
Action
Adventure
Animation
Biography
Comedy
Crime
Documentary
Drama
Family
Fantasy
History
Horror
Musical
Mystery
Sport
Thriller
War
Western
Simpan
Hapus
Ubah
Clear
Refresh
-

Gambar dibawah ini merupakan contoh desain form yang dibuat.

14

3.1 Pembuatan variabel global pada class class formFilm


Buatlah variable global seperti pada gambar dibawah ini, yang berfungsi untuk
mendeklarasikan judul kolom, dan pemilihatan table yang digunakan pada JTable.
Variable ini nanti akan dipanggil dibeberpa method yang akan dipakai.

3.2 Penambahan kode dibawah initComponent


Tambahkan beberapa potongan kode ini, pada Constructor formFilm() yang tepatnya
dibawah initComponent().
this.setLocationRelativeTo(null); // untuk memposisikan form ditengah layar
new ConfigDB().tampilTabel(judulKolom, sqlFilm, JTableFilm);
new ConfigDB().aturLebarKolom(JTableFilm, lebar);

3.3 Pembuatan Kode Simpan Film


Silahkan buat kode pada tombol simpan dan kemudian ketikan seperti list kode dibawah
ini :
try {
if (txtKode.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Kode film belum diisi");
txtKode.requestFocus();
} else
if (txtJudul.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Judul film belum diisi");
txtJudul.requestFocus();
} else
if (String.valueOf(cmbGenre.getSelectedItem())==".: Pilih Judul :."){
JOptionPane.showMessageDialog(null,"Genre film belum diisi");
cmbGenre.requestFocus();
} else
if (txtTahun.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Genre film belum diisi");
15

txtTahun.requestFocus();
} else
if (txtAsal.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Asal negara film belum diisi");
txtAsal.requestFocus();
}else
if (txtStok.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Stok film belum diisi");
txtStok.requestFocus();
}else
if (new ConfigDB().duplikasiData("film","KodeFilm",txtKode.getText())==true){
JOptionPane.showMessageDialog(null,"Kode Film sudah terdaftar");
Statement st = new ConfigDB().koneksi.createStatement();
ResultSet rs = st.executeQuery("SELECT*FROM film WHERE
KodeFilm='"+txtKode.getText()+"'");
if (rs.next()){
txtJudul.setText(rs.getString("judul"));
cmbGenre.setSelectedItem(String.valueOf(rs.getString("genre")));
txtTahun.setText(rs.getString("tahun"));
txtAsal.setText(rs.getString("asal"));
txtStok.setText(rs.getString("stok"));
}
}else{
String SQL="INSERT INTO film VALUES
('"+txtKode.getText()+"','"+txtJudul.getText()+"','"+
String.valueOf(cmbGenre.getSelectedItem())
+"','"+txtTahun.getText()+"','"+txtAsal.getText()+
"','"+txtStok.getText()+"')";
new ConfigDB().simpanData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlFilm, JTableFilm);
new ConfigDB().aturLebarKolom(JTableFilm, lebarKolom);
}
} catch (Exception e) {
}

3.4 Pembuatan Kode Ubah Film


Silahkan buat kode pada tombol ubah seperti potongan kode dibawah ini.
try {
if (
(txtKode.getText().isEmpty()) && (txtJudul.getText().isEmpty()) &&
(txtAsal.getText().isEmpty()) && (txtTahun.getText().isEmpty()) &&
16

(txtStok.getText().isEmpty()) &&
(String.valueOf(cmbGenre.getSelectedItem())==".: Pilih Judul :.")
)
{
JOptionPane.showMessageDialog(null,"Silahkan Pilih Data dulu untuk proses
Ubah");
JTableFilm.requestFocus();
} else
{
String
SQL="UPDATE
film
SET
judul='"+txtJudul.getText()+"',
genre='"+String.valueOf(cmbGenre.getSelectedItem())
+"',
tahun='"+txtTahun.getText()+"',
asal='"+txtAsal.getText()+"',
stok='"+txtStok.getText()
+"' WHERE KodeFilm='"+txtKode.getText()+"'";
new ConfigDB().ubahData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlFilm, JTableFilm);
new ConfigDB().aturLebarKolom(JTableFilm, lebarKolom);
}
} catch (Exception e)
{
System.out.print(e.toString());
}

3.5 Pembuatan Kode Hapus Data Film


Silahkan buat kode pada tombol hapus seperti potongan kode dibawah ini :
try {
if (
(txtKode.getText().isEmpty()) && (txtJudul.getText().isEmpty()) &&
(txtAsal.getText().isEmpty()) && (txtTahun.getText().isEmpty()) &&
(txtStok.getText().isEmpty()) &&
(String.valueOf(cmbGenre.getSelectedItem())==".: Pilih Judul :.")
)
{
JOptionPane.showMessageDialog(null,"Silahkan Pilih Data dulu untuk proses
Hapus");
JTableFilm.requestFocus();
} else
{
String SQL="DELETE FROM film WHERE KodeFilm='"+txtKode.getText()+"'";
new ConfigDB().hapusData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlFilm, JTableFilm);
new ConfigDB().aturLebarKolom(JTableFilm, lebarKolom);
17

}
} catch (Exception e)
{
System.out.print(e.toString());
}

3.6 Pembuatan Kode Clear pada pada inputan data film


Silahkan buat kode clear untuk menghapus inputan data dari table filem seperti potongan
kode dibawah ini.
txtKode.setText(null);
txtJudul.setText(null);
txtAsal.setText(null);
txtStok.setText(null);
txtTahun.setText(null);
cmbGenre.setSelectedItem(String.valueOf(".: Pilih Judul :."));
3.7 Pembuatan kode Refresh data filem
Silahkan buat kode refresh data film seperti potongan kode dibawah ini
new ConfigDB().tampilTabel(judulKolom, sqlFilm, JTableFilm);
new ConfigDB().aturLebarKolom(JTableFilm, lebarKolom);
3.8 Pembuatan kode MouseClicked pada JTableFilm
Silahkan buat kode mouseclicked pada JTableFilm yang nanti digunakan untuk
menampilkan data perbaris dan ditampilkan dimasing-masing inputan data yang tersedia.
Klik kanan pada JTableFim Events Mouse MouseClicked. Kemudian ketikan kode
seperti dibawah ini.
try {
int baris = JTableFilm.getSelectedRow();
txtKode.setText(String.valueOf(JTableFilm.getValueAt(baris,0)));
txtJudul.setText(String.valueOf(JTableFilm.getValueAt(baris,1)));
cmbGenre.setSelectedItem(String.valueOf(JTableFilm.getValueAt(baris,2)));
txtTahun.setText(String.valueOf(JTableFilm.getValueAt(baris,3)));
txtAsal.setText(String.valueOf(JTableFilm.getValueAt(baris,4)));
txtStok.setText(String.valueOf(JTableFilm.getValueAt(baris,5)));
} catch (Exception e) {
18

System.out.print(e.toString());
}

3.9 Pembuatan pencarian judul film


Silahkan buat kode untuk pencarian judul film pada inputan yang disedikan pada txtCari.
Klik kanan pada txtCari Events Key KeyPressed. Kemudia ketikan potongan kode
dibawah ini.
try {
String SQL="SELECT*FROM film WHERE judul like '%"+txtCari.getText()+"%'";
new ConfigDB().cariData(judulKolom, SQL, JTableFilm);
} catch (Exception e) {
System.out.print(e.toString());
}
Dibawah ini merupakan form hasil yang telah dibuat.

4.

Pembuatan form anggota


Form ini akan diguakan untuk proses transaksi simpan, ubah, hapus, cari data pada master
data anggota. Pembuatan Frame formFilm pada package rentaldvd. Klik kanan pada
package rentaldvd- New JFrame Form berinama formAnggota Finish. Pada
Properties Frame dibagian defaultCloseOperation ubah menjadi Dispose.
Pada class formFile silakan tambahkan library :
import javax.swing.JOptionPane; // membuat pesan dialog
import java.sql.*; // untuk menampilkan data dara perintah query
import java.util.*;
19

import java.text.SimpleDateFormat;
Sebelum melanjutkan pembuatan form, jika netbeans belum ditambahkan komponen
JDateChooser pada bagian ini akan diajarkan menambahkan komponen JDateChooser
kedalam area Pallete. Sebelumnya libray untuk komponen tanggal ini sudah
disediakan.langkah-langkah sebagai berikut :

Klik kanan pada area pallete komponen seperti gambar dibawah ini.

Pilih Pallete Manger Klik tombol Add from JAR kemudian buka folder tepat
menyimpan library dan kemudian pilih file JCalendar-1.4 kemudian klik
tombol Next

Kemudian Select semua komponen yang akan ditampilkan dan kemudian klik
tombol Next seperti gambar dibawah ini.

Kemudian pilih bagian pallete Swings Menu (anda bebas menentukan letaknya)
Finish Close

20

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form


yang akan dibuat.
Komponen
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
JTextField
JTextField
JTextField
JTextField
JTextField
JTextField
JTextField
JDateChooser

Name
JLabel1
JLabel2
JLabel3
JLabel4
JLabel5
JLabel6
JLabel7
JLabel8
JLabel9
txtID
txtNama
txtTahun
txtTempat
txtAlamat
txtTelp
txtCari
txtTGL

Jcombobo

cmbStatus

Jcombobo

cmbJKL

Jbutton
Jbutton
Jbutton
Jbutton
Jbutton
Jtable

btnSimpan
btnHapus
btnUbah
btnClear
btnRefresh
JTableAnggota

Value/ Model/Text
ID Anggota
Nama Lengkap
Tempat Lahir
Tanggal Lahir
Jenis Kelamin
Status
Alamat
Telp
Pencarian Nama Anggota

.: Pilih Data :.
Pelajar
Mahasiswa
PNS
Swasta
Wiraswasta
.: Pilih Data :.
Laki-Laki
Perempuan
Simpan
Hapus
Ubah
Clear
Refresh
-

Untuk komponen JDateChooser klik kanan pada komponen tersebut kemudian


pilih Properties Pilih dateFormatString Klik tombol disampingnya kemudian
ketikan yyyy-MM-dd OK.

21

4.1 Pembuatan varianle global pada kelas formAnggota


Buatlah variable global seperti pada gambar dibawah ini, yang berfungsi untuk
mendeklarasikan judul kolom, dan pemilihatan table yang digunakan pada JTable.
Variable ini nanti akan dipanggil dibeberpa method yang akan dipakai.

4.2 Penambahan kode dibawah initComponent


Tambahkan beberapa potongan kode ini, pada Constructor formAnggota() yang tepatnya
dibawah initComponent().
this.setLocationRelativeTo(null);
new ConfigDB().tampilTabel(judulKolom, sqlAnggota, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
4.3 Pembuatan kode simpan pada class formAnggota
Silahkan buat kode simpan untuk class formAnggota seperti potongan kode dibawah ini .
try {
if (txtID.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"ID Anggota belum diisi");
txtID.requestFocus();
}else
if(txtNama.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Nama Anggota belum diisi");
txtNama.requestFocus();
}else
if(txtTempat.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Tempat Lahir Anggota belum diisi");
txtTempat.requestFocus();
}else
if(cmbJKL.getSelectedItem()==".: Pilih Data :."){
JOptionPane.showMessageDialog(null,"Jenis Kelamin Anggota belum diisi");
cmbJKL.requestFocus();
} else
if(cmbStatus.getSelectedItem()==".: Pilih Data :."){
JOptionPane.showMessageDialog(null,"Status Anggota belum diisi");
cmbStatus.requestFocus();
}else
if(txtAlamat.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"ALamat Anggota belum diisi");
txtAlamat.requestFocus();
}else
if(txtTelp.getText().isEmpty()){
22

JOptionPane.showMessageDialog(null,"Nomor Telp Anggota belum diisi");


txtTelp.requestFocus();
} else
if (new ConfigDB().duplikasiData("anggota","IDAnggota",txtID.getText())==true){
JOptionPane.showMessageDialog(null,"ID Anggota sudah terdaftar");
Statement st = new ConfigDB().koneksi.createStatement();
ResultSet rs = st.executeQuery("SELECT*FROM anggota WHERE
IDAnggota='"+txtID.getText()+"'");
if(rs.next()){
txtNama.setText(rs.getString("nama"));
txtTempat.setText(rs.getString("tempat_lahir"));
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
txtTGL.setDate(dt.parse(rs.getString("tgl_lahir")));
cmbJKL.setSelectedItem(String.valueOf(rs.getString("jkl")));
cmbStatus.setSelectedItem(String.valueOf(rs.getString("status")));
txtAlamat.setText(rs.getString("alamat"));
txtTelp.setText(rs.getString("telp"));
}
}
else{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGL =sdf.format(txtTGL.getDate());
String SQL ="INSERT INTO anggota VALUES
('"+txtID.getText()+"','"+txtNama.getText()+"','"+txtTempat.getText()
+"','"+TGL+"','"+String.valueOf(cmbJKL.getSelectedItem())
+"','"+String.valueOf(cmbStatus.getSelectedItem())
+"','"+txtAlamat.getText()+"','"+txtTelp.getText()+"')";
new ConfigDB().simpanData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlAnggota, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
}
} catch (Exception e) {
System.out.print(e.toString());
}
4.4 Pembuatan kode ubah pada class formAnggota
Buatlah kode ubah data anggota pada tombol ubah seperti potongan kode dibawah.
try {
if (
(txtID.getText().isEmpty()) &&(txtNama.getText().isEmpty()) &&
(txtTempat.getText().isEmpty())
&& (txtTGL.getDate().equals(null)) && (txtAlamat.getText().isEmpty()) &&
(txtTelp.getText().isEmpty())
23

&& (cmbJKL.getSelectedItem()==".: Pilih Data :.") &&


(cmbStatus.getSelectedItem()==".: Pilih Data :.")
){
JOptionPane.showMessageDialog(null,"Silahkan pilih data sebelum proses ubah
");
JTableAnggota.requestFocus();
} else{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGL =sdf.format(txtTGL.getDate());
String SQL="UPDATE anggota SET
nama='"+txtNama.getText()+"',tempat_lahir='"+txtTempat.getText()+"',tgl_lahir='"+
TGL+"',jkl='"+String.valueOf(cmbJKL.getSelectedItem())
+"',status='"+String.valueOf(cmbStatus.getSelectedItem())
+"',alamat='"+txtAlamat.getText()+"', telp='"+txtTelp.getText()+"'
WHERE IDAnggota='"+txtID.getText()+"'";
new ConfigDB().ubahData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlAnggota, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
}
} catch (Exception e) {
System.out.print(e.toString());
}
4.5 Pembuatan kode hapus pada class formAnggota
Buatlah kode hapus data anggota pada tombol hapus seperti potongan kode dibawah ini.
try {
if (
(txtID.getText().isEmpty())
&&(txtNama.getText().isEmpty())
&&
(txtTempat.getText().isEmpty())
&& (txtTGL.getDate().equals(null)) && (txtAlamat.getText().isEmpty()) &&
(txtTelp.getText().isEmpty())
&&
(cmbJKL.getSelectedItem()==".:
Pilih
Data
:.")
&&
(cmbStatus.getSelectedItem()==".: Pilih Data :.")
){
JOptionPane.showMessageDialog(null,"Silahkan pilih data sebelum proses
hapus ");
JTableAnggota.requestFocus();
} else{
String
SQL="DELETE
FROM
anggota
WHERE
IDAnggota='"+txtID.getText()+"'";
new ConfigDB().ubahData(SQL);
new ConfigDB().tampilTabel(judulKolom, sqlAnggota, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
}
} catch (Exception e) {
System.out.print(e.toString());
}

24

4.6 Pembuatan kode clear pada class formAnggota


Buatlah kode clear pada tombol yang disediakan seperti potongan kode dibawah ini.
txtID.setText(null);
txtNama.setText(null);
txtTempat.setText(null);
txtTelp.setText(null);
txtAlamat.setText(null);
cmbJKL.setSelectedItem(".: Pilih Data :.");
cmbStatus.setSelectedItem(".: Pilih Data :.");
txtTGL.setDate(null);
4.7 Pembuatan kode refresh pada class formAnggota
Buatla kode refresh pada tombol yang sudah dibuat seperti potongan kode dibawah
new ConfigDB().tampilTabel(judulKolom, sqlAnggota, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
4.8 Pembuatan kode pencarian nama anggota pada formAnggota
Buatlah kode pencarian pada event onKeyPressed pada txtCari. Klik kanan pada txtCari
Events Key- KeyPressed
try {
String SQL="SELECT*FROM anggota WHERE nama like
'%"+txtCari.getText()+"%'";
new ConfigDB().cariData(judulKolom, SQL, JTableAnggota);
new ConfigDB().aturLebarKolom(JTableAnggota, lebarKolom);
} catch (Exception e) {
System.out.print(e.toString());
}
4.9 Pembuatan kode event mouseclicked pada JTableAnggota pada class formAnggota
Buatlah kode mouseclicked pada table untuk proses menampilkan data saat baris table
diklik user. Klik kanan pada komponen JTableAnggota Events Mouse
MouseClicked. Tuliskan kode seperti potongan dibawah ini.
try {
int baris =JTableAnggota.getSelectedRow();
txtID.setText(String.valueOf(JTableAnggota.getValueAt(baris,0)));
txtNama.setText(String.valueOf(JTableAnggota.getValueAt(baris,1)));
txtTempat.setText(String.valueOf(JTableAnggota.getValueAt(baris,2)));
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
txtTGL.setDate(dt.parse(String.valueOf(JTableAnggota.getValueAt(baris,3))));
cmbJKL.setSelectedItem(String.valueOf(JTableAnggota.getValueAt(baris, 4)));
cmbStatus.setSelectedItem(String.valueOf(JTableAnggota.getValueAt(baris, 5)));
txtAlamat.setText(String.valueOf(JTableAnggota.getValueAt(baris, 6)));

25

txtTelp.setText(String.valueOf(JTableAnggota.getValueAt(baris,7)));
} catch (Exception e) {
System.out.print(e.toString());
}
4.10 Tampilan desian formAnggota

5.

Pembuatan Form View Detail Peminjaman


Buatlah form view detail peminjaman yang merupakan gabungan dari beberapa table
yang digunakan pada transaksi yang terdapat pada aplikasi. Form ini guna memperjelas
informasi dari record-record yang digunakan. Klik kanan pada Package rentaldvd
Jframe Form beri nama formView Finish. Properties Frame dibagian
defaultCloseOperation ubah menjadi Dispose.
Pada class formFile silakan tambahkan library :
import javax.swing.JOptionPane; // membuat pesan dialog
import java.sql.*; // untuk menampilkan data dara perintah query

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form yang
akan dibuat.
Komponen
Jlabel
JTextField
Jtable

Name
JLabel1
txtPencarian
JTableView

Value/ Model/Text
Pencarian nama anggota
-

26

5.1 Pembuatan variable global pada class formView


Buatlah variable global seperti pada gambar dibawah ini, yang berfungsi untuk
mendeklarasikan judul kolom, dan pemilihatan table yang digunakan pada JTable.
Variable ini nanti akan dipanggil dibeberpa method yang akan dipakai.

5.2 Penambahan kode dibawah initComponent


Tambahkan beberapa potongan kode ini, pada Constructor formview() yang tepatnya
dibawah initComponent().
this.setLocationRelativeTo(null);
new ConfigDB().tampilTabel(judul, SQLView, JTableView);
new ConfigDB().aturLebarKolom(JTableView, LebarKolom);

5.3 Pembuatan kode pencarian data anggota peminjaman pada class formView
Buatlah kode pencarian pada form view untuk data peminjaman seperti potongan kode
dibawah ini dengan cara klik kanan pada txtPencarian Events Key KeyPressed.
String
SQL="SELECT*FROM
view_pinjam
WHERE
'%"+txtPencarian.getText()+"%'";
new ConfigDB().cariData(judul, SQL, JTableView);
new ConfigDB().aturLebarKolom(JTableView, LebarKolom);
5.4 Tampilan formView

27

nama

like

6.

Pembuatan Form Transaksi Peminjaman dan Pengembalian Buku


Buatlah form transaksi peminjaman yang merupakan form untuk transaksi pinjam,
kembali dan perpanjangan buku. Form ini guna memperjelas informasi dari record-record
yang digunakan pada proses peminjaman. Klik kanan pada Package rentaldvd
Jframe Form beri nama formTransaksi Finish. Properties Frame dibagian
defaultCloseOperation ubah menjadi Dispose.

Pada class formTransaksi tambahkan library seperti dibawah ini :


import javax.swing.JOptionPane;
import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form yang
akan dibuat.

28

Komponen
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
Jlabel
JTextField
JTextField
JTextField
JTextField
JTextField
JTextField
JDateChooser
JDateChooser

Name
JLabel1
JLabel2
JLabel3
JLabel4
JLabel5
JLabel6
JLabel7
JLabel8
JLabel9
JLabel10
txtIDPinjam
txtIDAnggota
txtNamAnggota
txtKodeFilm
txtJudul
txtDenda
txtTglPinjam
txtTglKembali

Jcombobox
Jbutton
Jbutton
Jbutton
Jbutton
Jbutton
Jbutton
Jbutton
Jtable
Jtable

Value/ Model/Text
ID Pinjam
ID Anggota
Nama Anggota
Kode Film
Judul
Tanggal Pinjam
Tanggal Kembali
Keterangan
Denda
-

Pinjam
Perpanjang
Kembali
Cari Tunggakan
Tambah
Clear
Proses Pinjam
Kembali Perpanjang
View Detail Peminjaman
Refresh

cmbKet
btnCari
btnTambah
btnClear
btnPinjam
btnKembali
btnView
btnRefresh
JTableList
JTablePinjam

Untuk komponen JDateChooser klik kanan pada komponen tersebut kemudian pilih
Properties Pilih dateFormatString Klik tombol disampingnya kemudian ketikan
yyyy-MM-dd OK.
6.1 Pembuatan varianle global pada kelas formAnggota
Buatlah variable global seperti pada gambar dibawah ini, yang berfungsi untuk
mendeklarasikan judul kolom, dan pemilihatan table yang digunakan pada JTable.
Variable ini nanti akan dipanggil dibeberpa method yang akan dipakai.

29

6.2 Penambahan kode dibawah initComponent


Tambahkan beberapa potongan kode ini, pada Constructor formTransaksi() yang tepatnya
dibawah initComponent().
this.setLocationRelativeTo(null);
new ConfigDB().tampilTabel(judulPinjam, SQLPinjam, JTablePinjam);
new ConfigDB().aturLebarKolom(JTablePinjam, LebarPinjam);
List= new DefaultTableModel();
JTableList.setModel(List);
List.addColumn("ID Anggota");
List.addColumn("Nama Anggota");
List.addColumn("Kode Film");
List.addColumn("Judul");

6.3 Pembuatan kode pecarian ID Peminjaman


Buatlah kode pencarian ID Peminjamaan pada saat user mengetikan nomer ID
Peminjaman seperti potongan kode dibawah ini. Klik kanan pada txtIDPinjam Events
Key KeyPressed.
ConfigDB().cariData(judulPinjam,"SELECT*FROM

detail_pinjam

WHERE

IDPinjam='"+txtIDPinjam.getText()+"'", JTablePinjam);
new ConfigDB().aturLebarKolom(JTablePinjam, LebarPinjam)

6.4 Pembuatan kode pencarian tunggakan


Buatlah kode pencarian tunggakan buku yang belum dikembalikan. Klik kanan pada
tombol cari tunggakan Events Action ActionPerformed. Tuliskan potongan kode
seperti dibawah ini
String
SQL
="SELECT*FROM
view_pinjam
WHERE
IDAnggota='"+txtIDAnggota.getText()+"' AND status='FALSE'";
int jumlah=new ConfigDB().jumlahRecord(SQL);
if (jumlah==0){
JOptionPane.showMessageDialog(null,"Tidak ada tunggakan Film yang belum
dikembalikan");
} else{

30

JOptionPane.showMessageDialog(null,"Ada "+String.valueOf(jumlah) +" tunggakan


Film yang belum dikembalikan");
}
6.5 Pembuatan kode tambah list item pinjam
Buatlah kode tambah data item list film yang dipinjam. Klik kanan pada tombol cari
tunggakan Events Action ActionPerformed. Tuliskan potongan kode seperti
dibawah ini
try {
String
isi[]={txtIDAnggota.getText(),txtNamAnggota.getText(),txtKodeFilm.getText(),txtJudul.g
etText()};
List.addRow(isi);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString());
}
6.6 Pembuatan kode clear
Buatlah kode clear untuk mengkosongkan inputan yang digunakan. Klik kanan pada
tombol cari tunggakan Events Action ActionPerformed. Tuliskan potongan kode
seperti dibawah ini.
int JUMLAH=JTableList.getRowCount();
for (int i = 0; i<JUMLAH; i++) {
List.removeRow(i);
}
txtIDAnggota.setText(null);
txtIDPinjam.setText(null);
txtNamAnggota.setText(null);
txtKodeFilm.setText(null);
txtJudul.setText(null);
txtTglKembali.setDate(null);
txtTglPinjam.setDate(null);
txtDenda.setText("0");
JNo.setText("-");
6.7 Pembuatan kode proses pinjam
Buatlah kode proses pinjam untuk menyimpan film ketabel yang disediakan. Klik kanan
pada tombol proses pinjam Events Action ActionPerformed. Tuliskan potongan
kode seperti dibawah ini.
try {
if (txtIDPinjam.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"ID Pinjam belum diisi");
31

txtIDPinjam.requestFocus();
}else
if (txtIDAnggota.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"ID Anggota belum diisi");
txtIDAnggota.requestFocus();
}else
if (txtKodeFilm.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"Kode Film belum diisi");
txtKodeFilm.requestFocus();
} else {
String
SQLPinjam="INSERT
INTO
pinjam
VALUES
('"+txtIDPinjam.getText()+"','"+txtIDAnggota.getText()+"','0')";
new ConfigDB().simpanData(SQLPinjam);
int jum=JTableList.getRowCount();
for (int i = 0; i < 10; i++) {
SimpleDateFormat
p
=
new
SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGLPinjam =p.format(txtTglPinjam.getDate());
SimpleDateFormat
k
=
new
SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGLKembali =k.format(txtTglKembali.getDate());
String
SQLDetail="INSERT
INTO
detail_pinjam
VALUES
('0','"+txtIDPinjam.getText()+"','"+String.valueOf(JTableList.getValueAt(i,2))
+"','"+TGLPinjam+"','"+TGLKembali+"','0','"+String.valueOf(cmbKet.getSelectedItem
()) +
"','0')";
new ConfigDB().simpanData(SQLDetail);

}
new ConfigDB().tampilTabel(judulPinjam, SQLPinjam, JTablePinjam);
new ConfigDB().aturLebarKolom(JTablePinjam, LebarPinjam);
}
} catch (Exception e) {
}
6.8 Pembuatan kode proses kembali atau perpanjang peminjaman
Buatlah kode proses kembali atau perpanjang buku yang dipinjam. Klik kanan pada
tombol kembali atau perpanjang Events Action ActionPerformed. Tuliskan
potongan kode seperti dibawah ini.
try {
SimpleDateFormat
p
=
new
SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGLPinjam =p.format(txtTglPinjam.getDate());
SimpleDateFormat
k
=
new
SimpleDateFormat("yyyy-MM-dd",
Locale.getDefault());
String TGLKembali =k.format(txtTglKembali.getDate());
32

if (cmbKet.getSelectedItem()=="Kembali"){
String
SQL1="UPDATE
detail_pinjam
SET
IDPinjam='"+txtIDPinjam.getText()+"', KodeFilm='"+txtKodeFilm.getText()
+"',
tgl_pinjam='"+TGLPinjam+"',
tgl_kembali='"+TGLKembali+"',
status='1', keterangan='"+String.valueOf(cmbKet.getSelectedItem())
+"', denda='"+txtDenda.getText()+"' WHERE no='"+JNo.getText()+"'";
new ConfigDB().ubahData(SQL1);
} else {
String
SQL2="UPDATE
detail_pinjam
SET
IDPinjam='"+txtIDPinjam.getText()+"', KodeFilm='"+txtKodeFilm.getText()
+"',
tgl_pinjam='"+TGLPinjam+"',
tgl_kembali='"+TGLKembali+"',
status='0', keterangan='"+String.valueOf(cmbKet.getSelectedItem())
+"', denda='"+txtDenda.getText()+"' WHERE no='"+JNo.getText()+"'";
new ConfigDB().ubahData(SQL2);
}
new ConfigDB().tampilTabel(judulPinjam, SQLPinjam, JTablePinjam);
new ConfigDB().aturLebarKolom(JTablePinjam, LebarPinjam);
} catch (Exception e) {
}
6.9 Pembuatan kode view detail
Buatlah kode untuk menampikan detail peminjaman dari anggota yang dilakukan. Klik
kanan pada tombol view detail events action action performed kemudian ketikan
kode dibawah ini.
new formView().setVisible(true);
6.10 Pembuatan kode Refresh
Buatlah kode refresh untuk menampilkan seluruh data pinjam setelah melakukan proses
pencarian. Klik kanan pada tombol refresh events action action performed kemudian
ketikan kode dibawah ini.
new ConfigDB().tampilTabel(judulPinjam, SQLPinjam, JTablePinjam);
new ConfigDB().aturLebarKolom(JTablePinjam, LebarPinjam);

6.11 Pembuatan kode menampilkan data pada JTablePinjam


Buatlah kode tampil data pada saat user klik baris pada table pinjam. Klik kanan pada
JTablePinjam Events Mouse MouseClicked. Kemudian tuliskan potongan kode
dibawah ini.
try {
int i= JTablePinjam.getSelectedRow();
JNo.setText(String.valueOf(JTablePinjam.getValueAt(i, 0)));
txtIDPinjam.setText(String.valueOf(JTablePinjam.getValueAt(i, 1)));
33

txtKodeFilm.setText(String.valueOf(JTablePinjam.getValueAt(i, 2)));
cmbKet.setSelectedItem(String.valueOf(JTablePinjam.getValueAt(i, 6)));
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
txtTglPinjam.setDate(dt.parse(String.valueOf(JTablePinjam.getValueAt(i, 3))));
txtTglKembali.setDate(dt.parse(String.valueOf(JTablePinjam.getValueAt(i, 4))));
Statement st = new ConfigDB().koneksi.createStatement();
ResultSet
rs
=
st.executeQuery("SELECT*FROM
pinjam
IDPinjam='"+txtIDPinjam.getText()+"'");
if (rs.next()){
txtIDAnggota.setText(rs.getString("IDAnggota"));
}
ResultSet
ra
=st.executeQuery("SELECT*FROM
anggota
IDAnggota='"+txtIDAnggota.getText()+"'");
if (ra.next()){
txtNamAnggota.setText(ra.getString("nama"));
}
ResultSet
rk
=st.executeQuery("SELECT*FROM
film
KodeFilm='"+txtKodeFilm.getText()+"'");
if (rk.next()){
txtJudul.setText(rk.getString("judul"));
}

WHERE

WHERE

WHERE

} catch (Exception e) {
}

7.

Pembuatan laporan
Pada tahapan ini dilakukan proses pembuatan dua laporan saja yaitu detail peminjaman
dan laporan anggota. File laporan akan diletakan pada package sendiri khusus untuk
laporan. Buat package dengan nama laporan. Klik kanan pada Source Package seperti
pada gambar dibawah ini.

Kemudian beri nama laporan dan klik tombol finish.

34

7.1 Pembuatan laporan anggota


Klik kanan pada package laporan Report Wizard pada layout pilih yang Blank A4
Next Kemudian beri nama laporannya anggota.jrxml kemudian klik next
kemudian buat koneksi baru. Klik tombol New seperti gambar dibawah ini :

Kemudian pilih Database JDBC Connection seperti gambar dibawah ini :

Kemudian klik tombol next kemudian konfigurasi settingan laporan ke database seperti
tampilan gambar dbawah ini dan jika selesai klik tombol save.

35

Proses ini hanya dilakukan sekali saja atau pertama kali membuat laporan diproject yang
kita kerjakan. Untuk laporan selanjutnya tidak perlu lagi membuat koneksi database
dalam pembuatan laporan. Setelah proses ini selesai ketikan perintah SQL untuk memilih
table anggota seperti gambar dibawah ini.

Kemudian klik next jika muncul pesan klik OK saja kemudian pilih semua Field yang
digunakan dengan klik tombol >> - kemudian klik tombol next dan kemudian finish
36

Aktifkan tab Report Inspect pada area kiri seperti gambar dibawah ini

Kemudian klik field per item tahan dan drag n drop kebagian detail (Jangan kebagian
lainya) seperti contoh gambar dibawah ini. Untuk judul pada area Column Header atau
sesuai keinginan anda.

Untuk mengatur ketebalan dan memberikan bingkai seperti gambar diatas. Select semua
item detail dan column header. Seperti gambar dibawah ini.

Kemudian klik kanan dan pilih Padding and Boders . Setting aturan ketebalan bingkai
dan posisi tulisan seperti gambar dibawah ini :

37

Jika sudah klik OK. Apabila area lembar kerja kurang memadai atur lembar kerja tersebut
dengan cara klik kanan pada area laporan seperti gambar dibawah ini.

Dan kemudian pillih Page Format Atur Page Orientation menjadi LandScape.

Untuk mengatur field berupa tanggal agar menampilkan format tanggal secara bener
lakukan cara seperti berikut > Klik Kanan pada Field Tanggal Pilih Field Pattern Pilih
Date Dan kemudian atur sesuai format tanggal yang ingin dipakai. Jika sudah klik
tombol Apply.

38

Untuk judul laporan silahkan anda tambahkan sendiri sesuai dengan kreasi dan kreativitas
anda masing-masing. Jika sudah mendesain laporan klik tombol preview dan apabila
mucul pesan dialog klik OK saja.
Dibawah ini contoh desain sederhana laporan yang dibuat yang masih ditampilkan di IDE
Netbeans bukan dari aplikasi yang dibuat.

7.2 Pembuatan Laporan Detail Peminjaman


Klik kanan pada package laporan Report Wizard pada layout pilih yang Blank A4
Next Kemudian beri nama laporannya pinjam.jrxml kemudian klik next kemudian
ketikan perintah sql seperti gambar dibawah ini :

39

Klik tombol next klik OK jika muncul pesan dialog klik OK saja Klik ALL semua
field yang digunakan (>>) Next Finish. Tambahkan field per item seperti contoh
pembuatan laporan sebelumnya seperti desain dibawah ini dengan mengatur lembar kerja
menjadi landscape.

Silahkan anda atur format tanggal peminjaman dan tanggal pegembalian sesuai format
yang digunakan.Dibawah ini merupakan hasil tampilan laporan yang berada pada IDE
Netbeans

40

8.

Pembuatan form cetak Laporan Anggota


Form ini digunakan untuk proses cetak laporan anggota dari form yang akan digunakan.
Klik kanan pada Package rentaldvd New JframeForm beri nama laporanAnggota
klik Finish. Untuk Fom ini klik kanan pada area Form Properties
defaultCloseOperation pilih DISPOSE.

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form yang
akan dibuat.
Komponen
JRadioButton
JRadioButton
JTextField
Jbutton
Jbutton

Name
JRadioButton1
JRadioButton2
txtIDAnggota
btnCetak
btnKeluar

Value/ Model/Text

Preview
Keluar

8.1 Pembuatan kode form pada posisi ditengah pada form cetak
Silahkan anda menuju pada constructor laporanAnggota dan kemudian tulisakan kode
dibawah ini setelah iniComponent();
this.setLocationRelativeTo(this);

8.2 Pembuatan kode klik pada JRadioButton1


Klik kanan pada JRadioButto1 Events Action
ketikan kode dibawah ini :

jRadioButton2.setSelected(false);

41

- ActionPerformed kemudian

8.3 Pembuatan kode klik pada JRadioButton2


Klik kanan pada JRadioButto2 Events Action

- ActionPerformed kemudian

ketikan kode dibawah ini :


jRadioButton1.setSelected(false);

8.4 Pembuatan kode tombol preview


Klik kanan kada tombol Privew Events Action ActionPerformed
try {
if (jRadioButton1.isSelected()){
new
ConfigDB().tampilLaporan("src/laporan/anggota.jrxml","SELECT*FROM
anggota ORDER BY IDAnggota ASC");
} else{
new
ConfigDB().tampilLaporan("src/laporan/anggota.jrxml","SELECT*FROM
anggota WHERE IDAnggota='"+
txtIDAnggota.getText()+"'");
}
} catch (Exception e) {
}
8.5 Pembuatan kode tombol keluar
Klik kanan pada tombol keluar Events Action ActionPerformed
dispose();

9.

Pembuatan form cetak Laporan Pinjam


Form ini digunakan untuk proses cetak laporan detail peminjaman dari form yang akan
digunakan. Klik kanan pada Package rentaldvd New JframeForm beri nama
laporanPinjam klik Finish. Untuk Fom ini klik kanan pada area Form Properties
defaultCloseOperation pilih DISPOSE.

42

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form yang
akan dibuat.
Komponen
JRadioButton
JRadioButton
JTextField
Jbutton
Jbutton

Name
JRadioButton1
JRadioButton2
txtIDAnggota
btnCetak
btnKeluar

Value/ Model/Text

Preview
Keluar

9.1 Pembuatan kode form pada posisi ditengga pada form cetak
Silahkan anda menuju pada constructor laporanAnggota dan kemudian tulisakan kode
dibawah ini setelah iniComponent();
this.setLocationRelativeTo(this);

9.2 Pembuatan kode klik pada JRadioButton1


Klik kanan pada JRadioButto1 Events Action - ActionPerformed kemudian ketikan
kode dibawah ini :
jRadioButton2.setSelected(false);

9.3 Pembuatan kode klik pada JRadioButton2


Klik kanan pada JRadioButto2 Events Action - ActionPerformed kemudian ketikan
kode dibawah ini :
jRadioButton1.setSelected(false);

9.4 Pembuatan kode tombol preview


Klik kanan kada tombol Privew Events Action ActionPerformed

try {
if (jRadioButton1.isSelected()){
new
ConfigDB().tampilLaporan("src/laporan/pinjam.jrxml","SELECT*FROM
view_pinjam ORDER BY IDAnggota ASC");
} else{
new
ConfigDB().tampilLaporan("src/laporan/pinjam.jrxml","SELECT*FROM
view_pinjam WHERE IDAnggota='"+
txtIDAnggota.getText()+"'");

43

}
} catch (Exception e) {
}
9.5 Pembuatan kode tombol keluar
Klik kanan pada tombol keluar Events Action ActionPerformed
dispose();

10.

Pembuatan Form Utama

Form ini digunakan untuk proses cetak laporan detail peminjaman dari form yang akan
digunakan. Klik kanan pada Package rentaldvd New JframeForm beri nama
formUtama klik Finish. Untuk Fom ini klik kanan pada area Form Properties
defaultCloseOperation pilih DISPOSE.

Tabel dibawah ini merupakan komponen-komponen yang digunakan pada form yang
akan dibuat.
Komponen
JButton
JButton
JButton
JButton
JButton
JButton

Name
btnFilm
btnAnggota
btnTransaksi
btnPinjam
btnLapAnggota
btnLapPinjam

JLabel
JTable

JLabel1
JTable1

Value/ Model/Text
Master Film
Master Anggota
Transaksi Peminjaman
Detail Peminjaman
Laporan Anggota
Laporan Peminjaman
SISTEM INFORMASI RENTAL
VCD SEDERHANA

44

10.1 Pembuatan Variabel Global


Buatlah variable global seperti pada gambar dibawah ini, yang berfungsi untuk
mendeklarasikan judul kolom, dan pemilihatan table yang digunakan pada JTable.
Variable ini nanti akan dipanggil dibeberpa method yang akan dipakai.

10.2 Penambahan kode dibawah initComponent


Tambahkan beberapa potongan kode ini, pada Constructor formUtama() yang tepatnya
dibawah initComponent().
this.setLocationRelativeTo(null);
new ConfigDB().tampilTabel(judulKolom, sqlFilm, jTable1);

10.3

Pembuatan Kode Tombol Master Film

Klik kanan pada tombol keluar Events Action ActionPerformed


new formFilm().setVisible(true);

10.4

Pembuatan Kode Tombol Master Anggota

Klik kanan pada tombol keluar Events Action ActionPerformed


new formAnggota().setVisible(true);

10.5

Pembuatan Kode Tombol Transaksi Peminjaman

Klik kanan pada tombol keluar Events Action ActionPerformed


new formTransaksi().setVisible(true);

10.6

Pembuatan Kode Tombol Detail Peminjaman

Klik kanan pada tombol keluar Events Action ActionPerformed


new formView().setVisible(true);

10.7

Pembuatan Kode Tombol Laporan Anggota

Klik kanan pada tombol keluar Events Action ActionPerformed


new laporanAnggota().setVisible(true);

45

10.8

Pembuatan Kode Tombol Laporan Peminjaman

new laporanPinjam().setVisible(true);

11. Konfigurasi Class Utama RentalDVD


Buka Class utama pada rental dvd untuk menjadikan file tersebut untuk mensetting class
mana yang akan dijalankan pertama kali. Kemudian ketikan potongan kode yang diblok
dengan warna abu-abu.

SEKIAN TERIMA KASIH


SEMOGA BERMANFAAT
AMIN

APABILA ADA PERTANYAAN SILAHKAN LANGSUNG


MENGHUBUNGI PENULIS VIA WhatsApp

46

TENTANG PENULIS
Nama

: MOKHAMAD RAMDHANI RAHARJO

Tempat/Tgl. Lahir : PASURUAN, 16 APRIL 1989


Alamat

: Jl. GOTONG ROYONG NO. 20 KOMP. RO


ULIN BARU LOKTABAT SELATAN
BANJARBARU

E-Mail

: ramdhani@fti.uniska-bjm.ac.id

No. Telp

: 082254122154

Riwayat Pendidikan
No.
1
2
3
4
5
6

TINGKAT
SD
SMP
SMA
S1
S2
S3

NAMA PENDIDIKAN
SDN 2 TANGGUL WETAN
SMPN 2 TANGGUL
SMAN 2 TANGGUL
Universitas Islam MAAB
Universitas Dian Nuswantoro

47

TAHUN LULUS
2002
2005
2008
2012
2015

TEMPAT
JEMBER
JEMBER
JEMBER
BANJARMASIN
SEMARANG