SlideShare a Scribd company logo
Pemrograman Berorientasi Objek Lanjut 1
MERANCANG DATABASE PARKIR KENDARAAN
Sebagai tempat studi kasus dari aplikasi yang akan dibuat adalah parkir kendaraan. Dengan
adanya aplikasi ini, diharapkan ketika kendaraan masuk maka petugas parkir dapat mencatat
data kendaraan secara elektronis menggunakan computer, sehingga dapat memperkecil tingat
pencurian dan dapat melakukan pengecekan data sewaktu-waktu data kendaraan dibutuhkan.
Dari gambaran di atas, yang perlu anda buat adalah sebuah aplikasi yang dapat membantu
untuk pencatatan setiap transaksi yang dilakukan, mulai dari data petugas, data kendaraan,
data parkir kendaraan masuk dan parkir kendaraan keluar secara cepat.
Mendeklarasikan Kasus dalam Bentuk Bahasa Model UML
Pekerjaan membuat table akan selalu anda lakukan setelah proses analisis system selesai. Pada
buku ini dibahas analisis awalnya dari pendeklarasian UML(Unifed Modeling Language), yaitu
menggunakan Use Case Karena ini paling sering digunakan dan cocok untuk kasus tersebut.
Selanjutnya akan dilakukan mapping ke tabel secara fisik.
Gambar 1.1 Use Case Diagram Parkir Kendaraan
Pemrograman Berorientasi Objek Lanjut 2
Pengendara sebagai pelaku pemarkir kendaraan akan melakukan registrasi data kendaraan
masuk dan registrasi kendaraan keluar. Sedangkan petugas sebagai orang yang
mengoperasikan aplikasi parkir kendaraan.
Membuat Database dan Tabel
Pada gambaran sebelumnya, sekarang anda perlu memikirkan seberapa besar database yang
akan diperlukan. Dari hasil pemikiran tersebut anda akan mengira-ira berapa dan apa tabel
yang akan digunaka sebagai media penyimpanan datanya.
Membuat Database
Dari analisis kami, untuk membuat aplikasi ini kita membutuhkan 3 tabel. Terdiri atas 2 tabel
master dan 1 tabel transaksi. Ketiga tabe tersebut berada di dalam nama database dbparkir.
C:Documents and Setting>mysql –uroot -p
Enter Password:Masukkan Password anda
Mysql> CREATE DATABASE dbparkir;
Query OK, 1 row affected (0.00 sec)
Selanjutnya, aktifkanlah database yang terbuat dengan perintah berikut:
Mysql> USE dbparir;
Database changed
Pernyataan “Database changed” di atas menandakan anda sekarang telah aktif di dalam
database dbparkir.
Membuat Tabel tbljnskendaraan
Tabel Jenis Kendaraan digunakan untuk merekam data semua jenis kendaraan. Dengan cara ini,
kita dapat mengelompokkan jenis kendaraan.Berikut desain tabelnya.
Tabel 1.1 Struktur Tabel tbljnskendaraan
Kolom Tipe Data Panjang
kodejenis * Char 2
jenis Varchar 40
tarif Char 10
Pemrograman Berorientasi Objek Lanjut 3
Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tbljnsjendaraan(
kodejenis char(2) not null primary key,
jenis varchar(40),
tarif char(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru
bernama tbljnskendaraan.
Membuat Tabel tblpetugas
Tabel Jenis Kendaraan digunakan untuk merekam data semua petugas. Dengan cara ini, kita
dapat mengetahui petugas jaga parkir.Berikut desain tabelnya.
Tabel 1.2 Struktur Tabel tblpetugas
Kolom Tipe Data Panjang
idpetugas * Char 4
nmpetugas Varchar 60
alamat Varchar 100
telp Varchar 15
Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblpetugas(
idpetugas char(4) not null primary key,
nmpetugas varchar(60),
alamat varchar(100),
telp varchar(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru
bernama tblpetugas.
Membuat Tabel tblparkir
Tabel Jenis Kendaraan digunakan untuk merekam data semua kendaraan yang parkir. Dengan
cara ini, kita dapat mengetahui semua data kendaraan yang sedang parkir atau yang sudah
keluar.Berikut desain tabelnya.
Pemrograman Berorientasi Objek Lanjut 4
Tabel 1.3 Struktur Tabel tblparkir
Kolom Tipe Data Panjang
notiket * Char 10
tglparkir Varchar 40
Idpetugas ** Char 4
Noplat Varchar 10
kodejenis ** Char 2
jammasuk Varchar 20
jamkeluar Varchar 20
Bayar Char 10
Sisa Char 10
Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblparkir(
notiket char(10) not null primary key,
tglparkir varchar(40),
idpetugas char(4),
noplat varchar(10),
kodejenis char(2),
jammasuk varchar(20),
jamkeluar varchar(20),
bayar char(10),
sisa char(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru
bernama tblparkir.
Relasi Antar Tabel
TblJnsKendaraan
kodejenis<PK>
jenis
tarif
TblPetugas
idpetugas<PK>
nmpetugas
alamat
telp
TblParkir
notiket<PK>
tglparkir
idpetugas<FK>
noplat
kodejenis<FK>
jammasuk
jamkeluar
bayar
sisa
Pemrograman Berorientasi Objek Lanjut 5
Gambar 1.2 Hubungan Antar Tabel pada dbparkir
Tanda (PK) menunjukkan kunci utama, sedangkan (FK) adalah kunci tamu dengan diwujudkan
arah panahnya. Berikut bebarapa penjelasan relasi tabel tersebut.
 Relasi antar tabel jenis kendaraan pada tabel parkir kendaraan
Relasi dua tabel di atas memiliki hubungan one to many, artinya jenis kendaraan bisa
digunakan lebih dari sekali.
 Relasi antar tabel petugas pada tabel parkir kendaraan
Relasi dua tabel di atas memiliki hubungan one to many, artinya petugas bisa digunakan
lebih dari sekali.
MEMBUAT APLIKASI PARKIR KENDARAAN
Mulai dari bab ini kami akan membimbing anda untuk membuat proyek lengkap, yaitu dengan
objek kasus pada parkir kendaraan. Pada aplikasi yang dibuat, akan terjadi proses transaksi
parkir kendaraan masuk dan kendaraan keluar. Tentunya ada proses perhitungan pembayaran
jasa parkir. Dalam bonus CD buku ini, juga telah disertakan hasil studi kasus dan komponen
pendukung untuk pembuatan aplikasi yang dibahas pada bab ini. Anda bisa membaca bab ini
sebagai penjelasan lengkap dan langkah pembuatannya.
Dependency
Dependency ata ketergantungan adalah sebuah syarat ketersediaan sebuah tool berupa
modul terpisah maupun aplikasi lain agar bisa menjalankan aplikasi yang dimaksud. Dalam hal
ini setidaknya anda harus memasang Netbeans 6.0.1. Tentunya untuk bisa memasangnya juga
harus anda penuhi system requirement dari aplikasi tersebut. Untuk system operasi tentunya
anda bisa menggunakan Windows/Linux. Dalam hal ini kami menggunakan Windows 7 untuk uji
coba. Adapun tool yang lain, yang mesti anda pasang adalah sebagai berikut.
Ketergantungan Mesin
 Sistem Opersai Windows/Linux
 Netbeans 6.0.1
 Jasper Report 2.0.4
 MySQL(AppServ2.10.3 boleh menggunakan versi lain)
Pemrograman Berorientasi Objek Lanjut 6
Ketergantungan Module/com objek maupun resource lain
 mysql-connector-java-5.1.6-bin untuk objek database yang siap dipakai
 Birosoft look and feel dan looks.jar sebagai tambahan untuk sekadar menambahkan
style atau tampilan saja(ini tidak wajib, sehingga tidak dibahas terlalu jauh agar tidak
mengurangi focus buku ini).
Persiapan Instalasi dan Folder Program
Kami sarankan pembaca mengikuti langkah-langkah yang ada dalam buku ini agar tidak
mengalami kesulitan/salah jalan. Kalau tidak mengikuti petunjuk ini, dikhawatirkan anda bisa
tersesat sejauh-jauhnya. Catatan: Anda tidak harus mengikuti langkah-langkah instalasi jika
sudah memiliki versi yang sama. Dalam buku tidak terlalu banyak memberikan hal-hal yang
dasar, bukan keharusan tetapi sangat dianjurkan bagi anda membaca buku edisi sebelumnya.
1. Instal netbeans 6 nama file installer-nya netbeans-6.0.1-ml-javase-windows.exe. klik
ganda kemudian lanjutkan dialognya sampai selesai.
2. Instal MySQL dan tool admin lewat Browser Client. Nama filenya appserv-win32-
2.5.10.exe. ikuti petunjuk dan jangan lupa untuk menyimpan nama password atau user-
nya agar Anda bisa mengakses halaman admin. Jika sampai lupa, anda selamanya tidak
bisa membuka database anda sendiri.
3. Siapkan folder khusus untuk membuat kode. Misalnya kami membuat folder
D:Aplikasi Parkir Kendaraan.
Membuat Koneksi Database.ini
database.ini digunakan untuk menghubungkan database MySQL dengan JAVA, database.ini
dibuat menggunakan Notepade.
Berikut langkah membuat koneksi database.ini:
1. Buatlah folder dengan nama folder lib pada direktori D:Aplikasi Parkir
KendaraanAplikasi Parkir Kendaraanlib.
2. Buatlah koneksi database.ini menggunakan notepade kemudian simapan dengan nama
database.ini.
Pemrograman Berorientasi Objek Lanjut 7
Gambar 1.3 Koneksi database.ini
Membuat Project
Berikut langkah membuat projek baru :
1. Bukalah editor Netbeans, lalu buat project beru melalui menu File –> New Project,
sehingga muncul sebuah jendela New Project.
2. Pada kolom Categories pilih Java. Selanjutnya pada kolom projects pilih Java Desktop
Application, kemudian tekan tombol Next untuk melanjutkan.
Gambar 1.4 Jendela New Project
3. Isilah Project Name (sebagai nama proyek), Project Location (folder atau lokasi
program), Application Class (nama file atau kelas), dan nama kelas utama seperti
berikut ini.
Pemrograman Berorientasi Objek Lanjut 8
Gambar 1.5 Penambahan File Project
Dari gambar di atas, perhatikan isian Application Class yang terisi otomatis ketika anda
memberikan nilai pada nama Project name: “Aplikasi Parkir Kendaraan”. Netbeans secara
default menyiapkan paket bernama aplikasi parkir kendaraan dan kelas utama aplikasi parkir
kendaraan.App. Berarti kita membuat kelas aplikasi parkir kendaraanApp berada dalam paket
aplikasi parkir kendaraan.
4. Pada kolom Choose Application Shell pilih Basic Application, anda bisa menyesuaikan
foldernya dengan computer anda.
5. Jiksa sudah, klik tombol Finish.
Gambar 1.6 Tampilan Pertama Project Baru
Secara default terdapat tiga kelas dalam paket aplikasi parkir kendaraan ini. Anda bisa melihat
dalam jendela inspector, antara lain:
Pemrograman Berorientasi Objek Lanjut 9
 AplikasiParkirKendaraanApp.java sebagai kelas utama yang pertama kali dijalankan.
 AplikasiParkirKendaraanAboutBox.java form info program atau tentang program.
 AplikasiParkirKendaraanView.java menampilkan menu.
6. Langkah selanjutnya kita akan membuat Database.java dengan cara klik kanan New ->
Java Class , kemudian masukkan kode program seperti dibawah ini.
Gambar 1.7 Membuat Java Class File
package aplikasiparkirkendaraan;
import java.io.FileInputStream;
import java.util.Properties;
import javax.swing.JOptionPane;
/**
*
* @author REVOLPER
*/
public class Database {
public Properties mypanel, myLanguage;
private String strNamePanel;
public Database(){
}
public String SettingPanel(String nmPanel){
try {
mypanel = new Properties();
mypanel.load(new FileInputStream("lib/database.ini"));
strNamePanel = mypanel.getProperty(nmPanel);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Tidak ada koneksi","Error",
JOptionPane.INFORMATION_MESSAGE);
System.err.println(e.getMessage());
System.exit(0);
}
return strNamePanel;
}
}
Pemrograman Berorientasi Objek Lanjut 10
Membuat Menu Utama
Selanjutnya kita akan memperbaiki kelas AplikasiParkirKendaraanView agar menjadi sebuah
menu utama yang bisa dipakai untuk aplikasi parkir kendaraan. Langkah pertama adalah
menambahkan menu, yaitu:
1. Pilih menu File pada desain form kelas AplikasiParkirKendaraanView, klik kanan pilih
Add Form Palette –> Menu item.
Gambar 1.8 Penambahan Menu Baru
2. Sehingga muncul menu baru seperti pada gambar berikut.
Gambar 1.9 Tampilan Menu Baru
3. Sekarang kita bisa memindahkan posisi menu baru itu dengan melakukan drag ke atas
ataupun kebawah. Untuk melakukan perubahan teks menu, klik kanan pada menu dan
pilih Edit Text. Selanjutnya masukkan judul menu yang anda inginkan, misalnya Data
Jenis Kendaraan.
Pemrograman Berorientasi Objek Lanjut 11
Gambar 1.10 Mengganti Text Menu
Gambar 1.11 Tampilan Menu yang Sudah Di edit
4. Untuk mengubah nama variable objeknya, klik kanan menu item. Pilih Change Variabel
Name…, kemudian ketikkan nama variabelnya.
5. Sekarang, tambahkan semua kebutuhan menu, sehingga menjadi gambar berikut.
Pemrograman Berorientasi Objek Lanjut 12
Gambar 1.12 Submenu File
Gambar 1.13 Submenu Transaksi
Gambar 1.14 Submenu Report
Gambar 1.15 Submenu Help
Pemrograman Berorientasi Objek Lanjut 13
Gambar 1.16 Hierarki Semua Menu Utama
Memasang File Jar(Setting Class Path)
Memasang file jar ke dalam aplikasi adalah pekerjaan yang sangat penting, karena dengan
begitu integritas dan fleksibilitas untuk pengembangan program sangat mudah. Mungkin anda
pernah memahami bagaimana file dll dalam windows bekerja. Dengan adanya sebuah dll
tertentu, bisa dipakai secara bersama-sama oleh aplikasi lain. Dalam aplikasi ini, kita akan
memasang distribusi file sebagai komponen penghubung database. Buatlah susunan folder
program dan setingan file jar yang sudah disiapkan:
1. Buatlah folder com pada folder D:Aplikasi Parkir KendaraanAplikasi Parkir
Kendaraankemudian kopi file mysql-connector-java-5.1.6-bin.
2. Buatlah folder com pada direktori folder D:Aplikasi Parkir KendaraanAplikasi Parkir
Kendaraansrc kemudian kopi folder BIROSOFT yang berguna sebagai skin/style
program
Gambar 1.17 Folder Program
Pemrograman Berorientasi Objek Lanjut 14
Memasang Skin yang Terdapat Pada Folder BIROSOFT
1. Untuk memasang skin silahkan anda buka AplikasiParkirKendaraanApp.java
2. Masukkan Kode program seperti berikut:
public static void main(String[] args) {
try {
launch(AplikasiParkirKendaraanApp.class,args);
UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
} catch (ClassNotFoundException ex) {
System.out.println(ex);
} catch (InstantiationException ex) {
System.out.println(ex);
} catch (IllegalAccessException ex) {
System.out.println(ex);
} catch (UnsupportedLookAndFeelException ex) {
System.out.println(ex);
}
}
Catatan:pada saat anda mengetikkan perintah UIManager.setLookAndFeel(“….”)
Akan tampil lambang lampu boklam silahkan anda klik kanan lampu boklam tersebut kemudian
pilih Surround with try-catch.
Memasang Driver MySQL
Untuk bisa melakukan hubungan atau koneksi dengan database MySQL, Anda harus memasang
driver-nya. Caranya adalah:
1. Dari jendela Project pilih Libraries kemudian klik kanan pilih Add JAR/Folder… kemudian
klik Open.
Gambar 1.18 Penentuan File Driver MySQL sendiri
Pemrograman Berorientasi Objek Lanjut 15
Membuat Desain Form Data Jenis Kendaraan
Sekarang saatnya membuat form data jenis kendaraan agar petugas dapat mengetahu dan
menginput jenis kendaraan. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket
AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.19 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja
JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New
JInternalFrame Form.
Gambar 1.20 Membuat Form JInternalFrame Form
Pemrograman Berorientasi Objek Lanjut 16
3. Pada jendela New JInternalFrame Form, isikan Frmjnskendaraan pada kotak isian Class
Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk
mengakhiri.
Gambar 1.21 Menentukan Nama Form JInternalFrame Form
Gambar 1.22 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 17
Gambar 1.23 Desain Form Data Jenis Kendaraan
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
2. Pada bagian public class Frmjeniskendaraan extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmjeniskendaraan extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmjeniskendaraan */
public Frmjeniskendaraan() {
initComponents();
//setting form agar pada saat di tampilkan berada pada posisi senter/tengah
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
jTextEdit
JButton
JTable
JLabel
Pemrograman Berorientasi Objek Lanjut 18
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 6);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{90,400,90,});
setDefaultTable();
SetEditOff();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada
tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"Kode Jenis","Jenis Kendaraan","Tarif"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
Pemrograman Berorientasi Objek Lanjut 19
}
};
}
String data[]=new String[3];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tbljnskendaraan";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
KodeJenis.setText(tableModel.getValueAt(row, 0).toString());
Jenis.setText(tableModel.getValueAt(row, 1).toString());
Tarif.setText(tableModel.getValueAt(row, 2).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
SetEditOn();
}
Pemrograman Berorientasi Objek Lanjut 20
5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong
seperti berikut ini:
public void BersihData(){
KodeJenis.setText("");
Jenis.setText("");
Tarif.setText("");
}
public void SetEditOff(){
KodeJenis.setEnabled(false);
Jenis.setEnabled(false);
Tarif.setEnabled(false);
}
public void SetEditOn(){
KodeJenis.setEnabled(true);
Jenis.setEnabled(true);
Tarif.setEnabled(true);
}
6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
KodeJenis.requestFocus();
Save.setEnabled(true);
Update.setEnabled(false);
Delete.setEnabled(false);
SetEditOn();
}
7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String KJ=KodeJenis.getText();
String J=Jenis.getText();
String T=Tarif.getText();
if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty()))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
Pemrograman Berorientasi Objek Lanjut 21
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tbljnskendaraan values('"+KodeJenis.getText()+"',"+
"'"+Jenis.getText()+"',"+
"'"+Tarif.getText()+"')";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String KJ=KodeJenis.getText();
String J=Jenis.getText();
String T=Tarif.getText();
if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty()))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
Pemrograman Berorientasi Objek Lanjut 22
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tbljnskendaraan set jenis='"+Jenis.getText()+"',"+
"tarif='"+Tarif.getText()+"'"+
"Where kodejenis='"+KodeJenis.getText()+"'";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tbljnskendaraan where kodejenis='"+KodeJenis.getText()+"'";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Delete.setEnabled(false);
Update.setEnabled(false);
Pemrograman Berorientasi Objek Lanjut 23
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
11. Buatlah kode program validasi untuk kodejenis dengan cara klik kanan pada KodeJenis[jTextField] pilih
evens -> Key -> KeyTyped.
private void KodeJenisKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 2 digit
if(KodeJenis.getText().length()>1)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
12. Buatlah kode program validasi angka pada tarif dengan cara klik kanan pada Tarif[jTextField] pilih evens
-> Key -> KeyTyped.
private void TarifKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Jenis Kendaraan pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program
seperti berikut:
Pemrograman Berorientasi Objek Lanjut 24
Gambar 1.24 Perintah Evens sub Menu Data Jenis Kendaraan
private void MenuKendaraanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan();
jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmjeniskendaraan.show();
}
15. Jalankan Program kemudian klik menu Data Jenis Kendaraan maka akan tampil seperti berikut:
Gambar 1.25 Tampilan Program Data Jenis Kendaraan
Pemrograman Berorientasi Objek Lanjut 25
Membuat Desain Form Data Petugas
Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang
bertugas. Lakukan beberapa langkah berikut ini:
5. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket
AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.26 Membuat Objek Baru
6. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja
JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New
JInternalFrame Form.
Gambar 1.27 Membuat Form JInternalFrame Form
7. Pada jendela New JInternalFrame Form, isikan Frmpetugas pada kotak isian Class Name,
dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 26
Gambar 1.28 Menentukan Nama Form JInternalFrame Form
Gambar 1.29 Desain Form Baru
8. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 27
Gambar 1.30 Desain Form Data Petugas
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmpetugas extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmpetugas */
public Frmpetugas() {
initComponents();
//setting form agar pada saat di tampilkan berada pada posisi senter/tengah
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
jTextEdit
JButton
JTable
JLabel
Pemrograman Berorientasi Objek Lanjut 28
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 6);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{70,250,300,70});
setDefaultTable();
SetEditOff();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan
data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"ID Petugas","Nama Petugas","Alamat Petugas","Telpon"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
Pemrograman Berorientasi Objek Lanjut 29
return canEdit[columnIndex];
}
};
}
String data[]=new String[4];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
IDPetugas.setText(tableModel.getValueAt(row, 0).toString());
NMPetugas.setText(tableModel.getValueAt(row, 1).toString());
Alamat.setText(tableModel.getValueAt(row, 2).toString());
Telp.setText(tableModel.getValueAt(row, 3).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
SetEditOn();
}
5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong
seperti berikut ini:
Pemrograman Berorientasi Objek Lanjut 30
public void BersihData(){
IDPetugas.setText("");
NMPetugas.setText("");
Alamat.setText("");
Telp.setText("");
}
public void SetEditOff(){
IDPetugas.setEnabled(false);
NMPetugas.setEnabled(false);
Alamat.setEnabled(false);
Telp.setEnabled(false);
}
public void SetEditOn(){
IDPetugas.setEnabled(true);
NMPetugas.setEnabled(true);
Alamat.setEnabled(true);
Telp.setEnabled(true);
}
6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
IDPetugas.requestFocus();
Save.setEnabled(true);
Update.setEnabled(false);
Delete.setEnabled(false);
SetEditOn();
}
7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String IP=IDPetugas.getText();
String NP=NMPetugas.getText();
String A=Alamat.getText();
String T=Telp.getText();
if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
IDPetugas.requestFocus();
Pemrograman Berorientasi Objek Lanjut 31
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tblpetugas values('"+IDPetugas.getText()+"',"+
"'"+NMPetugas.getText()+"',"+
"'"+Alamat.getText()+"',"+
"'"+Telp.getText()+"')";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
data[3] = Telp.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String IP=IDPetugas.getText();
String NP=NMPetugas.getText();
String A=Alamat.getText();
Pemrograman Berorientasi Objek Lanjut 32
String T=Telp.getText();
if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
IDPetugas.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblpetugas set nmpetugas='"+NMPetugas.getText()+"',"+
"alamat='"+Alamat.getText()+"',"+
"telp='"+Telp.getText()+"'"+
"Where idpetugas='"+IDPetugas.getText()+"'";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
data[3] = Telp.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tblpetugas where idpetugas='"+IDPetugas.getText()+"'";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
Pemrograman Berorientasi Objek Lanjut 33
data[3] = Telp.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Delete.setEnabled(false);
Update.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
11. Buatlah kode program validasi untuk idpetugas dengan cara klik kanan pada IDPetugas[jTextField] pilih
evens -> Key -> KeyTyped.
private void IDPetugasKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 4 digit
if(IDPetugas.getText().length()>3)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
12. Buatlah kode program validasi angka pada telpon dengan cara klik kanan pada Telp[jTextField] pilih
evens -> Key -> KeyTyped.
private void TelpKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 15 digit
if(Telp.getText().length()>14)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
Pemrograman Berorientasi Objek Lanjut 34
this.dispose();
}
14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Petugas pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti
berikut:
Gambar 1.31 Perintah Evens sub Menu Data Petugas
private void MenuPetugasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmpetugas frmpetugas=new Frmpetugas();
jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmpetugas.show();
}
15. Jalankan Program kemudian klik menu Data Petugas maka akan tampil seperti berikut:
Gambar 1.32 Tampilan Program Data Petugas
Pemrograman Berorientasi Objek Lanjut 35
Membuat Desain Form Data Parkir Kendaraan Masuk
Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang
bertugas. Lakukan beberapa langkah berikut ini:
9. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket
AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.33 Membuat Objek Baru
10. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja
JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New
JInternalFrame Form.
Gambar 1.34 Membuat Form JInternalFrame Form
Pemrograman Berorientasi Objek Lanjut 36
11. Pada jendela New JInternalFrame Form, isikan Frmparkirmasuk pada kotak isian Class
Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk
mengakhiri.
Gambar 1.35 Menentukan Nama Form JInternalFrame Form
Gambar 1.36 Desain Form Baru
12. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 37
Gambar 1.37 Desain Form Data Parkir Kendaraan Masuk
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Date;
2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmparkirmasuk extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmparkirmasuk */
jTextEdit
JButton
JTable
JLabel
jTextEdit
Pemrograman Berorientasi Objek Lanjut 38
public Frmparkirmasuk() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 14);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{70, 90, 70, 70, 70, 70, 70, 70, 70, 70, 70});
setDefaultTable();
TampilComboPetugas();
TampilComboKendaraan();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan
data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
Pemrograman Berorientasi Objek Lanjut 39
new String [] {"No.Tiket","Tanggal","ID Petugas","Nomor Plat","Kode Jenis","Jam Masuk","Jam
Keluar","Bayar","Sisa"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
}
};
}
String data[]=new String[9];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblparkir";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
data[6] = res.getString(7);
data[7] = res.getString(8);
data[8] = res.getString(9);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program TampilComboKendaraan, letakkan disembarang tempat yang memiliki
space kosong, seperti berikut ini :
public void TampilComboKendaraan(){
Pemrograman Berorientasi Objek Lanjut 40
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbljnskendaraan";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
KodeJenis.addItem(res.getString("kodejenis"));
}
} catch (SQLException ex) {
}
}
5. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item ->
ItemStateCanged.
private void KodeJenisItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbljnskendaraan where kodejenis='"+
KodeJenis.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
Jenis.setText(res.getString("jenis"));
Tarif.setText(res.getString("tarif"));
} catch (SQLException ex) {
}
}
6. Buatlah kode program TampilComboPetugas, letakkan disembarang tempat yang memiliki
space kosong, seperti berikut ini :
public void TampilComboPetugas(){
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDPetugas.addItem(res.getString("idpetugas"));
}
} catch (SQLException ex) {
Pemrograman Berorientasi Objek Lanjut 41
}
}
7. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item ->
ItemStateCanged.
private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpetugas where idpetugas='"+
IDPetugas.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
NMPetugas.setText(res.getString("nmpetugas"));
} catch (SQLException ex) {
}
}
8. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
NoTiket.setText(tableModel.getValueAt(row, 0).toString());
TglParkir.setText(tableModel.getValueAt(row, 1).toString());
IDPetugas.setSelectedItem(tableModel.getValueAt(row, 2).toString());
NoPlat.setText(tableModel.getValueAt(row, 3).toString());
KodeJenis.setSelectedItem(tableModel.getValueAt(row, 4).toString());
JamMasuk.setText(tableModel.getValueAt(row, 5).toString());
JamKeluar.setText(tableModel.getValueAt(row, 6).toString());
Bayar.setText(tableModel.getValueAt(row, 7).toString());
Sisa.setText(tableModel.getValueAt(row, 8).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
}
9. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini:
public void BersihData(){
TglParkir.setText("");
Pemrograman Berorientasi Objek Lanjut 42
NoTiket.setText("");
NoPlat.setText("");
KodeJenis.setSelectedIndex(0);
Jenis.setText("");
Tarif.setText("");
JamMasuk.setText("");
JamKeluar.setText("");
Bayar.setText("");
Sisa.setText("");
}
10. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
TanggalOtomatis();
IDPetugas.requestFocus();
Save.setEnabled(true);
}
11. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String TGP=TglParkir.getText();
String IDP=IDPetugas.getSelectedItem().toString();
String NP=NoPlat.getText();
String KJ=KodeJenis.getSelectedItem().toString();
String JM=JamMasuk.getText();
if ((NT.isEmpty()) | (TGP.isEmpty()) |(IDP.isEmpty())|(NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty()))))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tblparkir values('"+NoTiket.getText()+"',"+
"'"+TglParkir.getText()+"',"+
Pemrograman Berorientasi Objek Lanjut 43
"'"+IDPetugas.getSelectedItem()+"',"+
"'"+NoPlat.getText()+"',"+
"'"+KodeJenis.getSelectedItem()+"',"+
"'"+JamMasuk.getText()+"',"+
"'"+JamKeluar.getText()+"',"+
"'"+Bayar.getText()+"',"+
"'"+Sisa.getText()+"')";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
12. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
13. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String TGP=TglParkir.getText();
String IDP=IDPetugas.getSelectedItem().toString();
Pemrograman Berorientasi Objek Lanjut 44
String NP=NoPlat.getText();
String KJ=KodeJenis.getSelectedItem().toString();
String JM=JamMasuk.getText();
if ((NT.isEmpty()) | (TGP.isEmpty())|(IDP.isEmpty()) | (NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty()))))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+
"idpetugas='"+IDPetugas.getSelectedItem()+"',"+
"noplat='"+NoPlat.getText()+"',"+
"kodejenis='"+KodeJenis.getSelectedItem()+"',"+
"jammasuk='"+JamMasuk.getText()+"',"+
"jamkeluar='"+JamKeluar.getText()+"',"+
"bayar='"+Bayar.getText()+"',"+
"sisa='"+Sisa.getText()+"'"+
"Where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
Pemrograman Berorientasi Objek Lanjut 45
14. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tblparkir where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
15. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens
-> Key -> KeyTyped.
private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 2 digit
if(NoTiket.getText().length()>9)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
16. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih
evens -> Key -> KeyTyped.
Pemrograman Berorientasi Objek Lanjut 46
private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoPlat.getText().length()>9)
evt.consume();
}
17. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
18. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki
space kosong seperti berikut :
public void TanggalOtomatis(){
Date tanggal = new Date();
JamMasuk.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal)));
TglParkir.setText(""+ (String.format("%1$td:%1$tb:%1$tY",tanggal)));
}
19. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Parkir Kendaraan Masuk pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode
program seperti berikut:
Gambar 1.38 Perintah Evens sub Menu Data Parkir Kendaraan Masuk
Pemrograman Berorientasi Objek Lanjut 47
private void MenuParkirINActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk();
jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmparkirmasuk.show();
}
20. Jalankan Program kemudian klik menu Data Parkir Kendaraan Masuk maka akan tampil seperti berikut:
Gambar 1.39 Tampilan Program Data Parkir Kendaraan Masuk
Membuat Desain Form Data Parkir Kendaraan Keluar
Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang
bertugas. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket
AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Pemrograman Berorientasi Objek Lanjut 48
Gambar 1.40 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja
JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New
JInternalFrame Form.
Gambar 1.41 Membuat Form JInternalFrame Form
3. Pada jendela New JInternalFrame Form, isikan Frmparkirkeluar pada kotak isian Class
Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk
mengakhiri.
Pemrograman Berorientasi Objek Lanjut 49
Gambar 1.42 Menentukan Nama Form JInternalFrame Form
Gambar 1.43 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 50
Gambar 1.44 Desain Form Data Parkir Kendaraan Keluar
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Date;
2. Pada bagian public class Frmparkirkeluar extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmparkirkeluar extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmparkirkeluar */
public Frmparkirkeluar() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
jTextEdit
JButton
jTextEdit
JLabel
jButton
Pemrograman Berorientasi Objek Lanjut 51
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 14);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
NoPlat.setEnabled(false);
NoTiket.setEnabled(false);
}
3. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini:
public void BersihData(){
TglParkir.setText("");
NoTiket.setText("");
IDPetugas.setText("");
NMPetugas.setText("");
NoPlat.setText("");
KodeJenis.setText("");
Jenis.setText("");
Tarif.setText("");
JamMasuk.setText("");
JamKeluar.setText("");
Bayar.setText("");
Sisa.setText("");
}
4. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
NoTiket.requestFocus();
Update.setEnabled(true);
NoPlat.setEnabled(true);
NoTiket.setEnabled(true);
}
Pemrograman Berorientasi Objek Lanjut 52
5. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String NP=NoPlat.getText();
String JK=JamKeluar.getText();
String BYR=Bayar.getText();
if ((NT.isEmpty())|(NP.isEmpty()|(JK.isEmpty()|(BYR.isEmpty())))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+
"idpetugas='"+IDPetugas.getText()+"',"+
"noplat='"+NoPlat.getText()+"',"+
"kodejenis='"+KodeJenis.getText()+"',"+
"jammasuk='"+JamMasuk.getText()+"',"+
"jamkeluar='"+JamKeluar.getText()+"',"+
"bayar='"+Bayar.getText()+"',"+
"sisa='"+Sisa.getText()+"'"+
"Where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
stt.close();
kon.close();
BersihData();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
6. Buatlah kode program padat jtextfield NoPolat klik kanan pilih events -> charet -> charetUpdate
private void NoPlatCaretUpdate(javax.swing.event.CaretEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Pemrograman Berorientasi Objek Lanjut 53
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblparkir where noplat='"+ NoPlat.getText().toString()+"'"+
"and notiket='"+NoTiket.getText().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
TglParkir.setText(res.getString("tglparkir"));
IDPetugas.setText(res.getString("idpetugas"));
KodeJenis.setText(res.getString("kodejenis"));
JamMasuk.setText(res.getString("jammasuk"));
JamKeluar.setText(res.getString("jamkeluar"));
Bayar.setText(res.getString("bayar"));
Sisa.setText(res.getString("sisa"));
} catch (SQLException ex) {
}
}
7. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens
-> Key -> KeyTyped.
private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoTiket.getText().length()>9)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
8. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih
evens -> Key -> KeyTyped.
private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoPlat.getText().length()>9)
evt.consume();
}
9. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
Pemrograman Berorientasi Objek Lanjut 54
this.dispose();
}
10. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki
space kosong seperti berikut :
public void TanggalOtomatis(){
Date tanggal = new Date();
JamKeluar.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal)));
}
11. Buatlah kode program AddNew1 dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed
private void AddNew1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
TanggalOtomatis();
}
12. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Parkir Kendaraan Keluar pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode
program seperti berikut:
Gambar 1.45 Perintah Evens sub Menu Data Parkir Kendaraan Keluar
private void MenuParkirOUTActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar();
jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmparkirkeluar.show();
}
Pemrograman Berorientasi Objek Lanjut 55
13. Jalankan Program kemudian klik menu Data Parkir Kendaraan Keluar maka akan tampil seperti berikut:
Gambar 1.46 Tampilan Program Data Parkir Kendaraan Keluar
Membuat ToolBar Pada Menu Utama
ToolBar adalah tombol berbentuk ikon atau yang dikenal dengan speed button atau Short Cut
yang biasanya terletak di bawah menu utama. Tombol ini bisa langsung membawa pengguna ke
jendela tertentu hanya dengan sekali klik saja. Sehingga tombol ini hampir pasti ada di setiap
aplikasi. Untuk membuta, masuk dalam form aplikasiparkirkendaraanView dan lakukan
langkah-langkah berikut :
1. Tambahkan JToolBar pada container mainPanel, perhatikan petunjuk berikut.
Pemrograman Berorientasi Objek Lanjut 56
Gambar 1.47 Menambah ToolBar
Gambar 1.48 Menambah Tombo pada ToolBar
2. Selanjutnya tambahkan JBUtton pada ToolBar (lihat gambar dibawah). Untuk
menampilkan ikon, ubah propertis ikon (klik pada tombol ).
Gambar 1.49 Memilih Icon
Anda bisa mengambil ikon dealm paket/folder yang sudah anda siapkan sebelumnya. Sebagai
contoh, sebelumnya telah memasukkan file-file gambar dalam folder icon, file-file icon tersebut
bisa dipakai. Tentunya bisa membuat sendiri gambar-gambar ikon yang lebih menarik dan
cocok.
Pilih define as a Resource (menjadikan sebagai file dalam resource) tidak perlu dipih. Tekan
tombol OK pada jendela icon.
Pemrograman Berorientasi Objek Lanjut 57
Hapus properti Text pada JButton tersebut, berikan variable namanya
SubMenuJenisKendaraan.
3. Berikan event klik pada jenis kendaraan dengan cara klik kanan, lalu pilih
SubMenuJenisKendaraan -> Events -> Action -> actionPerformed.
Selanjutnya masukkan perintah berikut:
private void SubMenuJenisKendaraanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan();
jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmjeniskendaraan.show();
}
Gambar 1.50 Tombol pada ToolBar
4. Lakukan hal yang sama untuk membuat tombol Petugas,Kendaraan Parkir Masuk,
Kendaraan Parkir Keluar, dan Report. Sehingga toolbar menjadi seperti gambar di atas.
5. Berikut event pada tombol Petugas:
private void SubMenuPetugasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmpetugas frmpetugas=new Frmpetugas();
jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmpetugas.show();
}
6. Berikut event pada tombol Parkir Kendaraan Masuk:
private void SubMenuParkirKendaraanINActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk();
jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmparkirmasuk.show();
}
7. Berkut event pada tombol Parkir Kendaraan Keluar:
Pemrograman Berorientasi Objek Lanjut 58
private void SubMenuParkirKendaraanOUTActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar();
jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmparkirkeluar.show();
}
8. Berikut event pada tombol Report:
private void SubMenuReportActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
FrmReport frmReport=new FrmReport();
jDesktopPane1.add(frmReport, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmReport.show();
}
Sampai saat ini pembuatan aplikasi bisa dikatakan selesai.
MEMBUAT LAPORAN
Jika program aplikasi sudah selesai dibuat, kini giliran kita membuat halaman laporan dari
semua data yang ada. Berikut selengkapnya.
Mengenal JasperReport
JasperReport adalah sebuah tool yang sangat powerfull untuk membuat laporan dalam bentuk
PDF,HTML,XLS,RTF,ODT,CSV,TXT dan XML. Dengan kemampuan dan fleksibilitasnya yang sangat
tinggi, anda bisa membuat berbagai laporan berbentuk Chart, Crosstabs, Subreport, dan
kemampuan lain yang anda butuhkan.
Komponen yang Digunakan Untuk Membuat Report :
Silahkan klik kanan Libraries pilih Add JAR/Folder maka akan tampil seperti berikut:
Pemrograman Berorientasi Objek Lanjut 59
Gambar 1.51 direktory Add JAR/Folder
Adapun file-file Jasper Report Engine yang harus dipilih adalah sebagai berikut:
Jasperreport-2.0.5.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-beanutils-1.7.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-collections-2.1.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-digester-1.7.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-logging-1.0.2.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-logging-api-1.0.2.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Commons-javaflow-20060411.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Jdt-compiler-3.1.1.jar pada direktori d:Aplikasi Parkir
Kendaraanaplikasiparkirkendaraanlib
Setelah anda mengambil semua file yang dibutuhkan seperti diatas maka langkah selanjutnya
anda harus melakukan pengidentifikasian berkas jrxml pada NetBeans dengan cara berikut:
 Buka menu tools -> Options, sehingga muncul jendela Options. Pada jendela tersebut
klik Advanced Option, sehingga muncul jendela Advanced Options.
Pemrograman Berorientasi Objek Lanjut 60
 Dalam jendela Advanced Options, perhatikan sebelah kiri, pilih pada node IDE
Configuration -> System -> Object Types -> XML Objects.
 Masih pada jendela Advanced Options, lihat jendela bagian kanan. Ada properti
Extensions anda MIME Types, tekan pada tombol… yang ada di sampingnya, sehingga
muncul jendela XML Object – Extensions and MIME Types. Pada kotak isian item,
masukkan jrxml, kemudian tean Add, sehingga jrxml tersebut masuk dalam daftar item
List, lalu klik tombol OK. Dan tutup jendela-jendela Options tersebut.
Gambar 1.52 Berkas yang Dikenali Editor NetBeans
Mengenal IReports
IReport adalah sebuah tool yang digunakan untuk membuat desain laporan pada
JasperReports. Artinya, dengan fasilitas ini anda bisa membuat report dengan drag and drop,
bahkan secara otomatis (wizard). Sama dengan JasperReports, program ini lagi-lagi open
source. Pembuat program ini adalah Giulio Toffoli pada tahun 2005. Anda bisa mendapatkan
informasi dan distribusi filenya pada alamat http://ireport.sourceforget.net.
Instalasi IReport dan Konfigurasi Databasenya
Untuk menginstal IReport sebelumnya anda harus mempunya file install JasperReport, jika
sudah ada silahkan klik ganda file IReport-nb-0.9.1-windows-installer.exe. ini adalah distribusi
yang mendukung NetBeans. Jadi, sangat memudahkan pengguna NetBeans.
Pemrograman Berorientasi Objek Lanjut 61
Gambar 1.53 Jendela Permulaan Pemasangan IReport
Gambar 1.54 Jendela Lisensi IReport
Pemrograman Berorientasi Objek Lanjut 62
Gambar 1.55 Jendela Pemilihan Feature IReport
Gambar 1.56 Jendela Lokasi Program File IReport
Silahkan anda lanjutkan dengan mengklik tombol Next dan ikuti semua dialognya sampai
selesai.
Jalankan program iReport dengan cara masuk ke dalam Start menu Windows. Pilih JasperSoft -
> iReport-nb-0.9.1 -> iReport-nb-0.9.1, sehingga muncul jendela pembuka seperti pada gambar
berkut diikuti dengan halaman utama
Pemrograman Berorientasi Objek Lanjut 63
Gambar 1.57 Jendela Splash Screen IReport
Gambar 1.58 Tampilan IReport
Setelah tampil jendela menu iReport anda harus memanggil koneksi mysql-connector-java-
5.1.6-bin dengan cara klik Tools -> Options -> classpath klik tombol Add JAR silahkan anda
ambil komponen mysql-connector-java-5.1.6-bin seperti gambar berikut:
Pemrograman Berorientasi Objek Lanjut 64
Gambar 1.59 Tampilan Add JAR/Path to the classpath
Gambar 1.60 Tampilan Komponen yang sudah dipanggil
Gambar di atas adalah jendela iReport pertama kali. Sebelum membuat laporan, buatlah dulu
sebuah koneksi agar bisa membuka database anda. Dengan cara: pilih menu Tool -> Report
Datasource, sehingga muncul jendela seperti gambar berkut.
Pemrograman Berorientasi Objek Lanjut 65
Gambar 1.61 Jendela Daftar Konfigurasi Koneksi
Selanjutnya tekan tombol New pada sebelah kanan, sehingga muncul jendela seperti gambar
berikut.
Gambar 1.62 Pemilihan JDBC
Selanjutnya, pilih Database JDBC dan klik tombol Next, Sehingga muncul jendela seperti pada
gambar berikut.
Pemrograman Berorientasi Objek Lanjut 66
Gambar 1.63 Pengisian Konfigurasi Database
Untuk memastikan hasil dari koneksi database yang sudah dibuat klik tombol Test jika benar
maka akan tampil seperti gambar dibawah:
Gambar 1.64 Testing Koneksi Database
Pemrograman Berorientasi Objek Lanjut 67
Membuat Laporan
Setelah anda selesai membuat koneksi database langkah selanjutnya silahkan anda membuat
laporan seperti berikut
1. Klik File -> Report Wizard maka akan tampil seperti gambar dibawah :
Gambar 1.65 Tampilan New Report
2. Ubahlah Report Name dan Location untuk menentukan dimana anda akan meletakkan
laporan.
3. Kemudian Klik tombol Next untuk melanjutkan perintah seperti gambar dibawah:
Gambar 1.66 Tampilan New Report steps 2
Pemrograman Berorientasi Objek Lanjut 68
4. Ubahlah Connection / Data Source sesuai dengan koneksi yang anda buat , kemudian
silahkan anda is Query seperti gambar dibawah ini:
Gambar 1.67 Tampilan Query
5. Klik tombol Next maka akan tampil seperti gambar dibawah ini:
Gambar 1.68 Tampilan Hasil Query
Pemrograman Berorientasi Objek Lanjut 69
6. Klik tombol Next seperti Gambar dibawah :
Gambar 1.69 Tampilan Hasil Query
7. Klik tombo Next dan silahkan anda isi Group1 dengan notiket dan Group2 dengan
noplat seperti gambar dibawah :
Gambar 1.70 Tampilan Group Report
8. Klik tombol Next maka akan tampil pilihan Layout/jenis report yang anda inginkan
seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 70
Gambar 1.71 Tampilan Layout Report
Gambar 1.72 Tampilan Report
9. Untuk melihat hasil tekan Preview maka akan tampil seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 71
Gambar 1.73 Tampilan Report Preview
10. Setelah selesai membuat report yang pertama silahkan anda membuat report kedua,
untuk report yang kedua kita tidak menggunakan report wizard tetapi kita akan coba
membuat report secara manual.
11. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:
Gambar 1.74 Tampilan New Report
12. Isilah Report Name dan Location sama seperti anda membuat report yang pertama
kemudian klik tombol Next maka akan tampil seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 72
Gambar 1.75 Tampilan New Report Kosong
13. Kemudian setelah tampil report kosong tekan icon sebelah Preview kemudian isikan
Query seperti gambar dibawah ini:
Gambar 1.76 Tampilan Query
Pemrograman Berorientasi Objek Lanjut 73
14. Setelah selesal silahkan anda masuk ke Report Inspector kemudian anda pilih
Parameter klik kanan pilih Add Parameter setelah terbentuk Parameter1 silahkan anda
ubah dengan cara meRename kemudian anda ubah menjadi NoTiket setelah selesai
anda mengubah nama parameter silahkan anda anda pilih Propertis pilih Default Value
Expression kemudian anda isikan angka sesua dengan notiket yang sudah anda simpan
kedatabase. Kemudian silahkan anda disain seperti gambar dibawah ini:
Gambar 1.77 Tampilan Report
15. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:
Gambar 1.78 Tampilan Report Preview
Pemrograman Berorientasi Objek Lanjut 74
Membuat Desain Form Report
Sekarang saatnya membuat form report untuk mengetahui siapa petugas yang sedang
bertugas. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket
AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.74 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja
JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New
JInternalFrame Form.
Gambar 1.75 Membuat Form JInternalFrame Form
3. Pada jendela New JInternalFrame Form, isikan Frmreport pada kotak isian Class Name,
dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 75
Gambar 1.76 Menentukan Nama Form JInternalFrame Form
Gambar 1.77 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 76
Gambar 1.78 Desain Form Data Report
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.JOptionPane;
jButton
jButtonJLabel
jButton
Pemrograman Berorientasi Objek Lanjut 77
2. Pada bagian public class FrmReport extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class FrmReport extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form FrmReport */
public FrmReport() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 8);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
}
3. Buatlah kode program CetakALL dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CetakALLActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String NamaFile="src/report/RptParkirAll.jasper";
HashMap parameter = new HashMap();
Class.forName(driver);
Connection con = DriverManager.getConnection(database,user,pass);
File reportfile = new File(NamaFile);
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath());
JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con);
JasperViewer.viewReport(jasperPrint,false);
Pemrograman Berorientasi Objek Lanjut 78
JasperViewer.setDefaultLookAndFeelDecorated(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !",
"Cetak Data",JOptionPane.ERROR_MESSAGE);
}
}
4. Buatlah kode program CetakKode dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CetakKodeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String NamaFile="src/report/RptParkirPerkode.jasper";
HashMap parameter = new HashMap();
parameter.put("NoTiket",NoTiket.getText());
Class.forName(driver);
Connection con = DriverManager.getConnection(database,user,pass);
File reportfile = new File(NamaFile);
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath());
JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con);
JasperViewer.viewReport(jasperPrint,false);
JasperViewer.setDefaultLookAndFeelDecorated(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !",
"Cetak Data",JOptionPane.ERROR_MESSAGE);
}
}
5. Buatlah kode program Close dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.dispose();
}

More Related Content

What's hot

Rekayasa Perangkat Lunak
Rekayasa Perangkat LunakRekayasa Perangkat Lunak
Rekayasa Perangkat Lunak
Yudi Purwanto
 
Statistika dasar penyajian data
Statistika dasar penyajian dataStatistika dasar penyajian data
Statistika dasar penyajian data
nurwa ningsih
 
Laporan Praktikum Basis Data Modul II-Primary Key
Laporan Praktikum Basis Data Modul II-Primary KeyLaporan Praktikum Basis Data Modul II-Primary Key
Laporan Praktikum Basis Data Modul II-Primary Key
Shofura Kamal
 
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah) Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
M Abdul Aziz
 
DML
DMLDML
Pertemuan 1 Pemodelan Perangkat Lunak
Pertemuan 1 Pemodelan Perangkat LunakPertemuan 1 Pemodelan Perangkat Lunak
Pertemuan 1 Pemodelan Perangkat Lunak
Disma Ariyanti W
 
Modul Ajar Basis Data
Modul Ajar Basis DataModul Ajar Basis Data
Modul Ajar Basis Data
Herry Prasetyo
 
SURAT MASAL.pdf
SURAT MASAL.pdfSURAT MASAL.pdf
SURAT MASAL.pdf
AdeDwiPutraPutra
 
basis data lanjut modul
 basis data lanjut modul basis data lanjut modul
basis data lanjut modul
Denny Safardan
 
Jobsheet multimedia
Jobsheet multimediaJobsheet multimedia
Jobsheet multimedia
Siti Nurkayah
 
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMINLaporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Shofura Kamal
 
Data Flow Diagram
Data Flow DiagramData Flow Diagram
Data Flow Diagram
Ajeng Savitri
 
Strategi menulis artikel untuk jurnal ilmiah nasional
Strategi menulis artikel untuk jurnal ilmiah nasionalStrategi menulis artikel untuk jurnal ilmiah nasional
Strategi menulis artikel untuk jurnal ilmiah nasional
Dhika Tr
 
Materi microsoft excel 2013
Materi microsoft excel 2013Materi microsoft excel 2013
Materi microsoft excel 2013
elychai
 
Contoh Slide Presentasi Powerpoint yang Baik dan Menarik
Contoh Slide Presentasi Powerpoint yang Baik dan MenarikContoh Slide Presentasi Powerpoint yang Baik dan Menarik
Contoh Slide Presentasi Powerpoint yang Baik dan Menarik
Muhammad Noer
 
Tugas laporan project aplikasi website
Tugas laporan project aplikasi websiteTugas laporan project aplikasi website
Tugas laporan project aplikasi websiteGilang Ramadhan
 
Microsoft Word.ppt
Microsoft Word.pptMicrosoft Word.ppt
Microsoft Word.ppt
TriEvelina1
 
Tabel padanan bilangan Desimal, Biner, Oktal dan Heksadesimal
Tabel padanan bilangan Desimal, Biner, Oktal dan HeksadesimalTabel padanan bilangan Desimal, Biner, Oktal dan Heksadesimal
Tabel padanan bilangan Desimal, Biner, Oktal dan HeksadesimalMustahal SSi
 
01 Pengenalan Database Administrator (DBA)
01 Pengenalan Database Administrator (DBA)01 Pengenalan Database Administrator (DBA)
01 Pengenalan Database Administrator (DBA)
Hendri Winarto
 

What's hot (20)

Rekayasa Perangkat Lunak
Rekayasa Perangkat LunakRekayasa Perangkat Lunak
Rekayasa Perangkat Lunak
 
Statistika dasar penyajian data
Statistika dasar penyajian dataStatistika dasar penyajian data
Statistika dasar penyajian data
 
Laporan Praktikum Basis Data Modul II-Primary Key
Laporan Praktikum Basis Data Modul II-Primary KeyLaporan Praktikum Basis Data Modul II-Primary Key
Laporan Praktikum Basis Data Modul II-Primary Key
 
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah) Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
Microsft Office 2010 (Word dan Excel) - Aplikasi Komputer (Makalah)
 
DML
DMLDML
DML
 
Modul praktikum basis data new
Modul praktikum basis data newModul praktikum basis data new
Modul praktikum basis data new
 
Pertemuan 1 Pemodelan Perangkat Lunak
Pertemuan 1 Pemodelan Perangkat LunakPertemuan 1 Pemodelan Perangkat Lunak
Pertemuan 1 Pemodelan Perangkat Lunak
 
Modul Ajar Basis Data
Modul Ajar Basis DataModul Ajar Basis Data
Modul Ajar Basis Data
 
SURAT MASAL.pdf
SURAT MASAL.pdfSURAT MASAL.pdf
SURAT MASAL.pdf
 
basis data lanjut modul
 basis data lanjut modul basis data lanjut modul
basis data lanjut modul
 
Jobsheet multimedia
Jobsheet multimediaJobsheet multimedia
Jobsheet multimedia
 
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMINLaporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
 
Data Flow Diagram
Data Flow DiagramData Flow Diagram
Data Flow Diagram
 
Strategi menulis artikel untuk jurnal ilmiah nasional
Strategi menulis artikel untuk jurnal ilmiah nasionalStrategi menulis artikel untuk jurnal ilmiah nasional
Strategi menulis artikel untuk jurnal ilmiah nasional
 
Materi microsoft excel 2013
Materi microsoft excel 2013Materi microsoft excel 2013
Materi microsoft excel 2013
 
Contoh Slide Presentasi Powerpoint yang Baik dan Menarik
Contoh Slide Presentasi Powerpoint yang Baik dan MenarikContoh Slide Presentasi Powerpoint yang Baik dan Menarik
Contoh Slide Presentasi Powerpoint yang Baik dan Menarik
 
Tugas laporan project aplikasi website
Tugas laporan project aplikasi websiteTugas laporan project aplikasi website
Tugas laporan project aplikasi website
 
Microsoft Word.ppt
Microsoft Word.pptMicrosoft Word.ppt
Microsoft Word.ppt
 
Tabel padanan bilangan Desimal, Biner, Oktal dan Heksadesimal
Tabel padanan bilangan Desimal, Biner, Oktal dan HeksadesimalTabel padanan bilangan Desimal, Biner, Oktal dan Heksadesimal
Tabel padanan bilangan Desimal, Biner, Oktal dan Heksadesimal
 
01 Pengenalan Database Administrator (DBA)
01 Pengenalan Database Administrator (DBA)01 Pengenalan Database Administrator (DBA)
01 Pengenalan Database Administrator (DBA)
 

Viewers also liked

Jbptppolban gdl-herrymsima-3803-3-bab2--4
Jbptppolban gdl-herrymsima-3803-3-bab2--4Jbptppolban gdl-herrymsima-3803-3-bab2--4
Jbptppolban gdl-herrymsima-3803-3-bab2--4
aris_27
 
48334044 sisinfo-manajemen parkir
48334044 sisinfo-manajemen parkir48334044 sisinfo-manajemen parkir
48334044 sisinfo-manajemen parkir
aris_27
 
Buble sorting
Buble sortingBuble sorting
Buble sorting
Asnita Meydelia C K
 
Searching
SearchingSearching
Materi Struktur data QUEUE
Materi Struktur data QUEUEMateri Struktur data QUEUE
Materi Struktur data QUEUE
Meta N
 
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZERKTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
A.Muhammad Rezky Sulfajri
 
Sistem Absensi RFID
Sistem Absensi RFIDSistem Absensi RFID
Sistem Absensi RFID
Rijal Setiawan
 
MARIA MOURKAKOY-PRESENTATION
MARIA MOURKAKOY-PRESENTATIONMARIA MOURKAKOY-PRESENTATION
MARIA MOURKAKOY-PRESENTATIONMaria Mourkakou
 
LA NUBE
LA NUBELA NUBE
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Asnita Meydelia C K
 
Sex influenced
Sex influencedSex influenced
Sex influenced
Dian Susi Susanti
 
Flowchart
FlowchartFlowchart
Struktur data
Struktur  dataStruktur  data
Struktur data
ojanfauzan09
 
Tipos de paisaje
Tipos de paisaje Tipos de paisaje
Tipos de paisaje
Yk Chavez
 
Tabubil Hospital Newsletter 2016 Issue 1
Tabubil Hospital Newsletter 2016 Issue 1Tabubil Hospital Newsletter 2016 Issue 1
Tabubil Hospital Newsletter 2016 Issue 1Samei Ms
 
Pertemuan 3 organisasi_komputer_logika_digital
Pertemuan 3 organisasi_komputer_logika_digitalPertemuan 3 organisasi_komputer_logika_digital
Pertemuan 3 organisasi_komputer_logika_digital
said zulhelmi
 
struktur data
struktur datastruktur data
struktur data
Ayu_lestari
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)
eka pandu cynthia
 

Viewers also liked (19)

Jbptppolban gdl-herrymsima-3803-3-bab2--4
Jbptppolban gdl-herrymsima-3803-3-bab2--4Jbptppolban gdl-herrymsima-3803-3-bab2--4
Jbptppolban gdl-herrymsima-3803-3-bab2--4
 
48334044 sisinfo-manajemen parkir
48334044 sisinfo-manajemen parkir48334044 sisinfo-manajemen parkir
48334044 sisinfo-manajemen parkir
 
Buble sorting
Buble sortingBuble sorting
Buble sorting
 
Searching
SearchingSearching
Searching
 
Materi Struktur data QUEUE
Materi Struktur data QUEUEMateri Struktur data QUEUE
Materi Struktur data QUEUE
 
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZERKTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
KTI AUTOMATIC HAND DRYER WITH UV.STERILIZER
 
Sistem Absensi RFID
Sistem Absensi RFIDSistem Absensi RFID
Sistem Absensi RFID
 
MARIA MOURKAKOY-PRESENTATION
MARIA MOURKAKOY-PRESENTATIONMARIA MOURKAKOY-PRESENTATION
MARIA MOURKAKOY-PRESENTATION
 
LA NUBE
LA NUBELA NUBE
LA NUBE
 
Nino Balmes resume (1) (2)
Nino Balmes resume (1) (2)Nino Balmes resume (1) (2)
Nino Balmes resume (1) (2)
 
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
 
Sex influenced
Sex influencedSex influenced
Sex influenced
 
Flowchart
FlowchartFlowchart
Flowchart
 
Struktur data
Struktur  dataStruktur  data
Struktur data
 
Tipos de paisaje
Tipos de paisaje Tipos de paisaje
Tipos de paisaje
 
Tabubil Hospital Newsletter 2016 Issue 1
Tabubil Hospital Newsletter 2016 Issue 1Tabubil Hospital Newsletter 2016 Issue 1
Tabubil Hospital Newsletter 2016 Issue 1
 
Pertemuan 3 organisasi_komputer_logika_digital
Pertemuan 3 organisasi_komputer_logika_digitalPertemuan 3 organisasi_komputer_logika_digital
Pertemuan 3 organisasi_komputer_logika_digital
 
struktur data
struktur datastruktur data
struktur data
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)
 

Similar to Pemrograman berorientasi-objek

Web dengan php mysql dreamweaver
Web dengan php mysql dreamweaverWeb dengan php mysql dreamweaver
Web dengan php mysql dreamweaver
Albertz Ace-Red
 
Buat web dgn php mysql dreamweaver
Buat web dgn php mysql dreamweaverBuat web dgn php mysql dreamweaver
Buat web dgn php mysql dreamweaverHaswi Haswi
 
setup widget dan work directory matlab
setup widget dan work directory matlabsetup widget dan work directory matlab
setup widget dan work directory matlab
softscients
 
server side datatables menggunakan yajra 1 pada laravel admin lte
server side datatables menggunakan yajra 1 pada laravel admin lteserver side datatables menggunakan yajra 1 pada laravel admin lte
server side datatables menggunakan yajra 1 pada laravel admin lte
Adi Nata
 
Forum 6
Forum 6Forum 6
Operasi dasar matlab job 1
Operasi dasar matlab job 1Operasi dasar matlab job 1
Operasi dasar matlab job 1
Polytechnic State Semarang
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di androidInto Setiawan
 
Presentation dyan
Presentation dyanPresentation dyan
Presentation dyan
Dyan Restyani Safitri
 
Belajar Pemrograman Matlab
Belajar Pemrograman MatlabBelajar Pemrograman Matlab
Belajar Pemrograman Matlab
softscients
 
Tutorial Postgre SQL
Tutorial Postgre SQLTutorial Postgre SQL
Tutorial Postgre SQL
Hari Setiaji
 
laporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysqllaporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysql
Hibaten Wafiroh
 
Membuat aplikasi-rental-dengan-java-dan-my sql
Membuat aplikasi-rental-dengan-java-dan-my sqlMembuat aplikasi-rental-dengan-java-dan-my sql
Membuat aplikasi-rental-dengan-java-dan-my sqlIrwan Syah
 
Modul praktikum telekomunikasi kurikulum 2018 kkni
Modul praktikum telekomunikasi kurikulum 2018 kkniModul praktikum telekomunikasi kurikulum 2018 kkni
Modul praktikum telekomunikasi kurikulum 2018 kkni
MardiniHasanah
 
27. prak.-algoritma-pemrograman-ii
27. prak.-algoritma-pemrograman-ii27. prak.-algoritma-pemrograman-ii
27. prak.-algoritma-pemrograman-ii
Ayu Karisma Alfiana
 
Proses pembuatan account db, db , tabel dan password
Proses pembuatan account db, db , tabel dan passwordProses pembuatan account db, db , tabel dan password
Proses pembuatan account db, db , tabel dan password
zulk ifli
 
Laporan akhir
Laporan akhirLaporan akhir
Laporan akhiryudhigcgc
 
D3 mi modul_ppbd_maret2013
D3 mi modul_ppbd_maret2013D3 mi modul_ppbd_maret2013
D3 mi modul_ppbd_maret2013Saybia Himma
 

Similar to Pemrograman berorientasi-objek (20)

Web dengan php mysql dreamweaver
Web dengan php mysql dreamweaverWeb dengan php mysql dreamweaver
Web dengan php mysql dreamweaver
 
Buat web dgn php mysql dreamweaver
Buat web dgn php mysql dreamweaverBuat web dgn php mysql dreamweaver
Buat web dgn php mysql dreamweaver
 
setup widget dan work directory matlab
setup widget dan work directory matlabsetup widget dan work directory matlab
setup widget dan work directory matlab
 
server side datatables menggunakan yajra 1 pada laravel admin lte
server side datatables menggunakan yajra 1 pada laravel admin lteserver side datatables menggunakan yajra 1 pada laravel admin lte
server side datatables menggunakan yajra 1 pada laravel admin lte
 
Tugas php
Tugas phpTugas php
Tugas php
 
Forum 6
Forum 6Forum 6
Forum 6
 
Matlab
MatlabMatlab
Matlab
 
Laporan akhir
Laporan akhirLaporan akhir
Laporan akhir
 
Operasi dasar matlab job 1
Operasi dasar matlab job 1Operasi dasar matlab job 1
Operasi dasar matlab job 1
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di android
 
Presentation dyan
Presentation dyanPresentation dyan
Presentation dyan
 
Belajar Pemrograman Matlab
Belajar Pemrograman MatlabBelajar Pemrograman Matlab
Belajar Pemrograman Matlab
 
Tutorial Postgre SQL
Tutorial Postgre SQLTutorial Postgre SQL
Tutorial Postgre SQL
 
laporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysqllaporan praktikum rekayasa software php dan mysql
laporan praktikum rekayasa software php dan mysql
 
Membuat aplikasi-rental-dengan-java-dan-my sql
Membuat aplikasi-rental-dengan-java-dan-my sqlMembuat aplikasi-rental-dengan-java-dan-my sql
Membuat aplikasi-rental-dengan-java-dan-my sql
 
Modul praktikum telekomunikasi kurikulum 2018 kkni
Modul praktikum telekomunikasi kurikulum 2018 kkniModul praktikum telekomunikasi kurikulum 2018 kkni
Modul praktikum telekomunikasi kurikulum 2018 kkni
 
27. prak.-algoritma-pemrograman-ii
27. prak.-algoritma-pemrograman-ii27. prak.-algoritma-pemrograman-ii
27. prak.-algoritma-pemrograman-ii
 
Proses pembuatan account db, db , tabel dan password
Proses pembuatan account db, db , tabel dan passwordProses pembuatan account db, db , tabel dan password
Proses pembuatan account db, db , tabel dan password
 
Laporan akhir
Laporan akhirLaporan akhir
Laporan akhir
 
D3 mi modul_ppbd_maret2013
D3 mi modul_ppbd_maret2013D3 mi modul_ppbd_maret2013
D3 mi modul_ppbd_maret2013
 

Recently uploaded

INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdfINDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
NurSriWidyastuti1
 
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptxJuknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
mattaja008
 
Laporan Piket Guru untuk bukti dukung PMM.pdf
Laporan Piket Guru untuk bukti dukung PMM.pdfLaporan Piket Guru untuk bukti dukung PMM.pdf
Laporan Piket Guru untuk bukti dukung PMM.pdf
gloriosaesy
 
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdfMATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
ssuser289c2f1
 
tugas modul 1.4 Koneksi Antar Materi (1).pptx
tugas  modul 1.4 Koneksi Antar Materi (1).pptxtugas  modul 1.4 Koneksi Antar Materi (1).pptx
tugas modul 1.4 Koneksi Antar Materi (1).pptx
d2spdpnd9185
 
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrinPatofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
rohman85
 
Karakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
Karakteristik Manusia Komunikan dalam Bingkai Psikologi KomunikasiKarakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
Karakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
AdePutraTunggali
 
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdfPaparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
SEMUELSAMBOKARAENG
 
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Fathan Emran
 
untuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawasuntuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawas
TEDYHARTO1
 
ppt materi aliran aliran pendidikan pai 9
ppt materi aliran aliran pendidikan pai 9ppt materi aliran aliran pendidikan pai 9
ppt materi aliran aliran pendidikan pai 9
mohfedri24
 
Permainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaanPermainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaan
DEVI390643
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
Indah106914
 
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdfPENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
smp4prg
 
Bahan Sosialisasi PPDB_1 2024/2025 Bandung
Bahan Sosialisasi PPDB_1 2024/2025 BandungBahan Sosialisasi PPDB_1 2024/2025 Bandung
Bahan Sosialisasi PPDB_1 2024/2025 Bandung
Galang Adi Kuncoro
 
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
ozijaya
 
Koneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya PositifKoneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya Positif
Rima98947
 
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
agusmulyadi08
 
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptxSEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
bobobodo693
 
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptxKarier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
adolfnuhujanan101
 

Recently uploaded (20)

INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdfINDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
INDIKATOR KINERJA DAN FOKUS PERILAKU KS.pdf
 
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptxJuknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
Juknis Pengisian Blanko Ijazah 2024 29 04 2024 Top.pptx
 
Laporan Piket Guru untuk bukti dukung PMM.pdf
Laporan Piket Guru untuk bukti dukung PMM.pdfLaporan Piket Guru untuk bukti dukung PMM.pdf
Laporan Piket Guru untuk bukti dukung PMM.pdf
 
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdfMATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
MATERI SOSIALISASI PPDB JABAR- 4PAN052024.pdf
 
tugas modul 1.4 Koneksi Antar Materi (1).pptx
tugas  modul 1.4 Koneksi Antar Materi (1).pptxtugas  modul 1.4 Koneksi Antar Materi (1).pptx
tugas modul 1.4 Koneksi Antar Materi (1).pptx
 
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrinPatofisiologi Sistem Endokrin hormon pada sistem endokrin
Patofisiologi Sistem Endokrin hormon pada sistem endokrin
 
Karakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
Karakteristik Manusia Komunikan dalam Bingkai Psikologi KomunikasiKarakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
Karakteristik Manusia Komunikan dalam Bingkai Psikologi Komunikasi
 
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdfPaparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
Paparan Kurikulum Satuan Pendidikan_LOKAKARYA TPK 2024.pptx.pdf
 
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
 
untuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawasuntuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawas
 
ppt materi aliran aliran pendidikan pai 9
ppt materi aliran aliran pendidikan pai 9ppt materi aliran aliran pendidikan pai 9
ppt materi aliran aliran pendidikan pai 9
 
Permainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaanPermainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaan
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
 
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdfPENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
PENGUMUMAN PPDB SMPN 4 PONOROGO TAHUN 2024.pdf
 
Bahan Sosialisasi PPDB_1 2024/2025 Bandung
Bahan Sosialisasi PPDB_1 2024/2025 BandungBahan Sosialisasi PPDB_1 2024/2025 Bandung
Bahan Sosialisasi PPDB_1 2024/2025 Bandung
 
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
SOAL SBDP KELAS 3 SEMESTER GENAP TAHUN PELAJARAN 2023 2024
 
Koneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya PositifKoneksi Antar Materi modul 1.4 Budaya Positif
Koneksi Antar Materi modul 1.4 Budaya Positif
 
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
PI 2 - Ratna Haryanti, S. Pd..pptx Visi misi dan prakarsa perubahan pendidika...
 
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptxSEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
SEMINAR PPG DAN PPL ppg prajabatan 2024.pptx
 
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptxKarier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
Karier-Dan-Studi-Lanjut-Di-Bidang-Informatika.pptx
 

Pemrograman berorientasi-objek

  • 1. Pemrograman Berorientasi Objek Lanjut 1 MERANCANG DATABASE PARKIR KENDARAAN Sebagai tempat studi kasus dari aplikasi yang akan dibuat adalah parkir kendaraan. Dengan adanya aplikasi ini, diharapkan ketika kendaraan masuk maka petugas parkir dapat mencatat data kendaraan secara elektronis menggunakan computer, sehingga dapat memperkecil tingat pencurian dan dapat melakukan pengecekan data sewaktu-waktu data kendaraan dibutuhkan. Dari gambaran di atas, yang perlu anda buat adalah sebuah aplikasi yang dapat membantu untuk pencatatan setiap transaksi yang dilakukan, mulai dari data petugas, data kendaraan, data parkir kendaraan masuk dan parkir kendaraan keluar secara cepat. Mendeklarasikan Kasus dalam Bentuk Bahasa Model UML Pekerjaan membuat table akan selalu anda lakukan setelah proses analisis system selesai. Pada buku ini dibahas analisis awalnya dari pendeklarasian UML(Unifed Modeling Language), yaitu menggunakan Use Case Karena ini paling sering digunakan dan cocok untuk kasus tersebut. Selanjutnya akan dilakukan mapping ke tabel secara fisik. Gambar 1.1 Use Case Diagram Parkir Kendaraan
  • 2. Pemrograman Berorientasi Objek Lanjut 2 Pengendara sebagai pelaku pemarkir kendaraan akan melakukan registrasi data kendaraan masuk dan registrasi kendaraan keluar. Sedangkan petugas sebagai orang yang mengoperasikan aplikasi parkir kendaraan. Membuat Database dan Tabel Pada gambaran sebelumnya, sekarang anda perlu memikirkan seberapa besar database yang akan diperlukan. Dari hasil pemikiran tersebut anda akan mengira-ira berapa dan apa tabel yang akan digunaka sebagai media penyimpanan datanya. Membuat Database Dari analisis kami, untuk membuat aplikasi ini kita membutuhkan 3 tabel. Terdiri atas 2 tabel master dan 1 tabel transaksi. Ketiga tabe tersebut berada di dalam nama database dbparkir. C:Documents and Setting>mysql –uroot -p Enter Password:Masukkan Password anda Mysql> CREATE DATABASE dbparkir; Query OK, 1 row affected (0.00 sec) Selanjutnya, aktifkanlah database yang terbuat dengan perintah berikut: Mysql> USE dbparir; Database changed Pernyataan “Database changed” di atas menandakan anda sekarang telah aktif di dalam database dbparkir. Membuat Tabel tbljnskendaraan Tabel Jenis Kendaraan digunakan untuk merekam data semua jenis kendaraan. Dengan cara ini, kita dapat mengelompokkan jenis kendaraan.Berikut desain tabelnya. Tabel 1.1 Struktur Tabel tbljnskendaraan Kolom Tipe Data Panjang kodejenis * Char 2 jenis Varchar 40 tarif Char 10
  • 3. Pemrograman Berorientasi Objek Lanjut 3 Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut: mysql> create table tbljnsjendaraan( kodejenis char(2) not null primary key, jenis varchar(40), tarif char(10) ); Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tbljnskendaraan. Membuat Tabel tblpetugas Tabel Jenis Kendaraan digunakan untuk merekam data semua petugas. Dengan cara ini, kita dapat mengetahui petugas jaga parkir.Berikut desain tabelnya. Tabel 1.2 Struktur Tabel tblpetugas Kolom Tipe Data Panjang idpetugas * Char 4 nmpetugas Varchar 60 alamat Varchar 100 telp Varchar 15 Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut: mysql> create table tblpetugas( idpetugas char(4) not null primary key, nmpetugas varchar(60), alamat varchar(100), telp varchar(10) ); Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblpetugas. Membuat Tabel tblparkir Tabel Jenis Kendaraan digunakan untuk merekam data semua kendaraan yang parkir. Dengan cara ini, kita dapat mengetahui semua data kendaraan yang sedang parkir atau yang sudah keluar.Berikut desain tabelnya.
  • 4. Pemrograman Berorientasi Objek Lanjut 4 Tabel 1.3 Struktur Tabel tblparkir Kolom Tipe Data Panjang notiket * Char 10 tglparkir Varchar 40 Idpetugas ** Char 4 Noplat Varchar 10 kodejenis ** Char 2 jammasuk Varchar 20 jamkeluar Varchar 20 Bayar Char 10 Sisa Char 10 Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut: mysql> create table tblparkir( notiket char(10) not null primary key, tglparkir varchar(40), idpetugas char(4), noplat varchar(10), kodejenis char(2), jammasuk varchar(20), jamkeluar varchar(20), bayar char(10), sisa char(10) ); Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblparkir. Relasi Antar Tabel TblJnsKendaraan kodejenis<PK> jenis tarif TblPetugas idpetugas<PK> nmpetugas alamat telp TblParkir notiket<PK> tglparkir idpetugas<FK> noplat kodejenis<FK> jammasuk jamkeluar bayar sisa
  • 5. Pemrograman Berorientasi Objek Lanjut 5 Gambar 1.2 Hubungan Antar Tabel pada dbparkir Tanda (PK) menunjukkan kunci utama, sedangkan (FK) adalah kunci tamu dengan diwujudkan arah panahnya. Berikut bebarapa penjelasan relasi tabel tersebut.  Relasi antar tabel jenis kendaraan pada tabel parkir kendaraan Relasi dua tabel di atas memiliki hubungan one to many, artinya jenis kendaraan bisa digunakan lebih dari sekali.  Relasi antar tabel petugas pada tabel parkir kendaraan Relasi dua tabel di atas memiliki hubungan one to many, artinya petugas bisa digunakan lebih dari sekali. MEMBUAT APLIKASI PARKIR KENDARAAN Mulai dari bab ini kami akan membimbing anda untuk membuat proyek lengkap, yaitu dengan objek kasus pada parkir kendaraan. Pada aplikasi yang dibuat, akan terjadi proses transaksi parkir kendaraan masuk dan kendaraan keluar. Tentunya ada proses perhitungan pembayaran jasa parkir. Dalam bonus CD buku ini, juga telah disertakan hasil studi kasus dan komponen pendukung untuk pembuatan aplikasi yang dibahas pada bab ini. Anda bisa membaca bab ini sebagai penjelasan lengkap dan langkah pembuatannya. Dependency Dependency ata ketergantungan adalah sebuah syarat ketersediaan sebuah tool berupa modul terpisah maupun aplikasi lain agar bisa menjalankan aplikasi yang dimaksud. Dalam hal ini setidaknya anda harus memasang Netbeans 6.0.1. Tentunya untuk bisa memasangnya juga harus anda penuhi system requirement dari aplikasi tersebut. Untuk system operasi tentunya anda bisa menggunakan Windows/Linux. Dalam hal ini kami menggunakan Windows 7 untuk uji coba. Adapun tool yang lain, yang mesti anda pasang adalah sebagai berikut. Ketergantungan Mesin  Sistem Opersai Windows/Linux  Netbeans 6.0.1  Jasper Report 2.0.4  MySQL(AppServ2.10.3 boleh menggunakan versi lain)
  • 6. Pemrograman Berorientasi Objek Lanjut 6 Ketergantungan Module/com objek maupun resource lain  mysql-connector-java-5.1.6-bin untuk objek database yang siap dipakai  Birosoft look and feel dan looks.jar sebagai tambahan untuk sekadar menambahkan style atau tampilan saja(ini tidak wajib, sehingga tidak dibahas terlalu jauh agar tidak mengurangi focus buku ini). Persiapan Instalasi dan Folder Program Kami sarankan pembaca mengikuti langkah-langkah yang ada dalam buku ini agar tidak mengalami kesulitan/salah jalan. Kalau tidak mengikuti petunjuk ini, dikhawatirkan anda bisa tersesat sejauh-jauhnya. Catatan: Anda tidak harus mengikuti langkah-langkah instalasi jika sudah memiliki versi yang sama. Dalam buku tidak terlalu banyak memberikan hal-hal yang dasar, bukan keharusan tetapi sangat dianjurkan bagi anda membaca buku edisi sebelumnya. 1. Instal netbeans 6 nama file installer-nya netbeans-6.0.1-ml-javase-windows.exe. klik ganda kemudian lanjutkan dialognya sampai selesai. 2. Instal MySQL dan tool admin lewat Browser Client. Nama filenya appserv-win32- 2.5.10.exe. ikuti petunjuk dan jangan lupa untuk menyimpan nama password atau user- nya agar Anda bisa mengakses halaman admin. Jika sampai lupa, anda selamanya tidak bisa membuka database anda sendiri. 3. Siapkan folder khusus untuk membuat kode. Misalnya kami membuat folder D:Aplikasi Parkir Kendaraan. Membuat Koneksi Database.ini database.ini digunakan untuk menghubungkan database MySQL dengan JAVA, database.ini dibuat menggunakan Notepade. Berikut langkah membuat koneksi database.ini: 1. Buatlah folder dengan nama folder lib pada direktori D:Aplikasi Parkir KendaraanAplikasi Parkir Kendaraanlib. 2. Buatlah koneksi database.ini menggunakan notepade kemudian simapan dengan nama database.ini.
  • 7. Pemrograman Berorientasi Objek Lanjut 7 Gambar 1.3 Koneksi database.ini Membuat Project Berikut langkah membuat projek baru : 1. Bukalah editor Netbeans, lalu buat project beru melalui menu File –> New Project, sehingga muncul sebuah jendela New Project. 2. Pada kolom Categories pilih Java. Selanjutnya pada kolom projects pilih Java Desktop Application, kemudian tekan tombol Next untuk melanjutkan. Gambar 1.4 Jendela New Project 3. Isilah Project Name (sebagai nama proyek), Project Location (folder atau lokasi program), Application Class (nama file atau kelas), dan nama kelas utama seperti berikut ini.
  • 8. Pemrograman Berorientasi Objek Lanjut 8 Gambar 1.5 Penambahan File Project Dari gambar di atas, perhatikan isian Application Class yang terisi otomatis ketika anda memberikan nilai pada nama Project name: “Aplikasi Parkir Kendaraan”. Netbeans secara default menyiapkan paket bernama aplikasi parkir kendaraan dan kelas utama aplikasi parkir kendaraan.App. Berarti kita membuat kelas aplikasi parkir kendaraanApp berada dalam paket aplikasi parkir kendaraan. 4. Pada kolom Choose Application Shell pilih Basic Application, anda bisa menyesuaikan foldernya dengan computer anda. 5. Jiksa sudah, klik tombol Finish. Gambar 1.6 Tampilan Pertama Project Baru Secara default terdapat tiga kelas dalam paket aplikasi parkir kendaraan ini. Anda bisa melihat dalam jendela inspector, antara lain:
  • 9. Pemrograman Berorientasi Objek Lanjut 9  AplikasiParkirKendaraanApp.java sebagai kelas utama yang pertama kali dijalankan.  AplikasiParkirKendaraanAboutBox.java form info program atau tentang program.  AplikasiParkirKendaraanView.java menampilkan menu. 6. Langkah selanjutnya kita akan membuat Database.java dengan cara klik kanan New -> Java Class , kemudian masukkan kode program seperti dibawah ini. Gambar 1.7 Membuat Java Class File package aplikasiparkirkendaraan; import java.io.FileInputStream; import java.util.Properties; import javax.swing.JOptionPane; /** * * @author REVOLPER */ public class Database { public Properties mypanel, myLanguage; private String strNamePanel; public Database(){ } public String SettingPanel(String nmPanel){ try { mypanel = new Properties(); mypanel.load(new FileInputStream("lib/database.ini")); strNamePanel = mypanel.getProperty(nmPanel); } catch (Exception e) { JOptionPane.showMessageDialog(null,"Tidak ada koneksi","Error", JOptionPane.INFORMATION_MESSAGE); System.err.println(e.getMessage()); System.exit(0); } return strNamePanel; } }
  • 10. Pemrograman Berorientasi Objek Lanjut 10 Membuat Menu Utama Selanjutnya kita akan memperbaiki kelas AplikasiParkirKendaraanView agar menjadi sebuah menu utama yang bisa dipakai untuk aplikasi parkir kendaraan. Langkah pertama adalah menambahkan menu, yaitu: 1. Pilih menu File pada desain form kelas AplikasiParkirKendaraanView, klik kanan pilih Add Form Palette –> Menu item. Gambar 1.8 Penambahan Menu Baru 2. Sehingga muncul menu baru seperti pada gambar berikut. Gambar 1.9 Tampilan Menu Baru 3. Sekarang kita bisa memindahkan posisi menu baru itu dengan melakukan drag ke atas ataupun kebawah. Untuk melakukan perubahan teks menu, klik kanan pada menu dan pilih Edit Text. Selanjutnya masukkan judul menu yang anda inginkan, misalnya Data Jenis Kendaraan.
  • 11. Pemrograman Berorientasi Objek Lanjut 11 Gambar 1.10 Mengganti Text Menu Gambar 1.11 Tampilan Menu yang Sudah Di edit 4. Untuk mengubah nama variable objeknya, klik kanan menu item. Pilih Change Variabel Name…, kemudian ketikkan nama variabelnya. 5. Sekarang, tambahkan semua kebutuhan menu, sehingga menjadi gambar berikut.
  • 12. Pemrograman Berorientasi Objek Lanjut 12 Gambar 1.12 Submenu File Gambar 1.13 Submenu Transaksi Gambar 1.14 Submenu Report Gambar 1.15 Submenu Help
  • 13. Pemrograman Berorientasi Objek Lanjut 13 Gambar 1.16 Hierarki Semua Menu Utama Memasang File Jar(Setting Class Path) Memasang file jar ke dalam aplikasi adalah pekerjaan yang sangat penting, karena dengan begitu integritas dan fleksibilitas untuk pengembangan program sangat mudah. Mungkin anda pernah memahami bagaimana file dll dalam windows bekerja. Dengan adanya sebuah dll tertentu, bisa dipakai secara bersama-sama oleh aplikasi lain. Dalam aplikasi ini, kita akan memasang distribusi file sebagai komponen penghubung database. Buatlah susunan folder program dan setingan file jar yang sudah disiapkan: 1. Buatlah folder com pada folder D:Aplikasi Parkir KendaraanAplikasi Parkir Kendaraankemudian kopi file mysql-connector-java-5.1.6-bin. 2. Buatlah folder com pada direktori folder D:Aplikasi Parkir KendaraanAplikasi Parkir Kendaraansrc kemudian kopi folder BIROSOFT yang berguna sebagai skin/style program Gambar 1.17 Folder Program
  • 14. Pemrograman Berorientasi Objek Lanjut 14 Memasang Skin yang Terdapat Pada Folder BIROSOFT 1. Untuk memasang skin silahkan anda buka AplikasiParkirKendaraanApp.java 2. Masukkan Kode program seperti berikut: public static void main(String[] args) { try { launch(AplikasiParkirKendaraanApp.class,args); UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel"); } catch (ClassNotFoundException ex) { System.out.println(ex); } catch (InstantiationException ex) { System.out.println(ex); } catch (IllegalAccessException ex) { System.out.println(ex); } catch (UnsupportedLookAndFeelException ex) { System.out.println(ex); } } Catatan:pada saat anda mengetikkan perintah UIManager.setLookAndFeel(“….”) Akan tampil lambang lampu boklam silahkan anda klik kanan lampu boklam tersebut kemudian pilih Surround with try-catch. Memasang Driver MySQL Untuk bisa melakukan hubungan atau koneksi dengan database MySQL, Anda harus memasang driver-nya. Caranya adalah: 1. Dari jendela Project pilih Libraries kemudian klik kanan pilih Add JAR/Folder… kemudian klik Open. Gambar 1.18 Penentuan File Driver MySQL sendiri
  • 15. Pemrograman Berorientasi Objek Lanjut 15 Membuat Desain Form Data Jenis Kendaraan Sekarang saatnya membuat form data jenis kendaraan agar petugas dapat mengetahu dan menginput jenis kendaraan. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File. Gambar 1.19 Membuat Objek Baru 2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form. Gambar 1.20 Membuat Form JInternalFrame Form
  • 16. Pemrograman Berorientasi Objek Lanjut 16 3. Pada jendela New JInternalFrame Form, isikan Frmjnskendaraan pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri. Gambar 1.21 Menentukan Nama Form JInternalFrame Form Gambar 1.22 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
  • 17. Pemrograman Berorientasi Objek Lanjut 17 Gambar 1.23 Desain Form Data Jenis Kendaraan Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; 2. Pada bagian public class Frmjeniskendaraan extends javax.swing.JInternalFrame tambahkan kode berikut: public class Frmjeniskendaraan extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmjeniskendaraan */ public Frmjeniskendaraan() { initComponents(); //setting form agar pada saat di tampilkan berada pada posisi senter/tengah Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize(); jTextEdit JButton JTable JLabel
  • 18. Pemrograman Berorientasi Objek Lanjut 18 if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 6); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{90,400,90,}); setDefaultTable(); SetEditOff(); } 3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut: private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {}, new String [] {"Kode Jenis","Jenis Kendaraan","Tarif"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit[columnIndex];
  • 19. Pemrograman Berorientasi Objek Lanjut 19 } }; } String data[]=new String[3]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tbljnskendaraan"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini: int row = 0; public void Tampil(){ row = table.getSelectedRow(); KodeJenis.setText(tableModel.getValueAt(row, 0).toString()); Jenis.setText(tableModel.getValueAt(row, 1).toString()); Tarif.setText(tableModel.getValueAt(row, 2).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); SetEditOn(); }
  • 20. Pemrograman Berorientasi Objek Lanjut 20 5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ KodeJenis.setText(""); Jenis.setText(""); Tarif.setText(""); } public void SetEditOff(){ KodeJenis.setEnabled(false); Jenis.setEnabled(false); Tarif.setEnabled(false); } public void SetEditOn(){ KodeJenis.setEnabled(true); Jenis.setEnabled(true); Tarif.setEnabled(true); } 6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); KodeJenis.requestFocus(); Save.setEnabled(true); Update.setEnabled(false); Delete.setEnabled(false); SetEditOn(); } 7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed. private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String KJ=KodeJenis.getText(); String J=Jenis.getText(); String T=Tarif.getText(); if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty())) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else {
  • 21. Pemrograman Berorientasi Objek Lanjut 21 try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tbljnskendaraan values('"+KodeJenis.getText()+"',"+ "'"+Jenis.getText()+"',"+ "'"+Tarif.getText()+"')"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse -> MouseClicked. private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String KJ=KodeJenis.getText(); String J=Jenis.getText(); String T=Tarif.getText(); if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty())) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus();
  • 22. Pemrograman Berorientasi Objek Lanjut 22 }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tbljnskendaraan set jenis='"+Jenis.getText()+"',"+ "tarif='"+Tarif.getText()+"'"+ "Where kodejenis='"+KodeJenis.getText()+"'"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tbljnskendaraan where kodejenis='"+KodeJenis.getText()+"'"; stt.executeUpdate(SQL); data[0] = KodeJenis.getText(); data[1] = Jenis.getText(); data[2] = Tarif.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Delete.setEnabled(false); Update.setEnabled(false);
  • 23. Pemrograman Berorientasi Objek Lanjut 23 SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 11. Buatlah kode program validasi untuk kodejenis dengan cara klik kanan pada KodeJenis[jTextField] pilih evens -> Key -> KeyTyped. private void KodeJenisKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 2 digit if(KodeJenis.getText().length()>1) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 12. Buatlah kode program validasi angka pada tarif dengan cara klik kanan pada Tarif[jTextField] pilih evens -> Key -> KeyTyped. private void TarifKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE); this.dispose(); } 14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Jenis Kendaraan pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut:
  • 24. Pemrograman Berorientasi Objek Lanjut 24 Gambar 1.24 Perintah Evens sub Menu Data Jenis Kendaraan private void MenuKendaraanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan(); jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER); frmjeniskendaraan.show(); } 15. Jalankan Program kemudian klik menu Data Jenis Kendaraan maka akan tampil seperti berikut: Gambar 1.25 Tampilan Program Data Jenis Kendaraan
  • 25. Pemrograman Berorientasi Objek Lanjut 25 Membuat Desain Form Data Petugas Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 5. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File. Gambar 1.26 Membuat Objek Baru 6. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form. Gambar 1.27 Membuat Form JInternalFrame Form 7. Pada jendela New JInternalFrame Form, isikan Frmpetugas pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
  • 26. Pemrograman Berorientasi Objek Lanjut 26 Gambar 1.28 Menentukan Nama Form JInternalFrame Form Gambar 1.29 Desain Form Baru 8. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
  • 27. Pemrograman Berorientasi Objek Lanjut 27 Gambar 1.30 Desain Form Data Petugas Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; 2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode berikut: public class Frmpetugas extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmpetugas */ public Frmpetugas() { initComponents(); //setting form agar pada saat di tampilkan berada pada posisi senter/tengah Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); jTextEdit JButton JTable JLabel
  • 28. Pemrograman Berorientasi Objek Lanjut 28 Dimension frameSize=this.getSize(); if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 6); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{70,250,300,70}); setDefaultTable(); SetEditOff(); } 3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut: private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {}, new String [] {"ID Petugas","Nama Petugas","Alamat Petugas","Telpon"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){
  • 29. Pemrograman Berorientasi Objek Lanjut 29 return canEdit[columnIndex]; } }; } String data[]=new String[4]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tblpetugas"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); data[3] = res.getString(4); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini: int row = 0; public void Tampil(){ row = table.getSelectedRow(); IDPetugas.setText(tableModel.getValueAt(row, 0).toString()); NMPetugas.setText(tableModel.getValueAt(row, 1).toString()); Alamat.setText(tableModel.getValueAt(row, 2).toString()); Telp.setText(tableModel.getValueAt(row, 3).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); SetEditOn(); } 5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong seperti berikut ini:
  • 30. Pemrograman Berorientasi Objek Lanjut 30 public void BersihData(){ IDPetugas.setText(""); NMPetugas.setText(""); Alamat.setText(""); Telp.setText(""); } public void SetEditOff(){ IDPetugas.setEnabled(false); NMPetugas.setEnabled(false); Alamat.setEnabled(false); Telp.setEnabled(false); } public void SetEditOn(){ IDPetugas.setEnabled(true); NMPetugas.setEnabled(true); Alamat.setEnabled(true); Telp.setEnabled(true); } 6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); IDPetugas.requestFocus(); Save.setEnabled(true); Update.setEnabled(false); Delete.setEnabled(false); SetEditOn(); } 7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed. private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String IP=IDPetugas.getText(); String NP=NMPetugas.getText(); String A=Alamat.getText(); String T=Telp.getText(); if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); IDPetugas.requestFocus();
  • 31. Pemrograman Berorientasi Objek Lanjut 31 }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tblpetugas values('"+IDPetugas.getText()+"',"+ "'"+NMPetugas.getText()+"',"+ "'"+Alamat.getText()+"',"+ "'"+Telp.getText()+"')"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText(); data[3] = Telp.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse -> MouseClicked. private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String IP=IDPetugas.getText(); String NP=NMPetugas.getText(); String A=Alamat.getText();
  • 32. Pemrograman Berorientasi Objek Lanjut 32 String T=Telp.getText(); if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); IDPetugas.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblpetugas set nmpetugas='"+NMPetugas.getText()+"',"+ "alamat='"+Alamat.getText()+"',"+ "telp='"+Telp.getText()+"'"+ "Where idpetugas='"+IDPetugas.getText()+"'"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText(); data[3] = Telp.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tblpetugas where idpetugas='"+IDPetugas.getText()+"'"; stt.executeUpdate(SQL); data[0] = IDPetugas.getText(); data[1] = NMPetugas.getText(); data[2] = Alamat.getText();
  • 33. Pemrograman Berorientasi Objek Lanjut 33 data[3] = Telp.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Delete.setEnabled(false); Update.setEnabled(false); SetEditOff(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 11. Buatlah kode program validasi untuk idpetugas dengan cara klik kanan pada IDPetugas[jTextField] pilih evens -> Key -> KeyTyped. private void IDPetugasKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 4 digit if(IDPetugas.getText().length()>3) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 12. Buatlah kode program validasi angka pada telpon dengan cara klik kanan pada Telp[jTextField] pilih evens -> Key -> KeyTyped. private void TelpKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 15 digit if(Telp.getText().length()>14) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE);
  • 34. Pemrograman Berorientasi Objek Lanjut 34 this.dispose(); } 14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Petugas pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut: Gambar 1.31 Perintah Evens sub Menu Data Petugas private void MenuPetugasActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmpetugas frmpetugas=new Frmpetugas(); jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER); frmpetugas.show(); } 15. Jalankan Program kemudian klik menu Data Petugas maka akan tampil seperti berikut: Gambar 1.32 Tampilan Program Data Petugas
  • 35. Pemrograman Berorientasi Objek Lanjut 35 Membuat Desain Form Data Parkir Kendaraan Masuk Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 9. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File. Gambar 1.33 Membuat Objek Baru 10. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form. Gambar 1.34 Membuat Form JInternalFrame Form
  • 36. Pemrograman Berorientasi Objek Lanjut 36 11. Pada jendela New JInternalFrame Form, isikan Frmparkirmasuk pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri. Gambar 1.35 Menentukan Nama Form JInternalFrame Form Gambar 1.36 Desain Form Baru 12. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
  • 37. Pemrograman Berorientasi Objek Lanjut 37 Gambar 1.37 Desain Form Data Parkir Kendaraan Masuk Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Date; 2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode berikut: public class Frmparkirmasuk extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmparkirmasuk */ jTextEdit JButton JTable JLabel jTextEdit
  • 38. Pemrograman Berorientasi Objek Lanjut 38 public Frmparkirmasuk() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = this.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 14); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); table.setModel(tableModel); Tabel(table, new int[]{70, 90, 70, 70, 70, 70, 70, 70, 70, 70, 70}); setDefaultTable(); TampilComboPetugas(); TampilComboKendaraan(); } 3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut: private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel(); private void Tabel(javax.swing.JTable tb, int lebar[] ) { tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); int kolom=tb.getColumnCount(); for(int i=0;i < kolom;i++) { javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i); tbc.setPreferredWidth(lebar[i]); tb.setRowHeight(17); } } private javax.swing.table.DefaultTableModel getDefaultTabelModel() { return new javax.swing.table.DefaultTableModel( new Object[][] {},
  • 39. Pemrograman Berorientasi Objek Lanjut 39 new String [] {"No.Tiket","Tanggal","ID Petugas","Nomor Plat","Kode Jenis","Jam Masuk","Jam Keluar","Bayar","Sisa"} ){ boolean[] canEdit = new boolean[]{ false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit[columnIndex]; } }; } String data[]=new String[9]; private void setDefaultTable() { String stat =""; try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "SELECT * FROM tblparkir"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ data[0] = res.getString(1); data[1] = res.getString(2); data[2] = res.getString(3); data[3] = res.getString(4); data[4] = res.getString(5); data[5] = res.getString(6); data[6] = res.getString(7); data[7] = res.getString(8); data[8] = res.getString(9); tableModel.addRow(data); } res.close(); stt.close(); kon.close(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 4. Buatlah kode program TampilComboKendaraan, letakkan disembarang tempat yang memiliki space kosong, seperti berikut ini : public void TampilComboKendaraan(){
  • 40. Pemrograman Berorientasi Objek Lanjut 40 try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tbljnskendaraan"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ KodeJenis.addItem(res.getString("kodejenis")); } } catch (SQLException ex) { } } 5. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item -> ItemStateCanged. private void KodeJenisItemStateChanged(java.awt.event.ItemEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tbljnskendaraan where kodejenis='"+ KodeJenis.getSelectedItem().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); Jenis.setText(res.getString("jenis")); Tarif.setText(res.getString("tarif")); } catch (SQLException ex) { } } 6. Buatlah kode program TampilComboPetugas, letakkan disembarang tempat yang memiliki space kosong, seperti berikut ini : public void TampilComboPetugas(){ try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblpetugas"; ResultSet res = stt.executeQuery(SQL); while(res.next()){ IDPetugas.addItem(res.getString("idpetugas")); } } catch (SQLException ex) {
  • 41. Pemrograman Berorientasi Objek Lanjut 41 } } 7. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item -> ItemStateCanged. private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblpetugas where idpetugas='"+ IDPetugas.getSelectedItem().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); NMPetugas.setText(res.getString("nmpetugas")); } catch (SQLException ex) { } } 8. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan disembarang tempat yang memiliki space kosong seperti berikut ini: int row = 0; public void Tampil(){ row = table.getSelectedRow(); NoTiket.setText(tableModel.getValueAt(row, 0).toString()); TglParkir.setText(tableModel.getValueAt(row, 1).toString()); IDPetugas.setSelectedItem(tableModel.getValueAt(row, 2).toString()); NoPlat.setText(tableModel.getValueAt(row, 3).toString()); KodeJenis.setSelectedItem(tableModel.getValueAt(row, 4).toString()); JamMasuk.setText(tableModel.getValueAt(row, 5).toString()); JamKeluar.setText(tableModel.getValueAt(row, 6).toString()); Bayar.setText(tableModel.getValueAt(row, 7).toString()); Sisa.setText(tableModel.getValueAt(row, 8).toString()); Save.setEnabled(false); Update.setEnabled(true); Delete.setEnabled(true); } 9. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ TglParkir.setText("");
  • 42. Pemrograman Berorientasi Objek Lanjut 42 NoTiket.setText(""); NoPlat.setText(""); KodeJenis.setSelectedIndex(0); Jenis.setText(""); Tarif.setText(""); JamMasuk.setText(""); JamKeluar.setText(""); Bayar.setText(""); Sisa.setText(""); } 10. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); TanggalOtomatis(); IDPetugas.requestFocus(); Save.setEnabled(true); } 11. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed. private void SaveActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String TGP=TglParkir.getText(); String IDP=IDPetugas.getSelectedItem().toString(); String NP=NoPlat.getText(); String KJ=KodeJenis.getSelectedItem().toString(); String JM=JamMasuk.getText(); if ((NT.isEmpty()) | (TGP.isEmpty()) |(IDP.isEmpty())|(NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty())))) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "insert into tblparkir values('"+NoTiket.getText()+"',"+ "'"+TglParkir.getText()+"',"+
  • 43. Pemrograman Berorientasi Objek Lanjut 43 "'"+IDPetugas.getSelectedItem()+"',"+ "'"+NoPlat.getText()+"',"+ "'"+KodeJenis.getSelectedItem()+"',"+ "'"+JamMasuk.getText()+"',"+ "'"+JamKeluar.getText()+"',"+ "'"+Bayar.getText()+"',"+ "'"+Sisa.getText()+"')"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.insertRow(0, data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 12. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse -> MouseClicked. private void tableMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: if (evt.getClickCount()==1) { Tampil(); } } 13. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String TGP=TglParkir.getText(); String IDP=IDPetugas.getSelectedItem().toString();
  • 44. Pemrograman Berorientasi Objek Lanjut 44 String NP=NoPlat.getText(); String KJ=KodeJenis.getSelectedItem().toString(); String JM=JamMasuk.getText(); if ((NT.isEmpty()) | (TGP.isEmpty())|(IDP.isEmpty()) | (NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty())))) {JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+ "idpetugas='"+IDPetugas.getSelectedItem()+"',"+ "noplat='"+NoPlat.getText()+"',"+ "kodejenis='"+KodeJenis.getSelectedItem()+"',"+ "jammasuk='"+JamMasuk.getText()+"',"+ "jamkeluar='"+JamKeluar.getText()+"',"+ "bayar='"+Bayar.getText()+"',"+ "sisa='"+Sisa.getText()+"'"+ "Where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.removeRow(row); tableModel.insertRow(row,data); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } }
  • 45. Pemrograman Berorientasi Objek Lanjut 45 14. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action -> ActionPerformed. private void DeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "delete from tblparkir where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); data[0] = NoTiket.getText(); data[1] = TglParkir.getText(); data[2] = IDPetugas.getSelectedItem().toString(); data[3] = NoPlat.getText(); data[4] = KodeJenis.getSelectedItem().toString(); data[5] = JamMasuk.getText(); data[6] = JamKeluar.getText(); data[7] = Bayar.getText(); data[8] = Sisa.getText(); tableModel.removeRow(row); stt.close(); kon.close(); BersihData(); Save.setEnabled(false); } catch (Exception ex) { System.err.println(ex.getMessage()); } } 15. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens -> Key -> KeyTyped. private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 2 digit if(NoTiket.getText().length()>9) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 16. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih evens -> Key -> KeyTyped.
  • 46. Pemrograman Berorientasi Objek Lanjut 46 private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoPlat.getText().length()>9) evt.consume(); } 17. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE); this.dispose(); } 18. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki space kosong seperti berikut : public void TanggalOtomatis(){ Date tanggal = new Date(); JamMasuk.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal))); TglParkir.setText(""+ (String.format("%1$td:%1$tb:%1$tY",tanggal))); } 19. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Parkir Kendaraan Masuk pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut: Gambar 1.38 Perintah Evens sub Menu Data Parkir Kendaraan Masuk
  • 47. Pemrograman Berorientasi Objek Lanjut 47 private void MenuParkirINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show(); } 20. Jalankan Program kemudian klik menu Data Parkir Kendaraan Masuk maka akan tampil seperti berikut: Gambar 1.39 Tampilan Program Data Parkir Kendaraan Masuk Membuat Desain Form Data Parkir Kendaraan Keluar Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
  • 48. Pemrograman Berorientasi Objek Lanjut 48 Gambar 1.40 Membuat Objek Baru 2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form. Gambar 1.41 Membuat Form JInternalFrame Form 3. Pada jendela New JInternalFrame Form, isikan Frmparkirkeluar pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
  • 49. Pemrograman Berorientasi Objek Lanjut 49 Gambar 1.42 Menentukan Nama Form JInternalFrame Form Gambar 1.43 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
  • 50. Pemrograman Berorientasi Objek Lanjut 50 Gambar 1.44 Desain Form Data Parkir Kendaraan Keluar Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Date; 2. Pada bagian public class Frmparkirkeluar extends javax.swing.JInternalFrame tambahkan kode berikut: public class Frmparkirkeluar extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form Frmparkirkeluar */ public Frmparkirkeluar() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize(); jTextEdit JButton jTextEdit JLabel jButton
  • 51. Pemrograman Berorientasi Objek Lanjut 51 if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 14); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); NoPlat.setEnabled(false); NoTiket.setEnabled(false); } 3. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini: public void BersihData(){ TglParkir.setText(""); NoTiket.setText(""); IDPetugas.setText(""); NMPetugas.setText(""); NoPlat.setText(""); KodeJenis.setText(""); Jenis.setText(""); Tarif.setText(""); JamMasuk.setText(""); JamKeluar.setText(""); Bayar.setText(""); Sisa.setText(""); } 4. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void AddNewActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: BersihData(); NoTiket.requestFocus(); Update.setEnabled(true); NoPlat.setEnabled(true); NoTiket.setEnabled(true); }
  • 52. Pemrograman Berorientasi Objek Lanjut 52 5. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action -> ActionPerformed. private void UpdateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String NT=NoTiket.getText(); String NP=NoPlat.getText(); String JK=JamKeluar.getText(); String BYR=Bayar.getText(); if ((NT.isEmpty())|(NP.isEmpty()|(JK.isEmpty()|(BYR.isEmpty())))) { JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi"); KodeJenis.requestFocus(); }else { try { Class.forName(driver); Connection kon = DriverManager.getConnection(database,user,pass); Statement stt = kon.createStatement(); String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+ "idpetugas='"+IDPetugas.getText()+"',"+ "noplat='"+NoPlat.getText()+"',"+ "kodejenis='"+KodeJenis.getText()+"',"+ "jammasuk='"+JamMasuk.getText()+"',"+ "jamkeluar='"+JamKeluar.getText()+"',"+ "bayar='"+Bayar.getText()+"',"+ "sisa='"+Sisa.getText()+"'"+ "Where notiket='"+NoTiket.getText()+"'"; stt.executeUpdate(SQL); stt.close(); kon.close(); BersihData(); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } 6. Buatlah kode program padat jtextfield NoPolat klik kanan pilih events -> charet -> charetUpdate private void NoPlatCaretUpdate(javax.swing.event.CaretEvent evt) { // TODO add your handling code here: try { Connection kon = DriverManager.getConnection(database,user,pass);
  • 53. Pemrograman Berorientasi Objek Lanjut 53 Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String SQL = "SELECT * FROM tblparkir where noplat='"+ NoPlat.getText().toString()+"'"+ "and notiket='"+NoTiket.getText().toString()+"'"; ResultSet res = stt.executeQuery(SQL); res.absolute(1); TglParkir.setText(res.getString("tglparkir")); IDPetugas.setText(res.getString("idpetugas")); KodeJenis.setText(res.getString("kodejenis")); JamMasuk.setText(res.getString("jammasuk")); JamKeluar.setText(res.getString("jamkeluar")); Bayar.setText(res.getString("bayar")); Sisa.setText(res.getString("sisa")); } catch (SQLException ex) { } } 7. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens -> Key -> KeyTyped. private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoTiket.getText().length()>9) evt.consume(); //hanya bisa diinput dengan angka saja char c =evt.getKeyChar(); if(!Character.isDigit(c)) evt.consume(); } 8. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih evens -> Key -> KeyTyped. private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: // Hanya bisa diinput 10 digit if(NoPlat.getText().length()>9) evt.consume(); } 9. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi", JOptionPane.INFORMATION_MESSAGE);
  • 54. Pemrograman Berorientasi Objek Lanjut 54 this.dispose(); } 10. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki space kosong seperti berikut : public void TanggalOtomatis(){ Date tanggal = new Date(); JamKeluar.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal))); } 11. Buatlah kode program AddNew1 dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed private void AddNew1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: TanggalOtomatis(); } 12. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub menu Data Parkir Kendaraan Keluar pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti berikut: Gambar 1.45 Perintah Evens sub Menu Data Parkir Kendaraan Keluar private void MenuParkirOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); }
  • 55. Pemrograman Berorientasi Objek Lanjut 55 13. Jalankan Program kemudian klik menu Data Parkir Kendaraan Keluar maka akan tampil seperti berikut: Gambar 1.46 Tampilan Program Data Parkir Kendaraan Keluar Membuat ToolBar Pada Menu Utama ToolBar adalah tombol berbentuk ikon atau yang dikenal dengan speed button atau Short Cut yang biasanya terletak di bawah menu utama. Tombol ini bisa langsung membawa pengguna ke jendela tertentu hanya dengan sekali klik saja. Sehingga tombol ini hampir pasti ada di setiap aplikasi. Untuk membuta, masuk dalam form aplikasiparkirkendaraanView dan lakukan langkah-langkah berikut : 1. Tambahkan JToolBar pada container mainPanel, perhatikan petunjuk berikut.
  • 56. Pemrograman Berorientasi Objek Lanjut 56 Gambar 1.47 Menambah ToolBar Gambar 1.48 Menambah Tombo pada ToolBar 2. Selanjutnya tambahkan JBUtton pada ToolBar (lihat gambar dibawah). Untuk menampilkan ikon, ubah propertis ikon (klik pada tombol ). Gambar 1.49 Memilih Icon Anda bisa mengambil ikon dealm paket/folder yang sudah anda siapkan sebelumnya. Sebagai contoh, sebelumnya telah memasukkan file-file gambar dalam folder icon, file-file icon tersebut bisa dipakai. Tentunya bisa membuat sendiri gambar-gambar ikon yang lebih menarik dan cocok. Pilih define as a Resource (menjadikan sebagai file dalam resource) tidak perlu dipih. Tekan tombol OK pada jendela icon.
  • 57. Pemrograman Berorientasi Objek Lanjut 57 Hapus properti Text pada JButton tersebut, berikan variable namanya SubMenuJenisKendaraan. 3. Berikan event klik pada jenis kendaraan dengan cara klik kanan, lalu pilih SubMenuJenisKendaraan -> Events -> Action -> actionPerformed. Selanjutnya masukkan perintah berikut: private void SubMenuJenisKendaraanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan(); jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER); frmjeniskendaraan.show(); } Gambar 1.50 Tombol pada ToolBar 4. Lakukan hal yang sama untuk membuat tombol Petugas,Kendaraan Parkir Masuk, Kendaraan Parkir Keluar, dan Report. Sehingga toolbar menjadi seperti gambar di atas. 5. Berikut event pada tombol Petugas: private void SubMenuPetugasActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmpetugas frmpetugas=new Frmpetugas(); jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER); frmpetugas.show(); } 6. Berikut event pada tombol Parkir Kendaraan Masuk: private void SubMenuParkirKendaraanINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show(); } 7. Berkut event pada tombol Parkir Kendaraan Keluar:
  • 58. Pemrograman Berorientasi Objek Lanjut 58 private void SubMenuParkirKendaraanOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); } 8. Berikut event pada tombol Report: private void SubMenuReportActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: FrmReport frmReport=new FrmReport(); jDesktopPane1.add(frmReport, javax.swing.JLayeredPane.DEFAULT_LAYER); frmReport.show(); } Sampai saat ini pembuatan aplikasi bisa dikatakan selesai. MEMBUAT LAPORAN Jika program aplikasi sudah selesai dibuat, kini giliran kita membuat halaman laporan dari semua data yang ada. Berikut selengkapnya. Mengenal JasperReport JasperReport adalah sebuah tool yang sangat powerfull untuk membuat laporan dalam bentuk PDF,HTML,XLS,RTF,ODT,CSV,TXT dan XML. Dengan kemampuan dan fleksibilitasnya yang sangat tinggi, anda bisa membuat berbagai laporan berbentuk Chart, Crosstabs, Subreport, dan kemampuan lain yang anda butuhkan. Komponen yang Digunakan Untuk Membuat Report : Silahkan klik kanan Libraries pilih Add JAR/Folder maka akan tampil seperti berikut:
  • 59. Pemrograman Berorientasi Objek Lanjut 59 Gambar 1.51 direktory Add JAR/Folder Adapun file-file Jasper Report Engine yang harus dipilih adalah sebagai berikut: Jasperreport-2.0.5.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-beanutils-1.7.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-collections-2.1.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-digester-1.7.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-logging-1.0.2.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-logging-api-1.0.2.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Commons-javaflow-20060411.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Jdt-compiler-3.1.1.jar pada direktori d:Aplikasi Parkir Kendaraanaplikasiparkirkendaraanlib Setelah anda mengambil semua file yang dibutuhkan seperti diatas maka langkah selanjutnya anda harus melakukan pengidentifikasian berkas jrxml pada NetBeans dengan cara berikut:  Buka menu tools -> Options, sehingga muncul jendela Options. Pada jendela tersebut klik Advanced Option, sehingga muncul jendela Advanced Options.
  • 60. Pemrograman Berorientasi Objek Lanjut 60  Dalam jendela Advanced Options, perhatikan sebelah kiri, pilih pada node IDE Configuration -> System -> Object Types -> XML Objects.  Masih pada jendela Advanced Options, lihat jendela bagian kanan. Ada properti Extensions anda MIME Types, tekan pada tombol… yang ada di sampingnya, sehingga muncul jendela XML Object – Extensions and MIME Types. Pada kotak isian item, masukkan jrxml, kemudian tean Add, sehingga jrxml tersebut masuk dalam daftar item List, lalu klik tombol OK. Dan tutup jendela-jendela Options tersebut. Gambar 1.52 Berkas yang Dikenali Editor NetBeans Mengenal IReports IReport adalah sebuah tool yang digunakan untuk membuat desain laporan pada JasperReports. Artinya, dengan fasilitas ini anda bisa membuat report dengan drag and drop, bahkan secara otomatis (wizard). Sama dengan JasperReports, program ini lagi-lagi open source. Pembuat program ini adalah Giulio Toffoli pada tahun 2005. Anda bisa mendapatkan informasi dan distribusi filenya pada alamat http://ireport.sourceforget.net. Instalasi IReport dan Konfigurasi Databasenya Untuk menginstal IReport sebelumnya anda harus mempunya file install JasperReport, jika sudah ada silahkan klik ganda file IReport-nb-0.9.1-windows-installer.exe. ini adalah distribusi yang mendukung NetBeans. Jadi, sangat memudahkan pengguna NetBeans.
  • 61. Pemrograman Berorientasi Objek Lanjut 61 Gambar 1.53 Jendela Permulaan Pemasangan IReport Gambar 1.54 Jendela Lisensi IReport
  • 62. Pemrograman Berorientasi Objek Lanjut 62 Gambar 1.55 Jendela Pemilihan Feature IReport Gambar 1.56 Jendela Lokasi Program File IReport Silahkan anda lanjutkan dengan mengklik tombol Next dan ikuti semua dialognya sampai selesai. Jalankan program iReport dengan cara masuk ke dalam Start menu Windows. Pilih JasperSoft - > iReport-nb-0.9.1 -> iReport-nb-0.9.1, sehingga muncul jendela pembuka seperti pada gambar berkut diikuti dengan halaman utama
  • 63. Pemrograman Berorientasi Objek Lanjut 63 Gambar 1.57 Jendela Splash Screen IReport Gambar 1.58 Tampilan IReport Setelah tampil jendela menu iReport anda harus memanggil koneksi mysql-connector-java- 5.1.6-bin dengan cara klik Tools -> Options -> classpath klik tombol Add JAR silahkan anda ambil komponen mysql-connector-java-5.1.6-bin seperti gambar berikut:
  • 64. Pemrograman Berorientasi Objek Lanjut 64 Gambar 1.59 Tampilan Add JAR/Path to the classpath Gambar 1.60 Tampilan Komponen yang sudah dipanggil Gambar di atas adalah jendela iReport pertama kali. Sebelum membuat laporan, buatlah dulu sebuah koneksi agar bisa membuka database anda. Dengan cara: pilih menu Tool -> Report Datasource, sehingga muncul jendela seperti gambar berkut.
  • 65. Pemrograman Berorientasi Objek Lanjut 65 Gambar 1.61 Jendela Daftar Konfigurasi Koneksi Selanjutnya tekan tombol New pada sebelah kanan, sehingga muncul jendela seperti gambar berikut. Gambar 1.62 Pemilihan JDBC Selanjutnya, pilih Database JDBC dan klik tombol Next, Sehingga muncul jendela seperti pada gambar berikut.
  • 66. Pemrograman Berorientasi Objek Lanjut 66 Gambar 1.63 Pengisian Konfigurasi Database Untuk memastikan hasil dari koneksi database yang sudah dibuat klik tombol Test jika benar maka akan tampil seperti gambar dibawah: Gambar 1.64 Testing Koneksi Database
  • 67. Pemrograman Berorientasi Objek Lanjut 67 Membuat Laporan Setelah anda selesai membuat koneksi database langkah selanjutnya silahkan anda membuat laporan seperti berikut 1. Klik File -> Report Wizard maka akan tampil seperti gambar dibawah : Gambar 1.65 Tampilan New Report 2. Ubahlah Report Name dan Location untuk menentukan dimana anda akan meletakkan laporan. 3. Kemudian Klik tombol Next untuk melanjutkan perintah seperti gambar dibawah: Gambar 1.66 Tampilan New Report steps 2
  • 68. Pemrograman Berorientasi Objek Lanjut 68 4. Ubahlah Connection / Data Source sesuai dengan koneksi yang anda buat , kemudian silahkan anda is Query seperti gambar dibawah ini: Gambar 1.67 Tampilan Query 5. Klik tombol Next maka akan tampil seperti gambar dibawah ini: Gambar 1.68 Tampilan Hasil Query
  • 69. Pemrograman Berorientasi Objek Lanjut 69 6. Klik tombol Next seperti Gambar dibawah : Gambar 1.69 Tampilan Hasil Query 7. Klik tombo Next dan silahkan anda isi Group1 dengan notiket dan Group2 dengan noplat seperti gambar dibawah : Gambar 1.70 Tampilan Group Report 8. Klik tombol Next maka akan tampil pilihan Layout/jenis report yang anda inginkan seperti gambar dibawah ini:
  • 70. Pemrograman Berorientasi Objek Lanjut 70 Gambar 1.71 Tampilan Layout Report Gambar 1.72 Tampilan Report 9. Untuk melihat hasil tekan Preview maka akan tampil seperti gambar dibawah ini:
  • 71. Pemrograman Berorientasi Objek Lanjut 71 Gambar 1.73 Tampilan Report Preview 10. Setelah selesai membuat report yang pertama silahkan anda membuat report kedua, untuk report yang kedua kita tidak menggunakan report wizard tetapi kita akan coba membuat report secara manual. 11. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini: Gambar 1.74 Tampilan New Report 12. Isilah Report Name dan Location sama seperti anda membuat report yang pertama kemudian klik tombol Next maka akan tampil seperti gambar dibawah ini:
  • 72. Pemrograman Berorientasi Objek Lanjut 72 Gambar 1.75 Tampilan New Report Kosong 13. Kemudian setelah tampil report kosong tekan icon sebelah Preview kemudian isikan Query seperti gambar dibawah ini: Gambar 1.76 Tampilan Query
  • 73. Pemrograman Berorientasi Objek Lanjut 73 14. Setelah selesal silahkan anda masuk ke Report Inspector kemudian anda pilih Parameter klik kanan pilih Add Parameter setelah terbentuk Parameter1 silahkan anda ubah dengan cara meRename kemudian anda ubah menjadi NoTiket setelah selesai anda mengubah nama parameter silahkan anda anda pilih Propertis pilih Default Value Expression kemudian anda isikan angka sesua dengan notiket yang sudah anda simpan kedatabase. Kemudian silahkan anda disain seperti gambar dibawah ini: Gambar 1.77 Tampilan Report 15. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini: Gambar 1.78 Tampilan Report Preview
  • 74. Pemrograman Berorientasi Objek Lanjut 74 Membuat Desain Form Report Sekarang saatnya membuat form report untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini: 1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File. Gambar 1.74 Membuat Objek Baru 2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form. Gambar 1.75 Membuat Form JInternalFrame Form 3. Pada jendela New JInternalFrame Form, isikan Frmreport pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
  • 75. Pemrograman Berorientasi Objek Lanjut 75 Gambar 1.76 Menentukan Nama Form JInternalFrame Form Gambar 1.77 Desain Form Baru 4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
  • 76. Pemrograman Berorientasi Objek Lanjut 76 Gambar 1.78 Desain Form Data Report Syntax Program 1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut: package aplikasiparkirkendaraan; import java.util.HashMap; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.JOptionPane; jButton jButtonJLabel jButton
  • 77. Pemrograman Berorientasi Objek Lanjut 77 2. Pada bagian public class FrmReport extends javax.swing.JInternalFrame tambahkan kode berikut: public class FrmReport extends javax.swing.JInternalFrame { Database dbsetting; String driver,database,user,pass,userLogin; private Object tabel; /** Creates new form FrmReport */ public FrmReport() { initComponents(); // Setting untuk mengatur posisi form Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=this.getSize(); if(frameSize.height > screenSize.height){ frameSize.height=screenSize.height; } if(frameSize.width > screenSize.width){ frameSize.width=screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height = screenSize.height) / 8); //setting untuk memanggil koneksi Database.ini dbsetting = new Database(); driver = dbsetting.SettingPanel("DBDriver"); database = dbsetting.SettingPanel("DBDatabase"); user = dbsetting.SettingPanel("DBUsername"); pass = dbsetting.SettingPanel("DBPassword"); } 3. Buatlah kode program CetakALL dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CetakALLActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ String NamaFile="src/report/RptParkirAll.jasper"; HashMap parameter = new HashMap(); Class.forName(driver); Connection con = DriverManager.getConnection(database,user,pass); File reportfile = new File(NamaFile); JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath()); JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con); JasperViewer.viewReport(jasperPrint,false);
  • 78. Pemrograman Berorientasi Objek Lanjut 78 JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !", "Cetak Data",JOptionPane.ERROR_MESSAGE); } } 4. Buatlah kode program CetakKode dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CetakKodeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ String NamaFile="src/report/RptParkirPerkode.jasper"; HashMap parameter = new HashMap(); parameter.put("NoTiket",NoTiket.getText()); Class.forName(driver); Connection con = DriverManager.getConnection(database,user,pass); File reportfile = new File(NamaFile); JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath()); JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con); JasperViewer.viewReport(jasperPrint,false); JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !", "Cetak Data",JOptionPane.ERROR_MESSAGE); } } 5. Buatlah kode program Close dengan mengklik kanan button AddNew ->evens -> action -> ActionPerformed. private void CloseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.dispose(); }