Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
20
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Dalam pembahasan tinjauan perusahaan, penulis akan membahas sejarah
dan struktur organisasi serta fungsinya dari PT Bywi Jaya Sejahtera.
3.1.1. Sejarah Perusahaan
PT Bywi Jaya Sejahtera adalah perusahaan yang bergerak usaha di bidang
usaha penyewaan lapangan futsal. PT Bywi Jaya Sejahtera didirikan oleh Bapak
Suroto yang berizin usaha dengan nomor SKDP: 13/27.1BU/31.73.08.1003/-
071.56/e/2017.
Sejarah berdirinya PT Bywi Jaya Sejahtera berawal pada tanggal 13
Oktober 2011 oleh bapak Suroto selaku pemilik tempat futsal, dan mulai
beroperasi sejak 31 Maret 2012 yang bertempat di Jalan Meruya Selatan Nomor
111, Kembangan, Jakarta Barat, dan hingga saat ini masih beroperasi. Tempat
futsal ini menawarkan banyak fasilitas seperti adanya dua jenis lapangan yakni
lapangan rumput dan lapangan vinyl, toilet, tempat ganti pakaian, tempat parkir
untuk mobil dan motor, tribun penonton, dan juga ada kantin.
Tempat ini buka setiap hari, berikut adalah list daftar harga lapangan
meliputi: hari, jam dan harga sewa yang terdapat pada PT Bywi Jaya Sejahtera :
21
Tabel. III.1.
List Daftar Harga Lapangan
Sumber: Bagian Kasir PT. Bywi Jaya Sejahtera
3.1.2. Struktur Organisasi dan Fungsi
Sumber: (PT Bywi Jaya Sejahtera, 2012)
Gambar III.1. Struktur Organisasi
Berikut ini adalah fungsi dari setiap komponen organisasi adalah:
1. Pemilik : Orang yang memiliki perusahaan, bertanggung jawab dalam
pengambilan keputusan.
2. Kasir : Orang yang bertugas menjalankan proses penyewaan
lapangan.
3. Security : Orang yang bertugas untuk menjaga keamanan perusahaan.
4. Office Boy : Orang yang bertugas untuk menjaga kebersihan sekitar
lapangan
Senin s/d Minggu Reguler
Jam Rumput Vinyl
06.00 – 15.00 Rp. 80.000 Rp. 90.000
15.00 – 18.00 Rp. 105.000 Rp. 115.000
18.00 – 24.00 Rp. 160.000 Rp. 170.000
Member 10%
Hari Libur
Penambahan sebesar Rp. 200.000
Pemilik
Kasir Security Office Boy
22
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Proses bisnis sistem berjalan pada PT Bywi Jaya Sejahtera adalah sebagai
berikut:
Pelanggan yang ingin melakukan pemesanan sewa lapangan futsal, bisa
melalui via whatsapp atau datang langsung ke Bywi Futsal. Kemudian kasir akan
memberitahukan list daftar harga lapangan. Apabila pelanggan telah menentukkan
jenis lapangan yang dipesan maka kasir akan mengecek ketersediaan lapangan
dengan melihat di Form Penyewaan. Jika lapangan yang ingin dipesan tersedia,
maka pelanggan memberitahukan identitas (nama dan nomor handphone) kepada
kasir sebagai kelengkapan data Penyewaan. Lalu identitas pelanggan dicatat oleh
kasir. Apabila pelanggan telah selesai melakukan pemesanan maka pelanggan
dapat melakukan pembayaran secara lunas maupun DP. Jika pelanggan membayar
secara lunas maka pelanggan akan mendapatkan Kwitansi Pembayaran sebagai
bukti pembayaran. Kwitansi Pembayaran ini terdiri dari rangkap 2, dimana
rangkap asli diberikan kepada pelanggan dan rangkap coppy sebagai arsip
pembayaran. Sedangkan jika pelanggan membayar DP, maka pelanggan wajib
melakukan pembayaran minimal 50% dari harga lapangan yang dipesan.
Kemudian pelanggan akan diberikan Kwitansi Pembayaran rangkap asli sebagai
bukti pembayaran awal dan rangkap coppy di arsip oleh kasir. Pelunasan
pembayaran dapat dilakukan maksimal pada saat pelanggan telah selesai bermain
futsal dengan membawa Kwitansi Pembayaran rangkap asli yang telah diberikan
oleh kasir pada saat pembayaran awal. Tetapi jika pelanggan melakukan
pembatalan, maka kasir akan mencatat pembatalan dan update data Penyewaan.
23
Pembuatan laporan pemesanan lapangan ini diambil dari data Penyewaan yang
nantinya akan diserahkan kepada Pemilik.
3.2.2. Activity Diagram
Gambar III.2.
Activity Diagram Proses Bisnis Sistem Berjalan
3.2.3. Dokumen Masukkan
Dokumen masukan merupakan dokumen yang akan diolah untuk
memperoleh informasi yang dibutuhkan. Bentuk dokumen masukan dalam sistem
yang sedang berjalan pada PT Bywi Jaya Sejahtera adalah sebagai berikut :
act Activ ity Diagram
PemilikKasirPelanggan
Mulai
Melakukan Pemesanan Memberitahukan list daftar harga lapangan
Memilih jenis lapangan
Memberitahukan jenis lapangan yang dipilih Mengecek ketersediaan lapangan
Memberitahukan ketersediaan lapanganMenerima informasi ketersediaan lapangan
Menyetujui pemesanan lapangan dan
memberitahukan identitas (nama & no hp)Mencatat identitas pelanggan di Form Penyewaan
Memberitahukan jenis pembayaranMemilih jenis pembayaran
Melakukan
pembayaran
secara DPMenerima pembayaran secara DP
Membuat Kwitansi Pembayaran Dan
Menyimpan Kwitansi Pembayaran coppy
Menyerahkan Kwitansi Pembayaran asliMenerima Kwitansi Pembayaran asli
Melakukan pembatalan Mencatat pembatalan dan update Form Penyewaan
Uang DP Hangus
Selesai
Menunjukkan Kwitansi
Pembayaran DP asli
Bermain Futsal
Melakukan pembayaran
secara lunas Menerima Pembayaran secara lunas
Membuat Kwitansi Pembayaran serta
Menyimpan Kwitansi Pembayaran coppy
Menyerahkan Kwitansi
Pembayaran asli
Menerima Kwitansi
Pembayaran asli
Selesai
Bermain futsal Membuat Laporan Penyewaan
Menyerahkan Laporan Penyewaan Menerima Laporan Penyewaan
Selesai
ya
batal
DP
lanjut
Lunas
tidak
24
Nama Dokumen : Form Penyewaan
Fungsi : Untuk mengetahui identitas pelanggan yang telah
melakukan pemesanan dan pembayaran dari
pelanggan
Sumber : Pelanggan
Tujuan : Kasir
Media : Kertas
Jumlah : Satu Lembar
Frekuensi : Setiap Hari
Format : Lampiran A.1
3.2.4. Dokumen Keluaran
Dokumen keluaran merupakan proses akhir dari proses penyewaan
lapangan futsal. Adapun dokumen keluaran tersebut adalah sebagai berikut :
1. Nama Dokumen : Kwitansi Pembayaran
Fungsi : Sebagai Bukti Pembayaran Dari Pelanggan
Sumber : Kasir
Tujuan : Pelanggan
Media : Kertas
Jumlah : Dua Lembar
Frekuensi : Setiap Terjadinya Pembayaran DP dan Lunas
Sewa Lapangan Futsal
Format : Lampiran B.1
25
2. Nama Dokumen : Laporan Penyewaan
Fungsi : Untuk Mengetahui Rincian Penyewaan
Sumber : Kasir
Tujuan : Pemilik
Media : Kertas
Jumlah : Dua Lembar
Frekuensi : Setiap Hari
Format : Lampiran B.2
3.2.5. Permasalahan Pokok
Ada beberapa permasalahan yang terjadi pada sistem penyewaan lapangan
futsal pada PT Bywi Jaya Sejahtera Jakarta, untuk lebih jelasnya maka penulis
akan merumuskan beberapa permasalahan yang ada adalah sebagai berikut:
1. Dalam mengolah data, pengisian data-data penyewaan yang masih manual,
sehingga kemungkinan resiko terjadinya kehilangan dan kerusakan pada
semua data-data karena masih disimpan dalam buku catatan.
2. Setiap adanya pembayaran DP (uang muka) dan pelunasan pelanggan tidak
diberikan kwitansi oleh kasir, hanya dicatat dalam form penyewaan saja,
terkecuali pelanggan tersebut meminta untuk dibuatkan kwitansi. Sehingga
jika suatu hari terjadi kehilangan pada catatan manual, sedangkan arsip
kwitansi tidak lengkap, maka itu akan merugikan perusahaan. Karena kasir
tidak mempunyai backup data secara lengkap.
3. Untuk perhitungan diskon tidak ada pendataan khusus pelanggan, hanya
dilihat dari transaksi-transaksi sebelumnya saja.
26
3.2.6. Pemecahan Masalah
Sebagai alternatif pemecahan dari permasalahan diatas, maka penulis akan
memberikan solusinya sebagai berikut:
1. Mengubah sistem manual menjadi sistem yang sudah terkomputerisasi
sehingga dalam pengarsipan data sampai pembuatan laporan penyewaan akan
lebih akurat dan lebih cepat, sehingga mempermudah dalam proses
penyewaan lapangan futsal.
2. Dengan adanya suatu sistem yang sudah terkomputerisasi maka setiap
pelanggan yang telah melakukan pemesanan maka kasir bisa langsung
mencetak kwitansi pembayaran DP maupun pelunasan, dan kasir tidak perlu
repot-repot untuk membuat kwitansi secara manual lagi.
3. Dengan adanya suatu sistem yang sudah terkomputerisasi maka setiap
pelanggan yang sudah pernah bermain futsal atau langganan, maka akan
secara otomatis mendapat diskon 10%.
3.3. Analisis Kebutuhan Software
3.3.1. Analisis Kebutuhan
Berdasarkan proses penyewaan lapangan futsal sistem berjalan pada Bywi
Futsal, maka tahapan berikutnya adalah analisis kebutuhan. Berikut ini spesifikasi
kebutuhan (System Requirement) dari sistem penyewaan lapangan futsal pada
Bywi Futsal.
A. Halaman Kasir
A.1. Kasir Melakukan Login
A.2. Kasir Mengelola Menu Utama
27
A.3. Kasir Mengelola Menu Master
A.3.1. Kasir Mengelola Data Pelanggan
A.3.2. Kasir Mengelola Data Lapangan
A.3.3. Kasir Mengelola Data Perkiraan
A.4. Kasir Mengelola Menu Transaksi
A.4.1. Kasir Mengelola Booking
A.4.2. Kasir Mengelola Penyewaan
A.4.3. Kasir Mengelola Jurnal
A.5. Kasir Mengelola Menu Laporan
A.5.1. Kasir Mengelola Laporan Penyewaan
A.5.2. Kasir Mengelola Laporan Penerimaan Kas
A.6. Kasir Kasir Mengelola Menu Utility
A.6.1. Kasir Mengelola Back Up
A.7. Kasir Logout
B. Halaman Pemilik
B.1. Pemilik Melakukan Login
B.2. Pemilik Mengelola Menu Utama
B.3 Pemilik Mengelola Menu Master
B.3.1. Pemilik Mengelola Data User
B.4. Pemilik Mengelola Menu Laporan Pemilik
B.4.1. Pemilik Mengelola Laporan Penyewaan
B.4.2. Pemilik Mengelola Laporan Penerimaan Kas
B.4. Pemilik Logout
28
3.3.2. Use Case Diagram
1. Use Case Halaman Kasir
Gambar III.3.
Use Case Diagram Halaman Kasir
Tabel III.2 Deskripsi Use case Halaman Kasir
Use Case Narative Halaman Kasir
Tujuan Kasir dapat mengolah/melihat data yang ada di dalam
sistem halaman kasir
Deskripsi Sistem ini memungkinkan aktor untuk masuk ke
halaman kasir yang di dalamnya ada data pelanggan,
data lapangan, data perkiraan, booking, penyewaan,
jurnal, laporan penyewaan, dan laporan penerimaan kas.
Skenario Utama
Aktor Kasir
Kondisi Awal Aktor membuka Aplikasi halaman kasir
Aksi Aktor Reaksi Sistem
1. Aktor memilih Sistem ini akan menampilkan informasi data pelanggan
uc Use Case Halaman Kasir
Kasir
Login
PasswordKode User
Menu Utama Menu Master
Data
PelangganData
Lapangan
Data
Perkiraan
Menu
Transaksi
Penyewaan
Jurnal
Menu Laporan
Laporan
Penyewaan
Laporan
Penerimaan
Kas
Menu Utility
Back Up
Logout
Booking
«include»
«extend»
«include»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
«extend»
29
data pelanggan
2. Aktor memilih
data lapangan
3. Aktor memilih
data perkiraan
4. Aktor memilih
booking
5. Aktor memilih
penyewaan
6. Aktor memilih
jurnal
7. Aktor memilih
laporan
penyewaan
8. Aktor memilih
laporan
penerimaan kas
9. Aktor memilih
back up
Sistem ini akan menampilkan informasi data lapangan
Sistem ini akan menampilkan informasi data perkiraan
Sistem ini akan menampilkan informasi booking
Sistem ini akan menampilkan informasi penyewaan
Sistem ini akan menampilkan informasi jurnal
Sistem ini akan menampilkan informasi laporan
penyewaan
Sistem ini akan menampilkan informasi laporan
penerimaan kas
Sistem ini akan menampilkan back up
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan apa
yang diinginkan
2. Use Case Halaman Pemilik
Gambar III.4.
Use Case Diagram Halaman Pemilik
uc Use Case Halaman Pemilik
Login
PasswordKode User
Menu Utama Menu Master
Logout
Pemilik
Data User
Menu Laporan
Laporan
Penyewaan
Laporan
Penerimaan
Kas
«extend»«extend»
«extend»
«include» «include»
«extend»
«extend»
«extend»
«extend»
30
Tabel III.3 Deskripsi Use case Halaman Pemilik
Use Case Narative Halaman Pemilik
Tujuan Pemilik dapat mengolah dan melihat data yang ada di
dalam sistem halaman pemilik
Deskripsi Sistem ini memungkinkan aktor untuk masuk ke
halaman pemilik yang di dalamnya ada data user,
laporan penyewaan, dan laporan penerimaan kas.
Skenario Utama
Aktor Pemilik
Kondisi Awal Aktor membuka Aplikasi halaman pemilik
Aksi Aktor Reaksi Sistem
1. Aktor memilih
data user
2. Aktor memilih
laporan
penyewaan
3. Aktor memilih
laporan
penerimaan kas
Sistem ini akan menampilkan informasi data user
Sistem ini akan menampilkan informasi laporan
penyewaan
Sistem ini akan menampilkan informasi laporan
penerimaan kas
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan apa
yang diinginkan
3.3.3. Activity Diagram
1. Activity Diagram Halaman Kasir
31
Gambar III.5.
Activity Diagram Halaman Kasir
act Activ ity Usulan Kasir
SistemKasir
Mulai
Melakukan Login Tampil Form Login
Input Kode User dan Password
Klik Tombol Login
Menampilkan Pesan Validasi
Selamat datang, ....
Kode User tidak
ditemukan!
Menu Master Menu Transaksi Menu Laporan Logout
Tampil Menu Utama
Tampil Menu Master
Data Pelanggan Data Lapanggan Data Perkiraan
Pilih Data Pelanggan
Tampil Form Data Pelanggan
Klik Cari
Cari Data
Data Belum AdaData Sudah Ada
Klik Tambah
Menampilkan Pesan Validasi
Data Berhasil Disimpan
Data Tidak Valid
TersimpanPilih Menu Transaksi Tampil Menu Transaksi
Penyewaan Jurnal
Pilih Transaksi
Input Nama Pelanggan, No Hp dan Alamat
Klik Simpan
Booking
Input Kode Pelanggan, Tgl
Pakai, Jam Masuk, Jam
Keluar, Kode Lapangan,
Uang DP
Klik Simpan
Menampilkan Pesan Validasi
Data Belum Lengkap Berhasil Disimpan
Tersimpan
Booking Tampil Form Booking
Penyewaan Tampil Form Penyewaan
Input Nomor Booking dan
Uang Bayar
Klik Simpan
Menampilkan Pesan Validasi
Berhasil Disimpan
TersimpanJurnal
Data Belum Lengkap
Menampilkan Form Jurnal
Masukkan Tanggal
Transaksi, Nomor
Transaksi Nama
Perkiraan
Klik Simpan
Menampilkan Pesan Validasi
Berhasil Disimpan
Tersimpan
Gagal Simpan
Utility
Pilih Menu Master
Selesai
Klik Tambah
Klik Tambah
Klik Tambah
Gagal Berhasil
Ada
Gagal
Salah
TidakAda
Benar
Gagal
Gagal
Berhasil
Berhasil
Berhasil
32
2. Activity Diagram Halaman Pemilik
Gambar III.6.
Activity Diagram Halaman Pemilik
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
act Activ ity Usulan Pemilik
Pemilik Sistem
Mulai
Melakukan Login Tampil Form Login
Input Kode User dan Password
Klik Tombol Login
Menampilkan Pesan Validasi
Selamat datang, ....Kode User tidak
ditemukan!
Menu Laporan
Laporan Penyewaan Laporan Penerimaan Kas
Pilih Laporan
Tampil Form Laporan
Pilih Periode
Cetak
Tampil Menu Utama Pemilik
Menu Master
Pilih Menu Master Tampil Menu Master
Data User
Tampil Form Data User
Pilih Data User
Klik Cari
Cari Data User
Data Tidak AdaData Sudah Ada
Klik Tambah
Input Kode User, Nama
User, Hak Akses, dan
Password
Klik Simpan
Menampilkan Pesan Validasi
Data Berhasil Disimpan
Data Tidak Valid
Pilih Menu Laporan Tampil Menu Laporan
Menampilkan Printout Laporan
Selesai
Selesai
Selesai
Gagal
Benar
Berhasil
Tidak Ada
Salah
Ada
33
Gambar III.7.
Entity Relationship Diagram (ERD)
3.4.2. Logical Record Structure (LRS)
Gambar III.8.
Logical Record Structure (LRS)
erd ERD Usulan
data_lapangan
kd_pelanggannm_pelanggan
alamatno_hp
data_lapangan
kd_lap nm_lap
jenis_lap
data_user
kd_user nm_user
hak_akses password
penyewaan
kd_booking
kd_lap
jam_sewa_masuk
jam_sewa_keluarlama_sewa
hari_libur
diskon_sewa
total_sewa
uang_byr
kd_user
no_trans
tgl_sewa
kd_pelanggan
Jurnal
no_jurnal tgl_junal
no_trans
jurnal_detail
id
no_jurnaltgl_jurnal
kreditdebet
data_perkiraan
kd_perkiraan nm_perkiraan
jenis_perkiraan
booking
kd_booking
tgl_booking kd_pelanggan
tgl_pakai
jam_masuk
jam_keluardiskon
hari_libur
kd_lapuang_dp
kd_user
1
menginput
M
1terdapat
M
1
memiliki
1
1membuat
1
M
mengecek
1
1
membayar
M
1Sewa
M
class LRS
data_pelanggan
- alamat
- kd_pelanggan PK
- nm_pelanggan
- no_hp
data_lapangan
- jenis_lap
- kd_lap PK
- nm_lap
data_user
- hak_akses
- kd_user PK
- nm_user
- password
booking
- diskon
- jam_keluar
- jam_masuk
- kd_booking PK
- kd_lap
- kd_pelanggan
- kd_user
- tgl_booking
- tgl_pakai
penyewaan
- diskon_sewa
- hari_libur
- jam_sewa_keluar
- jam_sewa_masuk
- kd_booking
- kd_lap
- kd_pelanggan
- kd_user
- lama_sewa
- no_trans PK
- tgl_sewa
- total_sewa
- uang_byr
jurnal
- no_jurnal PK
- no_trans
- tgl_jurnal
jurnal_detail
- debet
- id PK
- kd_perkiraan
- kredit
- no_jurnal
data_perkiraan
- jenis_perkiraan
- kd_perkiraan PK
- nm_perkiraan
1:M
1:M
1:M
1:1
M:1
1:M
1:1
34
3.4.3. Spesifikasi File
Spesifikasi file yang digunakan dalam rancang bangun sistem penyewaan
lapangan futsal pada PT. Bywi Jaya Sejahtera terdiri dari :
1. Spesfikasi File Data Pelanggan
Nama Database : futsaldb
Nama File : Data Pelanggan
Tipe File : Master
Akses File : Random
Panjang Record : 173 Karakter
Field Key : kd_pelanggan
Tabel III.4.
Spesifikasi File Data Pelanggan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Pelanggan kd_pelanggan varchar 8 Primary Key
2 Nama Pelanggan nm_pelanggan varchar 50
3 Alamat alamat varchar 100
4 no hp no_hp varchar 15
2. Spesfikasi File Data Lapangan
Nama Database : futsaldb
Nama File : Data Lapangan
Tipe File : Master
Akses File : Random
Panjang Record : 13 Karakter
Field Key : kd_lap
35
Tabel III.5.
Spesifikasi File Data Lapangan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Lapangan kd_lap varchar 7 Primary Key
2 Jenis Lapangan jenis_lap varchar 6
3 Tarif Tarif double
3. Spesfikasi File Data Perkiraan
Nama Database : futsaldb
Nama File : Data Perkiraan
Tipe File : Master
Akses File : Random
Panjang Record : 38 Karakter
Field Key : kd_perkiraan
Tabel III.6.
Spesifikasi File Data Perkiraan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Perkiraan kd_perkiraan varchar 8 Primary Key
2 Nama Perkiraan nm_perkiraan varchar 20
3 Jenis Perkiraan jenis_perkiraan varchar 10
4. Spesfikasi File Data User
Nama Database : futsaldb
Nama File : Data User
Tipe File : Master
36
Akses File : Random
Panjang Record : 85 Karakter
Field Key : kd_user
Tabel III.7.
Spesifikasi File Data User
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode User kd_user varchar 8 Primary Key
2 Nama User nm_user varchar 50
3 Hak Akses hak_akses varchar 7
4 Password password varchar 20
5. Spesfikasi File Booking
Nama Database : futsaldb
Nama File : Booking
Tipe File : Transaksi
Akses File : Random
Panjang Record : 31 Karakter
Field Key : kd_booking
37
Tabel III.8.
Spesifikasi File Booking
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Booking kd_booking varchar 8 Primary Key
2 Tgl Booking tgl_booking date
3 Kode Pelanggan kd_pelanggan varchar 8
4 Tgl Pakai tgl_pakai time
5 Jam Masuk jam_msk time
6 Jam Keluar jam_keluar time
7 Diskon Diskon double
8 Kode Lapangan kd_lap varchar 7
9 Hari Libur hari_libur double
10 Uang DP uang_dp double
11 Kode User kd_user varchar 8
6. Spesfikasi File Penyewaan
Nama Database : futsaldb
Nama File : Penyewaan
Tipe File : Transaksi
Akses File : Random
Panjang Record : 39 Karakter
Field Key : no_trans
38
Tabel III.9.
Spesifikasi File Penyewaan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomor Transaksi no_trans varchar 9 Primary Key
2 Tgl Sewa tgl_sewa Date
3 Kode Pelanggan kd_pelanggan varchar 8
4 Kode Booking kd_booking varchar 8
5 Kode Lapangan kd_lap varchar 7
6 Jam Sewa Masuk jam_sewa_masuk Time
7 Jam Sewa Keluar jam_sewa_keluar Time
8 Lama Sewa lama_sewa Double
9 Hari Libur hari_libur Double
10 Diskon Sewa diskon_sewa double
11 Total Sewa total_sewa double
12 Uang Bayar uang_byr double
13 Kode User kd_user varchar 8
7. Spesfikasi File Jurnal
Nama Database : futsaldb
Nama File : Jurnal
Tipe File : Transaksi
Akses File : Random
Panjang Record : 19 Karakter
Field Key : kd_jurnal
39
Tabel III.10.
Spesifikasi File Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomor jurnal no_jurnal varchar 10 Primary Key
2 Tgl jurnal tgl_jurnal Date
3 Nomor Transaksi no_trans varchar 9
8. Spesfikasi File Jurnal Detail
Nama Database : futsaldb
Nama File : Jurnal
Tipe File : Transaksi
Akses File : Random
Panjang Record : 29 Karakter
Field Key : id
Tabel III.11.
Spesifikasi File Jurnal Detail
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Id Int 11 Primary Key
2 Nomor Jurnal no_jurnal Varchar 10
3 Kode Perkiraan kd_perkiraan Varchar 8
4 Debet Debet Double
5 Kredit Kredit double
40
3.4.4. Squence Diagram
A. Sequence Diagram Login
Gambar III.9.
Sequence Diagram Login
B. Sequence Diagram Data Pelanggan
Gambar III.10.
Sequence Diagram Data Pelanggan
sd Login
Kasir
Login Proses Kasir Menu Utama
alt
Display()
Password salah()
Set Kode User dan Password()
Kode User tidak ditemukan()
Input kode User dan Password()
Pesan Validasi ()
Get Kode User dan Password()
sd Data Pelanggan
Kasir
Menu Utama Menu Master Data Pelanggan Proses Data Pelanggan
alt
Data Tidak Valid()
Display kd_pelanggan()
Data Berhasil Disimpan()
Display()
Set Save kd_pelanggan,
nm_pelanggan, no_hp, alamat()
Pilih()
Save()
Display()
Display alamat()
Pesan Validasi()
Display no_hp()
Set Save kd_pelanggan,
nm_pelanggan, no_hp, alamat()
Get kd_pelanggan()
Display nm_pelanggan()
Get kd_pelanggan()
41
C. Sequence Diagram Booking
Gambar III.11.
Sequence Diagram Booking
sd Transaksi Booking
Kasir
Menu Utama Menu Transaksi Transaksi Booking Proses Data Pelanggan Data Lapangan Transaksi Booking
alt
Pilih()
Display nm_lap()
Set kd_pelanggan()
Display tgl_booking()
Data Belum Lengkap()
Set kd_lapangan()
Get kd_booking()
Display kd_pelanggan()
Pesan Validasi()
Display kd_lap()
Get kd_booking()
Get kd_pelanggan()
Set tgl_pakai()
Set uang_dp()
Set tgl_pakai()
Set uang_dp()
Set jam_masuk()
Set jam_masuk()
Display()
Display no_hp()
Display tarif()
Display()
Berhasil Disimpan()
Get kd_lap()
Display kd_user()
Set kd_lap()
Display kd_booking()
Display nm_pelanggan()
Set Save kd_booking, tgl_booking,
kd_user, kd_pelanggan, tgl_pakai,
jam_masuk, jam_keluar, kd_lap,
uang_dp()
Set jam_keluar()
Set Save kd_booking, tgl_booking,
kd_user, kd_pelanggan, tgl_pakai,
jam_masuk, jam_keluar, kd_lap,
uang_dp()
Set jam_keluar()
Display alamat()
Save()
Set kd_pelanggan()
42
D. Sequence Diagram Penyewaan
Gambar III.12.
Sequence Diagram Penyewaan
sd Transaksi Penyewaan
Kasir
Menu Utama Menu Transaksi Transaksi
Penyewaan
Proses Transaksi Booking Transaksi
Penyewaan
alt
Display kd_lap()
Display()
Display tgl_sewa()
Set uang_byr()
Display jam_masuk()
Set kd_booking()
Set kd_booking()
Pilih()
Get kd_booking()
Get no_trans()
Display jam_keluar()
Save()
Display kd_pelanggan()
Data Belum Lengkap()
Display tgl_booking()
Set uang_byr()
Display tgl_pakai()
Pesan Validasi()
Display no_trans()
Get no_trans()
Berhasil Disimpan()
Set Save no_trans, tgl_sewa,
kd_booking, uang_byr()
Display total_sewa()
Display lama_sewa()
Set Save no_trans, tgl_sewa,
kd_booking, uang_byr()
Display()
Display kd_user()
43
3.4.5. Deployment Diagram
Gambar III.13.
Deployment Diagram Sistem Penyewaan Futsal
deployment Diagram
Main
«device»
database
<<DBMS>>
MY SQL
futsal_db
«device»
<<Application>>
FutsalProject
NetBeans IDE 8.2
44
3.4.6. User Interface
Gambar III.14.
User Interface Form Login Kasir
Gambar III.15.
User Interface Form Menu Utama Kasir
45
Gambar III.16.
User Interface Form Data Pelanggan
Gambar III.17.
User Interface Form Data Lapangan
46
Gambar III.18.
User Interface Form Data Perkiraan
Gambar III.19.
User Interface Form Booking
47
Gambar III.20.
User Interface Form Penyewaan
Gambar III.21.
User Interface Form Jurnal
48
Gambar III.22.
User Interface Laporan Penyewaan Kasir
Gambar III.23.
User Interface Laporan Penerimaan Kas Kasir
49
Gambar III.24.
User Interface Back Up
Gambar III.25.
User Interface Form Login Pemilik
50
Gambar III.26.
User Interface Form Menu Utama Pemilik
Gambar III.27.
User Interface Form Data User
51
Gambar III.28.
User Interface Laporan Penyewaan Pemilik
Gambar III.29.
User Interface Laporan Penerimaan Kas Pemilik
52
3.5. Implementasi
3.5.1. Code Generation
A. Booking
package futsalproject.form;
import futsalproject.FutsalProject;
import futsalproject.controller.BookingController;
import futsalproject.data.Booking;
import futsalproject.data.DataUser;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.swing.JDesktopPane;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class FormBooking extends javax.swing.JInternalFrame {
DataUser userLogin = new DataUser();
Booking booking = new Booking();
BookingController bCont = new BookingController(FutsalProject.emf);
DefaultTableModel model;
boolean update;
/**
* Creates new form FormBooking
*/
public FormBooking(DataUser user) {
initComponents();
((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);
this.setBorder(null);
model = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
model.addColumn("Kode Booking");
model.addColumn("Tgl. Booking");
model.addColumn("Kode Pelanggan");
model.addColumn("Nama Pelanggan");
model.addColumn("Kode Lapangan");
model.addColumn("Tgl. Pakai");
model.addColumn("Jam Masuk");
model.addColumn("Jam Keluar");
tableBooking.getTableHeader().setFont(new Font("Tahoma Plain", Font.BOLD, 11));
showTableNotExistInPenyewaan(null);
renderTableTgl();
53
renderTableJam();
userLogin = user;
}
private void showTableNotExistInPenyewaan(Date tgl){
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
List<Object[]> list = bCont.findAllBookingNotExistsInPenyewaan(tgl);
for(Object[] obj : list){
model.addRow(obj);
}
tableBooking.setModel(model);
}
private void showTableExistInPenyewaan(Date tgl){
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
List<Object[]> list = bCont.findAllBookingIsExistInPenyewaan(tgl);
for(Object[] obj : list){
model.addRow(obj);
}
tableBooking.setModel(model);
}
private void showTableAllBooking(Date tgl){
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
List<Object[]> list = bCont.findAllBooking(tgl);
for(Object[] obj : list){
model.addRow(obj);
}
tableBooking.setModel(model);
}
private void cariTable(String cari){
List<Object[]> listUser = bCont.searchBooking(cari);
if(listUser.size() == 0){
JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");
}else{
if(cari.isEmpty()){
showTableNotExistInPenyewaan(null);
}else{
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
for(Object[] obj : listUser){
model.addRow(obj);
}
tableBooking.setModel(model);
}
}
}
private void renderTableTgl(){
TableCellRenderer tbr = new DefaultTableCellRenderer(){
SimpleDateFormat sdf=new SimpleDateFormat("dd MMMM yyyy",
Locale.forLanguageTag("in-ID"));
public Component getTableCellRendererComponent(JTable table,
54
Object value, boolean isSelected, boolean hasFocus,
int row, int column){
if(value instanceof Date){
value = sdf.format(value);
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
column);
}
};
tableBooking.getColumnModel().getColumn(1).setCellRenderer(tbr);
tableBooking.getColumnModel().getColumn(5).setCellRenderer(tbr);
}
private void renderTableJam(){
TableCellRenderer tbr = new DefaultTableCellRenderer(){
SimpleDateFormat sdf=new SimpleDateFormat("kk:mm", Locale.forLanguageTag("in-
ID"));
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column){
if(value instanceof Date){
value = sdf.format(value);
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
column);
}
};
tableBooking.getColumnModel().getColumn(6).setCellRenderer(tbr);
tableBooking.getColumnModel().getColumn(7).setCellRenderer(tbr);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
btnTambah = new javax.swing.JButton();
btnUpdate = new javax.swing.JButton();
btnDetail = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
jLabel6 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
tableBooking = new javax.swing.JTable();
cmbTampil = new javax.swing.JComboBox<>();
jLabel7 = new javax.swing.JLabel();
jdcTanggal = new com.toedter.calendar.JDateChooser();
btnCari = new javax.swing.JButton();
jPanel1.setBackground(new java.awt.Color(0, 184, 148));
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
55
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.LINE_AXIS));
btnTambah.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnTambah.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Plus
Math_20px.png"))); // NOI18N
btnTambah.setText("Tambah");
btnTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTambahActionPerformed(evt);
}
});
jPanel2.add(btnTambah);
btnUpdate.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnUpdate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Edit
File_20px.png"))); // NOI18N
btnUpdate.setText("Update");
btnUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpdateActionPerformed(evt);
}
});
jPanel2.add(btnUpdate);
btnDetail.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnDetail.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Check
File_20px_5.png"))); // NOI18N
btnDetail.setText("Lihat Detail");
btnDetail.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDetailActionPerformed(evt);
}
});
jPanel2.add(btnDetail);
jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 255, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("Form Booking");
jSeparator1.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Tampilkan:");
tableBooking.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Kode Booking", "Tgl. Bookingr", "Kode Pelanggan", "Nama Pelanggan", "Kode
Lapangan", "tgl. Pakai", "Jam Masuk", "Jam Keluar"
}
));
jScrollPane1.setViewportView(tableBooking);
56
cmbTampil.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
cmbTampil.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "DP
belum lunas", "Sudah lunas", "Semua booking" }));
cmbTampil.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmbTampilActionPerformed(evt);
}
});
jLabel7.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel7.setForeground(new java.awt.Color(255, 255, 255));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel7.setText("Tanggal Pakai:");
jdcTanggal.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
btnCari.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnCari.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/images/Search_20px.png"))); // NOI18N
btnCari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCariActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jSeparator1)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 864,
Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 78,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmbTampil, javax.swing.GroupLayout.PREFERRED_SIZE, 141,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 92,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jdcTanggal, javax.swing.GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnCari, javax.swing.GroupLayout.PREFERRED_SIZE, 33,
javax.swing.GroupLayout.PREFERRED_SIZE)))
57
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jdcTanggal, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(cmbTampil, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)))
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(btnCari)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 470,
Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void btnDetailActionPerformed(java.awt.event.ActionEvent evt) {
int baris = tableBooking.getSelectedRow();
if(baris == -1){
JOptionPane.showMessageDialog(null, "Pilih data yang mau dilihat!");
}else{
booking = bCont.findOneBooking(tableBooking.getValueAt(baris, 0).toString());
58
update = false;
FormBookingTambah fbt = new FormBookingTambah(userLogin, booking, update);
JDesktopPane desktopPane = getDesktopPane();
desktopPane.add(fbt);
fbt.setVisible(true);
this.dispose();
}
}
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
booking = null;
update = false;
FormBookingTambah fbt = new FormBookingTambah(userLogin, booking, update);
JDesktopPane desktopPane = getDesktopPane();
desktopPane.add(fbt);
fbt.setVisible(true);
this.dispose();
}
private void btnCariActionPerformed(java.awt.event.ActionEvent evt) {
String filter = cmbTampil.getSelectedItem().toString();
if(filter.equalsIgnoreCase("DP belum lunas")){
showTableNotExistInPenyewaan(jdcTanggal.getDate());
}else if(filter.equalsIgnoreCase("Sudah lunas")){
showTableExistInPenyewaan(jdcTanggal.getDate());
}else if(filter.equalsIgnoreCase("Semua booking")){
showTableAllBooking(jdcTanggal.getDate());
}
}
private void cmbTampilActionPerformed(java.awt.event.ActionEvent evt) {
String filter = cmbTampil.getSelectedItem().toString();
if(filter.equalsIgnoreCase("DP belum lunas")){
showTableNotExistInPenyewaan(null);
}else if(filter.equalsIgnoreCase("Sudah lunas")){
showTableExistInPenyewaan(null);
}else if(filter.equalsIgnoreCase("Semua booking")){
showTableAllBooking(null);
}
}
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {
int baris = tableBooking.getSelectedRow();
if(baris == -1){
JOptionPane.showMessageDialog(null, "Pilih data yang mau diupdate!");
}else{
booking = bCont.findOneBookingIsExistInPenyewaan(tableBooking.getValueAt(baris,
0).toString());
if(booking == null){
booking = bCont.findOneBooking(tableBooking.getValueAt(baris, 0).toString());
update = true;
FormBookingTambah fbt = new FormBookingTambah(userLogin, booking, update);
JDesktopPane desktopPane = getDesktopPane();
desktopPane.add(fbt);
fbt.setVisible(true);
this.dispose();
}else{
59
JOptionPane.showMessageDialog(null, "Update tidak berlaku, booking ini telah
lunas!");
}
}
}
// Variables declaration - do not modify
private javax.swing.JButton btnCari;
private javax.swing.JButton btnDetail;
private javax.swing.JButton btnTambah;
private javax.swing.JButton btnUpdate;
private javax.swing.JComboBox<String> cmbTampil;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private com.toedter.calendar.JDateChooser jdcTanggal;
private javax.swing.JTable tableBooking;
// End of variables declaration
}
B. Penyewaan
package futsalproject.form;
import futsalproject.FutsalProject;
import futsalproject.controller.BookingController;
import futsalproject.controller.DataLapanganController;
import futsalproject.controller.DataPelangganController;
import futsalproject.controller.LaporanController;
import futsalproject.controller.PenyewaanController;
import futsalproject.data.Booking;
import futsalproject.data.DataLapangan;
import futsalproject.data.DataPelanggan;
import futsalproject.data.Penyewaan;
import java.awt.event.KeyEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JDesktopPane;
import javax.swing.JOptionPane;
public class FormSewa extends javax.swing.JInternalFrame {
Penyewaan penyewaan = new Penyewaan();
Booking booking = new Booking();
DataPelanggan pelanggan = new DataPelanggan();
DataLapangan lapangan = new DataLapangan();
BookingController bCont = new BookingController(FutsalProject.emf);
60
PenyewaanController sewaCont = new PenyewaanController(FutsalProject.emf);
DataPelangganController pCont = new DataPelangganController(FutsalProject.emf);
DataLapanganController lCont = new DataLapanganController(FutsalProject.emf);
LaporanController lapCont = new LaporanController(FutsalProject.emf);
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy",
Locale.forLanguageTag("id-ID"));
DateFormat df = new SimpleDateFormat("HH:mm");
double totalTarif, totalJam;
long hargaMalam;
long hargaSore;
long jamMalam;
long jamSore;
double diskon;
/**
* Creates new form FormSewa
*/
public FormSewa(Penyewaan penyewaan) {
initComponents();
((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);
this.setBorder(null);
this.penyewaan = penyewaan;
tidakAktif();
comboBoking();
validasiSewa();
}
private void tidakAktif(){
txtNoTrans.setEnabled(false);
cmbKodeBooking.setEnabled(false);
txtTglBooking.setEnabled(false);
txtTglSewa.setEnabled(false);
txtKodeLapangan.setEnabled(false);
txtKodePelanggan.setEnabled(false);
txtNamaPelanggan.setEnabled(false);
txtJenisLapangan.setEnabled(false);
txtJamMasuk.setEnabled(false);
txtJamKeluar.setEnabled(false);
txtLamaSewa.setEnabled(false);
txtDiskonSewa.setEnabled(false);
txtHariLibur.setEnabled(false);
txtTotalSewa.setEnabled(false);
txtUangDp.setEnabled(false);
txtSisaSewa.setEnabled(false);
txtUangBayar.setEnabled(false);
}
private void validasiSewa(){
if(penyewaan == null){
txtUangBayar.setEnabled(true);
txtNoTrans.setText(sewaCont.kodeOtomatis());
txtTglSewa.setText(sdf.format(new Date()));
cmbKodeBooking.setEnabled(true);
btnCetak.setVisible(false);
}else{
btnSimpan.setEnabled(false);
61
txtNoTrans.setText(penyewaan.getNoTrans());
txtTglSewa.setText(sdf.format(penyewaan.getTglSewa()));
dataBooking();
validasiTarifLapangan();
txtLamaSewa.setText(String.valueOf(totalJam));
txtTotalSewa.setText(String.valueOf(totalTarif - diskonMember()));
double dp = Double.parseDouble(txtUangDp.getText());
txtSisaSewa.setText(String.valueOf(totalTarif - dp));
txtUangBayar.setText(String.valueOf(penyewaan.getUangByr()));
}
}
private void comboBoking(){
if(penyewaan == null){
List<Object[]> listBooking = bCont.findAllBooking(null);
List<Object> listKode = new ArrayList<>();
for(Object[] obj : listBooking){
listKode.add(obj[0]);
}
cmbKodeBooking.setModel(new DefaultComboBoxModel(listKode.toArray()));
}else{
Object[] obj = {penyewaan.getKdBooking()};
cmbKodeBooking.setModel(new DefaultComboBoxModel(obj));
}
}
private void dataBooking(){
if(penyewaan == null){
booking = bCont.findOneBooking(cmbKodeBooking.getSelectedItem().toString());
}else{
booking = bCont.findOneBooking(penyewaan.getKdBooking());
}
pelanggan = pCont.findOneDataPelanggan(booking.getKdPelanggan());
lapangan = lCont.findOneDataLapangan(booking.getKdLap());
txtTglBooking.setText(sdf.format(booking.getTglBooking()));
txtKodePelanggan.setText(booking.getKdPelanggan());
txtNamaPelanggan.setText(pelanggan.getNmPelanggan());
txtKodeLapangan.setText(booking.getKdLap());
txtJenisLapangan.setText(lapangan.getJenisLap());
txtJamMasuk.setText(df.format(booking.getJamMasuk()));
txtJamKeluar.setText(df.format(booking.getJamKeluar()));
txtHariLibur.setText(String.valueOf(booking.getHariLibur()));
txtUangDp.setText(String.valueOf(booking.getUangDp()));
}
private void validasiTarifLapangan(){
try{
SimpleDateFormat hr = new SimpleDateFormat("HH:mm");
DateFormat df = new SimpleDateFormat("HH:mm");
Date jamMasuk = df.parse(txtJamMasuk.getText());
Date jamKeluar = df.parse(txtJamKeluar.getText());
Date jam6=(hr.parse("06:00"));
Date jam15=(hr.parse("15:00"));
Date jam18=(hr.parse("18:00"));
Date jam24=(hr.parse("24:00"));
hargaMalam = 80000;
62
hargaSore = 25000;
jamMalam = 0;
jamSore = 0;
// jam malam 18:00 - 24:00
if(jamMasuk.compareTo(jam18) == 0 || jamMasuk.compareTo(jam18) == 1){
if(jamKeluar.compareTo(jam24) == -1 || jamKeluar.compareTo(jam24) == 0){
jamMalam = (jamKeluar.getTime() - jamMasuk.getTime()) / (60*60*1000);
hargaMalam += lapangan.getTarif();
totalTarif = hargaMalam * jamMalam;
totalJam = jamMalam;
}
return;
// jam sore 15:00 - 18:00
}else if(jamMasuk.compareTo(jam15) == 0 || jamMasuk.compareTo(jam15) == 1){
if(jamKeluar.compareTo(jam18) == -1 || jamKeluar.compareTo(jam18) == 0){
jamSore = (jamKeluar.getTime() - jamMasuk.getTime()) / (60*60*1000);
hargaSore += lapangan.getTarif();
totalTarif = hargaSore * jamSore;
totalJam = jamSore;
}
else if(jamKeluar.compareTo(jam24) == -1 || jamKeluar.compareTo(jam24) == 0){
jamSore = (jam18.getTime() - jamMasuk.getTime()) / (60*60*1000);
jamMalam = (jamKeluar.getTime() - jam18.getTime()) / (60*60*1000);
hargaSore += lapangan.getTarif() * jamSore;
hargaMalam += lapangan.getTarif() * jamMalam;
totalTarif = hargaSore + hargaMalam;
totalJam = jamSore + jamMalam ;
}
return;
// jam pagi 06:00 - 15:00
}if(jamMasuk.compareTo(jam6) == 0 || jamMasuk.compareTo(jam6) == 1){
if(jamKeluar.compareTo(jam15) == -1 || jamKeluar.compareTo(jam15) == 0){
long x = (jamKeluar.getTime() - jamMasuk.getTime()) / (60*60*1000);
totalJam = x;
totalTarif = lapangan.getTarif() * x;
}
else if(jamKeluar.compareTo(jam18) == -1 || jamKeluar.compareTo(jam18) == 0){
long x = (jam15.getTime() - jamMasuk.getTime()) / (60*60*1000);
jamSore = (jamKeluar.getTime() - jam15.getTime()) / (60*60*1000);
totalJam = x + jamSore;
x *= lapangan.getTarif();
hargaSore += lapangan.getTarif() * jamSore;
totalTarif = x + hargaSore;
}
else if(jamKeluar.compareTo(jam24) == -1 || jamKeluar.compareTo(jam24) == 0){
long x = (jam15.getTime() - jamMasuk.getTime()) / (60*60*1000);
jamSore = (jam18.getTime() - jam15.getTime()) / (60*60*1000);
jamMalam = (jamKeluar.getTime() - jam18.getTime()) / (60*60*1000);
totalJam = x + jamSore + jamMalam;
x *= lapangan.getTarif();
hargaSore += lapangan.getTarif() * jamSore;
hargaMalam += lapangan.getTarif() * jamMalam;
totalTarif = x + hargaSore + hargaMalam;
}
63
}
}catch(Exception e){
e.printStackTrace();
}
}
private double diskonMember(){
if(txtKodePelanggan.getText().isEmpty()){
diskon = 0;
}else{
try {
List<Penyewaan> list = sewaCont.searchMemberEksis(txtKodePelanggan.getText(),
sdf.parse(txtTglBooking.getText()));
if(!list.isEmpty()){
diskon = totalTarif * (10.0/100);
}else{
diskon = 0;
}
} catch (Exception e) {
e.printStackTrace();
}
}
txtDiskonSewa.setText(String.valueOf(diskon));
return diskon;
}
private void simpan(){
if(txtUangBayar.getText().isEmpty() || txtTotalSewa.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "Data belum lengkap!");
}else{
double harga = Double.parseDouble(txtSisaSewa.getText());
double ubay = Double.parseDouble(txtUangBayar.getText());
if(ubay < (harga)){
JOptionPane.showMessageDialog(null, "Uang bayar kurang!");
}else{
try {
penyewaan = new Penyewaan();
penyewaan.setDiskonSewa(Double.parseDouble(txtDiskonSewa.getText()));
penyewaan.setHariLibur(Double.parseDouble(txtHariLibur.getText()));
penyewaan.setJamSewaKeluar(df.parse(txtJamKeluar.getText()));
penyewaan.setJamSewaMasuk(df.parse(txtJamMasuk.getText()));
penyewaan.setKdBooking(cmbKodeBooking.getSelectedItem().toString());
penyewaan.setKdLap(txtKodeLapangan.getText());
penyewaan.setKdPelanggan(txtKodePelanggan.getText());
penyewaan.setKdUser(booking.getKdUser());
penyewaan.setLamaSewa(Double.parseDouble(txtLamaSewa.getText()));
penyewaan.setNoTrans(txtNoTrans.getText());
penyewaan.setTglSewa(sdf.parse(txtTglSewa.getText()));
penyewaan.setTotalSewa(Double.parseDouble(txtTotalSewa.getText()));
penyewaan.setUangByr(Double.parseDouble(txtUangBayar.getText()));
sewaCont.save(penyewaan);
JOptionPane.showMessageDialog(null, "Data berhasil disimpan!");
JOptionPane.showMessageDialog(null, "Data berhasil disimpan!");
if(JOptionPane.showConfirmDialog(null, "Cetak kwitansi?", "Konfirmasi",
JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
btnCetakActionPerformed(null);
}
btnKembaliActionPerformed(null);
64
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
btnSimpan = new javax.swing.JButton();
btnKembali = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
jPanel3 = new javax.swing.JPanel();
txtNoTrans = new javax.swing.JTextField();
cmbKodeBooking = new javax.swing.JComboBox<>();
jLabel6 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
txtTglBooking = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
txtTglSewa = new javax.swing.JTextField();
jPanel4 = new javax.swing.JPanel();
txtKodeLapangan = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
txtJenisLapangan = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
txtKodePelanggan = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
txtNamaPelanggan = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
txtUangBayar = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
txtSisaSewa = new javax.swing.JTextField();
txtUangDp = new javax.swing.JTextField();
jSeparator3 = new javax.swing.JSeparator();
jPanel6 = new javax.swing.JPanel();
txtJamKeluar = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
txtLamaSewa = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
txtDiskonSewa = new javax.swing.JTextField();
txtHariLibur = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
65
txtJamMasuk = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
txtTotalSewa = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
btnCetak = new javax.swing.JButton();
jPanel1.setBackground(new java.awt.Color(0, 184, 148));
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.LINE_AXIS));
btnSimpan.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnSimpan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Check
File_20px_5.png"))); // NOI18N
btnSimpan.setText("Simpan");
btnSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSimpanActionPerformed(evt);
}
});
jPanel2.add(btnSimpan);
btnKembali.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnKembali.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/images/Undo_20px.png"))); // NOI18N
btnKembali.setText("Kembali");
btnKembali.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnKembaliActionPerformed(evt);
}
});
jPanel2.add(btnKembali);
jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 255, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("Form Penyewaan");
jSeparator1.setForeground(new java.awt.Color(255, 255, 255));
jPanel3.setBackground(new java.awt.Color(0, 184, 148));
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "No. Transaksi",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
new java.awt.Color(255, 255, 255))); // NOI18N
txtNoTrans.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
cmbKodeBooking.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
cmbKodeBooking.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmbKodeBookingActionPerformed(evt);
}
});
jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
66
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Kode Booking");
jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Tgl. Booking");
txtTglBooking.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel1.setText("No. Transaksi");
jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel3.setForeground(new java.awt.Color(255, 255, 255));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Tgl. Sewa");
txtTglSewa.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel3Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtNoTrans, javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtTglSewa, javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel3Layout.createSequentialGroup()
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(cmbKodeBooking,
javax.swing.GroupLayout.PREFERRED_SIZE, 211,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
67
.addComponent(txtTglBooking, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txtNoTrans, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(txtTglSewa, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(cmbKodeBooking, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(txtTglBooking, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel4.setBackground(new java.awt.Color(0, 184, 148));
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data Pelanggan &
Lapangan", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
new java.awt.Color(255, 255, 255))); // NOI18N
txtKodeLapangan.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel8.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel8.setForeground(new java.awt.Color(255, 255, 255));
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel8.setText("Kode Lapangan");
jLabel9.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel9.setForeground(new java.awt.Color(255, 255, 255));
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel9.setText("Jenis Lapangan");
txtJenisLapangan.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel4.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel4.setForeground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Kode Pelanggan");
txtKodePelanggan.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel7.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel7.setForeground(new java.awt.Color(255, 255, 255));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
68
jLabel7.setText("Nama Pelanggan");
txtNamaPelanggan.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(11, 11, 11)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtKodePelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtJenisLapangan, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtKodeLapangan, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtNamaPelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(txtKodePelanggan, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(txtNamaPelanggan, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
69
.addComponent(txtKodeLapangan, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9)
.addComponent(txtJenisLapangan, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel5.setBackground(new java.awt.Color(0, 184, 148));
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Pembayaran",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
new java.awt.Color(255, 255, 255))); // NOI18N
jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
txtUangBayar.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N
txtUangBayar.setForeground(new java.awt.Color(255, 255, 255));
txtUangBayar.setBorder(null);
txtUangBayar.setCaretColor(new java.awt.Color(255, 255, 255));
txtUangBayar.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
txtUangBayar.setOpaque(false);
txtUangBayar.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
txtUangBayarKeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
txtUangBayarKeyTyped(evt);
}
});
jPanel5.add(txtUangBayar, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 90, 210,
30));
jLabel17.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel17.setForeground(new java.awt.Color(255, 255, 255));
jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel17.setText("Sisa Sewa");
jPanel5.add(jLabel17, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 62, 90, -1));
jLabel16.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel16.setForeground(new java.awt.Color(255, 255, 255));
jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel16.setText("Uang Bayar");
jPanel5.add(jLabel16, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 91, 90, 30));
jLabel15.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel15.setForeground(new java.awt.Color(255, 255, 255));
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel15.setText("Uang DP");
jPanel5.add(jLabel15, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 30, 90, -1));
txtSisaSewa.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jPanel5.add(txtSisaSewa, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 60, 210, -
1));
txtUangDp.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
70
jPanel5.add(txtUangDp, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 30, 210, -
1));
jPanel5.add(jSeparator3, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 120, 210,
10));
jPanel6.setBackground(new java.awt.Color(0, 184, 148));
jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data Booking",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
new java.awt.Color(255, 255, 255))); // NOI18N
txtJamKeluar.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel12.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel12.setForeground(new java.awt.Color(255, 255, 255));
jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel12.setText("Diskon Sewa");
txtLamaSewa.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel13.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel13.setForeground(new java.awt.Color(255, 255, 255));
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel13.setText("Lama Sewa");
txtDiskonSewa.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
txtHariLibur.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel10.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel10.setForeground(new java.awt.Color(255, 255, 255));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel10.setText("Jam Sewa Masuk");
jLabel18.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel18.setForeground(new java.awt.Color(255, 255, 255));
jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel18.setText("Hari Libur");
txtJamMasuk.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel14.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel14.setForeground(new java.awt.Color(255, 255, 255));
jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel14.setText("Total Sewa");
txtTotalSewa.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel11.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel11.setForeground(new java.awt.Color(255, 255, 255));
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText("Jam Sewa Keluar");
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
71
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE,
127, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtJamKeluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE,
127, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtLamaSewa,
javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE,
127, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtHariLibur, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE,
127, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtTotalSewa,
javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel6Layout.createSequentialGroup()
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtJamMasuk, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtDiskonSewa, javax.swing.GroupLayout.PREFERRED_SIZE,
210, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
72
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel10)
.addComponent(txtJamMasuk, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtDiskonSewa, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(txtJamKeluar, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtLamaSewa, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13)))
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtHariLibur, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel18))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtTotalSewa)
.addComponent(jLabel14))))
.addContainerGap())
);
btnCetak.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnCetak.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-print-
20.png"))); // NOI18N
btnCetak.setText("Cetak");
btnCetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCetakActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jSeparator1)
73
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnCetak))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 51, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,
384, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jPanel6, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))))
.addGap(66, 66, 66)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnCetak))
.addGap(18, 18, 18)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 97,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 156,
javax.swing.GroupLayout.PREFERRED_SIZE))
74
.addContainerGap(43, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void btnKembaliActionPerformed(java.awt.event.ActionEvent evt) {
FormSewaDaftar fsd = new FormSewaDaftar();
JDesktopPane jd = getDesktopPane();
jd.add(fsd);
fsd.setVisible(true);
this.dispose();
}
private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
simpan();
}
private void cmbKodeBookingActionPerformed(java.awt.event.ActionEvent evt) {
dataBooking();
validasiSewa();
validasiTarifLapangan();
txtLamaSewa.setText(String.valueOf(totalJam));
double hariLibur = Double.parseDouble(txtHariLibur.getText());
txtTotalSewa.setText(String.valueOf((totalTarif + hariLibur) - diskonMember()));
double dp = Double.parseDouble(txtUangDp.getText());
txtSisaSewa.setText(String.valueOf(totalTarif - dp));
txtUangBayar.requestFocus();
}
private void txtUangBayarKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER){
btnSimpanActionPerformed(null);
}
}
private void btnCetakActionPerformed(java.awt.event.ActionEvent evt) {
lapCont.cetakPenyewaan(txtNoTrans.getText(), hargaSore, hargaMalam);
}
private void txtUangBayarKeyTyped(java.awt.event.KeyEvent evt) {
char c=evt.getKeyChar();
75
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) ||
c==KeyEvent.VK_DELETE)){
getToolkit().beep();
evt.consume();
}
}
// Variables declaration - do not modify
private javax.swing.JButton btnCetak;
private javax.swing.JButton btnKembali;
private javax.swing.JButton btnSimpan;
private javax.swing.JComboBox<String> cmbKodeBooking;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JTextField txtDiskonSewa;
private javax.swing.JTextField txtHariLibur;
private javax.swing.JTextField txtJamKeluar;
private javax.swing.JTextField txtJamMasuk;
private javax.swing.JTextField txtJenisLapangan;
private javax.swing.JTextField txtKodeLapangan;
private javax.swing.JTextField txtKodePelanggan;
private javax.swing.JTextField txtLamaSewa;
private javax.swing.JTextField txtNamaPelanggan;
private javax.swing.JTextField txtNoTrans;
private javax.swing.JTextField txtSisaSewa;
private javax.swing.JTextField txtTglBooking;
private javax.swing.JTextField txtTglSewa;
private javax.swing.JTextField txtTotalSewa;
private javax.swing.JTextField txtUangBayar;
private javax.swing.JTextField txtUangDp;
// End of variables declaration
}
76
C. Jurnal
package futsalproject.form;
import futsalproject.FutsalProject;
import futsalproject.controller.JurnalController;
import futsalproject.data.Jurnal;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.swing.JDesktopPane;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class FormJurnal extends javax.swing.JInternalFrame {
Jurnal jurnal = new Jurnal();
JurnalController jCont = new JurnalController(FutsalProject.emf);
DefaultTableModel model;
/**
* Creates new form FormJurnal
*/
public FormJurnal() {
initComponents();
((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);
this.setBorder(null);
model = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
model.addColumn("No. Jurnal");
model.addColumn("No. Transaksi");
model.addColumn("Tanggal Jurnal");
TableJurnal.getTableHeader().setFont(new Font("Tahoma Plain", Font.BOLD, 11));
showTable();
renderTableTgl();
}
private void showTable(){
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
List<Jurnal> list = jCont.findAllJurnal();
for(Jurnal obj : list){
Object[] item = new Object[3];
item[0] = obj.getNoJurnal();
item[1] = obj.getNoTrans();
item[2] = obj.getTglJurnal();
model.addRow(item);
77
}
TableJurnal.setModel(model);
}
private void cariTable(String cari){
List<Jurnal> listUser = jCont.SearchJurnal(cari);
if(listUser.size() == 0){
JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");
}else{
if(cari.isEmpty()){
showTable();
}else{
model.getDataVector().removeAllElements();
model.fireTableDataChanged();
List<Jurnal> list = jCont.findAllJurnal();
for(Jurnal obj : list){
Object[] item = new Object[3];
item[0] = obj.getNoJurnal();
item[1] = obj.getNoTrans();
item[2] = obj.getTglJurnal();
model.addRow(item);
}
TableJurnal.setModel(model);
}
}
}
private void renderTableTgl(){
TableCellRenderer tbr = new DefaultTableCellRenderer(){
SimpleDateFormat sdf=new SimpleDateFormat("dd MMMM yyyy",
Locale.forLanguageTag("in-ID"));
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column){
if(value instanceof Date){
value = sdf.format(value);
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
column);
}
};
TableJurnal.getColumnModel().getColumn(2).setCellRenderer(tbr);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
btnTambah = new javax.swing.JButton();
btnDetail = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
78
jSeparator1 = new javax.swing.JSeparator();
txtCari = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
TableJurnal = new javax.swing.JTable();
jPanel1.setBackground(new java.awt.Color(0, 184, 148));
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.LINE_AXIS));
btnTambah.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnTambah.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Plus
Math_20px.png"))); // NOI18N
btnTambah.setText("Tambah");
btnTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTambahActionPerformed(evt);
}
});
jPanel2.add(btnTambah);
btnDetail.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
btnDetail.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Check
File_20px_5.png"))); // NOI18N
btnDetail.setText("Lihat Detail");
btnDetail.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDetailActionPerformed(evt);
}
});
jPanel2.add(btnDetail);
jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 255, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("Form Jurnal");
jSeparator1.setForeground(new java.awt.Color(255, 255, 255));
txtCari.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
txtCari.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
txtCariKeyPressed(evt);
}
});
jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Cari");
TableJurnal.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
79
"No. Jurnal", "No. Transaksi", "Tanggal Jurnal"
}
));
jScrollPane1.setViewportView(TableJurnal);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jSeparator1)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 864,
Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 78,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtCari, javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(txtCari, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 462,
Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
80
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
jurnal = null;
FormJurnalTambah fj = new FormJurnalTambah(jurnal);
JDesktopPane desktopPane = getDesktopPane();
desktopPane.add(fj);
fj.setVisible(true);
this.dispose();
}
private void btnDetailActionPerformed(java.awt.event.ActionEvent evt) {
int baris = TableJurnal.getSelectedRow();
if(baris == -1){
JOptionPane.showMessageDialog(null, "Pilih data yang mau dilihat!");
}else{
jurnal = jCont.findJurnal(TableJurnal.getValueAt(baris, 0).toString());
FormJurnalTambah fj = new FormJurnalTambah(jurnal);
JDesktopPane desktopPane = getDesktopPane();
desktopPane.add(fj);
fj.setVisible(true);
this.dispose();
}
}
private void txtCariKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
cariTable(txtCari.getText());
}
}
// Variables declaration - do not modify
private javax.swing.JTable TableJurnal;
private javax.swing.JButton btnDetail;
private javax.swing.JButton btnTambah;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTextField txtCari;
// End of variables declaration
}
81
3.5.2. Blackbox Testing
1. Form Login
Tabel III.12.
Hasil Pengujian Black Box Testing Form Login
No. Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1. Kode User
dan Password
tidak diisi
kemudian klik
tombol Login
Kode User
(kosong)
Password:
(kosong)
Sistem akan
menolak akses
dan
menampilkan
pesan
“Masukkan
Kode User dan
Password”
Sesuai
harapan
Valid
2. Mengetikkan
Kode User
dan Password
tidak diisi
atau kosong
kemudian klik
tombol Login
Kode User:
User-002
Password:
(kosong)
Sistem akan
menolak akses
dan
menampilkan
pesan
“Masukkan
password”
Sesuai
harapan
Valid
3. Kode User
tidak diisi
(kosong) dan
Password diisi
kemudian klik
tombol Login
Kode User:
(kosong)
Password:
1234
Sistem akan
menolak akses
dan
menampilkan
pesan
“Masukkan
Kode User”
Sesuai
harapan
Valid
4. Mengetikkan
salah satu
kondisi salah
pada Kode
User atau
Password
kemudian klik
tombol Login
Kode User
User-002
(benar)
Password:
12345
(salah)
Sistem akan
menolak akses
dan kembali
diarahkan ke
halaman Login
Dan
menampilkan
pesan
“Password
salah”
Sesuai
harapan
Valid
5. Mengetikkan
Kode User dan
Password
dengan data
Username:
User-002
(benar)
Sistem akan
menerima
akses login dan
akan
Sesuai
harapan
Valid
82
yang benar
kemudian klik
tombol Login
Password:
1234
(benar)
menampilkan
pesan
“Selamat
datang, Yani”
3.5.3. Spesifikasi Hardware dan Software
Tabel III.13.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Windows 10 64-bit
Processor Intel(R) Celeron(R) CPU 1007U @ 1.50GHz 1.50 GHz
RAM 2,00 GB
Harddisk 500 GB
Monitor 14" LED
Keyboard 108 Key
Printer Ink Jet
Mouse Standart
Software
Kebutuhan menjalankan aplikasi secara local:
Bahasa script programming : JAVA 8.2
Database : MySQL