Anda di halaman 1dari 366

IMPLEMENTASI SMS GATEWAY PEMESANAN JASA SERVIS

MOBIL PADA PT. ISTANA KEBON JERUK - JAKARTA

LAPORAN KULIAH KERJA PRAKTEK

Oleh:

NIM NAMA
1. 1211511637 MUHAMMAD ANGGA N. F.
2. 1211511652 DENIS SATIO
3. 1211511710 FRENDY TRISNO BARUS

FAKULTAS TEKNOLOGI INFORMASI


UNIVERSITAS BUDI LUHUR
JAKARTA

SEMESTER GASAL
2015/2016
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS BUDI LUHUR

LEMBAR PENGESAHAN

NIM NAMA

1. 1211511637 Muhammad Angga N. F.


2. 1211511652 Denis Satio
3. 1211511710 Frendy Trisno Barus

Judul : Implementasi SMS Gateway Pemesanan Jasa Servis Mobil


Pada PT. Istana Kebon Jeruk - Jakarta

Jakarta, 25 Januari 2016

Tim Penguji : Tanda Tangan :

Penguji,
Purwanto, S.Si, M.Kom ……………………………..........

Pembimbing,

Safitri Juanita, S.Kom., M.T.I. ……………………………………..

Ketua Program Studi

............................................
Muhammad Ainur Rony, S.Kom, M.T.I

ii
ABSTRAKSI

Judul : Implementasi SMS Gateway Pemesanan Jasa Servis Mobil Pada PT.
Istana Kebon Jeruk - Jakarta

PT. Istana Kebon Jeruk merupakan authorized Honda dealer, perusahaan ini bergerak di
bidang penjualan, jasa perawatan, dan perbaikan kendaraan beroda empat, dengan standar
mutu dealer, penyediaan suku cadang asli Honda. Sistem pemesanan jasa servis mobil pada
PT. Istana Kebon Jeruk masih dilakukan secara manual sehingga untuk meningkatkan
kepuasan pelanggan dan meningkatkan layanan diperlukan adanya aplikasi SMS gateway
sebagai sarana pemesanan melalui SMS. Aplikasi yang dibuat menggunakan metode
pengembang waterfall, bahasa pemrograman Java dan database MySQL. Pada aplikasi ini
pelanggan dapat memesan jasa servis melalui SMS, sebelum melakukan pemesanan
pelanggan dapat mengecek pemesanan pada jam yang diinginkan pada hari yang sama atau
satu hari sebelum servis. Pelanggan juga dapat mengecek harga paket yang tersedia, selain
itu pelanggan dapat mengubah jam dan tanggal pesanan yang telah dipesan sebelumnya,
pelanggan dapat melakukan pembatalan pesanan sebelum melakukan konfirmasi
pembayaran. Aplikasi ini juga dapat menerima kritik dan saran yang dikirimkan pelanggan
melalui pesan SMS, selain dari sisi pelanggan aplikasi ini dapat mengirimkan pesan dari pihak
PT. Istana Kebon Jeruk melalui pesan broadcast sebagai sarana informasi kepada pelanggan.
Kesimpulan dari penelitian ini adalah dengan adanya aplikasi SMS gateway sebagai sarana
pemesanan jasa servis di PT. Istana Kebon Jeruk, maka dapat mempercepat proses
pemesanan jasa servis lebih realtime dan pelanggan bisa melakukan pemesanan pada hari
yang sama atau satu hari sebelum servis dan dimanapun tempat pengirim SMS berada.

Kata Kunci : servis mobil, pemesanan jasa, PT. Istana Kebon Jeruk, SMS Gateway

Xiv+82 halaman; 80 gambar; 29 tabel; 7 lampiran

iii
SURAT KETERANGAN SELESAI RISET DARI PT. ISTANA KEBON JERUK

iv
KATA PENGANTAR

Alhamdulillah, segala puji dan syukur penulis panjatkan kehadirat Allah SWT yang
telah memberikan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Kuliah
Kerja Praktik (KKP) dengan judul “Implementasi SMS Gateway Pemesanan Jasa Servis Mobil
pada PT. Istana Kebon Jeruk – Jakarta” ini dengan semestinya.
Adapun laporan Kuliah Kerja Praktik (KKP) ini disusun untuk memenuhi syarat
kelulusan jenjang Strata Satu (S-1) pada program studi Teknik Informatika Fakultas
Teknologi Informasi Universitas Budi Luhur. Dalam pengerjaannya banyak yang bisa penulis
jadikan pelajaran untuk bekal yang berguna untuk masa yang akan datang, sebuah
pengalaman yang sangat banyak memberi arti kepada diri penulis untuk menghadapi
tantangan yang telah ada dan menunggu.
Selesainya Kuliah Kerja Praktik (KKP) ini juga tidak lepas dari berbagai pihak yang
telah banyak membantu dan memberikan dorongan baik secara moril dan materiil yang
sangat besar sehingga penulis dapat menyelesaikan Kuliah Kerja Praktik (KKP) ini. Dan tidak
lupa pada kesempatan ini penulis ingin mengucapkan terima kasih kepada :
1. Allah SWT atas Limpahan Rahmat dan Hidayah-Nya.
2. Ayah dan Ibu serta keluarga tercinta, yang telah memberikan dukungan baik secara
moril maupun materiil.
3. Bapak Prof. Ir. Suryo Hapsoro Tri Utomo, Ph.D. selaku Rektor Universitas Budi Luhur
Jakarta.
4. Bapak Goenawan Brotosaputro, S.Kom., M.Sc. selaku Dekan Fakultas Teknologi
Informasi Universitas Budi Luhur.
5. Bapak Muhammad Ainur Rony, S.Kom., M.T.I. selaku Ketua Program Studi Teknik
Informatika, Fakultas Teknologi Informasi Universitas Budi Luhur.
6. Ibu Safitri Juanita, M.T.I., selaku Dosen Pembimbing Penyusunan Kuliah Kerja Praktik
(KKP) ini.
7. Bapak Muhammad Arsyad selaku General Manager PT. Istana Kebon Jeruk
8. Teman – teman yang berada di Universitas Budi Luhur yang telah banyak membantu dan
saling memberi semangat. Semoga persahabatan kita tidak hanya sebatas di kampus
saja, tetapi untuk selamanya. Selamanya kita adalah keluarga.
Seluruh Karyawan PT Istana Kebon Jeruk - Jakarta yang telah meluangkan waktunya
untuk memberikan keterangan yang dibutuhkan. Penulis paham dan mengerti bahwa masih
banyak kekurangan dalam penulisan Kuliah Kerja Praktik (KKP) ini. Akan tetapi penulis
mengharapkan laporan Kuliah Kerja Praktik (KKP) ini dapat memberikan manfaat bagi
seluruh pembaca secara umum, kritik dan saran yang membangun sangat diperlukan untuk
memperbaiki karya – karya ilmiah berikutnya.
Akhir kata kepada semua pihak yang telah membantu terwujudnya laporan Kuliah
Kerja Praktik (KKP) ini semoga Tuhan selalu melimpahkan Rahmat dan Karunia-Nya. Amin.

Jakarta, 25 Januari 2016

Penulis

v
DAFTAR TABEL

Halaman
Tabel 2.1 : Tabel AT Command .......................................... .................................9
Tabel 2.2 : Daftar SMSC ………………………………………………….................................10
Tabel 2.3 : Skema Format SMS Submit PDU……………………...................................12
Tabel 2.4 : Servis Center Address ....................................................................... 12
Tabel 2.5 : PDU Type ................................... .....................................................12
Tabel 2.6 : Destination Address .......................................................................... 13
Tabel 2.7 : Validity Period ................................................................................... 13
Tabel 2.8 : User Data ......................................................................................... 14
Tabel 2.9 : Skema format SMS PDU Penerima ..................................................... 14
Tabel 2.10 : Service Center Address ...................................................................... 15
Tabel 2.11 : PDU Type ......................................................................................... 15
Tabel 2.12 : Originated Address ............................................................................ 15
Tabel 2.13 : Format Penulisan OA ......................................................................... 16
Tabel 2.14 : Penentuan Message class .................................................................. 16
Tabel 2.15 : Service Center Time Stamp................................................................ 16
Tabel 2.16 : User Data ......................................................................................... 17
Tabel 2.17 : Kode ASCII ....................................................................................... 17
Tabel 2.18 : Tabel Default Alphabet 7 bit (septet).................................................. 18
Tabel 3.1 : Format SMS ...................................................................................... 24
Tabel 3.2 : Spesifikasi Tabel Adminitrator ............................................................ 27
Tabel 3.3 : Spesifikasi Tabel Kwitansi .................................................................. 27
Tabel 3.4 : Spesifikasi Tabel Mobil ...................................................................... 27
Tabel 3.5 : Spesifikasi Tabel Paket_Service .......................................................... 28
Tabel 3.6 : Spesifikasi Tabel Pelanggan ............................................................... 28
Tabel 3.7 : Spesifikasi Tabel Saran ...................................................................... 28
Tabel 3.8 : Spesifikasi Tabel Service .................................................................... 28
Tabel 3.9 : Spesifikasi Tabel Service_detil............................................................ 29
Tabel 3.10 : Spesifikasi Tabel Inbox ...................................................................... 29
Tabel 3.11 : Spesifikasi Tabel Outbox.................................................................... 30

vi
DAFTAR GAMBAR

Halaman
Gambar 1.1 : Model Waterfall ..................................................................... 3
Gambar 2.1 : Alur SMS antara dua MS (Talukder, 2010) .............................. 6
Gambar 2.2 : Mekanisme pengiriman SMS (Store and Forward) .................... 8
Gambar 2.3 : Pengecekan Mode Menggunakan Hyper Terminal .................... 10
Gambar 2.4 : Diagram SMS Gateway .......................................................... 19
Gambar 3.1 : Pola Pikir Penelitian ............................................................... 21
Gambar 3.2 : Skema Pengiriman dan Penerimaan ........................................ 23
Gambar 3.3 : ERD (Entity Relationship Diagram) ......................................... 25
Gambar 3.4 : Transformasi ER-Diagram ke LRS (Logic Record Structure) ...... 26
Gambar 3.5 : LRS (Logic Record Struture) ................................................... 26
Gambar 3.6 : Rancangan Layar Form Login ................................................. 30
Gambar 3.7 : Rancangan Layar form Menu Utama Server ............................ 31
Gambar 3.8 : Rancangan Layar Form Master Admin ..................................... 31
Gambar 3.9 : Rancangan Layar Form Master Lihat Data Administrator .......... 32
Gambar 3.10 : Rancangan Layar Form Master Pelanggan ............................... 32
Gambar 3.11 : Rancangan Layar Form Master Pelanggan Lihat data ............... 33
Gambar 3.12 : Rancangan Layar Form Master Data Mobil .............................. 33
Gambar 3.13 : Rancangan Layar Form Master Lihat Data Mobil ...................... 34
Gambar 3.14 : Rancangan Layar Form Master Jenis Paket Servis .................... 34
Gambar 3.15 : Rancangan Layar From Master Lihat Data Jenis Paket Servis .... 35
Gambar 3.16 : Rancangan Layar Form Master Transaksi Pemesanan Servis .... 35
Gambar 3.17 : Rancangan Layar Form Lihat Data Transaksi Pemesanan Servis 36
Gambar 3.18 : Rancangan Layar Form Cetak Kwitansi ................................... 36
Gambar 3.19 : Rancangan Layar Form Lihat Data Transaksi Kwitansi .............. 37
Gambar 3.20 : Rancangan Layar Form Cetak Laporan Pelanggan ................... 37
Gambar 3.21 : Rancangan Layar Form Cetak Laporan Pemesanan .................. 38
Gambar 3.22 : Rancangan Layar Form Broadcast SMS ................................... 38
Gambar 3.23 : Rancangan Layar Form Inbox ................................................ 39
Gambar 3.24 : Rancangan Layar Form Outbox .............................................. 39
Gambar 3.25 : Rancangan Layar Form Saran ................................................ 40
Gambar 3.26 : Flowchart Tampilan Form Login ............................................. 41
Gambar 3.27 : Flowchart Tampilan Form Menu Utama ................................... 42
Gambar 3.38 : Flowchart Tampilan Form Administrator ................................. 44
Gambar 3.29 : Flowchart Master Pelanggan .................................................. 45
Gambar 3.30 : Flowchart Paket Servis ........................................................... 46
Gambar 3.31 : Flowchart SMS Cek Tempat Servis .......................................... 47
Gambar 3.32 : Flowchart Master Mobil .......................................................... 48
Gambar 3.33 : Flowchart Transaksi Kwitansi ................................................. 49
Gambar 3.34 : Flowchart Laporan Pelanggan ................................................ 50
Gambar 3.35 : Flowchart Laporan Pemesanan ............................................... 51
Gambar 3.36 : Flowchart Transaksi Servis ..................................................... 52
Gambar 3.37 : Flowchart Pesan Servis Melalui SMS ....................................... 53
Gambar 3.38 : Flowchart SMS Kirim Saran .................................................... 54
Gambar 3.39 : Flowchart SMS Batal Pesan Servis .......................................... 55
Gambar 3.40 : Flowchart SMS Cek Harga paket Servis ................................... 56
Gambar 3.41 : Flowchart SMS Konfirmasi Pembayaran .................................. 56

vii
Gambar 4.1 : Koneksi Handphone ke Komputer Melalui Bluetooth ................ 59
Gambar 4.2 : Tampilan Layar Form Login .................................................... 59
Gambar 4.3 : Tampilan Layar Form Menu Utama ......................................... 60
Gambar 4.4 : Tampilan Layar Form Master Entry Data Pelanggan ................. 60
Gambar 4.5 : Tampilan Layar Form Master Lihat Data Pelanggan ................. 61
Gambar 4.6 : Tampilan Layar Form Entry Data Mobil ................................... 61
Gambar 4.7 : Tampilan Layar Form Lihat Data Mobil .................................... 62
Gambar 4.8 : Tampilan Layar Form Master Entry Data Paket Servis .............. 62
Gambar 4.9 : Tampilan Layar Form Master Lihat Data Paket Servis ............... 63
Gambar 4.10 : Tampilan Layar Form Master Entry Data Admin ...................... 63
Gambar 4.11 : Tampilan Layar Form Master Lihat Data Admin ....................... 64
Gambar 4.12 : Tampilan Layar Form Entry Data Pesan Servis Mobil ................ 64
Gambar 4.13 : Tampilan Layar Form Lihat Data Pesan Servis Mobil ................ 65
Gambar 4.14 : Tampilan Layar Form Entry Data Kwitansi ............................... 65
Gambar 4.15 : Tampilan Layar Form Lihat Data Kwitansi ............................... 66
Gambar 4.16 : Tampilan Layar Form Report Pelanggan.................................. 66
Gambar 4.17 : Tampilan Layar Form Report Pesanan .................................... 67
Gambar 4.18 : Tampilan Layar Form Broadcast ............................................. 67
Gambar 4.19 : Tampilan Layar Form Saran ................................................... 68
Gambar 4.20 : Tampilan Form Data Inbox .................................................... 68
Gambar 4.21 : Tampilan Form Data Outbox .................................................. 69
Gambar 4.22 : Tampilan Form Panduan ........................................................ 69
Gambar 4.23 : Tampilan Layar Balasan Request Layanan SMS ....................... 70
Gambar 4.24 : Tampilan Layar Balasan Request Layanan SMS ....................... 70
Gambar 4.25 : Tampilan Layar Balasan Request Layanan SMS ....................... 71
Gambar 4.26 : Tampilan Layar Balasan Request Layanan SMS ....................... 71
Gambar 4.27 : Tampilan Layar Balasan Request Cek Tempat dan Waktu ........ 72
Gambar 4.28 : Tampilan Layar Balasan Request Cek Harga ............................ 72
Gambar 4.29 : Tampilan Layar Balasan Request Pemesanan Servis Tanpa Bonus 73
Gambar 4.30 : Tampilan Layar Balasan Request Pemesanan Servis Bonus ...... 73
Gambar 4.31 : Tampilan Layar Balasan Request Batal …………..… ................... 74
Gambar 4.32 : Tampilan Layar Balasan Request Ubah Pesanan Servis ….......... 74
Gambar 4.33 : Tampilan Layar Balasan Request Konfirmasi Pembayaran............. 75
Gambar 4.34 : Tampilan Layar Balasan Request Saran ………………….….…........... 75

viii
DAFTAR SIMBOL

1. Flowchart

Terminal, menggambarkan kegiatan awal /


akhir suatu proses.

Input / Output, digunakan untuk menjabarkan


suatu kegiatan masukan maupun keluaran.

Decision, menggambarkan suatu keputusan atau


tindakan yang harus diambil pada kondisi tertentu.

Modul Terdefinisi, modul yang tidak ditulis, sebab


sudah ada dalam sistem.

Off Page Connector, digunakan untuk


menggambarkan atau menghubungkan antara satu
halaman dengan simbol lain pada halaman yang
berbeda.

Connection, menggambarkan kegiatan awal /


akhir suatu proses.

Proses, menggambarkan proses yang terjadi.

Off-Page Reference, digunakan untuk


menghubungkan satu simbol dengan simbol lain pada
halaman yang sama.

ix
Document, simbol yang menyatakan input berasal
dari dokumen dalam bentuk kertas atau output dicetak
ke kertas

2. Entity Relationship Diagram ( ERD )

Entity Set
Merupakan sekumpulan objek, tempat
yang menunjukkan dimana data dicatat atau
disimpan.

Relationship
Menggambarkan hubungan yang terjadi

Cardinality
Menggambarkan tingkat hubungan yang terjadi
pada dua buah entitas.

Garis
Menunjukkan garis penghubung

1:1 One to One


Perbandingan antara entity pertama dengan entity
kedua berbanding satu banding satu.

1:M One to Many


Perbandingan antara entity pertama dengan entity
Kedua berbanding satu banding banyak.

M:1 Many to One


Perbandingan antara entity pertama dengan entity
Kedua berbanding banyak berbanding satu.

M:M Many to Many


Perbandingan antara entity pertama dengan entity
Kedua berbanding banyak berbanding banyak.

x
DAFTAR ISI

Halaman
LEMBAR JUDUL ...................................................................................................... i
LEMBAR PENGESAHAN ........................................................................................... ii
ABSTRAKSI ............................................................................................................ iii
LEMBAR SURAT SELESAI RISET .............................................................................. iv
KATA PENGANTAR ................................................................................................. v
DAFTAR TABEL ...................................................................................................... vi
DAFTAR GAMBAR ................................................................................................... vii
DAFTAR SIMBOL .................................................................................................... ix
DAFTAR ISI ........................................................................................................... xi

BAB I : Pendahuluan ...................................................................................... 1


1. Latar Belakang ............................................................................... 1
2. Rumusan Masalah .......................................................................... 1
3. Tujuan Penulisan............................................................................ 2
4. Batasan Masalah ............................................................................ 2
5. Metode Pengembangan Perangkat Lunak ........................................ 2
a. Requirements analysis and definition ......................................... 2
b. System and software design ..................................................... 2
c. Implementation and until testing ............................................... 3
d. Integration and system testing .................................................. 3
e. Operation and Maintenance ...................................................... 3
6. Sistematika Penulisan ..................................................................... 3

BAB II : Landasan Teori .................................................................................. 5


1. SMS (Short Message Service) .......................................................... 5
a. Definisi SMS ............................................................................. 5
b. Arsitektur SMS ......................................................................... 5
c. Karakteristik SMS ..................................................................... 6
d. Keuntungan SMS ...................................................................... 7
e. Cara Kerja SMS ........................................................................ 7
2. SMS Gateway ................................................................................. 18
a. Pengertian Gateway ................................................................. 18
b. Pengertian SMS Gateway .......................................................... 19
c. Study Literatur ......................................................................... 19

BAB III : Desain Penelitian dan Rancangan Program .................................... 21


1. Alur Pikir Penelitian ........................................................................ 21
a. Penentuan tempat ................................................................... 21
b. Pelaksanaan ............................................................................ 21
c. Tahapan Perencanaan ............................................................. 22
d. Mempertajam Fokus dan Perumusan Masalah ........................... 22
e. Pengecekan Keabsahan Data ................................................... 22
f. Analisis ................................................................................... 22
g. Desain Penelitian dan Rancangan Program ................................ 22
h. Pembuatan Program ................................................................ 22
i. Implementasi Program Pada Tempat Riset ................................ 22

xi
j. Simpulan Hasil Riset ................................................................ 22
2. Program Aplikasi ............................................................................ 22
a. Analisa Aplikasi Usulan ............................................................. 22
b. Metode Kerja Aplikasi Usulan.................................................... 23
3. Rancangan Basis Data .................................................................... 25
a. ER-Diagram ............................................................................. 25
b. Transformasi ER-Diagram ke Logika Record Structure ................ 26
c. Logical Record Structure. .......................................................... 26
d. Spesifikasi Basis Data. ............................................................. 27
1) Tabel Administrator ........................................................ 27
2) Tabel Kwitansi ............................................................... 27
3) Tabel Mobil .................................................................... 27
4) Tabel Paket Service ........................................................ 27
5) Tabel Pelanggan ............................................................ 28
6) Tabel Saran ................................................................. 28
7) Tabel Service ................................................................. 28
8) Tabel Service Detil ......................................................... 29
9) Tabel SMS Inbox ............................................................ 29
10) Tabel SMS Outbox.......................................................... 29
4. Rancangan Layar ............................................................................ 30
a. Rancangan Layar Form Login ................................................... 30
b. Rancangan Layar Form Menu Utama Server .............................. 30
c. Rancangan Layar Form Master Administrator.............. . ............. 31
d. Rancangan Layar Form Master Lihat Data Administrator ............ 31
e. Rancangan Layar Form Master Pelanggan ................................. 32
f. Rancangan Layar Form Master Lihat Data Pelanggan ................. 32
g. Rancangan Layar Form Master Data Mobil ................................ 33
h. Rancangan Layar Form Master Lihat Data Mobil ........................ 33
i. Rancangan Layar Form Master Jenis Paket Servis ...................... 34
j. Rancangan Layar Form Master Lihat Data Jenis Paket Servis ...... 35
k. Rancangan Layar Form Master Transaksi Pemesanan Servis ....... 35
l. Rancangan Layar Form Master Lihat Data Transaksi Pemesanan
Servis .................................................................................... 36
m. Rancangan Layar Form Transaksi Kwitansi ................................ 36
n. Rancangan Layar Form Lihat Data Transaksi Kwitansi ................ 37
o. Rancangan Layar Form Cetak Laporan Pelanggan...................... 37
p. Rancangan Layar Form Cetak Laporan Pemesanan .................... 38
q. Rancangan Layar Form Broadcast SMS ..................................... 38
r. Rancangan Layar Form Inbox ................................................... 39
s. Rancangan Layar Form Outbox ................................................ 39
t. Rancangan Layar Form Saran ................................................... 40
5. Flowchart ....................................................................................... 40
a. Flowchart Form Login .............................................................. 40
b. Flowchart Form Menu Utama ................................................... 41
c. Flowchart Tampilan Form Master Administrator ......................... 43
d. Flowchart Tampilan Form Master Pelanggan.............................. 45
e. Flowchart Form Paket Servis .................................................... 46
f. Flowchart SMS Cek Tempat Servis Kosong ................................ 47
g. Flowchart Form Master Mobil ................................................... 48

xii
h. Flowchart Transaksi Kwitansi .................................................... 49
i. Flowchart Laporan Pelanggan. .................................................. 50
j. Flowchart Laporan Pemesanan..... ............................................ 51
k. Flowchart Transaksi Servis ....................................................... 52
l. Flowchart Pesan Servis Melalui SMS .......................................... 53
m. Flowchart Kirim Saran .............................................................. 54
n. Flowchart Batal Pesan Servis................................. .................. . 55
o. Flowchart Cek Harga Servis................ ..................................... . 55
p. Flowchart Konfirmasi Pembayaran ......................................... ... 56

BAB IV : Implementasi dan Analisa Hasil Uji Coba ........................................ 58


1. Spesifikasi Hardware dan Software .................................................. 58
a. Aplikasi Server ......................................................................... 58
1) Hardware .......................................................................... 58
2) Software ............................................................................ 58
b. Aplikasi Pelanggan Servis ......................................................... 58
1) Hardware ........................................................................... 58
2) Software....................... ..................................................... 58
2. Implementasi Program ................................................................... 58
3. Tampilan Layar Program ................................................................. 59
a. Aplikasi Server ......................................................................... 59
1) Tampilan Layar Form Login ................................................. 59
2) Tampilan Layar Form Menu Utama ...................................... 60
3) Tampilan Layar Form Master Pelanggan .............................. 60
4) Tampilan Layar Form Master Mobil ...................................... 61
5) Tampilan Layar Form Master Paket Servis ............................ 62
6) Tampilan Layar Form Master Admin .................................... 63
7) Tampilan Layar Form Pesan Servis Mobil ............................. 64
8) Tampilan Layar Form Transaksi Kwitansi ............................. 65
9) Tampilan Layar Form Report Pelanggan .............................. 66
10) Tampilan Layar Form Report Pesanan ................................. 67
11) Tampilan Layar Form Broadcast .......................................... 67
12) Tampilan Layar Form Saran ................................................ 68
13) Tampilan Layar Form Inbox dan Outbox .............................. 68
14) Tampilan Layar Form Panduan ............................................ 69
4. Tampilan Balasan Yang Di Kirim Server Pada Handphone Pelanggan . 70
a. Request Layanan SMS .............................................................. 70
b. Request Cek Tempat dan Waktu Servis ..................................... 71
c. Request Cek Harga Paket ......................................................... 72
d. Request Pemesanan Servis ....................................................... 72
e. Request Batal Pemesanan Servis ............................................... 73
f. Request Ubah Pemesanan Servis............................................... 74
g. Request Konfirmasi Pembayaran ............................................... 74
h. Request Saran ......................................................................... 75
5. Evaluasi Program ........................................................................... 76
a. Kelebihan Program ................................................................... 76
b. Kekurangan Program ................................................................ 76
BAB V : Penutup ............................................................................................. 77
1. Kesimpulan .................................................................................... 77

xiii
2. Saran ............................................................................................ 77

Daftar Pustaka ....................................................................................................... 78


Lampiran-lampiran ................................................................................................. 79

xiv
BAB I
PENDAHULUAN

1. Latar Belakang
PT. Istana Kebon Jeruk yang berlokasi di Jl.Panjang nomor 200, Kebon Jeruk –
Jakarta Barat, merupakan authorized Honda dealer atau perwakilan resmi Honda dealer,
perusahaan yang bergerak di bidang penjualan, jasa perawatan, dan perbaikan
kendaraan bermotor, khususnya mobil Honda, dengan standar mutu dealer, penyediaan
suku cadang asli, dan penjualan unit kendaraan baru Honda.
PT. Istana Kebon Jeruk sangat mengutamakan kepuasan pelanggan. Paradigma
sistem pelayanan yang semula berbasis konvensional kini mulai beralih ke Teknologi
Informasi dan Komunikasi (TIK) seiring dengan berkembangnya kemajuan TIK
ditengah-tengah kehidupan dan aktivitas masyarakat. Melalui TIK, pencatatan data
pelanggan dan info dapat dilaksanakan dengan mudah, lebih sitematik, efektif dan
efisien. Dengan teknologi yang terkomputerisasi, kita dapat melakukan penghematan
waktu dan tenaga untuk melakukan suatu pekerjaan.
PT. Istana Kebon Jeruk memiliki calon pelanggan yang menghubungi untuk melihat
informasi antrian servis, untuk mencegah terjadinya ketidakakuratan data, redudansi
data dan data terisolasi maka sangat diperlukan sebuah sistem yang terorganisir dan
suatu basis data, namun PT. Istana Kebon Jeruk masih menggunakan sistem
pemesanan jasa servis mobil manual dan sehingga diperlukan layanan pemesanan jasa
servis yang dapat membantu pelanggan memesan jasa servis lebih realtime.
Berhubungan dengan masalah diatas, Kuliah Kerja Praktek (KKP) ini membuat
Implementasi SMS Gateway Pemesanan Jasa Servis Mobil pada PT. Istana Kebon Jeruk
– Jakarta.

2. Rumusan Masalah
Berdasarkan latar belakang yang telah dijabarkan, KKP ini membahas mengenai
pemesanan jasa servis mobil pada PT. Istana Kebon Jeruk yang masih menggunakan
sistem pemesanan manual, untuk mencegah terjadinya ketidak akuratan data,
redudansi data dan data terisolasi, maka dapat disimpulkan rumusan permasalahan
sebagai berikut, yaitu :
a. Bagaimana cara pelanggan dapat memesan jasa servis yang realtime?
b. Bagaimana cara untuk mencegah terjadinya ketidakakuratan data, redudansi data
dan data terisolasi?
c. Bagaimana membuat dan merancang sistem pemesanan jasa servis mobil pada PT.
Istana Kebon Jeruk?
d. Bagaimana cara pembuatan laporan data pemesan jasa servis dengan waktu yang
efisien dan akurat?

3. Tujuan Penulisan
Berdasarkan latar belakang dan masalah yang telah dijabarkan di atas, maka
tujuan penulisan Kuliah Kerja Praktek (KKP) ini adalah:
a. Menyediakan sistem informasi layanan interaktif secara langsung kepada pelanggan
dan karyawan PT. Istana Kebon Jeruk.
b. Meningkatkan kualitas pelayanan yang terjangkau dan fleksibel.
c. Menghemat waktu dan tenaga pelanggan dalam melakukan pemesanan jasa servis.
d. Memperkenalkan fasilitas SMS gateway untuk meningkatkan kinerja karyawan.

1
2

e. Memberikan kontribusi di bidang ilmu komputer.


4. Batasan masalah
Pada Kuliah Kerja Praktek (KKP) ini terdapat pembatasan masalah dan ruang
lingkup agar penulisan tidak menyimpang dari pokok permasalahan yang dibahas,
penulisan KKP ini hanya membatasi pada :
a. Sistem ini dibangun untuk pelayanan pemesanan jasa servis bengkel kendaraan
beroda empat.
b. Pemesanan jasa servis ini hanya bisa dilakukan pada pelanggan yang sudah terdaftar
terlebih dahulu di PT. Istana Kebon Jeruk.
c. SMS ini menggunakan terminal telepon seluler yang dihubungkan ke komputer
melalui Bluetooth.
d. Semua aplikasi bekerja dalam lingkungan sistem operasi Windows dengan bahasa
pemrograman Java.
e. Teknis pemesanan jasa servis oleh pelanggan kepada perusahaan yang diatur oleh
sistem.
5. Metode Pengembangan Perangkat Lunak
Metode pengembangan perangkat lunak yang digunakan adalah model waterfall.
Waterfall model mengambil kegiatan proses dasar spesifikasi, pengembangan, validasi,
dan evolusi dan mewakili kegiatan tersebut sebagai fase proses terpisah seperti
spesifikasi persyaratan, perancangan perangkat lunak, implementasi, pengujian, dan
sebagainya. (Sommerville, 2011)
a. Requirements analysis and definition
Sistem layanan, kendala, dan tujuan ditetapkan melalui konsultasi dengan
pengguna sistem, kebutuhan tesebut kemudian ditetapkan secara rinci dan berfungsi
sebagai spesifikasi sistem.
Pada tahap ini digunakan 3 (tiga) metode, yaitu :
 Metode wawancara
Dilakukan kepada pemilik dari perusahaan untuk memperoleh informasi data flow
yang sedang digunakan, berjalan dan mengetahui keinginan pemilik terhadap
sistem aplikasi baru yang akan di implementasikan. Pada metode ini penulis
mewawancarai Bapak Hary Suryadikara, S.E. Sebagai kepala bengkel.
 Metode Kepustakaan
Dilakukan dengan cara mencari informasi yang diperlukan dari sumber
perpustakaan misalnya literature - literatur, buku panduan dan sumber lain yang
mendukung penulisan KKP ini. Pada metode ini Penulis mendatangi perpustakaan
Universitas Budi Luhur.
 Metode analisis dokumen
Dilakukan terhadap dokumen-dokumen yang mendukung informasi kebutuhan
data yang diperlukan dalam pembuatan sistem basis data. Pada metode ini
Penulis melakukan analisis dokumen berjalan yang selama ini digunakan yaitu
data pelanggan, form pemesanan, dan daftar harga servis.
b. System and software design
Proses desain sistem mengalokasikan persyaratan baik untuk sistem perangkat
keras atau perangkat lunak dengan mendirikan sebuah arsitektur sistem secara
keseluruhan. Desain software melibatkan mengidentifikasi dan menggambarkan
abstraksi sistem perangkat lunak yang mendasar. Pada tahap software yang
digunakan adalah Microsoft Visio sebagai aplikasi yang digunakan untuk membuat
diagram dan Netbeans sebagai aplikasi Integrated Development Environtment (IDE)
yang berbasis Java untuk membuat atau merancang Graphic User Interface (GUI).
3

c. Implementation and until testing


Selama tahap ini, desain perangkat lunak disadari sebagai serangkaian program
atau unit program. Unit testing memverivikasi bahwa setiap unit sesuai spesifikasi.
Pada tahap ini software yang digunakan adalah Netbeans sebagai suatu kode editor
atau text, suatu compiler dan suatu debugger. MySQL sebagai database.
d. Integration and system testing
Unit program individu atau program diintegrasikan dan diuji sebagai sistem yang
lengkap untuk memasikan bahwa persyaratan perangkat lunak telah di penuhi.
Setelah pengujian, sistem software diserahkan kepada pelanggan. Pada tahap ini
dilakukan pengujian sistem yang dilakukan dengan cara blackbox testing.
e. Operation and Maintenance
Ini adalah fase yang terpanjang. Sistem ini dipasang dan dimasukkan ke dalam
penggunaan praktis. Pemeliharaan melibatkan mengoreksi kesalahan yang tidak
ditemukan dalam tahap awal siklus, mengingatkan implementasi unit sistem dan
penigkatkan sistem sebagai kebutuhan baru ditemukan.

Berikut ini gambar model waterfall :

Requirements
Definition

System and
Software Design

Implementation
and Unit Testing

Integration and
System Testing

Operation and
Maintenance

Gambar 1.1 : Model Waterfall

6. Sistematika Penulisan
Pembahasan Kuliah Kerja Praktek (KKP) ini dibagi ke dalam bab per bab untuk
mempermudah di dalam pembahasan sistem. Tiap bab masih merupakan satu kesatuan,
dengan beberapa perincian sebagai berikut :
4

BAB I : PENDAHULUAN

Dalam Bab ini dibahas mengenai latar belakang pembuatan Kuliah Kerja Praktek
(KKP), permasalahan yang dihadapi, tujuan yang diharapkan untuk mengatasi
permasalahan batasan-batasan dari masalah yang dibahas, metode perancangan
dan sistematika penulisan Kuliah Kerja Praktek (KKP).

BAB II : LANDASAN TEORI

Bab ini membahas tentang teori - teori dasar yang berkaitan dengan pembuatan
aplikasi ini, mulai dari teori yang bersifat umum sampai teori yang membahas
tentang perangkat lunak yang digunakan untuk membuat aplikasi SMS.

BAB III: ANALISA MASALAH DAN PERANCANGAN PROGRAM

Pada bab ini berisikan tentang uraian permasalahan yang dihadapi, penyelesaian
masalah, jenis perangkat lunak, sistem operasi, dan jenis komputer yang
digunakan, termasuk di dalamnya rancangan layar, flowchart, algoritma program,
dan struktur data yang digunakan.

BAB IV : IMPLEMENTASI DAN EVALUASI PROGRAM

Dalam bab ini pembahasannya adalah mengenai implementasi, cara kerja program
yang di kembangkan, evaluasi terhadap sistem yang diusulkan serta
pengembangan lebih lanjut dari program yang ada.

BAB V : PENUTUP

Bab ini menuliskan mengenai kesimpulan yang didapat dari hasil analisa bab – bab
sebelumnya serta saran yang dapat berguna bagi pengembangan aplikasi ini
selanjutnya.
BAB II
LANDASAN TEORI

1. SMS (Short Message Service)


a. Definisi SMS
SMS adalah bagian (fitur) dari GSM (Global System for Mobile Communication),
dan merupakan teknologi yang memungkinkan pengiriman dan penerimaan pesan
(message) dalam bentuk teks antar mobile phone.(Rossy W, Utomo, & Wellem, 2006).
SMS didukung oleh GSM, TDMA, CDMA yang berbasis pada telepon seluler yang
saat ini banyak digunakan. Karena layanan berbasis SMS telah banyak digunakan
selama beberapa tahun terakhir ini, maka penetrasi telepon selular dan pengguna
yang banyak menggunakan layanan ini sudah membuat layanan berbasis SMS menjadi
sebuah layanan menarik. Pada masa sekarang ini otomatisasi dalam layanan ini
dimanfaatkan untuk berkomunikasi secara singkat dengan para konsumen suatu
perusahaan. Contohnya adalah layanan pesan antar yang menggunakan SMS, ataupun
layanan informasi yang secara otomatis me-reply kepada para pelanggan.
Penambahan fungsi SMS sebagai alat pengirim pesan singkat dari pengguna ke
pengguna lainnya sebenarnya bukan merupakan solusi dari hasil pemikiran serius.
Namun demikian pada akhirnya SMS menjadi sukses secara tak terduga sebagai
layanan messaging paling popular di dunia. Saat ini SMS digunakan tidak terbatas
untuk komunikasi antar pengguna saja, namun ada kalanya SMS dibuat secara
otomatis dengan menggunakan komputer terlebih lagi jika menyangkut pengiriman
dalam jumlah banyak (massal) (Nurlaela, 2013). Dengan menggunakan teknologi SMS,
informasi-informasi tertentu yang terdapat pada suatu perusahaan dapat diakses
secara mobile melalui mobile phone tanpa harus menggunakan GPRS yang tarifnya
cukup mahal di Indonesia (Rossy W et al., 2006). Hal ini tentunya memberikan
pendapatan ekstra bagi operator jaringan yang akan memperoleh bayaran untuk tiap
kiriman SMS melalui jaringannya.
b. Arsitektur SMS
Umumnya SMS dibagi menjadi dua layanan dasar, yaitu SM MT ( Short Message
Mobile Terminate Point to Point) dan SM MO (Short Message Mobile Originate Point to
Point). (Talukder, 2010)
1) SM MT ( Short Message Mobile Terminate Point to Point)
Adalah kemampuan sistem GSM untuk mentransfer pesan singkat dari SC ke
suatu MS, dan mengirimkan kembali informasi pengiriman berupa laporan
keberhasilan dan keegagalan suatu pengiriman. Proses routing pengiriman SMS-MT
sebagai berikut:
a) SMS akan diterima oleh SMSC dari SM.
b) Setelah dilakukan pengontrolan parameter, maka SMSC melalui SMS-GMSC akan
mencari informasi routing tentang MS pelanggan ddi HLR.
c) SMSC akan mengirimkan message melalui SMS-GMSC kepada MS yang ditju
dengan format forward short message.
d) MSC akan mencari informasi MS yang dituju dari VLR, dalam hal ini prosedur
autentikasi juga dijalankan.
e) MSC mengirimkan message ke MS.
f) MSC akan mengirimkan forward short message kembali ke SMSC.

5
6

g) Jika diminta oleh SME, maka SMSC akan mengirimkan laporan status SME yang
mengindikasikan terkirimnya message.
2) SM MO (Short Message Mobile Originate Point to Point )
Adalah kemampuan sistem GSM untuk mentransfer pesan singkat dari suatu
MS ke SME (Short Message Entity) melalui SC, serta meengirimkan kembali
inormasi pengiriman baik itu berhasil ataupun tidak. Proses routing pengiriman
SMS-MO sebagai berikut:
a) MS akan membangkitkan data berupa message yang akan dikirimkan ke MSC.
b) MSC akan mengintrogasi VLR apakah MS yang bersangkutan memiliki layanan
SMS atau tidak dalam proses autentifikasi.
c) MSC akan mengirimkan SM ke SMSC melalui SMS melalui SMS-IWMSC dengan
format forward short message.
d) SMSC akan mengirimkan message ke SME.
e) SMSC akan memberikan SMSC Aknowledgment ke MSC bahwa pengiriman
forward short message telah berlangsung sukses.
f) MSC akan memberikan laporan pengiriman kepada MS yang bersangkutan.

Gambar 2.1 : Alur SMS antara dua MS (Talukder, 2010)

c. Karakteristik SMS
Karakteristik utama SMS adalah SMS merupakan sebuah sistem pengiriman data
dalam paket yang bersifat out-of-band dengan bandwith kecil. Dengan karakteristik ini,
pengiriman suatu burst data yang sangat pendek dapat dilakukan dengan efisiensi
yang sangat tinggi.(Wiharto, 2011).
Selain itu SMS memiliki beberapa karakteristik penting, antara lain :
1) Sebuah pesan singkat yang umumnya terdiri dari 160 karakter (encoding huruf
latin) termasuk spasi.
7

2) SMS dapat dikirimkan ke perangkat stasiun seluler digital lainnya hanya dalam
beberapa detik selama berada pada jangkauan pelayanan GSM (Global System for
Mobile Communication).
3) Perinsip kerjanya adalah menyimpan dan manyampaikan pesan (Store and Forward
Massage). Pesan tidak langsung dikirimkan ke penerima melainkan disimpan
terlebih dahulu di SMSC.
4) Setiap pesan yang berhasil dikirimkan oleh pengirim maka SC ( Service Center) akan
mengirimkan laporan keberhasilan atau kegagalan ke pengirim.
d. Keuntungan SMS
Pada tingkat minimum, keuntungan yang dapat diberikan SMS bagi pemakai
meliputi: pengiriman notifikasi dan peringatan (alert), penyampaian pesan yang
terjamin, handal, mekanisme komunikasi dengan biaya rendah, kemampuan untuk
menyaring pesan dan menanggapi panggilan secara selektif, meningkatnya
produktifitas pelanggan.(Wiharto, 2011)
Pada dasarnya SMS mempunyai manfaat sebagai berikut :
1) Menerima dan mengirim pesan.
2) Memiliki tingkat kegagalan kirim yang sangat kecil sehingga pesan kemungkinan
besar akan sampai tujuan meskipun perangkat yang dituju sedang tidak aktif yang
di sebabkan karena sedang dalam kondisi mati atau berada di luar jangkauan
layanan GSM.
3) Merupakan sebuah mekanisme komunikasi yang tergolong membutuhkan biaya
sangat murah.
Untuk fungsionalitas yang canggih, SMS memberikan beberapa keuntungan
tambahan bagi pelanggan yaitu pengiriman pesan kebeberapa pelanggan sekaligus,
kemampuan menerima informasi yang beragam, integrasi dengan aplikasi data dan
aplikasi berbasis internet lainnya.
Jadi secara umum keuntungan SMS bagi pelanggan adalah kenyamanan,
fleksibilitas, dan integrasi yang tak ketara antar pesan dan akses data.
Keberhasilan dan popularitas SMS antara lain disebabkan oleh :
1) Harga per kiriman tetap/konstan. Apabila beban biaya telepon bervariasi maka
beban biaya kiriman SMS tetap/konstan. Hal ini berpengaruh terutama kepada
pelanggan yang menggunakan kartu GSM pra-bayar yang mempunyai kredit pulsa
terbatas pasa telepon selulernya.
2) Keamanan dan kesopanan. Apabila kita hendak menggunakan telepon seluler
ditempat umum, maka berbicara menggunakannya dirasakan kurang sopan dan
kurang aman, namun sebaliknya mengirim pesan menggunakan SMS adalah lebih
sopan dan privacy lebih terjaga
3) Tidak mengganggu penerima. Seperti halnya e-mail, SMS sebagai alat komunikasi
tidak mengganggu penerima, karena penerima bisa kapan saja dan dimana saja
selama masih mendapat sinyal.
4) Handal (reliable). Jaringan GSM secara umum diakui kehandalannya dalam
transmisi data, dan SMS mewarisi kehandalan tersebut.

e. Cara Kerja SMS


Dalam sistem SMS, mekanisme utama yang dilakukan sistem adalah melakukan
pengiriman short message dari satu terminal ke terminal lain. Hal ini dapat dilakukan
berkat adanya sebuah entitas dalam sistem SMS yang bernama Short Message Service
Center (SMSC), disebut juga Message Center (MC). Pada saat pesan SMS dikirim dari
handphone (mobile orginated) pesan tersebut tidak langsung dikirim ke handphone
8

tujuan (mobile terminated), akan tetapi terlebih dahulu ke SMSC, baru kemudian
pesan tersebut dikirimkan ke handphone tujuan. SMSC merupakan sebuah perangkat
yang melakukan tugas store and forward trafik short message.(Wiharto, 2011) seperti
pada Gambar 2.2:

Gambar 2.2 : Mekanisme pengiriman SMS (Store and Forward)

Pengiriman pesan SMS secara store and forward yaitu pengiriman SMS
memasukkan pesan SMS dan nomor tujuan dan kemudian mengirimkannya (store) ke
server SMS (SMS Center) yang kemudian bertanggung jawab mengirimkan pesan SMS
tersebut (forward) ke nomor telepon tujuan. Didalamnya termasuk penentuan atau
pencarian rute tujuan akhir dari short message dari berbagai sumber seperti Voice Mail
System (VMS), Web-based messaging, E-mail Integration, External Short Messaging
Entities (ESME), dan lain-lain.

Hal ini berarti bahwa pengiriman dan penerima SMS tidak perlu dalam status
berhubungan (connected/online) satu sama lain ketika akan saling bertukar pesan
SMS. Pengiriman pesan SMS secara store and forward berarti pengiriman pesan SMS
menuliskan pesan dan nomor telepon tujuan dan kemudian mengirimkannya (store) ke
server SMS (SMS-Center) yang kemudian bertanggung jawab untuk mengirimkan
pesan tersebut (forward) ke nomor telepon tujuan. Hal ini mirip dengan mekanisme
store and forward pada protokol SMTP yang digunakan dalam pengiriman e-mail
internet. Keuntungan mekanisme store and forward pada SMS adalah, penerima tidak
perlu dalam status online ketika ada pengiriman yang bermaksud mengirimkan pesan
kepadanya. Karena pesan akan dikirim oleh pengirim ke SMSC yang kemudian dapat
menunggu untuk meneruskan pesan tersebut ke penerima ketika ia siap dan dalam
status online di lain waktu. Ketika pesan SMS telah terkirim dan diterima oleh SMSC,
pengirim akan menerima pesan singkat (konfirmasi) bahwa pesan telah terkirim
(message sent). Hal-hal inilah yang menjadi kelebihan SMS dan dikenal sebagai
layanan praktis dari sistem telekomunikasi bergerak.
9

1) AT Command

Dibalik teks SMS yang diterima dan dikirim pada sebuah telepon seluler
sebenarnya adalah sebuah perintah AT Command yang bertugas mengirim atau
menerima data dari dan ke SMS Center. Perintah AT Command tiap-tiap SMS
device bisa berbeda-beda, setiap vendor biasanya memberikan referensi tentang
daftar perintah AT yang tersedia atau bisa di download di internet. AT Command
digunakan untuk berkomunikasi dengan terminal melalui serial port pada
komputer.Dengan menggunakan perintah AT, kita dapat mengetahui kekuatan
sinyal dari terminal, mengirim pesan, menambahkan item pada buku alamat,
mematikan terminal dan banyak fungsi lainnya. Salah satu software yang
digunakan untuk mengetes perintah AT Command adalah windows HyperTerminal
yang biasanya telah tersedia bersama windows installer, sehingga hanya perlu
menambahkan software tersebut dari control panel.

AT Command bisa juga digunakan untuk fungsi lain dari phone, kebanyakan
dari fungsi bisa digunakan sebagai bagian dari MMI (Man Machine Interface), yaitu
tersedia melalui AT Command. Contohnya bisa mengirim sms, membaca sms, cek
kekuatan baterai, atau menulis daftar buku telpon, mengikuti daftar dari AT
Command yang mendukung sms (Talukder, 2010). Tidak semua perintah AT
digunakan pada program, yang diambil hanya yang diperlukan saja, misal untuk
mengirim, membaca, menghapus dan menerima pesan dari terminal. AT Command
yang umum digunakan adalah :

Table 2.1 : Tabel AT Command

Perintah AT Kegunaan
AT Mengecek apakah handphone
telah terhubung
AT+CMGF Menetapkan format mode
dan terminal
AT+CSCS Menetapkan jenis encoding
AT+CNMI Mendeteksi pesan SMS baru
masuk secara otomatis
AT+CMGL Membuka daftar SMS yang
ada pada SIM Card
AT+CMGS Mengirim pesan SMS
AT+CMGR Membaca pesan SMS
AT+CMGD Menghapus pesan SMS

AT Command sebenarnya hampir sama dengan perintah > (prompt) pada


DOS. Perintah-perintah yang dimasukkan ke port dimulai dengan kata AT, lalu
diikuti oleh karakter lainnya, yang memeliki fungsi unik. Contoh : ATE1 digunakan
untuk menanyakan status port. Output “OK” akan tampak dilayar jika kondisi port
tersebut siap untuk berkomunikasi.
10

Gambar 2.3 : Pengecekan Mode Menggunakan Hyper Terminal

2) PDU sebagai bahasa SMS

Data yang mengalir kea tau dari SMSC harus dalam bentuk PDU (Protocol Data
Unit) PDU berisi bilangan-bilangan heksadesimal yang mencerminkan bahasa I/O.
PDU terdiri dari beberapa header yang berbeda pada saat kirim dari SMS ke SMSC
dengan saat SMS diterima dari SNSC.

PDU untuk mengirim SMS terdiri dari delapan header, yaitu sebagai berikut :

a) Nomor SMSC
Header pertama ini terdiri dari tiga subHeader :
(1) Jumlah pasangan heksadesimal SMSC dalam bilangan heksa.
(2) Nasional atau Internasional code.
(3) Nomor SMSC dalam pasangan heksa dibalik-balik, jika tertinggal satu angka
yang tidak memiliki pasangan, angka tersebut akan dipasangkan dengan
huruf F di depannya.
Berikut ini adalah daftar SMSC pada beberapa operator di Indonesia dan cara
penulisannya.

Tabel 2.2 : Daftar SMSC


Operator GSM Nomor SMSC Format dalam PDU
Satelindo 62816124 05 91 26 18 16 42
Excelcomindo 62818445009 07 91 26 18 48 54 00 F9
Telkomsel 6281100000 26 18 01 00 00
IM3 62855000000 26 58 05 00 00 F0
11

b) Tipe SMS
Untuk send type SMS = 1. Jadi bilangan heksanya adalah 01.

c) Nomor Referensi SMS


Nomor referensi ini diartikan 0, jadi bilangan heksa adalah 00. Nanti akan
diberikan sebuah nomor referensi otomatis oleh ponsel atau alat SMS gateway.
d) Nomor Ponsel Penerima
Sama seperti cara penulisan PDU header untuk SMSC, header ini juga terbagi
atas tiga bagian yaitu :
(1) Jumlah pasangan heksa desimal nomor ponsel yang dituju dalam bilangan
heksa.
(2) Nasional atau Internasional code.
(3) Nomor ponsel yang dituju dalam pasangan heksa terbalik.
e) Bentuk SMS
00 dikirim sebagai SMS, 01 dikirim sebagai telex, 02 dikirim sebagai fax.
f) Skema encoding data I/O.
Yaitu skema 7 bit atau 8 bit.
g) Jangka waktu sebelum SMS Expired
Jika bagian ini di skip, berarti waktu berlaku SMS tidak dibatasi sedangkan jika
diisi dengan suatu bilangan integer yang kemudian diubah ke pasangan heksa
tertentu, bilangan tersebut akan mewakili jumlah waktu validasi SMS tersebut.
h) Isi SMS
Header ini terdiri dari 2 subheader, yaitu :
(1) Panjang isi (jumlah huruf dari isi)
Contoh :“hello”, 5 huruf (05 heksa)
(2) Isi berupa pasangan bilangan heksa.

Sebenarnya terdapat dua mode pengiriman SMS, yaitu mode teks dan mode
PDU (Protocol Data Unit).Akan tetapi, sistem mode teks tidak didukung oleh semua
operator GSM maupun terminal. Pada terminal kita dapat mengecek menggunakan
perintah “AT+CMGF=1”. Jika hasilnya error, dapat dipastikan bahwa terminal anda
tidak mendukung mode teks.

A. Text Mode
Mode ini adalah cara termudah untuk mengirim pesan. Pada mode teks
pesan yang kita kirim tidak dilakukan konversi. Teks yang dikirim tetap dalam
bentuk aslinya dengan panjang mencapai 160 (7 bit default alphabet) atau 140
(8 bit) karakter. Sebenarnya mode teks adalah hasil encode yang
direpresentasikan dalam bentuk format PDU. Kelemahannya, kita tidak dapat
menyisipkan gambar dan nada dering ke dalam pesan yang akan dikirim serta
terbatasnya tipe encoding.
B. PDU (Protocol Data Unit)
PDU mode adalah format message dalam heksa desimal octet dan semi-
desimal octet dengan panjang mencapai 160 (7 bit default alphabet) atau 140
(8 bit) karakter. Kelebihan menggunakan mode PDU adalah kita dapat
melakukan encoding sendiri tentunya harus pula didukung oleh hardware dan
operator GSM, melakukan kompresi data, menambahkan nada dering dan
gambar pada pesan yang akan dikirim. Beberapa tipe encoding yang umum
digunakan adalah “PCCP437”, “PCDN”, “8859-1”, “IRA” dan “GSM”. Anda dapat
12

mengeceknya dengan perintah “AT+CSCS”. Kita juga dapat menambahkan


header kedalam pesan yang akan dikirim, seperti timestap, nomor SMSC dan
meta-informasi lainnya. Keterangan lengkap mengenai mode ini dapat dilihat
pada ETSI GSM 03.40 dan GSM 03.38. Aplikasi yang akan dibuat menggunakan
mode PDU dengan encoding 7 bit default alphabet.

3) SMS PDU Pengirim (Mobile Originated)

SMS Submit PDU ialah pesan yang dikirim dari handphone ke terminal yang
kemudian dikirimkan ke SMSC (Wesołowski, 2002). Pada prinsipnya apabila kita
mengirim pesan ke nomor tujuan pesan itu akan melalui SMSC.

Pesan yang akan dikirimkan oleh terminal masih dalam bentuk teks,
sedangkan dalam pengiriman ke SMSC harus dalam bentuk PDU. Untuk itu sebelum
dikirim terminal atau handphone akan melakukan perubahan dari format teks
menjadi format PDU, proses ini disebut proses encodec. Adapun skema dari format
SMS Submit PDU telah diatur dan ditetapkan oleh ETSI sebagai berikut :

Table 2.3 : Skema Format SMS Submit PDU


SCA PDU Type MR DA PID DCS VP UDL UD

a) Service Center Address (SCA)


SCA adalah alamat (nomor) dari SMSC.SCA memiliki tiga komponen utama
yaitu, Len, type of number, dan servis center number. Pada contoh diatas nilai dari
SCA adalah 00.
Table 2.4 : Servis Center Address
Octet Keterangan Nilai
Len Panjang informasi SMSC dalam octet 00
Type of number Format nomor dari SMSC
81 heksa = format lokal <none>
91 heksa = format internasional
Service center number Nomor SMSC dari operator pengirim.
Jika panjangnya ganjil maka pada <none>
karakter terakhir ditambahkan OF
heksa.

b) PDU Type
Nilai default dari PDU Type untuk SMS Submit adalah 10 heksa. Pada contoh di
atas, PDU Type adalah 10 yang memiliki arti :

Tabel 2.5 : PDU Type


Bit no 7 6 5 4 3 2 1 0
Nama RP UDHI SRI VPF VPF RD MTI MTI
Nilai 0 0 0 1 0 0 0 0
13

Keterangan :

(1) RP : Reply path. Parameter yang menunjukkan bahwa alur jawaban


ada.
(2) UDHI : User Data Header. Bit ini bernilai 1 jika data pengiriman dimulai
dengan suatu judul atau nama.
(3) SRI : Status Report Indication. Bit ini bernilai 1 jika suatu status laporan
akan dikembalikan ke SME.
(4) VPF : Validity Period Format. Format dari batas waktu pengiriman jika
pesan gagal diterima.
00 Jika pesan tidak sampai di SMSC.
10 Format relative (satu octet).
01 Format enchanced (tujuh octet).
11 Format absolut (tujuh octet).
(5) RD : Reject Duplicates. Parameter yang menandakan ya atau tidaknya
Service Center akan menerima suatu pengiriman pesan SMS untuk suatu
pesan yang masih disimpan dalam Service Center tersebut. Ia mempunyai MR
dan DA yang sama sebagai pesan dikirimkan dari OA yang sama.
(6) MTI : Messaage Type Indicator. Bit bernilai 0 untuk menunjukkan bahwa
PDU ini adalah SMS Deliver.
c) Message Reference (MR)
Message Reference adalah acuan dari pengaturan SMS. Untuk membiarkan
pengaturan pesan SMS dilakukan sendiri oleh handphone tujuan, maka nilai
yang diberikan adalah “00”. Jadi pada message reference hasilnya adalah 00.

d) Destination Address (DA)


DA adalah alamat (nomor) tujuan, yang terdiri atas panjang nomor tujuan
(Len), format dari nomor tujuan (Type Number) dan nomor tujuan (Destination
Number).

Tabel 2.6 :Destination Address


Oktet Nilai Hasil
Len 12 0C
Type of Number Format Internasional 91
Destination Number 628567155235 265876512553

e) Protocol Identifier (PID)


Untuk contoh diatas nilai dari PID adalah 00.
f) Data Coding Scheme
Pada contoh diatas DCS adalah 00.
g) Validity Period (VP)
Validity Period adalah lama waktu pesan SMS disimpan di SMSC apabila
pesan tersebut gagal diterima oleh handphone penerima.

Tabel 2.7 : Validity Period


Waktu VP Nilai VP
5 menit – 720 menit (12 jam) (waktu VP / 5) – 1
12,5 jam – 24 jam 143 + ((waktu VP – 12) *2)
14

2 – 30 hari 166 + waktu VP


Lebih dari 4 minggu 192 + waktu VP

Pada contoh diatas, waktu VP-nya 4 hari, maka nilai VP adalah 166 + 4 = 170 d =
AA h. Jadi pada Validity Period hasilnya adalah AA.

h) User Data Length (UDL)


Pada contoh diatas nilai dari UDL adalah 0A, yang berarti pesan yang
dikirim adalah sebanyak 5 karakter.
i) User Data (UD)
User Data adalah pesan yang akan dikirim dalam format hexadecimal. Pada
contoh ini pesan SMS yang dikirim adalah “ADMIN”. Pengkodean dari nilai teks
standar menjadi heksadesimal dilakukan dengan bantuan Default Alphabet yang
dibekukan oleh ETSI GSM 03.38 (Tabel ASCII) (Park, Mackay, & Wright 2003).
Hal ini dapat dilihat pada tabel dibawah ini :

Tabel 2.8 : User Data


Nilai Desimal Septet (7 bit) Oktet (8 bit) Hasil
A 65 1000001 10100000 AO
D 68 1000100 11000100 C4
M 77 1001101 11100110 E6
I 73 1001001 01101001 105
N 78 1001110 00100111 27

Dari tabel diatas terlihat bahwa hasil dari pengkodean adalah AOC4E610527
Selanjutnya kode tersebut akan dikirimkan ke SMSC dan SMSC kembali
mengirimkan ke HP pengguna, lalu HP pengguna akan melakukan penkodean
kembali menjadi bentuk teks.

Dari penjelasan diatas diperoleh hasil untuk pengiriman SMS dalam format PDU
untuk contoh tersebut adalah :

A0BAOC4E610527

4) SMS PDU (Mobile Terminated)

SMS Deliver PDU ialah terminal menerima pesan yang datang atau masuk dari
SMSC dalam format PDU.

Dibawah merupakan gambar dari skema format SMS deliver PDU.

Tabel 2.9 : Skema format SMS PDU Penerima


SCA PDU Type OA PID DCS SCTS UDL UD

Dibawah ini merupakan penjelasan masing-masing format dari gambar yaitu sebagai
berikut:
15

a) Service Center Address (SCA)


SCA adalah alamat (nomor) dari SMSC.SCA memiliki tiga komponen utama yaitu,
Len, type of number, dan service center number.

Tabel 2.10 :Service Center Address


Octet Keterangan Nilai
Len Panjang informasi SMSC dalam octet 06
Type of number Format nomor dari SMSC
81 heksa = format lokal 91
91 heksa = format internasional
Service center number Nomor SMSC dari operator pengirim.
Jika panjangnya ganjil maka pada 2618010000
karakter terakhir ditambahkan OF
heksa.
Pada contoh di atas nilai dari SCA adalah 06912618010000

b) PDU Type
Nilai default dari PDU Type untuk menerima SMS adalah 04 heksa, yang
memiliki arti 04 heksa = 00000100

Tabel 2.11 : PDU Type


Bit no 7 6 5 4 3 2 1 0
Nama RP UDHI <none> <none> <none> MMS MTI MTI
Nilai 0 0 0 0 0 1 0 0
Keterangan :

(1) RP : Reply Path. Parameter yang menunjukkan bahwa alur jawaban


ada.
(2) UDHI : User Data Header Indicator. Bit ini bernilai 1 jika data pengirim
dimulai dengan suatu judul atau tema.
(3) SRI : Status Report Indication. Bit ini bernilai 1 jika status laporan akan
dikembalikan.
(4) MMS : More Message to Send. Bit ini bernilai 0 jika ada pesan lebih yang
dikirim.
(5) MTI : Message Type Indicator. Bit ini bernilai 0 untuk menunjukkan
bahwa PDU ini adalah suatu SMS Deliver.

c) Originator Address (OA)


OA adalah alamat (nomor) dari pengirim, yang terdiri dari atas panjangnya
nomor pengirim (Len), format dari nomor pengirim ( Type Number), dan nomor
pingirim (Originator Number). Nilai dari OA pada contoh diatas adalah OE 91
81261813907062.
Tabel 2.12 : Originated Address
Octet Keterangan Nilai
Len Panjang nomor pingirim 0E
Type of number Format dari nomor pengirim
81 heksa = format lokal 91
91 heksa = format internasional
16

Originator number Nomor pengirim dari operator


pengirim. Jika panjangnya ganjil 2618137690349F
maka pada karakter terakhir
ditambahkan OF heksa.
Dibawah ini contoh format penulisan OA :

Tabel 2.13 : Format Penulisan OA


Nomor OA Format dalam PDU
ABCDEFGHIJKLMNOPQRST 14 81 BA DC FE HG JI LK NM PO RQ TS
+ABCDEFGHIJKL 0C 91 BA DC FE HG JI LK
d) Protocol Identifier (PID)
Protocol Identifier adalah tipe satu format dari cara pengiriman pesan, yang
biasanya diatur dari handphone pengirim. Misalnya tipe Standard Text, Fax, E-
mail, Telex, X400, dan lain-lainnya.
Nilai default dari PID adalah 00 = “Standard Text”. Untuk contoh diatas nilai
dari PID adalah 00, sehingga pesan yang diterima berupa text standard.
e) Data Coding Scheme
Data Coding Scheme adalah rencana dari pengkodean data untuk
menentukan kelas dari pesan tersebut apakah berupa SMS teks standar, Flash
SMS, atau bahkan Blinking SMS seperti terlihat pada tabel 2.14 dibawah ini :

Tabel 2.14 : Penentuan Message class


Nilai Character Message Class
(Heksa) Coding
00 default (7 bit) No class
F0 default (7 bit) Class 0 (Immediate display)
F1 default (7 bit) Class 1 (Mobile Equipment specific)
F2 default (7 bit) Class 2 (SIM specific message)
F3 default (7 bit) Class 3 (Terminate Equipment specific)
F4 8-bit Class 0 (Immediate display)
F5 8-bit Class 1 (Mobile Equipment specific)
F6 8-bit Class 2 (SIM specific message)
F7 8-bit Class 3 (Terminate Equipment specific)
Hal yang perlu diperhatikan disini, pada beberapa handphone message dengan
class 0 dengan encoding 7 bit berupa flash SMS, sedangkan dengan encoding 16
bit Unicode (ucs2), message yang didahului “0001” dengan class 0 berupa
blinking flash SMS. Pada contoh diatas DCS adalah 00 yang berarti bahwa pesan
yang diterima merupakan text standart.

f) Service Center Time Stamp (SCTS)


Service Center Time Stamp adalah waktu dari penerimaan pesan oleh SMSC
penerima. SCTS terdri dari tahun, bulan, tanggal, jam, menit dan detik, serta
zona waktu. Nilai SCTS pada contoh diatas adalah 40106061220282.

Tabel 2.15 :Service Center Time Stamp


Nama Nilai Hasil
Tahun 80 08 (2008)
Bulan 10 01 (Januari)
17

Tanggal 70 07
Jam 11 11
Menit 00 00
Detik 00 00
Zona 82 28, dimana 1 unit = 15 menit. Jadi (15x28)/60=7
Waktu jam. Sehingga menjadi GMT + 07.00 = WIB
Dari tabel diatas terlihat bahwa pesan diterima oleh SMSC pada tanggal 07
januari 2008 pukul 11:00:00 WIB

g) User Data Length (UDL)


User Data Length adalah panjang dari pesan yang diterima dalam bentuk
teks standart. Pada dari contoh diatas nilai dari UDL adalah 0A, yang berarti
pesan yang diterima adalah sebanyak 5 karakter.
h) User data (UD)
User Data adalah pesan yang diterima dalam format heksadecimal. Pada
contoh diatas nilainya adalah D3703E0C1ABEC2. Pengkodean dari nilai
heksadecimal menjadi teks standar dengan bantuan tabel koda ASCII (Tabel
2.16) dapat dilihat pada tabel dibawah ini :

Tabel 2.16 : User Data


Nilai Oktet (8 bit) Septet (7 bit) Desimal Hasil
A0 10100000 1000001 65 A
C4 11000100 1000100 68 D
E6 11100110 1001101 77 M
105 01101001 1001001 73 I
27 00100111 1001110 78 N
Dari tabel diatas terlihat bahwa nilai heksadecimal dari AOC4E610527 adalah
“ADMIN”.Ini berarti pesan yang diterima adalah “ADMIN”.

Tabel 2.17 : Kode ASCII


Decimal 0 1 2 3 4 5 6 7 8 9
0
1 LF CR
2
3 SP ! “ # $ % & „
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ „ A B c
10 d e f G h i j K L m
11 n o p Q r s t U V w
12 x y z { | } ~ DEL

Tabel diatas adalah tabel ASCII (American Standard Code for Information
Interchange).
18

Tabel 2.18 : Tabel Default Alphabet 7 bit (septet)


B7 0 0 0 0 1 1 1 1
B6 0 0 1 1 0 0 1 1
B5 0 1 0 1 0 1 0 1
B4 B3 B2 B1 0 1 2 3 4 5 6 7
0 0 0 0 0 @ Δ SP 0 P p
0 0 0 1 1 £ _ ! 1 A Q A q
0 0 1 0 2 $ ø “ 2 B R D R
0 0 1 1 3 ¥ Γ # 3 C S C S
0 1 0 0 4 è Λ 4 D T D T
0 1 0 1 5 é Ω % 5 E U E U
0 1 1 0 6 ù Π & 6 F V F V
0 1 1 1 7 ì Ψ „ 7 G W G W
1 0 0 0 8 ò Σ ( 8 H X H X
1 0 0 1 9 ç Θ ) 9 I Y I Y
1 0 1 0 10 LF Ξ * : J Z J Z
1 0 1 1 11 ø 1) + ; K Ã K Ä
1 1 0 0 12 Ø Æ , < L Õ L Ö
1 1 0 1 13 CR æ - = M Ñ M Ň
1 1 1 0 14 Å ß . > N Ü N Ü
1 1 1 1 15 å È / ? O §¥ O À
Tabel diatas adalah tabel Default Alphabet 7 bit (septet).

f. Layanan Aplikasi SMS


Layanan aplikasi SMS pada dasarnya memiliki karakteristik tersendiri yaitu
keterbatasan jumlah karakter yang dapat dituliskan. Karakteristik tersebut merupakan
salah satu masalah utama yang mendasari pengembangan aplikasi SMS sehingga
informasi yang disampaikan harus singkat, padat dan jelas.

Berdasarkan mekanisme distribusi pesan SMS oleh aplikasi SMS, terdapat empat
macam mekanisme pengiriman pesan, yaitu :

1) Pull yaitu pesan SMS yang dikirimkan ke pengguna berdasarkan permintaan


pengguna.
2) Push-Event Based yaitu pesan SMS yang diaktivasi oleh aplikasi berdasarkan
kejadian yang berlangsung.
3) Push-Scheduled yaitu pesan SMS yang diaktivasi oleh aplikasi berdasarkan waktu
yang telah terjadwal.
4) Push-Personal Profile yaitu pesan SMS yang diaktivasi oleh aplikasi berdasarkan
profil dan preference dari pengguna.

2. SMS Gateway
a. Pengertian Gateway
Istilah gateway, bila dilihat pada kamus Inggris-Indonesia diartikan sebagai pintu
gerbang. Namun pada dunia komputer, gateway dapat berarti juga sebagai jembatan
penghubung antar satu sistem dengan sistem lain yang berbeda, sehingga dapat terjadi
suatu pertukaran data antar sistem tersebut. Gateway adalah sebuah perangkat yang
digunakan untuk menghubungkan satu jaringan komputer dengan satu atau lebih
19

jaringan komputer yang menggunakan protokol komunikasi yang berbeda sehingga


informasi dari satu jaringan komputer dapat diberikan kepada jaringan komputer lain
yang protokolnya berbeda.(Barri, Lumenta, & Wowor, 2015)

b. Pengertian SMS Gateway


SMS gateway adalah sebuah perangkat yang menawarkan layanan transit SMS,
mentransformasikan pesan ke jaringan selular dari media lain, atau sebaliknya,
sehingga memungkinkan pengiriman atau penerimaan pesan SMS dengan atau tanpa
menggunakan ponsel. SMS Gateway merupakan perpaduan antara layanan telepon
seluler dengan komputer, dimana komputer akan merespon secara otomatis setiap
ada request perintah yang didapat via SMS, dan komputer akan mengirim jawaban
dari request via SMS jika sesuai dengan format yang dapat diterjemahkan oleh
komputer. (Hestiningsih, Sulistiyo, & Cahyanti, 2014)

Sifat utama SMS Gateway adalah :

1) Auto-Reply, SMS Gateway secara otomatis akan membalas SMS yang masuk. (Barri
et al., 2015)
2) Pengiriman masal, disebut juga dengan istilah SMS Broadcast. Bertujuan untuk
mengirim SMS ke banyak tujuan secara bersamaan. (Barri et al., 2015)

Gambar 2.4 : Diagram SMS Gateway

3. Study Literatur

a. Jurnal berjudul “Rancangan Bangun Sistem Informasi Manajemen Peralatan Bengkel


Berbasis Web deangan SMS GATEWAY di Politeknik Negeri Semarang”, yang ditulis
oleh Indhawati Hestiningsih, Wahyu Sulistyo, dan Isty Ayu Cahyani (2014). Pada
jurnal ini dibahas tentang manajemen pemeliharaan peralatan bengkel dengan
teknologi SMS Gateway, jurnal ini dibuat karena Politeknik Negeri Semarang masih
menggunakan cara manual dalam manajemen pemeliharaan peralatan bengkel. Pada
sistem yang akan dibuat diharapkan dapat membantu kinerja teknisi dan semua
pihak yang bersangkutan dalam hal melakukan jadwal pemeliharaan alat dan
mengetahui adanya kerusakan alat.
b. Jurnal berjudul “Aplikasi SMS Gateway sebagai sarana penunjang Informasi
Perpustakaan Pada Sekolah Menengah Pertama Negeri 1 Arjosari”, yang ditulis oleh
Fetty Nurlaela (2013). Pada jurnal ini dibahas pembuatan aplikasi SMS Gateway yang
dapat digunakan untuk memudahkan petugas perpustakaan dalam mengolah sistem
informasi perpustakaan dan menyampaikan informasi kepada anggota perpustakaan
dengan format SMS.
20

c. Jurnal berjudul “Perancangan Aplikasi SMS Gateway Untuk Pembuatan Kartu


Pepustakaan di Fakultas Teknik Unsrat”, yang ditulis oleh Maria. W.H Barri, Arie. S.M.
Lumenta, dan Anneke Wowor (2015). Pada jurnal ini dibahas tentang pembuatan
aplikasi SMS Gateway yang dapat diterapkan di perpustakaan Fakultas Teknik
UNSRAT. Aplikasi SMS Gateway yang dibuat bertujuan untuk memperlancar,
mempermudah, mengefesienkan kegiatan administrative di perpustakaan.
Perancangan aplikasi SMS Gateway dilakukan denga menggunakan aplikasi GAMMU
dan JAVA.
d. Jurnal berjudul “Perancangan dan Implementasi Sistem Informasi Layanan Short
Messaging Service (SMS)”, yang ditulis oleh Cahyo Rossy W, Wiranto Herry Utomo,
dan Theophilus Wellem (2006). Pada jurnal ini dibahas pembuatan layanan berbasis
SMS untuk sistem informasi data pertandingan, serta perancangan sistemnya. Sistem
yang dibuat dapat menambah, mengubah, ataupun menghapus tanpa harus melalui
PC (Personal Computer) tetapi dengan menggunakan sebuah telepon seluler.
e. Jurnal berjudul “Sistem Informasi Akademik Berbasis SMS Gateway”, yang ditulis
oleh Yudi Wiharto (2011). Pada jurnal ini dibahas pembuatan sistem informasi
akademik berbasis SMS Gateway yang bertujuan memudahkan siswa atau wali siswa
untuk dapat me-request dan mengetahui informasi-informasi penting dari sekolah
yang bisa didapatkan kapanpun dan dimanapun.

Perbedaan KKP yang dibuat dengan Penelitian sebelumnya:

Pada penelitian ini dibahas mengenai layanan SMS berbasis desktop untuk
pemesanan jasa servis mobil. Sistem yang dibuat dapat memesanan jasa servis, mengecek
pemesanan, memberi masukan kapanpun dan dimanapun. Aplikasi yang dibuat bertujuan
untuk menyediakan sistem informasi layanan interaktif secara langsung kepada pelanggan
atau sebaliknya, meningkatkan kualitas pelayanan yang terjangkau dan fleksibel, dan
memberikan kontribusi dibidang ilmu komputer.
BAB III
DESAIN PENELITIAN DAN RANCANGAN PROGRAM

1. Alur Pikir Penelitian


Alur pikir dapat dilihat pada gambar 3.1

Design Penelitian
Mulai Pembuatan program
rancangan program

Penentuan tempat Analisis Implementasi


Program pada
tempat riset

Pelaksanaan(observ
Pengecekan
asi, inteview dan Simpulan hasil riset
Keabsahan data
dokumen)

Mempertajam fokus
Tahapan
dan perumusan Selesai
perencanaan
masalah

Gambar 3.1: Pola Pikir Penelitian

a. Penentuan Tempat
Pada tahap ini ditentukan PT Istana Kebon Jeruk yang beralamat di Jalan Kebon
Jeruk No.200, Jakarta Barat sebagai tempat riset.
b. Pelaksanaan
Pada tahap pelaksanaan, dilakukan metode wawancara, metode
kepustakaandan metode analisis dokumen. Berikut yang dilakukan pada metode ini:
a) Pada metode wawancara penulis mewawancarai Bapak Harry Suryadikara, S.E.
selaku kepala bengkel PT Istana Kebon Jeruk.
b) Pada metode kepustakaan penulis mendatangi perpustakaan Universitas Budi
Luhur.

21
22

c) Pada metode analisis dokumen penulis melakukan analisis dokumen berjalan


yang selama ini digunakan yaitu data pelanggan, form pesanan, dan daftar harga
servis.
c. Tahapan Perencanaan
Pada tahap perancanaan, Penulis merencanakan membuat sistem berbasis SMS
untuk pemesanan jasa sevis, yaitu menggunakan sistem SMS Gateway yang
dikarenakan sistem ini lebih tepat untuk menunjang kinerja karyawan PT Istana
Kebon Jeruk.
d. Mempertajam Fokus dan Perumusan Masalah
Pada tahap mempertajam fokus dan perumusan masalah, dilakukan
pengumpulan jurnal yang mendukung KKP yaitu jurnal tentang SMS Gateway dan
dilakukan pendataan tentang masalah apa saja yang terdapat pada divisi bengkel PT
Istana Kebon Jeruk.
e. Pengecekan Keabsahan Data
Pada tahap pengecekan keabsahan data, dilakukan pengecekan data keabsahan
data dokumen berjalan untuk memastikan dokumen memang milik PT Istana Kebon
Jeruk.
f. Analisis
Pada tahap analisis, dilakukan analisa terhadap dokumen yang sudah disahkan
oleh pihak PT Istana Kebon Jeruk untuk mendukung perancangan sistem.
g. Desain Penelitian Rancangan Program
Pada tahap ini, membuat rancangan layar progam dan alur proses transaksi
yang digunakan sebagai penelitian.
h. Pembuatan Program
Pada tahap pembuatan program, penulis menggunakan Bahasa Java sebagai
bahasa pemrograman, Netbeans sebagai aplikasi Integrated Development
Environtment (IDE) yang berbasis Java untuk membuat atau merancang Graphic
User Interface (GUI), dan MySQL sebagai database.
i. Implementasi Program Pada Tempat Riset
Pada tahap implementasi program pada tempat riset, dilakukan percobaan
aplikasi yang dibuat pada divisi bengkel PT Istana Kebon Jeruk
j. Simpulan Hasil Riset
Pada tahap simpulan hasil riset, Penulis menyimpulkan akan membuat sistem
informasi untuk pemesanan jasa servis dengan menggunakan SMS Gateway yang
bertujuan memberikan layanan pemesanan jasa servis yang dapat membantu
pelanggan memesan jasa servis lebih realtime.
2. Program Aplikasi
a. Analisa Aplikasi Usulan
Analisa aplikasi yang dimaksud adalah untuk memberikan penyelesaian terhadap
masalah yang dihadapi oleh PT. Istana Kebon Jeruk mengenai beberapa kendala
yang telah disebutkan pada indentifikasi masalah. Salah satu aplikasi yang dapat
digunakan untuk mengatasi masalah adalah aplikasi berbasiskan SMS Gateway yang
bersifat interaktif.
Dengan cara ini main dealer atau admin dapat mengirimkan informasi lainnya
langsung dari server yang digunakan oleh admin, pelanggan yang sudah mendaftar
tersebut menggunakan aplikasi mobile yang sudah terinstal di handphonenya.
b. Metode Kerja Aplikasi Usulan
Sistem aplikasi berbasis SMS ini dijalankan pada sebuah komputer yang sudah
di pasang aplikasi SMS Gateway yang terhubung dengan database dan
23

menggunakan sebuah handphone yang dihubungkan, dengan komputer melalui port


MSB/Bluetooth sebagai terminal dimana alat ini akan berfungsi untuk menerima
semua pesan yang masuk dan membalas respon. SMS/data hasil pengolahan
program secara otomatis.
Aplikasi ini akan berjalan setelah menerima permintaan dari pelanggan,
permintaan tersebut akan diproses dan hasilnya akan dikirimkan kembali kepada
server tersebut
Di bawah ini adalah tahapan-tahapan umum proses yang dilakukan pada
aplikasi ketika ada seorang pelanggan melakukan pengiriman SMS (misal : Cek harga
paket servis).
1. Pelanggan sebagai pengirim mengirim pesan SMS dengan format tertentu yang
telah ditentukan dan diterima oleh SMSC (SMS Center).
2. SMS yang telah masuk pada SMSC akan kirim ke komputer server melalui
handphone sebagai terminal-nya Setelah itu SMS yang masuk akan disimpan ke
dalam database.
3. Kemudian SMS akan diolah oleh aplikasi yang kemudian manghasilkan pesan
balasan untuk dikirim kembali kepada SMSC melalui handphone sebagai terminal.
4. SMS yang telah masuk pada SMSC dari handphone server akan diteruskan kepada
pelanggan yang dituju.

Jaringan
GSM/CDMA
Connector

Modem/ Komputer
Client/Pengirim
Handphone Server
terminal

Gambar 3.2: Skema Pengiriman dan Penerimaan

Sedangkan untuk tahapan-tahapan atau proses yang server dalam mengolah


data SMS yang masuk adalah sebagai berikut:
1. Agar dapat berkomunikasi dengan handphone GSM maka perlu dilakukan koneksi.
Dalam hal ini komputer akan melakukan komunikasi melalui COM Serial Port
untuk mengetahui apakah handphone sudah siap digunakan untuk proses
penerimaan atau pengiriman atau pengiriman SMS.
2. Jika ada SMS yang masuk, maka server akan memeriksa apakah format pesan
yang dikirimkan adalah benar atau salah. Jika salah maka server akan
mengirimkan SMS balasan dengan informasi bahwa format yang di kirimkan
salah. Dan jika benar, maka, server akan melalukan pemotongan-pemotongan
terhadap pesan yang diterima untuk proses berikutnya. pada saat ini juga
dilakukan pengecekan nomor handphone pengirim, apakah pengirim sudah
terdaftrakan atau belum.
3. Dan jika nomor handphone belum ada di database server, maka server tidak akan
mengirimkan SMS balasan.
24

4. Dan apabila nomor handphone pengirim sudah terdaftar, maka server akan
melakukan proses selanjutnya, yaitu pengolahan pesan yang telah dikirim untuk
menghasilkan Informasi yang dibutuhkan baik oleh pengirim untuk dikirim
sebagai balasan.
Dalam aplikasi usulan ini, untuk mendukung tahapan-tahapan atau proses yang
diiakukan di atas memanfaatkan database berisikan informasi yang dibutuhkan. Dan
semua hasil dari proses yang diiakukan disimpan ke dalam database ini sebagai data
yang dapat dilaporkan kepada pihak pengelola jika dibutuhkan.
Seperti halnya SMS yang masuk atau keluar disimpan ke dalam tabel
inbox/outbox dan isi pesan disimpan di tabel yang sesuai dengan pesan tersebut.
Kemudian dalam penggunaan aplikasi ini, terdapat beberapa ketentuan yaitu :
1. Semua proses akan berjalan jika server sudah terkoneksi dengan handphone
GSM.
2. Semua fasilitas yang terdapat di aplikasi ini dapat di request oleh pelanggan
yang sudah terdaftar. Semua SMS yang dianggap valid adalah SMS yang memiiiki
format yang benar sesuai yang ditentukan dan dikirimkan oleh pengirim yang
berhak saja, yaitu pelanggan yang nomor handphone-nya telah terdaftar.

Tabel 3.1 : Format SMS


FORMAT SMS KETERANGAN
Layanan SMS: Berisikan informasi format SMS apa
Layanan<spasi>SMS saja yang dapat diakses untuk ke
tahap selanjut nya.
PEMESANAN SERVIS: Untuk pelanggan melakukan
Servis<spasi>pilih_paket1<- transaksi pemesanan jasa servis
>pilih_paket2<spasi>jam_servis<spasi
>tgl_servis<spasi>no_plat
UBAH PEMESANAN SERVIS Untuk pelanggan melakukan
Ubah<spasi>no_servis<spasi>jam_ser pengubahan pemesanan jasa servis
vis<spasi>tgl_servis
KONFIRMASI PEMBAYARAN Untuk konfirmasi pemesanan jasa
Konfirmasi<spasi>no_servis<spasi>tot servis
al<spasi>n/r_atm<spasi>a/n_atm<sp
asi>bank
BATAL PEMESANAN SERVIS Untuk pelanggan melakukan
Batal<spasi>no_servis pembatalan jasa servis

KRITIK / SARAN Untuk memberikan masukan kritik


Saran<spasi>isi_saran dan saran dari pelanggan
CEK SERVIS JAM KOSONG Untuk pelanggan mendapatkan
Cek<spasi>servis<spasi>jam_servis<s informasi jam dan tanggal untuk
pasi>tanggal_servis servis tersedia atau tidak
CEK HARGA PAKET SERVIS Untuk pelanggan mendapatkan
Cek<spasi>harga informasi harga paket yang tersedia

CEK STATUS PEMBAYARAN Untuk pelanggan mengetahui status


Cek<spasi>status<spasi>no_servis pembayaran setelah melakukan
konfirmasi pembayaran
25

Berikut ini adalah bebarapa contoh penggunaan format SMS diatas:


a) Layanan SMS : layanan SMS
b) Cek servis jam kosong : cek servis 09 21
c) Cek harga paket servis : cek harga
d) Pemesanan servis : servis p1-p2 09 21 b9720vju
e) Ubah pemesanan servis : ubah srv0001 13 21
f) Batal pemesanan servis : batal srv0001
g) Konfirmasi pembayaran : konfirmasi srv0001 150000 1234532112 denis satio BCA
h) Cek status pembayaran : cek status srv0001
i) Saran: saran dealer bagus cepat dan bersih

3. Rancangan Basis Data


Dalam pembuatan aplikasi ini digunakan sebuah database yang menyimpan semua
data-data yang dibutuhkan untuk kelangsungan prose sistem. Dan dalam pembuatan
database tersebut dibutuhkan beberapa rancangan hingga akhirnya database tersebut
dapat berfungsi secara maksimal. Berikut ini adalah beberapa rancangan yang dibuat
a. ER-Diagram (Entity Relationship Diagram)
Pada ER-Diagram ini dijelaskan bahwa setiap pelanggan dapat melihat informasi
dengan pengiriman format pesan SMS yang telah ditentukan. Dan diterima oleh
handphone receiver lalu disimpan ke dalam database. Setelah diproses, server akan
mengirimkan balasan sesuai dengan SMS permintaan tersedia.

M Id_inbox* No_kwitansi*
Sms_outbox Terima Sms_Inbox Kwitansi
No_hp Tgl_kwitansi
isi_sms
Id_outbox* waktu_sms
Id_outbox* id_pelanggan* M 1
No_hp
isi_sms
waktu_sms Dapat id_pelanggan* Ada
no_inbox*
No_kwitansi* No_service*
Id_saran* No_service* No_service* Tgl_transaksi
Id_pelanggan* 1
id_pelanggan* 1 1 id_pelanggan
Area_service
M 1 M N Tgl_service
Saran Kirim Pelanggan Bisa Service Jam_service
Jam_akhir
Uang_muka
id_pelanggan* 1 M Total_biaya
id_saran* Status
Isi_saran nama_pelanggan
no_hp Keterangan_pembayaran
Waktu_sms
alamat
Punya id_pelanggan* No_service*
Detail_service
Plat_no* id_paket*

M
N
id_admin* plat_no*
Nm_admin id_paket*
Administrator mobil merk Jenis_paket
No_hp Bonus_service Paket_Service
Username Keterangan
password biaya

Gambar 3.3 : ERD (Entity Relationship Diagram)


26

b. Transformasi ER-Diagram ke LRS (Logical Record Structure)


Gambar dibawah ini adalah merupakan kegiatan yang membentuk suatu LRS
berdasarkan diagram yang berhubungan dengan entitas ER-Diagram.

Id_inbox*
No_hp No_kwitansi*
Sms_Inbox isi_sms Tgl_kwitansi Kwitansi
Sms_outbox
waktu_sms No_service
Id_Pelanggan*
Id_Outbox* M
Id_outbox* M N
No_hp id_pelanggan*
Dapat
isi_sms Terima no_inbox* No_kwitansi* Ada
waktu_sms No_service*

No_service*
Tgl_transaksi
Id_saran*
1 1 M Area_service
id_pelanggan*
Tgl_service
Jam_service
M 1 M N
Saran Kirim Pelanggan Bisa Service Jam_akhir
Uang_muka
No_service* Total_biaya
Id_pelanggan* Status
1 id_pelanggan* 1
id_saran* nama_pelanggan Keterangan_pembayaran
Isi_saran no_hp
Waktu_sms alamat
No_service*
id_paket* Detail_service
id_pelanggan*
Punya
plat_no*

1
id_admin*
Nm_admin plat_no* id_paket*
Administrator M
No_hp merk Paket_Service Jenis_paket
Username Bonus_service Keterangan
password biaya
mobil

Gambar 3.4 : Transformasi ER-Diagram ke LRS (Logic Record Structure)

c. LRS (Logical Record Structure)


Berikut ini adalah LRS yang terbentuk berdasarkan diagram hubungan
entitas ER-Diagram.
Sms_outbox Sms_inbox Kwitansi

Id_outbox* Id_inbox* No_kwitansi*


id_pelanggan* Id_pelanggan* Tgl_kwitans
No_hp No_hp No_service*
isi_sm isi_sms
waktu_sms waktu_sms
No_service

Id_Pelanggan Id_pelanggan Service

Saran Pelanggan No_service*


Tgl_transaksi
id_saran* Id_pelanggan id_pelanggan* Id_pelanggan id_pelanggan*
Id_pelanggan* nama_pelanggan Area_service
Isi_saran no_hp Tgl_service
Waktu_sms alamat Jam_service
Jam_akhir
Uang_muka
Total_biaya
Id_pelanggan Status
Keterangan_pembayaran

Administrator Mobil
No_service
id_admin* plat_no*
Nm_admin Id_pelanggan* Paket_Service
No_hp merk Service_detil
Id_paket
Username Bonus_service id_paket*
password No_service* Jenis_paket
Id_paket* Keterangan
biaya

Gambar 3.5 : LRS (Logic Record Struture)


27

d. Spesifikasi Basis Data


Berikut ini adalah struktur tabel-tabel yang terdapat dalam database yang
digunakan. Dalam perancangan tabel-tabel ini dibagi dalam dua kategori, yaitu tabel
utama dan tabel pendukung. Tabel ini akan meyimpan record-record yang telah
dimanipulasi oleh program sesuai spesifikasi masing-masing.
1) Tabel Administrator
Nama Tabel : admin
Isi : Data Master administrator
Media : Harddisk
Primary Key : id_admin

Tabel 3.2 : Spesifikasi Tabel Adminitrator


Field Type Length Keterangan
id_admin Varchar 6 ID Admin
nm_admin Varchar 30 Nama Administrator
no_hp Varchar 14 No. Hp Admin
Username Varchar 10 User nama admin
Password Varchar 10 Password admin
2) Tabel Kwitansi
Nama Tabel : Kwitansi
Isi : Data Master Kwitansi
Media : Harddisk
Primary Key : no_kwitansi
Foreign Key : no_service

Tabel 3.3 : Spesifikasi Tabel Kwitansi


Field Type Length Keterangan
No_kwitansi Varchar 7 Nomor Kwitansi
Tgl_kwitansi Date 35 Tanggal Kwitansi
No_service Varchar 11 Nomor Service
3) Tabel Mobil
Nama Tabel : Mobil
Isi : Data Master Mobil
Media : Harddisk
Primary Key : Plat_nomor
Foreign Key : Id_pelanggan

Tabel 3.4 : Spesifikasi Tabel Mobil


Field Type Length Keterangan
Id_pelanggan Varchar 6 Id pelanggan
Plat_nomor Varchar 11 Nomor plat mobil
Merek Varchar 25 Merek Mobil
Bonus_service Int 1 Bonus Service
4) Tabel Paket Service
Nama Tabel : Paket Service
Isi : Data Master Paket Service
Media : Harddisk
Primary key : Id_paket
28

Tabel 3.5 : Spesifikasi Tabel Paket_Service


Field Type Length Keterangan
Id_paket Varchar 4 Id Paket
Jenis_paket Varchar 20 Jenis Paket
Keterangan Varchar 255 Keterangan
Biaya Int 11 Biaya

5) Tabel Pelanggan
Nama Tabel : Pelanggan
Isi : Data Master Pelanggan
Media : Harddisk
Primary key : Id_pelanggan

Tabel 3.6 : Spesifikasi Tabel Pelanggan


Field Type Length Keterangan
Id_pelanggan Varchar 6 Id Pelanggan
Nm_pelanggan Varchar 35 Nama Pelanggan
Alamat Text 65535 Alamat pelanggan
No_hp Varchar 14 Nomor telepon
pelanggan

6) Tabel Saran
Nama Tabel : Saran
Isi : Data Saran
Media : Harddisk
Primary Key : Id_saran
Foreign Key : Id_Pelanggan

Tabel 3.7 : Spesifikasi Tabel Saran


Field Type Length Keterangan
Id_saran Varchar 11 Id Saran
Id_pelanggan Varchar 6 Id Pelanggan
Isi_SMS Varchar 160 Isi SMS
Waktu_SMS DateTime 19 Waktu SMS

7) Tabel Service
Nama Tabel : Service
Isi : Data Service
Media : Harddisk
Primary Key : No_service
Foreign Key : Id_pelanggan

Tabel 3.8 : Spesifikasi Tabel Service


Field Type Length Keterangan
No_service Varchar 7 Nomor Service
Tgl_transaksi Datetime 19 Tanggal transaksi
Id_pelanggan Varchar 255 Id Pelanggan
29

Area_service Varchar 3 Area Service


Tgl_service Date 19 Tanggal service
Jam_service Time 19 Jam Service
Jam_akhir Time 19 Jam akhir
Uang_muka Int 10 Uang muka
Total_biaya Int 10 Total biaya
Status Varchar 20 Status
Pembayaran
Keterangan_pembayaran Varchar 150 Keterangan
Pembayaran

8) Tabel Service Detil


Nama Tabel : service_detil
Isi : Data Saran
Media : Harddisk
Foreign Key 1 : No_service
Foreign Key 2 : Id_paket

Tabel 3.9 : Spesifikasi Tabel Service_detil


Field Type Length Keterangan
No_service Varchar 7 Nomor Service
Id_paket Varchar 4 Id Paket

9) Tabel SMS Inbox


Nama Tabel : SMS_Inbox
Isi : Data Saran
Media : Harddisk
Primary Key : id_inbox
Foreign Key : Id_Pelanggan

Tabel 3.10 : Spesifikasi Tabel Inbox


Field Type Length Keterangan
Id_inbox Int 5 Id SMS masuk
Id_pelanggan Varchar 6 Id pelanggan
No_hp Varchar 14 Nomor telepon
pelanggan
Isi_SMS Varchar 160 Isi SMS masuk
Waktu_SMS Datetime 19 Waktu SMS masuk

10) Tabel SMS Outbox


Nama Tabel : Service_detil
Isi : Data Saran
Media : Harddisk
Primary Key : id_outbox
Foreign Key : Id_Pelanggan
30

Tabel 3.11 : Spesifikasi Tabel Outbox


Field Type Length Keterangan
Id_outbox Int 5 Id SMS keluar
Id_pelanggan Varchar 6 Id Pelanggan
No_hp Varchar 14 Nomor telepon
pelanggan
Isi_SMS Varchar 160 Isi SMS keluar
Waktu_SMS Datetime 19 Waktu SMS keluar

4. Rancangan Layar
Suatu aplikasi dapat dikategorikan baik apabila memenuhi beberapa kriteria
tentang pemrograman, yang salah satunya adalah memiliki struktur tampilan yang baik.
Karena dengan baik akan membuat pengguna aplikasi merasa nyaman dan tidak cepat
jenuh dalam menjalankannya.
a) Rancangan Layar Form Login
Pada Gambar 3.6 ini adalah tampilan dari Form Login. Pada aplikasi ini seseorang
yang ingin menggunakan aplikasi ini harus mengisi field username dan password
secara benar untuk digunakan sebagai validasi pengguna sistem. Dan apabila berhasil
maka akan muncul Form Menu Utama dari aplikasi ini, namun apabila login gagal akan
keluar pesan “Username atau Password salah” dan Form Menu Utama tidak akan
tampil.

FILE MASTER TRANSAKSI LAPORAN PROSES BANTUAN

Username X-10-X
Password X-10-X

Masuk Keluar

hh:mm:ss
dd:mm:yyy

Gambar 3.6 : Rancangan Layar Form Login

b) Rancangan Layar Form Menu Utama server


Pada Gambar 3.7 ini adalah tampilan dari Form menu utama server. Pada aplikasi
ini seseorang yang ingin menggunakan aplikasi ini harus memilih port handphone
terminal kemudian tekan tombon ON. Jika berhasil akan muncul pemberitahuan
terhubung, namun apabila gagal maka akan muncul pemberitahuan gagal terhubung.
31

FILE MASTER TRANSAKSI LAPORAN PROSES BANTUAN

hh:mm:ss Port SMS Pilih ON OFF


dd:mm:yyy

Gambar 3.7 : Rancangan Layar form Menu Utama Server

c) Rancangan Layar Form Master Administrator


Gambar 3.8 merupakan rancangan layar form Master admin yang dapat
digunakan untuk manipulasi data admin. Dengan menggunakan tombol-tombol yang
ada sesuai dengan kebutuhan. Pada bagian bawah form terdapat tabel yang berisi
beberapa data admin. Admin dapat mencari data berdasarkan kriteria tertentu, seperti
Id admin, nama admin, username.

Admin
Entry Data Lihat Data

Id Administrator X-6-X

Username X-10-X

Password X-10-X

Ulangi Password X-10-X

Nama Lengkap X-30-X

Nomor Telepon X-14-X

Simpan Ubah Hapus Batal Keluar

Gambar 3.8 :Rancangan Layar Form Master Admin

d) Rancangan Layar Form Master Lihat Data Administrator


Gambar 3.9 merupakan rancangan layar form master Lihat Data Administrator
yang dapat digunakan untuk melihat atau menampilkan data yang ada dan sesuai
dengan kebutuhan. Pada bagian bawah form terdapat tabel yang berisi data-data
pelanggan yang tersedia.
32

Admin
Entry Data Lihat Data

Pilih X-30-X Cari Tambah

Id Administrator Username Nama Lengkap Nomor Telepon


Tampil Tampil Tampil Tampil

Z Z Z Z

Gambar 3.9 : Rancangan Layar Form Master Lihat Data Administrator

e) Rancangan Layar Form Master Pelanggan


Pada gambar 3.10 adalah tampilan dari form master pelanggan yang dapat
digunakan untuk memanipulasi data pelanggan. Admin dapat menambah, mengubah
dan menghapus data melalui tombol yang ada sesuai kebutuhan.

Pelanggan
Entry Data Lihat Data

Kode Pelanggan X-6-X

Nama Pelanggan X-35-X

Alamat

X-65535-X

Nomor Handphone X-14-X

Simpan Ubah Hapus Batal Keluar

Gambar 3.10 :Rancangan Layar Form Master Pelanggan

f) Rancangan Layar Form Master Pelanggan Lihat data


Gambar 3.11 merupakan rancangan layar Master Pelanggan Lihat data yang
dapat digunakan untuk melihat data pelanggan yang sudah memesan jasa servis lewat
aplikasi.
33

PELANGGAN
Entry Data Lihat Data

Pilih X-35-X Cari Tambah

Kode Pelanggan Nama Pelanggan Alamat Nomor Telepon


Tampil Tampil Tampil Tampil

Z Z Z Z

Gambar 3.11 :Rancangan Layar Form Master Pelanggan Lihat data

g) Rancangan layar Form Master Data Mobil


Gambar 3.12 merupakan rancangan layar Form Master Data Mobil yang dapat
digunakan untuk melihat data mobil yang sudah selesai servis tersebut.

Mobil
Entry Data Lihat Data

Kode Pelanggan X-6-X Cari


Nama Pelanggan X-35-X
No Plat X-11-X
Merk Mobil X-25-X

Simpan Ubah Hapus Batal Keluar

Gambar 3.12: Rancangan Layar Form Master Data Mobil

h) Rancangan Layar Form Master Lihat Data Mobil


Gambar 3.13 merupakan rancangan layar Form Master Mobil Lihat data yang
dapat digunakan untuk melihat data mobil yang sudah selesai servis tersebut.
34

Mobil
Entry Data Lihat Data

Pilih X-35-X Cari Tambah

Kode Pelanggan Nama Pelanggan Plat Nomor Merek Mobil


Tampil Tampil Tampil Tampil

Z Z Z Z

Gambar 3.13: Rancangan Layar Form Master Lihat Data Mobil

i) Rancangan Layar Form Master Jenis Paket Servis


Gambar 3.14 merupakan rancangan layar Form Master Jenis Paket servis yang
dapat digunakan untuk melihat jenis Paket yang tersedia.

Jenis Paket
Entry Data Lihat Data

Id Paket X-4-X
Jenis Paket Pilih
Keterangan X-25-X
Harga X-11-XX

Simpan Ubah Hapus Batal Keluar

Gambar 3.14: Rancangan Layar Form Master Jenis Paket Servis


35

j) Rancangan Layar Form Master Lihat Data Jenis Paket Servis


Gambar 3.15 merupakan rancangan layar Form Master Lihat Data Jenis Paket
servis yang dapat digunakan untuk melihat data Jenis Paket yang tersedia.

Jenis Paket
Entry Data Lihat Data

Pilih X-4-X Cari Tambah

Id Paket Jenis Paket Keterangan Harga Paket


Tampil Tampil Tampil Tampil

Z Z Z Z

Gambar 3.15: Rancangan Layar From Master Lihat Data Jenis Paket Servis

k) Rancangan Layar Form Master Transaksi Pemesanan Servis


Gambar 3.16 merupakan rancangan layar Form Master Transaksi Pemesanan
yang dapat digunakan untuk melihat dan mengubah data transaksi pelanggan yang
sudah memesan jasa servis lewat aplikasi.

Pesan Service Mobil


Entry Data Lihat Data

No Service X-7-X Tambah Id Paket X-4-X Cari


December 15

Tanggal Transaksi Keterangan X-150-x


M T W T F S S

dd-mm-yyyy
1 2 3 4 5 6
1 1 1 1
7 8 9
1 1 1 0
1 1
1 2
1 3
2
4
2 5
2 6
2 7
2 8
2 9
2 0
2
1
2 2
2 3
3 4
3 5 6 7
8 9 0 1

Cari
Harga X-11-x Tambah Hapus
Id Pelanggan X-6-X
Id Paket Keterangan Harga
Nama Lengkap X-35-X
Tampil
Tampil Tampil
Tampil Tampil
Tampil
Nomor Plat
Z Z Z
X-11-X Cek Bonus

Merk Mobil X-25-X Total Biaya X-11-x Hitung

Status Belum
Belum Lunas
Lunas Konfirmasi
Konfirmasi
Area Service Pilih
Uang Muka X-11-x Sisa
December 15
M T W T F S S

Tanggal Service dd-mm-yyyy


1 2 3 4 5 6
1 1 1 1
7 8 9
1 1 1 0
1 1
1 2
1 3
2
4
2 5
2 6
2 7
2 8
2 9
2 0
2
1
2 2
2 3
3 4
3 5 6 7

Sisa X-11-x
8 9 0 1

Jam Service Pilih Pilih Cek Booking Ket Bayar X-150-x

Simpan Ubah Servis Batal Servis Cetak Keluar Batal

Gambar 3.16: Rancangan Layar Form Master Transaksi Pemesanan Servis


36

l) Rancangan Layar Form Lihat Data Transaksi Pemesanan Servis


Gambar 3.17 merupakan rancangan layar form Lihat Data transaksi pemesanan
servis yang dapat digunakan untuk melihat data pemesanan servis yang sudah di
cetak.

Pesan Servis Mobil

Entry Data Lihat Data

Pilih X-35-X Cari

No Service Tanggal Service Id Pelanggan No Plat Id Paket Harga Area Pesan Tanggal Servis Jam Servis Servis Paket Total Biaya Uang Muka Status Keterangan

Z Z Z Z Z Z Z Z Z Z Z ZZZ
Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil

Gambar 3.17 : Rancangan Layar Form Lihat Data Transaksi Pemesanan Servis

m) Rancangan Layar Form Cetak Transaksi Kwitansi


Gambar 3.18 merupakan rancangan layar form laporan pelanggan dimana
kwitansi pelanggan bisa dicetak lewat form ini.

Transaksi Kwitansi
Lihat Data Entry Data

No Kwitansi X-7-X Tambah Tanggal Servis dd-mm-yyyy


December 15

Tanggal Kwitansi dd-mm-yyyy


M T

7
1
4
2
1
2
1
8
1
5
2
2
2
W T
2
9
1
6
2
3
3
3
1
0
1
7
2
4
3
F
4
1
1
1
8
2
5
S
5
1
2
1
9
2
6
S
6
1
3
2
0
2
7
Jam Servis Hh:mm:ss
8 9 0 1

Cari Uang Muka X-11-X


No Servis X-6-X

Tanggal Transaksi Sisa Biaya X-4-X


dd-mm-yyyy

Id Pelanggan X-11-X Total Biaya X-11-X

Plat No X-11-X Status X-20-X

Area Servis X-3-X Keterangan X-150-X

Simpan Cetak Batal Keluar

Gambar 3.18 : Rancangan Layar Form Cetak kwitansi


37

n) Rancangan Layar Form Lihat Data Transaksi Kwitansi


Gambar 3.19 merupakan rancangan layar Form Lihat Data transaksi kwitansi yang
dapat digunakan untuk melihat data kwitansi yang sudah di cetak.

Transaksi Kwitansi
Entry Data Lihat Data

Pilih X-7-X Cari

No Kwitansi Tanggal Kwitansi No Service Tanggal Transaksi Id Pelanggan Plat No Area Service Tanggal Service Jam Service Uang Muka Sisa Biaya Total Biaya Status Keterangan
Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil Tampil

Z Z Z Z Z Z Z Z Z Z Z ZZZ

Gambar 3.19 : Rancangan Layar Form Lihat Data Transaksi kwitansi

o) Rancangan Layar Form Cetak Laporan Pelanggan


Gambar 3.20 merupakan rancangan layar form laporan pelanggan dimana semua
data pelanggan bisa dicetak lewat form ini.

Laporan Pelanggan

Cetak Keluar

Gambar 3.20 : Rancangan Layar Form Cetak Laporan Pelanggan


38

p) Rancangan Layar Form Cetak Laporan Pemesanan


Gambar 3.21 merupakan rancangan layar form laporan pemesanan dimana
semua data pemesanan bisa dicetak lewat form ini.

Laporan Pemesanan

December 15
December 15 December 15
M T W T F S S
M T W T F S S M T W T F S S

S/D
1 2 3 4 5 6
18 29 13 14 15 16 1 2 3 4 5 6

dd-mm-yyyy dd-mm-yyyy
7
1 1 1 101 111 121 231 1 1 1 1
472 582 692 027 128 29 320
7 8 9
0 1 2 3
11 12 13 14 15 16 27 1 1 1 1 1 1 2
42 52 63 73 8 9 0 4 5 6 7 8 9 0
28 29 20 21 2 2 2 2 2 2 2 2 2 2
1 2 3 4 5 6 7 1 2 3 4 5 6 7
2 2 3 3 2 2 3 3
8 9 0 1 8 9 0 1

Cetak Keluar

Gambar 3.21 : Rancangan Layar Form Cetak Laporan Pemesanan

q) Rancangan Layar Form Broadcast SMS


Gambar 3.22 merupakan rancangan layar form proses broadcast yang dapat
digunakan untuk mengirim pesan ke semua pelanggan yang terdaftar di aplikasi.

Broadcast

Isi SMS

X-160-X

Kirim Batal Keluar

Gambar 3.22 : Rancangan Layar Form Broadcast SMS


39

r) Rancangan Layar Form Inbox


Gambar 3.23 merupakan rancangan layar form Inbox, pada form ini admin
dapat melihat pesan yang masuk.

Proses SMS
Sms Inbox Sms Outbox

Pilih X-6-X Cari Keluar

Id Inbox Id Pelanggan Nomor Handphone Isi SMS Waktu SMS


Tampil Tampil Tampil Tampil Tampil

Z Z Z Z Z

Gambar 3.23 : Rancangan Layar Form Inbox

s) Rancangan Layar Form Outbox


Gambar 3.24 merupakan rancangan layar form Outbox di saat proses SMS
berhasil diproses, pada pada form ini admin dapat melihat data SMS yang keluar.

Proses SMS
Sms Inbox Sms Outbox

Pilih X-6-X Cari Keluar

Id Outbox Id Pelanggan Nomor Handphone Isi SMS Waktu SMS


Tampil Tampil Tampil Tampil Tampil

Z Z Z Z Z

Gambar 3.24 :Rancangan Layar Form Outbox


40

t) Tampilan Rancangan Layar Form Saran


Gambar 3.25 merupakan rancangan layar form Saran di mana pelanggan
bisa mengisi saran tentang layanan fasilitas dan kenyamanan bengkel.

Saran

Pilih X-11-X Cari Keluar

Id Saran Id Pelanggan Isi Sms Waktu Sms


Tampil Tampil Tampil Tampil

Z Z Z Z

Gambar 3.25 :Rancangan Layar Form Saran

5. FLOWCHART
Untuk menggambarkan urutan proses pada aplikasi ini, akan digunakan flowchart
untuk memperjelas alur proses program. Di bawah ini akan digambarkan beberapa
flowchart untuk masing-masing proses.
a. Flowchart Form Login
Flowchart berikut merupakan gambaran alur proses awal dari aplikasi server.
Admin sebelumnya harus melakukan login terlebih dahulu dengan memasukkan
username dan password. Apabila login benar, maka akan tampil menu utama, namun
apabila login gagal akan tampil sebuah pesan yang menyatakan bahwa username atau
password salah.
41

Mulai

LN LN1

Tampil
form login

Input
pilih

cek tabel
LN1 T Pilih = login Login
administrator

Tampil Username &


pesan Y password
berhasil benar

Tampil
pesan
kesalahan
MU

LN1

Gambar 3.26: Flowchart Tampilan Form Login

1 Mulai
2 Tampil Form Login
3 Input pilih
4 If pilih = login then
5 Proses login
6 Proses cek tabel administrator
7 If username dan password = benar then
8 Tampil pesan pesan berhasil
9 Menuju ke menu utama
10 Else
11 Tampil pesan kesalahan
12 Kembali baris ke 1
13 End if

b. Flowchart Form Menu Utama


Flowchart berikut merupakan gambaran alur proses dari menu utama aplikasi ini.
Pada proses ini, admin dapat memilih aktivitas yang ingin dilakukan melalui menu-
42

menu yang tersedia, seperti misalnya apabila admin ingin melakukan input data, hal
itu dapat dilakukan dengan membuka form-form yang ada pada menu Master, menu
server untuk melakukan proses SMS, dan sebagainya. Selain itu, admin juga dapat
keluar dari menu utama melalui menu file – logout.

MU

MU1

Tampil from
menu
utama

Input Pilih

Pilih = Pilih = Pilih =


Pilih = File T Pilih = Master T
Transaksi
T
Laporan
T Pilih = Proses T
Bantuan
T MU1

Y Y Y Y Y Y

Tampil Tampil Tampil Tampil Tampil


Tampil
Menu Menu Menu Menu Menu
Menu File
Master Transaksi Proses Proses Bantuan

Pilih = Pilih =
LN Pilih = Master MP Transaksi TS Laporan
LP Pilih = Inbox Pilih = PD
Keluar Y Y Y Y Y IO Y
Pelanggan Service Pelanggan Dan Outbox Panduan

T T
T T T

Pilih = SR
Pilih = LB Saran Y
Pilih =Master MM KW Laporan Y MU1
MU1 Y Transaksi Y Pemesanan
Mobil
kwitansi

T
T T
Broadcast Y BC
MU1
Pilih = Paket PS MU1
Y
service
T
T
MU1

Pilih= AD
Y
Administrator

MU1

Gambar 3.27: Flowchart Tampilan Form Menu Utama

1 Tampil form menu utama


2 Input Pilih
43

3 If pilih = File then


4 Tampil menu file
5 Else if pilih = Keluarthen
6 Menuju form login
7 End if
8 If pilih = Master then
9 Tampil menu master
10 Else if pilih = Master Pelanggan then
11 Menuju form pelanggan
12 Else if pilih = Master Mobil then
13 Menuju form Master Mobil
14 Else if pilih = Paket Servis then
15 Menuju form Paket Servis
16 End If
17 If pilih = transaksi then
18 Tampil menu transaksi
19 Else if pilih = transaksi Servis then
20 Menuju form transaksi Servis
21 Else if pilih = transaksi kwitansi then
22 Menuju form transaksi kwitansi
23 End If
24 If pilih = laporan then
25 Tampil menu laporan
26 Else if pilih = laporan pelanggan then
27 Menuju form laporan pelanggan
28 Else if pilih = laporan pemesanan then
29 Menuju form laporan pemesanan
30 End If
31 If pilih = proses then
32 Tampil menu proses
33 Else if pilih = inbox and outbox then
34 Menuju form inbox outbox
35 Else if pilih = Saran then
36 Menuju form Saran
37 Else if pilih = Broadcast then
38 Menuju form broadcast
39 End If
40 If pilih = bantuan then
41 Tampil menu bantuan
42 Else if pilih =Panduan SMS then
Menuju form panduan SMS
End if

c. Flowchart Tampilan Form Master Administrator


Gambar 3.28 berikut ini adalah Flowchart Master Administrator yang merupakan
gambaran alur proses dari form administrator pada proses ini, admin dapat menginput
data admin yang baru masuk.
44

AD

Pilih =
Tambah

AD1
Data sudah
T
benar

Input
pilih

Tampil pesan Simpan data ke


AD1 “data sudah tabel admin Pilih=simpan
disimpan”
T

Tampil pesan Pilih data


Ubah data di Pilih ubah =
AD1 “data sudah Y admin di
tabel admin ya
diubah” tabel
T
T
Tampil pesan Hapus data di Tampil
AD1 “data sudah tabel admin “data akan Y Pilih=hapus
dihapus” dihapus?” AD1

T T

AD1
Pilih=Batal Y AD1

MU Y Pilih=Keluar T AD1

Gambar 3.28 :Flowchart Tampilan Form Administrator

1 Tampil form Administrator


2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ketabel admin
7 Tampil pesan data sudah disimpan
8 Kembali kebaris 1
9 Else if Pilih data admin
10 if pilih ubah = Ythen
11 Proses ubah data di tabel admin
12 Tampil pesan data sudah diubah
13 Kembali kebaris 1
14 Else if pilih = hapusthen
15 Tampil "data akan dihapus?"
16 Proses hapus data di tabel
17 Tampil pesan data sudah dihapus
18 Else if pilih = Batal then
19 Menuju ke baris 1
20 Else if pilih = keluar then
21 Menuju ke Menu Utama
End if
45

d. Flowchart Form Master Pelanggan


Flowchart berikut merupakan gambaran alur proses dari form Master pelanggan.
Pada proses ini, admin dapat menginput data pelanggan melalui form. Admin juga
dapat melihat data melalui tabel yang ada pada form data pelanggan yang kemudian
dapat memilihnya untuk dilakukan proses input data. Apabila admin memilih keluar,
maka admin akan keluar dari form tersebut dan kembali ke menu utama.

MM

Pilih =
Tambah

MP1
Data sudah
T
benar

Input
pilih

Tampil pesan Simpan data ke


MP1 “data sudah tabel pelanggan Y Pilih=simpan
disimpan”
T

Tampil pesan Ubah data di Pilih data


Pilih ubah =
MP1 “data sudah tabel pelanggan Y Y pelanggan
ya
diubah” di tabel
T
T
Tampil pesan Hapus data di Tampil
MP1 “data sudah tabel pelanggan Y “data akan Y Pilih=hapus
dihapus” dihapus?” MP1

T T

MP1
Pilih=Batal Y MM1

MU Y Pilih=Keluar T MP1

Gambar 3.29: Flowchart Master Pelanggan

1 Tampil form Master Pelanggan


2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ketabel pelangggan
7 Tampil pesan data sudah disimpan
8 Kembali kebaris 1
46

9 Else if Pilih data pelanggan


10 if pilih ubah = Ythen
11 Proses ubah data di tabel pelanggan
12 Tampil pesan data sudah diubah
13 Kembali ke baris 1
14 Else if pilih = hapus then
15 Tampil "data akan di hapus?"
16 Proses hapus data di tabel
17 Tampil pesan data sudah di hapus
18 Else if pilih = Batal then
19 Menuju ke baris 1
20 Else if pilih = keluar then
21 Menuju ke Menu Utama
End if
e. Flowchart Form Paket Servis
Flowchart berikut merupakan gambaran alur proses dari form Paket Servis. Pada
proses ini, admin dapat melihat data paket servis yang ada pada form paket servis.
Admin juga dapat mengedit dan mengapus paket servis yang sudah tersedia pada
form paket servis. Apabila admin memilih keluar, maka admin akan keluar dari form
tersebut dan kembali ke menu utama.
PS1

Pilih =
Tambah

PS1
Data sudah
T
benar

Input
pilih

Tampil pesan Simpan data ke


PS1 “data sudah tabel Y Pilih=simpan
disimpan” paket_service
T

Tampil pesan Ubah data di Pilih data


Pilih ubah =
PS1 “data sudah tabel Y Y paket_servic
ya
diubah” paket_service e di tabel
T
T
Tampil pesan Hapus data di Tampil
PS1 “data sudah tabel Y “data akan Y Pilih=hapus
dihapus” paket_service dihapus?” PS1

T T

PS1
Pilih=Batal Y PS1

MU Y Pilih=Keluar T PS1

Gambar 3.30 : Flowchart Paket Servis


47

1 Tampil form Paket Servis


2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ketabel paket_servis
7 Tampil pesan data sudah di simpan
8 Kembali kebaris 1
9 Else if Pilih data paket Servis
10 if pilih ubah = Ythen
11 Proses ubah data di tabel paket_servis
12 Tampil pesan data sudah di ubah
13 Kembali kebaris 1
14 Else if pilih = hapus then
15 Tampil "data akan dihapus?"
16 Proses hapus data di tabel paket_servis
17 Tampil pesan data sudah di hapus
18 Else if pilih = Batal then
19 Menuju ke baris 1
20 Else if pilih = keluarthen
21 Menuju ke Menu Utama
End if

f. Flowchart SMS Cek Tempat Servis Kosong


Flowchart ini menggambarkan proses cek tempat servis kosong dimana
pelanggan bisa mengirim lewat aplikasi SMS gateway.

Mulai

Kirim

Tampil
Tempat= laporan
T
kosong Tempat
penuh
Y

Tampil
laporan
Tempat
kosong

END

Gambar3.31 :Flowchart SMS Cek Tempat Servis


48

1 Mulai
2 Proses kirim SMS
3 If Tempat= kosong then
4 Tampil laporan tempat kosong
5 Else
6 Tampil laporan tempat kosong
7 End if

g. Flowchart Form Master Mobil


Flowchart berikut merupakan gambaran alur proses dari form Master Mobil. Pada
proses ini, admin dapat melihat data mobil yang ada pada form Master Mobil. Admin
juga dapat mengedit dan mengapus data mobil yang sudah tersedia pada form Master
Mobil.

MM

Pilih =
Tambah

MM1
Data sudah
T
benar

Input
pilih

Tampil pesan
Simpan data
MM1 “data sudah Y Pilih=simpan
ke tabel mobil
disimpan”
T

Tampil pesan Pilih data


Ubah data di Pilih ubah =
MM1 “data sudah Y Y mobil di
tabel mobil ya
diubah” tabel
T
T
Tampil pesan Tampil
Hapus data di
MM1 “data sudah Y “data akan Y Pilih=hapus
tabel mobil MM1
dihapus” dihapus?”

T T

MM1
Pilih=Batal Y MM1

MU Y Pilih=Keluar T MM1

Gambar 3.32: Flowchart Master Mobil


1 Tampil form Master Mobil
2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ketabel mobil
7 Tampil pesan data sudah di simpan
8 Kembali kebaris 1
49

9 Else if Pilih data mobil


10 if pilih ubah = Ythen
11 Proses ubah data di tabel mobil
12 Tampil pesan data sudah diubah
13 Kembali ke baris 1
14 Else if pilih = hapus then
15 Tampil "data akan di hapus?"
16 Proses hapus data di tabel
17 Tampil pesan data sudah di hapus
18 Else if pilih = Batal then
19 Menuju ke baris 1
20 Else if pilih = keluar then
21 Menuju ke Menu Utama
End if

h. Flowchart transaksi kwitansi


Flowchart berikut merupakan gambaran alur proses dari form Paket Servis. Pada
proses ini, admin dapat melihat data paket servis yang ada pada form paket servis.
Admin juga dapat mengedit dan mengapus paket servis yang sudah tersedia pada
form paket servis. Apabila admin memilih keluar, maka admin akan keluar dari form
tersebut dan kembali ke menu utama.
KW

Pilih =
Tambah

KW1
Data sudah
T
benar

Input pilih

Tampil pesan Simpan data


KW1 “data sudah ke tabel Y Pilih=simpan
disimpan” kwitansi
T

Tampil pesan Ubah data di Pilih ubah = Pilih data di


KW1 “data sudah tabel kwitansi Y Y
Y kwitansi
diubah”
T
T

KW1
Tampil
Tampil Laporan
KW1 Cetak “data akan Y Pilih=Cetak
diprint?”

KW1 T

MU Y Pilih=keluar T KW1

Gambar 3.33: Flowchart transaksi kwitansi


50

1 Tampil form Transaksi kwitansi


2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ke tabel kwitansi
7 Tampil pesan data sudah di simpan
8 Kembali ke baris 1
9 Else if Pilih data kwitansi
10 if pilih ubah = ya then
11 Proses cek dan ganti password
12 Proses ubah data di tabel kwitansi
13 Tampil pesan data sudah diubah
14 Kembali ke baris 1
15 Else if pilih = cetak then
16 Tampil "data akan di cetak?"
17 Proses cetak
18 Tampil Laporan
19 Else if pilih = Keluar then
20 Menuju ke menu utama
21 Else
22 Kembali ke baris1
23 End if

i. Flowchart Laporan Pelanggan


Flowchart berikut merupakan gambaran alur proses dari laporan data pelanggan
pada from ini admin bisa mencetak semua data pelanggan yang yang berlangganan.
LP

LP1

Pilih =
T LP1
Cetak

Tampil Input
CETAK Laporan Pilih
Keluar

Pilih = MU1
Y
Keluar

LP1

Gambar 3.34: Flowchart Laporan Pelanggan


51

1 Tampil Form Laporan Pelanggan


2 If pilih = Cetak then
3 Proses Cetak
4 Tampil laporan
5 Pilih Keluar
6 Else if pilih=Keluar then
7 Menuju ke menu utama
8 Else
9 Kembali ke baris ke 1
10 End if

j. Flowchart Laporan Pemesanan


Flowchart berikut merupakan gambaran alur proses dari cetak data laporan
pemesanan pada from ini admin bisa mencetak laporan pemesanan sesuai tanggal
awal dan tanggal akhir.

LB

LB1

Pilih
tanggal
awal

Pilih
Pilih =
Y tanggal
Cetak
akhir

Cetak

Tampil laporan

Pilih =
Keluar

MU

Gambar 3.35: Flowchart Laporan Pemesanan


52

1 Tampil Form Cetak Pemesanan


2 If pilih = Cetak then
3 Proses Cetak
4 Tampil laporan
5 Pilih Keluar
6 Else if pilih= Keluarthen
7 Menuju ke menu utama
8 End if

k. Flowchart transaksi Servis


Flowchart berikut merupakan gambaran alur proses dari form transaksi Servis.
Pada proses ini, admin dapat melihat data transaksi servis yang ada pada form
transaksi servis. Admin juga dapat mengedit dan mengapus transaksi servis yang
sudah tersedia pada form transaksi servis. Apabila admin memilih keluar, maka admin
akan keluar dari form tersebut dan kembali ke menu utama.

TS

Pilih =
Tambah

TS1
Data sudah
T
benar

Input pilih

Tampil pesan Simpan data


TS1 “data sudah ke tabel Y Pilih=simpan
disimpan” Service
T

Tampil pesan
Ubah data di Pilih ubah = Pilih data di
TS1 “data sudah Y Y
tabel Service Ya tabel service
diubah”
T
T

Tampil “data TS1


TS1 Tampil Laporan Cetak Y akan Y Pilih=Cetak
diprint?”

T
T
TS1

MU Y Pilih=keluar T TS1

Gambar 3.36 : Flowchart transaksi Servis


53

1 Tampil form Transaksi Servis


2 Proses tambah
3 If Data = benar then
4 Input pilih
5 If pilih = simpan then
6 Proses simpan data ke tabel Servis
7 Tampil pesan data sudah di simpan
8 Kembali ke baris 1
9 Else if Pilih data kwitansi
10 if pilih ubah = Ya then
11 Proses ubah data di tabel Servis
12 Kembali ke baris 1
13 Else if pilih = cetak then
14 Tampil "data akan di cetak?"
15 Proses cetak
16 Tampil Laporan
17 Else if pilih = Keluarthen
18 Menuju ke menu utama
19 Else
20 Kembali ke baris1
21 End if

l. Flowchart Pesan Servis melalui SMS


Flowchart ini menggambarkan proses pesan servis melalui SMS dimana pelanggan
bisa memesan lewat aplikasi SMS gateway.

Mulai

Kirim

Sms =
Pesan

Simpan ke
tabel
T
Tampil Data
Berhasil
Disimpan

Selesai

Gambar 3.37: Flowchart Pesan Servis Melalui SMS


54

1 Mulai
2 Proses kirim
3 If Format SMS= pesanthen
4 Proses Simpan ke tabel
5 Tampil data berhasil di simpan
6 Else
End if

m. Flowchart Kirim Saran


Flowchart berikut merupakan gambaran alur proses dari kirim saran dimana
pelanggan bisa kirim saran lewat aplikasi SMS gateway.

Mulai

Kirim

Sms =
Saran

Simpan
Ke tabel
saran
T
Tampil
Data
berhasil
disimpan

Selesai

Gambar 3.38: Flowchart SMS Kirim Saran

1 Mulai
2 Proses Kirim
3 If SMS = benarthen
4 Proses Simpan ke tabel saran
5 Tampil pesan data berhasil di simpan
6 Else
7 End if
55

n. Flowchart SMS Batal Pesan Servis


Flowchart berikut merupakan gambaran alur proses dari SMS Batal Pesan Servis
lewat handphone pelanggan dimana pelanggan bisa membatalkan pesan servis lewat
handphone.

Mulai

Kirim

Sms= batal

Hapus data di
tabel

T
Tampil
Data
berhasil
dihapus

Selesai

Gambar3.39 :Flowchart SMS Batal Pesan Servis

1 Mulai
2 Proses kirim
3 If SMS = batal then
4 Proses Hapus data di tabel
5 Tampil data berhasil di hapus
6 Else
7 End if

o. Flowchart SMS Cek Harga paket Servis


Flowchart berikut merupakan gambaran alur proses dari SMS cek harga paket
servis dimana pelanggan bisa mengirim lewat aplikasi SMS gateway.
56

Mulai

Kirim

Sms = cek
harga

Tampil
laporan T
Harga

END

Gambar 3.40:Flowchart SMS Cek Harga paket Servis

1 Mulai
2 Proses Kirim
3 If SMS= Cek Harga then
4 Tampil laporan harga
5 Else
6 End if

p. Flowchart SMS Konfirmasi Pembayaran


Flowchart berikut merupakan gambaran alur proses dari SMS Konfirmasi
pembayaran dimana pelanggan bisa mengirim lewat aplikasi SMS gateway.

Mulai

Kirim

Sms =
Konfirmasi

Tampil
laporan T
Konfirmasi

END

Gambar 3.41: Flowchart SMS Cek Konfirmasi Pembayaran


57

1 Mulai
2 Proses Kirim
3 If SMS= Konfirmasi then
4 Tampil laporan konfirmasi
5 Else
6 End if
BAB IV
IMPLEMENTASI DAN EVALUASI PROGRAM

1. Spesifikasi Hardware Dan Software


a. Aplikasi Server
1) Hardware
Dibawah ini merupakan spesifikasi hardware (perangkat keras) yang digunakan
dalam pengoperasian aplikasi server yang berbasis SMS Gateway.
a) Processor Intel(R) Core™ i5-3210M CPU @ 2.50GHz 2.50GHz
b) RAM Memori 4 GB
c) Harddisk 750 GB
d) Handphone (sony Ericsson)
e) SIM Card (Provider)
2) Software
Dibawah ini merupakan spesifikasi software (perangkat lunak) yang dibutuhkan
dalam aplikasi server yang berbasis SMS Gateway dan harus dipenuhi agar aplikasi
dapat berjalan dengan baik.
a) Sistem Operasi Microsoft Windows Seven 7 Ultimate
b) Java
c) Mysql Font
d) Netbeans IDE 7.4

b. Aplikasi Pelanggan Servis


1) Hardware
Dibawah ini merupakan spesifikasi hardware (perangkat keras) yang
mendukung dalam pengoperasian pengiriman untuk.
a) Handphone
b) Simcard yang berisikan pulsa untuk mengirimkan SMS
2) Software
Untuk software handphone disini tidak terlalu dipermasalahkan, karena akan
mendukung pada semua software jenis handphone

2. Implementasi Program
Implementasi sistem berguna untuk mengetahui apakah yang telah dibuat dapat
berjalan secara maksimal, untuk itu maka program tersebut harus diuji terlebih dahulu
mengenai kemampuan agar dapat berjalan dengan yang diharapkan pada saat implentasi
progam.
Pada aplikasi yang dibuat penulis ini terdapat satu tahap implementasi program, yaitu
program pada aplikasi server yang terpasang pada komputer server untuk digunakan
sebagai pengolahan data yang dikirimkan oleh pelanggan servis.
a. Implementasi Pada Aplikasi Server
Pada server, aplikasi akan berjalan dan siap digunakan untuk mengirim maupun
menerima SMS jika admin yang berhasil login telah melakukan koneksi antara
komputer dengan handphone sebagai modem GSM Bluetooth dan memilih port virtual
yang dihasilkan ketika handphone sudah terhubung komputer dengan benar. Dibawah
ini akan diberikan gambaran mengenai proses koneksi tersebut.

58
59

Gambar 4.1 : Koneksi Handphone ke Komputer Melalui Bluetooth

3. Tampilan Layar Program


Apabila semua kebutuhan yang diperlukan telah dipenuhi baik hardware, software
maupun koneksi antara handphone dengan komputer, maka saatnya untuk menjalankan
aplikasi server. Di bawah ini akan diberikan tampilan disertai dengan penjelasannya.
a. Aplikasi Server
1) Tampilan Layar Form Login
Pada Aplikasi ini, yang pertama dilakukan untuk dapat menampilkan menu utama
adalah proses login. Pada proses ini dilakukan pengecekan username dan password
yang berguna untuk keamanan aplikasi dari hal-hal yang tidak diinginkan.
Berikut ini adalah tampilan dari form login tersebut

Gambar 4.2 : Tampilan Layar Form Login


60

2) Tampilan Layar Form Menu Utama


Dan apabila login berhasil maka akan ditampilkan menu utama, aplikasi pada menu
utama ini akan ditampilakan Form Menu Utama. Untuk dapat menjalakan proses
lainnya admin dapat memilih menu-menu yang tersedia Form Menu Utama.

Gambar 4.3 : Tampilan Layar Form Menu Utama

3) Tampilan Layar Form Master Pelanggan


Pada form master pelanggan ini admin dapat menambah atau melihat data dengan
cara memasukan data sesuai field yang ada dan kemudian memilih tombol Simpan,
dan bisa mengubah atau menghapus data.

Gambar 4.4 : Tampilan Layar Form Master Entry Data Pelanggan


61

Gambar 4.5 : Tampilan Layar Form Master Lihat Data Pelanggan

4) Tampilan Layar Form Master Mobil


Pada form ini admin dapat menambah dan melihat data dengan cara memasukan
data sesuai field yang ada dan kemudian memilih tombol simpan dan bisa mengubah
atau menghapus data.

Gambar 4.6 : Tampilan Layar Form Entry Data Mobil


62

Gambar 4.7 : Tampilan Layar Form Lihat Data Mobil

5) Tampilan Layar Form Master Paket Servis


Pada form ini admin dapat menambah atau melihat data dengan cara memasukan
data sesuai field yang ada dan kemudian memilih tombol simpan, dan bisa mengubah
atau menghapus data.

Gambar 4.8 : Tampilan Layar Form Master Entry Data Paket Servis
63

Gambar 4.9 : Tampilan Layar Form Master Lihat Data Paket Servis

6) Tampilan Layar Form Master Admin


Pada Form ini admin yang memiliki hak akses dapat menambah atau melihat user
administrator dengan cara memasukan data sesuai field yang ada dan kemudian
memilih tombol Simpan untuk menambah admin baru.

Gambar 4.10 : Tampilan Layar Form Master Entry Data Admin


64

Gambar 4.11 : Tampilan Layar Form Master Lihat Data Admin

7) Tampilan Layar Form Pesan Servis Mobil


Pada Form ini admin yang memiliki hak akses dapat menambah dan melihat
transaksi pemesanan dengan cara memasukan data pelanggan servis mobil yang
melakukan transaksi pemesanan.

Gambar 4.12 : Tampilan Layar Form Entry Data Pesan Servis Mobil
65

Gambar 4.13 : Tampilan Layar Form Lihat Data Pesan Servis Mobil

8) Tampilan Layar Form Transaksi Kwitansi


Pada Form ini admin yang memiliki hak akses dapat menambah, melihat dan
mencetak kwitansi dengan cara memasukan data sesuai field yang ada dan setelah
pelanggan sudah selesai melakukan jasa servis tersebut.

Gambar 4.14 : Tampilan Layar Form Entry Data Kwitansi


66

Gambar 4.15 : Tampilan Layar Form Lihat Data Kwitansi

9) Tampilan Layar Form Report Pelanggan


Pada Form ini admin dapat mencetak semua data laporan pelanggan yang
sudah teregistrasi pada aplikasi ini.

Gambar 4.16 : Tampilan Layar Form Report Pelanggan


67

10) Tampilan Layar Form Report Pesanan


Pada Form ini admin dapat mencetak semua data laporan pesanan yang sudah
teregistrasi pada aplikasi ini.

Gambar 4.17 : Tampilan Layar Form Report Pesanan

11) Tampilan Layar Form Broadcast


Pada form ini admin dapat mengirim SMS ke semua nomor pelanggan yang
sudah teregistrasi sebelumnya, agar memudahkan admin untuk penyampaian info-
info terbaru.

Gambar 4.18 : Tampilan Layar Form Broadcast


68

12) Tampilan Layar Form Saran


Pada Form ini admin dapat melihat saran tentang layanan fasilitas bengkel yang
dikirim oleh pelanggan servis.

Gambar 4.19 : Tampilan Layar Form Saran

13) Tampilan Layar Form Data Inbox Dan Outbox


Pada Form ini terdapat data inbox dan outbox yang telah terisi oleh tiap SMS
yang masuk ke sistem aplikasi ini, form ini tidak dapat di manipulasi lagi karena form
ini adalah bersifat informasi bagi admin.

Gambar 4.20 : Tampilan Form Data Inbox


69

Gambar 4.21 : Tampilan Form Data Outbox

14) Tampilan Layar Form Panduan


Pada Form panduan ini berisi tentang cara bantuan SMS pelanggan servis yang
berlangganan dengan aplikasi SMS gateway.

Gambar 4.22 : Tampilan Form Panduan


70

4. Tampilan Balasan Yang Dikirim Server Pada Handphone Pelanggan


Dibawah ini akan diberikan gambar-gambar hasil balasan yang dikirim oleh server
berdasarkan masing-masing request yang dikiri oleh pengirim.
a) Request Layanan SMS
SMS untuk memberikan informasi apa saja yang dapat di akses oleh pelanggan
servis. Berikut ini adalah hasil balasan dari server jika seorang pelanggan servis
mengirimkan SMS layanan SMS.

Gambar 4.23 : Tampilan Layar Balasan Request Layanan SMS

Gambar 4.24 : Tampilan Layar Balasan Request Layanan SMS


71

Gambar 4.25 : Tampilan Layar Balasan Request Layanan SMS

Gambar 4.26 : Tampilan Layar Balasan Request Layanan SMS

b) Request Cek Tempat dan Waktu Servis


SMS untuk mengecek waktu dan tanggal yang telah dipilih oleh pelanggan
servis apakah sudah ada yang pesan atau belum. Berikut ini adalah hasil balasan dari
server jika seorang pelanggan servis mengirim SMS dengan isi : Cek servis 09 21
72

Gambar 4.27 : Tampilan Layar Balasan Request Cek Tempat dan Waktu

c) Request Cek Harga Paket


SMS untuk mengetahui Harga tiap paket yang dipilih oleh pelanggan. Berikut ini
adalah hasil balasan dari server jika seorang pelanggan mengirimkan SMS dengan isi :
Cek Harga

Gambar 4.28 : Tampilan Layar Balasan Request Cek Harga

d) Request Pemesanan Servis


SMS untuk melakukan pemesanan servis yang dilakukan oleh pelangaan dengan
cara mengirim sebuah SMS dengan isi : Servis p1-p2 10 25 b6920vgb dan server akan
membalas seperti pada gambar.
73

Gambar 4.29 : Tampilan Layar Balasan Request Pemesanan Servis Tanpa Bonus

Gambar 4.30 : Tampilan Layar Balasan Request Pemesanan Servis Bonus

e) Request Batal Pemesanan Servis


SMS untuk membatalkan pesanan servis yang telah dikirim sebelumnya dan
belum dikonfirmasi. Berikut ini adalah hasil balasan dari server jika seorang
pelanggan mengirimkan SMS dengan isi : Batal srv0004
74

Gambar 4.31 : Tampilan Layar Balasan Request Batal

f) Request Ubah Pemesanan Servis


SMS untuk merubah jadwal pesanan servis yang yang telah dikirim sebelumnya.
Berikut adalah gambar balasan ketika seorang pelanggan mengirim SMS dengan isi :
Ubah srv0004 14 22.

Gambar 4.32 : Tampilan Layar Balasan Request Ubah Pesanan Servis

g) Request Konfirmasi Pembayaran


SMS yang dilakukan untuk mengonfirmasi pesanan servis pelanggan yang
sebelumnya telah dipesan yang di tujukan ke server dengan isi SMS : Konfirmasi
srv0008 110000 12481637 Angga Firdaus BCA.
75

Gambar 4.33 : Tampilan Layar Balasan Request Konfirmasi Pembayaran

h) Request Saran
SMS untuk memberikan saran, kritik, dan komplain. Berikut ini adalah hasil balasan
dari server jika seorang pelanggan mengirimkan SMS dengan isi : Saran dealer bagus
cepat dan bersih.

Gambar 4.34 : Tampilan Layar Balasan Request Saran


76

5. Evaluasi Program
Evaluasi program merupakan salah satu hal yang perlu dilakukan dalam setiap
pengembangan aplikasi untuk menganalisa dan mengetahui hasil yang telah dicapai oleh
aplikasi yang dikembangkan tersebut. Demikian juga pada aplikasi SMS Gateway yang
dikembangkan ini, maka dilakukan evaluasi program unutuk menganalisa hasil yang
dicapai pada kedua aplikasi ini. Dan dalam evaluasi tersebut ditemukan beberapa
kelebihan dan kekurangan program yang dilihat dari beberapa kondisi dan situasi. Adapun
kelebihan dan kekurangan pada aplikasi yang dikembangkan adalah sebagai berikut :
a. Kelebihan Program
1) Pada Aplikasi SMS Gateway Server
a) Program dapat dengan mudah dioperasikan oleh admin, karena memiliki
tampilan yang baik.
b) Dapat menerima pesan dan otomatis membalasnya sesuai dengan apa yang di
request.
b. Kekurangan Program
1) Pada Aplikasi SMS Gateway Server
a) Kelancaran proses terkirim dan diterimanya suatu SMS dari/ke server
tergantung pada layanan jaringan operator yang digunakan.
b) Penerimaan SMS yang terus menerus dengan jeda waktu yang sangat cepat
dapat membuat server menjadi down.
c) Aplikasi harus aktif untuk mendapatkan layanan SMS gateway.
BAB V
PENUTUP

Berdasarkan analisa yang dilakukan dimulai dari pengumpulan informasi, pemecahan


masalah hingga pengembangan aplikasi ini maka dapat ditarik beberapa kesimpulan dan
juga terdapat beberapa saran yang perlu diperhatikan demi kelancaran sistem yang
dibangun ini.
1. Kesimpulan
Kesimpulan yang didapat dari hasil analisa atas masalah dan pemecahannya adalah :
a. Dengan adanya aplikasi yang dibangun ini dapat mempercepat proses pemesanan jasa
servis lebih realtime.
b. Dengan adanya aplikasi ini dapat mencegah terjadinya ketidakakuratan data,
redudansi data dan data terisolasi.
c. Aplikasi yang dibangun berbasis desktop menggunakan metode pengembang
waterfall, bahasa pemrograman Java dan database MySQL.
d. Aplikasi mampu memberikan kemudahan kepada perusahaan dalam melakukan
pembuatan laporan data pelanggan dan laporan pemesanan servis yang pernah
dilakukan, yang dapat diurutkan sesuai waktu yang dibutuhkan.
2. Saran
Beberapa saran yang perlu diperhatikan diantaranya adalah :
a. Pemilihan jaringan operator untuk digunakan sebagai server dan pelanggan secara
bijaksana agar proses kirim dan terima SMS dapat dilakukan secara cepat dan lancar.
b. Perlu dilakukan perawatan/pemeliharaan dan pengawasan dari pihak yang
bertanggung jawab terhadap sistem.
c. Menyiapkan handphone cadangan apabila terjadi kerusakan pada handphone yang
digunakan sebagai terminal.
d. Memilih Admin yang bertanggung jawab baik dalam penggunaan maupun
pemeliharaan program aplikasi.
e. Memberi penjelasan dengan baik kepada pihak pelanggan tentang program ini, baik
dalam me-request, maupun dalam memanfaatkannya sebagai media transaksi
pemesanan.

77
DAFTAR PUSTAKA

Barri, M. W. H., Lumenta, A. S. M., & Wowor, A. 2015. Perancangan Aplikasi SMS GATEWAY
Untuk Pembuatan Kartu Perpustakaan di Fakultas Teknik Unsrat. E-journal Teknik Elektro
Dan Komputer, 23–28. Available at:
http://ejournal.unsrat.ac.id/index.php/elekdankom/article/view/6522.

Hestiningsih, I., Sulistiyo, W., & Cahyanti, I. A. 2014. PERALATAN BENGKEL BERBASIS WEB
DENGAN SMS. JURNAL INFORMATIKA, 8(2), 921–932.

Nurlaela, Fetty 2013. Aplikasi SMS Gateway Sebagai Sarana Penunjang Informasi
Perpustakaan Pada Sekolah Menengah Pertama Negeri 1 Arjosari. Indonesian Journal on
Networking and Security, 2(4), 20–25.

Park, Jhon, Steve, Mackay, Edwin, Wright 2003, Practical data communications for
instrumentation and control, Burlington, Newnes.

Rossy W, C., Utomo, W. H., & Wellem, T. 2006. Perancangan dan Implementasi Sistem
Informasi Layanan Short Messaging Service ( SMS ). Jurnal Informatika, 2(2), 155–166.

Sommerville, Ian 2011, Software Engineering, Boston: Pearson Education.

Talukder, Asoke K 2010, Mobile Computing, New Delhi: Tata McGraw Hill Education Private
Limited.

Wesołowski, Krzysztof 2002, Mobile communcation system, New York, Jhon Wiley.

Wiharto, Yudi 2011. Sistem Informasi Akademik Berbasis SMS Gateway. Jurnal Teknologi Dan
Informatika (TEKNOMATIKA), 1(1), 1–28.

78
79

LAMPIRAN KELUARAN PROGRAM


a) Laporan cetak servis
80

b) Laporan Cetak Kwtansi


81

c) Laporan Pelanggan
82

d) Laporan Pesanan
83
84
LISTING PROGRAM

Package booking_service

1. Broadcast.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;
import koneksi.Koneksi_MySQL;

public class Broadcast extends javax.swing.JDialog {


Connection con;
Statement stat;
ResultSet res;
String sql;
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();
Menu menu = null;

public Broadcast(Menu menu) {


this.menu = menu ;
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
txt_isi_sms = new javax.swing.JTextArea();
btn_kirim = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();

setUndecorated(true);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jLabel6.setBackground(new java.awt.Color(255, 255, 255));
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Broadcast");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel6)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Broadcast"));

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("Isi Sms");

txt_isi_sms.setColumns(20);
txt_isi_sms.setRows(5);
jScrollPane1.setViewportView(txt_isi_sms);

btn_kirim.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_kirim.setText("Kirim");
btn_kirim.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_kirimActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(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()
.addGap(22, 22, 22)
.addComponent(jLabel3)
.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(btn_kirim,
javax.swing.GroupLayout.PREFERRED_SIZE, 76,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(46, 46, 46)
.addComponent(btn_batal,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(46, 46, 46)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 306,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(62, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(31, 31, 31)
.addComponent(jLabel3))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 115,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(btn_batal,
javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_kirim,
javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(52, 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(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

pack();
setLocationRelativeTo(null);
}// </editor-fold>

String data_sms[][];
private void btn_kirimActionPerformed(java.awt.event.ActionEvent evt) {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
int row = 0;
ResultSet count_pel = stat.executeQuery("SELECT COUNT(id_pelanggan)
FROM pelanggan ");
if (count_pel.next()) {
data_sms = new String[count_pel.getInt(1)][2];
}
res = stat.executeQuery("SELECT * FROM pelanggan ");
while (res.next()) {
data_sms[row][0] = res.getString("id_pelanggan");
data_sms[row][1] = res.getString("no_hp");
row++;
}
res.close();
stat.close();
con.close();

// PROSES KIRIM SMS KE SEMUA PELANGGAN //


new proses_kirim_notifikasi().execute();

} catch (SQLException error) {


System.out.println(error);
}
}

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


txt_isi_sms.setText("");
}

// Variables declaration - do not modify


private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_kirim;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea txt_isi_sms;
// End of variables declaration

public class proses_kirim_notifikasi extends SwingWorker<String, Void> {


@Override
protected String doInBackground() throws Exception {
System.out.println("proses broadcast ke semua pelanggan");
for (int r = 0; r < data_sms.length; r++) {
String nama = data_sms[r][0];
String nomor = data_sms[r][1];
System.out.println(nama+" "+nomor);
menu.kirim_sms(nomor, txt_isi_sms.getText());
}
return null;
}
@Override
protected void done(){
JOptionPane.showMessageDialog(null, "sukses broadcast sms ke semua
pelanggan ");
System.err.println("sukses broadcast sms ke semua pelanggan ");
txt_isi_sms.setText("");
data_sms = null;
}
}

2. Inbox_Outbox.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Inbox_Outbox extends javax.swing.JInternalFrame {


Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[5];
String data1[] = new String[5];//MEMBUAT STRING DATA UNTUK MENGISI
KOLOM DITABEL
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();

public Inbox_Outbox() {
initComponents();
tabel_inbox.setModel(tblModel);
Tabel(tabel_inbox, new int[]{110, 160, 120, 160, 120});
tabel_outbox.setModel(tblModel1);
Tabel(tabel_outbox, new int[]{110, 160, 120, 160, 120});
tampilkan_data_inbox();
tampilkan_data_outbox();
}

private void tampilkan_data_inbox() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT id_inbox, id_pelanggan, no_hp, isi_sms, waktu_sms "
+ " FROM sms_inbox ";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
tblModel.addRow(data);
}
stat.close();
con.close();
} catch (SQLException error) {
System.out.println(error);
JOptionPane.showMessageDialog(null, "gagal" + error);
}
}

private void tampilkan_data_outbox() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT id_outbox, id_pelanggan, no_hp, isi_sms, waktu_sms "
+ " FROM sms_outbox ";
res = stat.executeQuery(sql);
while (res.next()) {
data1[0] = res.getString(1);
data1[1] = res.getString(2);
data1[2] = res.getString(3);
data1[3] = res.getString(4);
data1[4] = res.getString(5);
tblModel1.addRow(data1);
}
stat.close();
con.close();
} catch (SQLException error) {
System.out.println(error);
JOptionPane.showMessageDialog(null, "gagal" + error);
}
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
tab_sms_outbox = new javax.swing.JTabbedPane();
jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
cmb_inbox = new javax.swing.JComboBox();
txt_cari_inbox = new javax.swing.JTextField();
btn_cari_inbox = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
tabel_inbox = new javax.swing.JTable();
btn_keluar_inbox = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_outbox = new javax.swing.JTable();
cmb_outbox = new javax.swing.JComboBox();
txt_cari_outbox = new javax.swing.JTextField();
btn_cari_outbox = new javax.swing.JButton();
btn_keluar_outbox = new javax.swing.JButton();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_proses.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Inbox & Outbox");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE,
132, javax.swing.GroupLayout.PREFERRED_SIZE))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

cmb_inbox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"Id Inbox", "Id Pelanggan" }));

btn_cari_inbox.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_inbox.setText("Cari");
btn_cari_inbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_inboxActionPerformed(evt);
}
});

tabel_inbox.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane3.setViewportView(tabel_inbox);

btn_keluar_inbox.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar_inbox.setText("Keluar");
btn_keluar_inbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluar_inboxActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane3)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(cmb_inbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_inbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari_inbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btn_keluar_inbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 82, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_inbox, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(txt_cari_inbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari_inbox,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(btn_keluar_inbox,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE, 265,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
tab_sms_outbox.addTab("Sms Inbox", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_outbox.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane2.setViewportView(tabel_outbox);

cmb_outbox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"Id Outbox", "Id Pelanggan" }));

btn_cari_outbox.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_outbox.setText("Cari");
btn_cari_outbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_outboxActionPerformed(evt);
}
});

btn_keluar_outbox.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar_outbox.setText("Keluar");
btn_keluar_outbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluar_outboxActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btn_keluar_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 82, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_outbox,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(txt_cari_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari_outbox,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(btn_keluar_outbox,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 265,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 645, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
356, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 354,
Short.MAX_VALUE)
);

tab_sms_outbox.addTab("Sms Outbox", jPanel5);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tab_sms_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 650,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tab_sms_outbox,
javax.swing.GroupLayout.PREFERRED_SIZE, 382,
javax.swing.GroupLayout.PREFERRED_SIZE))
);

pack();
}// </editor-fold>

private void btn_keluar_outboxActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_keluar_inboxActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_cari_inboxActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_inbox.equals(strKey)) {
tampilkan_data_inbox();
} else if (cmb_inbox.getSelectedItem().toString().equals("Id Inbox")) {
strKey = "id_inbox";
} else if (cmb_inbox.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "id_pelanggan";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM sms_inbox WHERE " + strKey + " like '%" +
txt_cari_inbox.getText() + "%' ORDER BY id_inbox DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}
private void btn_cari_outboxActionPerformed(java.awt.event.ActionEvent evt) {
hapusTabelOutbox();
String strKey = "";
if (txt_cari_outbox.equals(strKey)) {
tampilkan_data_outbox();
} else if (cmb_outbox.getSelectedItem().toString().equals("Id Outbox")) {
strKey = "id_outbox";
} else if (cmb_outbox.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "id_pelanggan";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM sms_outbox WHERE " + strKey + " like '%" +
txt_cari_outbox.getText() + "%' ORDER BY id_outbox DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data1[0] = res.getString(1);
data1[1] = res.getString(2);
data1[2] = res.getString(3);
data1[3] = res.getString(4);
data1[4] = res.getString(5);
tblModel1.addRow(data1);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

// Variables declaration - do not modify


private javax.swing.JButton btn_cari_inbox;
private javax.swing.JButton btn_cari_outbox;
private javax.swing.JButton btn_keluar_inbox;
private javax.swing.JButton btn_keluar_outbox;
private javax.swing.JComboBox cmb_inbox;
private javax.swing.JComboBox cmb_outbox;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTabbedPane tab_sms_outbox;
private javax.swing.JTable tabel_inbox;
private javax.swing.JTable tabel_outbox;
private javax.swing.JTextField txt_cari_inbox;
private javax.swing.JTextField txt_cari_outbox;
// End of variables declaration
private void Tabel(javax.swing.JTable tb, int lebar[]) {
tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private void hapusTabel() {


int rowCount = tabel_inbox.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Inbox", "id Pelanggan", "No Hp", "Isi Sms", " Waktu
Sms",}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false

};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

private void TabelOutbox(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private void hapusTabelOutbox() {


int rowCount = tabel_outbox.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel1.removeRow(0);
}
}

private javax.swing.table.DefaultTableModel tblModel1 =


getDefaultTableModel1();

private javax.swing.table.DefaultTableModel getDefaultTableModel1() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Outbox", "id Pelanggan", "No Hp", "Isi Sms", " Waktu
Sms",}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false

};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}

3. Laporan_Pelanggan.java
package booking_services;

import java.awt.Component;
import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
import koneksi.Koneksi_MySQL;

public class Laporan_Pelanggan extends javax.swing.JInternalFrame {

Koneksi_MySQL database = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

JasperDesign jasperDesign;
JasperPrint jasperPrint;
JasperReport jasperReport;
Map<String, Object> param = new HashMap<String, Object>();

public Laporan_Pelanggan() {
initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
btn_cetak = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_laporan.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jLabel6.setBackground(new java.awt.Color(255, 255, 255));
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Report Pelanggan");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel6)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 17, Short.MAX_VALUE))
);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

btn_cetak.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cetak.setText("Cetak");
btn_cetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cetakActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(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()
.addGap(177, 177, 177)
.addComponent(btn_cetak, javax.swing.GroupLayout.PREFERRED_SIZE,
74, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(36, 36, 36)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(181, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(59, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(btn_cetak,
javax.swing.GroupLayout.PREFERRED_SIZE, 36,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 36,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(60, 60, 60))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_cetakActionPerformed(java.awt.event.ActionEvent evt) {


try {
File file = new File("./src/laporan/reportPelanggan.jrxml");
jasperDesign = JRXmlLoader.load(file);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, null,
database.open_a_Connection());
JOptionPane.showMessageDialog(null, "Mencetak laporan pelanggan");
dispose();
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException | SQLException error) {
JOptionPane.showMessageDialog(null, " Gagal Mencetak laporan pelanggan
", "Peringatan !!", JOptionPane.WARNING_MESSAGE);
System.out.println(error);
}
}

// Variables declaration - do not modify


private javax.swing.JButton btn_cetak;
private javax.swing.JButton btn_keluar;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
// End of variables declaration
}

4. Laporan_Service.java
package booking_services;
import koneksi.Koneksi_MySQL;
import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class Laporan_Service extends javax.swing.JInternalFrame {

Koneksi_MySQL database = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

Date Now = new Date();//STATEMENT UNTUK MENIGISI TANGGAL SEKARANG


DIJCALENDER
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("EEEEE, dd-MMMM-yyyy");
JasperDesign jasperDesign;
JasperPrint jasperPrint;
JasperReport jasperReport;
Map<String, Object> param = new HashMap<String, Object>();

public Laporan_Service() {
initComponents();
dc_tanggal_awal.setDate(Now);
dc_tanggal_akhir.setDate(Now);
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
btn_cetak = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
dc_tanggal_awal = new com.toedter.calendar.JDateChooser();
dc_tanggal_akhir = new com.toedter.calendar.JDateChooser();
jLabel1 = new javax.swing.JLabel();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_laporan.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Report Servis");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(464, Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel6)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 17, Short.MAX_VALUE))
);

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

btn_cetak.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cetak.setText("Cetak");
btn_cetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cetakActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


jLabel1.setText("S/D");

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(175, 175, 175)
.addComponent(btn_cetak,
javax.swing.GroupLayout.PREFERRED_SIZE, 74,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(48, 48, 48))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(dc_tanggal_awal,
javax.swing.GroupLayout.PREFERRED_SIZE, 132,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28)
.addComponent(jLabel1)
.addGap(8, 8, 8)))

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(27, 27, 27)
.addComponent(dc_tanggal_akhir,
javax.swing.GroupLayout.PREFERRED_SIZE, 132,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(50, 50, 50)
.addComponent(jLabel1)
.addGap(39, 39, 39))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addGap(44, 44, 44)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(dc_tanggal_akhir,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(dc_tanggal_awal,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(31, 31, 31)))

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(btn_cetak,
javax.swing.GroupLayout.PREFERRED_SIZE, 36,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 36,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(53, 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(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_cetakActionPerformed(java.awt.event.ActionEvent evt) {


try {
File file = new File("./src/laporan/reportService.jrxml");
jasperDesign = JRXmlLoader.load(file);
param.put("tglAwal", sdf.format(dc_tanggal_awal.getDate()));
param.put("tglAkhir", sdf.format(dc_tanggal_akhir.getDate()));
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, param,
database.open_a_Connection());
JOptionPane.showMessageDialog(null, "Mencetak laporan dari " +
sdf.format(dc_tanggal_awal.getDate()) + " Sampai dengan " +
sdf.format(dc_tanggal_akhir.getDate()));
dispose();
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException | SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal mencetak Laporan", "
Peringatan !! ", JOptionPane.WARNING_MESSAGE);
System.out.println(error);

}
}

// Variables declaration - do not modify


private javax.swing.JButton btn_cetak;
private javax.swing.JButton btn_keluar;
private com.toedter.calendar.JDateChooser dc_tanggal_akhir;
private com.toedter.calendar.JDateChooser dc_tanggal_awal;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
// End of variables declaration
}

5. Main.java
package booking_services;

import com.jtattoo.plaf.noire.NoireLookAndFeel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Main {


public static void main(String[] args) {
javaLookAndFeel(); // untuk theme java application
Menu menu = new Menu();
menu.setVisible(true); // tampilkan menu utama
}

public static void javaLookAndFeel() {


try {
UIManager.setLookAndFeel(new NoireLookAndFeel());
} catch (UnsupportedLookAndFeelException error) {
System.out.println(error);
}
}
}

6. Master_Administrator.java
package booking_services;
import koneksi.Koneksi_MySQL;
import fungsi.Validasi;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class Master_Administrator extends javax.swing.JInternalFrame {


Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[4];
private int row;
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();
public Master_Administrator() {
initComponents();
tabel_admin.setModel(tblModel);
Tabel(tabel_admin, new int[]{150, 150, 150, 150});//membuat tabel dengan
satu kolom berukuran 100 pixel
Validasi();
awal();
autonumber();
setIsiTabel();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

tb_lihat_data = new javax.swing.JTabbedPane();


jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
txt_id_admin = new javax.swing.JTextField();
txt_nm_lengkap = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_ubah = new javax.swing.JButton();
btn_hapus = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
txt_username = new javax.swing.JTextField();
txt_password = new javax.swing.JPasswordField();
jLabel7 = new javax.swing.JLabel();
txt_no_telp = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
txt_ulangipassword = new javax.swing.JPasswordField();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_admin = new javax.swing.JTable();
cmb_admin = new javax.swing.JComboBox();
txt_cari_admin = new javax.swing.JTextField();
btn_cari = new javax.swing.JButton();
btn_tambah = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_master.png"))); //
NOI18N

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Id Administrator");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("Username");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Password");

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Nama Lengkap");

txt_id_admin.setEditable(false);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_ubah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_ubah.setText("Ubah");
btn_ubah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_ubahActionPerformed(evt);
}
});
btn_hapus.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
btn_hapus.setText("Hapus");
btn_hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapusActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

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(49, Short.MAX_VALUE)
.addComponent(btn_simpan)
.addGap(25, 25, 25)
.addComponent(btn_ubah, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_hapus, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(35, 35, 35)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(34, 34, 34))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btn_keluar, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE)
.addComponent(btn_batal, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_hapus, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_simpan, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_ubah, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

jLabel7.setBackground(new java.awt.Color(255, 255, 255));


jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText("Nomor Telepon");

jLabel8.setBackground(new java.awt.Color(255, 255, 255));


jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel8.setText("Ulangi Password");

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(44, 44, 44)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(jLabel7)
.addComponent(jLabel8,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(34, 34, 34)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(txt_id_admin)
.addComponent(txt_nm_lengkap)
.addComponent(txt_password)
.addComponent(txt_no_telp)
.addComponent(txt_ulangipassword,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(34, 34, 34)
.addComponent(txt_username,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(25, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_id_admin,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addGap(9, 9, 9)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_username,
javax.swing.GroupLayout.PREFERRED_SIZE, 27,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_password,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 22,
javax.swing.GroupLayout.PREFERRED_SIZE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_ulangipassword,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 22,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(14, 14, 14)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_nm_lengkap,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addGap(14, 14, 14)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_telp,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addGap(18, 18, 18)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(40, 40, 40))
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(24, 24, 24))
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
337, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

tb_lihat_data.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_admin.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabel_admin.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_adminMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_admin);

cmb_admin.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"Id Admin", "Nama Admin" }));

btn_cari.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari.setText("Cari");
btn_cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cariActionPerformed(evt);
}
});

btn_tambah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah.setText("Tambah");
btn_tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambahActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_admin,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_admin,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82,
Short.MAX_VALUE)
.addComponent(btn_tambah)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_admin, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(txt_cari_admin,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_tambah,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 265,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 645, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
356, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 354,
Short.MAX_VALUE)
);

tb_lihat_data.addTab("Lihat Data", jPanel5);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Admin");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addGap(32, 32, 32))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, 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(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tb_lihat_data, javax.swing.GroupLayout.PREFERRED_SIZE,
650, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tb_lihat_data,
javax.swing.GroupLayout.PREFERRED_SIZE, 382,
javax.swing.GroupLayout.PREFERRED_SIZE))
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_tambahActionPerformed(java.awt.event.ActionEvent evt) {


txt_username.setEnabled(true);
txt_password.setEnabled(true);
txt_ulangipassword.setEnabled(true);
txt_nm_lengkap.setEnabled(true);
txt_no_telp.setEnabled(true);
btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
btn_tambah.setEnabled(false);
btn_batal.setEnabled(true);
btn_simpan.setEnabled(true);
tb_lihat_data.setSelectedIndex(0);
}

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


// cek apabila password tidak sama
if (txt_password.getText().equals(txt_ulangipassword.getText()) == false) {
JOptionPane.showMessageDialog(null, "Password tidak sama", "Peringatan",
JOptionPane.WARNING_MESSAGE);
return;
}
// cek apabila masih ada yang kosong
if (txt_username.getText().isEmpty() | txt_password.getText().isEmpty() |
txt_nm_lengkap.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data masih kosong", "Peringatan!!",
JOptionPane.WARNING_MESSAGE);
txt_username.requestFocus();
return;
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO administrator VALUES("
+ "'" + txt_id_admin.getText() + "',"
+ "'" + txt_nm_lengkap.getText() + "',"
+ "'" + txt_no_telp.getText() + "',"
+ "'" + txt_username.getText() + "',"
+ "'" + txt_password.getText() + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_id_admin.getText();
data[1] = txt_username.getText();
data[2] = txt_nm_lengkap.getText();
data[3] = txt_no_telp.getText();
tblModel.insertRow(0, data);
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data ");
kosongform();
autonumber();
awal();
}
} catch (SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal Menyimpan data " + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
System.err.print(error);
}
}

private void btn_ubahActionPerformed(java.awt.event.ActionEvent evt) {


String password = "";
if (txt_password.getText().isEmpty()) {
password = " ";
} else {
// cek apabila password tidak sama
if (txt_password.getText().equals(txt_ulangipassword.getText()) == false) {
JOptionPane.showMessageDialog(null, "Password tidak sama",
"Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}
password = ",password='" + txt_password.getText() + "' ";
}
if (txt_nm_lengkap.getText().isEmpty() | txt_no_telp.getText().isEmpty() |
txt_username.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data Masih Kosong", "Peringatan",
JOptionPane.WARNING_MESSAGE);
txt_username.requestFocus();
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "UPDATE administrator SET "
+ "nm_admin='" + txt_nm_lengkap.getText() + "',"
+ "no_hp='" + txt_no_telp.getText() + "',"
+ "username='" + txt_username.getText() + "' "
+ password
+ "WHERE id_admin='" + txt_id_admin.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_id_admin.getText();
data[1] = txt_username.getText();
data[2] = txt_nm_lengkap.getText();
data[3] = txt_no_telp.getText();
tblModel.removeRow(row);
tblModel.insertRow(row, data);
JOptionPane.showMessageDialog(null, "Data diubah");
awal();
kosongform();
autonumber();
}
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Gagal diubah" + error, "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}

private void btn_hapusActionPerformed(java.awt.event.ActionEvent evt) {


try {
int jawab = JOptionPane.showConfirmDialog(null, "Yakin Akan Hapus??",
"Konfirmasi", JOptionPane.YES_NO_OPTION);
if (jawab == 0) {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "DELETE FROM administrator WHERE id_admin='" +
txt_id_admin.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
tblModel.removeRow(row);
awal();
kosongform();
autonumber();
};
}
} catch (SQLException error) {
System.err.println(error);
JOptionPane.showMessageDialog(null, "Data gagal dihapus" + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


kosongform();
autonumber();
hapusTabel();
setIsiTabel();
awal();
}

private void tabel_adminMouseClicked(java.awt.event.MouseEvent evt) {


if (evt.getClickCount() == 2) {
row = tabel_admin.getSelectedRow();
txt_id_admin.setText(tblModel.getValueAt(row, 0).toString());
txt_username.setText(tblModel.getValueAt(row, 1).toString());
txt_nm_lengkap.setText(tblModel.getValueAt(row, 2).toString());
txt_no_telp.setText(tblModel.getValueAt(row, 3).toString());
txt_username.setEnabled(true);
txt_password.setEnabled(true);
txt_ulangipassword.setEnabled(true);
txt_nm_lengkap.setEnabled(true);
txt_no_telp.setEnabled(true);
btn_simpan.setEnabled(false);
btn_hapus.setEnabled(true);
btn_ubah.setEnabled(true);
btn_batal.setEnabled(true);
tb_lihat_data.setSelectedIndex(0);
}
}

private void btn_cariActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_admin.equals(strKey)) {
setIsiTabel();
} else if (cmb_admin.getSelectedItem().toString().equals("Id Admin")) {
strKey = "id_admin";
} else {
strKey = "nm_admin";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM administrator WHERE " + strKey + " like '%" +
txt_cari_admin.getText() + "%' ORDER BY id_admin DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("id_admin");
data[1] = res.getString("username");
data[2] = res.getString("nm_admin");
data[3] = res.getString("no_hp");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void awal() {


btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
txt_username.setEnabled(false);
txt_no_telp.setEnabled(false);
txt_password.setEnabled(false);
txt_ulangipassword.setEnabled(false);
txt_nm_lengkap.setEnabled(false);
txt_no_telp.setText("62");
btn_tambah.setEnabled(true);
btn_batal.setEnabled(false);
btn_simpan.setEnabled(false);
tb_lihat_data.setSelectedIndex(1);
}

private void kosongform() {


txt_username.setText("");
txt_password.setText("");
txt_ulangipassword.setText("");
txt_nm_lengkap.setText("");
txt_no_telp.setText("62");
}

public void autonumber() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT RIGHT(id_admin,2) as kd FROM administrator";
res = stat.executeQuery(sql);
if (res.first() == false) {
txt_id_admin.setText("ADM01");
} else {
res.last();
int no = res.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 2 - pjg_cno; i++) {
cno = "0" + cno;
}
txt_id_admin.setText("ADM" + cno);
}
} catch (SQLException error) {
System.out.println(error);
}
}
private void Validasi() {
// txt_username.setDocument(new Validasi(10, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'"));
txt_password.setDocument(new Validasi(10, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'0123456789"));
txt_nm_lengkap.setDocument(new Validasi(30, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'"));
txt_no_telp.setDocument(new Validasi(13, "0123456789"));
}
// Variables declaration - do not modify
private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_cari;
private javax.swing.JButton btn_hapus;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btn_tambah;
private javax.swing.JButton btn_ubah;
private javax.swing.JComboBox cmb_admin;
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.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable tabel_admin;
private javax.swing.JTabbedPane tb_lihat_data;
private javax.swing.JTextField txt_cari_admin;
private javax.swing.JTextField txt_id_admin;
private javax.swing.JTextField txt_nm_lengkap;
private javax.swing.JTextField txt_no_telp;
private javax.swing.JPasswordField txt_password;
private javax.swing.JPasswordField txt_ulangipassword;
private javax.swing.JTextField txt_username;
// End of variables declaration
public void setIsiTabel() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM administrator ORDER BY id_admin DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("id_admin");
data[1] = res.getString("username");
data[2] = res.getString("nm_admin");
data[3] = res.getString("no_hp");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void hapusTabel() {


int rowCount = tabel_admin.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Administrator", "Username", "Nama Lengkap","Nomor
Telepon"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}

7. Master_Jenis_Paket.java
apackage booking_services;

import fungsi.Validasi;
import koneksi.Koneksi_MySQL;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class Master_Jenis_Paket extends javax.swing.JInternalFrame {

Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[4];
String dataPopup[];
private int row;
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();

public Master_Jenis_Paket() {
initComponents();
table_jenis_paket.setModel(tblModel);
Tabel(table_jenis_paket, new int[]{150, 150, 150, 150});//membuat tabel
dengan satu kolom berukuran 100 pixel
Validasi();
awal();
autonumber();
setIsiTabel();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
tb_jenispaket = new javax.swing.JTabbedPane();
jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
txt_id_paket = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_ubah = new javax.swing.JButton();
btn_hapus = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
txt_keterangan = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
txt_harga = new javax.swing.JTextField();
txt_jenis = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
table_jenis_paket = new javax.swing.JTable();
cmb_cari = new javax.swing.JComboBox();
txt_cari = new javax.swing.JTextField();
btn_cari = new javax.swing.JButton();
btn_tambah = new javax.swing.JButton();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_master.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("JENIS PAKET");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE,
117, javax.swing.GroupLayout.PREFERRED_SIZE))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Id Paket");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("Jenis Paket");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Keterangan");

txt_id_paket.setEditable(false);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_ubah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_ubah.setText("Ubah");
btn_ubah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_ubahActionPerformed(evt);
}
});

btn_hapus.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_hapus.setText("Hapus");
btn_hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapusActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(43, 43, 43)
.addComponent(btn_simpan)
.addGap(24, 24, 24)
.addComponent(btn_ubah, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(27, 27, 27)
.addComponent(btn_hapus, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(35, 35, 35)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(40, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(btn_ubah, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_simpan,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_hapus, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_batal, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_keluar, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18))
);

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Harga");

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(35, 35, 35)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(34, 34, 34)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(txt_harga,
javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE)
.addComponent(txt_keterangan,
javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE)
.addComponent(txt_id_paket)
.addComponent(txt_jenis,
javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE))))
.addContainerGap(26, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(26, 26, 26)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_id_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel3)
.addComponent(txt_jenis, javax.swing.GroupLayout.PREFERRED_SIZE,
29, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(11, 11, 11)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel4)
.addComponent(txt_keterangan,
javax.swing.GroupLayout.PREFERRED_SIZE, 29,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_harga,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9,
Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(15, 15, 15))
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(38, Short.MAX_VALUE))
);

tb_jenispaket.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

table_jenis_paket.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
table_jenis_paket.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
table_jenis_paketMouseClicked(evt);
}
});
jScrollPane2.setViewportView(table_jenis_paket);

cmb_cari.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Id


Paket", "Jenis Paket" }));

btn_cari.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari.setText("Cari");
btn_cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cariActionPerformed(evt);
}
});

btn_tambah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah.setText("Tambah");
btn_tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambahActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82,
Short.MAX_VALUE)
.addComponent(btn_tambah)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(txt_cari, javax.swing.GroupLayout.PREFERRED_SIZE,
28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_tambah,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 212,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(20, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(39, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 648, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 338, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

tb_jenispaket.addTab("Lihat Data", jPanel5);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tb_jenispaket, javax.swing.GroupLayout.DEFAULT_SIZE,
653, Short.MAX_VALUE)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tb_jenispaket,
javax.swing.GroupLayout.PREFERRED_SIZE, 365,
javax.swing.GroupLayout.PREFERRED_SIZE))
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_tambahActionPerformed(java.awt.event.ActionEvent evt) {


txt_keterangan.setEnabled(true);
txt_harga.setEnabled(true);
btn_tambah.setEnabled(false);
btn_simpan.setEnabled(true);
btn_hapus.setEnabled(false);
btn_ubah.setEnabled(false);
btn_batal.setEnabled(true);
txt_jenis.setEnabled(true);
tb_jenispaket.setSelectedIndex(0);
txt_jenis.requestFocus();
autonumber();
}

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_id_paket.getText().isEmpty() | txt_keterangan.getText().isEmpty() |
txt_harga.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data masih kosong", "Peringatan!!",
JOptionPane.WARNING_MESSAGE);
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO paket_service VALUES("
+ "'" + txt_id_paket.getText() + "',"
+ "'" + txt_jenis.getText() + "',"
+ "'" + txt_keterangan.getText() + "',"
+ "'" + txt_harga.getText() + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_id_paket.getText();
data[1] = txt_jenis.getText();
data[2] = txt_keterangan.getText();
data[3] = txt_harga.getText();
tblModel.insertRow(0, data);
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data ");
kosongform();
awal();
}
} catch (SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal Menyimpan data " + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
System.err.print(error);
}
}

private void btn_cariActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari.equals(strKey)) {
setIsiTabel();
} else if (cmb_cari.getSelectedItem().toString().equals("Id Paket")) {
strKey = "id_paket";
} else {
strKey = "jenis_paket";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM paket_service WHERE " + strKey + " like '%" +
txt_cari.getText() + "%' ORDER BY id_paket DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("id_paket");
data[1] = res.getString("jenis_paket");
data[2] = res.getString("keterangan");
data[3] = res.getString("biaya");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void btn_ubahActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_id_paket.getText().isEmpty() | txt_keterangan.getText().isEmpty() |
txt_harga.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data Masih Kosong", "Peringatan",
JOptionPane.WARNING_MESSAGE);
return;
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "UPDATE paket_service SET "
+ "jenis_paket='" + txt_jenis.getText() + "',"
+ "keterangan='" + txt_keterangan.getText() + "',"
+ "biaya='" + txt_harga.getText() + "' "
+ "WHERE id_paket='" + txt_id_paket.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_id_paket.getText();
data[1] = txt_jenis.getText();
data[2] = txt_keterangan.getText();
data[3] = txt_harga.getText();
tblModel.removeRow(row);
tblModel.insertRow(row, data);
JOptionPane.showMessageDialog(null, "Data diubah");
awal();
kosongform();
}
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Gagal diubah" + error, "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}

private void table_jenis_paketMouseClicked(java.awt.event.MouseEvent evt) {


if (evt.getClickCount() == 2) {
row = table_jenis_paket.getSelectedRow();
txt_id_paket.setText(tblModel.getValueAt(row, 0).toString());
txt_jenis.setText(tblModel.getValueAt(row, 1).toString());
txt_keterangan.setText(tblModel.getValueAt(row, 2).toString());
txt_harga.setText(tblModel.getValueAt(row, 3).toString());
btn_simpan.setEnabled(false);
btn_hapus.setEnabled(true);
btn_ubah.setEnabled(true);
btn_batal.setEnabled(true);
txt_jenis.setEnabled(true);
tb_jenispaket.setSelectedIndex(0);
}
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


kosongform();
awal();
}

private void btn_hapusActionPerformed(java.awt.event.ActionEvent evt) {


try {
int jawab = JOptionPane.showConfirmDialog(null, "Yakin Akan Hapus??",
"Konfirmasi", JOptionPane.YES_NO_OPTION);
if (jawab == 0) {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "DELETE FROM paket_service WHERE id_paket='" +
txt_id_paket.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
tblModel.removeRow(row);
awal();
kosongform();
}
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Data gagal dihapus" + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}
private void awal() {
tb_jenispaket.setSelectedIndex(1);
btn_tambah.setEnabled(true);
btn_simpan.setEnabled(false);
btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
btn_batal.setEnabled(false);
txt_jenis.setEnabled(false);
}

private void kosongform() {


txt_keterangan.setText("");
txt_harga.setText("");
txt_id_paket.setText("");
txt_jenis.setText("");
}

private void autonumber() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT RIGHT(id_paket,1) as kd FROM paket_service";
res = stat.executeQuery(sql);
if (res.first() == false) {
txt_id_paket.setText("P1");
} else {
res.last();
int no = res.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 1 - pjg_cno; i++) {
cno = "0" + cno;
}
txt_id_paket.setText("P" + cno);
}
} catch (SQLException error) {
System.out.println(error);
}
}

private void Validasi(){


txt_jenis.setDocument(new Validasi(20, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM&+1234567890'"));
txt_keterangan.setDocument(new Validasi(255, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'"));
txt_harga.setDocument(new Validasi(11, "0123456789"));
}

// Variables declaration - do not modify


private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_cari;
private javax.swing.JButton btn_hapus;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btn_tambah;
private javax.swing.JButton btn_ubah;
private javax.swing.JComboBox cmb_cari;
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.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable table_jenis_paket;
private javax.swing.JTabbedPane tb_jenispaket;
private javax.swing.JTextField txt_cari;
private javax.swing.JTextField txt_harga;
private javax.swing.JTextField txt_id_paket;
private javax.swing.JTextField txt_jenis;
private javax.swing.JTextField txt_keterangan;
// End of variables declaration
private void setIsiTabel() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM paket_service ORDER BY id_paket DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void hapusTabel() {


int rowCount = table_jenis_paket.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();
private javax.swing.table.DefaultTableModel getDefaultTableModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Paket", "Jenis Paket", "Keterangan", "Harga Paket"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

// ^^ POPUP
public void setDataPopup(String[] dataPopup) {
this.dataPopup = dataPopup;
}

public String[] getDataPopup() {


return dataPopup;
}
}

8. Master_Mobil.java
package booking_services;

import fungsi.Validasi;
import koneksi.Koneksi_MySQL;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class Master_Mobil extends javax.swing.JInternalFrame {

Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[4];
String dataPopup[];
private int row;
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();

public Master_Mobil() {
initComponents();
tabel_mobil.setModel(tblModel);
Tabel(tabel_mobil, new int[]{150, 150, 150, 150});//membuat tabel dengan
satu kolom berukuran 100 pixel
Validasi();
awal();
setIsiTabel();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

tb_lihat_data = new javax.swing.JTabbedPane();


jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
txt_kd_pelanggan = new javax.swing.JTextField();
txt_nm_pelanggan = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_ubah = new javax.swing.JButton();
btn_hapus = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
txt_no_plat = new javax.swing.JTextField();
btncaripelanggan = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
txt_merk_mobil = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_mobil = new javax.swing.JTable();
cmb_mobil = new javax.swing.JComboBox();
txt_cari_mobil = new javax.swing.JTextField();
btn_cari_mobil = new javax.swing.JButton();
btn_tambah = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_master.png"))); //
NOI18N
jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Kode Pelanggan");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("Nama Pelanggan");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Nomor Plat");

txt_kd_pelanggan.setEditable(false);

txt_nm_pelanggan.setEditable(false);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_ubah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_ubah.setText("Ubah");
btn_ubah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_ubahActionPerformed(evt);
}
});

btn_hapus.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_hapus.setText("Hapus");
btn_hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapusActionPerformed(evt);
}
});
btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(43, 43, 43)
.addComponent(btn_simpan)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_ubah, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_hapus, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(38, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(btn_ubah, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_simpan,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_hapus, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_batal, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_keluar, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(21, 21, 21))
);

btncaripelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btncaripelanggan.setText("Cari");
btncaripelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncaripelangganActionPerformed(evt);
}
});

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Merk Mobil");

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel2,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(txt_kd_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 173,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 76,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(txt_nm_pelanggan)
.addComponent(txt_no_plat,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_merk_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(20, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel2)
.addComponent(txt_kd_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 34,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel3)
.addComponent(txt_nm_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_plat,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16,
Short.MAX_VALUE)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel5)
.addComponent(txt_merk_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
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()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(37, Short.MAX_VALUE))
);

tb_lihat_data.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_mobil.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabel_mobil.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_mobilMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_mobil);
cmb_mobil.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"Nama Pelanggan", "Nomor Polisi" }));

btn_cari_mobil.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_mobil.setText("Cari");
btn_cari_mobil.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_mobilActionPerformed(evt);
}
});

btn_tambah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah.setText("Tambah");
btn_tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambahActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 472, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 112,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_cari_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_tambah)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING, false)
.addComponent(btn_cari_mobil,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 32,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_cari_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 29,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(btn_tambah,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 250,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 2, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

tb_lihat_data.addTab("Lihat Data", jPanel5);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("MOBIL");
javax.swing.GroupLayout jPanel12Layout = new
javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addGap(32, 32, 32))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(23, Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 9, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addComponent(tb_lihat_data,
javax.swing.GroupLayout.PREFERRED_SIZE, 523,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(1, 1, 1))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, 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(tb_lihat_data,
javax.swing.GroupLayout.PREFERRED_SIZE, 370,
javax.swing.GroupLayout.PREFERRED_SIZE))
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btn_tambahActionPerformed(java.awt.event.ActionEvent evt) {


tb_lihat_data.setSelectedIndex(0);
btn_tambah.setEnabled(false);
btn_simpan.setEnabled(true);
btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
btn_batal.setEnabled(true);
btncaripelanggan.setEnabled(true);
}

private void btncaripelangganActionPerformed(java.awt.event.ActionEvent evt) {


java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Popup_Pelanggan dialog = new Popup_Pelanggan(new
javax.swing.JFrame(), true);
dialog.setVisible(true);
if (dialog.getData()[0].equals("")) return;

txt_kd_pelanggan.setText(dialog.getData()[0]);
txt_nm_pelanggan.setText(dialog.getData()[1]);
}
});
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


kosongform();
awal();
}

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_kd_pelanggan.getText().isEmpty() | txt_no_plat.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data masih kosong", "Peringatan!!",
JOptionPane.WARNING_MESSAGE);
txt_no_plat.requestFocus();
return;
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO mobil VALUES("
+ "'" + txt_kd_pelanggan.getText() + "',"
+ "'" + txt_no_plat.getText().replaceAll(" ","") + "',"
+ "'" + txt_merk_mobil.getText() + "',"
+ "'" + 1 + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_kd_pelanggan.getText();
data[1] = txt_nm_pelanggan.getText();
data[2] = txt_no_plat.getText().replaceAll(" ","");
data[3] = txt_merk_mobil.getText();
tblModel.insertRow(0, data);
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data " +
txt_nm_pelanggan.getText().toUpperCase() + " dengan plat no " +
txt_no_plat.getText().toUpperCase());
kosongform();
awal();
}
} catch (SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal Menyimpan data " + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
System.err.print(error);
}
}

private void btn_ubahActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_kd_pelanggan.getText().isEmpty() | txt_no_plat.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data Masih Kosong", "Peringatan",
JOptionPane.WARNING_MESSAGE);
txt_nm_pelanggan.requestFocus();
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "UPDATE mobil SET "
+ "merk='" + txt_merk_mobil.getText() + "' "
+ "WHERE id_pelanggan='" + txt_kd_pelanggan.getText() + "' AND
plat_no = '"+txt_no_plat.getText().replaceAll(" ","")+"'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_kd_pelanggan.getText();
data[1] = txt_nm_pelanggan.getText();
data[2] = txt_no_plat.getText().replaceAll(" ","");
data[3] = txt_merk_mobil.getText();
tblModel.removeRow(row);
tblModel.insertRow(row, data);
JOptionPane.showMessageDialog(null, "Data diubah");
awal();
kosongform();
}
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Gagal diubah" + error, "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}

private void btn_hapusActionPerformed(java.awt.event.ActionEvent evt) {


try {
int jawab = JOptionPane.showConfirmDialog(null, "Yakin Akan Hapus??",
"Konfirmasi", JOptionPane.YES_NO_OPTION);
if (jawab == 0) {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "DELETE FROM mobil WHERE plat_no='" + txt_no_plat.getText() +
"'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
tblModel.removeRow(row);
awal();
kosongform();
};
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Data gagal dihapus" + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

private void tabel_mobilMouseClicked(java.awt.event.MouseEvent evt) {


if (evt.getClickCount() == 2) {
row = tabel_mobil.getSelectedRow();
txt_kd_pelanggan.setText(tblModel.getValueAt(row, 0).toString());
txt_nm_pelanggan.setText(tblModel.getValueAt(row, 1).toString());
txt_no_plat.setText(tblModel.getValueAt(row, 2).toString());
txt_merk_mobil.setText(tblModel.getValueAt(row, 3).toString());
btn_simpan.setEnabled(false);
btn_hapus.setEnabled(true);
btn_ubah.setEnabled(true);
btn_batal.setEnabled(true);
txt_no_plat.setEnabled(false);
tb_lihat_data.setSelectedIndex(0);
}
}

private void btn_cari_mobilActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_mobil.equals(strKey)) {
setIsiTabel();
} else if (cmb_mobil.getSelectedItem().toString().equals("Nama Pelanggan")) {
strKey = "p.nm_pelanggan";
} else {
strKey = "m.plat_no";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM mobil m, pelanggan p WHERE m.id_pelanggan =
p.id_pelanggan AND "
+ "" + strKey + " LIKE '%" + txt_cari_mobil.getText() + "%' ORDER
BY m.id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("m.id_pelanggan");
data[1] = res.getString("p.nm_pelanggan");
data[2] = res.getString("m.plat_no");
data[3] = res.getString("m.merk");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void awal() {


tb_lihat_data.setSelectedIndex(1);
btn_tambah.setEnabled(true);
btn_simpan.setEnabled(false);
btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
btn_batal.setEnabled(false);
btncaripelanggan.setEnabled(false);
}

private void kosongform() {


txt_no_plat.setText("");
txt_kd_pelanggan.setText("");
txt_nm_pelanggan.setText("");
txt_merk_mobil.setText("");
}
private void Validasi(){
txt_no_plat.setDocument(new Validasi(11, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'0123456789"));
txt_merk_mobil.setDocument(new Validasi(25, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM"));
}
// Variables declaration - do not modify
private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_cari_mobil;
private javax.swing.JButton btn_hapus;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btn_tambah;
private javax.swing.JButton btn_ubah;
private javax.swing.JButton btncaripelanggan;
private javax.swing.JComboBox cmb_mobil;
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.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable tabel_mobil;
private javax.swing.JTabbedPane tb_lihat_data;
private javax.swing.JTextField txt_cari_mobil;
private javax.swing.JTextField txt_kd_pelanggan;
private javax.swing.JTextField txt_merk_mobil;
private javax.swing.JTextField txt_nm_pelanggan;
private javax.swing.JTextField txt_no_plat;
// End of variables declaration
public void setIsiTabel() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM mobil m, pelanggan p WHERE m.id_pelanggan =
p.id_pelanggan ORDER BY m.id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("m.id_pelanggan");
data[1] = res.getString("p.nm_pelanggan");
data[2] = res.getString("m.plat_no");
data[3] = res.getString("m.merk");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void hapusTabel() {


int rowCount = tabel_mobil.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}
private void Tabel(javax.swing.JTable tb, int lebar[]) {
tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Kode Pelanggan", "Nama Pelanggan", "Plat Nomor", "Merk
Mobil"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

// ^^ POPUP Pelanggan
public void setDataPopup(String[] dataPopup) {
this.dataPopup = dataPopup;
}

public String[] getDataPopup() {


return dataPopup;
}
}
9. Master_Pelanggan.java
package booking_services;

import koneksi.Koneksi_MySQL;
import fungsi.Validasi;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
public class Master_Pelanggan extends javax.swing.JDialog {

Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[4];
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();
Menu menu = null;

public Master_Pelanggan(Menu menu) {


this.menu = menu ;
initComponents();
tabel_pelanggan.setModel(tblModel);
Tabel(tabel_pelanggan, new int[]{150, 150, 150, 150});//membuat tabel
dengan satu kolom berukuran 100 pixel
Validasi();// input sesuai tipe karakater
awal(); // set awal ketika program baru dibuka
autonumber();// autonumber sesuai kode pelanggan
setIsiTabel(); // tampilkan data pelanggan
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

tab_form = new javax.swing.JTabbedPane();


jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
txt_kd_pelanggan = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
txt_alamat = new javax.swing.JTextArea();
txt_no_hp = new javax.swing.JTextField();
txt_nm_pelanggan = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_ubah = new javax.swing.JButton();
btn_hapus = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_pelanggan = new javax.swing.JTable();
cmb_pelanggan = new javax.swing.JComboBox();
txt_cari_pelanggan = new javax.swing.JTextField();
btn_cari = new javax.swing.JButton();
btn_tambah = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();

setIconImage(null);

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Kode Pelanggan");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("Nama Pelanggan");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Alamat");

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Nomor Handphone");

txt_kd_pelanggan.setEditable(false);

txt_alamat.setColumns(20);
txt_alamat.setLineWrap(true);
txt_alamat.setRows(5);
jScrollPane1.setViewportView(txt_alamat);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_ubah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_ubah.setText("Ubah");
btn_ubah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_ubahActionPerformed(evt);
}
});

btn_hapus.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_hapus.setText("Hapus");
btn_hapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapusActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(43, 43, 43)
.addComponent(btn_simpan)
.addGap(25, 25, 25)
.addComponent(btn_ubah, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_hapus, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(35, 35, 35)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(40, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(btn_simpan,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(btn_ubah, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_hapus, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_batal, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_keluar, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE))
.addGap(21, 21, 21))
);

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(35, 35, 35)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel5))
.addGap(34, 34, 34)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(jScrollPane1)
.addComponent(txt_nm_pelanggan)
.addComponent(txt_kd_pelanggan)
.addComponent(txt_no_hp,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()
.addContainerGap(34, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(34, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_kd_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_nm_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(14, 14, 14)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_hp,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(23, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

tab_form.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_pelanggan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabel_pelanggan.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_pelangganMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_pelanggan);

cmb_pelanggan.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { "Kode Pelanggan", "Nama Pelanggan", "Alamat" }));

btn_cari.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari.setText("Cari");
btn_cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cariActionPerformed(evt);
}
});

btn_tambah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah.setText("Tambah");
btn_tambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambahActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82,
Short.MAX_VALUE)
.addComponent(btn_tambah)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_pelanggan,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(txt_cari_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE)
.addComponent(btn_tambah,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 285,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout jPanel6Layout = new
javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(18, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 383, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

tab_form.addTab("Lihat Data", jPanel5);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("PELANGGAN");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE,
117, javax.swing.GroupLayout.PREFERRED_SIZE))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, 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(tab_form, javax.swing.GroupLayout.PREFERRED_SIZE, 655,
Short.MAX_VALUE)
.addComponent(jPanel11, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(tab_form, javax.swing.GroupLayout.PREFERRED_SIZE,
411, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

pack();
setLocationRelativeTo(null);
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}
private int row;
private void btn_tambahActionPerformed(java.awt.event.ActionEvent evt) {
txt_nm_pelanggan.setEnabled(true);
txt_alamat.setEnabled(true);
txt_no_hp.setEnabled(true);
btn_simpan.setEnabled(true);
btn_hapus.setEnabled(false);
btn_ubah.setEnabled(false);
btn_batal.setEnabled(true);
tab_form.setSelectedIndex(0);
txt_nm_pelanggan.requestFocus();
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


kosongform();
autonumber();
hapusTabel();
setIsiTabel();
awal();
}

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_nm_pelanggan.getText().isEmpty() | txt_no_hp.getText().isEmpty() |
txt_alamat.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data masih kosong", "Peringatan!!",
JOptionPane.WARNING_MESSAGE);
txt_nm_pelanggan.requestFocus();
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO pelanggan VALUES("
+ "'" + txt_kd_pelanggan.getText() + "',"
+ "'" + txt_nm_pelanggan.getText() + "',"
+ "'" + txt_alamat.getText() + "',"
+ "'" + txt_no_hp.getText() + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_kd_pelanggan.getText();
data[1] = txt_nm_pelanggan.getText();
data[2] = txt_alamat.getText();
data[3] = txt_no_hp.getText();
tblModel.insertRow(0, data);
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data " +
txt_nm_pelanggan.getText());
// KIRIM SMS KE PELANGGAN
String pesan = "Selamat "+txt_nm_pelanggan.getText()+" anda terdaftar
layanan sms bengkel HONDA kb.jeruk, pada tanggal "+new SimpleDateFormat("dd
MMMM yyyy, HH:mm:ss").format(new Date())+" silahkan ketik layanan sms untuk
info selanjutnya ";
menu.kirim_sms(txt_no_hp.getText(),pesan);
kosongform();
autonumber();
awal();
}
} catch (SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal Menyimpan data " + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
System.err.print(error);
}
}

private void btn_cariActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_pelanggan.equals(strKey)) {
setIsiTabel();
} else if (cmb_pelanggan.getSelectedItem().toString().equals("Kode
Pelanggan")) {
strKey = "id_pelanggan";
} else if (cmb_pelanggan.getSelectedItem().toString().equals("Nama
Pelanggan")) {
strKey = "nm_pelanggan";
} else {
strKey = "alamat";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan WHERE " + strKey + " like '%" +
txt_cari_pelanggan.getText() + "%' ORDER BY id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void btn_ubahActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_nm_pelanggan.getText().isEmpty() | txt_no_hp.getText().isEmpty() |
txt_alamat.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data Masih Kosong", "Peringatan",
JOptionPane.WARNING_MESSAGE);
txt_nm_pelanggan.requestFocus();
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "UPDATE pelanggan SET "
+ "nm_pelanggan='" + txt_nm_pelanggan.getText() + "',"
+ "alamat='" + txt_alamat.getText() + "',"
+ "no_hp='" + txt_no_hp.getText() + "' "
+ "WHERE id_pelanggan='" + txt_kd_pelanggan.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
data[0] = txt_kd_pelanggan.getText();
data[1] = txt_nm_pelanggan.getText();
data[2] = txt_alamat.getText();
data[3] = txt_no_hp.getText();
tblModel.removeRow(row);
tblModel.insertRow(row, data);
JOptionPane.showMessageDialog(null, "Data diubah");
awal();
kosongform();
autonumber();
}
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Gagal diubah" + error, "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}

private void btn_hapusActionPerformed(java.awt.event.ActionEvent evt) {


try {
int jawab = JOptionPane.showConfirmDialog(null, "Yakin Akan Hapus??",
"Konfirmasi", JOptionPane.YES_NO_OPTION);
if (jawab == 0) {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "DELETE FROM pelanggan WHERE id_pelanggan='" +
txt_kd_pelanggan.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
tblModel.removeRow(row);
awal();
kosongform();
autonumber();
};
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Data gagal dihapus" + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}
private String no_hp_lama = null;
private void tabel_pelangganMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
row = tabel_pelanggan.getSelectedRow();
txt_kd_pelanggan.setText(tblModel.getValueAt(row, 0).toString());
txt_nm_pelanggan.setText(tblModel.getValueAt(row, 1).toString());
txt_alamat.setText(tblModel.getValueAt(row, 2).toString());
txt_no_hp.setText(tblModel.getValueAt(row, 3).toString());
no_hp_lama = tblModel.getValueAt(row, 3).toString();
btn_simpan.setEnabled(false);
btn_hapus.setEnabled(true);
btn_ubah.setEnabled(true);
btn_batal.setEnabled(true);
tab_form.setSelectedIndex(0);
}
}

private void awal() {


btn_ubah.setEnabled(false);
btn_hapus.setEnabled(false);
txt_nm_pelanggan.setEnabled(false);
txt_alamat.setEnabled(false);
txt_no_hp.setEnabled(false);
txt_no_hp.setText("62");
btn_tambah.setEnabled(true);
btn_batal.setEnabled(false);
btn_simpan.setEnabled(false);
tab_form.setSelectedIndex(1);
}

private void kosongform() {


txt_nm_pelanggan.setText("");
txt_alamat.setText("");
txt_no_hp.setText("62");
}

private void autonumber() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT RIGHT(id_pelanggan,3) as kd FROM pelanggan";
res = stat.executeQuery(sql);
if (res.first() == false) {
txt_kd_pelanggan.setText("PEL001");
} else {
res.last();
int no = res.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 3 - pjg_cno; i++) {
cno = "0" + cno;
}
txt_kd_pelanggan.setText("PEL" + cno);
}
} catch (SQLException error) {
System.out.println(error);
}
}
private void Validasi() {
txt_nm_pelanggan.setDocument(new Validasi(35,
"qwertyuiopasdfghjklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM'"));
txt_no_hp.setDocument(new Validasi(13, "0123456789"));
txt_alamat.setDocument(new Validasi(500, "qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM'.0123456789"));
}
// Variables declaration - do not modify
private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_cari;
private javax.swing.JButton btn_hapus;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btn_tambah;
private javax.swing.JButton btn_ubah;
private javax.swing.JComboBox cmb_pelanggan;
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.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTabbedPane tab_form;
private javax.swing.JTable tabel_pelanggan;
private javax.swing.JTextArea txt_alamat;
private javax.swing.JTextField txt_cari_pelanggan;
private javax.swing.JTextField txt_kd_pelanggan;
private javax.swing.JTextField txt_nm_pelanggan;
private javax.swing.JTextField txt_no_hp;
// End of variables declaration
public void setIsiTabel() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan ORDER BY id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void hapusTabel() {


int rowCount = tabel_pelanggan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}
// meembuat tabel secara koding
private void Tabel(javax.swing.JTable tb, int lebar[]) {
tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Kode Pelanggan", "Nama Pelanggan", "Alamat", "Nomor
Telepon"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}

10. Menu.java
package booking_services;

import koneksi.Koneksi_MySQL;
import fungsi.DateTime;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import koneksi.Connect_Sms;

public class Menu extends javax.swing.JFrame {


Koneksi_MySQL objKoneksi = new Koneksi_MySQL();
DateTime datetime = new DateTime();

// ^^ MYSQL
Connect_Sms sms = new Connect_Sms(this); // panggil fungsi dari class
ConnectSmsGw
Connection con; // conection untuk database mysql
Statement stat; // untuk perintah insert, update, delete dll
ResultSet res; // Untuk mencari hasil dari data pada tabel sql
String sql; // AKHIR STRING STATEMENT SQL
Master_Pelanggan pelanggan = new Master_Pelanggan(this);
Broadcast broadcast = new Broadcast(this);

int ScreenWidth, ScreenHeight;


public Menu() {
initComponents();
setExtendedState(MAXIMIZED_BOTH);
setIconImage(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_utama.png")).getImag
e()); // set icon me
ScreenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
ScreenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
//mengatur panel koneksi sesuai posisi yang dingikan
panel_login.setLocation((ScreenWidth-panel_login.getWidth()-25), 10);
panel_port.setLocation((ScreenWidth-panel_port.getWidth()-25),570);
panel_jam.setLocation(40, (ScreenHeight-panel_jam.getHeight()-130));

jalankanjam();
sebelum_login();

private void sebelum_login(){


menufile.setEnabled(false);
menumaster.setEnabled(false);
menutransaksi.setEnabled(false);
menulaporan.setEnabled(false);
menuproses.setEnabled(false);
menubantuan.setEnabled(false);
panel_login.setVisible(true);
panel_port.setVisible(false);
btnlogin.requestFocus();
}

private void sesudah_login(){


if (sms.status_port == false) {
menufile.setEnabled(true);
menumaster.setEnabled(true);
menutransaksi.setEnabled(true);
menulaporan.setEnabled(true);
menuproses.setEnabled(true);
menubantuan.setEnabled(true);
panel_login.setVisible(false);
panel_port.setVisible(true);
panel_status.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_status_off.png")));
sms.new cari_port_sms_gateway().execute();
}
}

private void jalankanjam() {


ActionListener ActionInfoWaktu = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
lbl_jam.setText(datetime.showTimeNow());
lbl_tanggal.setText(datetime.showDateNow());
}
};
Timer timer = new Timer(1000, ActionInfoWaktu);
timer.start();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

desktop = new style.Desktop();


panel_port = new style.PanelTransparan();
jLabel1 = new javax.swing.JLabel();
cb_port_sms = new javax.swing.JComboBox();
loading = new javax.swing.JProgressBar();
btn_on_sms = new javax.swing.JButton();
btn_off_sms = new javax.swing.JButton();
panel_status = new javax.swing.JLabel();
panel_login = new style.PanelTransparan();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
btnlogin = new javax.swing.JButton();
txt_username = new javax.swing.JTextField();
btnkeluar = new javax.swing.JButton();
txt_password = new javax.swing.JPasswordField();
panel_jam = new style.PanelTransparan();
lbl_jam = new javax.swing.JLabel();
lbl_tanggal = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
menufile = new javax.swing.JMenu();
m_keluar = new javax.swing.JMenuItem();
menumaster = new javax.swing.JMenu();
m_pelanggan = new javax.swing.JMenuItem();
m_mobil = new javax.swing.JMenuItem();
m_paket_servis = new javax.swing.JMenuItem();
m_admin = new javax.swing.JMenuItem();
menutransaksi = new javax.swing.JMenu();
m_sevice = new javax.swing.JMenuItem();
m_kwitansi = new javax.swing.JMenuItem();
menulaporan = new javax.swing.JMenu();
m_laporan_pelanggan = new javax.swing.JMenuItem();
m_laporan_pemesanan = new javax.swing.JMenuItem();
menuproses = new javax.swing.JMenu();
m_sms = new javax.swing.JMenuItem();
m_saran = new javax.swing.JMenuItem();
m_braodcast = new javax.swing.JMenuItem();
menubantuan = new javax.swing.JMenu();
m_panduan = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});

jLabel1.setForeground(new java.awt.Color(255, 153, 0));


jLabel1.setText("Port SMS");

btn_on_sms.setText("On");
btn_on_sms.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_on_smsActionPerformed(evt);
}
});

btn_off_sms.setText("Off");
btn_off_sms.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_off_smsActionPerformed(evt);
}
});

panel_status.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_status_off.png"))); //
NOI18N
javax.swing.GroupLayout panel_portLayout = new
javax.swing.GroupLayout(panel_port);
panel_port.setLayout(panel_portLayout);
panel_portLayout.setHorizontalGroup(

panel_portLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel_portLayout.createSequentialGroup()
.addGap(13, 13, 13)

.addGroup(panel_portLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.LEADING, false)
.addComponent(loading, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(panel_portLayout.createSequentialGroup()
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 62,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panel_status,
javax.swing.GroupLayout.PREFERRED_SIZE, 39,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cb_port_sms,
javax.swing.GroupLayout.PREFERRED_SIZE, 140,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_on_sms,
javax.swing.GroupLayout.PREFERRED_SIZE, 50,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_off_sms,
javax.swing.GroupLayout.PREFERRED_SIZE, 50,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(16, Short.MAX_VALUE))
);
panel_portLayout.setVerticalGroup(

panel_portLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel_portLayout.createSequentialGroup()
.addContainerGap()

.addGroup(panel_portLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.TRAILING)

.addGroup(panel_portLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.BASELINE)
.addComponent(btn_on_sms)
.addComponent(btn_off_sms)
.addComponent(cb_port_sms,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel1)
.addComponent(panel_status,
javax.swing.GroupLayout.PREFERRED_SIZE, 20,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(loading, javax.swing.GroupLayout.PREFERRED_SIZE, 21,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(14, 14, 14))
);

desktop.add(panel_port);
panel_port.setBounds(20, 20, 410, 80);

jLabel2.setForeground(new java.awt.Color(255, 255, 255));


jLabel2.setText("Username");

jLabel3.setForeground(new java.awt.Color(255, 255, 255));


jLabel3.setText("Password");

btnlogin.setText("Masuk");
btnlogin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnloginActionPerformed(evt);
}
});

btnkeluar.setText("Keluar");
btnkeluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnkeluarActionPerformed(evt);
}
});

javax.swing.GroupLayout panel_loginLayout = new


javax.swing.GroupLayout(panel_login);
panel_login.setLayout(panel_loginLayout);
panel_loginLayout.setHorizontalGroup(

panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(panel_loginLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING, false)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 72,
Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)

.addGroup(panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING, false)
.addGroup(panel_loginLayout.createSequentialGroup()
.addComponent(btnlogin,
javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnkeluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(txt_username)
.addComponent(txt_password))
.addContainerGap(72, Short.MAX_VALUE))
);
panel_loginLayout.setVerticalGroup(

panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(panel_loginLayout.createSequentialGroup()
.addContainerGap()

.addGroup(panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.BASELINE)
.addComponent(jLabel2)
.addComponent(txt_username,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.BASELINE)
.addComponent(jLabel3)
.addComponent(txt_password,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(panel_loginLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.BASELINE)
.addComponent(btnlogin)
.addComponent(btnkeluar))
.addContainerGap(24, Short.MAX_VALUE))
);

desktop.add(panel_login);
panel_login.setBounds(200, 160, 340, 110);

lbl_jam.setFont(new java.awt.Font("Tahoma", 1, 36)); // NOI18N


lbl_jam.setForeground(new java.awt.Color(255, 204, 0));
lbl_jam.setText("20 : 00");

lbl_tanggal.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N


lbl_tanggal.setForeground(new java.awt.Color(255, 204, 0));
lbl_tanggal.setText("SENIN 20 DESEMBER 2015");

javax.swing.GroupLayout panel_jamLayout = new


javax.swing.GroupLayout(panel_jam);
panel_jam.setLayout(panel_jamLayout);
panel_jamLayout.setHorizontalGroup(

panel_jamLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel_jamLayout.createSequentialGroup()
.addContainerGap(46, Short.MAX_VALUE)
.addComponent(lbl_tanggal, javax.swing.GroupLayout.PREFERRED_SIZE,
206, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18))
.addGroup(panel_jamLayout.createSequentialGroup()
.addGap(57, 57, 57)
.addComponent(lbl_jam)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
panel_jamLayout.setVerticalGroup(

panel_jamLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel_jamLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lbl_jam, javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(lbl_tanggal)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

desktop.add(panel_jam);
panel_jam.setBounds(40, 340, 270, 95);

menufile.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_file.png"))); // NOI18N
menufile.setText("File");
menufile.setPreferredSize(new java.awt.Dimension(100, 26));

m_keluar.setText("Keluar");
m_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_keluarActionPerformed(evt);
}
});
menufile.add(m_keluar);

jMenuBar1.add(menufile);

menumaster.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_master.png"))); //
NOI18N
menumaster.setText("Master");
menumaster.setPreferredSize(new java.awt.Dimension(100, 26));

m_pelanggan.setText("Master Pelanggan");
m_pelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_pelangganActionPerformed(evt);
}
});
menumaster.add(m_pelanggan);

m_mobil.setText("Master Mobil");
m_mobil.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_mobilActionPerformed(evt);
}
});
menumaster.add(m_mobil);

m_paket_servis.setText("Paket Servis");
m_paket_servis.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_paket_servisActionPerformed(evt);
}
});
menumaster.add(m_paket_servis);
m_admin.setText("Administrator");
m_admin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_adminActionPerformed(evt);
}
});
menumaster.add(m_admin);

jMenuBar1.add(menumaster);

menutransaksi.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_transaksi.png"))); //
NOI18N
menutransaksi.setText("Transaksi");
menutransaksi.setPreferredSize(new java.awt.Dimension(100, 26));

m_sevice.setText("Transaksi Servis");
m_sevice.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_seviceActionPerformed(evt);
}
});
menutransaksi.add(m_sevice);

m_kwitansi.setText("Transaksi Kwitansi");
m_kwitansi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_kwitansiActionPerformed(evt);
}
});
menutransaksi.add(m_kwitansi);

jMenuBar1.add(menutransaksi);

menulaporan.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_laporan.png"))); //
NOI18N
menulaporan.setText("Laporan");
menulaporan.setPreferredSize(new java.awt.Dimension(100, 26));

m_laporan_pelanggan.setText("Laporan Pelanggan");
m_laporan_pelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_laporan_pelangganActionPerformed(evt);
}
});
menulaporan.add(m_laporan_pelanggan);
m_laporan_pemesanan.setText("Laporan Servis");
m_laporan_pemesanan.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_laporan_pemesananActionPerformed(evt);
}
});
menulaporan.add(m_laporan_pemesanan);

jMenuBar1.add(menulaporan);

menuproses.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_proses.png"))); //
NOI18N
menuproses.setText("Proses");
menuproses.setPreferredSize(new java.awt.Dimension(100, 26));

m_sms.setText("Inbox & Outbox");


m_sms.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_smsActionPerformed(evt);
}
});
menuproses.add(m_sms);

m_saran.setText("Saran");
m_saran.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_saranActionPerformed(evt);
}
});
menuproses.add(m_saran);

m_braodcast.setText("Broadcast");
m_braodcast.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_braodcastActionPerformed(evt);
}
});
menuproses.add(m_braodcast);

jMenuBar1.add(menuproses);

menubantuan.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_help.png"))); //
NOI18N
menubantuan.setText("Bantuan");

m_panduan.setText("Panduan Sms");
m_panduan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_panduanActionPerformed(evt);
}
});
menubantuan.add(m_panduan);

jMenuBar1.add(menubantuan);

setJMenuBar(jMenuBar1);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(desktop, javax.swing.GroupLayout.DEFAULT_SIZE, 798,
Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(desktop, javax.swing.GroupLayout.DEFAULT_SIZE, 451,
Short.MAX_VALUE)
);

pack();
}// </editor-fold>

private void m_pelangganActionPerformed(java.awt.event.ActionEvent evt) {


pelanggan.setVisible(true);
}

JInternalFrame mobil;
private void m_mobilActionPerformed(java.awt.event.ActionEvent evt) {
mobil = new Master_Mobil();
desktop.add(mobil);
mobil.setVisible(true);
mobil.setLocation(this.getWidth() / 2 - mobil.getWidth() / 2, this.getHeight() /
4 - mobil.getHeight() / 4);

JInternalFrame service ;
private void m_paket_servisActionPerformed(java.awt.event.ActionEvent evt) {
service = new Master_Jenis_Paket();
desktop.add(service);
service.setVisible(true);
service.setLocation(this.getWidth() / 2 - service.getWidth() / 2, this.getHeight()
/ 4 - service.getHeight() / 4);
}

JInternalFrame admin ;
private void m_adminActionPerformed(java.awt.event.ActionEvent evt) {
admin = new Master_Administrator();
desktop.add(admin);
admin.setVisible(true);
admin.setLocation(this.getWidth() / 2 - admin.getWidth() / 2, this.getHeight() /
4 - admin.getHeight() / 4);
}

JInternalFrame booking ;
private void m_seviceActionPerformed(java.awt.event.ActionEvent evt) {
booking = new Transaksi_Service(nmuser);
desktop.add(booking);
booking.setVisible(true);
booking.setLocation(this.getWidth() / 2 - booking.getWidth() / 2,
this.getHeight() / 4 - booking.getHeight() / 4);
}

JInternalFrame inbox ;
private void m_smsActionPerformed(java.awt.event.ActionEvent evt) {
inbox = new Inbox_Outbox();
desktop.add(inbox);
inbox.setVisible(true);
inbox.setLocation(this.getWidth() / 2 - inbox.getWidth() / 2, this.getHeight() /
4 - inbox.getHeight() / 4);
}

public String iduser = null;


public String nmuser = null;
private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {
if (txt_username.getText().isEmpty() | txt_password.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Form Masih Kosong!", "Isi Username
dan Password!", JOptionPane.WARNING_MESSAGE);
return;
}
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM administrator WHERE username='" +
txt_username.getText() + "' AND password='" + txt_password.getText() + "' ";
res = stat.executeQuery(sql);
if (res.next()) {
iduser = res.getString("id_admin");
nmuser = res.getString("nm_admin");

}
if (iduser != null) {
txt_username.setText("");
txt_password.setText("");
JOptionPane.showMessageDialog(null, " Selamat datang "+ nmuser , null,
JOptionPane.INFORMATION_MESSAGE);
sesudah_login();
} else {
JOptionPane.showMessageDialog(null, "Username dan Password Salah!",
null, JOptionPane.WARNING_MESSAGE);
}
} catch (SQLException err) {
System.err.println(err);
}
}
JInternalFrame saran_pelanggan ;
private void m_saranActionPerformed(java.awt.event.ActionEvent evt) {
saran_pelanggan = new Saran();
desktop.add(saran_pelanggan );
saran_pelanggan.setVisible(true);
saran_pelanggan.setLocation(this.getWidth() / 2 - saran_pelanggan.getWidth()
/ 2, this.getHeight() / 3 - saran_pelanggan.getHeight() / 3);
}

JInternalFrame laporan_pelanggan ;
private void m_laporan_pelangganActionPerformed(java.awt.event.ActionEvent
evt) {
laporan_pelanggan = new Laporan_Pelanggan();
desktop.add(laporan_pelanggan);
laporan_pelanggan.setVisible(true);
laporan_pelanggan.setLocation(this.getWidth() / 2 -
laporan_pelanggan.getWidth() / 2, this.getHeight() / 3 -
laporan_pelanggan.getHeight() / 3);
}

JInternalFrame laporan_booking ;
private void m_laporan_pemesananActionPerformed(java.awt.event.ActionEvent
evt) {
laporan_booking = new Laporan_Service();
desktop.add(laporan_booking);
laporan_booking.setVisible(true);
laporan_booking.setLocation(this.getWidth() / 2 - laporan_booking.getWidth() /
2, this.getHeight() / 4 - laporan_booking.getHeight() / 4);
}

private void btnkeluarActionPerformed(java.awt.event.ActionEvent evt) {


System.exit(0);
}

private void btn_on_smsActionPerformed(java.awt.event.ActionEvent evt) {


sms. new open_port_sms_gateway().execute();
}

private void m_keluarActionPerformed(java.awt.event.ActionEvent evt) {


sebelum_login();
}
JInternalFrame transaksi_kwitansi ;
private void m_kwitansiActionPerformed(java.awt.event.ActionEvent evt) {
transaksi_kwitansi = new Transaksi_Kwitansi(nmuser);
desktop.add(transaksi_kwitansi);
transaksi_kwitansi.setVisible(true);
transaksi_kwitansi.setLocation(this.getWidth() / 2 -
transaksi_kwitansi.getWidth() / 2, this.getHeight() / 4 -
transaksi_kwitansi.getHeight() / 4);
}
JInternalFrame panduan ;
private void m_panduanActionPerformed(java.awt.event.ActionEvent evt) {
panduan = new Panduan_sms();
desktop.add(panduan);
panduan.setVisible(true);
panduan.setLocation(this.getWidth() / 2 - panduan.getWidth() / 2,
this.getHeight() / 4 - panduan.getHeight() / 4);
}

private void btn_off_smsActionPerformed(java.awt.event.ActionEvent evt) {


sms.closePortSMS();
btn_off_sms.setEnabled(false);
}

private void m_braodcastActionPerformed(java.awt.event.ActionEvent evt) {


broadcast.setVisible(true);
}

private void formWindowClosing(java.awt.event.WindowEvent evt) {


int konfirmasi = JOptionPane.showConfirmDialog(null, "Anda yakin keluar dari
aplikasi ?", "konfirmasi", JOptionPane.YES_NO_OPTION);
if (konfirmasi == 0) {
System.exit(0);
}
}

// Variables declaration - do not modify


public javax.swing.JButton btn_off_sms;
public javax.swing.JButton btn_on_sms;
private javax.swing.JButton btnkeluar;
private javax.swing.JButton btnlogin;
public javax.swing.JComboBox cb_port_sms;
private style.Desktop desktop;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JLabel lbl_jam;
private javax.swing.JLabel lbl_tanggal;
public javax.swing.JProgressBar loading;
private javax.swing.JMenuItem m_admin;
private javax.swing.JMenuItem m_braodcast;
private javax.swing.JMenuItem m_keluar;
private javax.swing.JMenuItem m_kwitansi;
private javax.swing.JMenuItem m_laporan_pelanggan;
private javax.swing.JMenuItem m_laporan_pemesanan;
private javax.swing.JMenuItem m_mobil;
private javax.swing.JMenuItem m_paket_servis;
private javax.swing.JMenuItem m_panduan;
private javax.swing.JMenuItem m_pelanggan;
private javax.swing.JMenuItem m_saran;
private javax.swing.JMenuItem m_sevice;
private javax.swing.JMenuItem m_sms;
private javax.swing.JMenu menubantuan;
private javax.swing.JMenu menufile;
private javax.swing.JMenu menulaporan;
private javax.swing.JMenu menumaster;
private javax.swing.JMenu menuproses;
private javax.swing.JMenu menutransaksi;
private style.PanelTransparan panel_jam;
private style.PanelTransparan panel_login;
private style.PanelTransparan panel_port;
public javax.swing.JLabel panel_status;
private javax.swing.JPasswordField txt_password;
private javax.swing.JTextField txt_username;
// End of variables declaration

// ========================= //
// ==== SMS GATEWAY==== //
// ========================= //

// FUNGSI SMS GATEWAY (TERIMA SMS DARI PELANGGAN) //


public void terima_sms_pelanggan(String no_hp, String pesan) {
System.out.println("dapat sms dari nomor: " + no_hp);
// CEK PENGIRIM SMS TERDAFTAR SENBAGAI PELANGGAN ATAU TIDAK
String id_pelanggan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
res = stat.executeQuery("SELECT * FROM pelanggan WHERE no_hp ='" +
no_hp + "' ");
if (res.next()) {
id_pelanggan = res.getString("id_pelanggan");
}

if (id_pelanggan == null) { // USER TIDAK TERDAFTAR //


System.out.println("Belum terdaftar sebagai pelanggan");

} else { // USER TERDAFTAR//


System.out.println("Sudah terdaftar sebagai pelanggan");
String[] split_sms = pesan.split(" ");
String layanan = split_sms[0];
String layanan_cek = split_sms[1];

// ===================== //
// ======= LAYANAN ===== //
// ===================== //
if (layanan.equalsIgnoreCase("layanan")) {
System.out.println("cek info via sms");
layanan_sms_format(no_hp, pesan, id_pelanggan);

// ================ //
// ===== CEK ===== //
// ================ //
} else if (layanan.equalsIgnoreCase("cek")) {
System.out.println("cek layanan via sms");

// =============================== //
// ===== CEK SERVICES KOSONG ===== //
// =============================== //
if(layanan_cek.equalsIgnoreCase("servis")){
System.out.println("cek servis kosong via sms");
layanan_sms_cek_kosong(no_hp, pesan, id_pelanggan);

// =========================== //
// ===== CEK HARGA PAKET ===== //
// =========================== //
}else if (layanan_cek.equalsIgnoreCase("harga")) {
System.out.println("cek paket harga via sms");
layanan_sms_cek_harga(no_hp, pesan, id_pelanggan);

// =========================== //
// ===== CEK STATUS SERVIS === //
// =========================== //
}else if (layanan_cek.equalsIgnoreCase("status")) {
System.out.println("cek status pesanan via sms");
layanan_sms_cek_status_servis(no_hp, pesan, id_pelanggan);
}

// ================================ //
// ===== PESAN SERVICES MOBIL ===== //
// ================================ //
} else if (layanan.equalsIgnoreCase("servis")) {
System.out.println("pesan servis mobil via sms");
layanan_sms_pesan_service(no_hp, pesan, id_pelanggan);

// ====================== //
// ==== BATAL PESAN ===== //
// ====================== //
} else if (layanan.equalsIgnoreCase("batal")) {
System.out.println("batal pesan servis mobil via sms");
layanan_sms_batal_pesan_service(no_hp, pesan, id_pelanggan);

// ================================= //
// ===== KONFIRMASI PEMBAYARAN ===== //
// ================================= //
} else if (layanan.equalsIgnoreCase("konfirmasi")) {
System.out.println("konfirmasi pemabayaran via sms");
layanan_sms_konfirmasi_pembayaran(no_hp, pesan, id_pelanggan);

// ===================== //
// ======= SARAN ======= //
// ===================== //
} else if (layanan.equalsIgnoreCase("saran")) {
System.out.println("saran pelanggan via sms");
layanan_sms_saran_pelanggan(no_hp, pesan, id_pelanggan);

// ==================== //
// ======= UBAH ======= //
// ==================== //
} else if (layanan.equalsIgnoreCase("ubah")) {
System.out.println("ubah pesan servis via sms");
layanan_sms_ubah_pesan_service(no_hp, pesan, id_pelanggan);
// ==================== //
// ======= UBAH ======= //
// ==================== //
} else if (layanan.equalsIgnoreCase("ubah")) {
System.out.println("ubah pesan servis via sms");
layanan_sms_ubah_pesan_service(no_hp, pesan, id_pelanggan);

}
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}
public void layanan_sms_format(String no_pelanggan,String isi_sms,String
id_pelanggan) {
String pesan1 = "FORMAT LAYANAN VIA SMS\n"
+ "1.LAYANAN FORMAT SMS: layanan<spasi>sms\n"
+ "Contoh : Layanan Sms";
String pesan2 = "2.CEK SERVIS KOSONG: cek<spasi>servis<spasi>jam-
servis<spasi>tanggal-servis\n"
+ "Contoh : cek servis 10 10";
String pesan3 = "3.CEK PAKET SERVIS HARGA: cek<spasi>harga\n"
+ "Contoh : Cek Harga";
String pesan4 = "4.PESAN SERVIS MOBIL: servis<spasi>pilih-paket1<->pilih-
paket2<spasi>jam-pesan<spasi>tgl-pesan<spasi>no-plat\n"
+ "Contoh : servis p1 10 10 B1234VIT";
String pesan5 = "5.UBAH PESAN SERVIS MOBIL: ubah<spasi>no-
servis<spasi>jam-pesan<spasi>tgl-pesan\n"
+ "Contoh : Ubah SRV0001 10 10";
String pesan6 = "6.BATAL PESAN SERVIS MOBIL: batal<spasi>no-servis\n"
+ "Contoh : Batal SRV0001";
String pesan7 = "7.KONFIRMASI PEMBAYARAN: konfirmasi<spasi>no-
servis<spasi>total<spasi>n/r-atm<spasi>a/n-atm<spasi>bank\n"
+ "Contoh : konfirmasi SRV0001 100000 123456 Angga BCA";
String pesan8 = "8.Status konfirmasi: status<spasi>pesan<spasi>no-
service\n"
+ "Contoh : cek pesan SRV00001";
String pesan9 = "9.KIRIM SARAN: saran<spasi>isi-saran\n"
+ "Contoh : saran kurang bagus layanan servisnya";

// HITUNG PANJANG PER SMS


System.err.println(pesan1.length());
System.err.println(pesan2.length());
System.err.println(pesan3.length());
System.err.println(pesan4.length());
System.err.println(pesan5.length());
System.err.println(pesan6.length());
System.err.println(pesan7.length());
System.err.println(pesan8.length());
System.err.println(pesan9.length());
// KIRIM SMS
kirim_sms(no_pelanggan, pesan1);
kirim_sms(no_pelanggan, pesan2);
kirim_sms(no_pelanggan, pesan3);
kirim_sms(no_pelanggan, pesan4);
kirim_sms(no_pelanggan, pesan5);
kirim_sms(no_pelanggan, pesan6);
kirim_sms(no_pelanggan, pesan7);
kirim_sms(no_pelanggan, pesan8);
kirim_sms(no_pelanggan, pesan9);
// SIMPAN INBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
}

public void layanan_sms_cek_harga(String no_pelanggan, String isi_sms, String


id_pelanggan){
String harga = "Daftar Harga Layanan Paket Kami\n";
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
res = stat.executeQuery("SELECT * FROM paket_service ");
while (res.next()) {
harga = harga + "PAKET: "+res.getString("id_paket")+"
"+res.getString("keterangan")+" Rp "+new
DecimalFormat("###,###.##").format(Integer.parseInt(res.getString("biaya")))+"\
n";
}
harga = harga.substring(0, harga.length()-1);
// KIRIM DAFTAR HARGA
System.out.println("Panjang sms cek harga: "+harga.length());
if(harga.length()>159){
kirim_sms_banyak(no_pelanggan, harga, false);
}else{
kirim_sms(no_pelanggan, harga);
}
// SIMPAN INBOX SMS
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void layanan_sms_cek_kosong(String no_pelanggan, String isi_sms, String


id_pelanggan) {
String[] split_sms = isi_sms.split(" ");
String jam_service = split_sms[2];
String tgl_service = split_sms[3];
String[] area_service = new String[]{"A1","A2","A3","A4","A5","A6"};

// FORMAT TANGGAL DAN JAM


String month_now = new SimpleDateFormat("MM").format(new Date());
String month_name = new SimpleDateFormat("MMMMM").format(new Date());
String year_now = new SimpleDateFormat("yyyy").format(new Date());
// TANGGAL
if (tgl_service.length() == 1 ) {
tgl_service = "0" + tgl_service;
}
// JAM
if (jam_service.length() == 1 ) {
jam_service = "0" + jam_service;
}

// ~~ VALIDASI TANGGAL
// validasi tanggal pesan tidak boleh lebih dari satu hari dari tanggal sekarang
dan kurang dari tanggal sekarang
int date_now = Integer.valueOf(new SimpleDateFormat("dd").format(new
Date()));
int date_max = date_now + 1;
if (Integer.parseInt(tgl_service) > date_max | Integer.parseInt(tgl_service) <
date_now) {
kirim_sms(no_pelanggan, "Maaf, tanggal servis tidak boleh lebih dari satu
hari dari tanggal sekarang dan kurang dari tanggal sekarang");
return;
}

// ~~ VALIDASI JAM
// validasi jam pesan services mobil tidak boleh kurang dari jam 8 pagi dan
tidak boleh lebih dari jam 5 sore
if (Integer.parseInt(jam_service) < 8 | Integer.parseInt(jam_service) > 17) {
// 17 sore maks
kirim_sms(no_pelanggan, "Maaf, jam servis mobil tidak boleh kurang dari
jam 8 pagi dan tidak boleh lebih dari jam 5 sore");
return;
}
// validasi jam pesanan service mobil sudah lewat dihari ini
int jamsekarang = Integer.parseInt(new SimpleDateFormat("HH").format(new
Date()));
if (date_now == Integer.valueOf(tgl_service)) {
if (Integer.parseInt(jam_service) <= jamsekarang) {
kirim_sms(no_pelanggan, "Maaf, jam pesanan servis mobil sudah lewat
dihari ini");
System.err.println("jam pesanan servis mobil sudah lewat dihari ini");
return;
}
}

// ~~ VALIDASI KESETERDIAAN JAM SERVICE


String no_service_tersimpan = null;
String area_service_terpesan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
for(int i=0; i < area_service.length; i++){
area_service_terpesan = area_service[i];
sql = "SELECT * FROM service "
+ "WHERE jam_service='"+jam_service+":00:00' "
+ "AND area_service='"+area_service[i]+"' "
+ "AND tgl_service='" +year_now+"-"+month_now+"-
"+tgl_service+"' ";
res = stat.executeQuery(sql);
if (res.next()) {
no_service_tersimpan = res.getString("no_service");
}
if(no_service_tersimpan==null){
System.err.println("area tersedia");
break;
}else{
System.err.println("no servis saved : "+no_service_tersimpan);
no_service_tersimpan = null;
}
res.close();
}
if (no_service_tersimpan == null) {
// KIRIM SMS
String pesan_balasan = "servis mobil di area "+area_service_terpesan+"
tersedia pada jam "+jam_service+":00 pada "+tgl_service+" "+month_name+"
"+year_now;
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX DAN OUTBOX
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);

} else {
// KIRIM SMS
String pesan_balasan = "Maaf, servis mobil tidak tersedia dikarenakan
area penuh pada jam "+jam_service+":00 pada "+tgl_service+" "+month_name+"
"+year_now;
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX DAN OUTBOX
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);

}
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}

public void layanan_sms_pesan_service(String no_pelanggan, String isi_sms,


String id_pelanggan) {
String[] pesan = isi_sms.split(" ",5);
String paket_service = pesan[1];
String jam_service = pesan[2];
String tgl_service = pesan[3];
String no_plat = pesan[4].toUpperCase().replaceAll(" ","");
System.err.println(no_plat.length());
String[] area_service = new String[]{"A1","A2","A3","A4","A5","A6"};

System.out.println("ID Pelanggan: "+id_pelanggan);


System.out.println("jam servis: "+jam_service);
System.out.println("tanggal servis: "+tgl_service);
System.out.println("no plat: "+no_plat);

// FORMAT TANGGAL DAN JAM


String month_now = new SimpleDateFormat("MM").format(new Date());
String month_name = new SimpleDateFormat("MMMMM").format(new Date());
String year_now = new SimpleDateFormat("yyyy").format(new Date());
// TANGGAL
if (tgl_service.length() == 1 ) {
tgl_service = "0" + tgl_service;
}
// JAM
if (jam_service.length() == 1 ) {
jam_service = "0" + jam_service;
}

// ~~ VALIDASI TANGGAL
// validasi tanggal pesan tidak boleh lebih dari satu hari dari tanggal sekarang
dan kurang dari tanggal sekarang
int date_now = Integer.valueOf(new SimpleDateFormat("dd").format(new
Date()));
int date_max = date_now + 1;
if (Integer.parseInt(tgl_service) > date_max | Integer.parseInt(tgl_service) <
date_now) {
kirim_sms(no_pelanggan, "Maaf, tanggal servis tidak boleh lebih dari satu
hari dari tanggal sekarang dan kurang dari tanggal sekarang");
return;
}

// ~~ VALIDASI JAM
// validasi jam pesan services mobil tidak boleh kurang dari jam 8 pagi dan
tidak boleh lebih dari jam 5 sore
if (Integer.parseInt(jam_service) < 1 | Integer.parseInt(jam_service) > 17) {
// 17 sore maks
kirim_sms(no_pelanggan, "Maaf, jam servis mobil tidak boleh kurang dari
jam 8 pagi dan tidak boleh lebih dari jam 5 sore");
return;
}
// validasi jam pesanan service mobil sudah lewat dihari ini
int jamsekarang = Integer.parseInt(new SimpleDateFormat("HH").format(new
Date()));
if (date_now == Integer.valueOf(tgl_service)) {
if (Integer.parseInt(jam_service) <= jamsekarang) {
kirim_sms(no_pelanggan, "Maaf, jam pesanan servis mobil sudah lewat
dihari ini");
System.err.println("jam pesanan servis mobil sudah lewat dihari ini");
return;
}
}

if(paket_service.length()>5){
kirim_sms(no_pelanggan, "Maaf pesanan tidak boleh lebih dari 2 paket");
System.err.println("Maaf pesanan tidak boleh lebih dari 2 paket");
return;
}

if(paket_service.split("-")[0].equalsIgnoreCase(paket_service.split("-")[1])){
kirim_sms(no_pelanggan, "Maaf kode paket tidak boleh sama");
System.err.println("Maaf kode paket tidak boleh sama");
return;
}

// ~~ VALIDASI KESETERDIAAN JAM SERVICE


String no_service_tersimpan = null;
String area_service_terpesan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
for(int i=0; i < area_service.length; i++){
area_service_terpesan = area_service[i];
sql = "SELECT * FROM service "
+ "WHERE jam_service='"+jam_service+":00:00' "
+ "AND area_service='"+area_service[i]+"' "
+ "AND tgl_service='" +year_now+"-"+month_now+"-
"+tgl_service+"'"
+ "AND status!='Lunas' ";
res = stat.executeQuery(sql);
if (res.next()) {
no_service_tersimpan = res.getString("no_service");
}
if(no_service_tersimpan==null){
System.err.println("area tersedia");
break;
}else{
System.err.println("no service saved : "+no_service_tersimpan);
no_service_tersimpan = null;
}
res.close();
}
if (no_service_tersimpan != null) {
// KIRIM SMS
String pesan_balasan = "Maaf, servis mobil tidak tersedia dikarenakan
area penuh pada jam "+jam_service+":00 pada "+tgl_service+" "+month_name+"
"+year_now;
kirim_sms(no_pelanggan, pesan_balasan);
return;
}
// CARI MOBIL TERDAFTAR
String plat_mobil_tersimpan = null;
ResultSet cari_mobil = stat.executeQuery("SELECT * FROM mobil "
+ " WHERE id_pelanggan='"+id_pelanggan+"' "
+ " AND plat_no='"+no_plat+"' ");
while (cari_mobil.next()) {
plat_mobil_tersimpan = cari_mobil.getString("plat_no");
}

if(plat_mobil_tersimpan==null){
// KIRIM SMS
String pesan_balasan = "Maaf, no plat mobil anda tidak terdaftar silahkan
regitrasi mobil baru di bengkel kami";
kirim_sms(no_pelanggan, pesan_balasan);
return;
}
cari_mobil.close();

// CARI NO PLAT MOBIL YANG SUDAH SERVIS DIJAM DAN TANGGAL YG


SAMA
ResultSet cari_plat_service = stat.executeQuery("SELECT * FROM service "
+ "WHERE jam_service='"+jam_service +
":00:00' "
+ "AND tgl_service='"+year_now + "-" +
month_now + "-" + tgl_service+"' "
+ "AND no_plat='"+no_plat+"'"
+ "AND status!='Lunas' ");
if (cari_plat_service.next()) {
String pesan_balasan = "Maaf, no plat mobil anda sudah servis pada jam
"+jam_service + ":00:00 tanggal "+tgl_service+" "+month_name+" "+year_now+"
di area servis "+cari_plat_service.getString("area_service");
kirim_sms(no_pelanggan, pesan_balasan);
return;
}
cari_plat_service.close();

// cari autonumber no services


String no_service = null;
ResultSet cari_service = stat.executeQuery("SELECT RIGHT(no_service,4)
FROM service ORDER BY no_service DESC LIMIT 1 ");
if (cari_service.next() == false) {
no_service = "SRV0001";
} else {
cari_service.last();
int no = cari_service.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 4 - pjg_cno; i++) {
cno = "0" + cno;
}
no_service = "SRV"+cno;
}
cari_service.close();
System.out.println("No Services: "+no_service);

// SIMPAN SERVICES
sql = "INSERT INTO service VALUES('" + no_service + "',"
+ "'" + new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss").format(new Date()) + "',"
+ "'" + id_pelanggan + "',"
+ "'" + no_plat + "',"
+ "'" + area_service_terpesan +"',"
+ "'" + year_now + "-" + month_now + "-" +
tgl_service + "',"
+ "'" + jam_service + ":00:00" + "',"
+ "'" + jam_service + ":59:00" + "',"
+ "'0',"
+ "'0',"
+ "'Belum Konfirmasi',"
+ "'')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses simpan servis");
// SIMPAN SERVICES DETAIL

//////////////////////////////////////////////
// cek pesanan banyak paket atau satu paket //
//////////////////////////////////////////////

String paket_service_terpesan = "";


String total_biaya_terpesan = "";
if(paket_service.length() > 3){
// pesanan banyak paket
String[] paket_service_array = paket_service.split("-");
int total_biaya = 0;
for(int i=0;i < paket_service_array.length; i++){
String id_paket = paket_service_array[i];
System.out.println("ID paket: "+id_paket);
// cari harga paket services
int harga_paket = 0;
ResultSet cari_paket = stat.executeQuery("SELECT * FROM
paket_service WHERE id_paket='"+id_paket+"' ");
if (cari_paket.next()) {
harga_paket = cari_paket.getInt("biaya");
paket_service_terpesan = paket_service_terpesan + id_paket
+"("+cari_paket.getString("jenis_paket")+") ";
}else{
// paket tidak ditemukan hapus service
int hapus_service = stat.executeUpdate("DELETE FROM service
WHERE no_service='"+no_service+"' ");
if(hapus_service==1){
System.err.println("paket servis tidak ditemukan hapus paket
servis");
int hapus_service_detil = stat.executeUpdate("DELETE FROM
service_detil WHERE no_service='"+no_service+"' ");
if(hapus_service_detil==1){
System.err.println("paket servis tidak ditemukan hapus
paket servis detil");
}
String pesan_balasan = "Maaf, paket servis anda tidak
terdaftar mohon cek kembali";
kirim_sms(no_pelanggan, pesan_balasan);
}
return;
}
cari_paket.close();
System.out.println("Biaya Paket: " + harga_paket);
// simpan detil
String sql_detil = "INSERT INTO service_detil
VALUES('"+no_service+"','"+id_paket+"')";
int sukses_detil = stat.executeUpdate(sql_detil);
if(sukses_detil == 1){
System.out.println("sukses simpan servis detil");
total_biaya = total_biaya + harga_paket;
}
}
total_biaya_terpesan = String.valueOf(total_biaya);
// update total harga service
String sql_update = "UPDATE service SET
total_biaya='"+total_biaya+"' WHERE no_service='"+no_service+"' ";
int sukses_update = stat.executeUpdate(sql_update);
if(sukses_update == 0){
System.out.println("sukses update total biaya servis no servis
"+no_service);
}

}else{
////////////////////////
// pesanan satu paket //
////////////////////////

// cari harga paket services


String harga_paket = null;
ResultSet cari_paket = stat.executeQuery("SELECT * FROM
paket_service WHERE id_paket='"+paket_service+"' ");
if (cari_paket.next()) {
harga_paket = cari_paket.getString("biaya");
paket_service_terpesan = paket_service
+"("+cari_paket.getString("jenis_paket")+") ";
}else{
// paket tidak ditemukan hapus service
int hapus_service = stat.executeUpdate("DELETE FROM service
WHERE no_service='"+no_service+"' ");
if(hapus_service==1){
System.err.println("paket servis tidak ditemukan hapus paket
servis");
int hapus_service_detil = stat.executeUpdate("DELETE FROM
service_detil WHERE no_service='"+no_service+"' ");
if(hapus_service_detil==1){
System.err.println("paket servis tidak ditemukan hapus paket
servis detil");
}
String pesan_balasan = "Maaf, paket servis anda tidak terdaftar
mohon cek kembali";
kirim_sms(no_pelanggan, pesan_balasan);
}
return;
}
cari_paket.close();
System.out.println("Harga Paket: " + harga_paket);
// simpan detil
String sql_detil = "INSERT INTO service_detil
VALUES('"+no_service+"','"+paket_service+"')";
int sukses_detil = stat.executeUpdate(sql_detil);
if(sukses_detil == 1){
System.out.println("sukses simpan servis detil");
}
// update total harga service
total_biaya_terpesan = String.valueOf(harga_paket);
String sql_update = "UPDATE service SET
total_biaya='"+harga_paket+"' WHERE no_service='"+no_service+"' ";
int sukses_update = stat.executeUpdate(sql_update);
if(sukses_update == 0){
System.out.println("sukses update total biaya servis no servis
"+no_service);
}
}
// CARI GRATISAN
int free_service = 0;
ResultSet cari_gratisan = stat.executeQuery("SELECT * FROM mobil
WHERE plat_no='"+no_plat+"' ");
if (cari_gratisan.next()) {
free_service = cari_gratisan.getInt("bonus_service");
}
cari_gratisan.close();

String total_servis = null;


if(free_service>0){
total_servis = "Gratis servis silahkan dtg kebengkel";
}else{
total_servis = "Rp "+new
DecimalFormat("###,###.##").format(Integer.parseInt(total_biaya_terpesan))+"
Segera Konfirmasi";
}
// KIRIM SMS
String pesan_booking = "servis dgn no servis "+no_service+" diterima pd
"+tgl_service+" "+month_name+" "+year_now+" jam "+jam_service+":00 diarea
"+ area_service_terpesan +" dgn pkt "+paket_service_terpesan+"dgn total biaya
"+total_servis;

kirim_sms(no_pelanggan, pesan_booking);
// SIMPAN INBOX OUTBOX
simpan_outbox(no_pelanggan, pesan_booking, id_pelanggan);
simpan_inbox(no_pelanggan, isi_sms,id_pelanggan);
}
stat.close();
con.close();
res.close();
} catch (SQLException error) {
System.err.println("simpan servis error detail: " + error);
}
}

public void layanan_sms_ubah_pesan_service(String no_pelanggan, String


isi_sms, String id_pelanggan) {
String[] pesan = isi_sms.split(" ");
String no_service = pesan[1].toUpperCase();;
String jam_service = pesan[2];
String tgl_service = pesan[3];

String[] area_service = new String[]{"A1","A2","A3","A4","A5","A6"};

System.out.println("No Servis: "+no_service);


System.out.println("jam servis: "+jam_service);
System.out.println("tanggal servis: "+tgl_service);
// FORMAT TANGGAL DAN JAM
String month_now = new SimpleDateFormat("MM").format(new Date());
String month_name = new SimpleDateFormat("MMMMM").format(new Date());
String year_now = new SimpleDateFormat("yyyy").format(new Date());
// TANGGAL
if (tgl_service.length() == 1 ) {
tgl_service = "0" + tgl_service;
}
// JAM
if (jam_service.length() == 1 ) {
jam_service = "0" + jam_service;
}

// ~~ VALIDASI TANGGAL
// validasi tanggal pesan tidak boleh lebih dari satu hari dari tanggal sekarang
dan kurang dari tanggal sekarang
int date_now = Integer.valueOf(new SimpleDateFormat("dd").format(new
Date()));
int date_max = date_now + 1;
if (Integer.parseInt(tgl_service) > date_max | Integer.parseInt(tgl_service) <
date_now) {
kirim_sms(no_pelanggan, "Maaf, tanggal servis tidak boleh lebih dari satu
hari dari tanggal sekarang dan kurang dari tanggal sekarang");
return;
}

// ~~ VALIDASI JAM
//validasi jam pesan services mobil tidak boleh kurang dari jam 8 pagi dan
tidak boleh lebih dari jam 5 sore
if (Integer.parseInt(jam_service) < 1 | Integer.parseInt(jam_service) > 17) {
// 17 sore maks
kirim_sms(no_pelanggan, "Maaf, jam servis mobil tidak boleh kurang dari
jam 8 pagi dan tidak boleh lebih dari jam 5 sore");
return;
}
// validasi jam pesanan service mobil sudah lewat dihari ini
int jamsekarang = Integer.parseInt(new SimpleDateFormat("HH").format(new
Date()));
if (date_now == Integer.valueOf(tgl_service)) {
if (Integer.parseInt(jam_service) <= jamsekarang) {
kirim_sms(no_pelanggan, "Maaf, jam pesanan servis mobil sudah lewat
dihari ini");
System.err.println("jam pesanan servis mobil sudah lewat dihari ini");
return;
}
}

// ~~ VALIDASI KESETERDIAAN JAM SERVICE


String no_service_tersimpan = null;
String area_service_terpesan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
for(int i=0; i < area_service.length; i++){
area_service_terpesan = area_service[i];
sql = "SELECT * FROM service "
+ "WHERE jam_service='"+jam_service+":00:00' "
+ "AND area_service='"+area_service[i]+"' "
+ "AND tgl_service='"+year_now+"-"+month_now+"-
"+tgl_service+"' "
+ "AND no_service!='"+no_service+"' "
+ "AND status!='Lunas' ";
res = stat.executeQuery(sql);
if (res.next()) {
no_service_tersimpan = res.getString("no_service");
}
if(no_service_tersimpan==null){
System.err.println("area tersedia");
break;
}else{
System.err.println("no servis saved : "+no_service_tersimpan);
no_service_tersimpan = null;
}
res.close();
}
if (no_service_tersimpan != null) {
// KIRIM SMS
String pesan_balasan = "Maaf, servis mobil tidak tersedia dikarenakan
area penuh pada jam "+jam_service+":00 pada "+tgl_service+" "+month_name+"
"+year_now;
kirim_sms(no_pelanggan, pesan_balasan);
return;
}

// UPDATE SERVICES
sql = "UPDATE service SET area_service='" + area_service_terpesan +"',"
+ "tgl_service='" + year_now + "-" + month_now +
"-" + tgl_service + "',"
+ "jam_service='" + jam_service + ":00:00" + "',"
+ "jam_akhir='" + jam_service + ":59:00" + "' "
+ "WHERE no_service='" + no_service + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses ubah servis");

// KIRIM SMS
String pesan_booking = "servis dgn no servis "+no_service+" berhasil
diubah tanggal "+tgl_service+" "+month_name+" "+year_now+" jam
"+jam_service+":00 diarea "+ area_service_terpesan ;
kirim_sms(no_pelanggan, pesan_booking);
// SIMPAN INBOX OUTBOX
simpan_outbox(no_pelanggan, pesan_booking, id_pelanggan);
simpan_inbox(no_pelanggan, isi_sms,id_pelanggan);
}
stat.close();
con.close();
res.close();
} catch (SQLException error) {
System.err.println("ubah servis error detail: " + error);
}
}

public void layanan_sms_batal_pesan_service(String no_pelanggan, String


isi_sms, String id_pelanggan) {
String[] split_sms = isi_sms.split(" ");
String no_service = split_sms[1].toUpperCase();

try {
// CARI PESANAN SERVICE
String no_service_tersimpan = null;

con = objKoneksi.open_a_Connection();
stat = con.createStatement();
res = stat.executeQuery("SELECT * FROM service WHERE
no_service='"+no_service+"' AND status='Belum Konfirmasi' ");
if (res.next()) {
no_service_tersimpan = res.getString("no_service");
}
res.close();

if(no_service_tersimpan!=null){
// HAPUS PESANAN SERVICES
sql = "DELETE FROM service WHERE no_service='"+no_service+"'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses hapus pesanan servis");
int sukses_detil = stat.executeUpdate("DELETE FROM service_detil
WHERE no_service='"+no_service+"' ");
if(sukses_detil==1){
System.out.println("sukses hapus pesanan servis detil");
}
}
// KIRIM SMS
String pesan_balasan = "pesanan servis anda dengan nomor servis
"+no_service+" berhasil dibatalkan";
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX OUTBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
}else{
// KIRIM SMS
String pesan_balasan = "Mohon Maaf, anda tidak bisa membatalkan
pesanan dikarenakan status anda sudah konfirmasi, anda hanya bisa mengubah
pesan servis";
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX OUTBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
}
con.close();
stat.close();
} catch (SQLException error) {
System.err.println(error);
}
}

public void layanan_sms_konfirmasi_pembayaran(String no_pelanggan, String


isi_sms, String id_pelanggan) {
String[] split_sms = isi_sms.split(" ",4);
String no_service = split_sms[1].toUpperCase();
String total_pembayaran = split_sms[2].replaceAll("/.","");
String info_rek = split_sms[3].replaceAll("@", "");

// CARI PESANAN SERVICE


String no_service_tersimpan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
res = stat.executeQuery("SELECT * FROM service WHERE
no_service='"+no_service+"' AND status='Belum Konfirmasi' ");
if (res.next()) {
no_service_tersimpan = res.getString("no_service");
}
res.close();

if(no_service_tersimpan!=null){
// HAPUS PESANAN SERVICES
sql = "UPDATE service SET keterangan_pembayaran='"+
"Rp."+total_pembayaran+ " " +info_rek+"' WHERE no_service='"+no_service+"'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses update kondirmasi pesanan servis");
}
// KIRIM SMS
String pesan_balasan = "konfirmasi pembayaran no servis
"+no_service+" Rp "+new
DecimalFormat("###,###.##").format(Integer.parseInt(total_pembayaran))+" via
transfer detail "+info_rek+" silahkan cek status servis beberapa saat lagi ";
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX OUTBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
}else{
// KIRIM SMS
String pesan_balasan = "Maaf, Anda tidak bisa membatalkan pesanan,
dikarenakan statusnya sudah konfirmasi, Anda hanya bisa mengubah pesanan";
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX OUTBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
}
con.close();
stat.close();
} catch (SQLException error) {
System.err.println(error);
}
}

public void layanan_sms_saran_pelanggan(String no_pelanggan, String isi_sms,


String id_pelanggan) {
isi_sms = isi_sms.replace("saran","");
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
// CARI AUTONUMBER SARAN
int autonumber;
res = stat.executeQuery("SELECT id_saran FROM saran ORDER BY id_saran
DESC LIMIT 1");
if (res.next() == false) {
autonumber = 1;
} else {
res.last();
autonumber = res.getInt(1) + 1;
}
res.close();

sql = "INSERT INTO saran VALUES('" + String.valueOf(autonumber) + "','"


+ id_pelanggan + "','" + isi_sms + "','" + new SimpleDateFormat("yyyyy-MM-dd
hh:mm:ss").format(new Date()) + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses simpan saran pelanggan");
kirim_sms(no_pelanggan, "terima kasih, saran anda telah diterima kami
dan segera kami akan tinjau kembali :)");
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}

public void layanan_sms_cek_status_servis(String no_pelanggan, String isi_sms,


String id_pelanggan){
String[] split_sms = isi_sms.split(" ",3);
String no_service = split_sms[2].toUpperCase();

System.out.println(id_pelanggan);
System.out.println(no_service);

String no_servis_tersimpan = null;


String pesan_balasan = null;
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();
res = stat.executeQuery("SELECT * FROM service WHERE
no_service='"+no_service+"' AND id_pelanggan='"+id_pelanggan+"' ");
if (res.next()) {
no_servis_tersimpan = res.getString("no_service");
//CARI GRATISAN
int free_service = 0;
Statement stat_gratisan = con.createStatement();
ResultSet cari_gratisan = stat_gratisan.executeQuery("SELECT * FROM
mobil WHERE plat_no='"+res.getString("no_plat")+"' ");
if (cari_gratisan.next()) {
free_service = cari_gratisan.getInt("bonus_service");
}
cari_gratisan.close();
stat_gratisan.close();

String sisa_servis = null;


if(free_service>0){
sisa_servis = "Gratis servis";
}else{
sisa_servis = "Rp."+new
DecimalFormat("###,###.##").format(Integer.parseInt(res.getString("total_biaya"
)) - Integer.parseInt(res.getString("uang_muka")));
}
//KIRIM SMS
pesan_balasan = "Status Anda dengan no servis "+no_service+" dengan
status "+res.getString("status")+" dan sisa pembayaran "+sisa_servis+" silakan dtg
kebengkel";

System.out.println(no_servis_tersimpan);

if(no_servis_tersimpan!=null){
kirim_sms(no_pelanggan, pesan_balasan);
// SIMPAN INBOX OUTBOX
simpan_inbox(no_pelanggan, isi_sms, id_pelanggan);
simpan_outbox(no_pelanggan, pesan_balasan, id_pelanggan);
}else{
// KIRIM SMS
pesan_balasan = "Maaf, no servis anda tidak ada";
kirim_sms(no_pelanggan, pesan_balasan);
}
res.close();
con.close();
stat.close();

} catch (SQLException error) {


System.err.println(error);
}
}

// SIMPAN INBOX DAN OUTBOX


public void simpan_inbox(String nomor, String pesan, String id_pelanggan) {
try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();

// CARI AUTONUMER INBOX


int autonumber;
ResultSet caridata = stat.executeQuery("SELECT id_inbox FROM sms_inbox
ORDER BY id_inbox DESC LIMIT 1 ");
if (caridata.next() == false) {
autonumber = 1;
} else {
caridata.last();
autonumber = caridata.getInt(1) + 1;
}
caridata.close();

// SIMPAN INBOX
sql = "INSERT INTO sms_inbox
VALUES('"+String.valueOf(autonumber)+"','"+id_pelanggan+"','"+nomor+"','"+pesa
n+"','"+new SimpleDateFormat("yyyyy-MM-dd hh:mm:ss").format(new Date())+"')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses simpan inbox");
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}

public void simpan_outbox(String nomor, String pesan, String id_pelanggan){


try {
con = objKoneksi.open_a_Connection();
stat = con.createStatement();

// CARI AUTONUMER OUTBOX


int autonumber;
ResultSet caridata = stat.executeQuery("SELECT id_outbox FROM
sms_outbox ORDER BY id_outbox DESC LIMIT 1 ");
if (caridata.next() == false) {
autonumber = 1;
} else {
caridata.last();
autonumber = caridata.getInt(1) + 1;
}
// SIMPAN OUTBOX
sql = "INSERT INTO sms_outbox
VALUES('"+String.valueOf(autonumber)+"','"+id_pelanggan+"','"+nomor+"','"+pesa
n+"','"+new SimpleDateFormat("yyyyy-MM-dd hh:mm:ss").format(new Date())+"')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
System.out.println("sukses simpan outbox");
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}

// PROSES KIRIM SMS


public void kirim_sms(String nomor, String pesan){
sms.kirim_sms(nomor, pesan);
}
// PROSES KIRIM SMS LEBIH DARI 160 KARAKTER
public void kirim_sms_banyak(String nomor, String pesan, boolean
status_simpan){
String[] split_pesan = pesan.split("\n");
int msg_length = 0;
int pesan_ke = 1;
String msg = "";
for (int i = 0; i < split_pesan.length; i++) {
msg = msg + split_pesan[i]+"\n";
int pesan_length = msg.length();
msg_length = msg_length + pesan_length;
if(msg_length < 160){
System.err.println("pesan "+pesan_ke+" : "+msg_length);
}else{
System.err.println("msg "+pesan_ke);
System.err.println("=============ISI PESAN
("+pesan_ke+")==============");
String msg_ready_send = msg;
System.err.println(msg_ready_send);
sms.kirim_sms(nomor,msg_ready_send);
if(status_simpan){
//String msg_outbox = msg_ready_send.replaceAll("\n", " ");
//simpan_outbox_sms(nomor,msg_outbox);
}
System.err.println("==============END PESAN
("+pesan_ke+")=============");
msg_length = 0;
msg = "";
pesan_ke++;
}
}
}
}
11. Panduan_sms.java

package booking_services;

public class Panduan_sms extends javax.swing.JInternalFrame {

public Panduan_sms() {
initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_help.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Bantuan");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 72,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32))
);
jPanel12Layout.setVerticalGroup(
jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 14, Short.MAX_VALUE))
);

jPanel1.setBackground(new java.awt.Color(102, 102, 102));

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setText("REQUEST SERVIS MOBIL");

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel2.setForeground(new java.awt.Color(255, 255, 255));
jLabel2.setText("1. Layanan sms : Layanan<spasi>sms");

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel3.setForeground(new java.awt.Color(255, 255, 255));
jLabel3.setText("2. Cek servis jam kosong :
Cek<spasi>servis<spasi>jam_servis<spasi>tanggal_servis");

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel4.setForeground(new java.awt.Color(255, 255, 255));
jLabel4.setText("3. Cek harga paket servis : Cek<spasi>harga");
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 255, 255));
jLabel5.setText("4. Pesan servis : Servis<spasi>pilih_paket1<-
>pilih_paket2<spasi>jam_servis<spasi>tgl_servis<spasi>no_plat");

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel7.setForeground(new java.awt.Color(255, 255, 255));
jLabel7.setText("5. Batal pesan servis : Batal<spasi>no_servis");

jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel8.setForeground(new java.awt.Color(255, 255, 255));
jLabel8.setText("6. Ubah pesan servis :
Ubah<spasi>no_servis<spasi>jam_servis<spasi>tgl_servis");

jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel9.setForeground(new java.awt.Color(255, 255, 255));
jLabel9.setText("9. Saran : Saran<spasi>isi_saran");

jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel10.setForeground(new java.awt.Color(255, 255, 255));
jLabel10.setText("Note");

jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel11.setForeground(new java.awt.Color(255, 255, 255));
jLabel11.setText("7. Konfirmasi pembayaran :
Konfirmasi<spasi>no_servis<spasi>total<spasi>n/r_atm<spasi>a/n_atm<spasi>ba
nk");

jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel12.setForeground(new java.awt.Color(255, 255, 255));
jLabel12.setText("* Tanggal servis tidak boleh lebih dari 1 hari dari hari
sekarang");

jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel13.setForeground(new java.awt.Color(255, 255, 255));
jLabel13.setText("* Jika status sudah konfirmasi tidak bisa dibatalkan");

jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel14.setForeground(new java.awt.Color(255, 255, 255));
jLabel14.setText("8. Cek Status Pembayaran :
Cek<spasi>status<spasi>no_servis");

jLabel16.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N


jLabel16.setForeground(new java.awt.Color(255, 255, 255));
jLabel16.setText("* Pesan Paket Tidak Boleh Lebih Dari 2");

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(297, 297, 297)
.addComponent(jLabel1)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(28, 28, 28)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel5,
javax.swing.GroupLayout.DEFAULT_SIZE, 783, Short.MAX_VALUE)
.addComponent(jLabel8,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 696,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11)
.addComponent(jLabel14)
.addComponent(jLabel16,
javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE)))))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE,
31, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE,
31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16,
Short.MAX_VALUE)
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE,
32, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE,
32, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE,
32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE,
32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

pack();
}// </editor-fold>

// Variables declaration - do not modify


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 jLabel16;
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 jPanel11;
private javax.swing.JPanel jPanel12;
// End of variables declaration
}
12. Popup_Booking.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Popup_Booking extends javax.swing.JDialog {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

String data[] = new String[13];

Transaksi_Kwitansi dm = new Transaksi_Kwitansi(null);


public Popup_Booking(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
tabelpelanggan.setModel(tblModel);
Tabel(tabelpelanggan, new int[]{100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100});
dm.setDataPopup(new String[]{"", ""});
tampil_data();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jScrollPane1 = new javax.swing.JScrollPane();
tabelpelanggan = new javax.swing.JTable();
txtcaribooking = new javax.swing.JTextField();
cmbpelanggan = new javax.swing.JComboBox();
btncaripelanggan = new javax.swing.JButton();
btnpilihpelanggan = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.B
evelBorder.RAISED));

tabelpelanggan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7", "Title
8", "Title 9", "Title 10", "Title 11", "Title 12"
}
));
jScrollPane1.setViewportView(tabelpelanggan);

cmbpelanggan.setModel(new javax.swing.DefaultComboBoxModel(new String[]


{ "No Service", "Id Pelanggan", "No Plat", "Area Service" }));

btncaripelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btncaripelanggan.setText("Cari");
btncaripelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncaripelangganActionPerformed(evt);
}
});

btnpilihpelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btnpilihpelanggan.setText("Pilih");
btnpilihpelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpilihpelangganActionPerformed(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.LE
ADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(btnpilihpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 94,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtcaribooking,
javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txtcaribooking,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btncaripelanggan))
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnpilihpelanggan)
.addContainerGap(15, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

setSize(new java.awt.Dimension(597, 286));


setLocationRelativeTo(null);
}// </editor-fold>

private void btncaripelangganActionPerformed(java.awt.event.ActionEvent evt) {


hapus_tabel();
String strKey = "";
if (txtcaribooking.equals(strKey)) {
tampil_data();
} else if (cmbpelanggan.getSelectedItem().toString().equals("No Service")) {
strKey = "s.no_service";
} else if (cmbpelanggan.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "s.id_pelanggan";
} else if (cmbpelanggan.getSelectedItem().toString().equals("No Plat")) {
strKey = "s.no_plat";
} else {
strKey = "s.area_service";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM service s, service_detil d, paket_service p "
+ "WHERE status = 'Konfirmasi' "
+ "AND s.no_service=d.no_service AND d.id_paket=p.id_paket "
+ "AND " + strKey + " LIKE '%" + txtcaribooking.getText() + "%'
ORDER BY s.no_service DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no_service");
data[1] = res.getString("tgl_transaksi");
data[2] = res.getString("id_pelanggan");
data[3] = res.getString("no_plat");
data[4] = res.getString("id_paket");
data[5] = res.getString("biaya");
data[6] = res.getString("area_service");
data[7] = res.getString("tgl_service");
data[8] = res.getString("jam_service");
data[9] = res.getString("uang_muka");
data[10] = res.getString("total_biaya");
data[11] = res.getString("status");
data[12] = res.getString("keterangan_pembayaran");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void btnpilihpelangganActionPerformed(java.awt.event.ActionEvent evt) {


pilih_data();
}

public static void main(String args[]) {


/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Popup_Booking.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Popup_Booking.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Popup_Booking.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Popup_Booking.class.getName()).log(java.util.log
ging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the dialog */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Popup_Booking dialog = new Popup_Booking(new javax.swing.JFrame(),
true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btncaripelanggan;
private javax.swing.JButton btnpilihpelanggan;
private javax.swing.JComboBox cmbpelanggan;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tabelpelanggan;
private javax.swing.JTextField txtcaribooking;
// End of variables declaration

private void pilih_data() {


int row = tabelpelanggan.getSelectedRow();
if (row >= 0) {
dm.setDataPopup(new String[]{
tblModel.getValueAt(row, 0).toString(),
tblModel.getValueAt(row, 1).toString(),
tblModel.getValueAt(row, 2).toString(),
tblModel.getValueAt(row, 3).toString(),
tblModel.getValueAt(row, 4).toString(),
tblModel.getValueAt(row, 5).toString(),
tblModel.getValueAt(row, 6).toString(),
tblModel.getValueAt(row, 7).toString(),
tblModel.getValueAt(row, 8).toString(),
tblModel.getValueAt(row, 9).toString(),
tblModel.getValueAt(row, 10).toString(),
tblModel.getValueAt(row, 11).toString(),
tblModel.getValueAt(row, 12).toString()});
dispose();
} else {
JOptionPane.showMessageDialog(null, "Pilih salah satu data dalam tabel",
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

public String[] getData() {


return dm.getDataPopup();
}

private void tampil_data() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM service s, service_detil d, paket_service p "
+ "WHERE status = 'Konfirmasi' "
+ "AND s.no_service=d.no_service AND d.id_paket=p.id_paket "
+ "ORDER BY s.no_service DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no_service");
data[1] = res.getString("tgl_transaksi");
data[2] = res.getString("id_pelanggan");
data[3] = res.getString("no_plat");
data[4] = res.getString("id_paket");
data[5] = res.getString("biaya");
data[6] = res.getString("area_service");
data[7] = res.getString("tgl_service");
data[8] = res.getString("jam_service");
data[9] = res.getString("uang_muka");
data[10] = res.getString("total_biaya");
data[11] = res.getString("status");
data[12] = res.getString("keterangan_pembayaran");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

// ^^ TABEL
private void hapus_tabel() {
int rowCount = tabelpelanggan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"No Service", "Tanggal Transaksi", "Id Pelanggan", "No
Plat", "Id Paket", "Harga",
"Area Pesan", "Tanggal Service", "Jam Pesan", "Uang Muka", "Total
Biaya", "Status", "Keterangan"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false, false, false, false, false, false, false, false,
false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}
13. Popup_Mobil.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Popup_Mobil extends javax.swing.JDialog {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

String data[] = new String[4];

Transaksi_Service dm = new Transaksi_Service(null);

public Popup_Mobil(java.awt.Frame parent, boolean modal) {


super(parent, modal);
initComponents();
tabelpelanggan.setModel(tblModel);
Tabel(tabelpelanggan, new int[]{120, 120, 120, 120});
dm.setDataPopup(new String[]{"", ""});
tampil_data();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jScrollPane1 = new javax.swing.JScrollPane();
tabelpelanggan = new javax.swing.JTable();
txtcaripelanggan = new javax.swing.JTextField();
cmbpelanggan = new javax.swing.JComboBox();
btncaripelanggan = new javax.swing.JButton();
btnpilihpelanggan = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.B
evelBorder.RAISED));

tabelpelanggan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tabelpelanggan);

cmbpelanggan.setModel(new javax.swing.DefaultComboBoxModel(new String[]


{ "Id Pelanggan", "Nama", "No Telepon" }));

btncaripelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btncaripelanggan.setText("Cari");
btncaripelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncaripelangganActionPerformed(evt);
}
});

btnpilihpelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btnpilihpelanggan.setText("Pilih");
btnpilihpelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpilihpelangganActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btnpilihpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 94,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(70, 70, 70)
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(12, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btncaripelanggan))
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnpilihpelanggan)
.addContainerGap(15, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

setSize(new java.awt.Dimension(514, 286));


setLocationRelativeTo(null);
}// </editor-fold>

private void btncaripelangganActionPerformed(java.awt.event.ActionEvent evt) {


hapus_tabel();
String strKey = "";
if(txtcaripelanggan.equals(strKey)){
tampil_data();
} else if (cmbpelanggan.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "m.id_pelanggan";
} else if (cmbpelanggan.getSelectedItem().toString().equals("Nama")) {
strKey = "p.nm_pelanggan";
} else {
strKey = "p.no_hp";
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan p, mobil m WHERE m.id_pelanggan =
p.id_pelanggan AND "
+ "" + strKey + " like '%" + txtcaripelanggan.getText() + "%' ORDER
BY m.id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("m.id_pelanggan");
data[1] = res.getString("p.nm_pelanggan");
data[2] = res.getString("p.no_hp");
data[3] = res.getString("m.plat_no");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

private void btnpilihpelangganActionPerformed(java.awt.event.ActionEvent evt) {


pilih_data();
}

public static void main(String args[]) {


/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Popup_Mobil.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Popup_Mobil.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Popup_Mobil.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Popup_Mobil.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the dialog */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Popup_Mobil dialog = new Popup_Mobil(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btncaripelanggan;
private javax.swing.JButton btnpilihpelanggan;
private javax.swing.JComboBox cmbpelanggan;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tabelpelanggan;
private javax.swing.JTextField txtcaripelanggan;
// End of variables declaration

private void pilih_data() {


int row = tabelpelanggan.getSelectedRow();
if (row >= 0) {
dm.setDataPopup(new String[]{
tblModel.getValueAt(row, 0).toString(),
tblModel.getValueAt(row, 1).toString(),
tblModel.getValueAt(row, 2).toString(),
tblModel.getValueAt(row, 3).toString()});
dispose();
} else {
JOptionPane.showMessageDialog(null, "Pilih salah satu data dalam tabel",
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

public String[] getData() {


return dm.getDataPopup();
}

private void tampil_data() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan p, mobil m WHERE m.id_pelanggan =
p.id_pelanggan";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("m.id_pelanggan");
data[1] = res.getString("p.nm_pelanggan");
data[2] = res.getString("m.merk");
data[3] = res.getString("m.plat_no");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

// ^^ TABEL
private void hapus_tabel() {
int rowCount = tabelpelanggan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Pelanggan", "Nama Pelanggan", "Merk Mobil", "Plat
Nomor"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}
14. Popup_Paket.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Popup_Paket extends javax.swing.JDialog {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

String data[] = new String[4];

Transaksi_Service dm = new Transaksi_Service(null);

public Popup_Paket(java.awt.Frame parent, boolean modal) {


super(parent, modal);
initComponents();
tabelpelanggan.setModel(tblModel);
Tabel(tabelpelanggan, new int[]{120, 120, 120, 120});
dm.setDataPopup(new String[]{"", ""});
tampil_data();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jScrollPane1 = new javax.swing.JScrollPane();
tabelpelanggan = new javax.swing.JTable();
txtcaripelanggan = new javax.swing.JTextField();
cmbpelanggan = new javax.swing.JComboBox();
btncaripelanggan = new javax.swing.JButton();
btnpilihpelanggan = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.B
evelBorder.RAISED));

tabelpelanggan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tabelpelanggan);

cmbpelanggan.setModel(new javax.swing.DefaultComboBoxModel(new String[]


{ "Id Paket", "Jenis Paket" }));

btncaripelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btncaripelanggan.setText("Cari");
btncaripelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncaripelangganActionPerformed(evt);
}
});

btnpilihpelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btnpilihpelanggan.setText("Pilih");
btnpilihpelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpilihpelangganActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btnpilihpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 119,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(45, 45, 45)
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(12, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btncaripelanggan))
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnpilihpelanggan)
.addContainerGap(15, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

setSize(new java.awt.Dimension(514, 286));


setLocationRelativeTo(null);
}// </editor-fold>
private void btncaripelangganActionPerformed(java.awt.event.ActionEvent evt) {
hapus_tabel();
String strKey = "";
if(txtcaripelanggan.equals(strKey)){
tampil_data();
} else if (cmbpelanggan.getSelectedItem().toString().equals("Id Paket")) {
strKey = "id_paket";
} else {
strKey = "jenis_paket";
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM paket_service WHERE " + strKey + " like '%" +
txtcaripelanggan.getText() + "%' ORDER BY id_paket DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("id_paket");
data[1] = res.getString("jenis_paket");
data[2] = res.getString("keterangan");
data[3] = res.getString("biaya");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

private void btnpilihpelangganActionPerformed(java.awt.event.ActionEvent evt) {


pilih_data();
}

public static void main(String args[]) {


/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Popup_Paket.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Popup_Paket.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Popup_Paket.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Popup_Paket.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the dialog */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Popup_Paket dialog = new Popup_Paket(new javax.swing.JFrame(),
true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btncaripelanggan;
private javax.swing.JButton btnpilihpelanggan;
private javax.swing.JComboBox cmbpelanggan;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tabelpelanggan;
private javax.swing.JTextField txtcaripelanggan;
// End of variables declaration
private void pilih_data() {
int row = tabelpelanggan.getSelectedRow();
if (row >= 0) {
dm.setDataPopup(new String[]{
tblModel.getValueAt(row, 0).toString(),
tblModel.getValueAt(row, 1).toString(),
tblModel.getValueAt(row, 2).toString(),
tblModel.getValueAt(row, 3).toString()});
dispose();
} else {
JOptionPane.showMessageDialog(null, "Pilih salah satu data dalam tabel",
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

public String[] getData() {


return dm.getDataPopup();
}

private void tampil_data() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM paket_service";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

// ^^ TABEL
private void hapus_tabel() {
int rowCount = tabelpelanggan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Paket", "Jenis Paket", "Keterangan", "Biaya"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}
15. Popup_Pelanggan.java
package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Popup_Pelanggan extends javax.swing.JDialog {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


Connection con;
Statement stat;
ResultSet res;
String sql;

String data[] = new String[3];

Master_Mobil dm = new Master_Mobil();

public Popup_Pelanggan(java.awt.Frame parent, boolean modal) {


setModal(true);
// super(parent, modal);
initComponents();
tabelpelanggan.setModel(tblModel);
Tabel(tabelpelanggan, new int[]{120, 120, 120});
dm.setDataPopup(new String[]{"", ""});
tampil_data();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jScrollPane1 = new javax.swing.JScrollPane();
tabelpelanggan = new javax.swing.JTable();
txtcaripelanggan = new javax.swing.JTextField();
cmbpelanggan = new javax.swing.JComboBox();
btncaripelanggan = new javax.swing.JButton();
btnpilihpelanggan = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.B
evelBorder.RAISED));

tabelpelanggan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3"
}
));
jScrollPane1.setViewportView(tabelpelanggan);

cmbpelanggan.setModel(new javax.swing.DefaultComboBoxModel(new String[]


{ "Id Pelanggan", "Nama", "No Telepon" }));

btncaripelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btncaripelanggan.setText("Cari");
btncaripelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncaripelangganActionPerformed(evt);
}
});

btnpilihpelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btnpilihpelanggan.setText("Pilih");
btnpilihpelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpilihpelangganActionPerformed(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.LE
ADING, false)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 365,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 94,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btncaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btnpilihpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 68,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txtcaripelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmbpelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btncaripelanggan))
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnpilihpelanggan)
.addContainerGap(15, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
setSize(new java.awt.Dimension(425, 286));
setLocationRelativeTo(null);
}// </editor-fold>

private void btncaripelangganActionPerformed(java.awt.event.ActionEvent evt) {


hapus_tabel();
String strKey = "";
if(txtcaripelanggan.equals(strKey)){
tampil_data();
} else if (cmbpelanggan.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "id_pelanggan";
} else if (cmbpelanggan.getSelectedItem().toString().equals("Nama")) {
strKey = "nm_pelanggan";
} else {
strKey = "no_hp";
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan WHERE " + strKey + " like '%" +
txtcaripelanggan.getText() + "%' ORDER BY id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString("no_hp");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

private void btnpilihpelangganActionPerformed(java.awt.event.ActionEvent evt) {


pilih_data();
}

public static void main(String args[]) {


/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Popup_Pelanggan.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Popup_Pelanggan.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Popup_Pelanggan.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Popup_Pelanggan.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the dialog */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Popup_Pelanggan dialog = new Popup_Pelanggan(new
javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btncaripelanggan;
private javax.swing.JButton btnpilihpelanggan;
private javax.swing.JComboBox cmbpelanggan;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tabelpelanggan;
private javax.swing.JTextField txtcaripelanggan;
// End of variables declaration

private void pilih_data() {


int row = tabelpelanggan.getSelectedRow();
if (row >= 0) {
dm.setDataPopup(new String[]{
tblModel.getValueAt(row, 0).toString(),
tblModel.getValueAt(row, 1).toString()});
dispose();
} else {
JOptionPane.showMessageDialog(null, "Pilih salah satu data dalam tabel",
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

public String[] getData() {


return dm.getDataPopup();
}

private void tampil_data() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM pelanggan ORDER BY id_pelanggan DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString("no_hp");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

// ^^ TABEL
private void hapus_tabel() {
int rowCount = tabelpelanggan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}
private void Tabel(javax.swing.JTable tb, int lebar[]) {
tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Pelanggan", "Nama Pelanggan", "No Telepon"}
){
boolean[] canEdit = new boolean[]{
false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}
16. Saran.java

package booking_services;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;

public class Saran extends javax.swing.JInternalFrame {

Connection con;
Statement stat;
ResultSet res;
String sql;
String data[] = new String[4];//MEMBUAT STRING DATA UNTUK MENGISI
KOLOM DITABEL
Koneksi_MySQL objkoneksi = new Koneksi_MySQL();
public Saran() {
initComponents();
Tabel(tabel_saran, new int[]{140, 250, 250, 200});
tabel_saran.setModel(tblModel);
tampilkan_data_saran();
}

private void tampilkan_data_saran() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT id_saran, id_pelanggan, isi_sms, waktu_sms "
+ " FROM saran ";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
stat.close();
con.close();
} catch (SQLException error) {
System.out.println(error);
JOptionPane.showMessageDialog(null, "gagal" + error);
}
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel11 = new javax.swing.JPanel();


jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
cmb_saran = new javax.swing.JComboBox();
txt_cari_saran = new javax.swing.JTextField();
btn_cari_saran = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
tabel_saran = new javax.swing.JTable();
btn_keluar = new javax.swing.JButton();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_proses.png"))); //
NOI18N

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Saran");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(577, Short.MAX_VALUE)
.addComponent(jLabel6)
.addGap(32, 32, 32))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(23, Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 9, Short.MAX_VALUE))
);

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

cmb_saran.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"Id Saran", "Id Pelanggan", " " }));

btn_cari_saran.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_saran.setText("Cari");
btn_cari_saran.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_saranActionPerformed(evt);
}
});

tabel_saran.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane3.setViewportView(tabel_saran);

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane3)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(cmb_saran,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_saran,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari_saran,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_cari_saran,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_keluar,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE))
.addComponent(cmb_saran,
javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(btn_cari_saran,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE, 202,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(39, 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(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>

private void btn_cari_saranActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_saran.equals(strKey)) {
tampilkan_data_saran();
} else if (cmb_saran.getSelectedItem().toString().equals("Id Saran")) {
strKey = "id_saran";
} else if (cmb_saran.getSelectedItem().toString().equals("Id Pelanggan")) {
strKey = "id_pelanggan";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM saran WHERE " + strKey + " like '%" +
txt_cari_saran.getText() + "%' ORDER BY id_saran DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

// Variables declaration - do not modify


private javax.swing.JButton btn_cari_saran;
private javax.swing.JButton btn_keluar;
private javax.swing.JComboBox cmb_saran;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTable tabel_saran;
private javax.swing.JTextField txt_cari_saran;
// End of variables declaration
private void Tabel(javax.swing.JTable tb, int lebar[]) {
tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}

private void hapusTabel() {


int rowCount = tabel_saran.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Saran", "id Pelanggan","Isi Sms", "Waktu Sms",}
){
boolean[] canEdit = new boolean[]{
false, false, false, false

};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}
}
17. Transaksi_Kwitansi.java
package booking_services;

import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import koneksi.Koneksi_MySQL;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class Transaksi_Kwitansi extends javax.swing.JInternalFrame {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


String sql;
Connection con;
Statement stat;
ResultSet res;

String data[] = new String[14];


String dataPopup[];
private int row;

private JasperDesign jasperDesign;


private JasperReport jasperReport;
private JasperPrint jasperPrint;
Map<String, Object> param = new HashMap<String, Object>();
String nm_user = null;
public Transaksi_Kwitansi(String nm_user) {
this.nm_user = nm_user;
initComponents();
tabel_kwitansi.setModel(tblModel);
Tabel(tabel_kwitansi, new int[]{100, 100, 100, 150, 100, 100, 100, 100, 100,
100, 100, 100, 150, 100});//membuat tabel dengan satu kolom berukuran 100 pixel
awal();
autonumber();
setisitabel();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

tb_form_kwitansi = new javax.swing.JTabbedPane();


jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
txt_no_kwitansi = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_cetak = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
txt_no_service = new javax.swing.JTextField();
btntambahkwitansi = new javax.swing.JButton();
dc_tgl_kwitansi = new com.toedter.calendar.JDateChooser();
jLabel7 = new javax.swing.JLabel();
btn_cari_transaksi = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
txt_id_pelanggan = new javax.swing.JTextField();
jLabel9 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
txt_area_service = new javax.swing.JTextField();
txt_sisa = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
txt_jam_service = new javax.swing.JTextField();
txt_tgl_transaksi = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
txt_platno = new javax.swing.JTextField();
jLabel15 = new javax.swing.JLabel();
txt_total = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
txt_tgl_service = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
txt_uang_muka = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
txt_ketbayar = new javax.swing.JTextField();
txt_status = new javax.swing.JTextField();
jLabel18 = new javax.swing.JLabel();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_kwitansi = new javax.swing.JTable();
cmb_booking = new javax.swing.JComboBox();
txt_cari_kwitansi = new javax.swing.JTextField();
btn_cari = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_transaksi.png"))); //
NOI18N
jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Tanggal Kwitansi");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("No Kwitansi");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("No Servis");

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Tanggal Transaksi");

txt_no_kwitansi.setEditable(false);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_cetak.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cetak.setText("Cetak");
btn_cetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cetakActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel3Layout = new


javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(92, 92, 92)
.addComponent(btn_simpan)
.addGap(49, 49, 49)
.addComponent(btn_cetak, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(54, 54, 54)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(60, 60, 60)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(116, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(btn_batal,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(btn_cetak,
javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_simpan,
javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 38,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

txt_no_service.setEditable(false);

btntambahkwitansi.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btntambahkwitansi.setText("Tambah");
btntambahkwitansi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btntambahkwitansiActionPerformed(evt);
}
});

dc_tgl_kwitansi.setEnabled(false);

jLabel7.setBackground(new java.awt.Color(255, 255, 255));


jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText("Jam Servis");

btn_cari_transaksi.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_transaksi.setText("Cari");
btn_cari_transaksi.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_transaksiActionPerformed(evt);
}
});

jLabel8.setBackground(new java.awt.Color(255, 255, 255));


jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel8.setText("Id Pelanggan");

txt_id_pelanggan.setEditable(false);

jLabel9.setBackground(new java.awt.Color(255, 255, 255));


jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel9.setText("Area Servis");

jLabel12.setBackground(new java.awt.Color(255, 255, 255));


jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

txt_area_service.setEditable(false);
txt_sisa.setEditable(false);

jLabel14.setBackground(new java.awt.Color(255, 255, 255));


jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel14.setText("Sisa Biaya");

txt_jam_service.setEditable(false);

txt_tgl_transaksi.setEditable(false);

jLabel10.setBackground(new java.awt.Color(255, 255, 255));


jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel10.setText("Plat No");

txt_platno.setEditable(false);

jLabel15.setBackground(new java.awt.Color(255, 255, 255));


jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel15.setText("Total Biaya");

txt_total.setEditable(false);

jLabel11.setBackground(new java.awt.Color(255, 255, 255));


jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel11.setText("Tanggal Servis");

txt_tgl_service.setEditable(false);

jLabel13.setBackground(new java.awt.Color(255, 255, 255));


jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel13.setText("Uang Muka");

txt_uang_muka.setEditable(false);

jLabel17.setBackground(new java.awt.Color(255, 255, 255));


jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel17.setText("Keterangan");

txt_ketbayar.setEditable(false);

txt_status.setEditable(false);

jLabel18.setBackground(new java.awt.Color(255, 255, 255));


jLabel18.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel18.setText("Status");

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(43, 43, 43)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel4,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel5))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING, false)
.addComponent(dc_tgl_kwitansi,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE)
.addComponent(txt_no_service,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_tgl_transaksi,
javax.swing.GroupLayout.Alignment.LEADING)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel12)
.addGap(117, 117, 117))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel8Layout.createSequentialGroup()
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(jLabel10,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGap(18, 18, 18))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel9,
javax.swing.GroupLayout.PREFERRED_SIZE, 94,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 104,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(22, 22, 22)))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(txt_id_pelanggan)
.addComponent(txt_no_kwitansi,
javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(txt_area_service,
javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(txt_platno,
javax.swing.GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE))))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(btntambahkwitansi,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_cari_transaksi,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel18,
javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(37, 37, 37)
.addComponent(txt_status,
javax.swing.GroupLayout.PREFERRED_SIZE, 162,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING, false)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel15,
javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txt_total,
javax.swing.GroupLayout.PREFERRED_SIZE, 162,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 92,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(27, 27, 27)
.addComponent(txt_jam_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 162,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 103,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txt_tgl_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 160,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 92,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel14,
javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(27, 27, 27)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(txt_sisa)
.addComponent(txt_uang_muka,
javax.swing.GroupLayout.PREFERRED_SIZE, 162,
javax.swing.GroupLayout.PREFERRED_SIZE)))))))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel17,
javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(37, 37, 37)
.addComponent(txt_ketbayar,
javax.swing.GroupLayout.PREFERRED_SIZE, 162,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(46, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(20, 20, 20)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_kwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btntambahkwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(dc_tgl_kwitansi,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 15,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jLabel4))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(11, 11, 11)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari_transaksi,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(txt_tgl_transaksi,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addGap(24, 24, 24)
.addComponent(jLabel8)
.addGap(10, 10, 10))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()
.addComponent(txt_id_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
.addComponent(jLabel12)
.addGap(2, 2, 2)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel10)
.addComponent(txt_platno,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(txt_tgl_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(txt_jam_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(txt_uang_muka,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_sisa,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel14))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_total,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_status,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel18))))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_ketbayar,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel17))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_area_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9)))
.addGap(20, 20, 20)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);

tb_form_kwitansi.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_kwitansi.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7", "Title
8", "Title 9", "Title 10", "Title 11", "Title 12", "Title 13", "Title 14"
}
));
tabel_kwitansi.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_kwitansiMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_kwitansi);

cmb_booking.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"No Kwitansi", "Tanggal Kwitansi", "No Service" }));
btn_cari.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
btn_cari.setText("Cari");
btn_cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cariActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 759, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_booking,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_kwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_booking)
.addComponent(txt_cari_kwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 213,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(150, 150, 150))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 793, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 447, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0))
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(115, 115, 115))
);

tb_form_kwitansi.addTab("Lihat Data", jPanel5);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Transaksi Kwitansi");
javax.swing.GroupLayout jPanel12Layout = new
javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE,
144, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(20, 20, 20))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(23, Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, 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(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tb_form_kwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 800,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tb_form_kwitansi,
javax.swing.GroupLayout.PREFERRED_SIZE, 460, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


if (txt_no_service.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Data masih kosong", "Peringatan!!",
JOptionPane.WARNING_MESSAGE);
txt_no_service.requestFocus();
return;
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO kwitansi VALUES("
+ "'" + txt_no_kwitansi.getText() + "',"
+ "'" + new SimpleDateFormat("yyyy-MM-
dd").format(dc_tgl_kwitansi.getDate()) + "',"
+ "'" + txt_no_service.getText() + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
String bonus = null;
Statement statcaribonus = con.createStatement();
ResultSet resbonus = statcaribonus.executeQuery("SELECT * "
+ "FROM mobil "
+ "WHERE plat_no='" +
txt_platno.getText() + "' "
+ "AND bonus_service>0");
if (resbonus.next()) {
bonus = resbonus.getString("bonus_service");
}
if (bonus != null) {
int sisabonus = Integer.valueOf(bonus) - 1;

//update bonus
Statement updatebonus = con.createStatement();
updatebonus.executeUpdate("UPDATE mobil SET bonus_service
='"+sisabonus+"' "
+ "WHERE id_pelanggan='"+txt_id_pelanggan.getText()+"' AND
plat_no = '"+txt_platno.getText()+"'");
updatebonus.close();

}
//update status
Statement updatestatus = con.createStatement();
updatestatus.executeUpdate("UPDATE service SET status ='Lunas'
WHERE no_service='"+txt_no_service.getText()+"'");
updatestatus.close();
resbonus.close();
statcaribonus.close();
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data");
kosongform();
autonumber();
awal();
tb_form_kwitansi.setSelectedIndex(1);
hapusTabel();
setisitabel();
}
} catch (SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal Menyimpan data " + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
System.err.print(error);
}
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


kosongform();
autonumber();
awal();
}

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}

private void btntambahkwitansiActionPerformed(java.awt.event.ActionEvent evt) {


btn_cari_transaksi.setEnabled(true);
btn_batal.setEnabled(true);
btn_simpan.setEnabled(true);
btntambahkwitansi.setEnabled(false);
}
private void btn_cari_transaksiActionPerformed(java.awt.event.ActionEvent evt) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Popup_Booking dialog = new Popup_Booking(new javax.swing.JFrame(),
true);
dialog.setVisible(true);
if (dialog.getData()[0].equals("")) {
return;
}
txt_no_service.setText(dialog.getData()[0]);
txt_tgl_transaksi.setText(dialog.getData()[1]);
txt_id_pelanggan.setText(dialog.getData()[2]);
// nama_pelanggan();
txt_platno.setText(dialog.getData()[3]);
txt_area_service.setText(dialog.getData()[6]);
txt_tgl_service.setText(dialog.getData()[7]);
txt_jam_service.setText(dialog.getData()[8]);
txt_uang_muka.setText(dialog.getData()[9]);
txt_sisa.setText(String.valueOf(Integer.parseInt(dialog.getData()[10])-
Integer.parseInt(dialog.getData()[9])));
txt_total.setText(dialog.getData()[10]);
txt_status.setText(dialog.getData()[11]);
txt_ketbayar.setText(dialog.getData()[12]);

btn_cari_transaksi.setEnabled(false);
}
});
}

private void btn_cetakActionPerformed(java.awt.event.ActionEvent evt) {


try {
File file = new File("./src/laporan/Cetak_Kwitansi.jrxml");
jasperDesign = JRXmlLoader.load(file);
param.put("no_kwitansi", txt_no_kwitansi.getText());
param.put("nmuser",nm_user);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, param,
objkoneksi.open_a_Connection());
JOptionPane.showMessageDialog(null, " Data telah di print '" +
txt_no_kwitansi.getText() + "'");
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException | SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal mencetak", "Peringatan",
JOptionPane.WARNING_MESSAGE);
System.out.println(error);
}
}
private void tabel_kwitansiMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
row = tabel_kwitansi.getSelectedRow();
txt_no_kwitansi.setText(tblModel.getValueAt(row, 0).toString());
dc_tgl_kwitansi.setDate(java.sql.Date.valueOf(tblModel.getValueAt(row,
1).toString()));
txt_no_service.setText(tblModel.getValueAt(row, 2).toString());
databooking();
btn_simpan.setEnabled(false);
btn_batal.setEnabled(true);
tb_form_kwitansi.setSelectedIndex(0);
btntambahkwitansi.setEnabled(false);
btn_cetak.setEnabled(true);
}
}

private void btn_cariActionPerformed(java.awt.event.ActionEvent evt) {


// No Kwitansi, Tanggal Kwitansi, No Service
hapusTabel();
String strKey = "";
if (txt_cari_kwitansi.equals(strKey)) {
setisitabel();
} else if (cmb_booking.getSelectedItem().toString().equals("No Kwitansi")) {
strKey = "no_kwitansi";
} else if (cmb_booking.getSelectedItem().toString().equals("Tanggal
Kwitansi")) {
strKey = "tgl_kwitansi";
} else {
strKey = "no_service";
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM kwitansi k, service s WHERE k.no_service =
s.no_service ORDER BY no_kwitansi";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no_kwitansi");
data[1] = res.getString("tgl_kwitansi");
data[2] = res.getString("no_service");
data[3] = res.getString("tgl_transaksi");
data[4] = res.getString("id_pelanggan");
data[5] = res.getString("no_plat");
data[6] = res.getString("area_service");
data[7] = res.getString("tgl_service");
data[8] = res.getString("jam_service");
data[9] = res.getString("uang_muka");
data[10] = String.valueOf(Integer.parseInt(res.getString("total_biaya")) -
Integer.parseInt(res.getString("uang_muka")));
data[11] = res.getString("total_biaya");
data[12] = res.getString("status");
data[13] = res.getString("keterangan_pembayaran");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void databooking() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM service s, pelanggan p WHERE s.id_pelanggan =
p.id_pelanggan AND no_service = '" + tblModel.getValueAt(row, 2).toString() + "'";
res = stat.executeQuery(sql);
if (res.next()) {
txt_tgl_transaksi.setText(res.getString("tgl_transaksi"));
txt_id_pelanggan.setText(res.getString("id_pelanggan"));
txt_platno.setText(res.getString("no_plat"));
txt_area_service.setText(res.getString("area_service"));
txt_tgl_service.setText(res.getString("tgl_service"));
txt_jam_service.setText(res.getString("jam_service"));
txt_uang_muka.setText(res.getString("uang_muka"));

txt_sisa.setText(String.valueOf(Integer.parseInt(res.getString("total_biaya")) -
Integer.parseInt(res.getString("uang_muka"))));
txt_total.setText(res.getString("total_biaya"));
txt_status.setText(res.getString("status"));
txt_ketbayar.setText(res.getString("keterangan_pembayaran"));
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}
}

// Variables declaration - do not modify


private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_cari;
private javax.swing.JButton btn_cari_transaksi;
private javax.swing.JButton btn_cetak;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btntambahkwitansi;
private javax.swing.JComboBox cmb_booking;
private com.toedter.calendar.JDateChooser dc_tgl_kwitansi;
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 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 jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable tabel_kwitansi;
private javax.swing.JTabbedPane tb_form_kwitansi;
private javax.swing.JTextField txt_area_service;
private javax.swing.JTextField txt_cari_kwitansi;
private javax.swing.JTextField txt_id_pelanggan;
private javax.swing.JTextField txt_jam_service;
private javax.swing.JTextField txt_ketbayar;
private javax.swing.JTextField txt_no_kwitansi;
private javax.swing.JTextField txt_no_service;
private javax.swing.JTextField txt_platno;
private javax.swing.JTextField txt_sisa;
private javax.swing.JTextField txt_status;
private javax.swing.JTextField txt_tgl_service;
private javax.swing.JTextField txt_tgl_transaksi;
private javax.swing.JTextField txt_total;
private javax.swing.JTextField txt_uang_muka;
// End of variables declaration

private void setisitabel() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM kwitansi k, service s, pelanggan p WHERE
k.no_service = s.no_service "
+ "AND s.id_pelanggan=p.id_pelanggan AND status='Lunas' ORDER
BY no_kwitansi DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no_kwitansi");
data[1] = res.getString("tgl_kwitansi");
data[2] = res.getString("no_service");
data[3] = res.getString("tgl_transaksi");
data[4] = res.getString("id_pelanggan");
data[5] = res.getString("no_plat");
data[6] = res.getString("area_service");
data[7] = res.getString("tgl_service");
data[8] = res.getString("jam_service");
data[9] = res.getString("uang_muka");
data[10] = String.valueOf(Integer.parseInt(res.getString("total_biaya")) -
Integer.parseInt(res.getString("uang_muka")));
data[11] = res.getString("total_biaya");
data[12] = res.getString("status");
data[13] = res.getString("keterangan_pembayaran");
(tblModel).addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.out.println(error);
}
}

public void autonumber() {


try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT RIGHT(no_kwitansi,4) as kd FROM kwitansi";
res = stat.executeQuery(sql);
if (res.first() == false) {
txt_no_kwitansi.setText("KWT0001");
} else {
res.last();
int no = res.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 4 - pjg_cno; i++) {
cno = "0" + cno;
}
txt_no_kwitansi.setText("KWT" + cno);
}
} catch (SQLException error) {
System.out.println(error);
}
}

private void awal() {


btntambahkwitansi.setEnabled(true);
btn_cari_transaksi.setEnabled(false);
btn_simpan.setEnabled(false);
btn_cetak.setEnabled(false);
btn_batal.setEnabled(false);
dc_tgl_kwitansi.setDate(new Date());
tb_form_kwitansi.setSelectedIndex(1);
}

private void kosongform() {


txt_no_kwitansi.setText("");
dc_tgl_kwitansi.setDate(new Date());
txt_no_service.setText("");
txt_tgl_transaksi.setText("");
txt_id_pelanggan.setText("");
txt_platno.setText("");
txt_area_service.setText("");
txt_tgl_service.setText("");
txt_jam_service.setText("");
txt_uang_muka.setText("");
txt_sisa.setText("");
txt_total.setText("");
txt_status.setText("");
txt_ketbayar.setText("");
}

public void hapusTabel() {


int rowCount = tabel_kwitansi.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"No Kwitansi", "Tanggal Kwitansi", "No Service", "Tanggal
Transaksi", "Id Pelanggan", "Plat No",
"Area Service", "Tanggal Service", "Jam Service", "Uang Muka", "Sisa
Biaya", "Total Biaya", "Status", "Keterangan"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false, false, false, false, false, false, false, false,
false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

// ^^ POPUP
public void setDataPopup(String[] dataPopup) {
this.dataPopup = dataPopup;
}

public String[] getDataPopup() {


return dataPopup;
}
}
18. Transaksi_Service.java
package booking_services;

import fungsi.Sesi_User;
import fungsi.Validasi;
import java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import koneksi.Koneksi_MySQL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class Transaksi_Service extends javax.swing.JInternalFrame {

Koneksi_MySQL objkoneksi = new Koneksi_MySQL();


String sql;
Connection con;
Statement stat;
ResultSet res;
String data[] = new String[13];
String datadetil[] = new String[3];
String dataPopup[];
private int row;

private JasperDesign jasperDesign;


private JasperReport jasperReport;
private JasperPrint jasperPrint;
Map<String, Object> param = new HashMap<String, Object>();

String nm_user = null;

public Transaksi_Service(String nm_user) {


initComponents();
this.nm_user = nm_user;
lbl_sesi_user.setText(Sesi_User.GetUser_Login());
tabel_pesanan.setModel(tblModel);
Tabel(tabel_pesanan, new int[]{110, 110, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 150});//membuat tabel dengan satu kolom berukuran 100 pixel
tabel_detil.setModel(tblModeldetil);
Tabeldetil(tabel_detil, new int[]{150, 150, 150});//membuat tabel dengan satu
kolom berukuran 100 pixel
Validasi();
awal();
autonumber();
setIsiTabel();
dc_tanggal_pesan.getJCalendar().setMinSelectableDate(new Date()); // disable
JCalender tanggal sebelumnya
System.out.println(nm_user);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

bgstatus = new javax.swing.ButtonGroup();


tabpane_form = new javax.swing.JTabbedPane();
jPanel4 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
txt_no_service = new javax.swing.JTextField();
txt_nm_lengkap = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
btn_simpan = new javax.swing.JButton();
btn_ubah = new javax.swing.JButton();
btn_cetak = new javax.swing.JButton();
btn_keluar = new javax.swing.JButton();
btn_batal_service = new javax.swing.JButton();
btn_batal = new javax.swing.JButton();
txt_id_pelanggan = new javax.swing.JTextField();
btn_tambah_service = new javax.swing.JButton();
dc_tgl_transaksi = new com.toedter.calendar.JDateChooser();
jLabel7 = new javax.swing.JLabel();
dc_tanggal_pesan = new com.toedter.calendar.JDateChooser();
btn_cari_pelanggan = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
cmb_area = new javax.swing.JComboBox();
jLabel10 = new javax.swing.JLabel();
cmb_jam_pesan = new javax.swing.JComboBox();
jLabel11 = new javax.swing.JLabel();
rb_belum_konfirmasi = new javax.swing.JRadioButton();
jLabel12 = new javax.swing.JLabel();
txt_harga_paket = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
txt_uang_muka = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
txt_total_biaya = new javax.swing.JTextField();
jLabel16 = new javax.swing.JLabel();
txt_id_paket = new javax.swing.JTextField();
btn_cari_paket = new javax.swing.JButton();
cmb_menit_pesan = new javax.swing.JComboBox();
rb_konfirmasi = new javax.swing.JRadioButton();
btn_hitung_total = new javax.swing.JButton();
btn_tambah_paket = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tabel_detil = new javax.swing.JTable();
jLabel17 = new javax.swing.JLabel();
txt_jenis_paket = new javax.swing.JTextField();
jLabel15 = new javax.swing.JLabel();
txt_ket_bayar = new javax.swing.JTextField();
cmb_plat = new javax.swing.JComboBox();
jLabel18 = new javax.swing.JLabel();
txt_merk_mobil = new javax.swing.JTextField();
btn_cek_area = new javax.swing.JButton();
btn_hapus_paket = new javax.swing.JButton();
jLabel19 = new javax.swing.JLabel();
txt_sisa = new javax.swing.JTextField();
btn_sisa = new javax.swing.JButton();
lbl_sesi_user = new javax.swing.JLabel();
jPanel5 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabel_pesanan = new javax.swing.JTable();
cmb_booking = new javax.swing.JComboBox();
txt_cari_pesanan = new javax.swing.JTextField();
btn_cari = new javax.swing.JButton();
jPanel11 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();

setClosable(true);
setFrameIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_transaksi.png"))); //
NOI18N

jPanel4.setBackground(new java.awt.Color(204, 204, 204));

jPanel8.setBackground(new java.awt.Color(204, 204, 204));


jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

jLabel2.setBackground(new java.awt.Color(255, 255, 255));


jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Tanggal Transaksi");

jLabel3.setBackground(new java.awt.Color(255, 255, 255));


jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("No Servis");

jLabel4.setBackground(new java.awt.Color(255, 255, 255));


jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Id Pelanggan");

jLabel5.setBackground(new java.awt.Color(255, 255, 255));


jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Nama Lengkap");

txt_no_service.setEditable(false);

txt_nm_lengkap.setEditable(false);

jPanel3.setBackground(new java.awt.Color(204, 204, 204));


jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Tombol"));
jPanel3.setForeground(new java.awt.Color(204, 204, 204));

btn_simpan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_simpan.setText("Simpan");
btn_simpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_simpanActionPerformed(evt);
}
});

btn_ubah.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_ubah.setText("Ubah Servis");
btn_ubah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_ubahActionPerformed(evt);
}
});

btn_cetak.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cetak.setText("Cetak");
btn_cetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cetakActionPerformed(evt);
}
});

btn_keluar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_keluar.setText("Keluar");
btn_keluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_keluarActionPerformed(evt);
}
});

btn_batal_service.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal_service.setText("Batal Servis");
btn_batal_service.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batal_serviceActionPerformed(evt);
}
});

btn_batal.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_batal.setText("Batal");
btn_batal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_batalActionPerformed(evt);
}
});

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(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_simpan, javax.swing.GroupLayout.PREFERRED_SIZE,
98, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(29, 29, 29)
.addComponent(btn_ubah)
.addGap(28, 28, 28)
.addComponent(btn_batal_service)
.addGap(32, 32, 32)
.addComponent(btn_cetak, javax.swing.GroupLayout.PREFERRED_SIZE,
105, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(33, 33, 33)
.addComponent(btn_keluar, javax.swing.GroupLayout.PREFERRED_SIZE,
108, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btn_batal, javax.swing.GroupLayout.PREFERRED_SIZE,
99, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(btn_keluar,
javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_ubah, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_simpan,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_cetak,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(btn_batal_service,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 39,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_batal,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 39,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);

txt_id_pelanggan.setEditable(false);

btn_tambah_service.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah_service.setText("Tambah");
btn_tambah_service.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambah_serviceActionPerformed(evt);
}
});

dc_tgl_transaksi.setEnabled(false);

jLabel7.setBackground(new java.awt.Color(255, 255, 255));


jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText("Tanggal Servis");

dc_tanggal_pesan.addPropertyChangeListener(new
java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
dc_tanggal_pesanPropertyChange(evt);
}
});

btn_cari_pelanggan.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_pelanggan.setText("Cari");
btn_cari_pelanggan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_pelangganActionPerformed(evt);
}
});

jLabel8.setBackground(new java.awt.Color(255, 255, 255));


jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel8.setText("Nomor Plat");

jLabel9.setBackground(new java.awt.Color(255, 255, 255));


jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel9.setText("Area Servis");

cmb_area.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"A1", "A2", "A3", "A4", "A5", "A6" }));

jLabel10.setBackground(new java.awt.Color(255, 255, 255));


jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel10.setText("Jam Servis");

cmb_jam_pesan.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { "08", "09", "10", "11", "12", "13", "14", "15", "16", "17" }));

jLabel11.setBackground(new java.awt.Color(255, 255, 255));


jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel11.setText("Status");

bgstatus.add(rb_belum_konfirmasi);
rb_belum_konfirmasi.setText("Belum Konfirmasi");

jLabel12.setBackground(new java.awt.Color(255, 255, 255));


jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel12.setText("Harga Paket");

txt_harga_paket.setEditable(false);

jLabel13.setBackground(new java.awt.Color(255, 255, 255));


jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel13.setText("Total Biaya");

jLabel14.setBackground(new java.awt.Color(255, 255, 255));


jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel14.setText("Uang Muka");

txt_total_biaya.setEditable(false);

jLabel16.setBackground(new java.awt.Color(255, 255, 255));


jLabel16.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel16.setText("Id Paket");
txt_id_paket.setEditable(false);

btn_cari_paket.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari_paket.setText("Cari");
btn_cari_paket.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cari_paketActionPerformed(evt);
}
});

cmb_menit_pesan.setModel(new javax.swing.DefaultComboBoxModel(new
String[] { ": 00" }));
cmb_menit_pesan.setEnabled(false);

bgstatus.add(rb_konfirmasi);
rb_konfirmasi.setText("Konfirmasi");

btn_hitung_total.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_hitung_total.setText("Hitung");
btn_hitung_total.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hitung_totalActionPerformed(evt);
}
});

btn_tambah_paket.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_tambah_paket.setText("Tambah");
btn_tambah_paket.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_tambah_paketActionPerformed(evt);
}
});

tabel_detil.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
"Title 1", "Title 2", "Title 3"
}
));
jScrollPane1.setViewportView(tabel_detil);

jLabel17.setBackground(new java.awt.Color(255, 255, 255));


jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel17.setText("Jenis Paket");

txt_jenis_paket.setEditable(false);
jLabel15.setBackground(new java.awt.Color(255, 255, 255));
jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel15.setText("Ket Bayar");

cmb_plat.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmb_platItemStateChanged(evt);
}
});

jLabel18.setBackground(new java.awt.Color(255, 255, 255));


jLabel18.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel18.setText("Merk Mobil");

txt_merk_mobil.setEditable(false);

btn_cek_area.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cek_area.setText("Cek Booking");
btn_cek_area.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cek_areaActionPerformed(evt);
}
});

btn_hapus_paket.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_hapus_paket.setText("Hapus");
btn_hapus_paket.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_hapus_paketActionPerformed(evt);
}
});

jLabel19.setBackground(new java.awt.Color(255, 255, 255));


jLabel19.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel19.setText("Sisa");

txt_sisa.setEditable(false);

btn_sisa.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_sisa.setText("Sisa");
btn_sisa.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_sisaActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel8Layout = new


javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(22, 22, 22)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel8)
.addComponent(jLabel5)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(jLabel18)
.addComponent(jLabel9))
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 117,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(26, 26, 26)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(btn_cek_area)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING, false)
.addComponent(txt_no_service,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(dc_tgl_transaksi,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE)
.addComponent(txt_id_pelanggan,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_nm_lengkap,
javax.swing.GroupLayout.Alignment.LEADING))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(btn_cari_pelanggan,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_tambah_service,
javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)))
.addComponent(cmb_area,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 63,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_merk_mobil,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmb_plat,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(37, 37, 37)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(dc_tanggal_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(cmb_jam_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 64,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cmb_menit_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 63,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGap(47, 47, 47))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(jLabel10,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lbl_sesi_user,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 172,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(jLabel16)
.addComponent(jLabel12,
javax.swing.GroupLayout.DEFAULT_SIZE, 102, Short.MAX_VALUE)
.addComponent(jLabel17,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_jenis_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_id_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_harga_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(btn_cari_paket,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btn_tambah_paket,
javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_hapus_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 86,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 412,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txt_total_biaya,
javax.swing.GroupLayout.PREFERRED_SIZE, 169,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_hitung_total,
javax.swing.GroupLayout.PREFERRED_SIZE, 84,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(rb_belum_konfirmasi,
javax.swing.GroupLayout.PREFERRED_SIZE, 160,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING)
.addComponent(jLabel14,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel19,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15,
javax.swing.GroupLayout.PREFERRED_SIZE, 106,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(txt_uang_muka,
javax.swing.GroupLayout.PREFERRED_SIZE, 169,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btn_sisa,
javax.swing.GroupLayout.PREFERRED_SIZE, 84,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(txt_sisa,
javax.swing.GroupLayout.PREFERRED_SIZE, 169,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_ket_bayar,
javax.swing.GroupLayout.PREFERRED_SIZE, 259,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(175, 175, 175)
.addComponent(rb_konfirmasi,
javax.swing.GroupLayout.PREFERRED_SIZE, 115,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(90, 90, 90)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(90, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(

jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(6, 6, 6)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_no_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_tambah_service,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel16)
.addComponent(jLabel3))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(dc_tgl_transaksi,
javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel4)
.addComponent(txt_id_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari_pelanggan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(14, 14, 14)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_nm_lengkap,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_plat,
javax.swing.GroupLayout.PREFERRED_SIZE, 31,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel8Layout.createSequentialGroup()

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(txt_id_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_jenis_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(jLabel17)
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(btn_tambah_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt_harga_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12)
.addComponent(btn_hapus_paket,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 89,
javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel18)
.addComponent(txt_merk_mobil,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_area,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)
.addComponent(dc_tanggal_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(cmb_jam_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel10)
.addComponent(cmb_menit_pesan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(lbl_sesi_user,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(8, 8, 8)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(2, 2, 2)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_total_biaya,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_hitung_total,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(rb_konfirmasi)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel11)
.addComponent(rb_belum_konfirmasi)))
.addGap(11, 11, 11)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel14)
.addComponent(txt_uang_muka,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_sisa,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(13, 13, 13)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(jLabel19)
.addComponent(txt_sisa,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cek_area,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16,
Short.MAX_VALUE)

.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(txt_ket_bayar,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15))))
.addGap(12, 12, 12)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

javax.swing.GroupLayout jPanel4Layout = new


javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(25, Short.MAX_VALUE))
);
jPanel4Layout.setVerticalGroup(

jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(30, 30, 30))
);

tabpane_form.addTab("Entry Data", jPanel4);

jPanel6.setBackground(new java.awt.Color(204, 204, 204));


jPanel6.setPreferredSize(new java.awt.Dimension(1007, 500));

jPanel7.setBackground(new java.awt.Color(204, 204, 204));


jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

tabel_pesanan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7", "Title
8", "Title 9", "Title 10", "Title 11", "Title 12", "Title 13"
}
));
tabel_pesanan.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabel_pesananMouseClicked(evt);
}
});
jScrollPane2.setViewportView(tabel_pesanan);

cmb_booking.setModel(new javax.swing.DefaultComboBoxModel(new String[] {


"No Servis", "Id Pelanggan", "No Plat", "Area Servis" }));
cmb_booking.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmb_bookingActionPerformed(evt);
}
});

btn_cari.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N


btn_cari.setText("Cari");
btn_cari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btn_cariActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel7Layout = new


javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 963, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(cmb_booking,
javax.swing.GroupLayout.PREFERRED_SIZE, 176,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txt_cari_pesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 171,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btn_cari,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(

jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addContainerGap()

.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(cmb_booking,
javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(txt_cari_pesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btn_cari, javax.swing.GroupLayout.DEFAULT_SIZE,
31, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 412,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26))
);

javax.swing.GroupLayout jPanel6Layout = new


javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(

jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(757, Short.MAX_VALUE))
);

javax.swing.GroupLayout jPanel1Layout = new


javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 1007, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 1271, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
1271, javax.swing.GroupLayout.PREFERRED_SIZE))
);

javax.swing.GroupLayout jPanel5Layout = new


javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel5Layout.setVerticalGroup(

jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);

tabpane_form.addTab("Lihat Data", jPanel5);

jPanel11.setBackground(new java.awt.Color(0, 0, 0));

jPanel12.setBackground(new java.awt.Color(0, 102, 204));


jPanel12.setBorder(new
javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

jLabel6.setBackground(new java.awt.Color(255, 255, 255));


jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel6.setForeground(new java.awt.Color(255, 255, 255));
jLabel6.setText("Pesan Servis Mobil");

javax.swing.GroupLayout jPanel12Layout = new


javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE,
144, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(20, 20, 20))
);
jPanel12Layout.setVerticalGroup(

jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel12Layout.createSequentialGroup()
.addContainerGap(23, Short.MAX_VALUE)
.addComponent(jLabel6)
.addContainerGap())
);

javax.swing.GroupLayout jPanel11Layout = new


javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel11Layout.setVerticalGroup(

jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, 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(tabpane_form)
.addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tabpane_form,
javax.swing.GroupLayout.PREFERRED_SIZE, 589,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}
private void btn_cari_pelangganActionPerformed(java.awt.event.ActionEvent evt)
{
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {

Popup_Pelanggan dialog = new Popup_Pelanggan(new


javax.swing.JFrame(), true);
dialog.setVisible(true);
if (dialog.getData()[0].equals("")) {
return;
}
txt_id_pelanggan.setText(dialog.getData()[0]);
txt_nm_lengkap.setText(dialog.getData()[1]);

dc_tanggal_pesan.setDate(new Date());

plat_no();

dc_tanggal_pesan.setEnabled(true);
btn_cari_pelanggan.setEnabled(false);
btn_cek_area.setEnabled(true);
cmb_plat.setEnabled(true);
cmb_area.setEnabled(true);
cmb_jam_pesan.setEnabled(true);

}
});
}

private void btn_cari_paketActionPerformed(java.awt.event.ActionEvent evt) {


if (btn_cek_area.isEnabled()) {
JOptionPane.showMessageDialog(null, "Silakan cek booking terlebih dahulu",
"Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Popup_Paket dialog = new Popup_Paket(new javax.swing.JFrame(),
true);
dialog.setVisible(true);
if (dialog.getData()[0].equals("")) {
return;
}
txt_id_paket.setText(dialog.getData()[0]);
txt_jenis_paket.setText(dialog.getData()[2]);
txt_harga_paket.setText(dialog.getData()[3]);
btn_cari_paket.setEnabled(false);
btn_tambah_paket.setEnabled(true);
btn_hapus_paket.setEnabled(true);
}
});
}

private void btn_tambah_serviceActionPerformed(java.awt.event.ActionEvent evt)


{
btn_cari_pelanggan.setEnabled(true);
btn_tambah_service.setEnabled(false);
btn_batal.setEnabled(true);
}

private void btn_batal_serviceActionPerformed(java.awt.event.ActionEvent evt) {


try {
int jawab = JOptionPane.showConfirmDialog(null, "Yakin Akan Hapus??",
"Konfirmasi", JOptionPane.YES_NO_OPTION);
if (jawab == 0) {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "DELETE ab, a FROM service AS a, service_detil ab "
+ "WHERE a.no_service=ab.no_service AND a.no_service='" +
txt_no_service.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
};
awal();
kosongform();
hapusTabeldetil();
autonumber();
tabpane_form.setSelectedIndex(1);
hapusTabel();
setIsiTabel();
}
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Data gagal dihapus" + error,
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
}

private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) {


String status = "";
if (rb_belum_konfirmasi.isSelected()) {
status = "Belum Konfirmasi";
} else {
status = "Konfirmasi";
}
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "INSERT INTO service VALUES('" + txt_no_service.getText() + "',"
+ "'" + new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss").format(dc_tgl_transaksi.getDate()) + "',"
+ "'" + txt_id_pelanggan.getText() + "',"
+ "'" + cmb_plat.getSelectedItem().toString().split(" ")[0] + "',"
+ "'" + cmb_area.getSelectedItem().toString() + "',"
+ "'" + new SimpleDateFormat("yyyy-MM-
dd").format(dc_tanggal_pesan.getDate()) + "',"
+ "'" + cmb_jam_pesan.getSelectedItem().toString() + ":00',"
+ "'" + cmb_jam_pesan.getSelectedItem().toString() + ":59',"
+ "'" + txt_uang_muka.getText() + "',"
+ "'" + txt_total_biaya.getText() + "',"
+ "'" + status + "',"
+ "'" + txt_ket_bayar.getText() + "')";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
for (int i = 0; i < tabel_detil.getRowCount(); i++) {
//simpan detil service
Statement statdetil = con.createStatement();
String simpandetil = "INSERT INTO service_detil VALUES( '" +
txt_no_service.getText() + "','" + tblModeldetil.getValueAt(i, 0).toString() + "')";
int sukses_detil = statdetil.executeUpdate(simpandetil);
if (sukses_detil == 1) {
System.out.println("Simpan detail berhasil");

}
statdetil.close();
}
JOptionPane.showMessageDialog(null, "Data telah disimpan");

hapusTabeldetil();
hapusTabel();
setIsiTabel();
kosongform();
awal();
autonumber();

}
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Data gagal disimpan" + " Tidak
boleh memasukan paket yang sama " + txt_id_paket.getText(), "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}
int a;
private void btn_hitung_totalActionPerformed(java.awt.event.ActionEvent evt) {
// ^^ HITUNG TOTAL BIAYA
if (txt_uang_muka.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Silakan isi uang muka",
"Peringatan", JOptionPane.WARNING_MESSAGE);
}
int i;
int total = 0;
int rowCount = tabel_detil.getRowCount();
for (i = 0; i < rowCount; i++) {
total = total;
int Amount = Integer.parseInt(tblModeldetil.getValueAt(i, 2) + "");
total = Amount + total;
}
int uangmuka = Integer.valueOf(txt_uang_muka.getText());
int totalbiaya = total - uangmuka;
txt_total_biaya.setText(String.valueOf(totalbiaya));
rb_belum_konfirmasi.setSelected(true);

txt_uang_muka.setEnabled(true);
txt_ket_bayar.setEnabled(true);
btn_hitung_total.setEnabled(false);
btn_cari_paket.setEnabled(false);
btn_tambah_paket.setEnabled(false);
btn_hapus_paket.setEnabled(false);
btn_sisa.setEnabled(true);

btn_simpan.setEnabled(true);

private void btn_tambah_paketActionPerformed(java.awt.event.ActionEvent evt) {


String cek_paket;

datadetil[0] = txt_id_paket.getText();
datadetil[1] = txt_jenis_paket.getText();
datadetil[2] = txt_harga_paket.getText();
tblModeldetil.insertRow(0, datadetil);
int rowdetil = tblModeldetil.getRowCount();
System.err.println(rowdetil);
if (rowdetil == 2) {
cek_paket = tblModeldetil.getValueAt(1,0).toString();
System.err.println(cek_paket);
System.err.println(txt_id_paket.getText() + " paket");
//cek id paket sama atau tidak
if (txt_id_paket.getText().equals(cek_paket)) {
JOptionPane.showMessageDialog(null, "Id Paket Sudah di Pilih",
"Peringatan", JOptionPane.WARNING_MESSAGE);
tblModeldetil.removeRow(0);
txt_id_paket.setText("");
txt_jenis_paket.setText("");
txt_harga_paket.setText("");
btn_cari_paket.setEnabled(true);
return;
};
}
txt_id_paket.setText("");
txt_jenis_paket.setText("");
txt_harga_paket.setText("");
txt_uang_muka.setText("0");

rb_belum_konfirmasi.setEnabled(true);
rb_konfirmasi.setEnabled(true);
dc_tanggal_pesan.setEnabled(false);
txt_uang_muka.setEnabled(true);
txt_uang_muka.setEnabled(true);
cmb_jam_pesan.setEnabled(false);
cmb_area.setEnabled(false);
btn_tambah_paket.setEnabled(false);
btn_hitung_total.setEnabled(true);
btn_cari_paket.setEnabled(true);

//hanya bisa 2 paket


if (rowdetil == 2) {
btn_cari_paket.setEnabled(false);
} else {
btn_cari_paket.setEnabled(true);
}
}

private void dc_tanggal_pesanPropertyChange(java.beans.PropertyChangeEvent


evt) {
if ("date".equals(evt.getPropertyName())) {
if (dc_tanggal_pesan.getDate() != null & row == 0) {
if (dc_tanggal_pesan.getDate().after(new Date())) { // IF TOMORROW
cmb_jam_pesan.setSelectedItem("08");
} else { // IF TODAY
int jammain = Integer.parseInt(new
SimpleDateFormat("HH").format(new Date())) + 1;
cmb_jam_pesan.setSelectedItem(String.valueOf(jammain));
}
}
}
}

private void btn_cariActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabel();
String strKey = "";
if (txt_cari_pesanan.equals(strKey)) {
setIsiTabel();
} else if (cmb_booking.getSelectedItem().toString().equals("No Servis")) {
strKey = "s.no_service";
} else if (cmb_booking.getSelectedItem().toString().equals("nm_pelanggan")) {
strKey = "c.nm_pelanggan";
} else if (cmb_booking.getSelectedItem().toString().equals("No Plat")) {
strKey = "s.no_plat";
} else {
strKey = "s.area_service";
}

try {
sql = "SELECT s.no_service AS no, "
+ "s.*,c.*,"
+ "(SELECT GROUP_CONCAT(CONCAT(p.id_paket,' | ',p.jenis_paket,' |
',p.biaya) SEPARATOR ' - ') AS srv FROM service_detil d, paket_service p WHERE
d.no_service=no AND d.id_paket=p.id_paket) AS paket "
+ "FROM service s, pelanggan c "
+ "WHERE s.id_pelanggan = c.id_pelanggan "
+ strKey + " LIKE '%" + txt_cari_pesanan.getText() + "%'"
+ "ORDER BY s.no_service DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no");
data[1] = res.getString("tgl_transaksi");
data[2] = res.getString("nm_pelanggan");
data[3] = res.getString("no_plat");
data[4] = res.getString("area_service");
data[5] = res.getString("tgl_service");
data[6] = res.getString("jam_service");
data[7] = res.getString("paket");
data[8] = res.getString("total_biaya");
data[9] = res.getString("uang_muka");
data[10] = res.getString("status");
data[11] = res.getString("keterangan_pembayaran");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, error);
}
}

private void btn_cek_areaActionPerformed(java.awt.event.ActionEvent evt) {


//validasi tanggal tidak boleh lebih dari satu hari
int tanggal_sekarang = Integer.valueOf(new
SimpleDateFormat("dd").format(new Date()));
int tanggal_max = tanggal_sekarang + 1;
int tanggal_service = Integer.valueOf(new
SimpleDateFormat("dd").format(dc_tanggal_pesan.getDate()));
if (tanggal_service > tanggal_max) {
JOptionPane.showMessageDialog(null, "Maaf, tanggal servis tidak boleh
lebih dari satu hari dari tanggal sekarang", "Peringatan",
JOptionPane.WARNING_MESSAGE);
return;
}

//validasi jam tidak kurang dari sama dengan jam sekarang


int jamsekarang = Integer.parseInt(new SimpleDateFormat("HH").format(new
Date()));
if (tanggal_sekarang == Integer.valueOf(tanggal_service)) {
if (Integer.parseInt(cmb_jam_pesan.getSelectedItem().toString()) <=
jamsekarang) {
JOptionPane.showMessageDialog(null, "Maaf, jam servis tidak boleh
kurang dari jam sekarang", "Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();

// CARI NO PLAT MOBIL YANG SUDAH SERVIS DIJAM DAN TANGGAL YG


SAMA
ResultSet cari_plat_service = stat.executeQuery("SELECT * FROM service "
+ "WHERE jam_service='" +
cmb_jam_pesan.getSelectedItem().toString() + ":00:00'"
+ "AND tgl_service='" + new SimpleDateFormat("yyyy-MM-
dd").format(dc_tanggal_pesan.getDate()) + "' "
+ "AND no_plat='" + cmb_plat.getSelectedItem().toString().split("
")[0] + "'"
+ "AND status!='Lunas' ");
if (cari_plat_service.next()) {
JOptionPane.showMessageDialog(null, "Maaf, no plat mobil anda sudah
servis pada jam " + cmb_jam_pesan.getSelectedItem().toString() + ":00:00 tanggal
" + new SimpleDateFormat("dd MMMMM yyyy").format(dc_tanggal_pesan.getDate())
+ " di area servis " + cari_plat_service.getString("area_service"));
return;
}
cari_plat_service.close();
// cek penuh servis
String penuh = null;
sql = "SELECT * FROM service "
+ "WHERE tgl_service= '" + new SimpleDateFormat("yyyy-MM-
dd").format(dc_tanggal_pesan.getDate()) + "' "
+ "AND area_service='" + cmb_area.getSelectedItem().toString() + "'
"
+ "AND jam_service = '" +
cmb_jam_pesan.getSelectedItem().toString() + ":00:00' "
+ " AND status!='Lunas' ";
res = stat.executeQuery(sql);
if (res.next()) {
penuh = res.getString("no_service");
}

if (penuh == null) {
cmb_area.setEnabled(false);
cmb_plat.setEnabled(false);
dc_tanggal_pesan.setEnabled(false);
cmb_jam_pesan.setEnabled(false);
btn_cek_area.setEnabled(false);
btn_cari_paket.setEnabled(true);
} else {
JOptionPane.showMessageDialog(null, "Booking penuh, silakan pilih
area/tanggal/jam yang lain!", "Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.println(error);
}

private void btn_ubahActionPerformed(java.awt.event.ActionEvent evt) {


//validasi tanggal tidak boleh lebih dari satu hari
int tanggal_sekarang = Integer.valueOf(new
SimpleDateFormat("dd").format(new Date()));
int tanggal_max = tanggal_sekarang + 1;
int tanggal_service = Integer.valueOf(new
SimpleDateFormat("dd").format(dc_tanggal_pesan.getDate()));
if (tanggal_service > tanggal_max) {
JOptionPane.showMessageDialog(null, "Maaf, tanggal servis tidak boleh
lebih dari satu hari dari tanggal sekarang", "Peringatan",
JOptionPane.WARNING_MESSAGE);
return;
}

//validasi jam tidak kurang dari sama dengan jam sekarang


int jamsekarang = Integer.parseInt(new SimpleDateFormat("HH").format(new
Date()));
if (tanggal_sekarang == Integer.valueOf(tanggal_service)) {
if (Integer.parseInt(cmb_jam_pesan.getSelectedItem().toString()) <=
jamsekarang) {
JOptionPane.showMessageDialog(null, "Maaf, jam servis tidak boleh
kurang dari jam sekarang", "Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}
}

String status = "";


if (rb_belum_konfirmasi.isSelected()) {
status = "Belum Konfirmasi";
} else {
status = "Konfirmasi";
}

try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();

String penuh = null;


sql = "SELECT * FROM service "
+ "WHERE tgl_service= '" + new SimpleDateFormat("yyyy-MM-
dd").format(dc_tanggal_pesan.getDate()) + "' "
+ "AND area_service='" + cmb_area.getSelectedItem().toString() + "'
"
+ "AND jam_service = '" +
cmb_jam_pesan.getSelectedItem().toString() + ":00:00' "
+ " AND no_service!='" + txt_no_service.getText() + "' "
+ " AND status!='Lunas' ";
res = stat.executeQuery(sql);
if (res.next()) {
penuh = res.getString("no_service");
}
res.close();

if (penuh != null) {
JOptionPane.showMessageDialog(null, "Booking penuh, silakan pilih
area/tanggal/jam yang lain!", "Peringatan", JOptionPane.WARNING_MESSAGE);
return;
}

sql = "UPDATE service SET tgl_service= '" + new SimpleDateFormat("yyyy-


MM-dd").format(dc_tanggal_pesan.getDate()) + "', "
+ "jam_service='" + cmb_jam_pesan.getSelectedItem().toString() +
":00', "
+ "jam_akhir='" + cmb_jam_pesan.getSelectedItem().toString() +
":59', "
+ "uang_muka='" + txt_uang_muka.getText() + "', "
+ "status='" + status + "', "
+ "keterangan_pembayaran='" + txt_ket_bayar.getText() + "' "
+ "WHERE no_service='" + txt_no_service.getText() + "'";
int sukses = stat.executeUpdate(sql);
if (sukses == 1) {
JOptionPane.showMessageDialog(null, "Data diubah");

hapusTabeldetil();
hapusTabel();
setIsiTabel();
kosongform();
awal();
autonumber();
}
} catch (SQLException error) {
System.err.print(error);
JOptionPane.showMessageDialog(null, "Gagal diubah" + error, "Peringatan",
JOptionPane.WARNING_MESSAGE);
}
}
private void btn_cetakActionPerformed(java.awt.event.ActionEvent evt) {
try {
File file = new File("./src/laporan/Cetak_Servis.jrxml");
jasperDesign = JRXmlLoader.load(file);
param.put("no_servis", txt_no_service.getText());
param.put("nm_user",nm_user);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, param,
objkoneksi.open_a_Connection());
JOptionPane.showMessageDialog(null, " Data telah di print '" +
txt_no_service.getText() + "'");
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException | SQLException error) {
JOptionPane.showMessageDialog(null, "Gagal mencetak", "Peringatan",
JOptionPane.WARNING_MESSAGE);
System.out.println(error);
}
}

private void tabel_pesananMouseClicked(java.awt.event.MouseEvent evt) {


if (evt.getClickCount() == 2) {
row = tabel_pesanan.getSelectedRow();
hapusTabeldetil();
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM service s, service_detil d, paket_service p,
pelanggan n, mobil m "
+ "WHERE s.no_service = d.no_service "
+ "AND d.id_paket=p.id_paket "
+ "AND s.id_pelanggan=n.id_pelanggan "
+ "AND m.plat_no = s.no_plat "
+ "AND s.no_service='" + tblModel.getValueAt(row, 0).toString() +
"'"
+ "AND s.no_plat='" + tblModel.getValueAt(row, 3).toString() + "'
";
res = stat.executeQuery(sql);
while (res.next()) {
txt_no_service.setText(res.getString("no_service"));

dc_tgl_transaksi.setDate(java.sql.Date.valueOf(res.getString("tgl_transaksi").split("
")[0]));
txt_id_pelanggan.setText(res.getString("id_pelanggan"));
txt_nm_lengkap.setText(res.getString("nm_pelanggan"));
txt_merk_mobil.setText(res.getString("merk"));
cmb_plat.addItem(res.getString("no_plat") + " " +
res.getString("merk"));
cmb_area.setSelectedItem(res.getString("area_service"));

dc_tanggal_pesan.setDate(java.sql.Date.valueOf(res.getString("tgl_service")));

cmb_jam_pesan.setSelectedItem(res.getString("jam_service").split(":")[0]);

//tambah data ke dalam tabel detil


datadetil[0] = res.getString("id_paket");
datadetil[1] = res.getString("keterangan");
datadetil[2] = res.getString("biaya");
tblModeldetil.insertRow(0, datadetil);

txt_uang_muka.setText(res.getString("uang_muka"));
txt_total_biaya.setText(res.getString("total_biaya"));
if (tblModel.getValueAt(row, 10).toString().equals("Belum Konfirmasi"))
{
rb_belum_konfirmasi.setSelected(true);
btn_batal_service.setEnabled(true);
} else {
rb_konfirmasi.setSelected(true);
}
txt_ket_bayar.setText(res.getString("keterangan_pembayaran"));
rb_belum_konfirmasi.setEnabled(true);
rb_konfirmasi.setEnabled(true);
cmb_jam_pesan.setEnabled(true);
dc_tanggal_pesan.setEnabled(true);
txt_uang_muka.setEnabled(true);
txt_ket_bayar.setEnabled(true);
btn_tambah_service.setEnabled(false);
btn_sisa.setEnabled(true);
btn_simpan.setEnabled(false);
btn_ubah.setEnabled(true);
btn_cetak.setEnabled(true);
btn_batal.setEnabled(true);
tabpane_form.setSelectedIndex(0);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print("tampil ubah: " + error);
}
}
}

private void btn_hapus_paketActionPerformed(java.awt.event.ActionEvent evt) {


txt_id_paket.setText("");
txt_jenis_paket.setText("");
txt_harga_paket.setText("");
btn_cari_paket.setEnabled(true);
btn_tambah_paket.setEnabled(false);
hapusTabeldetil();
}

private void cmb_platItemStateChanged(java.awt.event.ItemEvent evt) {


if (cmb_plat.getSelectedIndex() != -1) {
txt_merk_mobil.setText(cmb_plat.getSelectedItem().toString().split(" ",
2)[1]);
}
}

private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) {


hapusTabeldetil();
hapusTabel();
setIsiTabel();
kosongform();
awal();
autonumber();
}
private void btn_sisaActionPerformed(java.awt.event.ActionEvent evt) {
txt_sisa.setText(String.valueOf(Integer.parseInt(txt_total_biaya.getText()) -
Integer.parseInt(txt_uang_muka.getText())));
}

private void cmb_bookingActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
}

private void awal() {


cmb_area.setEnabled(false);
cmb_plat.setEnabled(false);
dc_tanggal_pesan.setEnabled(false);
cmb_jam_pesan.setEnabled(false);
txt_uang_muka.setEnabled(false);
txt_total_biaya.setEnabled(false);
bgstatus.clearSelection();
rb_belum_konfirmasi.setEnabled(false);
rb_konfirmasi.setEnabled(false);
dc_tgl_transaksi.setDate(new Date());
dc_tanggal_pesan.setDate(new Date());
txt_ket_bayar.setEnabled(false);
btn_tambah_service.setEnabled(true);
btn_cari_pelanggan.setEnabled(false);
btn_cek_area.setEnabled(false);
btn_cari_paket.setEnabled(false);
btn_simpan.setEnabled(false);
btn_ubah.setEnabled(false);
btn_cetak.setEnabled(false);
btn_batal.setEnabled(false);
btn_batal_service.setEnabled(false);
btn_tambah_paket.setEnabled(false);
btn_hapus_paket.setEnabled(false);
btn_hitung_total.setEnabled(false);
btn_sisa.setEnabled(false);
row = 0;
tabpane_form.setSelectedIndex(1);
}

private void kosongform() {


txt_no_service.setText("");
dc_tgl_transaksi.setDate(new Date());
txt_id_pelanggan.setText("");
txt_nm_lengkap.setText("");
txt_merk_mobil.setText("");
cmb_plat.removeAllItems();
cmb_area.setSelectedIndex(0);
dc_tanggal_pesan.setDate(null);
txt_id_paket.setText("");
txt_sisa.setText("");
txt_jenis_paket.setText("");
txt_harga_paket.setText("");
txt_uang_muka.setText("");
txt_total_biaya.setText("");
bgstatus.clearSelection();
txt_ket_bayar.setText("");
}

private void plat_no() {


cmb_plat.removeAllItems();
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT * FROM mobil WHERE id_pelanggan = '" +
txt_id_pelanggan.getText() + "'";
res = stat.executeQuery(sql);
while (res.next()) {
cmb_plat.addItem(res.getString("plat_no") + " " +
res.getString("merk"));
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.out.println(error);
}
}

// Variables declaration - do not modify


private javax.swing.ButtonGroup bgstatus;
private javax.swing.JButton btn_batal;
private javax.swing.JButton btn_batal_service;
private javax.swing.JButton btn_cari;
private javax.swing.JButton btn_cari_paket;
private javax.swing.JButton btn_cari_pelanggan;
private javax.swing.JButton btn_cek_area;
private javax.swing.JButton btn_cetak;
private javax.swing.JButton btn_hapus_paket;
private javax.swing.JButton btn_hitung_total;
private javax.swing.JButton btn_keluar;
private javax.swing.JButton btn_simpan;
private javax.swing.JButton btn_sisa;
private javax.swing.JButton btn_tambah_paket;
private javax.swing.JButton btn_tambah_service;
private javax.swing.JButton btn_ubah;
private javax.swing.JComboBox cmb_area;
private javax.swing.JComboBox cmb_booking;
private javax.swing.JComboBox cmb_jam_pesan;
private javax.swing.JComboBox cmb_menit_pesan;
private javax.swing.JComboBox cmb_plat;
private com.toedter.calendar.JDateChooser dc_tanggal_pesan;
private com.toedter.calendar.JDateChooser dc_tgl_transaksi;
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 jLabel19;
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 jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lbl_sesi_user;
private javax.swing.JRadioButton rb_belum_konfirmasi;
private javax.swing.JRadioButton rb_konfirmasi;
private javax.swing.JTable tabel_detil;
private javax.swing.JTable tabel_pesanan;
private javax.swing.JTabbedPane tabpane_form;
private javax.swing.JTextField txt_cari_pesanan;
private javax.swing.JTextField txt_harga_paket;
private javax.swing.JTextField txt_id_paket;
private javax.swing.JTextField txt_id_pelanggan;
private javax.swing.JTextField txt_jenis_paket;
private javax.swing.JTextField txt_ket_bayar;
private javax.swing.JTextField txt_merk_mobil;
private javax.swing.JTextField txt_nm_lengkap;
private javax.swing.JTextField txt_no_service;
private javax.swing.JTextField txt_sisa;
private javax.swing.JTextField txt_total_biaya;
private javax.swing.JTextField txt_uang_muka;
// End of variables declaration
public void autonumber() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT RIGHT(no_service,4) as kd FROM service";
res = stat.executeQuery(sql);
if (res.first() == false) {
txt_no_service.setText("SRV0001");
} else {
res.last();
int no = res.getInt(1) + 1;
String cno = String.valueOf(no);
int pjg_cno = cno.length();
for (int i = 0; i < 4 - pjg_cno; i++) {
cno = "0" + cno;
}
txt_no_service.setText("SRV" + cno);
}
} catch (SQLException error) {
System.out.println(error);
}
}

//"No Service", "Tanggal Transaksi", "Pelanggan", "No Plat", "Area Pesan",


"Tanggal Service", "Jam Service", "Service Paket", "Total Biaya", "Uang Muka",
"Status", "Keterangan"
public void setIsiTabel() {
try {
con = objkoneksi.open_a_Connection();
stat = con.createStatement();
sql = "SELECT s.no_service AS no, "
+ "s.*,c.*,"
+ "(SELECT GROUP_CONCAT(CONCAT(p.id_paket,' | ',p.jenis_paket,' |
',p.biaya) SEPARATOR ' - ') AS srv FROM service_detil d, paket_service p WHERE
d.no_service=no AND d.id_paket=p.id_paket) AS paket "
+ "FROM service s, pelanggan c "
+ "WHERE s.id_pelanggan = c.id_pelanggan AND status<>'Lunas' "
+ "ORDER BY s.no_service DESC";
res = stat.executeQuery(sql);
while (res.next()) {
data[0] = res.getString("no");
data[1] = res.getString("tgl_transaksi");
data[2] = res.getString("nm_pelanggan");
data[3] = res.getString("no_plat");
data[4] = res.getString("area_service");
data[5] = res.getString("tgl_service");
data[6] = res.getString("jam_service");
data[7] = res.getString("paket");
data[8] = res.getString("total_biaya");
data[9] = res.getString("uang_muka");
data[10] = res.getString("status");
data[11] = res.getString("keterangan_pembayaran");
tblModel.addRow(data);
}
res.close();
stat.close();
con.close();
} catch (SQLException error) {
System.err.print(error);
}
}

public void hapusTabel() {


int rowCount = tabel_pesanan.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModel.removeRow(0);
}
}

private void Tabel(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModel = getDefaultTableModel();

private javax.swing.table.DefaultTableModel getDefaultTableModel() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"No Servis", "Tanggal Transaksi", "Pelanggan", "No Plat",
"Area Pesan", "Tanggal Servis", "Jam Servis", "Servis Paket", "Total Biaya", "Uang
Muka", "Status", "Keterangan"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false, false, false, false, false, false, false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

//tabel detil
public void hapusTabeldetil() {
int rowCount = tabel_detil.getRowCount();
for (int i = 0; i < rowCount; i++) {
tblModeldetil.removeRow(0);
}
}

private void Tabeldetil(javax.swing.JTable tb, int lebar[]) {


tb.setAutoResizeMode(tb.AUTO_RESIZE_OFF);
int kolom = tb.getColumnCount();
for (int i = 0; i < kolom; i++) {
javax.swing.table.TableColumn tbc = tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel tblModeldetil =
getDefaultTableModeldetil();

private javax.swing.table.DefaultTableModel getDefaultTableModeldetil() {


return new javax.swing.table.DefaultTableModel(
new Object[][]{},
new String[]{"Id Paket", "Keterangan", "Harga"}
){
boolean[] canEdit = new boolean[]{
false, false, false
};

public boolean isCellEditable(int rowIndex, int columnIndex) {


return canEdit[columnIndex];
}
};
}

// ^^ POPUP
public void setDataPopup(String[] dataPopup) {
this.dataPopup = dataPopup;
}

public String[] getDataPopup() {


return dataPopup;
}

// VALIDASI
private void Validasi() {
txt_uang_muka.setDocument(new Validasi(11, "0123456789"));
}
}

Package Fungsi
1. DateTime.java
package fungsi;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateTime {


public String showTimeNow() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String hasil = sdf.format(cal.getTime());
return hasil;
}
public String showDateNow() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEEEE dd MMMMM
yyyy");
String hasil = sdf.format(cal.getTime());
return hasil;
}
}
2. Sesi_User.java

package fungsi;

public class Sesi_User {


public static String username;
private static String status;

public static String GetUser_Login(){


return username ;
}
public static void setUser_Login( String userlogin){
Sesi_User.username = userlogin;
}
}
3. Validasi.java
package fungsi;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class Validasi extends PlainDocument{


public final int limit;
public String Chars;
public Validasi(int limit,String Char) {
this.limit = limit;
this.Chars = Char;
}

public void masukinString(int offset, String str, AttributeSet attr) throws


BadLocationException {
if (str == null) {
return;
}

for (int i = 0; i < str.length(); i++) {


if (Chars.indexOf(str.valueOf(str.charAt(i))) == -1) {
return;
}
}
super.insertString(offset, str, attr);
}

@Override
public void insertString(int offset, String str, AttributeSet attr) throws
BadLocationException {
if (str == null) {
return;
}
if ((getLength() + str.length()) <= limit) {
masukinString(offset, str, attr);
}
}

Package Koneksi
1. Connect_sms.java
package koneksi;
import booking_services.Menu;
import java.awt.HeadlessException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.StringTokenizer;
import java.util.TooManyListenersException;
import java.util.regex.Pattern;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;

public class Connect_Sms implements SerialPortEventListener {

Menu menu = null;

public Connect_Sms(Menu menu) {


this.menu = menu;
}

// CARI PORT SMS DI KOMPUTER


public boolean status_port = false;

public class cari_port_sms_gateway extends SwingWorker<String, Void>


{
@Override
public String doInBackground() throws Exception {
menu.loading.setIndeterminate(true);
menu.loading.setStringPainted(true);
menu.loading.setString("searching port sms gateway...");
menu.cb_port_sms.removeAllItems();
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier)
portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
menu.cb_port_sms.addItem(portId.getName());
}
}
return null;
}

@Override
public void done() {
menu.loading.setIndeterminate(false);
menu.loading.setStringPainted(true);
menu.loading.setString("running application...");
status_port = true;
menu.cb_port_sms.setEnabled(true);
menu.btn_on_sms.setEnabled(true);
menu.btn_off_sms.setEnabled(false);
}
}

String Baud = "2400";


String DataBits = "5";
String Parity = "Even";
String Flow = "Xoff/Xon";
String Stop = "1";

public class open_port_sms_gateway extends SwingWorker<String, Void>


{
@Override
public String doInBackground() throws Exception {
menu.loading.setIndeterminate(true);
menu.loading.setStringPainted(true);
menu.loading.setString("connecting port sms
"+menu.cb_port_sms.getSelectedItem().toString()+" gateway...");
portName = menu.cb_port_sms.getSelectedItem().toString();
config =
menu.cb_port_sms.getSelectedItem().toString()+"~"+Baud+"~"+DataBits+
"~"+Parity+"~"+Flow+"~"+Stop;
if(status == 0){
setTerminal();
}
return null;
}

@Override
public void done(){
menu.loading.setIndeterminate(false);
menu.loading.setStringPainted(true);
menu.loading.setString("running application...");
}
}
public void closePortSMS() {
try {
port.close();
status = 0;
menu.btn_on_sms.setEnabled(true);
menu.cb_port_sms.setEnabled(true);
System.out.println("Port SMS berhasil diputuskan");
menu.panel_status.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/images/icon_status_off.png
")));
menu.loading.setString("");
JOptionPane.showMessageDialog(null, "Port SMS berhasil
diputuskan");
} catch (HeadlessException error) {
System.out.println(error);
}
}

// =======================//
// ====PROSES KIRIM SMS===//
// =======================//
public void kirim_sms(String no_hp, String isi_sms) {
if (status == 0) {
System.out.println("SMS Gateway belum aktif");
return;
}
System.err.println(isi_sms);
dapatNotlp = no_hp;
pesan = isi_sms;
try {
String pesanPDUKirim = PduKirimSms(no_hp.trim(), isi_sms.trim());
System.out.println ("Pesan PDU kirim : "+pesanPDUKirim);
kirimAT("AT+CMGS=" +(pesanPDUKirim.length() / 2) + "\15", 500);
kirimAT("00" + pesanPDUKirim, 2500);
kirimAT("\032", 100);
System.out.println("nomor telepon : "+no_hp+" | pesan :
"+isi_sms);
Thread.currentThread().sleep(10000); // 10000
}catch (InterruptedException error) {
System.out.println(error);
}
}

private static StringBuffer pesanPDUKirim = null;


private static String PduPesan = null;
private static int panjangNotlpTujuan = 0;
private static int panjangPesanKirim = 0;

private static String PduKirimSms(String dapatNotlp, String pesan) {


pesanPDUKirim = new StringBuffer(320);
pesanPDUKirim.append("11");
pesanPDUKirim.append("00");
panjangNotlpTujuan = dapatNotlp.length();
pesanPDUKirim.append(rubahKeHexa(panjangNotlpTujuan));
pesanPDUKirim.append("91");
if ((dapatNotlp.length() % 2) == 1) {
dapatNotlp = balikKarakter(dapatNotlp + "F");
} else {
dapatNotlp = balikKarakter(dapatNotlp);
}
pesanPDUKirim.append(dapatNotlp);
pesanPDUKirim.append("00");
pesanPDUKirim.append("00");
pesanPDUKirim.append("AA");
panjangPesanKirim = pesan.length();
PduPesan = tujuhKeDelapanBit(pesan);
pesanPDUKirim.append(rubahKeHexa(panjangPesanKirim));
pesanPDUKirim.append(PduPesan);
return new String(pesanPDUKirim);
}

private void kirimAT(String atCmd, int delay) {


Boolean tungguDelay = new Boolean(true);
boolean getDelay = false;
synchronized (tungguDelay) {
try {
output.write((atCmd).getBytes());
output.flush();
} catch (IOException e) {
System.out.println(e.getMessage());
}
try {
tungguDelay.wait(delay);
} catch (InterruptedException ie) {
System.out.println(ie.getMessage());
getDelay = true;
}
}
}

//VOID PROSES TERIMA SMS//


private void prosesTerimaSms(int Index, String Pdu) {
try {
PduTerimaSms(Pdu);
} catch (Exception error) {
System.out.println(error);
}
kirimAT("AT+CMGD=" + Index + "\15", 1250);
}

private String infoSmsc = null;


private String panjangNotlp = null;
private String Notlp = null;
private String panjangPesan = null;
private String pesanPDU = null;
private int nilaiSmsc = 0;
private int nomorSmsc = 0;
private int nilaiPanjangNotlp = 0;
private int nilaiNotlp = 0;
private int nilaiPanjangPesan = 0;

// FUNCTION SMS //
String kata = "";
String config = "";
int i = 0;
public int status = 0;
private String dapatNotlp;
private String pesan;

private void PduTerimaSms(String smspdu) {


int i = 0;
try {
infoSmsc = smspdu.substring(i, 2);
System.out.println ("infoSmsc : "+infoSmsc);
nilaiSmsc = Integer.parseInt(infoSmsc, 16);
System.out.println ("nilaiSmsc : "+nilaiSmsc);
i = i + 4;
nomorSmsc = i + (nilaiSmsc * 2) - 2;
System.out.println ("nomorSmsc : "+nomorSmsc);
i = nomorSmsc + 2;
panjangNotlp = smspdu.substring(i, i + 2);
nilaiPanjangNotlp = Integer.parseInt(panjangNotlp, 16);
System.out.println ("panjangNoTlp : "+panjangNotlp);
System.out.println ("nilaiPanjangNoTlp : "+nilaiPanjangNotlp);
i = i + 4;
nilaiNotlp = i + nilaiPanjangNotlp + nilaiPanjangNotlp % 2;
System.out.println ("nilaiNoTlp : "+nilaiNotlp);
Notlp = smspdu.substring(i, nilaiNotlp);
dapatNotlp = balikKarakter(Notlp);
i = nilaiNotlp;
System.out.println ("NoTlp : "+Notlp);
System.out.println ("dapatNotlp : "+dapatNotlp);
i = i + 18;
panjangPesan = smspdu.substring(i, i + 2);
nilaiPanjangPesan = Integer.parseInt(panjangPesan, 16);
i = i + 2;
System.out.println ("PanjangPesan : "+panjangPesan);
System.out.println ("nilaiPanjangPesan : "+nilaiPanjangPesan);
pesanPDU = smspdu.substring(i, smspdu.length());
pesan = delapanKeTujuhBit(pesanPDU, nilaiPanjangPesan);
System.out.println ("pesanPDU : "+pesanPDU);
System.out.println ("pesan : "+pesan);
String dapetPesan = pesan.toLowerCase();
System.out.println ("dapetPesan : "+dapetPesan);
if (dapatNotlp.endsWith("F") || dapatNotlp.endsWith("f")) {
dapatNotlp = dapatNotlp.substring(0, dapatNotlp.length() - 1);
}
// KIRIM VIA SMS
menu.terima_sms_pelanggan(dapatNotlp,dapetPesan);

}catch (NumberFormatException error) {


System.out.println(error);
}
}

private String[] hasil;


private int Index;
private int panjangPDU;
private int PDU = 0;
private String respons;
private StringTokenizer st;

private void terimaAT(String buffer) {


st = new StringTokenizer(buffer, "\r\n");
while (st.hasMoreTokens()) {
respons = st.nextToken();
System.out.println(respons);
cek_pengiriman_gagal();
try {
if (respons.startsWith("RING")) {
kirimAT("ATH0" + "\15", 100);
} else if (respons.startsWith("+CMTI:")) {
Pattern pattern = Pattern.compile(",");
hasil = pattern.split(respons.trim());
Index = Integer.parseInt(hasil[1].trim());
kirimAT("AT+CMGR=" + Index + "\15", 1250);
} else if (respons.startsWith("+CMGR:")) {
PDU = 1;
} else if (respons.startsWith("+CMGL")) {
Pattern pattern = Pattern.compile(":");
hasil = pattern.split(respons.trim());
pattern = Pattern.compile(",");
hasil = pattern.split(hasil[1].trim());
Index = Integer.parseInt(hasil[0].trim());
PDU = 1;
} else if (PDU == 1) {
prosesTerimaSms(Index, respons.trim());
PDU = 0;
}
} catch (Exception error) {
System.out.print(error);
}
}
}

//VOID PERUBAH BAHASA SMS//


int bufferOffset = 0;
byte[] bacaBuffer = new byte[100000];
int n;

public void serialEvent(SerialPortEvent event) {


try {
while ((n = input.available()) > 0) {
n = input.read(bacaBuffer, bufferOffset, n);
bufferOffset += n;
if ((bacaBuffer[bufferOffset - 1] == 10) &&
(bacaBuffer[bufferOffset - 2] == 13)) {
String buffer = new String(bacaBuffer, 0, bufferOffset - 2);
terimaAT(buffer);
bufferOffset = 0;
}
}
} catch (IOException error) {
System.out.print(error);
}
}

private static int panjangKarakter = 0;


private static StringBuffer stringBuffer = null;

private static String balikKarakter(String karakter) {


panjangKarakter = karakter.length();
stringBuffer = new StringBuffer(panjangKarakter);
for (int i = 0; (i + 1) < panjangKarakter; i = i + 2) {
stringBuffer.append(karakter.charAt(i + 1));
stringBuffer.append(karakter.charAt(i));
}
return new String(stringBuffer);
}

private static char[] hexa;


private static char[] karakter;

private static String rubahKeHexa(int a) {


char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
'F'};
karakter = new char[2];
a = a & 255;
karakter[0] = hexa[a / 16];
karakter[1] = hexa[a % 16];
return new String(karakter);
}

private static char[] asciiToGsmMap;

private static String tujuhKeDelapanBit(String pesan) {


StringBuffer msg = new StringBuffer(pesan);
StringBuffer encmsg = new StringBuffer(2 * 160);
int bb = 0, bblen = 0, i;
char o = 0, c = 0, tc;
for (i = 0; i < msg.length() || bblen >= 8; i++) {
if (i < msg.length()) {
c = msg.charAt(i);
tc = asciiToGsmMap[c];
c = tc;
c &= ~(1 << 7);
bb |= (c << bblen);
bblen += 7;
}

while (bblen >= 8) {


o = (char) (bb & 255);
encmsg.append(rubahKeHexa(o));
bb >>>= 8;
bblen -= 8;
}
}
if ((bblen > 0)) {
encmsg.append(rubahKeHexa(bb));
}
return encmsg.toString();
}

private static char[] gsmToAsciiMap;

private static String delapanKeTujuhBit(String pesan, int msglen) {


int i, o, r = 0, rlen = 0, olen = 0, charcnt = 0;
StringBuffer msg = new StringBuffer(160);
int pesanlen = pesan.length();
String ostr;
char c;
for (i = 0; ((i + 1) < pesanlen) && (charcnt < msglen); i = i + 2) {
ostr = pesan.substring(i, i + 2);
o = Integer.parseInt(ostr, 16);
olen = 8;
o <<= rlen;
o |= r;
olen += rlen;
c = (char) (o & 127);
o >>>= 7;
olen -= 7;
r = o;
rlen = olen;

c = gsmToAsciiMap[c];
msg.append(c);
charcnt++;

if (rlen >= 7) {
c = (char) (r & 127);
r >>>= 7;
rlen -= 7;
msg.append(c);
charcnt++;
}
}
if ((rlen > 0) && (charcnt < msglen)) {
msg.append((char) r);
}
return msg.toString();
}

static {
final int lastindex = 255;
gsmToAsciiMap = new char[lastindex + 1];
asciiToGsmMap = new char[lastindex + 1];
int i;

for (i = 0; i <= lastindex; i++) {


gsmToAsciiMap[i] = asciiToGsmMap[i] = (char) i;
}
}

//SET-TERMINAL-PENGATURAN PORT//
SerialPort port = null;
Enumeration portList = null;
CommPortIdentifier portId = null;
InputStream input;
OutputStream output;
String portName = null; // Nama Port
int nilaiBaud = 19200; // Nilai Baud Rate
int nilaiData = SerialPort.DATABITS_8; // Nilai DATABITS
int nilaiStop = SerialPort.STOPBITS_1; // Nilai STOPBITS
int nilaiParity = SerialPort.PARITY_NONE; // Nilai PARITY
int nilaiFlow = SerialPort.FLOWCONTROL_NONE; // Nilai FLOWCONTROL

public void setTerminal() {


System.out.println("Server Sedang melakukan pencarian Port.....");
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier)
portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(portName)) {
try {
port = (SerialPort) portId.open("SMS", 5000);
System.out.println("Server berhasil membuka Port : " +
portName);
} catch (PortInUseException piue) {
System.out.println("Port : " + portName + " Sedang
digunakan");
System.out.println("Penyambungan ke Terminal Gagal
.........");
System.out.println("Terjadi kesalahan pada : " + piue);
}
}
}
}

try {
output = port.getOutputStream();
input = port.getInputStream();
} catch (IOException ioe) {
System.out.println("Gagal membuka Stream");
System.out.println("Terjadi kesalahan pada : " + ioe);
}
try {
port.setSerialPortParams(nilaiBaud, nilaiData, nilaiStop, nilaiParity);
port.setFlowControlMode(nilaiFlow);
port.notifyOnDataAvailable(true);
System.out.println("Server Melakukan Hubungan ke Port : " +
portName);
System.out.println("Server Berhasil Tehubung ke Port : " +
portName);
System.out.println("Server Sedang melakukan Pengaturan
Terminal");
System.out.println("PORT AND SMS SERVER READY");
kirimAT("AT" + "\15", 1250); // Apakah terminal telah siap
kirimAT("AT+CMGF=0" + "\15", 1250); // Menetapkan Format PDU
Mode
kirimAT("AT+CSCS=\"GSM\"" + "\15", 1250); // Menetapkan
Encoding
kirimAT("AT+CPMS=\"ME\"" + "\15", 1250); // Mendengarkan
pesan secara Otomatis
kirimAT("AT+CNMI=2,3,2,1,0" + "\15", 1250); // Mendengarkan
pesan secara Otomatis
kirimAT("AT+CMGL=0" + "\15", 1250); // Membaca pesan yang
belum dibaca yang ada di dalam Inbox
JOptionPane.showMessageDialog(null, "Berhasil menghubungkan
sms server");
menu.panel_status.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/icon_status_on.png"
)));
status++;
menu.cb_port_sms.setEnabled(false);
menu.btn_on_sms.setEnabled(false);
menu.btn_off_sms.setEnabled(true);
} catch (UnsupportedCommOperationException ucoe) {
System.out.println("Pengaturan Data Serial Port Gagal");
System.out.println("Kesalahan terjadi pada : " + ucoe);
}

try {
port.addEventListener(this);
} catch (TooManyListenersException tmle) {
System.out.println("Terjadi kesalahan pada : " + tmle);
}
}

public void cek_pengiriman_gagal() {


try {
if (respons.contains("+CMS ERROR")) {
System.out.println("Pesan Gagal Terkirim.....");
Thread.currentThread().sleep(100);
kirim_sms(dapatNotlp, pesan);
} else if (respons.equals("+CMGS: 0")) {
dapatNotlp = "";
pesan = "";
System.out.println("Pesan Sukses Terkirim.....");
}
} catch (InterruptedException error) {
System.out.println(error);
}
}
}
2. Koneksi_MySQL.java
package koneksi;
import java.sql.*;
import javax.swing.*;

public class Koneksi_MySQL {


public java.sql.Connection open_a_Connection()throws SQLException{
try {
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection connect =
DriverManager.getConnection("jdbc:mysql://localhost/db_service_mobil","ro
ot","");
return connect;
}catch (SQLException error){
JOptionPane.showMessageDialog(null,error);
System.out.println(error);
return null;
}catch (Exception error){
JOptionPane.showMessageDialog(null,error);
System.out.println(error);
return null;
}
}
}
Package Style

1. Desktop.java
package style;

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JDesktopPane;

public class Desktop extends JDesktopPane {

private Image image;

public Desktop() {
}

@Override
protected void paintComponent(Graphics g) {
try {
image = new
javax.swing.ImageIcon(getClass().getResource("/image/Menu.png")).getImage();

if (g != null) {
g.drawImage(image,
(this.getSize().width - image.getWidth(null)) / 2,
(this.getSize().height - image.getHeight(null)) / 2 - 30,
null);

}
} catch (NullPointerException npe) {
System.out.println("Can't find images !!");
}
}
}
2. PanelTransparan.java
package style;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class PanelTransparan extends JPanel{


private Color color;

public PanelTransparan() {
setOpaque(false);
color = new
Color(getBackground().getRed(),getBackground().getGreen(),getBackground().getBl
ue(),80);
}

@Override
public void setBackground(Color bg) {
super.setBackground(bg);
color = new
Color(getBackground().getRed(),getBackground().getGreen(),getBackground().getBl
ue(),80);
repaint();
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D graphic = (Graphics2D)g.create();
graphic.setColor(color);
graphic.fillRect(0, 0, getWidth(), getHeight());
graphic.dispose();
}
}

Anda mungkin juga menyukai