Document

advertisement
52
BAB 4
IMPLEMENTASI DAN PEMBAHASAN PROGRAM
4.1
Implementasi Sistem
Implementasi sistem merupakan tahap dari penerapan sistem dengan
tujuan agar sistem siap untuk dioperasikan. Pada tahapan ini, Sistem Monitoring
Biaya Parkir dibangun berbasis Java ,di mana pemasukan data dilakukan
dengan menggunakan pemrograman jdk-1.5. Hal ini dilakukan berdasarkan
analisa dan desain yang merupakan langkah awal sebelum pembentukan suatu
sistem dilaksanakan pada bab 3.
Penulisan
program
yang
sesuai
dengan
desain
tentunya
akan
menghasilkan program aplikasi yang sesuai dengan kebutuhan pemakai (user).
Untuk itu program harus ditulis dengan bahasa pemrograman yang sesuai
dengan permasalahan yang ditangani.
4.2
Spesifikasi Program
Aplikasi “Sistem Monitoring Biaya Parkir Di Hotel Quality Berbasis Jaringan
Menggunakan Java”
terdiri dari induk utama yaitu org.admin
yang
dikembangkan secara terintegrasi dan terdiri dari class-class sebagai berikut :
1.
DbConfig.java, berisi program untuk konfigurasi awal database
dengan
melakukan koneksi antara driver JDBC dengan Java.
2.
DataModelParkir.java, berfungsi untuk membuat model data parkir dimana
tiap record database parkir dirincikan satu-satu kedalam bahasa Java.
53
3.
DataModelPetugas.java, berfungsi
untuk membuat model data petugas
dimana tiap record dari database petugas dirincikan satu-satu kedalam
bahasa Java.
4.
GrafikJenisKendaraan.java, berfungsi untuk mebuat panel grafik jenis
kendaraan.
5.
LaporanKendaraan.java, berfungsi untuk membuat panel laporan parkir
harian kendaraan berdasarkan jenis kendaraan..
6.
LaporanParkirHarian.java, berfungsi untuk membuat panel laporan parkir
harian kendaraan keseluruhan.
7.
LaporanParkirPeriodik.java, berfungsi untuk membuat panel laporan parkir
kendaraan secara periodick.
8.
LaporanPendapatan.Java, berfungsi untuk untuk membuat panel laporan
pendapatan parkir yang nanti kemudian diset kedalam bentuk grafik
pendapatan.
9.
LaporanPertumbuhan.Java, berfungsi untuk untuk membuat panel laporan
pertumbuhan parkir yang nanti kemudian diset kedalam bentuk grafik
pertumbuhan.
10.
LaporanPetugas.Java, berfungsi untuk membuat panel laporan daftar
petugas.
11.
LoginAdminFrame.Java, berfungsi untuk membuat Java Frame login untuk
admin.
12.
LoginMasukFrame.java, berfungsi untuk membuat Java Frame login untuk
petugas masuk.
13.
LoginKeluarFrame.java, berfungsi untuk membuat Java Frame login untuk
petugas keluar.
54
14.
MultiLineHeaderRenderer.java, berfungsi untuk membuat Renderer untuk
tabel pada panel pintu keluar. Renderer ini dapat membuat header tabel
menjadi multiline. Jika pada nama kolom ditemukan escape character\n
maka kata berikutnya akan dirender pada baris berikutnya.
15.
PanelAdmin.java, berfungsi untuk membuat panel Administrasi.
16.
PanelMasuk.Java, berfungsi untuk membuat user interface untuk pintu
masuk.
17.
PanelKeluar.Java, berfungsi untuk membuat user Interface untuk pintu
keluar.
18.
PanelPetugas.java, berfungsi untuk membuat user Interface untuk petugas.
19.
ParkirDAO.Java, berfungsi untuk membuat program yang mengakses data
objek untuk tabel parkir.
20.
PetugasDAO.Java, berfungsi untuk membuat program yang mengakses
data objek untuk tabel petugas.
21.
PetugasTableModel.java, berfungsi untuk Tabel Model untuk tabel pada
panel petugas dan program untuk menampilkan data pada tabel.
22.
PintuMasukModel.java, berfungsi untuk Tabel Model untuk tabel pada panel
Pintu Masuk dan program untuk menampilkan data pada tabel.
23.
PintuKeluarModel.java, berfungsi untuk Tabel Model untuk tabel pada panel
Pintu Keluar dan program untuk menampilkan data pada tabel.
24.
StrukParkirDialog.java, berfungsi untuk membuat dialog untuk mencetak
struk parkir.
25.
Util.java, berfungsi untuk membuat utilitas untuk mengambil icon dan image
dan membuang spasi.
55
4.2.1
Program Pengolah Data Untuk Admin
Pengolahan data dalam “Sistem Monitoring Biaya Parkir Di Hotel Quality
Berbasis Jaringan Menggunakan Java” untuk penginputan data petugas
dilakukan oleh Admin pada halaman login Admin. Fungsi dari halaman ini adalah
untuk menjaga keamanan data yang ada, di mana setiap admin yang bertugas
untuk melakukan pemasukan, pengeditan atau pun penghapusan data harus
login terlebih dahulu. Sehingga tidak setiap orang berhak untuk masuk tanpa
melewati proses login ini baik petugas masuk maupun keluar.
Dalam halaman tersebut terdapat form login administrator dengan tampilan
seperti pada gambar 4.1 :
Gambar 4.1 Login Administrator
Setelah admin mengisikan nama dan password dengan benar, maka kita
akan masuk ke halaman menu utama admin dengan tampilan seperti pada
gambar 4.2.
56
Gambar 4.2 Menu Utama Admin
Pada menu utama untuk admin dari pengolahan data “Sistem Monitoring
Biaya Parkir Di Hotel Quality Berbasis Jaringan Menggunakan Java ” ini terdiri
dari beberapa program untuk penginputan data, pengeditan data, penghapusan
data petugas dan juga laporan-laporan parkir. Program-program tersebut antara
lain:
4.2.1.1 Program Pemasukan Data Petugas
Nama File
: PetugasDAO.java
Fungsi
: untuk memasukan seluruh daftar nama-nama petugas .
57
Gambar 4.3 Halaman Input Data Petugas Parkir
Prosedure yang digunakan untuk memasukkan data petugas adalah
sebagai berikut:
public
static
int
insertPetugas(DataModelPetugas
model)
throws SQLException {
PreparedStatement
query
=
con.prepareStatement("INSERT
INTO
petugas "VALUES (?, ?, ?, ?, ?, ?)");
query.setString(1, model.getNomorPetugas());
query.setString(2, model.getNamaPetugas());
query.setString(3, model.getAlamat());
query.setString(4, String.valueOf(model.getJenisKelamin()));
query.setString(5, model.getLevel());
query.setString(6, model.getPassword());
return query.executeUpdate();
Metode diatas dapat diakses ke semua kelas karena bersifst public
dimana insertPetugas dipanggil dari class DataModelPetugas. Static merupakan
metode kelas. Int merupakan nilai return value yang merupakan metode untuk
mengembalikan nilai integer. PreparedStatement merupakan bahasa java untuk
mengubah query yang telah terkoneksi dengan database. Isi dari statement
berupa bahasa query. Pada query diatas terdapat variable “?” yang nantinya
58
akan diisi dengan nomor petugas, nama petugas seperti pada perintah
query.setstring. Perintah setstring mengubah karakter menjadi string. Nomor 1, 2,
3 pada
perintah query.setstring berdasarkan urutan pada database. Pada
query.setString(4, String.valueOf(model.getJenisKelamin)) untuk jenis kelamin
bertipe data karakater karena itu harus diubah ke string dengan pernyataan
String.valueOf. Jika semua variabel “?” telah diisi (update) maka query di
eksekusi jika belum diisi maka akan error.
4.2.1.2
Program Laporan
4.2.1.2.1 Program Laporan Daftar Petugas
Nama File
: LaporanPetugas.java
Fungsi
: untuk menampilkan seluruh daftar nama-nama petugas baik
petugas masuk maupun petugas keluar.
4.2.1.2.2
Program Laporan Kendaraan Parkir Harian Secara Keseluruhan
Nama File
: LaporanParkirHarian.java
Fungsi
: untuk menampilkan seluruh data parkir kendaraan parkir selama
satu hari baik yang sudah keluar maupun yang masih parkir
didalam.
4.2.1.2.3
Program Laporan Harian Kendaraan Yang Masih Parkir
Nama File
: LaporanParkirHarian.java
Fungsi
: untuk menampilkan seluruh data parkir kendaraan parkir selama
satu hari baik hanya khusus kendaraan yang masih parkir
didalam.
59
4.2.1.2.4
Program Laporan Kendaraan Berdasarkan Jenis Kendaraan
Nama File
: LaporanKendaraan.java
Fungsi
: untuk menampilkan data kendaraan berdasarkan jenis kendaraan
baik kendaraan roda dua maupun kendaraan roda dua.
4.2.1.2.5
Program Laporan Parkir Kendaraan Secara Periodik
Nama File
: LaporanParkirPeriodik.java
Fungsi
: untuk menampilkan seluruh parkir kendaraan parkir selama
periode tertentu.
4.2.2
Program Pengolah Data Parkir
4.2.2.1 Halaman Login Petugas
Sebelum masuk ke Interface parkir masuk dan keluar petugas masuk dan
keluar harus melakukan login. Fungsi dari halaman ini adalah untuk menjaga
keamanan data yang ada, di mana tidak setiap orang berhak untuk masuk tanpa
melewati proses login.
Gambar 4.4 Login Petugas
60
4.2.2.2 Program Pemasukan Data Parkir Masuk
Nama File : ParkirDAO.java
Fungsi
: untuk memasukan data parkir masuk, meliputi NoCatat, TglParkir,
NoPlat, JenisKendaraan, Jam Masuk dan NoPetugas Masuk. Data
akan disimpan dalam tabel parkir.
Gambar 4.5 Halaman Input Data Parkir Masuk
Prosedure yang digunakan untuk memasukkan data parkir masuk adalah
sebagai berikut:
public static int insertParkirMasuk(DataModelParkir model) throws
SQLException {
PreparedStatement query = con.prepareStatement("INSERT INTO parkir " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.setString(1, model.getNoCatat());
query.setDate(2, new Date(model.getTglParkir().getTime()));
query.setNull(3, Types.DATE);
query.setString(4, model.getNoPlat());
query.setString(5, String.valueOf(model.getJeniKendaraan()));
query.setString(6, model.getNoPetugasMasuk());
query.setString(7, model.getJamMasuk() + ":00");
query.setNull(8, Types.VARCHAR);
query.setNull(9, Types.DATE);
query.setNull(10, Types.INTEGER);
return query.executeUpdate();
Pada variable “?”
nantinya akan diisi dengan nomor petugas, nama
petugas seperti pada perintah query.setstring. Perintah query.setString(1,
61
model.getNoCatat()) mengubah karakter menjadi string. Setstring nomor 2 diset
dengan tipe data Date
menjadi new date dengan mengambil tanggal dari
system. Pada query dengan setnull berarti belum ditampilkan dan kosong. Pada
query.setString(7, model.getJamMasuk() + ":00") untuk jam masuk diset dengan
menambahkan detik. Jika semua variabel “?” telah diisi (update) maka query di
eksekusi jika belum diisi maka akan error.
4.2.2.3
Program Struk untuk Pengguna Parkir
Nama File
: StrukParkirDialog.java
Fungsi
: untuk menampilkan struk parkir dan sekaligus untuk mencetaknya.
Gambar 4.6 Halaman Struk untuk pengguna parkir
Prosedure yang digunakan untuk menghitung biaya kembali
parkir
adalah sebagai berikut:
public void actionPerformed(ActionEvent e) {
int bayar = Integer.parseInt(cashField.getText());
int kembali = bayar - model.getBiaya();
kembaliField.setText(String.valueOf(kembali));
Metode diatas dapat diakses disemua kelas karena bersifat public. Bayar
bertipe integer dan ditampilkan pada TextField cash. Int kembali = bayar – total
62
biaya dan ditampilkan pada TextField Kembali.
4.2.3
Program Pengeditan Data
4.2.3.1 Program Ubah Data Petugas
Nama File : PetugasDAO.java
Fungsi
: untuk mengubah data petugas sesuai dengan data petugas yang
dipilih. Data pada tabel petugas akan berubah.
Gambar 4.7 Halaman Ubah Data Petugas
Prosedure yang digunakan untuk mengubah data petugas adalah sebagai
berikut:
public static int updatePetugas(DataModelPetugas model)
throws SQLException {
PreparedStatement query = con.prepareStatement("UPDATE
petugas SET
NoPetugas = ?, " NamaPetugas = ?, Alamat = ?, JenisKelamin = ?, Level =
?, " Password = ? WHERE NoPetugas = ?");
query.setString(1, model.getNomorPetugas());
query.setString(2, model.getNamaPetugas());
query.setString(3, model.getAlamat());
query.setString(4, String.valueOf(model.getJenisKelamin()));
query.setString(5, model.getLevel());
query.setString(6, model.getPassword());
query.setString(7, model.getNomorPetugas());
return query.executeUpdate();
Metode diatas dapat diakses ke semua kelas karena bersifst public
dimana
updatePetugas
dipanggil
dari
class
DataModelPetugas.
Static
63
merupakan metode kelas. Pada variable “?” yang telah terisi dengan nomor
petugas, nama petugas seperti pada perintah query.setstring. Pada perintah
update diatas data tidak perlu ditampilkan semua cukup menampilkan
NoPetugas dengan query where. Jika where telah diisi maka query di eksekusi.
4.2.3.2 Program Ubah Data Parkir Masuk
Nama File
:
ParkirDAO.java
Fungsi
:
untuk mengubah data parkir masuk sesuai dengan data parkir
masuk yang dipilih. Data pada tabel parkir akan berubah.
Gambar 4.8 Halaman Ubah Data Parkir Masuk
Prosedure yang digunakan untuk mengubah data parkir masuk adalah
sebagai berikut:
public static int updateParkirMasuk(DataModelParkir model) throws
SQLException {
PreparedStatement query = con.prepareStatement("UPDATE parkir SET
NoCatat = ?, "TglParkir = ?, TglKeluar = ?, NoPlat = ?,
JenisKendaraan = ?, "NoPetugasM = ?, JamMasuk = ?, NoPetugasK
= ?, JamKeluar = ?, "Biaya = ? WHERE NoCatat = ?");
query.setString(1, model.getNoCatat());
query.setDate(2, new Date(model.getTglParkir().getTime()));
query.setNull(3, Types.DATE);
query.setString(4, model.getNoPlat());
query.setString(5, String.valueOf(model.getJeniKendaraan()));
query.setString(6, model.getNoPetugasMasuk());
query.setString(7, model.getJamMasuk() + ":00");
query.setNull(8, Types.VARCHAR);
query.setNull(9, Types.DATE);
query.setNull(10, Types.INTEGER);
query.setString(11, model.getNoCatat());
64
return query.executeUpdate();
Metode diatas dapat diakses ke semua kelas karena bersifst public
dimana updateParkirMasuk dipanggil dari class DataModelParkirMasuk. Pada
variable “?” nantinya akan diisi dengan NoCatat, TglParkir seperti pada perintah
query.setstring. Pada perintah update diatas data tidak perlu ditampilkan semua
cukup menampilkan NoCatat dengan query where. Jika where telah diisi maka
query di eksekusi.
4.2.3.3 Program Update Data Parkir Keluar
Nama File
:
ParkirDAO.java
Fungsi
:
data yang ada pada parkir masuk di update pada parkir keluar
yang kemudian disimpan pada table parkir. Data pada tabel
parkir akan berubah.
Gambar 4.9 Halaman Update Data Parkir Keluar
65
Prosedure yang digunakan untuk mengupdate data parkir keluar adalah
sebagai berikut:
public static int updateParkirKeluar(DataModelParkir model) throws
SQLException {
PreparedStatement query = con.prepareStatement("UPDATE parkir SET
NoCatat = ?, " +"TglParkir = ?, TglKeluar = ?, NoPlat = ?,
JenisKendaraan = ?, " +"NoPetugasM = ?, JamMasuk = ?, NoPetugasK =
?, JamKeluar = ?, " + "Biaya = ? WHERE NoCatat = ?");
query.setString(1, model.getNoCatat());
query.setDate(2, new Date(model.getTglParkir().getTime()));
query.setDate(3, new Date(model.getTglKeluar().getTime()));
query.setString(4, model.getNoPlat());
query.setString(5, String.valueOf(model.getJeniKendaraan()));
query.setString(6, model.getNoPetugasMasuk());
query.setString(7, model.getJamMasuk());
query.setString(8, model.getNoPetugasKeluar());
query.setString(9, model.getJamKeluar());
query.setInt(10, model.getBiaya());
query.setString(11, model.getNoCatat());
return query.executeUpdate();
Perintah UpdateParkirKeluar diatas bukan merupakan perintah untuk edit
data. Karena pada pintu keluar hanya mengambil data dari database parkir untuk
data masuk yang masih null akan du update. Pada perintah update diatas data
jika diisikan nomor plat dengan query where maka semua data parkir keluar
akan tampil. Jika where telah diisi maka query di eksekusi.
4.2.3.4 Program Penghapusan Data Petugas
Nama File : PetugasDAO.java
Fungsi
: untuk menghapus data petugas sesuai dengan data petugas yang
dipilih. Data akan terhapus dari tabel petugas.
66
Gambar 4.10 Halaman Hapus Data Petugas
Prosedure yang digunakan untuk menghapus data petugas adalah
sebagai berikut:
public static int deletePetugas(DataModelPetugas model) throws
SQLException {
PreparedStatement query = con.prepareStatement("DELETE FROM petugas "
"WHERE NoPetugas = ?");
query.setString(1, model.getNomorPetugas());
Metode ini bersifat public. Untuk menjalankan perintah deletePetugas
maka NoPetugas yang akan dihapus ditampilkan dengan perintah where dimana
pada query setstring di isis dengan nomorpetugas.
67
4.3
Koneksi Antara Database Parkir Masuk Dan Database Pintu Keluar
Koneksi antara pintu masuk dan pintu keluar dilakukan dengan cara input
data dari pintu masuk
akan dimasukan kedalam database parkir dimana
sebelumnya telah dilakukan koneksi antara
database dengan program yang
ditulis oleh program java. Data Parkir masuk yang telah pada database parkir di
panggil kembali oleh pintu keluar. Jadi sebenarnya pintu masuk dan pintu keluar
tidak berhubungan secara langsung.
Prosedure yang digunakan untuk Koneksi antara database dengan
program Java yang dilakukan JDBC terletak pada class dbconfig.java sebagai
berikut:
Class.forName(namaKelas);
} catch (ClassNotFoundException cx) {
System.err.println("Driver database tidak ditemukan");
}
try {
con = DriverManager.getConnection(url, nama, password);
} catch (SQLException sx) {
System.err.println("DriverManager
gagal
membuat
koneksi
dengan database");
}
}
Selanjutnya data pada database parkir di koneksikan ke program Java
terletak pada class ParkirDAO.java sebagai berikut :
public class ParkirDAO {
// koneksi ke DBMS
private static Connection con;
static {
con = DBConfig.getConnection();
Metode public class PArkirDAO di atas telah di koneksikan dengan
perintah con = DBConfig.getConnection().
68
4.4
Aplikasi Laporan Grafik
Program “Sistem Monitoring Biaya Parkir Di Hotel Quality Berbasis
Jaringan Menggunakan Java” ini memiliki beberapa aplikasi laporan berupa
grafik yang akan menyajikan berbagai informasi secara menyeluruh atau detail
dari laporan yang ada. Hanya Admin yang mempunyai hak akses untuk
membuka program aplikasi tersebut .
4.4.1
Grafik Parkir Harian Berdasarkan Jenis Kendaraan
Nama File : GrafikJenisKendaraan.java
Fungsi
:
untuk membuat grafik berdasarkan laporan jenis kendaraan.
Gambar 4.11 Halaman Grafik Jenis Kendaraan
69
Prosedure yang digunakan untuk membuat grafik jenis kendaraan adalah
sebagai berikut:
private JFreeChart buatGrafik(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart3D("Grafik Parkir Harian "
Berdasarkan Jenis Kendaraan", dataset, true, false, false);
PiePlot3D plot = (PiePlot3D)chart.getPlot();
Metode diatas bersifat private sehingga hanya dapat diakses oleh
kelas JFreeChart yang merupakn panel untuk membuat grafik dengan
datasetnya adalah PieDataset. Untuk membuat PieChart digunakan perintah
CreatePieChart dengan judul “ Grafik Parkir Harian Berdasarkan Jenis
Kendaraan” dengan keterangan ditampilkan (true) dan tooltips bernilai false.
4.4.2
Grafik Pertumbuhan Jumlah Kendaraan Parkir Periodik
Nama File : LaporanPertumbuhan.java
Fungsi
: untuk membuat laporan pertumbuhan jumlah kendaraan parkir
berbasis grafik berdasarkan laporan parkir periodik kendaraan.
Gambar 4.12 Halaman Grafik Pertumbuhan Jumlah Kendaraan
70
Prosedure yang digunakan untuk membuat grafik pertumbuhan jumlah
kendaraan adalah sebagai berikut:
private JFreeChart buatGrafik(XYDataset dataset) {
JFreeChart chart = ChartFactory.createTimeSeriesChart("Grafik Pertumbuhan
Jumlah Kendaraan Parkir Periodik", "Tanggal", "Jumlah", dataset, true,
true, false);
chart.setBackgroundPaint(Color.WHITE);
Metode diatas bersifat private sehingga hanya dapat diakses oleh
kelas JFreeChart yang merupakn panel untuk membuat grafik dengan
datasetnya adalah XYDataset. Untuk membuat XYChart digunakan perintah
ChartFactory.createTimeSeriesChart dengan judul “Grafik Pertumbuhan Jumlah
Kendaraan Parkir Periodik” dengan tanggal sebagai sumbu X, Jumlah sebagai
sumbu Y dan keterangan ditampilkan (true).
4.4.3
Grafik Pertumbuhan Jumlah Pendapatan Parkir Periodik
Nama File : LaporanPendapatan.java
Fungsi
: untuk membuat laporan pertumbuhan jumlah pendapatan parkir
kendaraan yang berbasis grafik berdasarkan laporan parkir periodik
kendaraan.
71
Gambar 4.13 Halaman Grafik Pertumbuhan
Jumlah Pendapatan Parkir Periodik
Prosedure yang digunakan untuk membuat grafik pertumbuhan jumlah
pendapatan parkir kendaraan adalah sebagai berikut:
private JFreeChart buatGrafik(XYDataset dataset) {
JFreeChart chart = ChartFactory.createTimeSeriesChart("Grafik Pertumbuhan
Jumlah Pendapatan" +" Periodik", "Tanggal", "Jumlah Pendapatan", dataset,
true, true, false);
chart.setBackgroundPaint(Color.WHITE);
Metode diatas bersifat private sehingga hanya dapat diakses oleh
kelas JFreeChart yang merupakn panel untuk membuat grafik dengan
datasetnya adalah XYDataset. Untuk membuat XYChart digunakan perintah
ChartFactory.createTimeSeriesChart dengan judul “Grafik Pertumbuhan Jumlah
Pendapatan” dengan tanggal sebagai sumbu X, Jumlah Pendapatan sebagai
sumbu Y dan keterangan ditampilkan (true).
Download