Database Penjualan Dengan Mysql by mns13273

VIEWS: 3,119 PAGES: 200

More Info
									                                                                                        1


Aplikasi Penjualan Voucher dan Pulsa Elektrik
Pada Perluasan Cabang CV Dian Mulya Menggunakan Java
J2SE, Netbean IDE 6.1 dan MySQL


Hasil penelitian

Diajukan oleh
Nama                 : Dwi Ary Bowo
No. Mahasiswa        : 50404216
Jurusan              : Teknik Informatika
Angkatan             : 2004


Telah disetujui oleh Dosen Pembimbing
Pada tanggal ………………………
Dosen Pembimbing,


(Prof. Dr. Bernardus E . F. Da Silva, MSc., DEA)


BAB I
PENDAHULUAN

1.1     Latar Belakang Masalah
Dewasa ini telepon selular sudah merupakan barang umum yang bagi sebagian orang
seakan-akan menjadi barang wajib untuk dimiliki, seiring dengan pertumbuhan
penggunaan telepon selular pertumbuhan penggunaan pulsa juga berbanding lurus
dengannya. Hal ini menunjukkan bahwa pulsa telepon selular sudah merupakan
kebutuhan pokok bagi pemilik telepon selular, yang bisa disejajarkan posisinya dengan
makanan.
Ini menimbulkan peluang usaha yang menjanjikan serta prospek yang panjang.
Berdasarkan fakta itulah CV Dian Mulya ingin membuat cabang dari gerai penjualan
pulsa yang ada dengan menambahkan beberapa gerai penjualan tambahan. Berdasarkan
pengalaman yang didapat dari gerai penjualan sebelumnya, masalah utama adalah pada
saat pembukuan yang masih dengan cara tradisional yaitu menggunakan buku. Dimana
pada saat konsumen melakukan transaksi pembelian pulsa elektrik, biasanya mereka
disodorkan buku dan diminta untuk mencatat nomor handphone dan besar pulsa yang
mereka inginkan. Setelah itu penjual atau karyawan akan menggunakan telepon
selularnya untuk mengirimkan pulsa dengan cara mengirim SMS ke provider yang
bersangkutan dengan format penulisan yang telah ditetapkan oleh provider tersebut.
                                                                                       2


Bertitik tolak dari kekurangan inilah penulis mencoba membuat sebuah “aplikasi
penjualan voucher dan pulsa elektrik pada perluasan cabang CV Dian Mulya
menggunakan Java J2SE, Netbeans IDE 6.0 dan MySQL”. Untuk membantu mengatasi
kekurangan pada transaksi penjualan dengan cara tradisional seperti pencatatan transaksi
yang masih dilakukan dengan cara tradisional yaitu penggunaan buku, pengetikan format
sms yang ditentukan provider dengan cara menulis manual pada telepon selular yaitu
dengan menggunakan metode penggunaan computer yang dihubungkan dengan telepon
selular menggunakan kabel data, dimana untuk melakukan transaksinya, karyawan atau
penjual hanya memasukkan data yang terdapat pada aplikasi penjualan pulsa elektrik
melalui computer dan setelah itu aplikasi secara otomatis yang akan mengirim SMS
kepada provider berupa kode format sesuai prosedur yang ditentukan provider.

1.2     Batasan Masalah
Dalam hal ini penulis membatasi masalah pada perancangan sistem yang menggunakan
UML (Unified Modelling Language), perancangan database, pembuatan aplikasi dan juga
uji coba. Dari segi perancangan database membahas tentang tabel, field-field dan juga
relational dari tabel-tabel yang digunakan. Dari segi pembuatan aplikasi membahas
tentang tampilan form yang dibuat seminimalis mungkin sehingga aplikasi dapat dengan
mudah digunakan pemakainya (user friendly).

1.3     Tujuan Penelitian
Tujuan dari penelitian ini adalah membangun sebuah aplikasi penjualan voucher dan
pulsa elektrik menggunakan komputer dan telepon selular yang dihubungkan melalui
media kabel data. Serta memberikan kemudahan bagi karyawan atau pengguna dalam
melakukan transaksi dimana pegawai tidak harus mengetik secara manual melalui telepon
selular atau menghafal kode format penulisan yang diajukan oleh provider. Pemberian
laporan penjualan dan absensi karyawan yang akurat kepada pemilik. Serta dapat
digunakan sebagai acuan untuk membuat usaha yang sama seperti CV Dian Mulya yaitu
membuat gerai penjualan voucer dan pulsa elektrik.

1.4     Metode Penelitian
Guna memperoleh bahan-bahan dan informasi yang dibutuhkan dalam perancangan,
dilakukan studi lapangan pada tempat-tempat penjualan voucher dan pulsa elektrik.
Selain itu penulis juga mencari artikel-artikel yang ada hubungannya dengan tema
penulisan ilmiah penulis. Untuk menunjang penelitian, dilakukan pula kajian kepustakaan
dengan mengumpulkan dan mempelajari berbagai referensi dari buku, web site dan
catatan-catatan kuliah mengenai perancangan basis data, pemrograman bahasa Java dan
MySQL 5 sehingga dapat dijadikan landasan untuk melakukan penelitian.

1.5    Sistematika Penulisan
Untuk lebih memudahkan pembaca dalam memahami isi penulisan akhir ini, maka
penulis membuat sistematika penulisan dalam lima bab, di mana bab yang satu dengan
yang lain saling berkaitan.
Bab I menguraikan tentang alasan pemilihan judul atau latar belakang masalah,
pembatasan masalah, perumusan masalah, tujuan penelitian serta manfaat dari penelitian.
Bab II membahas tentang konsep-konsep aplikasi layanan SMS, MySQL sebagai
                                                                                    3


perangkat lunak pembuat database, dan java sebagai perangkat lunak untuk membuat
aplikasi.
Bab III membahas tentang perancangan sistem, pembuatan aplikasi dan implementasi.
Bab IV menjelaskan tentang uji coba program, hasil dari ujicoba dan pembahasan.
Bab V merupakan bab penutup yang berisi kesimpulan masalah berdasarkan hasil
penelitian dan diakhiri dengan saran-saran dari penulis.
                                                                                         4


BAB II
LANDASAN TEORI


2.1     Perkembangan SMS (Short Message Service)
Dewasa ini teknologi Short Message Service (SMS) sangatlah diminati oleh semua
golongan masyarakat, baik muda atau tua, pria atau wanita, demikian juga untuk seluruh
tingkat ekonomi. Bahkan SMS sudah menjadi komoditi bisnis yang menguntungkan.
SMS secara umum dapat diartikan sebuah service atau layanan yang memungkinkan
dikirimkannya atau ditransmisikannya pesan teks pendek dari dan ke mobile phone, fax,
mesin, atau IP address. Disebut pesan teks pendek karena pesan yang dikirimkan hanya
berupa karakter teks dan tidak lebih dari 160 karakter. Pengiriman SMS menggunakan
saluran signalling, bukan saluran suara, sehingga kita dapat menerima SMS walaupun
kita sedang melakukan komunikasi suara.
Beberapa keunggulan penggunaan SMS, sehingga banyak diminati masyarakat :
1. Pesan dalam SMS pasti akan dikirim ke tujuan. Jika nomor tujuan tidak aktif atau
diluar service area, maka pesan akan disimpan di SMSC server dan akan dikirimkan
segera setelah nomor tujuan aktif kembali. Pesan juga akan tetap terkirim ke tujuan
walaupun nomor tujuan sedang sibuk.
2. Pesan SMS dapat dikirim ke banyak penerima sekaligus pada saat bersamaan.
3. Pesan SMS dapat dikirimkan ke berbagai jenis tujuan seperti e-mai, IP ataupun
aplikasi lain.
4. Dapat diintegrasikan dengan aplikasi content untuk berbagai macam keperluan seperti
registrasi membership, pemilihan award, bintang TV, iklan, kuis, games, votting,
chatting, reservasi, request informasi, sensus atau survey dan lain-lain tergantung dengan
kegunaan dan fungsi aplikasi content yang berhubungan dengan SMSC.
5. Harganya murah
Dalam perkembangannya, SMS mulai dikenalkan pada era teknologi wireless generasi ke
2 (2G). Di Eropa, SMS mulai diperkenalkan pada tahun 1991, pada saat mulai digunakan
GSM yang merupakan teknologi 2G yangdigunakan di negara-negara eropa.
Selanjutnya, SMS kemudian dikembangkan menjadi EMS (Enhanced Message Service),
dimana jumlah karakter yang dikirim melalui EMS dalam satu SMS menjadi lebih
                                                                                       5


banyak dan dapat digunakan untuk mengirim pesan berupa non-karakter (dapat berupa
gambar sederhana). Demikian juga pengiriman pesan yang lebih dari 160 karakter, akan
dapat dipecah menjadi beberapa buah dimana masing-masingnya terdiri dari tidak lebih
dari 160 karakter.
Misalnya pesan yang dikirim terdiri dari 200 karakter, maka pesan ini akan dipecah
menjadi 2 buah SMS (1 buah dengan 160 karakter dan 1 SMs dengan 40 karakter). Kedua
SMS ini akan dikirimkan menjadi 2 SMS terpisah dan di sisi penerima akan digabungkan
menjadi satu SMS lagi. Selain itu, EMS juga memungkinkan pengiriman data gambar
sederhana dan rekaman suara.
Kemudian saat mulai digunakannnya teknologi seperti GPRS, maka service pengiriman
pesanpun berkembang, tidak hanya sebatas teks saja, tapi juga bisa dalam bentuk gambar
dan suara (multimedia), service ini dikenal dengan nama MMS (Multimedia Message
Service). Dengan MMS user dapat mengirimkan pesan lebih hidup karen dapat berupa
gambar (statik dan bergerak), suara ataupun gabungan keduanya.


2.1.1   Arsitektur Jaringan SMS
Pada Gambar 2.1 menunjukkan salah satu contoh arsitektur jaringan GSM dengan SMS
center (SMSC) di dalamnya.




Gambar 2.1 Arsitektur Jaringan SMS
                                                                                      6


Dengan SMS, kita dapat mentransmisikan pesan singkat dari dan ke Mobile Subscriber
(MS). Pengiriman pesan sengkat ini dimungkinkan dengan adanya sebuah SMSC ( Short
message Service Center). Secara umum SMSC berfungsi menerima SMs yang dikirim,
emnyimpannya untuk sementara, dan mengirimkan SMS tersebut ke mobile subscriber
(MS) ataupun ESME tujuan.
External Short Message Entities (ESME) adalah device selain MS yang dapat berfungsi
untuk menerima atau mengirim SMS. Pada umumnya ESME dipakai untuk menciptakan
layanan yang lebih beragam kepada pelanggan ataupun untuk meningkatkan performance
jaringan telekomunikasi dari operator telekomunikasi wireless yang bersangkutan.
Bila sebuah SMS dikirimkan dari MS A ke MS B, maka SMS itu akan diteruskan oleh
BSS ke MSC dan kemudian ke SMSC. SMSC berfungsi mengirimkan SMS tersebut ke
MS B. Untuk keperluan ini, SMSC harus tahu bagaimana status subscriber (aktif atau
tidak aktif), dimana lokasi MS B berada. Informasi-informasi mengenai MS B ini didapat
dari HLR.
Jika misalnya MS B dalam keadaan aktif, maka SMSC akan mengirimkan SMS ke MS B
melalui MSC A, MSC B dan kemudian MS B. Bila misalnya MS B dan MS A adalah MS
dari 2 operator yang berbeda, maka pada saat pengiriman SMS dari A ke B, maka SMS
tersebut hanya akan melalui SMSC A, tidak singgah lagi di SMSC B.
Jika misalnya, MS B dalam keadaan tidak aktif, maka SMS tidak akan diforward dan
diteruskan ke MSB, tapi akan disimpan untuk sementara di SMSC pada kondisi ini,
SMSC A akan selalu berkomunikasi dengan HLR untuk mengetahui kondisi MS B. Bila
suatu saat SMSC mendapatkan informasidari HLR bahwa MS B aktif kembali, maka
SMS akan diteruskan ke MSC A, MSC B, dan MS B.
Gambar 2.2 menunjukkan alur skenario pengiriman SMS MO dari MS ke ESME (SMS
Originating).
                                                                                        7




 Gambar 2.2 Skenario SMS MO (Mobile Originating)


MS diaktifkan dan terdaftar ke networknya (1), setelah itu MS mengirimkan SMS ke
MSC (2). MSC berkomunikasi dengan VLR untuk memverifikasi bahwa pesan yang
dikirimkan sesuai dengan supplementary service yang ada dan MS tidak sedang dalam
keadaan diblok untuk mengirimkan SMS (3). MSC mengirimkan SMS ke SMSC dengan
menggunakan operasi forward short message (4). SMSC meneruskan SMS ke SME.
Secara optional, SMSC dapat juaga menerima acknowledgement bahwa SMS telah
diterima SME (5). SMSC memberitahukan MSC bahwa SMS telah dikirimkan ke SME.


2.2    Java
       Java adalah bahasa pemrograman serbaguna. Java dapat digunakan untuk
membuat suatu program sebagaimana Anda membuatnya dengan bahasa seperti Pascal
atau C++. Yang lebih menarik, Java juga mendukung sumber daya Internet yang saat ini
populer, yaitu World Wide Web atau yang sering disebut Web saja. Java juga mendukung
aplikasi client/server, baik dalam jaringan lokal (LAN) maupun jaringan berskala luas
(WAN).
                                                                                       8


2.2.1   Versi Awal
        Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan
Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus
dikembangkan pada versi selanjutnya:
1. java.lang: Peruntukan kelas elemen-elemen dasar.
2. java.io: Peruntukan kelas input dan output, termasuk penggunaan file.
3. java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas
penanggalan.
4. java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan
komputer lain menggunakan jaringan TCP/IP.
5. java.awt: Kelas dasar untuk aplikasi antar muka dengan pengguna (GUI)
6. java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada webbrowser.


2.2.2   Kelebihan dan Kekurangan Java
        Kelebihan:
1. Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform
/ sistem operasi komputer, sesuai dengan prinsip write once, run every where. Dengan
kelebihan ini pemrogram cukup menulis sebuah program java dan dikompilasi (diubah,
dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu
hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini
memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux
tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung
sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris.
2. OOP, singkatan dari Object Oriented Programming yang artinya semua aspek yang
terdapat di Java adalah objek. Java merupakan salah satu bahasa pemrograman berbasis
object murni. Semua tipe data diturunkan dari kelas dasar Object. Hal ini sangat
memudahkan programmer untuk mendesain, membuat, mengembangkan dan
mengalokasi kesalahan sebuah program dengan basis java secara cepat, tepat, mudah dan
terorganisir. Kelebihan ini menjadikan java sebagai salah satu bahasa pemograman
termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer
sekalipun.
                                                                                      9


3. Library Kelas Sangat Lengkap, Java terkenal dengan kelengkapan library (kumpulan
program program yang disertakan dalam pemrograman java) yang sangat memudahkan
dalam penggunaan oleh para programmer untuk membangun aplikasinya. Kelengkapan
library ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus
membuat library-library baru untuk melingkupi seluruh kebutuhan pembangunan
aplikasi.
4. Garbage Collection, memiliki fasilitas pengaturan penggunaan memori sehingga
programmer tidak perlu melakukan pengaturan memori secara langsung.
        Kekurangan:
1. Write once, debug everywhere. Ada beberapa hal yang tidak kompatibel antara
platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang
sampai sekarang tidak berfungsi pada Mac OS X.
2. Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari executable code
menjadi source code. Ini dimungkinkan karena executable Java merupakan bytecode
yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, method,
dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan
demikian, algoritma yang digunakan program akan lebih sulit disembunyikan.
3. Heavy memory usage. Penggunaan memori untuk program berbasis Java jauh lebih
besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih
spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi
pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin
murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin
desktop berumur lebih dari 4 tahun.


2.2.3   OOP Pada Java
OOP (Object Oriented Programming) yaitu proses pembuatan program / aplikasi dengan
cara menyusunnya dari beberapa object (komponen yang lebih kecil). Object atau
komponen itu sendiri juga bisa tersusun dari object yang lain. Pemrograman OOP
memiliki berbagai kelebihan dibandingkan dengan konsep pemrograman lain. Kelebihan
OOP antara lain kemampuan untuk mewariskan elemen program ke program lain
(inheritance), dapat menyembunyikan kerumitan program dengan encapsulation,
                                                                                          10


pembuatan beberapa fungsi dengan nama sama tapi memiliki parameter dan atribut yang
berbeda dengan overloading, pembutan fungsi baru yang menimpa fungsi lain dengan
overriding.
1. Atribut dan Method
Atribut merupakan aspek individual yang membedakan sebuah object dengan object
lainnya. Misalkan sebuah object Motor, maka atribut yang dimiliki motor adalah warna,
jumlah, roda, merek dan lain sebagainya. Dalam pembuatan object di java, atribut
didefinisikan menggunakan variable instance. Tipe-tipe atribut didefinisikan dalam class,
dan setiap instance yang dibuat dari class tersebut menyimpan atributnya masing-masing
di dalam variable instance.
Method merupakan kemampuan sebuah object untuk melaksanakan sesuatu. Dengan kata
lain, method merupakan fungsi (subroutine) yang didefinisikan di dalam class dan
beroperasi pada instance yang dibuat dari class tersebut.
2. Constructor
Constuctor merupakan method yang bernama sama dengan class-nya yang digunakan
untuk inisialisasi object. Sebuah class dapat memiliki banyak constructor dengan
overloading, yaitu membuat method yang bernama sama tetapi memiliki parameter dan
implementasi yang berbeda.
   Pada saat instance dari class dibuat, maka object yang terjadi adalah hasil inisialisasi
dari constructor. Apabila class memiliki lebih dari satu constructor maka constructor
yang bekerja adalah yang memiliki parameter yang sesuai dengan pembuatan instance.
3. Abstract dan Interface
Abstract
Suatu method dari suatu class dapat dibuat tanpa implementasi kode apapun. Method
seperti itu disebut method abstract dan untuk menggunakannya harus didefinisikan
dahulu pada turunan class tersebut. Suatu class yang memiliki method abstract maka
menjadi class abstract. Suatu class abstract tidak dapat digunakan untuk membuat objek.
Namun demikian suatu class abstract tetap dapat diturunkan.
                                                                                        11


InterfaceAdalah suatu abstraksi dari class. Interface hanya berisi daftar field dan method
tanpa detail kode. Suatu class yang mengimplementasikan suatu interface maka class
tersebut harus mendefinisikan method yang terdapat pada interface tersebut.
4. Penanganan Kesalahan Pada Java
Java menggunakan model exception dalam menangani kesalahan pada program. Oleh
karena pemeriksaan pada tahap kompilasi program Java sangat ketat, suatu method yang
berpotensi untuk membangkitkan kesalahan harus ditangani dengan struktur
try…catch…finally atau dengan menyatakan bahwa pada method tersebut berpotensi
menbangkitkan kesalahan.
Struktur dari blok try….catch….finally adalah sebagai berikut:
try
{
          ….statement yang berpeluang untuk terjadinya kesalahan….
}
catch(classexception pengenal)
{
          ….statement yang akan dikerjakan apabila kesalahan terjadi….
}
finally
{
          ….statement yang akan dikerjakan baik apabila kesalahan terjadi maupun tidak….
}
Jika dikehendaki untuk melakukan aksi yang berbeda untuk setiap tipe eksepsi yang
muncul, maka blok try…catch tersebut dapat ditulis sebagai berikut:
try
{
          ….statement yang berpeluang untuk terjadinya kesalahan….
}
          catch(classexception1 pengenal)
{
          ….statement yang akan dikerjakan apabila kesalahan 1 terjadi….
                                                                                       12


}
catch(classexception2 pengenal)
{
        ….statement yang akan dikerjakan baik apabila kesalahan 2 terjadi….
}
….


2.2.4   GUI (Graphical User Interface)
Class dapat digambarkan sebagai cetakan untuk membuat object dengan karakteristik
sesuai yang dimiliki oleh class tersebut. Class menyediakan kemampuan bagi object-
object yang dibangun dari class tersebut. Class dapat dipandang sebagai gambaran umum
dari sebuah object, sedangkan bentuk aktual object dalam java disebut instance.
Analoginya, andaikan Class sebagai gambar rancangan sebuah gedung, maka instance
adalah gedung yang telah dibangun berdasarkan rancangan tersebut. Jadi sebenarnya
tidak ada perbedaan antara Object dan Instance, hanya saja object merupakan definisi
umum sedangkan instance merupakan sebutan bagi object yang nyata terlihat. Keduanya
mengacu pada benda yang sama.
Dalam java, class dikelompokkan berdasarkan fungsi umumnya, misalkan untuk
membuat program berbasis GUI (Graphical User Interface), atau fungsi lainnya.
Kelompok class ini disebut class library. Pemrograman tidak perlu repot membuat class
library, karena development kit yang ada telah membuat library sedemikian rupa,
sehingga mudah digunakan. Misalnya library java.awt untuk memprograman GUI.
Dengan adanya program berbasis grafis ini, mengolah database akan menjadi lebih
mudah, disamping tampilannya lebih menarik. Beberapa bagian dasar GUI adalah:
1. JLabel
JLabel namaLabel = new JLabel(“label”);
Sama seperti namanya, class ini akan membuat suatu label pada sebuah window.
2. JTextField
JTextField namaText = new JTextField(jumlah_karakter_max);
JTextField adalah suatu class yang akan memudahkan kita dalam membentuk isian text
pada suatu frame.
                                                                                    13


3. JButton
JButton namaButton = new JButton(“label_pada_button”);
JButton adalah suatu class yang akan membantu kita membentuk objek tombol.
4. JFrame
JFrame sebenarnya adalah suatu class yang disediakan untuk memudahkan kita dalam
membuat suatu window.
5. JInternalFrame
Sama halnya dengan JFrame, JInternalFrame akan membantu kita dalam membuat
window. Bedanya JInternalFrame akan berada didalam suatu window lainnya, jadi tidak
dapat berdiri sendiri seperti JFrame.
6. JMenu
JMenu akan membuat objek menu bar pada sebuah frame.
7. ActionListener
ActionListener bukan merupakan suatu objek, melainkan sebuah class yang akan
menampung aksi-aksi dari sebuah objek (yang banyak dipakai disini adalah tombol).
Aksi-aksi itu akan ditampung dalam sebuah metode bernama ActionPerformed. Jadi bila
kita menggunakan ActionListener, maka kita harus menyertakan metode
ActionPerformed pada class tersebut.
8. Container
Container.setLayout(new GridLayout(jumlah_baris, jumlah_kolom));
Container akan membantu kita dalam mengatur penempatan objek seperti text, label,
ataupun tombol. Ada banyak cara yang disediakan untuk mengatur penempatan objek.
GridLayout akan membagi sebuah window menjadi beberapa baris dan kolom sesuai
yang kita masukkan pada saat setLayout. Dan penempatan objeknya dimulai dari kiri atas
lalu kekanan.
Empat hal utama untuk membangun program berbasis GUI menggunakan swing yaitu:
1.   Menciptakan dan konfigurasi component
Untuk menciptakan component GUI sama seperti membuat object lain dalam java,
dengan menjalankan constructor. Setiap component dapat dilihat karakteristiknya dalam
dokumentasi java.
2.   Menambahkan component pada container
                                                                                      14


Setiap component dalam java harus diletakkan di dalam container. Container dalam java
terdapat di java.awt.Container. Container yang sering digunakan yaitu JFrame dan
JDialog. Untuk program berbasis web, dapat menggunakan container Applet dalam class
java.applet.Applet.
Ketiga container tersebut merupakan top level-container, yaitu container dasar yang
menjadi tempat dasar bagi component dan container yang lain. Selain tiga di atas masih
ada beberapa container lain seperti JPanel.
3.    Mengatur tata letak component
Setelah meletakkan component dalam container, maka component dapat diatur ukuran
dan tata letaknya. Selain itu dapat juga diatur warna dan bentuknya. Untuk mengatur lay-
out, object yang digunakan yaitu LayoutManager.
4.    Menangani kejadian (event-handling) yang dihasilkan oleh component
Component seringkali mengalami kejadian seperti button diklik, frame digeser, dan lain
sebagainya. Kejadian merupakan hasil interaksi user dan program. Kejadian ini lebih
lanjut disebut dengan event. Agar program dapat merespon event, maka perlu adanya
event-listener.


2.3     MySQL
MySQL adalah suatu database server yang sangat terkenal didunia dan merupakan Open
Source SQL database(database SQL yang open source ). MySQL mendukung berbagai
platform, serta kecepatan aksesnya cukup bisa diandalkan. Selain itu, kemudahannya
dalam integrasi ke berbagai aplikasi juga membantu dalam mengembangkan sistem
aplikasi. Pemakai-pun tidak harus membayar untuk bisa menggunakannya, karena paket
program ini dapat digunakan secara bebas.


2.3.1   Sejarah MySQL
MySQL dikembangkan oleh sebuah perusahaan Swedia yang bernama MySQL AB, yang
pada saat itu bernama T.c.X DataKonsult AB, dimulai sejak tahun 1994-1995. Tujuan
mula-mula perusahaan tersebut membuat MySQL untuk mengembangkan aplikasi web
yang dimiliki kliennya.
                                                                                        15


Saat itu Michael Widenius atau”Monty”, pengembang satu-satunya MySQL di T.c.X,
memiliki aplikasi UNIREG dan rutin ISAM yang dibuat sendiri dan sedang mencari
interface (antarmuka) SQL untuk dijalankan pada MySQL. Mula-mula T.c.X
menggunakan mSQL atau mini SQL. Namun menurut Michael Widenius mSQL tidaklah
terlalu cepat dan fleksible. Bahkan versi pertamanya tidak memiliki index. Disebabkan
hal tersebut, ia mernutuskan untuk membuat sendiri mesin SQL yang interfacenya seperti
mSQL, tetapi memiliki kemampuan yang lebih dalam memenuhi kebutuhan
dibandingkan jika menggunakan mSQL. MySQL versi 1.0dirilis pada bulan Mei1996
secara terbatas kepada empat orang temannya. Baru kemudian dibulan Oktober, versi
3.1.1.0 dilepas kemasyarakat umum.
Nama MySQL (baca:mai es kju el) tidak jelas diambil dari mana. Ada yang bilang
diambil dari huruf pertama dan terakhir nama panggilan Michael Widenius ”Monty”
kemudian ada yang bilang kat My diambil dari nama putri Monty. Namun sebenarnya,
sourcecode MySQL dilihat prefiks my memang sudah terdapat dimana-mana, prefiks ini
sering menjadi prefiks umum bila seseorang membuat kode costum tersendiri untuk suatu
program.


2.3.2 STRUCTURE QUERY LANGUAGE ( S Q L )
Jenis SQL
1. Interactive : langsung dapat dioperasikan.
2. Embedded : disisipkan ke dalam sebuah program ( Cobol, C, Fortran ).
Pengelompokan Statement SQL
1. Data Definition Language ( DDL )
                             DATABASE
                             TABLE
*CREATE                                                       *DROP
                             INDEX
                             VIEW


*ALTER TABLE
2. Data Manipulation Language ( DML )
                                                                                           16


INSERT, SELECT, UPDATE, DELETE
3. Data Access
GRANT, REVOKE
4. Data Integrity
RECOVER TABLE
5. Auxiliary
UNLOAD, LOAD, RENAME COLUMN


2.4 Unified Modeling Language (UML)
Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak bisa lagi dibuat
asal-asalan.Piranti lunak saat ini seharusnya dirancang dengan memperhatikan hal-hal
seperti scalability, security, dan eksekusi yang robust walaupun dalam kondisi yang sulit.
Selain itu arsitekturnya harus didefinisikan dengan jelas, agar bug mudah ditemukan dan
diperbaiki, bahkan oleh orang lain selain programmer aslinya. Keuntungan lain dari
perencanaan arsitektur yang matang adalah dimungkinkannya penggunaan kembali
modul atau komponen untuk aplikasi piranti lunak lain yang membutuhkan fungsionalitas
yang sama.
Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan
pengkodean (coding). Model piranti lunak dapat dianalogikan seperti pembuatan
blueprint pada pembangunan gedung. Membuat model dari sebuah sistem yang kompleks
sangatlah penting karena kita tidak dapat memahami sistem semacam itu secara
menyeluruh. Semakin komplek sebuah sistem, semakin penting pula penggunaan teknik
pemodelan yang baik. Dengan menggunakan model, diharapkan pengembangan piranti
lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk
faktor-faktor seperti scalability, robustness, security, dan sebagainya.
Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian
terkenal dengan sebuan segitiga sukses (the triangle for success). Ketiga unsur tersebut
adalah metode
pemodelan (notation), proses (process) dan tool yang digunakan. Memahami notasi
pemodelan tanpa mengetahui cara pemakaian yang sebenarnya (proses) akan membuat
proyek gagal. Dan pemahaman terhadap metode pemodelan dan proses disempurnakan
                                                                                          17


dengan penggunaan tool yang tepat.


2.4.1 Apa itu UML
Unified Modelling Language (UML) adalah sebuah "bahasa" yg telah menjadi standar
dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti
lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. Dengan
menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak,
dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan
apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga
menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk
penulisan piranti lunak dalam bahasa – bahasa berorientasi objek seperti C++, Java, C#
atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi
prosedural dalam VB atau C. Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi
dan syntax/semantik.
Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai
diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax
mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML
terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD
(Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar
Jacobson OOSE (Object-Oriented Software Engineering).


2.4.2 Sejarah UML
Sejarah UML sendiri cukup panjang. Sampai era tahun 1990 seperti kita ketahui puluhan
metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya
adalah: metodologi booch [1], metodologi coad [2], metodologi OOSE [3], metodologi
OMT [4], metodologi shlaer-mellor [5], metodologi wirfs-brock [6], dsb. Masa itu
terkenal dengan masa perang metodologi (method war) dalam pendesainan berorientasi
objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan
timbul masalah baru apabila kita bekerjasama dengan group/perusahaan lain yang
menggunakan metodologi yang berlainan.
                                                                                         18


Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang merupakan tiga
tokoh yang boleh dikata metodologinya banyak digunakan mempelopori usaha untuk
penyatuan metodologi pendesainan berorientasi objek. Pada tahun 1995 direlease draft
pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan
oleh Object Management Group (OMG – http://www.omg.org). Tahun 1997 UML
versi 1.1 muncul, dan saat ini versi terbaru adalah versi 1.5 yang dirilis bulan Maret 2003.
Booch, Rumbaugh dan Jacobson menyusun tiga buku serial tentang UML pada tahun
1999 [7] [8] [9]. Sejak saat itulah UML telah menjelma menjadi standar bahasa
pemodelan untuk aplikasi berorientasi objek.


2.4.3 Konsepsi Dasar UML
Dari berbagai penjelasan rumit yang terdapat di dokumen dan buku-buku UML.
Sebenarnya konsepsi dasar UML bisa kita rangkumkan dalam gambar 2.3.




       Gambar 2.3 Konsepsi Dasar UML


Abstraksi konsep dasar UML yang terdiri dari structural classification, dynamic
behavior, dan model management, bisa kita pahami dengan mudah apabila kita melihat
gambar diatas dari Diagrams. Main concepts bisa kita pandang sebagai term yang akan
muncul pada saat kita membuat
diagram. Dan view adalah kategori dari diagaram tersebut.
Untuk menguasai UML, sebenarnya cukup dua hal yang harus kita perhatikan:
                                                                                       19


1. Menguasai pembuatan diagram UML
2. Menguasai langkah-langkah dalam analisa dan pengembangan dengan UML


Seperti juga tercantum pada gambar diatas UML mendefinisikan diagram-diagram
sebagai berikut:
1.     use case diagram
2.     class diagram
3.     statechart diagram
4.     activity diagram
5.     sequence diagram


2.4.3.1 Pengertian Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem.
Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah
use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case
merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-create sebuah
daftar belanja, dan sebagainya. Seorang/sebuah aktor adalah sebuah entitas manusia atau
mesin yang berinteraksi dengan system untuk melakukan pekerjaan-pekerjaan tertentu.
Use case diagram dapat sangat membantu bila kita sedang menyusun requirement sebuah
sistem, mengkomunikasikan rancangan dengan klien, dan merancang test case untuk
semua feature yang ada pada sistem. Sebuah use case dapat meng-include fungsionalitas
use case lain sebagai bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa
use case yang di-include akan dipanggil setiap kali use case yang meng-include
dieksekusi secara normal. Sebuah use case dapat di-include oleh lebih dari satu use case
lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar
fungsionalitas yang common. Sebuah use case juga dapat meng-extend use case lain
dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use case
menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain.


2.4.3.2 Pengertian Class Diagram
                                                                                         20


Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek
dan merupakan inti dari pengembangan dan desain berorientasi objek. Class
menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan
untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan
struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti
containment, pewarisan, asosiasi, dan lain-lain.
Class memiliki tiga area pokok :
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
1.     Private, tidak dapat dipanggil dari luar class yang bersangkutan
2.     Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak
yang mewarisinya
3.     Public, dapat dipanggil oleh siapa saja
Class dapat merupakan implementasi dari sebuah interface, yaitu class abstrak yang
hanya memiliki metoda. Interface tidak dapat langsung diinstansiasikan, tetapi harus
diimplementasikan dahulu menjadi sebuah class. Dengan demikian interface mendukung
resolusi metoda pada saat run-time.
Sesuai dengan perkembangan class model, class dapat dikelompokkan menjadi package.
Kita juga dapat membuat diagram yang terdiri atas package.
Hubungan Antar Class
1.     Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class yang
memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class lain.
Panah navigability menunjukkan arah query antar class.
2.     Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
3.     Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class
lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan
fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari
pewarisan adalah generalisasi.
                                                                                          21


4.     Hubungan dinamis, yaitu rangkaian pesan (message) yang di-passing dari satu
class kepada class lain. Hubungan dinamis dapat digambarkan dengan menggunakan
sequence diagram yang akan dijelaskan kemudian.




Gambar 2.5 Contoh Class Diagram


2.4.3.3 Pengertian Statechart Diagram
Statechart diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke
state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima. Pada
umumnya statechart diagram menggambarkan class tertentu (satu class dapat memiliki
lebih dari satu statechart diagram).
Dalam UML, state digambarkan berbentuk segiempat dengan sudut membulat dan
memiliki nama sesuai kondisinya saat itu. Transisi antar state umumnya memiliki kondisi
guard yang merupakan syarat terjadinya transisi yang bersangkutan, dituliskan dalam
kurung siku. Action yang dilakukan sebagai akibat dari event tertentu dituliskan dengan
diawali garis miring.
Titik awal dan akhir digambarkan berbentuk lingkaran berwarna penuh dan berwarna
setengah .
                                                                                           22




Gambar 2.6 Contoh Statechart Diagram


2.4.3.4 Pengertian Activity Diagram
Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem yang sedang
dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan
bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel
yang mungkin terjadi pada beberapa eksekusi.
Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah
action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal
processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal
sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan
proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah aktivitas dapat
direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan proses yang
berjalan, sementara use case menggambarkan bagaimana aktor menggunakan sistem
untuk melakukan aktivitas.
Sama seperti state, standar UML menggunakan segiempat dengan sudut membulat untuk
menggambarkan aktivitas. Decision digunakan untuk menggambarkan behaviour pada
kondisi tertentu. Untuk mengilustrasikan proses-proses paralel (fork dan join) digunakan
titik sinkronisasi yang dapat berupa titik, garis horizontal atau vertikal. Activity diagram
dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang
bertanggung jawab untuk aktivitas tertentu.
                                                                                        23




Gambar 2.7 Contoh Activity Diagram



2.4.3.5 Pengertian Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem
(termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan
terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi
horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk
menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai
respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang
men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal
dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor, memiliki lifeline
vertikal.
Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase
desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class. Activation
bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya
sebuah message.
                                                                                    24


Untuk objek-objek yang memiliki sifat khusus, standar UML mendefinisikan icon khusus
untuk
objek boundary, controller dan persistent entity.
Contoh sequence diagram :




Gambar 2.8 Contoh Sequence Diagram




2.5     AT Command
AT Command berasal dari kata attention command. Attention berarti peringatan atau
perhatian, command berarti perintah atau instruksi. Maksudnya ialah perintah atau
instruksi yang dikenakan pada modem atau handset.
AT command diperkenalkan oleh Dennis Hayes pada tahun 1977 yang dikenal dengan
“smart modem”. Modem bekerja pada baud rate 300 bps. Modem ini terdiri dari sederet
instruksi yang mengatur komunikasi dan fitur-fitur di dalamnya. Salah satu contoh
sederhana penggunaan AT Command misalnya komunikasi dua buah computer
menggunakan port COM(port R-232). AT Command mempunyai dua mode, yaitu mode
data (data mode) dan mode perintah (command mode). Untuk berpindah dari mode data
menuju mode perintah dipisahkan oleh tiga tanda plus dan jeda selama satu detik.
Dalam perkembangannya AT Command banyak diterapkan pada mobile handset (telepon
selular). Instruksi dasar AT Command hamper digunakan hamper oleh semua merk
                                                                                       25


telepon selular. Namun demikian, ada beberapa instruksi yang ditambahkan sendiri pada
handset tersebut oleh vendor pembuatnya.
Penggunaan AT Command pada handset telah mempermudah untuk mengetahui segala
informasi yang terdapat pada handset tersebut. Dengan menggunakan instruksi tertentu
kita dapat mengetahui merk, nomor imei dan lain lain. Selain itu dengan AT Command
kita bisa menyeting instruksi atau mengaktifkan instruksi pada handset untuk melakukan
fungsi tertentu, misalnya melakukan panggilan, mengirim sms, dan sebagainya. Perlu
diketahui masing-masing vendor handset biasanya menyertakan AT Command yang
mendukung produk tersebut.


2.5.1    AT Command dan Hyper Terminal
Mengakses AT Command melalui Hyperterminal sangat mudah dilakukan. Hal pertama
yang harus dilakukan adalah memastikan komputer dan handset telah terhubung melalui
port COM(menggunakan kabel R 232) atau melalui COM virtual pada windows
(biasanya menggunakan kabel USB sebagai port COM, khusus penggunaan kabel USB
pastikan bahwa driver kabel tersebut telah terinstal).
Pada tabel 2.1 dapat kita lihat sebagian dari perintah-perintah AT command yang akan
digunakan pada aplikasi yang akan dibuat.
Tabel 2.1 Perintah dasar AT Command
AT Command       Keterangan
AT               Mengecek apakah Handphone telah terhubung
AT+CMGF          Untuk menetapkan format mode dari terminal
AT+CSCS          Untuk menetapkan jenis encoding
AT+CNMI          Untuk 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 pasan SMS
ATE1             Mengatur ECHO
ATV1             Mengatur input dan output berupa naskah
AT+CGMI          Mengecek Merek HP
AT+CGMM          Mengecek Seri HP
AT+CGMR          Mengecek Versi Keluaran HP
AT+CBC           Mengecek Baterai
                                                                       26

AT Command     Keterangan
AT+CSQ         Mengecek Kualitas Sinyal
AT+CCLK?       Mengecek Jam (waktu) pada HP
AT+CALM=<n>    Mengecek Suara/dering HP saat di Telepon (ada Telepon
               Masuk)
               ‘n’ adalah adalah angka yang menunjukkan jenis dering
               0 = berdering
               1 dan 2 = Silent (Diam)
AT^SCID        Mengecek ID SIM CARD
AT+CGSN        Mengecek Nomor IMEI
AT+CLIP=1      Menampilkan nomor telepon pemanggil
AT+CLCC        Menampilkan nomor telepon yang sedang memanggil
AT+COPN        Menampilkan Nama Sumua Operator di dunia
AT+COPS?       Menampilkan nama operator dari SIM yang digunakan
AT+CPBR=<n>    Membaca nomor telepon yang disimpan pada buku
               telepon (SIM CARD)
               ‘n’ adalah nomor urut penyimpanan
AT+CPMS=<md>   Mengatur Memori dari HP
               ‘md’ adalah memori yang digunakan
               ME = Memori HP
               SM = Memori SIM CARD
                                                                                       27


BAB III
PERANCANGAN DAN IMPLEMENTASI


Pada bab ini akan dibahas bagaimana merancang dan membangun sebuah Aplikasi
Penjualan Voucher dan Pulsa Elektrik pada Perluasan Cabang CV Dian Mulya dengan
menggunakan Java 2 Standart Edition, Netbeans IDE 6.0 dan MySQL.


3.1.    Perancangan Sistem Menggunakan UML
        Perancangan sistem pada aplikasi ini digunakan dengan menggunakan Unified
Modelling Language (UML). Perancangan model sistem pada aplikasi ini digambarkan
melalui Use Case Diagram, Class Diagram, Sequence Diagram dan Activity Diagram.


3.1.1   Use Case Diagram
Use Case Diagram digunakan untuk menggambarkan fungsionalitas yang diharapkan
dari sebuah sistem dan mendeskripsikan fungsi sebuah sistem dari sudut pandang
pengguna sistem.Pada diagram ini terdapat tiga aktor yang merupakan pengguna sistem,
yaitu customer, karyawan, dan aplikasi. Customer sebagai aktor yang melakukan
transaksi pembelian, memiliki use case melakukan transaksi pembelian lalu memberikan
nomor telepon selular dan nominal pulsa yang akan dibeli. Aktor karyawan memiliki use
case memasukkan nomor telepon dan nominal pulsa dari customer ke aplikasi.
Selanjutnya aplikasi penjualan mengirimkan SMS ke provider penyedia pulsa elektrik
dan memberikan status pengiriman pulsa elektrik atau pemberitahuan stok voucher jika
yang dibeli adalah voucher kepada aktor karyawan. Setelah itu aktor karyawan n
memeberikan status pengiriman pulsa elektrik kepada customer atau memberikan
voucher kepada customer.
                                                                                      28




Gambar 3.1 Use Case Diagram


3.1.2      Class Diagram
Class Diagram digunakan untuk menggambarkan keadaan (atribut/properti) suatu sistem,
sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).
Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek
dan merupakan inti dari pengembangan dan desain berorientasi objek. Pada gambar 3.2
terdapat Class Petugas, Class Penjualan_Pulsa_Elektrik, Class Pulsa_Elektrik, Class
Voucher dan Class Penjualan_Voucher.
                                                                                         29




Gambar 3.2 Class Diagram
Class Petugas memiliki atribut berupa id_petugas, nama_petugas, pswd, dan hak. Class
ini memiliki operasi berupa melakukan absensi, transaksi penjualan pulsa elektrik, dan
transaksi penjualan voucher. Class Penjualan_Pulsa_elektrik memiliki atribut berupa
faktur, no_hp, id_provider, harga_beli, harga_jual, tanggal, status, dan id_petugas. Class
ini memiliki operasi berupa mengurangi saldo pulsa elektrik. Class Pulsa_elektrik
memiliki atribut id_operator, nama, harga_beli, harga_jual, harga_pulsa, dan kode_isi.
Class Penjualan_Voucher memiliki atribut berupa no_faktur, total, tanggal, id_petugas.
Class ini memiliki operasi berupa mengurangi stok. Class Voucher memiliki atribut
id_barang, nama, harga_beli, harga_jual, dan stok.Pada gambar 3.2 petugas dapat
memilih antara melakukan penjualan voucher atau penjualan pulsa elektrik.
                                                                                       30


3.1.3      Sequence Diagram




Gambar 3.3 Sequence Diagram


Sequence diagram mendokumentasikan komunikasi atau interaksi dari aktor customer,
karyawan, dan aplikasi. Objek karyawan akan login terlebih dahulu sebagai absensi
seteleh itu objek aplikasi akan mengecek username, password, dan hak akses dar
karyawan. Aktor customer berinteraksi dengan objek karyawan dengan melakukan
transaksi pembelian dan memberikan nomor telepon selular dan jumlah nominal pulsa
yang akan dibeli. Objek karyawan akan memasukkan nomor telepon selular dan nominal
pulsa yang akan dibeli ke aplikasi, Lalu objek aplikasi penjualan mengirimkan SMS ke
provider penyedia pulsa elektrik dan memberikan status pengiriman pulsa elektrik kepada
objek karyawan setelah itu objek karyawan akan memberikan laporan status pengiriman
pulsa elektrik atau memberikan voucher jika customer membeli voucher.


3.1.4      Activity Diagram
Activity diagram digunakan untuk menggambarkan proses paralel yang mungkin terjadi
pada beberapa eksekusi. Aktifitas awal dari proses ini dimulai oleh customer dengan
melakukan transaksi pembelian kepada karyawan, dan memberikan nomor telepon selular
dan jumlah pulsa yang ingin dibeli, kemudian karyawan menginput nomor telepon selular
dan jumlah pulsa yang akan dibeli ke aplikasi. Selanjutnya aplikasi penjualan
                                                                                       31


mengirimkan SMS ke provider penyedia pulsa elektrik dan memberikan status
pengiriman pulsa elektrik atau informasi mengenai stok voucher. Setelah itu karyawan
memberikan laporan pengiriman pulsa elektrik atau memberikan voucher jika yang dibeli
adalah voucher. Lalu customer menerima pulsa elektrik atau voucher yang dipesan.




Gambar 3.4 Activity Diagram




3.2   Perancangan Hardware
Untuk membuat dan mengembangkan aplikasi ini, penulis menggunakan spesifikasi
perangkat lunak dan perangkat keras sebagai berikut.
A. Perangkat Lunak
Spesifikasi perangkat lunak yang digunakan untuk membuat aplikasi ini adalah sebagai
berikut :
                                                                                      32


1. Windows XP SP 2 sebagai sistem operasi.
2. Java NetBeans IDE 6.1 sebagai perangkat lunak program Java.
3. MySQL sebagai server database.
4. MySQL ODBC 3.51 Driver sebagai konektor Java dan MySQL.


B. Perangkat Keras
Spesifikasi perangkat keras yang digunakan untuk mengembangkan dan menguji coba
aplikasi ini adalah sebgai berikut :
1. Prosesor Intel Pentium 4 2,4 GHz.
2. Memori V-Gen DDR-SDRAM 512 Mb.
4. Hardisk Maxtor 80 Gb.
5. Monitor LCD 17” Advance.
6. Mouse dan Keyboard.
7. Kabel Data Sony Ericsson T610.
6. HandPhone Sony Ericsson T610




Gambar 3.5 Perancangan Hardware


3.3    Perancangan Aplikasi
Perancangan aplikasi ini terdiri dari perancangan struktur database dan perancangan input
aplikasi penjualan pulsa elektrik. Berikut ini adalah perancangannya.
                                                                                       33


3.3.1   Rancangan Struktur Database
Untuk menjelaskan hasil yang diinginkan dan menghindari kerangkapan data, aplikasi ini
menggunakan satu database yaitu database db_dian_mulya yang terdiri dari 8 tabel
relasional, yaitu tabel tb_petugas, tb_absensi, tb_operator, tb_jual_pulsa_elektrik,
tb_sisa_pulsa, tb_barang, tb_detail_jual, tb_jual.
A. Tabel tb_petugas
Digunakan untuk tempat penyimpanan data Petugas. Struktur tabelnya terdiri dari
beberapa field, yaitu :
Tabel 3.1 Struktur Tabel tb_petugas
                          Jenis                  Keterangan
     Nama Field                        Lebar
                          Field
     Id_petugas           Char         4         Primari Key
     nama                 Varchar      45        Nama petugas
     pswd                 Varchar      45        Password buat login
     Hak                  Varchar      10        Tingkatan petugas (user atau admin)


B. Tabel tb_absensi
Digunakan untuk tempat menyimpan data absensi pegawai. Strukturnya terdiri dari
beberapa field yaitu :
Tabel 3.2 Struktur Tabel tb_absensi
                          Jenis                  Keterangan
     Nama Field                        Lebar
                          Field
     id_petugas           Char         4         Foreign Key
     tanggal              Varchar      20        Tanggal absensi
     jam_masuk            Varchar      10        Jam pada saat login aplikasi
     jam_keluar           Varchar      10        Jam pada saat keluar aplikasi


C. Tabel tb_operator
Digunakan untuk tempat penyimpanan data provider. Struktur tabelnya terdiri dari
beberapa field, yaitu :
                                                                                       34



Tabel 3.3 Struktur Tabel tb_operator
                           Jenis                  Keterangan
     Nama Field                          Lebar
                           Field
     Id_operator           Char          4        Primary Key
     Nama_operator         Varchar       20       Nama operator (Simpati, IM3 ,dll)
     Harga_beli            Integer       7        Harga beli pulsa elektrik
     Harga_jual            Integer       7        Harga jual pulsa elektrik
     Harga_pulsa           Integer       7        Nominal pulsa elektrik
                                                  Kode format untuk SMS (SM20)
     Kode_isi              Varchar       20       SM = Kode untuk simpati
                                                  20 = nominal pulsa


D. Tabel tb_jual_pulsa_elektrik
Digunakan untuk tempat penyimpanan data transaksi penjualan pulsa elektrik. Struktur
tabelnya terdiri dari beberapa field, yaitu :
Tabel 3.4 Struktur Tabel tb_jual_pulsa_elektrik
                           Jenis                  Keterangan
     Nama Field                          Lebar
                           Field
     faktur                Char          8        Primary Key
     no_hp                 Varchar       16       Nomor telepon selular pembeli
     id_operator           Char          4        Foreign Key
     harga_beli            Integer       7        Harga beli pulsa elektrik
     harga_jual            Integer       7        Harga jual pulsa elektrik
     tanggal               Varchar       20       Tanggal transaksi penjualan pulsa
     status                Varchar       20       Status pengiriman pulsa
     id_petugas            Char          4        Foreign Key


E. Tabel tb_sisa_pulsa
Digunakan untuk tempat penyimpanan data saldo pulsa elektrik. Struktur tabelnya terdiri
dari satu field, yaitu :
                                                                                        35


Tabel 3.5 Struktur Tabel tb_sisa_pulsa
                           Jenis                 Keterangan
     Nama Field                          Lebar
                           Field
     sisa_pulsa            Integer       12      Saldo pulsa elektrik


F. Tabel tb_barang
Digunakan untuk menyimpan data barang atau voucher yang akan dijual. Struktur
tabelnya terdiri dari beberapa field, yaitu :
Tabel 3.6 Struktur Tabel tb_barang
                          Jenis                  Keterangan
     Nama Field                          Lebar
                          Field
     id_barang            Char           4       Primary Key
     nama                 Varchar        45      Nama untuk voucher cth Im3 10.000
     harga_beli           Integer        7       Harga beli voucher
     harga_jual           integer        7       Harga
     stok                 integer        7       Stok barang yang ada


G. Tabel tb_jual
digunakan untuk menyimpan data transaksi pembelian voucher. Struktur tabelnya terdiri
dari beberapa field, yaitu :
Tabel 3.7 Struktur Tabel tb_jual
                          Jenis                  Keterangan
     Nama Field                          Lebar
                          Field
     no_faktur            Char           8       Primary Key
     total                Integer        7       Total harga dari voucher yang dibeli
     tanggal              Varchar        40      Tanggal transaksi pembelian
     id_petugas           Char           4       Foreign Key


H. Tabel tb_detail_jual
                                                                                         36


digunakan untuk tempat penyimpanan detail dari penjualan voucher, dihitung per faktur
dapat lebih dari beberapa barang atau voucher. Struktur tabelnya terdiri dari beberapa
field, yaitu :
Tabel 3.8 Struktur Tabel tb_detail_jual
                         Jenis                  Keterangan
       Nama Field                     Lebar
                         Field
       no_faktur         Char         8         Foreign Key
       nama              Varchar      45        Nama untuk voucher cth Im3 10.000
       jumlah            Integer      7         Jumlah voucher yang dibeli
       harga_beli        Integer      7         Harga beli barang saat transaksi
       harga_jual        Integer      7         Harga jual pada saat transaksi
       Total detail      Integer      7         Total harga transaksi


3.3.2    Rancangan Tampilan Aplikasi
Perancangan tampilan desain output.


3.4     Implementasi
Pada tahap ini penulis memulai pembuatan aplikasi dengan menstransformasikan semua
rancangan sistem, rancangan database dan rancangan program ke dalam script program
Java.


3.4.1    Pembuatan Database
      Setelah melakukan perancangan database, maka penulis membuat database dengan
menggunakan MySQL 5.0. Berikut ini merupakan langkah –langkah dalam pembuatan
database :
A. Masuk direktory MySQL yang telah kita install melalui command prompt, setelah itu
ketikkan mysql –u root –h localhost –p
B. Masukkan password root untuk dapat melakukan login ke dalam database server.
(dalam hal ini penulis, password MySQL pada penulis adalah tidak ada)
                                                                     37




Gambar 3.16 Prompt Login Database MySQL
C. Untuk membuat database pulsa digunakan sintax :
      CREATE DATABASE db_dian_mulya;
D. Untuk menggunakan database yang telah dibuat digunakan sintax :
      USE db_dian_mulya;
E. Untuk membuat tabel tb_petugas digunakan sintax :
    CREATE TABLE tb_petugas (
    `id_petugas` CHAR(4) NOT NULL,
    `nama` VARCHAR(45) NOT NULL,
    `pswd` VARCHAR(10) NOT NULL,
    `hak` VARCHAR(5) NOT NULL,
    PRIMARY KEY(`id_petugas`)
)


F. Untuk membuat tabel tb_operator digunakan sintax :
           CREATE TABLE tb_operator (
    `id_operator` CHAR(4) NOT NULL,
    `nama_operator` VARCHAR(20) NOT NULL,
    `harga_beli` INTEGER UNSIGNED NOT NULL,
    `harga_jual` INTEGER UNSIGNED NOT NULL,
    `harga_pulsa` INTEGER UNSIGNED NOT NULL,
    `kode_isi` VARCHAR(20) NOT NULL,
    PRIMARY KEY(`id_operator`)
)
                                                                                     38




G. Untuk membuat tabel tb_barang digunakan sintax :
          CREATE TABLE tb_barang (
    `id_barang` CHAR(4) NOT NULL,
    `nama` VARCHAR(45) NOT NULL,
    `harga_beli` INTEGER UNSIGNED NOT NULL,
    `harga_jual` INTEGER UNSIGNED NOT NULL,
    `stok` INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(`id_barang`)
)


H. Untuk membuat tabel tb_sisa_pulsa digunakan sintax :
          CREATE TABLE tb_sisa_pulsa (
          `sisa_pulsa` int );


I. Untuk membuat tabel tb_jual_pulsa_elektrik digunakan sintax :
CREATE TABLE tb_jual_pulsa_elektrik (
`faktur` CHAR(8) NOT NULL,
`no_hp` VARCHAR(16) NOT NULL,
`id_operator` VARCHAR(20) NOT NULL,
`harga_beli` INTEGER UNSIGNED NOT NULL,
`harga_jual` INTEGER UNSIGNED NOT NULL,
`tanggal` VARCHAR(20) NOT NULL,
`status` VARCHAR(10) NOT NULL,
`id_petugas` CHAR(4) NOT NULL,
PRIMARY KEY(`faktur`),
CONSTRAINT `FK_tb_jual_pulsa_elektrik_1` FOREIGN KEY `FK_tb_jual_pulsa_elektrik_1`
(`id_petugas`)
REFERENCES `tb_petugas` (`id_petugas`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
CONSTRAINT `FK_tb_jual_pulsa_elektrik_2` FOREIGN KEY `FK_tb_jual_pulsa_elektrik_2`
(`id_operator`)
REFERENCES `tb_operator` (`id_operator`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
                                                                                       39

)


J. Untuk membuat tabel tb_jual digunakan sintax :
CREATE TABLE tb_jual (
    `no_faktur` CHAR(8) NOT NULL,
    `total` INTEGER UNSIGNED NOT NULL,
    `tanggal` VARCHAR(40) NOT NULL,
    `id_petugas` CHAR(4) NOT NULL,
    PRIMARY KEY(`no_faktur`),
    CONSTRAINT `FK_tb_jual_1` FOREIGN KEY `FK_tb_jual_1` (`id_petugas`)
     REFERENCES `tb_petugas` (`id_petugas`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
)


K. Untuk membuat tabel tb_detail_jual digunakan sintax :
CREATE TABLE `db_dian_mulya`.`tb_detail_jual` (
    `no_faktur` CHAR(8) NOT NULL,
    `id_barang` CHAR(4) NOT NULL,
    `jumlah` INTEGER UNSIGNED NOT NULL,
    `harga_beli` INTEGER UNSIGNED NOT NULL,
    `harga_jual` INTEGER UNSIGNED NOT NULL,
    `total_detail` INTEGER UNSIGNED NOT NULL,
    CONSTRAINT `FK_tb_detail_jual_1` FOREIGN KEY `FK_tb_detail_jual_1` (`no_faktur`)
     REFERENCES `tb_jual` (`no_faktur`)
     ON DELETE CASCADE
     ON UPDATE CASCADE,
    CONSTRAINT `FK_tb_detail_jual_2` FOREIGN KEY `FK_tb_detail_jual_2` (`id_barang`)
     REFERENCES `tb_barang` (`id_barang`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
)


3.4.2         Pembuatan Program
Untuk pembuatan program digunakan perangkat lunak pemrograman Java J2SDK 1.6.0.
J2SDK merupakan seperangkat alat pengembangan program Java, yang dapat digunakan
                                                                                  40


untuk membuat, menguji, mendokumentasikan, dan menjalankan program Java. Sebagai
alat bantu untuk menuliskan kode pemrograman java digunakan NetBeans IDE 6.1.
Berikut ini merupakan langkah-langkah pembuatan program Java dengan menggunakan
program NetBeans IDE 6.1.
1. Mengaktifkan program NetBeans IDE 6.1 dengan mengklik shortcut program
NetBeans IDE 6.1 pada desktop.




Gambar 3.17 Halaman NetBeans IDE 6.1


2. Untuk membuat project baru pilih menu File – New Project. Setelah itu akan muncul
kotak dialog New Project.
                                                                                      41




Gambar 3.18 Tampilan New Project


3. Setelah itu pilih folder Java yang terdapat pada kotak Catagories dan pilih Java
Appliction pada kotak Project. Selanjutnya klik tombol Next, maka akan muncul kotak
dialog New Java Application yang berfungsi untuk mengatur nama project, lokasi
project, dan beberapa pengaturan lainnya.
                                                                                    42




Gambar 3.19 Tampilan Kotak Dialog New Java Application


4. Masukkan nama project yang akan dibuat dan klik tombol Finish untuk mengakhiri
pembuatan project baru. Untuk membuat aplikasi yang akan dibuat terlihat lebih
menarik dan mudah digunakan, maka aplikasi ini dibuat dengan tampilan GUI
(Graphical User Interface).
5. Untuk membuat file berbasis GUI dari aplikasi yang akan dibuat dengan cara
mengklik pada menu File – New File, akan muncul kotak dialog New File. Pada kotak
Catagories pilih folder Swing GUI Form dan pada kotak File Type pilih Jframe Form.
                                                                                     43




Gambar 3.20 Tampilan Kotak Dialog New File


6. Masukkan nama class yang akan dibuat pada kotak Class Name. Selanjutnya klik
tombol Finish untuk mengakhiri proses pembuatan file baru.


3.4.3   Penjelasan Kode Program
Pada tahap ini penulis menjelaskan mengenai kode program yang dibuat dalam penulisan
ini dengan menggunakan bahasa pemrograman java.
1. Utama.java
Program ini merupakan program utama yang dijadikan sebagai frame induk yang berisi
menu yang dapat memanggil program java lainnya yang dijadikan sebagai frame child.
Isi dari menu tersebuat adalah menu File dengan submenu Log In, Log Out, dan Keluar,
menu Data dengan submenu Petugas, Operator dan voucher, menu Transaksi dengan
submenu Pulsa Elektrik dan Voucher, menu Laporan dengan submenu Laporan Penjualan
Pulsa Elektrik, Penjualan Voucher, dan Absensi Karyawan.
Agar setiap menu dapat memanggil program ketika mendapat event klik dari pengguna,
maka setiap menu akan memanggil method yang berbeda tergantung dari program yang
                                                                                        44


akan dipanggil. Blok kode program yang berada dalam method tersebut akan memanggil
program dan menjadikannya form child dalam program utama
2. koneksi_database.java
Program ini merupakan program yang berisi kode untuk melakukan koneksi ke database
server MySQL. Program ini akan dipanggil oleh setiap program yang membutuhkan
koneksi terhadap database sehingga mengurangi penulisan kode yang sama secara
berulang-ulang. Konektor yang dipakai untuk menghubungkan program dengan database
server MySQL menggunakan program JConnector.
3. Login.java
Program ini digunakan untuk menjaga keamanan data, sehingga hanya pengguna yang
mengetahui user dan password yang dapat menggunakan aplikasi ini. Apabila data user
atau data password yang dimasukkkan salah, maka akan tampil pesan kesalahan dan user
tidak dapat masuk ke menu utama. Kode program berikut ini digunakan untuk
autentifikasi user dan juga sebagai absensi pada saat masuk ke aplikasi.
4. Petugas.java
Program ini digunakan untuk memasukkan, mengubah, dan menghapus data petugas. Di
dalam program ini juga terdapat tabel yang manampilkan data petugas.
5. Operator.java
Program ini digunakan untuk memasukkan, mengubah, dan menghapus data operator. Di
dalam program ini juga terdapat tabel yang manampilkan data operator yang ada.
6. Voucher.java
Program ini digunakan untuk memasukkan, mengubah, dan menghapus data voucher,
seperti nama, harga jual, harga beli, stok. Di dalam program ini juga terdapat tabel yang
manampilkan data voucher yang ada.
7. Penjualan_Pulsa.java
Program ini digunakan untuk melakukan transaksi penjualan pulsa elektrik. Dalam
program ini pengguna hanya memasukkan atau memilih data kedalam aplikasi penjualan
pulsa elektrik, setelah itu aplikasi akan mengirimkan SMS ke provider penyedia pulsa
elektrik untuk melakukan transaksi pengiriman pulsa elektrik sesuai dengan jumlah pulsa
yang akan dibeli.
8. trans_voucher.java
                                                                                        45


Program ini digunakan untuk melakukan transaksi penjualan voucher. Dalam program
ini pengguna hanya memilih data voucher yang akan dibeli, setelah itu aplikasi akan
mengurangi stok yang ada.
9. laporan_voucher.java
Program ini digunakan untuk melihat laporan dari penjualan voucher, berfungsi untuk
melihat jumlah total penjualan, total pembelian dan total pendapatan. Laporan juga dapat
dilihat berdasarkan waktu ( harian, bulanan, dan tahunan ) serta dapat dilihat berdasarkan
petugas, ataupun keduanya.
                                                                                       46


BAB IV
HASIL DAN PEMBAHASAN


4.1 Spesifikasi Perangkat yang Digunakan untuk Pengujian
Spesifikasi yang digunakan untuk menguji aplikasi ini adalah prosessor Intel Pentium
4.2 GHz RAM 512 MB, dengan sistem operasi Microsoft Windows XP SP 2, telepon
selular Sony Ericson type T610 dan kabel data.


4.2 Pengujian
Untuk menguji aplikasi ini pertama-tama pengguna menjalankan file yang bernama
skripsi_bowo, sehingga akan muncul tampilan menu utama seperti pada Gambar 4.1.




Gambar 4.1 Tampilan Menu Utama
Setelah itu pengguna aplikasi harus login terlebih dahulu, login digunakan untuk
keamanan data. Sehingga hanya pengguna yang memiliki izin saja yang dapat masuk ke
dalam aplikasi. Dalam form login, pengguna harus memasukkan username dan password
yang sesuai, jika tidak aplikasi akan memblok dan tidak mengizinkan pengguna untuk
menggunakan aplikasi. Untuk pengguna yang telah login, waktu pada saat masuk akan
dicatat sebagai absensi. Form login dapat dilihat pada gambar 4.2.
                                                                                         47




Gambar 4.2 Tampilan Form Login
Pada aplikasi terdapat 2 hak akses. Hak akses yang pertama adalah sebagai user dan hak
akses yang kedua adalah sebagai admin. Jika pengguna login sebagai admin maka
pengguna dapat menambah, mengubah, dan menghapus data. Baik itu data pegawai,
maupun data pulsa elektrik dan voucher. Juga dapat melihat laporan dari penjualan pulsa
elektrik, voucher dan juga absensi dari karyawan. Sebagai admin juga dapat melakukan
transaksi penjualan. Sedangkan jika pengguna login sebagai user maka hanya dapat
melakukan transaksi penjualan saja.
Perbedaan menu yang tersedia pada saat login sebagai admin dan user dapat dilihat pada
gambar 4.3.




Gambar 4.3 Perbedaan Menu User dan Admin


Untuk menu data, hanya dapat diakses oleh admin. Pengguna atau admin dapat mengolah
data yang bisa dikatakan sebagai master data dari aplikasi, seperti data petugas, data
operator dan data voucher.
Pada form data petugas, pengguna dapat menambah, merubah dan menghapus data
petugas. Untuk menambah petugas, pertama klik tombol TAMBAH, lalu masukkan data
                                                                                       48


seperti nama, password dan pilih hak aksesnya, setelah lengkap klik tombol OK. Untuk
merubah data petugas klik tombol EDIT lalu klik data yang ingin diedit pada tabel,
setelah itu ubah datanya dan klik tombol OK untuk menyelesaikan perubahan data. Untuk
menghapus data klik tombol HAPUS lalu pilih data yang ingin dihapus pada tabel,
setelah itu klik tombol OK untuk menghapus data yang telah dipilih. Form petugas dapat
kita lihat pada gambar 4.4.




Gambar 4.4 Form Admin Petugas
Data operator digunakan untuk mengolah data penjualan pulsa elektrik yaitu berupa
nama operator, harga jual, harga beli, harga pulsa dan juga kode pengiriman SMS ke
penyedia layanan pulsa elektrik.Untuk menambah data operator pertama kita klik tombol
TAMBAH, lalu masukkan data dengan lengkap setelah itu klik tombol OK untuk
menyimpan datanya. Untuk merubah data operator klik tombol EDIT lalu klik data yang
ingin diedit pada tabel, setelah itu ubah datanya dan klik tombol OK untuk
menyelesaikan perubahan data. Untuk menghapus data klik tombol HAPUS lalu pilih
data yang ingin dihapus pada tabel, setelah itu klik tombol OK untuk menghapus data
yang telah dipilih. Form operator dapat dilihat pada gambar 4.5.
                                                                                         49




Gambar 4.5 Form Admin Operator Pulsa Elektrik


Untuk data voucher digunakan untuk mengolah data untuk penjualan voucher seperti
penambahan stok barang dalam hal ini voucher, harga jual, dan harga beli voucher. Untuk
menambah data voucher pertama kita klik tombol TAMBAH, lalu masukkan data dengan
lengkap setelah itu klik tombol OK untuk menyimpan datanya. Untuk merubah data
voucher klik tombol EDIT lalu klik data yang ingin diedit pada tabel, setelah itu ubah
datanya dan klik tombol OK untuk menyelesaikan perubahan data. Untuk menghapus
data klik tombol HAPUS lalu pilih data yang ingin dihapus pada tabel, setelah itu klik
tombol OK untuk menghapus data yang telah dipilih. Form voucher dapat dilihat pada
gambar 4.6.
                                                                                        50




Gambar 4.6 Form Admin Voucher


Untuk melakukan transaksi penjualan pulsa elektrik terdapat menu pada transaksi lalu
pilih menu pulsa elektrik. Untuk melakukan transaksi pertama pengguna harus
mengkoneksikan komputer dengan telepon selular menggunakan kabel data setelah itu
pilih port setting. port komunikasi pada aplikasi dengan default COM4, Bytes per
seconds dengan default 9600 dan data bitsnya dengan default 8. untuk setiap jenis merk
telepon selular biasanya memiliki port setting yang berbeda. Setelah itu kita klik tombol
CONNECT. Jika penyetingan pada port setting benar maka informasi seperti merk HP,
jenis perangkat, imei dan providernya akan terlihat. Jika tidak maka perlu untuk
menyeting kembali pilihan pada port setting.
Setelah terkoneksi pengguna dapat melakukan transaksi penjualan pulsa elektrik dengan
hanya memilih operator yang digunakan oleh pembeli, pulsa yang ingin dibeli dan nomor
tujuan pengiriman pulsa elektrik setelah itu klik tombol OK. Semua status pada saat
pengiriman adalah belum terkirim untuk mengubahnya kita hanya perlu mengklik data
pada tabel untuk mengubah statusnya, dimana akan muncul form konfirmasi apakah
                                                                                         51


pulsa telah terkirim. Untuk konfirmasi status pengiriman pulsa dapat mengklik tombol
CEK COMPLAIN maka aplikasi akan mengirim SMS ke penyedia layanan pulsa
elektrik, lalu penyedia layanan pulsa elektrik akan mengirim status ke telepon selular
yang digunakan pengguna aplikasi melalui SMS yang akan masuk ke inbox pengguna.
Untuk menambah saldo dari deposit pulsa elektrik yang dimiliki pengguna dapat
mengklik tombol +SALDO. Ketika kita mengklik tombol +SALDO maka akan muncul
form dimana kita dapat menambahkan saldo dari deposit pulsa yang telah ada. Setelah itu
kita klik OK.
Dan untuk mengecek SMS yang masuk dapat mengklik tombol CEK INBOX. Sedangkan
untuk membaca SMS yang masuk, pengguna hanya perlu mengklik tabel dari SMS
INBOX, setelah itu isi dari SMS akan terbaca di ISI SMS. Form penjualan pulsa elektrik
dapat dilihat pada gambar 4.7.




Gambar 4.7 Form Transaksi Penjualan Pulsa Elektrik
                                                                                        52


       Untuk melakukan transaksi pembelian voucher, pengguna harus masuk ke menu
transaksi lalu pilih voucher setelah itu akan muncul form untuk transaksi penjualan
voucher. Disini pengguna hanya memasukkan jenis voucher dan berapa banyak yang
akan dibeli customer. Pengguna akan dapat melihat total dari transaksi penjualan.
Transaksi penjualan voucher dapat dilihat pada gambar 4.8.




Gambar 4.8 Form Transaksi Penjualan Voucher


Untuk laporan pada aplikasi dibagi menjadi tiga laporan yaitu laporan penjualan pulsa
elektrik , laporan penjualan voucher, dan laporan absensi karyawan. Saat admin atau
pengguna ingin melihat laporan penjualan pulsa elektrik, pengguna harus mengklik menu
laporan lalu memilih menu laporan pulsa elektrik. Disini pengguna melihat data
penjualan secara keseluruhan pada sebuah tabel. Untuk melihat data yang diinginkan
pengguna secara terperinci seperti berdasarkan waktu, pengguna dapat mengklik check
box berdasarkan waktu, setelah itu pengguna diminta memilih pilihan yaitu harian,
bulanan atau tahunan. Untuk harian kita diminta memasukan tanggal, bulan dan tahun,
sedangkan untuk bulanan kita diminta untuk memasukkan bulan dan tahun saja, dan
                                                                                        53


untuk tahunan kita diminta memasukkan tahun yang kita ingin lihat datanya setelah itu
kita klik tombol LIHAT. Selain berdasarkan waktu, pengguna juga dapat melihat
berdasarkan operator telepon selular, ataupun berdasarkan keduanya.




       Gambar 4.9 Form Laporan Penjualan Pulsa Elektrik
       Ketika admin atau pengguna ingin melihat laporan penjualan voucher, pengguna
mengklik menu laporan dan memilih laporan voucher. Pengguna akan melihat form
laporan dimana data yang ditampilkan adalah data penjualan voucher secara keseluruhan.
Untuk melihat data yang diinginkan pengguna secara terperinci seperti berdasarkan
waktu, pengguna dapat mengklik check box berdasarkan waktu, setelah itu pengguna
diminta memilih pilihan yaitu harian, bulanan atau tahunan. Untuk harian kita diminta
memasukan tanggal, bulan dan tahun, sedangkan untuk bulanan kita diminta untuk
memasukkan bulan dan tahun saja, dan untuk tahunan kita diminta memasukkan tahun
yang kita ingin lihat datanya setelah itu kita klik tombol LIHAT. Selain berdasarkan
waktu, pengguna juga dapat melihat berdasarkan petugas pada saat transaksi, ataupun
berdasarkan keduanya.
                                                                                        54




Gambar 4.10 Form Laporan Penjualan Voucher
Ketika admin atau pengguna ingin melihat laporan untuk absensi karyawan, pengguna
mengklik menu laporan dan memilih laporan absensi karyawan. Pengguna akan melihat
form laporan dimana data yang ditampilkan adalah data absensi secara keseluruhan.
Untuk melihat data yang diinginkan pengguna secara terperinci seperti berdasarkan
waktu, pengguna dapat mengklik check box berdasarkan waktu, setelah itu pengguna
diminta memilih pilihan yaitu harian, bulanan atau tahunan. Untuk harian kita diminta
memasukan tanggal, bulan dan tahun, sedangkan untuk bulanan kita diminta untuk
memasukkan bulan dan tahun saja, dan untuk tahunan kita diminta memasukkan tahun
yang kita ingin lihat datanya setelah itu kita klik tombol LIHAT. Selain berdasarkan
waktu, pengguna juga dapat melihat berdasarkan nama petugas, ataupun berdasarkan
keduanya.
                                                                                    55




Gambar 4.11 Form Laporan Absensi Karyawan




4.3 Hasil Pengujian
Berdasarkan pengujian di atas, dapat terlihat bahwa program dapat berjalan. Untuk
menilai keberhasilan aplikasi yang dibuat, penulis melakukan uji coba program pada 20
orang pengguna, dimana masing-masing orang diberi pengarahan selama 5 menit untuk
penggunaan program, setelah itu pengguna mencoba aplikasi yang telah dibuat, dan
mengisi kuisioner yang diberikan penulis. Penulis mengelompokkan penilaian
berdasarkan tampilan program, cara penggunaan program, fasilitas pada program,
kegunaan program dan ketepatan program. Data hasil pengujian dapat dilihat pada Tabel
4.1.
Tabel 4.1 Hasil Kuisioner
                             Pertanyaan
            Nama
                             1    2    3    4    5    6    7    8    9    10
            Sugeng R         N    S    SS   SS   S    SS   SS   SS   SS   SS
            Rizal            SS   S    SS   SS   S    SS   SS   S    S    SS
            Dicki            S    N    SS   S    S    SS   SS   S    S    S
            Ryan             S    S    SS   SS   S    SS   S    S    S    S

            Dandy            S    N    S    S    N    S    S    N    S    S
                                                                                   56


         Danu              N N N N N S                    N S S S
         Opik              N TS N N N S                   N N S S
         Markus            N TS S S             N S       S N S S
         Ozi               S N S S              S SS SS S SS SS
         Izul              S N SS SS S SS SS SS SS S
         Aank              S N S N S S                    S S N S
         Dimas             S N S N S N S N S N
         Niea              SS N SS S            SS S      SS SS S SS
         Nina              S N SS S             S N S N SS S
         Kholik            S N S N S SS S N S N
         Budi              S N S N S N S N S SS
         Faizah            SS N SS S            S S       S SS S SS
         Siti              S N SS S             S N SS S S SS
         Iwan              N TS N TS S TS S S S N
         Dina              S N N S              S S       S S N S
Untuk mengetahui kesimpulan dari setiap pertanyaan penulis menggunakan sistem bobot,
pada tabel 4.2 ditetapkan bobot nilai dari setiap jawaban.
 Tabel 4.2 Bobot Nilai
                    No          Jawaban                                Bobot
                    1.          Sangat Setuju (SS)                     5
                    2.          Setuju (S)                             4
                    3.          Normal (N)                             3
                    4.          Tidak Setuju (TS)                      2
                    5.          Sangat Tidak Setuju (STS)              1


Pada pertanyaan nomor 1 dan 2 pada kuisioner, penulis menitik beratkan kepada tampilan
program. Pada tabel 4.3 dapat dilihat bobot nilai untuk tampilan program.
Tabel 4.3 Bobot Nilai Tampilan Program
                  Nomor Pertanyaan                  SS S      N    TS STS
                  1 dan 2                           3    15   19   3       0
                  Total Bobot                       15   60   57   6       0


Nilai bobot untuk tampilan program adalah :
                                                                                       57


     15 + 60 + 57 + 6
                              = 3,45
           2 x 20
Berdasarkan bobot yang didapat di atas yaitu 3,45, maka dapat dikatakan bahwa tampilan
program pada aplikasi adalah baik.
Pada pertanyaan nomor 3 dan 4 pada kuisioner, penulis menitik beratkan kepada cara
penggunaan program. Pada tabel 4.4 dapat dilihat bobot nilai untuk cara penggunaan
program.
Tabel 4.4 Bobot Nilai Cara penggunaan Program
                    Nomor Pertanyaan            SS S      N    TS STS
                    3 dan 4                     13   16   10   1   0
                    Total Bobot                 65   64   30   2   0


Nilai bobot untuk cara penggunaan program adalah :

     65 + 64 + 30 + 2
                              = 4,025
           2 x 20

Berdasarkan bobot yang didapat di atas yaitu 4,025, maka dapat dikatakan bahwa untuk
penggunaan program adalah mudah dimengerti.
Pada pertanyaan nomor 5 dan 6 pada kuisioner, penulis menitik beratkan kepada
kegunaan program. Pada tabel 4.5 dapat dilihat bobot nilai untuk kegunaan program.
Tabel 4.5 Bobot Nilai Kegunaan Program
                    Nomor Pertanyaan            SS S      N    TS STS
                    5 dan 6                     8    23   8    1   0
                    Total Bobot                 40   92   24   2   0


Nilai bobot untuk cara penggunaan program adalah :

     40 + 92 + 24 + 2
                              = 3,95
         2 x 20

Berdasarkan bobot yang didapat di atas yaitu 3,95, maka dapat dikatakan bahwa program
yang dibuat sangat berguna untuk transaksi penjualan pulsa elektrik maupun penjualan
voucher.
                                                                                       58


Pada pertanyaan nomor 7 dan 8 pada kuisioner, penulis menitik beratkan kepada fasilitas
pada program. Pada tabel 4.6 dapat dilihat bobot nilai untuk fasilitas pada program.
Tabel 4.6 Bobot Nilai Fasilitas Pada Program
                    Nomor Pertanyaan           SS S       N    TS STS
                    7 dan 8                    11   20    9    0    0
                    Total Bobot                55   80    27   0    0


Nilai bobot untuk fasilitas pada program adalah     :

       55 + 80 + 27
                               = 4,05
           2 x 20

Berdasarkan bobot yang didapat di atas yaitu 4,05, maka dapat dikatakan bahwa fasilitas
pada program untuk transaksi penjualan pulsa elektrik maupun penjualan voucher adalah
sangat baik.
Pada pertanyaan nomor 9 dan 10 pada kuisioner, penulis menitik beratkan kepada
ketepatan program. Pada tabel 4.7 dapat dilihat bobot nilai untuk ketepatan program.
Tabel 4.7 Ketepatan Program
                    Nomor Pertanyaan           SS S       N    TS STS
                    9 dan 10                   11   24    5    0    0
                    Total Bobot                55   96    15   0    0


Nilai bobot untuk fasilitas pada program adalah     :

       55 + 96 + 15
                               = 4,15
         2 x 20

Berdasarkan bobot yang didapat di atas yaitu 4,15, maka dapat dikatakan bahwa
ketepatan program adalah sangat baik, baik untuk transaksi penjualan maupun pada
laporan.


4.4 Perbedaan Antara Sistem Lama dan Sistem Baru yang Telah Diuji
        Sistem baru dalam penjualan pulsa elektrik dan voucher dibuat untuk
menggantikan sistem yang lama baik dalam hal mempermudah pengguna dalam
                                                                                         59


melakukan transaksi maupun dalam hal laporan. Berikut adalah perbedaan antara sistem
lama dan sistem baru.
        Berdasarkan media yang digunakan.
a. sistem lama : menggunakan buku untuk mencatat transaksi dan handphone.
b. sistem baru : menggunakan komputer, kabel data, dan handphone.
        Berdasarkan cara penggunaan dalam hal transaksi.
a. sistem lama : untuk penjualan pulsa elektrik pengguna harus mengetik sms secara
manual pada handphone, dimana pengguna harus memasukkan kode ke provider
penyedia layanan pulsa elektrik berdasarkan permintaan pelanggan. sedangkan untuk
penjualan voucher menggunakan buku untuk mencatat transaksinya.
b. sistem baru : untuk penjualan pulsa elektrik, pengguna hanya memasukkan nomor
handphone pelanggan dan memasukkan nominal pulsa yang diinginkan pada aplikasi,
lalu aplikasi secara otomatis yang akan mengirim sms ke penyedia layanan pulsa elektrik.
untuk voucher, pengguna hanya mengklik voucher yang diinginkan pelanggan pada
aplikasi.
Berdasarkan laporan yang didapat dari sistem.
a. sistem lama : untuk laporan keuangan dapat dilihat pada buku, tetapi untuk mengetahui
jumlah keuntungan, pengguna harus menghitung secara manual.
b. sistem baru : laporan dapat dilihat baik secara harian, bulanan, dan tahunan. serta
keuntungan dapat dengan mudah diketahui karena aplikasi secara otomatis
menghitungnya. selain laporan keuangan, aplikasi juga dapat menampilkan laporan
absensi dari karyawan.
Berdasarkan software yang digunakan
a. sistem lama : tidak menggunakan software apapun.
b. sistem baru : menggunakan bahasa pemrograman Java dan MySQL untuk
databasenya. Karena bahasa pemrograman Java dan databasenya menggunakan MySQL
yang bersifat open source maka aplikasi ini dapat diperjualbelikan.
Berdasarkan kemudahan untuk pemilik counter pulsa
a.sistem lama : pemilik harus mengecek secara berkala ke counter, untuk melihat
pembukuan, dan absensi terhadap karyawan juga tidak dpt diketahui.
                                                                                       60


b.sistem baru : pemilik dapat melihat pembukuan tanpa harus menghitung kembali
keuntungan yang di dapat, karena aplikasi secara otomatis menghitungnya. Kontrol
terhadap karyawan juga dapat dilakukan dengan adanya pencatatan absensi yang
mencatat jam masuk sebagai log in pada aplikasi dan jam keluar sebagai log out.


4.5 Pembahasan Hasil Program
Program yang dibuat telah dapat menggantikan transaksi penjualan secara tradisional,
dimana program dapat memberikan kemudahan untuk pengguna baik dalam hal laporan
maupun pada saat transaksi penjualan, program juga dibuat untuk mudah dimengerti
walaupun oleh pengguna yang baru menggunakannya.
Program juga dapat meminimalisir kesalahan dari pengguna pada saat transaksi penjualan
pulsa elektrik, karena kode sms akan dikirim secara otomatis oleh program. Dalam hal
laporan, pengguna dipermudah untuk melihat total keuntungan yang diperoleh baik
secara harian, bulanan atau tahunan. Pemilik kios penjualan pun dipermudah untuk
mengontrol karyawannya, dengan adanya laporan absensi karyawan.
                                                                                        61


BAB V
PENUTUP


5.1      Kesimpulan
Berdasarkan hasil ujicoba pada tahap sebelumnya, diperoleh bobot nilai yang baik untuk
setiap point yang diuji seperti tampilan program, cara penggunaan program yang mudah
dimengerti, kegunaan program, fasilitas pada program dan ketepatan program. Hal ini
membuktikan bahwa program yang dibuat sangat baik digunakan untuk menggantikan
transaksi penjualan pulsa elektrik maupun voucher secara tradisional dan penggunaan
buku untuk pencatatan laporan.
Penggunaan program juga tidak dapat dilakukan oleh sembarang orang karena dilengkapi
dengan sistem login. Untuk transaksi penjualan pulsa elektrik pengguna hanya diminta
untuk memilih operator customer dan besarnya nominal yang dibeli oleh customer,
selanjutnya program yang akan mengirim kode SMS ke provider penyedia layanan pulsa
elektrik sehingga meminimalisir kesalahan dari pihak pengguna.


5.2      Saran
Untuk penggunaan program sebaiknya pengguna memastikan dahulu port komunikasi
yang digunakan pada saat menghubungkan komputer dan telepon selular menggunakan
kabel data, karena pada program yang dibuat tidak terdapat fasilitas untuk mendeteksi
port komunikasi secara otomatis. Dari segi laporan juga kemungkinan dapat
dikembangkan dengan adanya SMS request sehingga pemilik kios tidak perlu datang
untuk melihat laporan. Untuk pengubahan status penjualan pulsa elektrik dari belum
terkirim ke terkirim juga dapat dikembangkan dengan program yang dapat mengecek isi
SMS yang masuk dan mengubah status secara otomatis tanpa adanya campur tangan
pengguna. Untuk mengurangi masalah antrian pelanggan yang mungkin terjadi pada saat
transaksi, maka sistem dapat dikembangkan untuk pelayanan paralel.
                                                                                   62




LAMPIRAN
LAMPIRAN A
LISTING PROGRAM

File koneksi_database.java
import java.util.*;
import java.sql.*;

public class koneksi_database
{
         public Connection koneksiDatabase()
         {
                  try
                  {
                           Class.forName("org.gjt.mm.mysql.Driver");
                  }
                  catch (ClassNotFoundException cnfe)
                  {
                           System.out.println(cnfe);
                  }

                Connection koneksi = null;
                try
                {
                        koneksi =
DriverManager.getConnection("jdbc:mysql://localhost/db_dian_mulya", "root", "");
                }
                                                                                                     63

                 catch (SQLException sqle)
                 {
                          System.out.println(sqle);
                 }
                 return koneksi;
        }


File utama.java
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

public class Utama extends javax.swing.JFrame {
// manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
   Connection kon = new koneksi_database().koneksiDatabase();
// ================================ BATAS EDIT ==========================
   public String Vtgl="", Vjam="";
   private void bisa_menu_admin()
   {
      this.jMenu1.setVisible(true);
      this.jMenu2.setVisible(true);
      this.jMenu3.setVisible(true);
      this.jMenuItem5.setEnabled(false);
      this.jMenuItem6.setEnabled(true);
   }

  private void bisa_menu_user()
  {
     this.jMenu1.setVisible(false);
     this.jMenu2.setVisible(true);
     this.jMenu3.setVisible(false);
     this.jMenuItem5.setEnabled(false);
     this.jMenuItem6.setEnabled(true);
  }

  private void tidak_menu()
  {
     this.jMenu1.setVisible(false);
     this.jMenu2.setVisible(false);
     this.jMenu3.setVisible(false);
     this.jMenuItem5.setEnabled(true);
     this.jMenuItem6.setEnabled(false);
  }

  private void absen_keluar()
  {
     try {
        String sql1 = "update tb_absen set jam_keluar = '" + Vjam + "' where jam_keluar like '0'";
        Statement stat1 = kon.createStatement();
        int rs1 = stat1.executeUpdate(sql1);
     } catch (SQLException ex) {
                                                                                                    64

          System.out.println("Error OnClose Menu Utama => " + ex);
      }
  }

  public void tanggal()
  {
    try{
       ActionListener taskPerformer = new ActionListener()
       {
          public void actionPerformed(ActionEvent ae)
          {
            String nolbulan = "";
            String nolhari = "";
            String noljam = "";
            String nolmenit= "";
            String noldetik = "";

              //MEMBUAT DATE
              Calendar dt = Calendar.getInstance();
              //MENGAMBIL NILAI JAM, MENIT, DETIK

            String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"};
            String
Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No
vember","Desember"};
            int tahun = dt.get(dt.YEAR);
            int bulan = dt.get(dt.MONTH);
            int hari_V = dt.get(dt.DAY_OF_WEEK);
            int hari = dt.get(dt.DAY_OF_MONTH);
            int jam = dt.get(dt.HOUR_OF_DAY);
            int menit = dt.get(dt.MINUTE);
            int detik =dt.get(dt.SECOND);

              //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit)
              if (bulan < 10)
              {
                    nolbulan = "0";
              }
              if (hari < 10)
              {
                    nolhari = "0";
              }
              if (jam < 10)
              {
                    noljam = "0";
              }
              if (menit < 10)
              {
                    nolmenit = "0";
              }
              if (detik < 10)
              {
                    noldetik = "0";
              }

              //MEMBUAT string tanggal
                                                                      65

                String Sbulan = nolbulan + Integer.toString(bulan);
                String Shari = nolhari + Integer.toString(hari);
                String Sjam = noljam + Integer.toString(jam);
                String Smenit = nolmenit + Integer.toString(menit);
                String Sdetik = noldetik + Integer.toString(detik);

                Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun;
                Vjam = Sjam+":"+Smenit+":"+Sdetik;
            }
       };

       //TIMER
       new javax.swing.Timer(1000, taskPerformer).start();
     }
     catch (Exception e)
     {System.out.println ("Error : " + e);}
 }


  // ================================ BATAS EDIT
==============================



 /** Creates new form Utama */
 /* Konstruktor*/
 public Utama() {
    tanggal();
    initComponents();
    setContentPane(this.jDesktopPane1);
    tidak_menu();
    //bisa_menu_admin();
 }

 /** This method is called from within the constructor to
  * initialize the form.
  * WARNING: Do NOT modify this code. The content of this method is
  * always regenerated by the Form Editor.
  */
 // <editor-fold defaultstate="collapsed" desc="Generated Code">
 private void initComponents() {

     jDesktopPane1 = new javax.swing.JDesktopPane();
     jMenuBar1 = new javax.swing.JMenuBar();
     jMenu4 = new javax.swing.JMenu();
     jMenuItem5 = new javax.swing.JMenuItem();
     jMenuItem6 = new javax.swing.JMenuItem();
     jSeparator2 = new javax.swing.JSeparator();
     jMenuItem7 = new javax.swing.JMenuItem();
     jMenu1 = new javax.swing.JMenu();
     jMenuItem1 = new javax.swing.JMenuItem();
     jMenuItem3 = new javax.swing.JMenuItem();
     jMenuItem8 = new javax.swing.JMenuItem();
     jMenuItem9 = new javax.swing.JMenuItem();
     jMenu2 = new javax.swing.JMenu();
     jMenuItem2 = new javax.swing.JMenuItem();
                                                                       66

jMenuItem10 = new javax.swing.JMenuItem();
jMenuItem11 = new javax.swing.JMenuItem();
jMenu3 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem12 = new javax.swing.JMenuItem();
jMenuItem13 = new javax.swing.JMenuItem();
jMenuItem14 = 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);
   }
});
getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER);

jMenu4.setText("File"); // NOI18N
jMenu4.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenu4ActionPerformed(evt);
   }
});

jMenuItem5.setText("Log In"); // NOI18N
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem5ActionPerformed(evt);
   }
});
jMenu4.add(jMenuItem5);

jMenuItem6.setText("Log Out"); // NOI18N
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem6ActionPerformed(evt);
   }
});
jMenu4.add(jMenuItem6);
jMenu4.add(jSeparator2);

jMenuItem7.setText("Keluar"); // NOI18N
jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem7ActionPerformed(evt);
   }
});
jMenu4.add(jMenuItem7);

jMenuBar1.add(jMenu4);

jMenu1.setText("Data"); // NOI18N
jMenu1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenu1ActionPerformed(evt);
   }
});
                                                                      67


jMenuItem1.setText("Petugas"); // NOI18N
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem1ActionPerformed(evt);
   }
});
jMenu1.add(jMenuItem1);

jMenuItem3.setText("Operator"); // NOI18N
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem3ActionPerformed(evt);
   }
});
jMenu1.add(jMenuItem8);

jMenuItem9.setText("Voucher "); // NOI18N
jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem9ActionPerformed(evt);
   }
});
jMenu1.add(jMenuItem9);

jMenuBar1.add(jMenu1);

jMenu2.setText("Transaksi"); // NOI18N

jMenuItem2.setText("Pulsa Elektrik"); // NOI18N
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem2ActionPerformed(evt);
   }
});
jMenu2.add(jMenuItem10);

jMenuItem11.setText("Voucher ");
jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem11ActionPerformed(evt);
   }
});
jMenu2.add(jMenuItem11);

jMenuBar1.add(jMenu2);

jMenu3.setText("Laporan"); // NOI18N

jMenuItem4.setText("Laporan Pulsa Elektrik"); // NOI18N
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jMenuItem4ActionPerformed(evt);
   }
});
                                                                                                  68

    jMenu3.add(jMenuItem12);

    jMenuItem13.setText("Laporan Voucher");
    jMenuItem13.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jMenuItem13ActionPerformed(evt);
       }
    });
    jMenu3.add(jMenuItem13);

    jMenuItem14.setText("Laporan Absensi Karyawan");
    jMenuItem14.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jMenuItem14ActionPerformed(evt);
       }
    });
    jMenu3.add(jMenuItem14);

    jMenuBar1.add(jMenu3);

    setJMenuBar(jMenuBar1);

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

 private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {
 //Menu Keluar
   if(JOptionPane.showConfirmDialog(null,"Apakan anda ingin keluar dari aplikasi ini ?",".:: CV DIAN
MULYA ::.",0,3) == 0)
    {
       absen_keluar();
       dispose();
    }
 }

  private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
  // MENU Log In
     this.jDesktopPane1.removeAll();
     repaint();
     final Login log = new Login();
     log.setTitle("LOGIN CV DIAN MULYA");
          log.setSize(380,160);
          Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
     int x = (this.getWidth()-log.getWidth()) / 2;
          int y = (this.getHeight()-log.getHeight()) / 2;
          log.setLocation(x,y-25);
     log.show();
     this.jDesktopPane1.add(log);

    log.jButton5.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(ActionEvent a)
      {
         String nama = log.jTextField1.getText();
         String pass = log.jPasswordField1.getText();
         try
                                                                                                                    69

              {
                  String sql = "select * from tb_petugas where nama = '" + nama + "' and pswd = '" + pass +"'";
                  Statement stat = kon.createStatement();
                  ResultSet rs = stat.executeQuery(sql);
                  rs.last();
                  if(rs.getRow() > 0)
                  {
                     String sql1 = "insert into tb_absen values('" + rs.getString(1) + "', '" + Vtgl + "', '" + Vjam +
"','0')";
                    Statement stat1 = kon.createStatement();
                    int rs1 = stat1.executeUpdate(sql1);

                    log.dispose();
                    String hak = rs.getString(4);
                    if(hak.equals("Admin"))
                    {
                       bisa_menu_admin();
                    }
                    else if(hak.equals("User"))
                    {
                       bisa_menu_user();
                    }
                  }
                  else
                  {
                     JOptionPane.showMessageDialog(null,"Access Denied !!!",".:: Error Log In ::.",0);
                  }
              }
              catch(Exception e)
              {
                System.out.println("Error " + e);
              }
          }
       });
   }

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

   }

   private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
   // MENU OPERATOR
      this.jDesktopPane1.removeAll();
      repaint();
      Provider prov = new Provider();
      prov.setTitle("CV Dian Mulya <Admin Data Operator>");
           prov.setSize(655,490);
           Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
           int x = (this.getWidth() - prov.getSize().width)/2;
           int y = (this.getHeight() - prov.getSize().height)/2;
           prov.setLocation(x,y-25);
      prov.show();
      this.jDesktopPane1.add(prov);
   }

   private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
                                                                             70

  // MENU PETUGAS
     this.jDesktopPane1.removeAll();
     repaint();
     Petugas tugas = new Petugas();
     tugas.setTitle("CV Dian Mulya <Admin Data Petugas>");
          tugas.setSize(580,475);
          Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
          int x = (this.getWidth() - tugas.getSize().width)/2;
          int y = (this.getHeight() - tugas.getSize().height)/2;
          tugas.setLocation(x,y-25);
     tugas.show();
     this.jDesktopPane1.add(tugas);
  }

   private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
   }

  private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
  // MENU PENJUALAN pulsa elektrik
     this.jDesktopPane1.removeAll();
     repaint();
     Penjualan_Pulsa jual = new Penjualan_Pulsa();
     jual.setTitle("CV Dian Mulya <Transaksi Penjualan Pulsa Elektrik)");
          jual.setSize(1015,680);
          Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
          int x = (this.getWidth() - jual.getSize().width)/2;
          int y = (this.getHeight() - jual.getSize().height)/2;
          jual.setLocation(x-2,y-27);
     jual.show();
     this.jDesktopPane1.add(jual);
  }

private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL LOG OUT
   absen_keluar();
   tidak_menu();
}

private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
   // Laporan penjualan pulsa
      this.jDesktopPane1.removeAll();
      repaint();
      Laporan_Jual Lap = new Laporan_Jual();
      Lap.setTitle("CV Dian Mulya (Laporan Penjualan Pulsa Elektrik)");
           Lap.setSize(1015,695);
           Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
           int x = (this.getWidth() - Lap.getSize().width)/2;
           int y = (this.getHeight() - Lap.getSize().height)/2;
           Lap.setLocation(x-2,y-24);
      Lap.show();
      this.jDesktopPane1.add(Lap);
}

private void formWindowClosing(java.awt.event.WindowEvent evt) {
   absen_keluar();
                                                                             71

}

private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {
// MENU voucher
     this.jDesktopPane1.removeAll();
     repaint();
     voucher vou = new voucher();
     vou.setTitle("CV Dian Mulya <Admin voucher>");
          vou.setSize(530,410);
          Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
          int x = (this.getWidth() - vou.getSize().width)/2;
          int y = (this.getHeight() - vou.getSize().height)/2;
          vou.setLocation(x,y-25);
     vou.show();
     this.jDesktopPane1.add(vou);
}


private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {
// transaksi voucher
      this.jDesktopPane1.removeAll();
      repaint();
      trans_voucher tv = new trans_voucher();
      tv.setTitle("CV Dian Mulya <Transaksi Penjualan Voucher)");
           tv.setSize(660,500);
           Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
           int x = (this.getWidth() - tv.getSize().width)/2;
           int y = (this.getHeight() - tv.getSize().height)/2;
           tv.setLocation(x-2,y-27);
      tv.show();
      this.jDesktopPane1.add(tv);
}


private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {
// Laporan penjualan voucher
     this.jDesktopPane1.removeAll();
     repaint();
     laporan_voucher lapvo = new laporan_voucher();
     lapvo.setTitle("CV Dian Mulya (Laporan Penjualan Voucher)");
          lapvo.setSize(1015,695);
          Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
          int x = (this.getWidth() - lapvo.getSize().width)/2;
          int y = (this.getHeight() - lapvo.getSize().height)/2;
          lapvo.setLocation(x-2,y-24);
     lapvo.show();
     this.jDesktopPane1.add(lapvo);
}

private void jMenuItem14ActionPerformed(java.awt.event.ActionEvent evt) {
// Laporan absensi pegawai
     this.jDesktopPane1.removeAll();
     repaint();
     laporan_absen lapab = new laporan_absen();
     lapab.setTitle("CV Dian Mulya (Laporan Absensi Karyawan)");
          lapab.setSize(1015,695);
                                                                                                        72

           Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
           int x = (this.getWidth() - lapab.getSize().width)/2;
           int y = (this.getHeight() - lapab.getSize().height)/2;
           lapab.setLocation(x-2,y-24);
      lapab.show();
      this.jDesktopPane1.add(lapab);
}

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       Utama tama = new Utama(); //ngasih nama form = jual
       tama.setSize(1025,745);          //bwt ngatur lebar form (format= (widht, hight))
       Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen
       int lebar = (screen.width - tama.getSize().width)/2;
       int tinggi = (screen.height - tama.getSize().height)/2;
       tama.setTitle("CV.Dian Mulya");
       tama.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       tama.setLocation(lebar,tinggi-15);
       tama.setResizable(false);
       tama.setVisible(true);
    }

    // Variables declaration - do not modify
    private javax.swing.JDesktopPane jDesktopPane1;
    public javax.swing.JMenu jMenu1;
    public javax.swing.JMenu jMenu2;
    public javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem11;
    private javax.swing.JMenuItem jMenuItem12;
    private javax.swing.JMenuItem jMenuItem13;
    private javax.swing.JMenuItem jMenuItem14;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem7;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JSeparator jSeparator2;
    // End of variables declaration

}

File login.java
import java.sql.*;
import javax.swing.*;
//public class Login extends javax.swing.JFrame {
public class Login extends javax.swing.JInternalFrame {
                                                                            73

/** Creates new form Login */
public Login() {
  initComponents();
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

  jLabel4 = new javax.swing.JLabel();
  jTextField1 = new javax.swing.JTextField();
  jLabel3 = new javax.swing.JLabel();
  jButton5 = new javax.swing.JButton();
  jButton6 = new javax.swing.JButton();
  jPasswordField1 = new javax.swing.JPasswordField();

  setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  getContentPane().setLayout(null);

  jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
  jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  jLabel4.setText("Username : ");
  getContentPane().add(jLabel4);
  jLabel4.setBounds(10, 20, 140, 15);

  jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11));
  getContentPane().add(jTextField1);
  jTextField1.setBounds(170, 20, 170, 20);

  jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
  jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  jLabel3.setText("Password : ");
  getContentPane().add(jLabel3);
  jLabel3.setBounds(20, 40, 130, 15);

  jButton5.setText("LoGin");
  jButton5.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
       jButton5ActionPerformed(evt);
     }
  });
  getContentPane().add(jButton5);
  jButton5.setBounds(90, 70, 90, 23);

  jButton6.setText("Keluar");
  jButton6.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
       jButton6ActionPerformed(evt);
     }
  });
  getContentPane().add(jButton6);
  jButton6.setBounds(190, 70, 90, 23);
                                                                                                        74


        jPasswordField1.addKeyListener(new java.awt.event.KeyAdapter() {
           public void keyReleased(java.awt.event.KeyEvent evt) {
             jPasswordField1KeyReleased(evt);
           }
        });
        getContentPane().add(jPasswordField1);
        jPasswordField1.setBounds(170, 40, 170, 20);

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

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
    // TOMBOL MASUK

    }

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
    // TOMBOL KELUAR
       dispose();
    }

private void jPasswordField1KeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       /*
       Login log = new Login();         //ngasih nama form = jual
       log.setSize(380,140); //bwt ngatur lebar form (format= (widht, hight))
       Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen
       int lebar = (screen.width - log.getSize().width)/2;
       int tinggi = (screen.height - log.getSize().height)/2;
       log.setTitle(".:: Login ::.");
       log.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       log.setLocation(lebar,tinggi-15);
       log.setResizable(false);
       log.setVisible(true);
       */
    }

    // Variables declaration - do not modify
    public javax.swing.JButton jButton5;
    public javax.swing.JButton jButton6;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    public javax.swing.JPasswordField jPasswordField1;
    public javax.swing.JTextField jTextField1;
    // End of variables declaration

}

File petugas.java
                                                                                                  75

import java.sql.*;
import javax.swing.*;
//public class Petugas extends javax.swing.JFrame {
public class Petugas extends javax.swing.JInternalFrame {
//=========================== BATAS EDIT ===============================
// manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
  Connection kon = new koneksi_database().koneksiDatabase();
// BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabel = new javax.swing.table.DefaultTableModel(null, new
String[]{"ID PETUGAS","NAMA PETUGAS","PASSWORD","HAK AKSES"})
  {
       public boolean isCellEditable(int iRows, int iCols)
       {
           return false;
       }
  };


  private void bersih()
  {
       this.jTextField1.setText("");
       this.jTextField2.setText("");
       this.jLabel2.setText("");
       this.jComboBox1.setSelectedIndex(0);
  }
  public void hapustabel()
  {
       int row = tabel.getRowCount();
       for (int i=0; i < row ; i++ )
       {
             tabel.removeRow(0);
       }
  }


  public void tampilkandataketabel()
  {
       hapustabel();
       try
                                                                       76

    {
        String sql = "select * from tb_petugas order by NAMA";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        while (rs.next())
        {
            String id = rs.getString(1);
            String nama = rs.getString(2);
            String pass = rs.getString(3);
            String hak = rs.getString(4);
            String[] data = {id, nama, pass, hak};
            tabel.addRow(data);
        }
    }
    catch (Exception e)
    {
        System.out.println("Error " + e);
    }
}


private void id_petugas()
{
    int byk_data;
    byk_data = 0;
    try
    {
        String sql = "select * from tb_petugas order by id_petugas";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        rs.last();
        byk_data = rs.getRow();
        if (byk_data == 0)
        {
            this.jLabel2.setText("P001");
        }
        else
        {
                                                                                   77

              String id = rs.getString(1);
                      int n = Integer.parseInt(id.substring(1, 4)) + 1;
              String nomor = "";
              for(int i = 1; i <= 3 - String.valueOf(n).length(); i++)
              {
                  nomor = nomor + "0";
              }
              nomor = "P" + nomor + String.valueOf(n);
              this.jLabel2.setText(nomor);
          }
      }
      catch (Exception e)
      {
          System.out.println("Error Id Petugas : " + e + "\n");
      }
 }


//=============================                                           BATAS   EDIT
=====================================
     /*
  * INI ADALAh KONSTRUKTOR !!!
  **/
 public Petugas() {
      initComponents();
      tampilkandataketabel();
      this.jLabel1.setVisible(false);
      this.jLabel1.setText("");
      this.jLabel2.setText("");
 }


 /** This method is called from within the constructor to
  * initialize the form.
  * WARNING: Do NOT modify this code. The content of this method is
  * always regenerated by the Form Editor.
  */
 // <editor-fold defaultstate="collapsed" desc="Generated Code">
 private void initComponents() {
                                                                          78

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel17 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jComboBox1 = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
jTextField3 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Petugas");
getContentPane().setLayout(null);
jTable1.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"
      }
));
this.jTable1.setModel(tabel);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseClicked(java.awt.event.MouseEvent evt) {
                                                                                                   79

           jTable1MouseClicked(evt);
       }
     });
     jScrollPane1.setViewportView(jTable1);
     getContentPane().add(jScrollPane1);
     jScrollPane1.setBounds(10, 10, 550, 190);
     jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
     jLabel1.setForeground(new java.awt.Color(51, 51, 255));
     jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
     jLabel1.setText("Tambah Data");
     jLabel1.setOpaque(true);
     getContentPane().add(jLabel1);
     jLabel1.setBounds(130, 230, 110, 20);




jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledB
order(null,              "",                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new
java.awt.Color(0, 0, 0)))); // NOI18N
     jPanel1.setLayout(null);


     jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12));
     jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
     jLabel17.setText("ID Petugas       : ");
     jPanel1.add(jLabel17);
     jLabel17.setBounds(30, 20, 100, 20);


     jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12));
     jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
     jLabel3.setText("Password    : ");
     jPanel1.add(jLabel3);
     jLabel3.setBounds(40, 60, 90, 15);


     jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
     jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
     jLabel5.setText("Hak Akses     : ");
     jPanel1.add(jLabel5);
                                                                                           80

     jLabel5.setBounds(30, 80, 100, 15);


     jButton5.setText("OK");
     jButton5.setEnabled(false);
     jButton5.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
           jButton5ActionPerformed(evt);
       }
     });
     jPanel1.add(jButton5);
     jButton5.setBounds(110, 110, 90, 23);


     jButton6.setText("BATAL");
     jButton6.setEnabled(false);
     jButton6.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
           jButton6ActionPerformed(evt);
       }
     });
     jPanel1.add(jButton6);
     jButton6.setBounds(210, 110, 90, 23);
     jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11));
     jPanel1.add(jTextField1);
     jTextField1.setBounds(140, 40, 170, 20);
     jTextField2.setFont(new java.awt.Font("Tahoma", 1, 11));
     jPanel1.add(jTextField2);
     jTextField2.setBounds(140, 60, 170, 20);
     jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12));
     jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
     jLabel4.setText("Nama Petugas    : ");
     jPanel1.add(jLabel4);
     jLabel4.setBounds(10, 40, 120, 15);


     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pilih", "Admin",
"User" }));
     jPanel1.add(jComboBox1);
     jComboBox1.setBounds(140, 80, 170, 20);
                                                                   81



jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel2.setText("jLabel2");
jPanel1.add(jLabel2);
jLabel2.setBounds(140, 20, 170, 20);


getContentPane().add(jPanel1);
jPanel1.setBounds(120, 240, 330, 150);


jButton1.setText("Tambah");
jButton1.addActionListener(new java.awt.event.ActionListener() {
  public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
  }
});
getContentPane().add(jButton1);
jButton1.setBounds(90, 400, 90, 23);


jButton2.setText("Edit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
  public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton2ActionPerformed(evt);
  }
});
getContentPane().add(jButton2);
jButton2.setBounds(190, 400, 90, 23);


jButton3.setText("Hapus");
jButton3.addActionListener(new java.awt.event.ActionListener() {
  public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton3ActionPerformed(evt);
  }
});
getContentPane().add(jButton3);
jButton3.setBounds(290, 400, 90, 23);


jButton4.setText("Keluar");
                                                                          82

    jButton4.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
          jButton4ActionPerformed(evt);
      }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(390, 400, 90, 23);


    jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel6.setText("Cari Nama Petugas      : ");
    getContentPane().add(jLabel6);
    jLabel6.setBounds(190, 210, 190, 15);


    jTextField3.setFont(new java.awt.Font("Tahoma", 1, 11));
    jTextField3.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
          jTextField3ActionPerformed(evt);
      }
    });
    jTextField3.addKeyListener(new java.awt.event.KeyAdapter() {
      public void keyReleased(java.awt.event.KeyEvent evt) {
          jTextField3KeyReleased(evt);
      }
    });
    getContentPane().add(jTextField3);
    jTextField3.setBounds(390, 210, 170, 20);


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


private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
//TOMBOL KELUAR
    dispose();
}


private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
                                                                                                                83

  // TABEL PETUGAS
      String aksi = this.jLabel1.getText();
      if(aksi.equals("Edit Data") || aksi.equals("Hapus Data"))
      {
          int brs = this.jTable1.getSelectedRow();
          String id = tabel.getValueAt(brs,0).toString();
          String nama = tabel.getValueAt(brs,1).toString();
          String kunci = tabel.getValueAt(brs,2).toString();
          String hak = tabel.getValueAt(brs,3).toString();
          this.jLabel2.setText(id);
          this.jTextField1.setText(nama);
          this.jTextField2.setText(kunci);
          this.jComboBox1.setSelectedItem(hak);
          this.jTextField1.requestFocus();
      }
  }


  private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL OK
      String id = this.jLabel2.getText();
      String nama = this.jTextField1.getText();
      String kunci = this.jTextField2.getText();


      if(jLabel1.getText().equals("Tambah Data"))
      {
          if(nama.equals("") || kunci.equals("") || jComboBox1.getSelectedItem().equals("Pilih"))
          {
              JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA
INFORMATION ::.", 1);
              this.jTextField1.requestFocus();
          }
          else
          {
              try
              {
                  String sql = "insert into tb_petugas values('" + jLabel2.getText() + "','" + jTextField1.getText()
+ "','" + jTextField2.getText() + "','" + jComboBox1.getSelectedItem() + "')";
                                                                                                      84

                Statement stat = kon.createStatement();
                int rs = stat.executeUpdate(sql);
                bersih();
                tampilkandataketabel();
                id_petugas();
                this.jTextField1.requestFocus();
            }
            catch (Exception e)
            {
                System.out.println("Error Tambah Data : " + e + "\n");
            }
        }
    }


    else if(jLabel1.getText().equals("Edit Data"))
    {
        if(this.jLabel2.getText().equals(""))
        {
            JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV DIAN
MULYA INFORMATION ::.", 1);
            this.jTextField1.requestFocus();
        }
        else
        {
            if(nama.equals("") || kunci.equals("") || jComboBox1.getSelectedItem().equals("Pilih"))
            {
                JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA
INFORMATION ::.", 1);
                this.jTextField1.requestFocus();
            }
            else
            {
                if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin merubah data ini ?", ".:: CV
DIAN MULYA CONFIRMATION ::.",0,3)==0)
                {
                    try
                    {
                                                                                                             85

                         String sql = "update tb_petugas set nama = '" + jTextField1.getText() + "', pswd = '" +
jTextField2.getText() + "', hak = '" + jComboBox1.getSelectedItem() + "' where id_petugas = '" +
jLabel2.getText() + "'";
                         Statement stat = kon.createStatement();
                         int rs = stat.executeUpdate(sql);
                         bersih();
                         tampilkandataketabel();
                         this.jTextField1.requestFocus();
                     }
                     catch (Exception e)
                     {
                         System.out.println("Error Edit Data : " + e + "\n");
                     }
                 }
             }
         }
     }


     else if(jLabel1.getText().equals("Hapus Data"))
     {
         if(this.jLabel2.getText().equals(""))
         {
             JOptionPane.showMessageDialog(null, "Pilih data yang akan diHapus pada tabel !", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
             this.jTextField1.requestFocus();
         }
         else
         {
             if(nama.equals("") || kunci.equals("") || jComboBox1.getSelectedItem().equals("Pilih"))
             {
                 JOptionPane.showMessageDialog(null, "Isi data dengan lengkap !!!", ".:: CV DIAN MULYA
INFORMATION ::.", 1);
                 this.jTextField1.requestFocus();
             }
             else
             {
                                                                                                                 86

                 if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin menghapus data ini ?", ".:: CV
DIAN MULYA CONFIRMATION ::.",0,3)==0)
                 {
                     try
                     {
                         String sql = "delete from tb_petugas where id_petugas = '" + jLabel2.getText() + "'";
                         Statement stat = kon.createStatement();
                         int rs = stat.executeUpdate(sql);
                         bersih();
                         tampilkandataketabel();
                         this.jTextField1.requestFocus();
                     }
                     catch (Exception e)
                     {
                         System.out.println("Error Edit Data : " + e + "\n");
                     }
                 }
             }
         }
     }
 }


 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
 // TOMBOL HAPUS
     bersih();
     this.jLabel1.setVisible(true);
     this.jLabel1.setText("Hapus Data");
     this.jButton5.setEnabled(true);
     this.jButton6.setEnabled(true);
     this.jTextField1.requestFocus();
 }


 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
 // TOMBOL EDIT
     bersih();
     this.jLabel1.setVisible(true);
     this.jLabel1.setText("Edit Data");
                                                                                                        87

      this.jButton5.setEnabled(true);
      this.jButton6.setEnabled(true);
      this.jTextField1.requestFocus();
  }


  private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL BATAL
      bersih();
      tampilkandataketabel();
      this.jTextField3.setText("");
      this.jLabel1.setText("");
      this.jLabel1.setVisible(false);
      this.jButton5.setEnabled(false);
      this.jButton6.setEnabled(false);
      jButton1.requestFocus();
  }


  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL TAMBAH
      bersih();
      id_petugas();
      this.jLabel1.setVisible(true);
      this.jLabel1.setText("Tambah Data");
      this.jButton5.setEnabled(true);
      this.jButton6.setEnabled(true);
      this.jTextField1.requestFocus();
  }


private void jTextField3KeyReleased(java.awt.event.KeyEvent evt) {
  // CARI NAMA Petugas
  hapustabel();
  try
  {
      String sql = "select * from tb_petugas where nama like '" + this.jTextField3.getText() + "%' order by
NAMA";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
                                                                                                         88

        while (rs.next())
        {
             String id = rs.getString(1);
             String nama = rs.getString(2);
             String pass = rs.getString(3);
             String hak = rs.getString(4);
             String[] data = {id, nama, pass, hak};
             tabel.addRow(data);
        }
    }
    catch (Exception e)
    {
        System.out.println("Error CARI NAMA PETUGAS" + e + "\n");
    }
}


private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}


    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        /*
        Petugas tugas = new Petugas();                //ngasih nama form = jual
        tugas.setSize(580,475);              //bwt ngatur lebar form (format= (widht, hight))
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen
        int lebar = (screen.width - tugas.getSize().width)/2;
        int tinggi = (screen.height - tugas.getSize().height)/2;
        tugas.setTitle(".:: CV Dian Mulya ::.");
        tugas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        tugas.setLocation(lebar,tinggi-15);
        tugas.setResizable(false);
        tugas.setVisible(true);
        */
    }
                                                                                                      89



    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel17;
    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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
}


File provider.java
import java.sql.*;
import javax.swing.*;


//public class Provider extends javax.swing.JFrame {
public class Provider extends javax.swing.JInternalFrame {


    // =================== BATAS EDIT =====================================

    // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
    Connection kon = new koneksi_database().koneksiDatabase();

   // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabel = new javax.swing.table.DefaultTableModel(null, new
String[]{"ID OPERATOR","NAMA OPERATOR","NOMINAL PULSA","HARGA BELI","HARGA
JUAL","KODE ISI"})
   {
                                                                                     90

     public boolean isCellEditable(int iRows, int iCols)
     {
       return false;
     }
};

private void bersih()
{
   this.jTextField1.setText("");
   this.jTextField2.setText("");
   this.jTextField3.setText("");
   this.jTextField4.setText("");
   this.jTextField5.setText("");
   this.jLabel2.setText("");
}

public void hapustabel()
{
  int row = tabel.getRowCount();
  for (int i=0; i < row ; i++ )
  {
        tabel.removeRow(0);
  }
}

public void tampilkandataketabel()
{
  hapustabel();
  try
  {
     String sql = "select * from tb_operator order by NAMA_operator, harga_pulsa";
     Statement stat = kon.createStatement();
     ResultSet rs = stat.executeQuery(sql);
     while (rs.next())
     {
        String id = rs.getString(1);
        String nama = rs.getString(2);
        String hb = rs.getString(3);
        String hj = rs.getString(4);
        String hp = rs.getString(5);
        String kode = rs.getString(6);
        String[] data = {id, nama, hp, hb, hj, kode};
        tabel.addRow(data);
     }
  }
  catch (Exception e)
  {
     System.out.println("Error " + e);
  }
}

private void id_operator()
{
   int byk_data;
   byk_data = 0;
   try
                                                                         91

    {
        String sql = "select * from tb_operator order by id_operator";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        rs.last();
        byk_data = rs.getRow();
        if (byk_data == 0)
        {
           this.jLabel2.setText("PR01");
        }
        else
        {
           String id = rs.getString(1);
                    int n = Integer.parseInt(id.substring(2, 4)) + 1;
           String nomor = "";
           for(int i = 1; i <= 2 - String.valueOf(n).length(); i++)
           {
              nomor = nomor + "0";
           }
           nomor = "PR" + nomor + String.valueOf(n);
           this.jLabel2.setText(nomor);
        }
    }
    catch (Exception e)
    {
      System.out.println("Error Id Petugas : " + e + "\n");
    }
}

// ======================== BATAS EDIT ===============================


/** Creates new form Provider */
public Provider() {
  initComponents();
  bersih();
  tampilkandataketabel();
  this.jButton4.setVisible(false);
  this.jLabel1.setVisible(false);
  this.jLabel1.setText("");
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jLabel1 = new javax.swing.JLabel();
    jPanel1 = new javax.swing.JPanel();
    jLabel17 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
                                                                                                   92

    jLabel5 = new javax.swing.JLabel();
    jButton5 = new javax.swing.JButton();
    jButton6 = new javax.swing.JButton();
    jTextField1 = new javax.swing.JTextField();
    jTextField2 = new javax.swing.JTextField();
    jLabel4 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jTextField3 = new javax.swing.JTextField();
    jLabel6 = new javax.swing.JLabel();
    jTextField4 = new javax.swing.JTextField();
    jTextField5 = new javax.swing.JTextField();
    jLabel7 = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();
    jButton7 = new javax.swing.JButton();
    jLabel8 = new javax.swing.JLabel();
    jTextField6 = new javax.swing.JTextField();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);

    jTable1.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"
        }
    ));
    this.jTable1.setModel(tabel);
    jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
           jTable1MouseClicked(evt);
        }
    });
    jScrollPane1.setViewportView(jTable1);

    getContentPane().add(jScrollPane1);
    jScrollPane1.setBounds(10, 10, 630, 190);

    jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
    jLabel1.setForeground(new java.awt.Color(51, 51, 255));
    jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    jLabel1.setText("Tambah Data");
    jLabel1.setOpaque(true);
    getContentPane().add(jLabel1);
    jLabel1.setBounds(160, 230, 100, 20);


jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledB
order("")));
                                                                     93

jPanel1.setLayout(null);

jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel17.setText("ID Operator : ");
jPanel1.add(jLabel17);
jLabel17.setBounds(30, 10, 100, 20);

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Nominal Pulsa : ");
jPanel1.add(jLabel3);
jLabel3.setBounds(20, 50, 110, 15);

jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel5.setText("Harga Beli : ");
jPanel1.add(jLabel5);
jLabel5.setBounds(30, 70, 100, 15);

jButton5.setText("OK");
jButton5.setEnabled(false);
jButton5.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton5ActionPerformed(evt);
   }
});
jPanel1.add(jButton5);
jButton5.setBounds(110, 140, 90, 23);

jButton6.setText("BATAL");
jButton6.setEnabled(false);
jButton6.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton6ActionPerformed(evt);
   }
});
jPanel1.add(jButton6);
jButton6.setBounds(210, 140, 90, 23);

jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11));
jPanel1.add(jTextField1);
jTextField1.setBounds(140, 30, 170, 20);

jTextField2.setFont(new java.awt.Font("Tahoma", 1, 11));
jPanel1.add(jTextField2);
jTextField2.setBounds(140, 50, 170, 20);

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Nama Operator : ");
jPanel1.add(jLabel4);
jLabel4.setBounds(10, 30, 120, 15);

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel2.setText("jLabel2");
                                                                    94

jPanel1.add(jLabel2);
jLabel2.setBounds(140, 10, 170, 20);

jTextField3.setFont(new java.awt.Font("Tahoma", 1, 11));
jPanel1.add(jTextField3);
jTextField3.setBounds(140, 70, 170, 20);

jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Harga Jual : ");
jPanel1.add(jLabel6);
jLabel6.setBounds(30, 90, 100, 15);

jTextField4.setFont(new java.awt.Font("Tahoma", 1, 11));
jPanel1.add(jTextField4);
jTextField4.setBounds(140, 90, 170, 20);

jTextField5.setFont(new java.awt.Font("Tahoma", 1, 11));
jPanel1.add(jTextField5);
jTextField5.setBounds(140, 110, 170, 20);

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel7.setText("Kode Isi Pulsa : ");
jPanel1.add(jLabel7);
jLabel7.setBounds(10, 110, 120, 15);

getContentPane().add(jPanel1);
jPanel1.setBounds(150, 240, 330, 170);

jButton1.setText("Tambah");
jButton1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton1ActionPerformed(evt);
   }
});
getContentPane().add(jButton1);
jButton1.setBounds(120, 420, 90, 23);

jButton2.setText("Edit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton2ActionPerformed(evt);
   }
});
getContentPane().add(jButton2);
jButton2.setBounds(220, 420, 90, 23);

jButton3.setText("Hapus");
jButton3.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton3ActionPerformed(evt);
   }
});
getContentPane().add(jButton3);
jButton3.setBounds(320, 420, 90, 23);
                                                                         95


  jButton4.setText("Cetak");
  jButton4.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
       jButton4ActionPerformed(evt);
     }
  });
  getContentPane().add(jButton4);
  jButton4.setBounds(520, 420, 90, 23);

  jButton7.setText("Keluar");
  jButton7.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
       jButton7ActionPerformed(evt);
     }
  });
  getContentPane().add(jButton7);
  jButton7.setBounds(420, 420, 90, 23);

  jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
  jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  jLabel8.setText("Cari Nama Operator : ");
  getContentPane().add(jLabel8);
  jLabel8.setBounds(240, 210, 220, 20);

  jTextField6.setFont(new java.awt.Font("Tahoma", 1, 11));
  jTextField6.addKeyListener(new java.awt.event.KeyAdapter() {
     public void keyReleased(java.awt.event.KeyEvent evt) {
       jTextField6KeyReleased(evt);
     }
  });
  getContentPane().add(jTextField6);
  jTextField6.setBounds(470, 210, 170, 20);

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

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL KELUAT
   dispose();
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TABEL PROVIDER
   String aksi = this.jLabel1.getText();
   if(aksi.equals("Edit Data") || aksi.equals("Hapus Data"))
   {
      int brs = this.jTable1.getSelectedRow();
      String id = tabel.getValueAt(brs,0).toString();
      String nama = tabel.getValueAt(brs,1).toString();
      String hp = tabel.getValueAt(brs,2).toString();
      String hb = tabel.getValueAt(brs,3).toString();
      String hj = tabel.getValueAt(brs,4).toString();
      String kode = tabel.getValueAt(brs,5).toString();
      this.jLabel2.setText(id);
      this.jTextField1.setText(nama);
                                                                                                                    96

          this.jTextField2.setText(hp);
          this.jTextField3.setText(hb);
          this.jTextField4.setText(hj);
          this.jTextField5.setText(kode);
          this.jTextField1.requestFocus();
      }
  }

  private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL OK
     String id = this.jLabel2.getText();
     String nama = this.jTextField1.getText();
     String hp = this.jTextField2.getText();
     String hb = this.jTextField3.getText();
     String hj = this.jTextField4.getText();
     String kode = this.jTextField5.getText();

     if(jLabel1.getText() == "Tambah Data")
     {
        if(nama.equals("") || hp.equals("") || hb.equals("") || hj.equals("") || kode.equals(""))
        {
            JOptionPane.showMessageDialog(null,"Isi dengan Lengkap", ".:: CV DIAN MULYA
INFORMATION ::.", 1);
            this.jTextField1.requestFocus();
        }
        else
        {
            try
            {
               String sql = "insert into tb_operator values('" + id + "','" + nama + "','" + hb + "','" + hj + "','" +
hp + "', '" + kode + "')";
               Statement stat = kon.createStatement();
               int rs = stat.executeUpdate(sql);
               bersih();
               tampilkandataketabel();
               id_operator();
               this.jTextField1.requestFocus();
            }
            catch (Exception e)
            {
               System.out.println("Error Tambah Data : " + e + "\n");
            }
        }
     }

   else if(jLabel1.getText() == "Edit Data")
   {
      if(id.equals(""))
      {
         JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel diatas !!!", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
         this.jTable1.requestFocus();
      }
      else
      {
         if(this.jLabel2.getText().equals(""))
                                                                                                              97

          {
               JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
               this.jTextField1.requestFocus();
            }
            else
            {
               if(nama.equals("") || hp.equals("") || hb.equals("") || hj.equals("") || kode.equals(""))
               {
                  JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN
MULYA INFORMATION ::.", 1);
                  this.jTextField1.requestFocus();
               }
               else
               {
                  if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin merubah data ini ?", ".:: CV
DIAN MULYA CONFIRMATION ::.",0,3)==0)
                  {
                     try
                     {
                        String sql = "update tb_operator set nama_operator = '" + nama + "', harga_beli = '" +
hb + "', harga_jual = '" + hj + "', harga_pulsa = '" + hp + "', kode_isi = '" + kode + "' where id_operator = '"
+ id + "'";
                        Statement stat = kon.createStatement();
                        int rs = stat.executeUpdate(sql);
                        bersih();
                        tampilkandataketabel();
                        this.jTable1.requestFocus();
                     }
                     catch (Exception e)
                     {
                        System.out.println("Error Edit Data : " + e + "\n");
                     }
                  }
               }
            }
        }
     }

    else if(jLabel1.getText() == "Hapus Data")
    {
       if(id.equals(""))
       {
          JOptionPane.showMessageDialog(null, "Pilih data yang akan dihapus pada tabel diatas !!!", ".::
CV DIAN MULYA INFORMATION ::.", 1);
          this.jTable1.requestFocus();
       }
       else
       {
          if(this.jLabel2.getText().equals(""))
          {
             JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
             this.jTextField1.requestFocus();
          }
          else
                                                                                                      98

         {
          if(nama.equals("") || hp.equals("") || hb.equals("") || hj.equals("") || kode.equals(""))
          {
             JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN
MULYA INFORMATION ::.", 1);
             this.jTextField1.requestFocus();
          }
          else
          {
             if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin menghapus data ini ?", ".::
CV DIAN MULYA CONFIRMATION ::.",0,3)==0)
             {
                try
                {
                   String sql = "delete from tb_operator where id_operator = '" + id + "'";
                   Statement stat = kon.createStatement();
                   int rs = stat.executeUpdate(sql);
                   bersih();
                   tampilkandataketabel();
                   this.jTable1.requestFocus();
                }
                catch (Exception e)
                {
                   System.out.println("Error Hapus Data : " + e + "\n");
                }
             }
          }
        }
      }
    }
 }

  private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL BATAL
     bersih();
     tampilkandataketabel();
     this.jTextField6.setText("");
     this.jLabel1.setText("");
     this.jLabel1.setVisible(false);
     this.jButton5.setEnabled(false);
     this.jButton6.setEnabled(false);
     this.jButton1.requestFocus();
  }

  private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL HAPUS
     bersih();
     this.jLabel1.setVisible(true);
     this.jLabel1.setText("Hapus Data");
     this.jButton5.setEnabled(true);
     this.jButton6.setEnabled(true);
     this.jTable1.requestFocus();
  }

  private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL EDIT
                                                                                                         99

      bersih();
      this.jLabel1.setVisible(true);
      this.jLabel1.setText("Edit Data");
      this.jButton5.setEnabled(true);
      this.jButton6.setEnabled(true);
      this.jTable1.requestFocus();
  }

 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
 // TOMBOL CETAK
    JOptionPane.showMessageDialog(null,"Fasilitas Cetak data belum tersedia !!!",".:: CV DIAN
MULYA INFORMATION::.",1);
    this.jButton1.requestFocus();
    /*
    try
    {
       String prg = "C:\\datavision-1.0.0\\datavision.bat";
       String report = "C:\\datavision-1.0.0\\Pulsa.xml";
       Process proc = Runtime.getRuntime().exec(prg + " -p" + "123456" + " -w" + report);
       try
       {
          proc.waitFor();
       }
       catch(InterruptedException e)
       {
          System.out.print("error Cetak1 : " + e + "\n");
       }
    }
    catch(Exception es)
    {
       System.out.print("error Cetak2 : " + es + "\n");
    }
    */
 }

  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL TAMBAH DATA
     id_operator();
     this.jLabel1.setVisible(true);
     this.jLabel1.setText("Tambah Data");
     this.jButton5.setEnabled(true);
     this.jButton6.setEnabled(true);
     this.jTextField1.requestFocus();
  }

private void jTextField6KeyReleased(java.awt.event.KeyEvent evt) {
   // CARI NAMA PROVIDER
   hapustabel();
   try
   {
      String sql = "select * from tb_operator where nama_operator like '" + this.jTextField6.getText() + "%'
order by nama_operator, harga_pulsa";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      while (rs.next())
      {
                                                                                                        100

         String id = rs.getString(1);
         String nama = rs.getString(2);
         String hb = rs.getString(3);
         String hj = rs.getString(4);
         String hp = rs.getString(5);
         String kode = rs.getString(6);
         String[] data = {id, nama, hp, hb, hj, kode};
         tabel.addRow(data);
      }
    }
    catch (Exception e)
    {
      System.out.println("Error " + e);
    }
}

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       /*
       Provider prov = new Provider();           //ngasih nama form = jual
       prov.setSize(655,490);           //bwt ngatur lebar form (format= (widht, hight))
       Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen
       int lebar = (screen.width - prov.getSize().width)/2;
       int tinggi = (screen.height - prov.getSize().height)/2;
       prov.setTitle(".:: CV Dian Mulya ::.");
       prov.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       prov.setLocation(lebar,tinggi-15);
       prov.setResizable(false);
       prov.setVisible(true);
       */
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel17;
    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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
                                                                                                      101

    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    // End of variables declaration

}

File voucher.java
import java.sql.*;
import javax.swing.*;

public class voucher extends javax.swing.JInternalFrame {
//=================================batas edit======================

    // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
    Connection kon = new koneksi_database().koneksiDatabase();

   // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabbr = new javax.swing.table.DefaultTableModel(null, new
String[]{"ID barang","NAMA","HARGA BELI","HARGA JUAL","STOK"})
   {
      public boolean isCellEditable(int iRows, int iCols)
      {
        return false;
      }
   };

     private void bersih()
    {
       this.jTextField1.setText("");
       this.jTextField2.setText("");
       this.jTextField3.setText("");
       this.jTextField4.setText("");
       this.jLabel1.setText("");
    }

    //BERSIHIN DATA PADA TABEL
    public void hapustabel()
    {
       int row = tabbr.getRowCount();
       for (int i=0; i < row ; i++ )
       {
             tabbr.removeRow(0);
       }
    }

    //TAMPILIN DATA KE TABEL
       public void tampilkandataketabel()
    {
       hapustabel();
       try
       {
          String sql = "select * from tb_barang order by id_barang";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
                                                                       102

       while (rs.next())
       {
         String id = rs.getString(1);
         String nama = rs.getString(2);
         String hb = rs.getString(3);
         String hj = rs.getString(4);
         String stok = rs.getString(5);
         String[] data = {id, nama, hb, hj,stok};
         tabbr.addRow(data);
       }
     }
     catch (Exception e)
     {
       System.out.println("Error " + e);
     }
 }

  private void id_barang()
 {
    int byk_data;
    byk_data = 0;
    try
    {
       String sql = "select * from tb_barang order by id_barang";
       Statement stat = kon.createStatement();
       ResultSet rs = stat.executeQuery(sql);
       rs.last();
       byk_data = rs.getRow();
       if (byk_data == 0)
       {
          this.jLabel12.setText("V001");
       }
       else
       {
          String id = rs.getString(1);
                   int n = Integer.parseInt(id.substring(1, 4)) + 1;
          String nomor = "";
          for(int i = 1; i <= 3 - String.valueOf(n).length(); i++)
          {
             nomor = nomor + "0";
          }
          nomor = "V" + nomor + String.valueOf(n);
          this.jLabel12.setText(nomor);
       }
    }
    catch (Exception e)
    {
       System.out.println("Error Id barang : " + e + "\n");
    }
 }

  // ================================ BATAS EDIT
=====================================

 /** Creates new form voucher */
 public voucher() {
                                                                     103

    initComponents();
    tampilkandataketabel();
    this.jLabel1.setVisible(false);
    this.jLabel1.setText("");
    this.jLabel12.setText("");
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jPanel1 = new javax.swing.JPanel();
    jLabel2 = new javax.swing.JLabel();
    jLabel1 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jLabel6 = 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();
    jTextField1 = new javax.swing.JTextField();
    jTextField2 = new javax.swing.JTextField();
    jTextField3 = new javax.swing.JTextField();
    jTextField4 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();
    jButton5 = new javax.swing.JButton();
    jButton6 = new javax.swing.JButton();

    getContentPane().setLayout(null);

    jTable1.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"
        }
    ));
    this.jTable1.setModel(tabbr);
                                                                       104

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent evt) {
     jTable1MouseClicked(evt);
   }
});
jTable1.addKeyListener(new java.awt.event.KeyAdapter() {
   public void keyPressed(java.awt.event.KeyEvent evt) {
     jTable1KeyPressed(evt);
   }
});
jScrollPane1.setViewportView(jTable1);

getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(20, 10, 480, 120);

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

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("id barang");
jPanel1.add(jLabel2);
jLabel2.setBounds(30, 20, 80, 20);

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setForeground(new java.awt.Color(0, 0, 255));
jLabel1.setText("Tambah data ");
jLabel1.setOpaque(true);
jPanel1.add(jLabel1);
jLabel1.setBounds(10, -10, 100, 30);

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel3.setText("nama       ");
jPanel1.add(jLabel3);
jLabel3.setBounds(30, 40, 80, 20);

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("harga beli ");
jPanel1.add(jLabel4);
jLabel4.setBounds(30, 60, 80, 20);

jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("harga jual ");
jPanel1.add(jLabel5);
jLabel5.setBounds(30, 80, 80, 20);

jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel6.setText("stok   ");
jPanel1.add(jLabel6);
jLabel6.setBounds(30, 100, 80, 20);

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText(":");
jPanel1.add(jLabel7);
jLabel7.setBounds(120, 100, 10, 20);

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

jLabel8.setText(":");
jPanel1.add(jLabel8);
jLabel8.setBounds(120, 20, 10, 20);

jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel9.setText(":");
jPanel1.add(jLabel9);
jLabel9.setBounds(120, 40, 10, 20);

jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel10.setText(":");
jPanel1.add(jLabel10);
jLabel10.setBounds(120, 60, 10, 20);

jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel11.setText(":");
jPanel1.add(jLabel11);
jLabel11.setBounds(120, 80, 10, 20);

jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel12.setText("jLabel12");
jPanel1.add(jLabel12);
jLabel12.setBounds(140, 20, 80, 20);

jTextField1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jTextField1ActionPerformed(evt);
   }
});
jPanel1.add(jTextField1);
jTextField1.setBounds(130, 40, 130, 20);
jPanel1.add(jTextField2);
jTextField2.setBounds(130, 60, 130, 20);
jPanel1.add(jTextField3);
jTextField3.setBounds(130, 80, 130, 20);
jPanel1.add(jTextField4);
jTextField4.setBounds(130, 100, 130, 20);

jButton1.setText("OK");
jButton1.setEnabled(false);
jButton1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton1ActionPerformed(evt);
   }
});
jPanel1.add(jButton1);
jButton1.setBounds(50, 130, 80, 23);

jButton2.setText("BATAL");
jButton2.setEnabled(false);
jButton2.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton2ActionPerformed(evt);
   }
});
jPanel1.add(jButton2);
                                                                            106

    jButton2.setBounds(143, 130, 90, 23);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(110, 140, 300, 170);

    jButton3.setText("Tambah");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton3ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton3);
    jButton3.setBounds(70, 330, 90, 23);

    jButton4.setText("Edit");
    jButton4.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton4ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(170, 330, 80, 23);

    jButton5.setText("Hapus");
    jButton5.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton5ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton5);
    jButton5.setBounds(270, 330, 90, 23);

    jButton6.setText("Keluar");
    jButton6.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton6ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton6);
    jButton6.setBounds(370, 330, 80, 23);

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

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL OK
      String id = this.jLabel12.getText();
      String nama = this.jTextField1.getText();
      String hbeli = this.jTextField2.getText();
      String hjual = this.jTextField3.getText();
      String stok = this.jTextField4.getText();
                                                                                                                 107

      if(jLabel1.getText() == "Tambah Data")
      {
         if(nama.equals("") || hbeli.equals("") || hjual.equals("") || stok.equals(""))
         {
            JOptionPane.showMessageDialog(null,"Isi dengan Lengkap", ".::CV DIAN MULYA
INFORMATION ::.", 1);
            this.jTextField1.requestFocus();
         }
         else
         {
            try
            {
               String sql = "insert into tb_barang values('" + id + "','" + nama + "','" + hbeli + "','" + hjual + "',
'" + stok + "')";
               Statement stat = kon.createStatement();
               int rs = stat.executeUpdate(sql);
               bersih();
               tampilkandataketabel();
               id_barang();
               this.jTextField1.requestFocus();
            }
            catch (Exception e)
            {
               System.out.println("Error Tambah Data : " + e + "\n");
            }
         }
      }

   else if(jLabel1.getText() == "Edit Data")
   {
      if(id.equals(""))
      {
         JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel diatas !!!", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
         this.jTable1.requestFocus();
      }
      else
      {
         if(this.jLabel12.getText().equals(""))
         {
            JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
            this.jTextField1.requestFocus();
         }
         else
         {
            if(nama.equals("") || hbeli.equals("") || hjual.equals("") || stok.equals(""))
            {
               JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN
MULYA INFORMATION ::.", 1);
               this.jTextField1.requestFocus();
            }
            else
            {
               if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin merubah data ini ?", ".:: CV
DIAN MULYA CONFIRMATION ::.",0,3)==0)
                                                                                                          108

               {
                  try
                  {
                     String sql = "update tb_barang set nama = '" + nama + "', harga_beli = '" + hbeli + "',
harga_jual = '" + hjual + "', stok = '" + stok + "' where id_barang = '" + id + "'";
                     Statement stat = kon.createStatement();
                     int rs = stat.executeUpdate(sql);
                     bersih();
                     tampilkandataketabel();
                     this.jTable1.requestFocus();
                  }
                  catch (Exception e)
                  {
                     System.out.println("Error Edit Data : " + e + "\n");
                  }
                }
            }
         }
       }
     }

    else if(jLabel1.getText() == "Hapus Data")
    {
       if(id.equals(""))
       {
          JOptionPane.showMessageDialog(null, "Pilih data yang akan dihapus pada tabel diatas !!!", ".::
CV DIAN MULYA INFORMATION ::.", 1);
          this.jTable1.requestFocus();
       }
       else
       {
          if(this.jLabel12.getText().equals(""))
          {
             JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV
DIAN MULYA INFORMATION ::.", 1);
             this.jTextField1.requestFocus();
          }
          else
          {
             if(nama.equals("") || hbeli.equals("") || hjual.equals("") || stok.equals(""))
             {
                JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN
MULYA INFORMATION ::.", 1);
                this.jTextField1.requestFocus();
             }
             else
             {
                if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin menghapus data ini ?", ".::
CV DIAN MULYA CONFIRMATION ::.",0,3)==0)
                {
                   try
                   {
                      String sql = "delete from tb_barang where id_barang = '" + id + "'";
                      Statement stat = kon.createStatement();
                      int rs = stat.executeUpdate(sql);
                      bersih();
                                                                                  109

                          tampilkandataketabel();
                          this.jTable1.requestFocus();
                        }
                        catch (Exception e)
                        {
                          System.out.println("Error Hapus Data : " + e + "\n");
                        }
                    }
                }
            }
        }
    }
}

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
 //TOMBOL KELUAR
     dispose();
}

private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {


}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// tabel barang (voucher dan air mineral
    String aksi = this.jLabel1.getText();
       if(aksi.equals("Edit Data") || aksi.equals("Hapus Data"))
       {
          int brs = this.jTable1.getSelectedRow();
          String id = tabbr.getValueAt(brs,0).toString();
          String nama = tabbr.getValueAt(brs,1).toString();
          String hbeli = tabbr.getValueAt(brs,2).toString();
          String hjual = tabbr.getValueAt(brs,3).toString();
          String stok = tabbr.getValueAt(brs,4).toString();
          this.jLabel12.setText(id);
          this.jTextField1.setText(nama);
          this.jTextField2.setText(hbeli);
          this.jTextField3.setText(hjual);
          this.jTextField4.setText(stok);
          this.jTextField1.requestFocus();
       }
}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL HAPUS
      bersih();
      this.jLabel1.setVisible(true);
      this.jLabel1.setText("Hapus Data");
      this.jLabel12.setText("");
      this.jButton1.setEnabled(true);
      this.jButton2.setEnabled(true);
      this.jTextField1.requestFocus();
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
                                                                         110

    // TOMBOL TAMBAH
       bersih();
       id_barang(); //ngambil id barang
       this.jLabel1.setVisible(true);
       this.jLabel1.setText("Tambah Data");
       this.jButton1.setEnabled(true);
       this.jButton2.setEnabled(true);
       this.jTextField1.requestFocus();
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL EDIT
     bersih();
     this.jLabel1.setVisible(true);
     this.jLabel1.setText("Edit Data");
     this.jLabel12.setText("");
     this.jButton1.setEnabled(true);
     this.jButton2.setEnabled(true);
     this.jTextField1.requestFocus();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
 // TOMBOL BATAL
     bersih();
     tampilkandataketabel();
     this.jLabel1.setText("");
     this.jLabel1.setVisible(false);
     this.jLabel12.setText("");
     this.jButton1.setEnabled(false);
     this.jButton2.setEnabled(false);
     jButton1.requestFocus();
}


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
                                                                                                      111

    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration

}

File penjualan_pulsa.java
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;

public class Penjualan_Pulsa extends javax.swing.JInternalFrame implements
javax.comm.SerialPortEventListener{
//public class Penjualan_Pulsa extends javax.swing.JFrame implements
javax.comm.SerialPortEventListener{


    // DEKLARASI PUBLIC
    public String Vtgl;
    public int Sisa_pulsa;
    NumberFormat nf = NumberFormat.getNumberInstance();

    // ========================= BATAS EDIT ====================

    // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
    Connection kon = new koneksi_database().koneksiDatabase();

   // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabSMS1 = new javax.swing.table.DefaultTableModel(null, new
String[]{"Id SMS","Status SMS","Tanggal","No Telepon","Isi Pesan"})
   {
      public boolean isCellEditable(int iRows, int iCols)
      {
        return false;
      }
   };

   // BUAT JUDUL HEADER TABEL_2....
  javax.swing.table.DefaultTableModel tabSMS2 = new javax.swing.table.DefaultTableModel(null, new
String[]{"Faktur","No HP","Operator","Pulsa","Harga","Tanggal","Status"})
   {
      public boolean isCellEditable(int iRows, int iCols)
      {
        return false;
      }
   };

       // METODE SERIAL EVEN
    int bufferOffset=0;
    byte[] bacaBuffer = new byte[100000];
    int n;
    java.io.InputStream input;
                                                                                            112


//Awak\l Metode serial even
public void serialEvent(javax.comm.SerialPortEvent event)
{
   try
   {
      input = SmitDev.SmsServer.Server.port.getInputStream();
      //Apabila ada respons dari terminal
      while((n = input.available())>0)
      {
         n = input.read(bacaBuffer, bufferOffset, n);
         bufferOffset += n;
         //jika ada respons "\15" (line feed Carriage Return)
         if((bacaBuffer[bufferOffset - 1] == 10) && (bacaBuffer[bufferOffset - 2] == 13))
         {
             String buffer = new String(bacaBuffer, 0, bufferOffset - 2);
             //Berikan Ke Metode TERIMA RESPONS AT
             terimaResponsAT(buffer);
             bufferOffset = 0;
         }
      }
   }
   catch(java.io.IOException e)
   {e.getMessage();}
}


// TERIMA RESPON AT
String memory = "";
String id_sms = "";
String status_sms = "";
String respons = "";
int index = 0;
int PDU = 0;
int status = 0;
int loopPhone = 0;
int loopSimCard = 0;
boolean merek = false;
boolean seri = false;
boolean imei = false;

private void terimaResponsAT(String buffer)
{
   String tanggal_sms = "";
   String jam_sms = "";
   String tlp_sms = "";
   String isi_sms = "";



  java.util.StringTokenizer st = new java.util.StringTokenizer(buffer, "\r\n");
  while(st.hasMoreTokens())
  {
     System.out.print(buffer + "\n");

    //MENGAMBIL TOKEN YANG ADA PADA OBJEK
                                                                             113

respons = st.nextToken();
System.out.print(respons);
if(merek)
{
   this.jLabel12.setText(respons.trim());
   merek = false;
}
else if(seri)
{
   this.jLabel14.setText(respons.trim());
   seri = false;
}
else if(imei)
{
   this.jLabel10.setText(respons.trim());
   imei = false;

    //ngaktifin tombol OK, BATAL, dan DownLoad Pesan Inbox
    this.jButton3.setEnabled(true);
    this.jButton4.setEnabled(true);
    this.jButton5.setEnabled(true);
    this.jButton6.setEnabled(true);
    this.jButton7.setEnabled(true);

    // buat ngecek SMS baru yang masuk...
    CekSMS();
}

//Respon Jika Terminal Sudah Terhubung
if(respons.startsWith("ATH0"))
{
   this.jButton1.setEnabled(false);
   this.jButton2.setEnabled(true);

}
else if(respons.startsWith("+COPS:"))
{
//BUAT CARI PROVIDER SIM CARD
   java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(",");
   String[] hasil = pattern.split(respons.trim());
   String cbb = hasil[2].trim();
   this.jLabel16.setText(cbb);
}
else if(respons.startsWith("AT+CPMS=ME"))
{
   memory = "Phone";
}
else if(respons.startsWith("AT+CPMS=\"ME\""))
{
   memory = "Phone";
}
else if(respons.startsWith("AT+CPMS=SM"))
{
   memory = "SIM Card";
}
else if(respons.startsWith("AT+CPMS=\"SM\""))
                                                                             114

{
   memory = "SIM Card";
}
else if(respons.startsWith("AT+CGMI"))
{
   merek = true;
}
else if(respons.startsWith("AT+CGMM"))
{
   seri = true;
}
else if(respons.startsWith("AT+CGSN"))
{
   imei = true;
}
else if(respons.startsWith("+CMGL:"))
{
   java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":");
   String[] hasil = pattern.split(respons.trim());
   pattern = java.util.regex.Pattern.compile(",");
   hasil = pattern.split(hasil[1].trim());
   index = Integer.parseInt(hasil[0].trim());
   status = Integer.parseInt(hasil[1].trim());
   PDU = 1;
}
else if(respons.startsWith("+CMGR:"))
{
   java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":");
   String[] hasil = pattern.split(respons.trim());
   pattern = java.util.regex.Pattern.compile(",");
   hasil = pattern.split(hasil[1].trim());
   status = Integer.parseInt(hasil[0].trim());
   PDU = 1;
}
else if(PDU == 1)
{
   try
   {
     SmitDev.SmsServer.Server.terimaSMS(respons.trim());
     if(status == 0)
     {
         status_sms = "Baru";
     }
     else if(status == 1)
     {
         status_sms = "Lama";
     }
     id_sms = String.valueOf(index);
     tanggal_sms = SmitDev.SmsServer.Server.tanggalTerima;
     tlp_sms = SmitDev.SmsServer.Server.noTlpPengirim;
     isi_sms = SmitDev.SmsServer.Server.isiPesanTerima;
     String[] data = {id_sms, status_sms, tanggal_sms, tlp_sms, isi_sms};
     tabSMS1.insertRow(0,data);
     PDU = 0;
   }
   catch(Exception e)
                                                                                                       115

         {e.getMessage();}
      }
      else if(respons.startsWith("+CMTI:"))
      {
         java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":");
         String[] hasil = pattern.split(respons.trim());
         pattern = java.util.regex.Pattern.compile(",");
         hasil = pattern.split(hasil[1].trim());
         index = Integer.parseInt(hasil[1].trim());
         SmitDev.SmsServer.Server.kirimAT("AT+CPMS=" + hasil[0].trim() + "\15", 1250);
         SmitDev.SmsServer.Server.kirimAT("AT+CMGR=" + index + "\15", 1250); // Baca Pesan
Baru Yang Masuk
      }
      else if(respons.startsWith("+CDSI:"))
      {
         java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":");
         String[] hasil = pattern.split(respons.trim());
         pattern = java.util.regex.Pattern.compile(",");
         hasil = pattern.split(hasil[1].trim());
         index = Integer.parseInt(hasil[1].trim());
         SmitDev.SmsServer.Server.kirimAT("AT+CPMS=" + hasil[0].trim() + "\15", 1250);
         SmitDev.SmsServer.Server.kirimAT("AT+CMGR=" + index + "\15", 1250); // Baca Pesan
Baru Yang Masuk
      }
    }
  }

   // tampilkan id pegawai
  private void idpeg()
  {
      try
      {
         String sql = "select id_petugas from tb_absen where jam_keluar='0'";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         rs.last();
         if(rs.getRow() > 0)
         {
            this.jLabel28.setText(rs.getString(1));
         }
      }
      catch (Exception e)
      {
            System.out.println("Error tampilkan id pegawai : " + e);
      }
  }

   // tampilkan nama pegawai
   private void namapeg()
   {
       try
       {
          String sql = "select a.nama from tb_petugas a, tb_absen b where a.id_petugas = b.id_petugas and
b.jam_keluar='0'";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
                                                                             116

      rs.last();
      if(rs.getRow() > 0)
      {
         this.jLabel29.setText(rs.getString(1));
      }
    }
    catch (Exception e)
    {
         System.out.println("Error tampilkan nama pegawai : " + e);
    }
}

private void faktur()
{
   int byk_data;
   byk_data = 0;
   try
   {
      String sql = "select * from tb_jual_pulsa_elektrik order by faktur";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      rs.last();
      byk_data = rs.getRow();
      if (byk_data == 0)
      {
         this.jLabel20.setText("PJ0001");
      }
      else
      {
         String id = rs.getString(1);
                  int n = Integer.parseInt(id.substring(2, 6)) + 1;
         String nomor = "";
         for(int i = 1; i <= 4 - String.valueOf(n).length(); i++)
         {
            nomor = nomor + "0";
         }
         nomor = "PJ" + nomor + String.valueOf(n);
         this.jLabel20.setText(nomor);
      }
   }
   catch (Exception e)
   {
      System.out.println("Error Id Petugas : " + e + "\n");
   }
}

private void sisa_pulsa()
{
   try
   {
      String sql = "select * from tb_sisa_pulsa";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      rs.last();
      if(rs.getRow() > 0)
      {
                                                                                               117

          int sp = rs.getInt(1);
          Sisa_pulsa = sp;
          this.jLabel18.setText("Rp " + sp);
        }
      }
      catch (Exception e)
      {
           System.out.println("Error tampilkandataketabel : " + e);
      }
  }

   // BUAT JUDUL HEADER TABEL....
  javax.swing.table.DefaultTableModel tabSMS = new javax.swing.table.DefaultTableModel(null, new
String[]{"Id SMS","Status SMS","Tanggal","Jam","No Telepon","Isi Pesan","Memory"})
   {
      public boolean isCellEditable(int iRows, int iCols)
      {
        return false;
      }
   };


  javax.swing.Timer time;
  String akhir = "0", detik = "0", menit = "0", jam = "0";
  int i, d, m, j;
  public void waktuKoneksi() {
     i=0;
     d=0;
     m=0;
     j=0;
     akhir = "0";
     detik = "0";
     menit = "0";
     jam = "0";
     // Action Listener untuk keperluan Timer
     java.awt.event.ActionListener tr = new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
            String nol_jam = "";
            String nol_men = "";
            String nol_det = "";
            String nol_akh = "";

          // Nilai milidetik
          akhir = Integer.toString(i);
          i += 1;
          // Apabila milidetik >= 99
          if (i >= 99) {
             i = 0;
             // Nilai detik ditambahkan 1
             d += 1;
             detik = Integer.toString(d);
             // Apabila nilai detik = 0
             if (d == 0) {
                 // Nilai Menit ditambahkan 1
                 m += 1;
                 menit = Integer.toString(m);
                                                                                                 118

              // Apabila nilai Menit = 0
              if (m == 0) {
                 // Nilai Jam ditambahkan 1
                 j += 1;
                 jam = Integer.toString(j);
              }
            }
            // Apabila nilai Detik >= 59 (1 menit)
            if (d >= 59) {
               // Kembalikan nilai Detik menjadi 0
               d = -1;
               // Apabila nilai Menit >= 59 (1 Jam)
               if (m >= 59) {
                  // Kembalikan nilai Menit menjadi 0
                  m = -1;
               }
            }
        }

        // Proses Mencetak Waktu ke Layar
        // Apabila nilai Jam hanya 1 digit
        if (j <= 9) {
           // Tambahkan "0" pada digit pertama
           nol_jam = "0";
        }
        // Apabila nilai Menit hanya 1 digit
        if (m <= 9) {
           // Tambahkan "0" pada digit pertama
           nol_men = "0";
        }
        // Apabila nilai Detik hanya 1 digit
        if (d <= 9) {
           // Tambahkan "0" pada digit pertama
           nol_det = "0";
        }
        // Apabila nilai milidetik hanya 1 digit
        if (i <= 9) {
           // Tambahkan "0" pada digit pertama
           nol_akh = "0";
        }
        // Tampilkan nilai Waktu ke Layar
        //jLabel18.setText(nol_jam + jam + " : " + nol_men + menit + " : " + nol_det + detik);
       }
    };
    // Membuat Timer dengan waktu delay = 1 milisecond
    time = new javax.swing.Timer(1, tr);
    // Menjalankan Timer
    time.start();
}



javax.swing.Timer time1;
public void CekSMS() {
  // Action Listener untuk keperluan Timer
   java.awt.event.ActionListener tr0 = new java.awt.event.ActionListener() {
                                                                                             119

       public void actionPerformed(java.awt.event.ActionEvent evt) {
         System.out.print("TIMER CEK SMS \n");

         // BACA SMS YANG ADA DI MEMORY HP
          SmitDev.SmsServer.Server.kirimAT("AT+CPMS=\"ME\""+"\15",1000);
          SmitDev.SmsServer.Server.kirimAT("AT+CMGL=0"+"\15",1250);

        }
     };
     // Membuat Timer dengan waktu delay = 1 Menit
     time1 = new javax.swing.Timer(60000, tr0);
     // Menjalankan Timer
     time1.start();
}

    public void port_koneksi()
{
     try
     {
        this.jComboBox3.removeAllItems();
        this.jComboBox4.removeAllItems();
        this.jComboBox5.removeAllItems();
        this.jComboBox4.addItem("COM4");
        this.jComboBox4.addItem("COM1");
        this.jComboBox4.addItem("COM2");
        this.jComboBox4.addItem("COM3");
        this.jComboBox4.addItem("COM5");
        this.jComboBox4.addItem("COM6");
        this.jComboBox5.addItem("9600");
        this.jComboBox5.addItem("110");
        this.jComboBox5.addItem("300");
        this.jComboBox5.addItem("2400");
        this.jComboBox5.addItem("4800");
        this.jComboBox5.addItem("9600");
        this.jComboBox5.addItem("19200");
        this.jComboBox3.addItem("8");
        this.jComboBox3.addItem("7");
        this.jComboBox3.addItem("6");
        this.jComboBox3.addItem("5");
     }
     catch (Exception e)
     {
        System.out.println("Error port_koneksi : " + e + "\n");
     }
}


public void ambilProvider()
{
  try
  {
     this.jComboBox1.removeAllItems();
     this.jComboBox1.addItem("Pilih");
     String sql = "select distinct nama_operator from tb_operator order by nama_operator";
     Statement stat = kon.createStatement();
     ResultSet rs = stat.executeQuery(sql);
                                                                                                  120

        rs.last();
        if(rs.getRow()>0)
        {
           rs.first();
           this.jComboBox1.addItem(rs.getString(1));
           while (rs.next())
           {
              String Aprovider = rs.getString(1);
              this.jComboBox1.addItem(Aprovider);
           }
        }
      }
      catch (Exception e)
      {
        System.out.println("Error ambilProvider : " + e + "\n");
      }
  }

  public void tanggal()
  {
    try{
       ActionListener taskPerformer = new ActionListener()
       {
          public void actionPerformed(ActionEvent ae)
          {
            String nolbulan = "";
            String nolhari = "";
            String noljam = "";
            String nolmenit= "";
            String noldetik = "";

             //MEMBUAT DATE
             Calendar dt = Calendar.getInstance();
             //MENGAMBIL NILAI JAM, MENIT, DETIK

            String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"};
            String
Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No
vember","Desember"};
            int tahun = dt.get(dt.YEAR);
            int bulan = dt.get(dt.MONTH);
            int hari_V = dt.get(dt.DAY_OF_WEEK);
            int hari = dt.get(dt.DAY_OF_MONTH);
            int jam = dt.get(dt.HOUR_OF_DAY);
            int menit = dt.get(dt.MINUTE);
            int detik =dt.get(dt.SECOND);

             //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit)
             if (bulan < 10)
             {
                   nolbulan = "0";
             }
             if (hari < 10)
             {
                   nolhari = "0";
             }
                                                                                         121

               if (jam < 10)
               {
                     noljam = "0";
               }
               if (menit < 10)
               {
                     nolmenit = "0";
               }
               if (detik < 10)
               {
                     noldetik = "0";
               }

               //MEMBUAT string tanggal
               String Sbulan = nolbulan + Integer.toString(bulan);
               String Shari = nolhari + Integer.toString(hari);
               String Sjam = noljam + Integer.toString(jam);
               String Smenit = nolmenit + Integer.toString(menit);
               String Sdetik = noldetik + Integer.toString(detik);

               //menamoilkan pada layar
               jLabel21.setText(Jhari[hari_V]+", "+Shari+" "+Jbulan[bulan]+" "+tahun);
               Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun;
               jLabel22.setText(Sjam+":"+Smenit+":"+Sdetik);
           }
      };

      //TIMER
      new javax.swing.Timer(1000, taskPerformer).start();
    }
    catch (Exception e)
    {System.out.println ("Error : " + e);}
}

public void bersih()
{
  this.jTextField1.setText("");
  this.jTextField4.setText("");
  this.jLabel6.setText("");
  this.jComboBox1.setSelectedIndex(0);
  this.jComboBox2.setSelectedIndex(0);
}

public void hapustabel()
{
  int row = tabSMS2.getRowCount();
  for (int k=0; k < row ; k++ )
  {
        tabSMS2.removeRow(0);
  }
}

public void tampilkandataketabel()
{
  hapustabel();
  try
                                                                                                      122

     {
       //String sql = "select * from tb_jual_pulsa_elektrik order by faktur desc";
       String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_jual,
tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator =
tb_operator.id_operator order by faktur DESC";
       Statement stat = kon.createStatement();
       ResultSet rs = stat.executeQuery(sql);
       while (rs.next())
       {
           String faktur = rs.getString(1);
           String no_hp = rs.getString(2);
           String provider = rs.getString(3);
           int hp = Integer.parseInt(rs.getString(4));
           int hj = Integer.parseInt(rs.getString(5));
           String tgl = rs.getString(6);
           String status = rs.getString(7);
           String[] data = {faktur,no_hp, provider, nf.format(hp), nf.format(hj), tgl, status};
           tabSMS2.addRow(data);
       }
     }
     catch (Exception e)
     {
       System.out.println("Error " + e);
     }
   }



  // ================================ BATAS EDIT
=====================================




  /** Creates new form Penjualan_Pulsa */
  // INI KONSTRAKTOR...
  public Penjualan_Pulsa() {
      initComponents();
      faktur();
      namapeg();
      idpeg();
      sisa_pulsa();
      port_koneksi();
      ambilProvider();
      tanggal();
      tampilkandataketabel();
      this.jButton8.setVisible(false);
      this.jLabel28.setVisible(false);
  }

  /** This method is called from within the constructor to
   * initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is
                                                                  123

 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

  jButton1 = new javax.swing.JButton();
  jButton2 = new javax.swing.JButton();
  jPanel1 = new javax.swing.JPanel();
  jPanel3 = new javax.swing.JPanel();
  jScrollPane1 = new javax.swing.JScrollPane();
  jTable1 = new javax.swing.JTable();
  jButton3 = new javax.swing.JButton();
  jLabel25 = new javax.swing.JLabel();
  jScrollPane2 = new javax.swing.JScrollPane();
  jTextArea1 = new javax.swing.JTextArea();
  jButton4 = new javax.swing.JButton();
  jButton7 = new javax.swing.JButton();
  jButton9 = new javax.swing.JButton();
  jPanel5 = new javax.swing.JPanel();
  jLabel3 = new javax.swing.JLabel();
  jLabel4 = new javax.swing.JLabel();
  jLabel5 = new javax.swing.JLabel();
  jLabel6 = new javax.swing.JLabel();
  jTextField1 = new javax.swing.JTextField();
  jComboBox1 = new javax.swing.JComboBox();
  jComboBox2 = new javax.swing.JComboBox();
  jButton5 = new javax.swing.JButton();
  jButton6 = new javax.swing.JButton();
  jScrollPane3 = new javax.swing.JScrollPane();
  jTable3 = new javax.swing.JTable();
  jLabel17 = new javax.swing.JLabel();
  jLabel18 = new javax.swing.JLabel();
  jLabel8 = new javax.swing.JLabel();
  jTextField4 = new javax.swing.JTextField();
  jLabel19 = new javax.swing.JLabel();
  jLabel20 = new javax.swing.JLabel();
  jLabel7 = new javax.swing.JLabel();
  jLabel27 = new javax.swing.JLabel();
  jLabel28 = new javax.swing.JLabel();
  jLabel29 = 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();
  jLabel15 = new javax.swing.JLabel();
  jLabel16 = new javax.swing.JLabel();
  jButton8 = new javax.swing.JButton();
  jLabel21 = new javax.swing.JLabel();
  jLabel22 = new javax.swing.JLabel();
  jLabel23 = new javax.swing.JLabel();
  jLabel24 = new javax.swing.JLabel();
  jLabel1 = new javax.swing.JLabel();
  jLabel2 = new javax.swing.JLabel();
  jLabel26 = new javax.swing.JLabel();
                                                                                             124

    jComboBox3 = new javax.swing.JComboBox();
    jComboBox4 = new javax.swing.JComboBox();
    jComboBox5 = new javax.swing.JComboBox();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);

    jButton1.setText("CONNECT");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton1ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton1);
    jButton1.setBounds(260, 10, 100, 30);

    jButton2.setText("DISCONNECT");
    jButton2.setEnabled(false);
    jButton2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton2ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton2);
    jButton2.setBounds(260, 43, 100, 30);

     jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true), "SMS INBOX",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); //
NOI18N
     jPanel1.setForeground(new java.awt.Color(51, 51, 255));
     jPanel1.setFont(new java.awt.Font("Tahoma", 1, 12));
     jPanel1.setLayout(new java.awt.BorderLayout());

    jPanel3.setLayout(null);

    jTable1.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"
        }
    ));
    this.jTable1.setModel(tabSMS1);
    jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
           jTable1MouseClicked(evt);
        }
    });
    jScrollPane1.setViewportView(jTable1);
                                                                    125

jPanel3.add(jScrollPane1);
jScrollPane1.setBounds(0, 0, 980, 120);

jButton3.setText("CEK INBOX");
jButton3.setEnabled(false);
jButton3.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton3ActionPerformed(evt);
   }
});
jPanel3.add(jButton3);
jButton3.setBounds(828, 125, 150, 23);

jLabel25.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel25.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel25.setText("Isi SMS : ");
jPanel3.add(jLabel25);
jLabel25.setBounds(0, 125, 69, 15);

jTextArea1.setColumns(1);
jTextArea1.setLineWrap(true);
jTextArea1.setRows(5);
jScrollPane2.setViewportView(jTextArea1);

jPanel3.add(jScrollPane2);
jScrollPane2.setBounds(80, 125, 530, 45);

jButton4.setText("CEK STATUS");
jButton4.setEnabled(false);
jButton4.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton4ActionPerformed(evt);
   }
});
jPanel3.add(jButton4);
jButton4.setBounds(670, 125, 150, 23);

jButton7.setText("+ SALDO");
jButton7.setEnabled(false);
jButton7.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton7ActionPerformed(evt);
   }
});
jPanel3.add(jButton7);
jButton7.setBounds(670, 150, 150, 23);

jButton9.setText("KELUAR");
jButton9.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton9ActionPerformed(evt);
   }
});
jPanel3.add(jButton9);
jButton9.setBounds(828, 150, 150, 23);
                                                                                               126

    jPanel1.add(jPanel3, java.awt.BorderLayout.CENTER);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(10, 440, 990, 200);

     jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true), "ISI PULSA",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); //
NOI18N
     jPanel5.setForeground(new java.awt.Color(51, 51, 255));
     jPanel5.setFont(new java.awt.Font("Tahoma", 1, 12));
     jPanel5.setLayout(null);

    jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel3.setText("Nomor Telp : ");
    jPanel5.add(jLabel3);
    jLabel3.setBounds(320, 290, 140, 15);

    jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel4.setText("Operator : ");
    jPanel5.add(jLabel4);
    jLabel4.setBounds(370, 250, 90, 15);

    jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel5.setText("Nominal Pulsa : ");
    jPanel5.add(jLabel5);
    jLabel5.setBounds(350, 270, 110, 15);

    jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jPanel5.add(jLabel6);
    jLabel6.setBounds(470, 310, 170, 20);

    jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11));
    jPanel5.add(jTextField1);
    jTextField1.setBounds(470, 290, 170, 20);

    jComboBox1.setMaximumRowCount(5);
    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pilih", "Esia",
"IM3", "Mentari", "SimPati", "XL Bebas" }));
    jComboBox1.setAutoscrolls(true);
    jComboBox1.addMouseListener(new java.awt.event.MouseAdapter() {
       public void mouseClicked(java.awt.event.MouseEvent evt) {
         jComboBox1MouseClicked(evt);
       }
       public void mousePressed(java.awt.event.MouseEvent evt) {
         jComboBox1MousePressed(evt);
       }
    });
    jComboBox1.addItemListener(new java.awt.event.ItemListener() {
       public void itemStateChanged(java.awt.event.ItemEvent evt) {
         jComboBox1ItemStateChanged(evt);
                                                                                             127

       }
    });
    jComboBox1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jComboBox1ActionPerformed(evt);
       }
    });
    jPanel5.add(jComboBox1);
    jComboBox1.setBounds(470, 250, 170, 19);

     jComboBox2.setMaximumRowCount(5);
     jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pilih", "1.000",
"2.000", "3.000", "5.000", "20.000", "25.000", "30.000", "50.000", "100.000" }));
     jComboBox2.setAutoscrolls(true);
     jComboBox2.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
          jComboBox2MouseClicked(evt);
        }
     });
     jComboBox2.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
          jComboBox2ItemStateChanged(evt);
        }
     });
     jComboBox2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
          jComboBox2ActionPerformed(evt);
        }
     });
     jPanel5.add(jComboBox2);
     jComboBox2.setBounds(470, 270, 170, 19);

    jButton5.setText("OK");
    jButton5.setEnabled(false);
    jButton5.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton5ActionPerformed(evt);
       }
    });
    jPanel5.add(jButton5);
    jButton5.setBounds(400, 335, 90, 23);

    jButton6.setText("BATAL");
    jButton6.setEnabled(false);
    jButton6.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton6ActionPerformed(evt);
       }
    });
    jPanel5.add(jButton6);
    jButton6.setBounds(500, 335, 90, 23);

    jTable3.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
         {null, null, null, null},
         {null, null, null, null},
                                                                    128

    {null, null, null, null},
    {null, null, null, null}
  },
  new String [] {
     "Title 1", "Title 2", "Title 3", "Title 4"
  }
));
this.jTable3.setModel(tabSMS2);
jTable3.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
      jTable3MouseClicked(evt);
    }
});
jScrollPane3.setViewportView(jTable3);

jPanel5.add(jScrollPane3);
jScrollPane3.setBounds(90, 20, 820, 180);

jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel17.setText("Sisa Pulsa Elektrik : ");
jPanel5.add(jLabel17);
jLabel17.setBounds(90, 220, 140, 20);

jLabel18.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel18.setText("Rp 0");
jPanel5.add(jLabel18);
jLabel18.setBounds(230, 220, 160, 20);

jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel8.setText("Cari Nomor Telp : ");
jPanel5.add(jLabel8);
jLabel8.setBounds(540, 210, 190, 20);

jTextField4.setFont(new java.awt.Font("Tahoma", 1, 11));
jTextField4.addKeyListener(new java.awt.event.KeyAdapter() {
   public void keyReleased(java.awt.event.KeyEvent evt) {
     jTextField4KeyReleased(evt);
   }
});
jPanel5.add(jTextField4);
jTextField4.setBounds(740, 210, 170, 20);

jLabel19.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel19.setText("Nomor Faktur      : ");
jPanel5.add(jLabel19);
jLabel19.setBounds(90, 200, 130, 20);

jLabel20.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel20.setText("L20");
jPanel5.add(jLabel20);
jLabel20.setBounds(230, 200, 180, 20);
                                                                     129


jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel7.setText("Harga Jual : ");
jPanel5.add(jLabel7);
jLabel7.setBounds(320, 310, 140, 20);

jLabel27.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel27.setText("Petugas          :");
jPanel5.add(jLabel27);
jLabel27.setBounds(90, 240, 130, 20);

jLabel28.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jPanel5.add(jLabel28);
jLabel28.setBounds(230, 270, 80, 20);

jLabel29.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jPanel5.add(jLabel29);
jLabel29.setBounds(230, 240, 110, 20);

getContentPane().add(jPanel5);
jPanel5.setBounds(10, 70, 990, 370);

jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel9.setText("Imei :");
getContentPane().add(jLabel9);
jLabel9.setBounds(780, 10, 60, 20);

jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel10.setText("Unknown Device");
getContentPane().add(jLabel10);
jLabel10.setBounds(850, 10, 140, 20);

jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText(" Merek HP :");
getContentPane().add(jLabel11);
jLabel11.setBounds(460, 10, 120, 20);

jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel12.setText("Unknown Device");
getContentPane().add(jLabel12);
jLabel12.setBounds(590, 10, 150, 20);

jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel13.setText("Type Perangkat :");
getContentPane().add(jLabel13);
jLabel13.setBounds(460, 30, 120, 20);

jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel14.setText("Unknown Device");
getContentPane().add(jLabel14);
jLabel14.setBounds(590, 30, 150, 20);
                                                                     130

jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel15.setText("Operator :");
getContentPane().add(jLabel15);
jLabel15.setBounds(750, 30, 90, 20);

jLabel16.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel16.setText("Unknown Network");
getContentPane().add(jLabel16);
jLabel16.setBounds(850, 30, 140, 20);

jButton8.setText("KELUAR");
jButton8.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton8ActionPerformed(evt);
   }
});
getContentPane().add(jButton8);
jButton8.setBounds(370, 10, 90, 30);

jLabel21.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
getContentPane().add(jLabel21);
jLabel21.setBounds(590, 50, 180, 20);

jLabel22.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
getContentPane().add(jLabel22);
jLabel22.setBounds(850, 50, 100, 20);

jLabel23.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel23.setText("Tanggal :");
getContentPane().add(jLabel23);
jLabel23.setBounds(460, 50, 120, 20);

jLabel24.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel24.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel24.setText("Jam :");
getContentPane().add(jLabel24);
jLabel24.setBounds(780, 50, 60, 20);

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel1.setText(" Data Bits :");
getContentPane().add(jLabel1);
jLabel1.setBounds(30, 50, 110, 20);

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Connect using :");
getContentPane().add(jLabel2);
jLabel2.setBounds(30, 10, 110, 20);

jLabel26.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel26.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
                                                                                            131

      jLabel26.setText("Bits Per Second :");
      getContentPane().add(jLabel26);
      jLabel26.setBounds(30, 30, 110, 20);

     jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     getContentPane().add(jComboBox3);
     jComboBox3.setBounds(150, 50, 90, 20);

     jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     getContentPane().add(jComboBox4);
     jComboBox4.setBounds(150, 10, 90, 20);

     jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     getContentPane().add(jComboBox5);
     jComboBox5.setBounds(150, 30, 90, 20);

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

   private void jComboBox1MousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:

  }

  private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
  // NAMA PROVIDER

        this.jComboBox2.setEnabled(true);
        this.jComboBox2.removeAllItems();
        this.jComboBox2.addItem("Pilih");
        this.jLabel6.setText("");
        try
        {
           String sql1 = "select harga_pulsa from tb_operator where nama_operator = '" +
this.jComboBox1.getSelectedItem() + "' order by harga_pulsa";
           Statement stat1 = kon.createStatement();
           ResultSet rs1 = stat1.executeQuery(sql1);
           while (rs1.next())
           {
              int harga = Integer.parseInt(rs1.getString(1));
              this.jComboBox2.addItem(harga);
           }
        }
        catch (Exception e)
        {
           System.out.println("Error Provider ItemStateChange : " + e + "\n");
        }
   }

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

  }
                                                                                                        132

   private void jComboBox2MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
   }

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

  }

   private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL OK
      if (this.jButton1.isEnabled())
      {
         SmitDev.SmsServer.Server.proses_Gagal("Fasilitas ini belum dapat digunakan !!!","Terminal
belum terhubung... Silahkan lakukan koneksi terlebih dahulu !!!");
      }
      else
      {
         if(Sisa_pulsa - Integer.parseInt(this.jLabel6.getText()) >= 0)
         {
         if(this.jTextField1.getText().length()!=0 && !this.jComboBox1.getSelectedItem().equals("Pilih")
&& !this.jComboBox2.getSelectedItem().equals("Pilih"))
         {
            int pulsa = Integer.parseInt(this.jComboBox2.getSelectedItem().toString());
            int a = JOptionPane.showConfirmDialog(null, "Nama Provider = " +
jComboBox1.getSelectedItem() + "\nJumlah pulsa = " + nf.format(pulsa) + "\nNomor Hp = " +
jTextField1.getText() + "\nApakah data sudah benar ?", ".:: CV DIAN MULYA CONFIRRMATION ::.",
0, 3);
            if(a==0)
            {
               try
               {
                  String sql = "select kode_isi, id_operator, harga_beli, harga_jual from tb_operator where
nama_operator = '" + this.jComboBox1.getSelectedItem() + "' and harga_pulsa = '" +
this.jComboBox2.getSelectedItem() + "'";
                  Statement stat = kon.createStatement();
                  ResultSet rs = stat.executeQuery(sql);
                  rs.last();
                  if(rs.getRow() > 0)
                  {
                     rs.first();
                     String kode = rs.getString(1);
                     String id_operator = rs.getString(2);
                     int hb = Integer.parseInt(rs.getString(3));
                     int hj = Integer.parseInt(rs.getString(4));

                   //BUAT KIRIM SMS KE PROVIDER
                   String provider = "085691352335";
                   JOptionPane.showMessageDialog(null, kode + " " + this.jTextField1.getText() + " 8007",
"kirim SMS", 1);
                   String isi_sms = kode + " " + this.jTextField1.getText() + " 8007";
                   SmitDev.SmsServer.Server.kirimSMS(provider,isi_sms,true);
                   try
                   {
                      // Buat masukkin ke tb_jual_pulsa_elektrik pada database
                                                                                                         133

                   String sql1 = "insert into tb_jual_pulsa_elektrik values('" + jLabel20.getText() + "','" +
jTextField1.getText() + "','" + id_operator + "','" + hb + "','" + hj + "','" + Vtgl + "','BELUM','" +
jLabel28.getText() +"')";
                   Statement stat1 = kon.createStatement();
                   int rs1 = stat1.executeUpdate(sql1);

                    // buat Update Sisa Pulsa
                    String sql2 = "update tb_sisa_pulsa set sisa_pulsa = sisa_pulsa - '" + hb + "'";
                    Statement stat2 = kon.createStatement();
                    int rs2 = stat2.executeUpdate(sql2);

                    faktur();
                    sisa_pulsa();
                    bersih();
                    tampilkandataketabel();
                    this.jComboBox1.requestFocus();
                 }
                 catch (SQLException e)
                 {
                   System.out.println("Error Masukkan Transaksi : " + e + "\n");
                 }
              }
            }
            catch (Exception e)
            {
              System.out.println("Error Provider ItemStateChange : " + e + "\n");
            }
        }
     }
     else
     {
        JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA
INFORMATION ::.", 1);
     }




       }
       else
       {
          System.out.println(Sisa_pulsa - Integer.parseInt(this.jLabel6.getText()));
          JOptionPane.showMessageDialog(null, "Saldo pulsa tidak cukup untuk melakukan transaksi
penjualan pulsa elektrik !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1);
       }
     }
  }

  private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL KELUAR
     if(this.jButton2.isEnabled()==true)
     {
        //Menghentikan timer untuk cek SMS masuk
        this.time1.stop();
        // Menutup Koneksi ke Terminal...
        SmitDev.SmsServer.Server.tutupTerminal();
                                                                                            134

      }
      dispose();
  }

  private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
  // TOMBOL PUTUS
     if(SmitDev.SmsServer.Server.port != null);
     {
        //Menghentikan timer untuk cek SMS masuk
        this.time1.stop();
        // Menutup Koneksi ke Terminal...
        SmitDev.SmsServer.Server.tutupTerminal();

          int row = tabSMS.getRowCount();
          for(int i=0; i<row; i++)
          {
             tabSMS.removeRow(0);
          }
          this.jButton1.setEnabled(true);
          this.jButton2.setEnabled(false);
          this.jButton3.setEnabled(false);
          this.jButton4.setEnabled(false);
          this.jButton5.setEnabled(false);
          this.jButton6.setEnabled(false);
          this.jButton7.setEnabled(false);
          this.jLabel10.setText("unknown Device");
          this.jLabel12.setText("unknown Device");
          this.jLabel14.setText("unknown Device");
          this.jLabel16.setText("unknown Network");
      }
  }

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

  //TOMBOL KONEKSI
     String port_com = this.jComboBox4.getSelectedItem().toString();
     String bps = this.jComboBox5.getSelectedItem().toString();
     String data_bits = this.jComboBox3.getSelectedItem().toString();
     // SmitDev.SmsServer.Server.koneksiTerminal("COM4","9600","8","None","1", "None");
     SmitDev.SmsServer.Server.koneksiTerminal(port_com,bps,data_bits,"None","1", "None");
     try
     {
        SmitDev.SmsServer.Server.port.addEventListener(this);
     }
     catch(java.util.TooManyListenersException tmle)
     {}

      SmitDev.SmsServer.Server.kirimAT("AT+CGMI"+"\15",1000);
      SmitDev.SmsServer.Server.kirimAT("AT+CGMM"+"\15",1000);
      SmitDev.SmsServer.Server.kirimAT("AT+CGSN"+"\15",1000);
      SmitDev.SmsServer.Server.kirimAT("AT+COPS?"+"\15",1000);
      SmitDev.SmsServer.Server.kirimAT("ATH0"+"\15",500);
  }

private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {
                                                                                                           135


}

private void jComboBox2ItemStateChanged(java.awt.event.ItemEvent evt) {
   // NOMINAL PULSA
   try
   {
      String sql1 = "select harga_jual from tb_operator where nama_operator = '" +
jComboBox1.getSelectedItem() + "' and Harga_pulsa = '" + jComboBox2.getSelectedItem() + "'";
      Statement stat1 = kon.createStatement();
      ResultSet rs1 = stat1.executeQuery(sql1);
      while (rs1.next())
      {
        String hj = rs1.getString(1).toString();
        this.jLabel6.setText(hj);
      }
   }
   catch (Exception e)
   {
      System.out.println("Error Provider COMBO NOMINAL PULSA : " + e + "\n");
   }
}

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL BATAL
   bersih();
   tampilkandataketabel();
   this.jComboBox1.requestFocus();
}

private void jTextField4KeyReleased(java.awt.event.KeyEvent evt) {
   // CARI NO TELP
   hapustabel();
   try
   {
      //String sql = "select * from tb_jual_pulsa_elektrik order by faktur";
      String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_jual,
tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator =
tb_operator.id_operator and no_hp like '" + this.jTextField4.getText() + "%' order by faktur desc";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      while (rs.next())
      {
         String faktur = rs.getString(1);
         String no_hp = rs.getString(2);
         String provider = rs.getString(3);
         String hp = rs.getString(4);
         String hj = rs.getString(5);
         String tgl = rs.getString(6);
         String status = rs.getString(7);
         String[] data = {faktur,no_hp, provider, hp, hj, tgl, status};
         tabSMS2.addRow(data);
      }
   }
   catch (Exception e)
   {
                                                                                                        136

        System.out.println("Error " + e);
    }
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// BUAT ISI SMS
   int xrow = this.jTable1.getSelectedRow();
   String isiSMS = this.tabSMS1.getValueAt(xrow, 4).toString();
   this.jTextArea1.setText(isiSMS);
}

private void jTable3MouseClicked(java.awt.event.MouseEvent evt) {
// TBTRANSAKSI PENJUALAN
   int xrow = this.jTable3.getSelectedRow();
   if(this.tabSMS2.getValueAt(xrow, 6).toString().equals("BELUM"))
   {
      int a = JOptionPane.showConfirmDialog(null, "Apakah pulsa sukses ditransfer ?", ".:: CV DIAN
MULYA CONFIRMATION ::.", 0, 3);
      if(a==0)
      {
         String faktur = this.tabSMS2.getValueAt(xrow, 0).toString();
         try
         {
            // Buat masukkin ke tb_jual_pulsa_elektrik pada database
            String sql1 = "update tb_jual_pulsa_elektrik set status = 'TERKIRIM' where faktur = '" + faktur +
"'";
            Statement stat1 = kon.createStatement();
            int rs1 = stat1.executeUpdate(sql1);
            tampilkandataketabel();
            this.jComboBox1.requestFocus();
         }
         catch (Exception e)
         {
            System.out.println("Error Masukkan Transaksi : " + e + "\n");
         }
      }
   }
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
//TOMBOL DOWNLOAD PESAN SMS INBOX
     int row = tabSMS1.getRowCount();
     for(int i=0; i<row; i++)
     {
        tabSMS1.removeRow(0);
     }
     if (this.jButton3.isEnabled()== true)
     {
        // BACA SMS YANG ADA DI MEMORY HP
        SmitDev.SmsServer.Server.kirimAT("AT+CPMS=\"ME\""+"\15",1000);
        SmitDev.SmsServer.Server.kirimAT("AT+CMGL=0"+"\15",1250);
        SmitDev.SmsServer.Server.kirimAT("AT+CMGL=1"+"\15",1250);
     }
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
                                                                                                  137

    // TOMBOL CEK STATUS
    String no = JOptionPane.showInputDialog(null,"Masukkan no HP : ","Cek Status Pengiriman Pulsa",1);
    if(no != null)
    {
       //System.out.println(no);
       String provider = "085691352335";
       String isi_sms = "CEK " + no + " 8007";
       //System.out.println(isi_sms);
       SmitDev.SmsServer.Server.kirimSMS(provider,isi_sms,true);
    }
}

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL TAMBAH SALDO
   String sal = JOptionPane.showInputDialog(null,"Jumlah Pulsa : ","Tambah Saldo Pulsa",1);
   if(sal != null)
   {
      int saldo = Integer.parseInt(sal);
      if(saldo > 0)
      {
         try
         {
            // Buat tambah saldo pulsa elektrik
            String sql1 = "update tb_sisa_pulsa set sisa_pulsa = sisa_pulsa + '" + saldo + "'";
            Statement stat1 = kon.createStatement();
            int rs1 = stat1.executeUpdate(sql1);
            sisa_pulsa();
         }
         catch (Exception e)
         {
            System.out.println("Error Tambah Saldo Pulsa Elektrik : " + e + "\n");
         }

        }
    }
}

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL KELUAR
     if(this.jButton2.isEnabled()==true)
     {
        //Menghentikan timer untuk cek SMS masuk
        this.time1.stop();
        // Menutup Koneksi ke Terminal...
        SmitDev.SmsServer.Server.tutupTerminal();
     }
     dispose();
}

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       /*
       Penjualan_Pulsa jual = new Penjualan_Pulsa(); //ngasih nama form = jual
       jual.setSize(1015,730);        //bwt ngatur lebar form (format= (widht, hight))
                                                                                                     138

    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen
    int lebar = (screen.width - jual.getSize().width)/2;
    int tinggi = (screen.height - jual.getSize().height)/2;
    jual.setTitle(".:: CV dian Mulya ::.");
    jual.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jual.setLocation(lebar,tinggi-15);
    jual.setResizable(false);
    jual.setVisible(true);
    */

}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JComboBox jComboBox4;
private javax.swing.JComboBox jComboBox5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
private javax.swing.JLabel jLabel28;
private javax.swing.JLabel jLabel29;
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;
                                                                                                      139

    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable3;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration

}

File trans_voucher.java
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;

public class trans_voucher extends javax.swing.JInternalFrame {

    // DEKLARASI PUBLIC
    public String Vtgl, hjual="", hbeli="",id_barang="",stkbrg="";
    int grandTotal=0;

    /** Creates new form trans_voucher */

//=======================================batas edit=============================

    // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
    Connection kon = new koneksi_database().koneksiDatabase();

    // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabtv = new javax.swing.table.DefaultTableModel(null, new
String[]{" Nama Barang "," Jumlah "," Harga Jual"," Total "})
   {
       public boolean isCellEditable(int iRows, int iCols)
       {
         return false;
       }
   };

     public void bersih()
    {
       this.jComboBox1.setSelectedIndex(0);
       this.jTextField1.setText("0");
       this.jLabel13.setText("0");
    }

    public void tanggal()
    {
      try{
         ActionListener taskPerformer = new ActionListener()
                                                                                                  140

       {
           public void actionPerformed(ActionEvent ae)
           {
             String nolbulan = "";
             String nolhari = "";
             String noljam = "";
             String nolmenit= "";
             String noldetik = "";

             //MEMBUAT DATE
             Calendar dt = Calendar.getInstance();
             //MENGAMBIL NILAI JAM, MENIT, DETIK

            String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"};
            String
Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No
vember","Desember"};
            int tahun = dt.get(dt.YEAR);
            int bulan = dt.get(dt.MONTH);
            int hari_V = dt.get(dt.DAY_OF_WEEK);
            int hari = dt.get(dt.DAY_OF_MONTH);
            int jam = dt.get(dt.HOUR_OF_DAY);
            int menit = dt.get(dt.MINUTE);
            int detik =dt.get(dt.SECOND);

             //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit)
             if (bulan < 10)
             {
                   nolbulan = "0";
             }
             if (hari < 10)
             {
                   nolhari = "0";
             }
             if (jam < 10)
             {
                   noljam = "0";
             }
             if (menit < 10)
             {
                   nolmenit = "0";
             }
             if (detik < 10)
             {
                   noldetik = "0";
             }

             //MEMBUAT string tanggal
             String Sbulan = nolbulan + Integer.toString(bulan);
             String Shari = nolhari + Integer.toString(hari);
             String Sjam = noljam + Integer.toString(jam);
             String Smenit = nolmenit + Integer.toString(menit);
             String Sdetik = noldetik + Integer.toString(detik);

             //menamoilkan pada layar
             jLabel6.setText(Shari+" "+Jbulan[bulan]+" "+tahun);
                                                                                                       141

                 Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun;
                 jLabel8.setText(Sjam+":"+Smenit+":"+Sdetik);
             }
        };

        //TIMER
        new javax.swing.Timer(1000, taskPerformer).start();
      }
      catch (Exception e)
      {System.out.println ("Error : " + e);}
  }

   // tampilkan nama pegawai
   private void namapeg()
   {
       try
       {
          String sql = "select a.nama from tb_petugas a, tb_absen b where a.id_petugas = b.id_petugas and
b.jam_keluar='0'";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
          rs.last();
          if(rs.getRow() > 0)
          {
             this.jLabel15.setText(rs.getString(1));
          }
       }
       catch (Exception e)
       {
             System.out.println("Error tampilkan nama pegawai : " + e);
       }
   }

   // tampilkan id pegawai
  private void idpeg()
  {
      try
      {
         String sql = "select id_petugas from tb_absen where jam_keluar='0'";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         rs.last();
         if(rs.getRow() > 0)
         {
            this.jLabel3.setText(rs.getString(1));
         }
      }
      catch (Exception e)
      {
            System.out.println("Error tampilkan id pegawai : " + e);
      }
  }

  public void hapustabel()
  {
    int row = tabtv.getRowCount();
                                                                                 142

     for (int i=0; i < row ; i++ )
     {
           tabtv.removeRow(0);
     }
}



  //auto increment buat faktur
 private void faktur()
{
   int byk_data;
   byk_data = 0;
   try
   {
      String sql = "select * from tb_jual order by no_faktur";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      rs.last();
      byk_data = rs.getRow();
      if (byk_data == 0)
      {
         this.jLabel4.setText("PV0001");
      }
      else
      {
         String id = rs.getString(1);
                  int n = Integer.parseInt(id.substring(2, 6)) + 1;
         String nomor = "";
         for(int i = 1; i <= 4 - String.valueOf(n).length(); i++)
         {
            nomor = nomor + "0";
         }
         nomor = "PV" + nomor + String.valueOf(n);
         this.jLabel4.setText(nomor);
      }
   }
   catch (Exception e)
   {
      System.out.println("Error auto increment faktur : " + e + "\n");
   }
}

    public void getComboBarang()
{
     try
     {
        this.jComboBox1.removeAllItems();
        this.jComboBox1.addItem("Pilih");
        String sql = "select distinct nama from tb_barang order by id_barang";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        rs.last();
        if(rs.getRow()>0)
        {
           rs.first();
                                                                                                                    143

            this.jComboBox1.addItem(rs.getString(1));
            while (rs.next())
            {
               String BL = rs.getString(1);
               this.jComboBox1.addItem(BL);
            }
         }
       }
       catch (Exception e)
       {
         System.out.println("Error getComboBarang: " + e + "\n");
       }
  }

      public void setBarang(String faktur, String total, String tgl, String id_petugas)
  {
       try
       {
          //String sql = "select * from tb_jasa_laundry order by no_faktur";
          String sql = "insert into tb_jual values('" + faktur + "','" + total + "','" + tgl + "','" + id_petugas + "')";
          Statement stat = kon.createStatement();
          int rs = stat.executeUpdate(sql);
       }
       catch (SQLException e)
       {
          System.out.println("Error setBarang : " + e + "\n");
       }
  }

     public void setDetailJual(String faktur, String id_barang, String byk, String hbeli,String hjual, String
total_detail)
   {
      try
      {
         String sql = "insert into tb_detail_jual values('" + faktur + "','" + id_barang + "','" + byk + "','" +
hbeli + "','" + hjual + "','" + total_detail + "')";
         Statement stat = kon.createStatement();
         int rs = stat.executeUpdate(sql);
      }
      catch (SQLException e)
      {
         System.out.println("Error setDetailjual : " + e + "\n");
      }
   }

      public void setStok(String id_barang, String byk, String stkbrg ){
       try
       {
          int stk = Integer.parseInt(stkbrg) - Integer.parseInt(byk);
          String sql = "update tb_barang set stok ='" + stk + "' where id_barang ='" + id_barang + "'";
          Statement stat = kon.createStatement();
          int rs = stat.executeUpdate(sql);
       }
       catch (SQLException e)
       {
          System.out.println("Error setstok : " + e + "\n");
                                                                             144

      }
    }
//======================================batas edit=============================

 public trans_voucher() {
   initComponents();
   idpeg();
   namapeg();
   tanggal();
   faktur();
   getComboBarang();
   this.jLabel3.setVisible(false);
 }

 /** This method is called from within the constructor to
  * initialize the form.
  * WARNING: Do NOT modify this code. The content of this method is
  * always regenerated by the Form Editor.
  */
 @SuppressWarnings("unchecked")
 // <editor-fold defaultstate="collapsed" desc="Generated Code">
 private void initComponents() {

   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();
   jLabel6 = new javax.swing.JLabel();
   jLabel7 = new javax.swing.JLabel();
   jLabel8 = new javax.swing.JLabel();
   jScrollPane1 = new javax.swing.JScrollPane();
   jTable1 = new javax.swing.JTable();
   jPanel1 = new javax.swing.JPanel();
   jLabel10 = new javax.swing.JLabel();
   jComboBox1 = new javax.swing.JComboBox();
   jLabel11 = new javax.swing.JLabel();
   jTextField1 = new javax.swing.JTextField();
   jLabel12 = new javax.swing.JLabel();
   jLabel13 = new javax.swing.JLabel();
   jButton1 = new javax.swing.JButton();
   jButton2 = new javax.swing.JButton();
   jButton3 = new javax.swing.JButton();
   jLabel9 = new javax.swing.JLabel();
   jLabel14 = new javax.swing.JLabel();
   jLabel15 = new javax.swing.JLabel();

   getContentPane().setLayout(null);

   jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
   jLabel1.setText("Petugas           :");
   getContentPane().add(jLabel1);
   jLabel1.setBounds(10, 10, 130, 20);

   jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
   jLabel2.setText("No Faktur         :");
                                                                       145

getContentPane().add(jLabel2);
jLabel2.setBounds(10, 40, 130, 20);

jLabel3.setForeground(new java.awt.Color(0, 0, 204));
jLabel3.setText("jLabel3");
getContentPane().add(jLabel3);
jLabel3.setBounds(40, 210, 120, 20);

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setForeground(new java.awt.Color(0, 0, 204));
jLabel4.setText("jLabel4");
getContentPane().add(jLabel4);
jLabel4.setBounds(150, 40, 120, 20);

jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Tanggal           :");
getContentPane().add(jLabel5);
jLabel5.setBounds(290, 10, 120, 20);

jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel6.setText("jLabel6");
getContentPane().add(jLabel6);
jLabel6.setBounds(420, 10, 230, 20);

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText("Jam               :");
getContentPane().add(jLabel7);
jLabel7.setBounds(290, 40, 130, 20);

jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel8.setText("jLabel8");
getContentPane().add(jLabel8);
jLabel8.setBounds(420, 40, 210, 20);

jTable1.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"
    }
));
this.jTable1.setModel(tabtv);
jScrollPane1.setViewportView(jTable1);

getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(10, 82, 630, 110);

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

jLabel10.setText("Barang         :");
jPanel1.add(jLabel10);
                                                                                            146

    jLabel10.setBounds(100, 60, 90, 20);

     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jComboBox1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
          jComboBox1ActionPerformed(evt);
        }
     });
     jPanel1.add(jComboBox1);
     jComboBox1.setBounds(200, 60, 140, 20);

    jLabel11.setText("Jumlah         :");
    jPanel1.add(jLabel11);
    jLabel11.setBounds(100, 90, 90, 20);

    jTextField1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jTextField1ActionPerformed(evt);
       }
    });
    jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
       public void keyReleased(java.awt.event.KeyEvent evt) {
         jTextField1KeyReleased(evt);
       }
    });
    jPanel1.add(jTextField1);
    jTextField1.setBounds(200, 90, 140, 20);

    jLabel12.setText("Total         :");
    jPanel1.add(jLabel12);
    jLabel12.setBounds(100, 120, 80, 20);

    jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel13.setText("0");
    jPanel1.add(jLabel13);
    jLabel13.setBounds(200, 120, 140, 20);

    jButton1.setText("Tambah");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton1ActionPerformed(evt);
       }
    });
    jPanel1.add(jButton1);
    jButton1.setBounds(50, 160, 100, 30);

    jButton2.setText("Selesai");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton2ActionPerformed(evt);
       }
    });
    jPanel1.add(jButton2);
    jButton2.setBounds(170, 160, 100, 30);
                                                                            147

    jButton3.setText("Keluar");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton3ActionPerformed(evt);
       }
    });
    jPanel1.add(jButton3);
    jButton3.setBounds(290, 160, 100, 30);

    jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel9.setForeground(new java.awt.Color(0, 0, 255));
    jLabel9.setText("Detail Pembelian Barang :");
    jPanel1.add(jLabel9);
    jLabel9.setBounds(20, 10, 190, 30);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(80, 240, 450, 200);

    jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel14.setForeground(new java.awt.Color(255, 0, 51));
    jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel14.setText("Grand total : 0");
    getContentPane().add(jLabel14);
    jLabel14.setBounds(410, 200, 230, 30);

    jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel15.setForeground(new java.awt.Color(0, 0, 204));
    jLabel15.setText("jLabel15");
    getContentPane().add(jLabel15);
    jLabel15.setBounds(150, 10, 120, 20);

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

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL TAMBAH
   String nama = this.jComboBox1.getSelectedItem().toString();
   String byk = this.jTextField1.getText();
   String total = this.jLabel13.getText();
   grandTotal+=Integer.parseInt(total);
   String[] data = {nama, byk, hjual, total};
   tabtv.addRow(data);
   this.jLabel14.setText("Grand Total : " + grandTotal);
   bersih();
   this.jComboBox1.requestFocus();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
   // TOMBOL SELESAI
   String faktur = this.jLabel4.getText();
   String total = String.valueOf(grandTotal);
   String tgl = this.jLabel6.getText();
                                                                                                     148

    String id_petugas = this.jLabel3.getText();
    setBarang(faktur, total, tgl, id_petugas);
    int row = tabtv.getRowCount();
    for (int brs=0; brs < row ; brs++ )
    {
       String byk = tabtv.getValueAt(brs,1).toString();
       String total_detail = tabtv.getValueAt(brs,3).toString();
       setDetailJual(faktur, id_barang, byk, hbeli, hjual, total_detail);
       setStok(id_barang,byk,stkbrg);
    }
    bersih();
    hapustabel();
    faktur();
    this.jLabel14.setText("Grand Total : 0");
    this.jComboBox1.requestFocus();
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// keluar
   dispose();
}

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
// masukin jumlah barang

   try
   {
      String sql1 = "select harga_jual,stok,harga_beli,id_barang from tb_barang where nama = '" +
this.jComboBox1.getSelectedItem().toString() + "'";
      Statement stat1 = kon.createStatement();
      ResultSet rs1 = stat1.executeQuery(sql1);
      while (rs1.next())
      {
        int hl = rs1.getInt(1);
        hjual = rs1.getString(1);
        hbeli = rs1.getString(3);
        id_barang = rs1.getString(4);
        stkbrg = rs1.getString(2);
        int stok = rs1.getInt(2);
        int hl1= 0;
        if(!this.jTextField1.getText().equals(""))
        {
           if ( stok >= Integer.parseInt(this.jTextField1.getText()))
           {
              hl1= hl * Integer.parseInt(this.jTextField1.getText());
           }
           else
           {
              JOptionPane.showMessageDialog(null, " Stok tidak mencukupi, stok barang yang tersisa
sebanyak " + stok + "!!!", ".:: CV DIAN MULYA INFORMATION ::.", 1);
              this.jTextField1.setText("");
              this.jTextField1.requestFocus();
                                                                                                      149

            }
         }
         this.jLabel13.setText(Integer.toString(hl1));
      }
    }
    catch (Exception e)
    {
      System.out.println("Error harga detail : " + e + "\n");
    }
}


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel 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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

}


File Laporan_jual.java
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;;

//public class Provider extends javax.swing.JInternalFrame {
public class Laporan_Jual extends javax.swing.JInternalFrame {

    // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
    Connection kon = new koneksi_database().koneksiDatabase();

    // BUAT JUDUL HEADER TABEL_1....
                                                                                                       150

  javax.swing.table.DefaultTableModel tabLap1 = new javax.swing.table.DefaultTableModel(null, new
String[]{"No Faktur","No Telp","Provider","Nominal Pulsa","Harga Beli","Harga
Jual","Tanggal","Status"})
   {
      public boolean isCellEditable(int iRows, int iCols)
      {
        return false;
      }
   };

  public void hapustabel()
  {
    int row = tabLap1.getRowCount();
    for (int k=0; k < row ; k++ )
    {
          tabLap1.removeRow(0);
    }
  }

   public void tampilkandataketabel()
   {
     long tb = 0;
     long tj = 0;
     NumberFormat nf = NumberFormat.getNumberInstance();
     hapustabel();
     try
     {
        String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_beli,
tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where
tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator order by faktur DESC";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        while (rs.next())
        {
           String faktur = rs.getString(1);
           String no_hp = rs.getString(2);
           String provider = rs.getString(3);
           String hp = rs.getString(4);
           String hb = rs.getString(5);
           String hj = rs.getString(6);
           String tgl = rs.getString(7);
           String status = rs.getString(8);
           tb += Integer.parseInt(hb);
           tj += Integer.parseInt(hj);
           String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
           tabLap1.addRow(data);
        }
        this.jLabel7.setText("Rp " + nf.format(tj));
        this.jLabel8.setText("Rp " + nf.format(tb));
        this.jLabel9.setText("Rp " + nf.format(tj - tb));
     }
     catch (Exception e)
     {
        System.out.println("Error Tampilkan data ke tabel : " + e);
     }
                                                                                             151

}

public void provider()
{
  try
  {
     String sql = "select distinct nama_operator from tb_operator order by nama_operator";
     Statement stat = kon.createStatement();
     ResultSet rs = stat.executeQuery(sql);
     this.jComboBox5.removeAllItems();
     this.jComboBox5.addItem("Pilih");
     while (rs.next())
     {
        String provider = rs.getString(1);
        this.jComboBox5.addItem(provider);
     }
  }
  catch (Exception e)
  {
     System.out.println("Error Tampilkan data provider : " + e);
  }
}

/** Creates new form Laporan_Jual */
public Laporan_Jual() {
  String tgl;
  initComponents();
  tampilkandataketabel();
  provider();

    this.jButton2.setVisible(false);

    this.jComboBox1.removeAllItems();
    this.jComboBox2.removeAllItems();
    this.jComboBox3.removeAllItems();
    this.jComboBox4.removeAllItems();

    this.jComboBox1.addItem("Pilih");
    this.jComboBox1.addItem("Harian");
    this.jComboBox1.addItem("Bulanan");
    this.jComboBox1.addItem("Tahunan");

    this.jComboBox1.setEnabled(false);
    this.jComboBox2.setEnabled(false);
    this.jComboBox3.setEnabled(false);
    this.jComboBox4.setEnabled(false);
    this.jComboBox5.setEnabled(false);

    this.jComboBox2.addItem("Pilih");
    for(int t = 1; t<=31; t++)
    {
       tgl = "";
       tgl = Integer.toString(t);
       if(tgl.length()==1)
       {
          tgl = "0" + tgl;
                                                                     152

        }
        this.jComboBox2.addItem(tgl);
    }

    this.jComboBox3.addItem("Pilih");
    this.jComboBox3.addItem("Januari");
    this.jComboBox3.addItem("Februari");
    this.jComboBox3.addItem("Maret");
    this.jComboBox3.addItem("April");
    this.jComboBox3.addItem("Mei");
    this.jComboBox3.addItem("Juni");
    this.jComboBox3.addItem("Juli");
    this.jComboBox3.addItem("Agustus");
    this.jComboBox3.addItem("September");
    this.jComboBox3.addItem("Oktober");
    this.jComboBox3.addItem("November");
    this.jComboBox3.addItem("Desember");

    //MEMBUAT DATE
    Calendar dt = Calendar.getInstance();
    int th = dt.get(dt.YEAR);
    this.jComboBox4.addItem("Pilih");
    for (int j = 2007; j<=th; j++)
    {
       String tahun = Integer.toString(j);
       this.jComboBox4.addItem(tahun);
    }
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();
    jPanel1 = new javax.swing.JPanel();
    jComboBox1 = new javax.swing.JComboBox();
    jLabel1 = new javax.swing.JLabel();
    jComboBox5 = new javax.swing.JComboBox();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jComboBox2 = new javax.swing.JComboBox();
    jComboBox3 = new javax.swing.JComboBox();
    jComboBox4 = new javax.swing.JComboBox();
    jCheckBox1 = new javax.swing.JCheckBox();
    jCheckBox2 = new javax.swing.JCheckBox();
    jLabel4 = new javax.swing.JLabel();
                                                                          153

jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);

jTable1.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"
    }
));
this.jTable1.setModel(tabLap1);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
       jTable1MouseClicked(evt);
    }
});
jScrollPane1.setViewportView(jTable1);

getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(10, 10, 990, 530);

jButton1.setText("Lihat");
jButton1.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton1ActionPerformed(evt);
   }
});
getContentPane().add(jButton1);
jButton1.setBounds(700, 615, 90, 23);

jButton2.setText("Cetak");
jButton2.setEnabled(false);
jButton2.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
     jButton2ActionPerformed(evt);
   }
});
getContentPane().add(jButton2);
jButton2.setBounds(600, 615, 90, 23);

jButton3.setText("Refresh");
jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent evt) {
     jButton3MouseClicked(evt);
   }
});
                                                                                            154

    getContentPane().add(jButton3);
    jButton3.setBounds(800, 615, 90, 23);

    jButton4.setText("Keluar");
    jButton4.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton4ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(900, 615, 90, 23);

    jPanel1.setLayout(null);

     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jComboBox1.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
          jComboBox1ItemStateChanged(evt);
        }
     });
     jComboBox1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
          jComboBox1ActionPerformed(evt);
        }
     });
     jPanel1.add(jComboBox1);
     jComboBox1.setBounds(140, 70, 90, 20);

    jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel1.setText("Tanggal :");
    jPanel1.add(jLabel1);
    jLabel1.setBounds(40, 97, 90, 14);

     jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox5);
     jComboBox5.setBounds(140, 25, 190, 20);

    jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel2.setText("Nama Operator :");
    jPanel1.add(jLabel2);
    jLabel2.setBounds(20, 28, 110, 14);

    jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel3.setText("Jenis Laporan :");
    jPanel1.add(jLabel3);
    jLabel3.setBounds(20, 73, 110, 14);

     jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox2);
     jComboBox2.setBounds(140, 95, 50, 20);

     jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
                                                                                            155

    jPanel1.add(jComboBox3);
    jComboBox3.setBounds(200, 95, 130, 20);

     jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox4);
     jComboBox4.setBounds(340, 95, 70, 20);

    jCheckBox1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jCheckBox1.setText("Berdasarkan Operator");
    jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jCheckBox1ActionPerformed(evt);
       }
    });
    jPanel1.add(jCheckBox1);
    jCheckBox1.setBounds(0, 0, 160, 23);

    jCheckBox2.setFont(new java.awt.Font("Tahoma", 1, 12));
    jCheckBox2.setText("Berdasarkan waktu");
    jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jCheckBox2ActionPerformed(evt);
       }
    });
    jPanel1.add(jCheckBox2);
    jCheckBox2.setBounds(0, 47, 143, 23);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(10, 540, 430, 120);

    jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel4.setText("TOTAL PENDAPATAN :");
    getContentPane().add(jLabel4);
    jLabel4.setBounds(720, 585, 150, 20);

    jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel5.setText("TOTAL PENJUALAN :");
    getContentPane().add(jLabel5);
    jLabel5.setBounds(720, 545, 150, 20);

    jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel6.setText("TOTAL PEMBELIAN :");
    getContentPane().add(jLabel6);
    jLabel6.setBounds(720, 565, 150, 20);

    jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel7.setText("0");
    getContentPane().add(jLabel7);
    jLabel7.setBounds(880, 545, 110, 20);

    jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12));
                                                                          156

    jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel8.setText("0");
    getContentPane().add(jLabel8);
    jLabel8.setBounds(880, 565, 110, 20);

    jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12));
    jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel9.setText("0");
    getContentPane().add(jLabel9);
    jLabel9.setBounds(880, 585, 110, 20);

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

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL KELUAR
   dispose();
}

private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
   //LAPORAN TANGGAL
   String lap = "";
   lap = (String) this.jComboBox1.getSelectedItem();
   if(lap != null)
   {
      if(lap.equals("Harian"))
      {
         this.jComboBox2.setEnabled(true);
         this.jComboBox3.setEnabled(true);
         this.jComboBox4.setEnabled(true);
         this.jComboBox2.setSelectedItem("Pilih");
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox2.requestFocus();
      }
      else if(lap.equals("Bulanan"))
      {
         this.jComboBox2.setEnabled(false);
         this.jComboBox3.setEnabled(true);
         this.jComboBox4.setEnabled(true);
         this.jComboBox2.setSelectedItem("Pilih");
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox3.requestFocus();
      }
      else if(lap.equals("Tahunan"))
      {
         this.jComboBox2.setEnabled(false);
         this.jComboBox3.setEnabled(false);
         this.jComboBox4.setEnabled(true);
         this.jComboBox2.setSelectedItem("Pilih");
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox4.requestFocus();
      }
      else if(lap.equals("Pilih"))
                                                                                                        157

        {
            this.jComboBox2.setEnabled(false);
            this.jComboBox3.setEnabled(false);
            this.jComboBox4.setEnabled(false);
            this.jComboBox2.setSelectedItem("Pilih");
            this.jComboBox3.setSelectedItem("Pilih");
            this.jComboBox4.setSelectedItem("Pilih");
            this.jComboBox1.requestFocus();
        }
    }
}

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

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL LIHAT
   if(this.jCheckBox1.isSelected()==true && this.jCheckBox2.isSelected()==false)
   {
      long tb = 0;
      long tj = 0;
      hapustabel();
      NumberFormat nf = NumberFormat.getNumberInstance();
      try
      {
         String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_beli,
tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where
tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and nama_operator like '" +
this.jComboBox5.getSelectedItem() + "' order by faktur DESC";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         while (rs.next())
         {
            String faktur = rs.getString(1);
            String no_hp = rs.getString(2);
            String provider = rs.getString(3);
            String hp = rs.getString(4);
            String hb = rs.getString(5);
            String hj = rs.getString(6);
            String tgl = rs.getString(7);
            String status = rs.getString(8);
            tb += Integer.parseInt(hb);
            tj += Integer.parseInt(hj);
            String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
            tabLap1.addRow(data);
         }
         this.jLabel7.setText("Rp " + nf.format(tj));
         this.jLabel8.setText("Rp " + nf.format(tb));
         this.jLabel9.setText("Rp " + nf.format(tj - tb));

            rs.last();
            if(rs.getRow()==0)
            {
               this.jLabel7.setText("Rp 0");
                                                                                                     158

          this.jLabel8.setText("Rp 0");
          this.jLabel9.setText("Rp 0");
        }
      }
      catch (Exception e)
      {
        System.out.println("Error Cari data berdasarkan Hari : " + e);
      }

  }

  else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false)
  {
     String tg = (String) this.jComboBox1.getSelectedItem();
     String hr = (String) this.jComboBox2.getSelectedItem();
     String bln = (String) this.jComboBox3.getSelectedItem();
     String thn = (String) this.jComboBox4.getSelectedItem();
     String kondisi = "";
     long tb = 0;
     long tj = 0;

     if(tg.equals("Harian"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = hr + " " + bln + " " + thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '" + kondisi + "' order by faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String no_hp = rs.getString(2);
              String provider = rs.getString(3);
              String hp = rs.getString(4);
              String hb = rs.getString(5);
              String hj = rs.getString(6);
              String tgl = rs.getString(7);
              String status = rs.getString(8);
              tb += Integer.parseInt(hb);
              tj += Integer.parseInt(hj);
              String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
              tabLap1.addRow(data);
           }
           this.jLabel7.setText("Rp " + nf.format(tj));
           this.jLabel8.setText("Rp " + nf.format(tb));
           this.jLabel9.setText("Rp " + nf.format(tj - tb));

          rs.last();
          if(rs.getRow()==0)
                                                                                                     159

          {
              this.jLabel7.setText("Rp 0");
              this.jLabel8.setText("Rp 0");
              this.jLabel9.setText("Rp 0");
          }
        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Hari : " + e);
        }
    }

     else if(tg.equals("Bulanan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = bln + " " + thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '%" + kondisi + "' order by faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String no_hp = rs.getString(2);
              String provider = rs.getString(3);
              String hp = rs.getString(4);
              String hb = rs.getString(5);
              String hj = rs.getString(6);
              String tgl = rs.getString(7);
              String status = rs.getString(8);
              tb += Integer.parseInt(hb);
              tj += Integer.parseInt(hj);
              String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
              tabLap1.addRow(data);
           }
           this.jLabel7.setText("Rp " + nf.format(tj));
           this.jLabel8.setText("Rp " + nf.format(tb));
           this.jLabel9.setText("Rp " + nf.format(tj - tb));

          rs.last();
          if(rs.getRow()==0)
          {
             this.jLabel7.setText("Rp 0");
             this.jLabel8.setText("Rp 0");
             this.jLabel9.setText("Rp 0");
          }
        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Bulan : " + e);
                                                                                                     160

        }
    }

     else if(tg.equals("Tahunan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '%" + kondisi + "' order by faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String no_hp = rs.getString(2);
              String provider = rs.getString(3);
              String hp = rs.getString(4);
              String hb = rs.getString(5);
              String hj = rs.getString(6);
              String tgl = rs.getString(7);
              String status = rs.getString(8);
              tb += Integer.parseInt(hb);
              tj += Integer.parseInt(hj);
              String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
              tabLap1.addRow(data);
           }
           this.jLabel7.setText("Rp " + nf.format(tj));
           this.jLabel8.setText("Rp " + nf.format(tb));
           this.jLabel9.setText("Rp " + nf.format(tj - tb));

            rs.last();
            if(rs.getRow()==0)
            {
               this.jLabel7.setText("Rp 0");
               this.jLabel8.setText("Rp 0");
               this.jLabel9.setText("Rp 0");
            }
        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Tahun : " + e);
        }
     }
  }
  else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true)
  {
     String tg = (String) this.jComboBox1.getSelectedItem();
     String hr = (String) this.jComboBox2.getSelectedItem();
     String bln = (String) this.jComboBox3.getSelectedItem();
     String thn = (String) this.jComboBox4.getSelectedItem();
                                                                                                     161

    String kondisi = "";
    long tb = 0;
    long tj = 0;

     if(tg.equals("Harian"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = hr + " " + bln + " " + thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '" + kondisi + "' and nama_operator = '" + this.jComboBox5.getSelectedItem() + "' order by
faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String no_hp = rs.getString(2);
              String provider = rs.getString(3);
              String hp = rs.getString(4);
              String hb = rs.getString(5);
              String hj = rs.getString(6);
              String tgl = rs.getString(7);
              String status = rs.getString(8);
              tb += Integer.parseInt(hb);
              tj += Integer.parseInt(hj);
              String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
              tabLap1.addRow(data);
           }
           this.jLabel7.setText("Rp " + nf.format(tj));
           this.jLabel8.setText("Rp " + nf.format(tb));
           this.jLabel9.setText("Rp " + nf.format(tj - tb));

          rs.last();
          if(rs.getRow()==0)
          {
             this.jLabel7.setText("Rp 0");
             this.jLabel8.setText("Rp 0");
             this.jLabel9.setText("Rp 0");
          }
        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Hari : " + e);
        }
    }

    else if(tg.equals("Bulanan"))
    {
       hapustabel();
       NumberFormat nf = NumberFormat.getNumberInstance();
                                                                                                     162

        kondisi = bln + " " + thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '%" + kondisi + "' and nama_operator = '" + this.jComboBox5.getSelectedItem() + "' order by
faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String no_hp = rs.getString(2);
              String provider = rs.getString(3);
              String hp = rs.getString(4);
              String hb = rs.getString(5);
              String hj = rs.getString(6);
              String tgl = rs.getString(7);
              String status = rs.getString(8);
              tb += Integer.parseInt(hb);
              tj += Integer.parseInt(hj);
              String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
              tabLap1.addRow(data);
           }
           this.jLabel7.setText("Rp " + nf.format(tj));
           this.jLabel8.setText("Rp " + nf.format(tb));
           this.jLabel9.setText("Rp " + nf.format(tj - tb));

          rs.last();
          if(rs.getRow()==0)
          {
             this.jLabel7.setText("Rp 0");
             this.jLabel8.setText("Rp 0");
             this.jLabel9.setText("Rp 0");
          }
        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Bulan : " + e);
        }
    }

     else if(tg.equals("Tahunan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = thn;
        try
        {
           String sql = "select faktur, no_hp, nama_operator, harga_pulsa,
tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from
tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and
tanggal like '%" + kondisi + "' and nama_operator = '" + this.jComboBox5.getSelectedItem() + "' order by
faktur DESC";
                                                                                                         163

          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
          while (rs.next())
          {
             String faktur = rs.getString(1);
             String no_hp = rs.getString(2);
             String provider = rs.getString(3);
             String hp = rs.getString(4);
             String hb = rs.getString(5);
             String hj = rs.getString(6);
             String tgl = rs.getString(7);
             String status = rs.getString(8);
             tb += Integer.parseInt(hb);
             tj += Integer.parseInt(hj);
             String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)),
nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status};
             tabLap1.addRow(data);
          }
          this.jLabel7.setText("Rp " + nf.format(tj));
          this.jLabel8.setText("Rp " + nf.format(tb));
          this.jLabel9.setText("Rp " + nf.format(tj - tb));

              rs.last();
              if(rs.getRow()==0)
              {
                 this.jLabel7.setText("Rp 0");
                 this.jLabel8.setText("Rp 0");
                 this.jLabel9.setText("Rp 0");
              }
            }
            catch (Exception e)
            {
              System.out.println("Error Cari data berdasarkan Tahun : " + e);
            }
        }
    }
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
   /*
   buat Tabel Terkirim
   int a = JOptionPane.showConfirmDialog(null, "Apakah pulsa sudah terkirim ?", ".:: Question ::.", 0, 3);
   if(a==0)
   {
      int brs = this.jTable1.getSelectedRow();
      String faktur = tabLap1.getValueAt(brs,0).toString();
      try
      {
         String sql = "update tb_jual_pulsa_elektrik set status = 'TERKIRIM' where faktur = '" + faktur + "'";
         Statement stat = kon.createStatement();
         int rs = stat.executeUpdate(sql);
      }
      catch (Exception e)
      {
         System.out.println("Error Ubah status : " + e);
      }
                                                                           164

    }
    */
}

private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {
   // TOMBOL REFRESH
   tampilkandataketabel();
   this.jComboBox1.setSelectedIndex(0);
   this.jComboBox2.setSelectedIndex(0);
   this.jComboBox3.setSelectedIndex(0);
   this.jComboBox4.setSelectedIndex(0);
   this.jComboBox5.setSelectedIndex(0);
   this.jComboBox1.setEnabled(false);
   this.jComboBox2.setEnabled(false);
   this.jComboBox3.setEnabled(false);
   this.jComboBox4.setEnabled(false);
   this.jComboBox5.setEnabled(false);
   this.jCheckBox1.setSelected(false);
   this.jCheckBox2.setSelected(false);
   this.jButton3.requestFocus();
}

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
   // BERDASARKAN PROVIDER
   if(this.jCheckBox1.isSelected()==true)
   {
      this.jComboBox5.setSelectedIndex(0);
      this.jComboBox5.setEnabled(true);
      this.jComboBox5.requestFocus();
   }
   else if(this.jCheckBox1.isSelected()==false)
   {
      this.jComboBox5.setSelectedIndex(0);
      this.jComboBox5.setEnabled(false);
      this.jButton3.requestFocus();
   }
}

private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
   // BERDASARKAN WAKTU
   if(this.jCheckBox2.isSelected()==true)
   {
      this.jComboBox1.setSelectedItem("Pilih");
      this.jComboBox2.setSelectedItem("Pilih");
      this.jComboBox3.setSelectedItem("Pilih");
      this.jComboBox4.setSelectedItem("Pilih");
      this.jComboBox1.setEnabled(true);
      this.jComboBox2.setEnabled(true);
      this.jComboBox3.setEnabled(true);
      this.jComboBox4.setEnabled(true);
      this.jComboBox1.requestFocus();
   }
   else if(this.jCheckBox2.isSelected()==false)
   {
      this.jComboBox1.setSelectedItem("Pilih");
      this.jComboBox2.setSelectedItem("Pilih");
                                                                         165

        this.jComboBox3.setSelectedItem("Pilih");
        this.jComboBox4.setSelectedItem("Pilih");
        this.jComboBox1.setEnabled(false);
        this.jComboBox2.setEnabled(false);
        this.jComboBox3.setEnabled(false);
        this.jComboBox4.setEnabled(false);
        this.jButton3.requestFocus();
    }
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {

    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JComboBox jComboBox5;
    private javax.swing.JLabel jLabel1;
    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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

}

File Laporan_voucher.java
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;;
                                                                                                     166

public class laporan_voucher extends javax.swing.JInternalFrame {

  //=================================BATAS EDIT=============================
  // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
  Connection kon = new koneksi_database().koneksiDatabase();

  // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabLapVoucher = new javax.swing.table.DefaultTableModel(null,
new String[]{"No Faktur","Nama Barang"," Jumlah "," Harga Beli "," Harga Jual "," Total Detail","Nama
Petugas","Tanggal"})
  {
     public boolean isCellEditable(int iRows, int iCols)
     {
       return false;
     }
  };

   public void hapustabel()
  {
     int row = tabLapVoucher.getRowCount();
     for (int k=0; k < row ; k++ )
     {
           tabLapVoucher.removeRow(0);
     }
  }

  public void tampilkandataketabel()
  {

     long tb = 0;
     long tj = 0;
     NumberFormat nf = NumberFormat.getNumberInstance();
     hapustabel();
     try
     {
        String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas order by no_faktur,c.nama DESC;";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        while (rs.next())
        {
           String faktur = rs.getString(1);
           String brg = rs.getString(2);
           String jum = rs.getString(3);
           String hb= rs.getString(4);
           String hj= rs.getString(5);
           String tot = rs.getString(6);
           String nama = rs.getString(7);
           String tgl = rs.getString(8);
           int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
           int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
           tb += hb1;
           tj += hj1;
                                                                                                         167

           String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
           tabLapVoucher.addRow(data);
        }
        this.jLabel9.setText("Rp " + nf.format(tj));
        this.jLabel7.setText("Rp " + nf.format(tb));
        this.jLabel5.setText("Rp " + nf.format(tj-tb));
      }
      catch (Exception e)
      {
        System.out.println("Error Tampilkan data ke tabel : " + e);
      }
   }

  public void idpeg()
  {
    try
    {
       String sql = "select distinct nama from tb_petugas order by nama";
       Statement stat = kon.createStatement();
       ResultSet rs = stat.executeQuery(sql);
       this.jComboBox1.removeAllItems();
       this.jComboBox1.addItem("Pilih");
       while (rs.next())
       {
          String peg = rs.getString(1);
          this.jComboBox1.addItem(peg);
       }
    }
    catch (Exception e)
    {
       System.out.println("Error Tampilkan data petugas : " + e);
    }
  }

      public String getIdPeg(String nama)
  {
      String id="";
      try
      {
         String sql = "select id_petugas from tb_petugas where nama = '" + nama + "'";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         rs.last();
         if(rs.getRow()>0)
         {
            rs.first();
            id = rs.getString(1);
         }
      }
      catch (Exception e)
      {
         System.out.println("Error getIdPeg : " + e + "\n");
      }
      return id;
                                                                             168

 }

//=================================BATAS EDIT=============================

 /** Creates new form laporan_voucher */
 public laporan_voucher() {
   String tgl;
   initComponents();
   tampilkandataketabel();
   idpeg();
   this.jButton1.setVisible(false);

     this.jComboBox2.removeAllItems();
     this.jComboBox3.removeAllItems();
     this.jComboBox4.removeAllItems();
     this.jComboBox5.removeAllItems();

     this.jComboBox2.addItem("Pilih");
     this.jComboBox2.addItem("Harian");
     this.jComboBox2.addItem("Bulanan");
     this.jComboBox2.addItem("Tahunan");

     this.jComboBox1.setEnabled(false);
     this.jComboBox2.setEnabled(false);
     this.jComboBox3.setEnabled(false);
     this.jComboBox4.setEnabled(false);
     this.jComboBox5.setEnabled(false);

          this.jComboBox3.addItem("Pilih");
     for(int t = 1; t<=31; t++)
     {
       tgl = "";
       tgl = Integer.toString(t);
       if(tgl.length()==1)
       {
          tgl = "0" + tgl;
       }
       this.jComboBox3.addItem(tgl);
     }

     this.jComboBox4.addItem("Pilih");
     this.jComboBox4.addItem("Januari");
     this.jComboBox4.addItem("Februari");
     this.jComboBox4.addItem("Maret");
     this.jComboBox4.addItem("April");
     this.jComboBox4.addItem("Mei");
     this.jComboBox4.addItem("Juni");
     this.jComboBox4.addItem("Juli");
     this.jComboBox4.addItem("Agustus");
     this.jComboBox4.addItem("September");
     this.jComboBox4.addItem("Oktober");
     this.jComboBox4.addItem("November");
     this.jComboBox4.addItem("Desember");

     //MEMBUAT DATE
     Calendar dt = Calendar.getInstance();
                                                                     169

    int th = dt.get(dt.YEAR);
    this.jComboBox5.addItem("Pilih");
    for (int j = 2007; j<=th; j++)
    {
       String tahun = Integer.toString(j);
       this.jComboBox5.addItem(tahun);
    }
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jPanel1 = new javax.swing.JPanel();
    jCheckBox1 = new javax.swing.JCheckBox();
    jLabel1 = new javax.swing.JLabel();
    jComboBox1 = new javax.swing.JComboBox();
    jCheckBox2 = new javax.swing.JCheckBox();
    jLabel2 = new javax.swing.JLabel();
    jComboBox2 = new javax.swing.JComboBox();
    jLabel3 = new javax.swing.JLabel();
    jComboBox3 = new javax.swing.JComboBox();
    jComboBox4 = new javax.swing.JComboBox();
    jComboBox5 = new javax.swing.JComboBox();
    jLabel4 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jButton4 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton1 = new javax.swing.JButton();
    jLabel6 = new javax.swing.JLabel();
    jLabel7 = new javax.swing.JLabel();
    jLabel8 = new javax.swing.JLabel();
    jLabel9 = new javax.swing.JLabel();

    getContentPane().setLayout(null);

    jTable1.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"
        }
    ));
    this.jTable1.setModel(tabLapVoucher);
                                                                                            170

    jScrollPane1.setViewportView(jTable1);

    getContentPane().add(jScrollPane1);
    jScrollPane1.setBounds(20, 20, 950, 450);

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

    jCheckBox1.setText("Berdasarkan Petugas");
    jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jCheckBox1ActionPerformed(evt);
       }
    });
    jPanel1.add(jCheckBox1);
    jCheckBox1.setBounds(10, 10, 160, 23);

    jLabel1.setText("Nama Petugas       :");
    jPanel1.add(jLabel1);
    jLabel1.setBounds(70, 30, 110, 20);

     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox1);
     jComboBox1.setBounds(190, 30, 150, 20);

    jCheckBox2.setText("Berdasarkan Waktu");
    jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jCheckBox2ActionPerformed(evt);
       }
    });
    jPanel1.add(jCheckBox2);
    jCheckBox2.setBounds(10, 60, 150, 23);

    jLabel2.setText("Jenis Laporan     :");
    jPanel1.add(jLabel2);
    jLabel2.setBounds(70, 90, 100, 20);

     jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jComboBox2.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
          jComboBox2ItemStateChanged(evt);
        }
     });
     jPanel1.add(jComboBox2);
     jComboBox2.setBounds(190, 90, 150, 20);

    jLabel3.setText("Tanggal :");
    jPanel1.add(jLabel3);
    jLabel3.setBounds(70, 120, 60, 20);

     jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox3);
                                                                                            171

    jComboBox3.setBounds(130, 120, 50, 20);

     jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox4);
     jComboBox4.setBounds(190, 120, 150, 20);

     jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox5);
     jComboBox5.setBounds(350, 120, 80, 20);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(30, 490, 440, 160);

    jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel4.setText("Total Pendapatan :");
    getContentPane().add(jLabel4);
    jLabel4.setBounds(640, 570, 150, 30);

    jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel5.setText("0");
    getContentPane().add(jLabel5);
    jLabel5.setBounds(800, 570, 150, 30);

    jButton4.setText("Keluar");
    jButton4.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton4ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(840, 620, 90, 30);

    jButton3.setText("Refresh");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton3ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton3);
    jButton3.setBounds(740, 620, 100, 30);

    jButton2.setText("Lihat");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton2ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton2);
    jButton2.setBounds(660, 620, 80, 30);

    jButton1.setText("Cetak");
    getContentPane().add(jButton1);
                                                                           172

    jButton1.setBounds(570, 620, 90, 30);

    jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel6.setText("Total Pembelian :");
    getContentPane().add(jLabel6);
    jLabel6.setBounds(640, 530, 150, 30);

    jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel7.setText("0");
    getContentPane().add(jLabel7);
    jLabel7.setBounds(800, 530, 150, 30);

    jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    jLabel8.setText("Total Penjualan :");
    getContentPane().add(jLabel8);
    jLabel8.setBounds(640, 490, 150, 30);

    jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
    jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    jLabel9.setText("0");
    getContentPane().add(jLabel9);
    jLabel9.setBounds(800, 490, 150, 30);

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

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// berdasarkan ptugas
   if(this.jCheckBox1.isSelected()==true)
   {
      this.jComboBox1.setSelectedIndex(0);
      this.jComboBox1.setEnabled(true);
      this.jComboBox1.requestFocus();
   }
   else if(this.jCheckBox2.isSelected()==false)
   {
      this.jComboBox1.setSelectedIndex(0);
      this.jComboBox1.setEnabled(false);
      this.jButton3.requestFocus();
   }
}

private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
// BERDASARKAN WAKTU
   if(this.jCheckBox2.isSelected()==true)
   {
      this.jComboBox2.setSelectedItem("Pilih");
      this.jComboBox3.setSelectedItem("Pilih");
      this.jComboBox4.setSelectedItem("Pilih");
      this.jComboBox5.setSelectedItem("Pilih");
      this.jComboBox2.setEnabled(true);
      this.jComboBox3.setEnabled(true);
      this.jComboBox4.setEnabled(true);
                                                                          173

      this.jComboBox5.setEnabled(true);
      this.jComboBox2.requestFocus();
    }
    else if(this.jCheckBox2.isSelected()==false)
    {
       this.jComboBox2.setSelectedItem("Pilih");
       this.jComboBox3.setSelectedItem("Pilih");
       this.jComboBox4.setSelectedItem("Pilih");
       this.jComboBox5.setSelectedItem("Pilih");
       this.jComboBox2.setEnabled(false);
       this.jComboBox3.setEnabled(false);
       this.jComboBox4.setEnabled(false);
       this.jComboBox5.setEnabled(false);
       this.jButton3.requestFocus();
    }
}

private void jComboBox2ItemStateChanged(java.awt.event.ItemEvent evt) {
//LAPORAN TANGGAL
   String lap = "";
   lap = (String) this.jComboBox2.getSelectedItem();
   if(lap != null)
   {
      if(lap.equals("Harian"))
      {
         this.jComboBox3.setEnabled(true);
         this.jComboBox4.setEnabled(true);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox3.requestFocus();
      }
      else if(lap.equals("Bulanan"))
      {
         this.jComboBox3.setEnabled(false);
         this.jComboBox4.setEnabled(true);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox4.requestFocus();
      }
      else if(lap.equals("Tahunan"))
      {
         this.jComboBox3.setEnabled(false);
         this.jComboBox4.setEnabled(false);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox5.requestFocus();
      }
      else if(lap.equals("Pilih"))
      {
         this.jComboBox3.setEnabled(false);
                                                                                                     174

            this.jComboBox4.setEnabled(false);
            this.jComboBox5.setEnabled(false);
            this.jComboBox3.setSelectedItem("Pilih");
            this.jComboBox4.setSelectedItem("Pilih");
            this.jComboBox5.setSelectedItem("Pilih");
            this.jComboBox2.requestFocus();
        }
    }
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// keluar
   dispose();
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL REFRESH
   tampilkandataketabel();
   this.jComboBox2.setSelectedIndex(0);
   this.jComboBox3.setSelectedIndex(0);
   this.jComboBox4.setSelectedIndex(0);
   this.jComboBox5.setSelectedIndex(0);
   this.jComboBox1.setSelectedIndex(0);
   this.jComboBox1.setEnabled(false);
   this.jComboBox2.setEnabled(false);
   this.jComboBox3.setEnabled(false);
   this.jComboBox4.setEnabled(false);
   this.jComboBox5.setEnabled(false);
   this.jCheckBox1.setSelected(false);
   this.jCheckBox2.setSelected(false);
   this.jButton3.requestFocus();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL LIHAT
   if(this.jCheckBox1.isSelected()==true && this.jCheckBox2.isSelected()==false)
   {
      long tb = 0;
      long tj = 0;
      hapustabel();
      NumberFormat nf = NumberFormat.getNumberInstance();
      try
      {
         String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and d.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         while (rs.next())
         {
            String faktur = rs.getString(1);
            String brg = rs.getString(2);
            String jum = rs.getString(3);
            String hb= rs.getString(4);
                                                                                                         175

          String hj= rs.getString(5);
          String tot = rs.getString(6);
          String nama = rs.getString(7);
          String tgl = rs.getString(8);
          int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
          int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
          tb += hb1;
          tj += hj1;
          String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
          tabLapVoucher.addRow(data);
       }
       this.jLabel9.setText("Rp " + nf.format(tj));
       this.jLabel7.setText("Rp " + nf.format(tb));
       this.jLabel5.setText("Rp " + nf.format(tj-tb));

        rs.last();
        if(rs.getRow()==0)
        {
           this.jLabel5.setText("Rp 0");
           this.jLabel7.setText("Rp 0");
           this.jLabel9.setText("Rp 0");
        }
      }
      catch (Exception e)
      {
        System.out.println("Error Cari data berdasarkan nama pegawai : " + e);
      }

  }

  else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false)
  {
     String tg = (String) this.jComboBox2.getSelectedItem();
     String hr = (String) this.jComboBox3.getSelectedItem();
     String bln = (String) this.jComboBox4.getSelectedItem();
     String thn = (String) this.jComboBox5.getSelectedItem();
     String kondisi = "";
     long tb = 0;
     long tj = 0;

     if(tg.equals("Harian"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = hr + " " + bln + " " + thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '" + kondisi + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
                                                                                                         176

          {
          String faktur = rs.getString(1);
          String brg = rs.getString(2);
          String jum = rs.getString(3);
          String hb= rs.getString(4);
          String hj= rs.getString(5);
          String tot = rs.getString(6);
          String nama = rs.getString(7);
          String tgl = rs.getString(8);
          int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
          int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
          tb += hb1;
          tj += hj1;
          String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
          tabLapVoucher.addRow(data);
       }
       this.jLabel9.setText("Rp " + nf.format(tj));
       this.jLabel7.setText("Rp " + nf.format(tb));
       this.jLabel5.setText("Rp " + nf.format(tj-tb));

           rs.last();
           if(rs.getRow()==0)
           {
              this.jLabel5.setText("Rp 0");
              this.jLabel7.setText("Rp 0");
              this.jLabel9.setText("Rp 0");
           }
         }
         catch (Exception e)
         {
           System.out.println("Error Cari data berdasarkan Hari : " + e);
         }
     }

     else if(tg.equals("Bulanan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = bln + " " + thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
             String faktur = rs.getString(1);
              String brg = rs.getString(2);
              String jum = rs.getString(3);
              String hb= rs.getString(4);
              String hj= rs.getString(5);
                                                                                                         177

             String tot = rs.getString(6);
             String nama = rs.getString(7);
             String tgl = rs.getString(8);
             int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
             int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
             tb += hb1;
             tj += hj1;
             String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
             tabLapVoucher.addRow(data);
          }
          this.jLabel9.setText("Rp " + nf.format(tj));
          this.jLabel7.setText("Rp " + nf.format(tb));
          this.jLabel5.setText("Rp " + nf.format(tj-tb));

           rs.last();
           if(rs.getRow()==0)
           {
              this.jLabel5.setText("Rp 0");
              this.jLabel7.setText("Rp 0");
              this.jLabel9.setText("Rp 0");

           }
         }
         catch (Exception e)
         {
           System.out.println("Error Cari data berdasarkan Bulan : " + e);
         }
     }

     else if(tg.equals("Tahunan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
             String faktur = rs.getString(1);
              String brg = rs.getString(2);
              String jum = rs.getString(3);
              String hb= rs.getString(4);
              String hj= rs.getString(5);
              String tot = rs.getString(6);
              String nama = rs.getString(7);
              String tgl = rs.getString(8);
              int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
              int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
                                                                                                         178

             tb += hb1;
             tj += hj1;
             String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
             tabLapVoucher.addRow(data);
          }
          this.jLabel9.setText("Rp " + nf.format(tj));
          this.jLabel7.setText("Rp " + nf.format(tb));
          this.jLabel5.setText("Rp " + nf.format(tj-tb));

          rs.last();
          if(rs.getRow()==0)
          {
             this.jLabel5.setText("Rp 0");
             this.jLabel7.setText("Rp 0");
             this.jLabel9.setText("Rp 0");

         }
       }
       catch (Exception e)
       {
         System.out.println("Error Cari data berdasarkan Tahun : " + e);
       }
     }
  }
  else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true)
  {
     String tg = (String) this.jComboBox2.getSelectedItem();
     String hr = (String) this.jComboBox3.getSelectedItem();
     String bln = (String) this.jComboBox4.getSelectedItem();
     String thn = (String) this.jComboBox5.getSelectedItem();
     String kondisi = "";
     long tb = 0;
     long tj = 0;

     if(tg.equals("Harian"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = hr + " " + bln + " " + thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '" + kondisi + "' and d.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String brg = rs.getString(2);
              String jum = rs.getString(3);
              String hb= rs.getString(4);
                                                                                                         179

             String hj= rs.getString(5);
             String tot = rs.getString(6);
             String nama = rs.getString(7);
             String tgl = rs.getString(8);
             int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
             int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
             tb += hb1;
             tj += hj1;
             String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
             tabLapVoucher.addRow(data);
          }
          this.jLabel9.setText("Rp " + nf.format(tj));
          this.jLabel7.setText("Rp " + nf.format(tb));
          this.jLabel5.setText("Rp " + nf.format(tj-tb));

               rs.last();
               if(rs.getRow()==0)
           {
               this.jLabel5.setText("Rp 0");
               this.jLabel7.setText("Rp 0");
               this.jLabel9.setText("Rp 0");

           }
         }
         catch (Exception e)
         {
           System.out.println("Error Cari data berdasarkan Hari : " + e);
         }
     }

     else if(tg.equals("Bulanan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = bln + " " + thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' and d.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String brg = rs.getString(2);
              String jum = rs.getString(3);
              String hb= rs.getString(4);
              String hj= rs.getString(5);
              String tot = rs.getString(6);
              String nama = rs.getString(7);
              String tgl = rs.getString(8);
                                                                                                         180

             int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
             int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
             tb += hb1;
             tj += hj1;
             String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
             tabLapVoucher.addRow(data);
          }
          this.jLabel9.setText("Rp " + nf.format(tj));
          this.jLabel7.setText("Rp " + nf.format(tb));
          this.jLabel5.setText("Rp " + nf.format(tj-tb));

               rs.last();
               if(rs.getRow()==0)
           {
               this.jLabel5.setText("Rp 0");
               this.jLabel7.setText("Rp 0");
               this.jLabel9.setText("Rp 0");
           }
         }
         catch (Exception e)
         {
           System.out.println("Error Cari data berdasarkan Bulan : " + e);
         }
     }

     else if(tg.equals("Tahunan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = thn;
        try
        {
           String sql = "select
b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a,
tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang
and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' and d.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String faktur = rs.getString(1);
              String brg = rs.getString(2);
              String jum = rs.getString(3);
              String hb= rs.getString(4);
              String hj= rs.getString(5);
              String tot = rs.getString(6);
              String nama = rs.getString(7);
              String tgl = rs.getString(8);
              int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum);
              int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);
              tb += hb1;
              tj += hj1;
                                                                                                         181

             String[] data = {faktur ,brg ,
nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama ,
tgl};
             tabLapVoucher.addRow(data);
          }
          this.jLabel9.setText("Rp " + nf.format(tj));
          this.jLabel7.setText("Rp " + nf.format(tb));
          this.jLabel5.setText("Rp " + nf.format(tj-tb));

              rs.last();
              if(rs.getRow()==0)
              {
                 this.jLabel5.setText("Rp 0");
                 this.jLabel7.setText("Rp 0");
                 this.jLabel9.setText("Rp 0");
              }
            }
            catch (Exception e)
            {
              System.out.println("Error Cari data berdasarkan Tahun : " + e);
            }
        }
    }
}


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JComboBox jComboBox5;
    private javax.swing.JLabel jLabel1;
    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.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
}


File Laporan_absen.java
import java.sql.*;
import javax.swing.*;
                                                                                                    182

import java.awt.event.*;
import java.text.*;
import java.util.*;;

public class laporan_absen extends javax.swing.JInternalFrame {

     //=================================BATAS
EDIT=============================
  // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java
  Connection kon = new koneksi_database().koneksiDatabase();

  // BUAT JUDUL HEADER TABEL_1....
  javax.swing.table.DefaultTableModel tabLapAbsen = new javax.swing.table.DefaultTableModel(null,
new String[]{"Tanggal","Nama Petugas"," Jam Masuk "," Jam Keluar " })
  {
     public boolean isCellEditable(int iRows, int iCols)
     {
       return false;
     }
  };

   public void hapustabel()
  {
     int row = tabLapAbsen.getRowCount();
     for (int k=0; k < row ; k++ )
     {
           tabLapAbsen.removeRow(0);
     }
  }

  public void tampilkandataketabel()
  {

     NumberFormat nf = NumberFormat.getNumberInstance();
     hapustabel();
     try
     {
        String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where
a.id_petugas=b.id_petugas order by tanggal;";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        while (rs.next())
        {
           String nama = rs.getString(1);
           String tgl = rs.getString(2);
           String jm = rs.getString(3);
           String jk= rs.getString(4);
           String[] data = {tgl, nama , jm,jk};
           tabLapAbsen.addRow(data);
        }

    }
    catch (Exception e)
    {
      System.out.println("Error Tampilkan data ke tabel : " + e);
    }
                                                                                        183

 }

 public void idpeg()
 {
   try
   {
      String sql = "select distinct nama from tb_petugas order by nama";
      Statement stat = kon.createStatement();
      ResultSet rs = stat.executeQuery(sql);
      this.jComboBox1.removeAllItems();
      this.jComboBox1.addItem("Pilih");
      while (rs.next())
      {
         String peg = rs.getString(1);
         this.jComboBox1.addItem(peg);
      }
   }
   catch (Exception e)
   {
      System.out.println("Error Tampilkan data petugas : " + e);
   }
 }

     public String getIdPeg(String nama)
 {
     String id="";
     try
     {
        String sql = "select id_petugas from tb_petugas where nama = '" + nama + "'";
        Statement stat = kon.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        rs.last();
        if(rs.getRow()>0)
        {
           rs.first();
           id = rs.getString(1);
        }
     }
     catch (Exception e)
     {
        System.out.println("Error getIdPeg : " + e + "\n");
     }
     return id;
 }

//=================================BATAS EDIT=============================

 /** Creates new form laporan_absen */
 public laporan_absen() {
   String tgl;
   initComponents();
   tampilkandataketabel();
   idpeg();
   this.jButton1.setVisible(false);

     this.jComboBox2.removeAllItems();
                                                                     184

    this.jComboBox3.removeAllItems();
    this.jComboBox4.removeAllItems();
    this.jComboBox5.removeAllItems();

    this.jComboBox2.addItem("Pilih");
    this.jComboBox2.addItem("Harian");
    this.jComboBox2.addItem("Bulanan");
    this.jComboBox2.addItem("Tahunan");

    this.jComboBox1.setEnabled(false);
    this.jComboBox2.setEnabled(false);
    this.jComboBox3.setEnabled(false);
    this.jComboBox4.setEnabled(false);
    this.jComboBox5.setEnabled(false);

         this.jComboBox3.addItem("Pilih");
    for(int t = 1; t<=31; t++)
    {
      tgl = "";
      tgl = Integer.toString(t);
      if(tgl.length()==1)
      {
         tgl = "0" + tgl;
      }
      this.jComboBox3.addItem(tgl);
    }

    this.jComboBox4.addItem("Pilih");
    this.jComboBox4.addItem("Januari");
    this.jComboBox4.addItem("Februari");
    this.jComboBox4.addItem("Maret");
    this.jComboBox4.addItem("April");
    this.jComboBox4.addItem("Mei");
    this.jComboBox4.addItem("Juni");
    this.jComboBox4.addItem("Juli");
    this.jComboBox4.addItem("Agustus");
    this.jComboBox4.addItem("September");
    this.jComboBox4.addItem("Oktober");
    this.jComboBox4.addItem("November");
    this.jComboBox4.addItem("Desember");

    //MEMBUAT DATE
    Calendar dt = Calendar.getInstance();
    int th = dt.get(dt.YEAR);
    this.jComboBox5.addItem("Pilih");
    for (int j = 2007; j<=th; j++)
    {
       String tahun = Integer.toString(j);
       this.jComboBox5.addItem(tahun);
    }

}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
                                                                         185

 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

  jScrollPane1 = new javax.swing.JScrollPane();
  jTable1 = new javax.swing.JTable();
  jPanel1 = new javax.swing.JPanel();
  jCheckBox1 = new javax.swing.JCheckBox();
  jLabel1 = new javax.swing.JLabel();
  jComboBox1 = new javax.swing.JComboBox();
  jCheckBox2 = new javax.swing.JCheckBox();
  jLabel2 = new javax.swing.JLabel();
  jComboBox2 = new javax.swing.JComboBox();
  jLabel3 = new javax.swing.JLabel();
  jComboBox3 = new javax.swing.JComboBox();
  jComboBox4 = new javax.swing.JComboBox();
  jComboBox5 = new javax.swing.JComboBox();
  jButton1 = new javax.swing.JButton();
  jButton2 = new javax.swing.JButton();
  jButton3 = new javax.swing.JButton();
  jButton4 = new javax.swing.JButton();

  getContentPane().setLayout(null);

  jTable1.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"
      }
  ));
  this.jTable1.setModel(tabLapAbsen);
  jScrollPane1.setViewportView(jTable1);

  getContentPane().add(jScrollPane1);
  jScrollPane1.setBounds(10, 10, 980, 310);

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

  jCheckBox1.setText("Berdasarkan Petugas");
  jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(java.awt.event.ActionEvent evt) {
       jCheckBox1ActionPerformed(evt);
     }
  });
  jPanel1.add(jCheckBox1);
  jCheckBox1.setBounds(10, 10, 160, 23);

  jLabel1.setText("Nama Petugas       :");
                                                                                            186

    jPanel1.add(jLabel1);
    jLabel1.setBounds(70, 30, 110, 20);

     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox1);
     jComboBox1.setBounds(190, 30, 150, 20);

    jCheckBox2.setText("Berdasarkan Waktu");
    jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jCheckBox2ActionPerformed(evt);
       }
    });
    jPanel1.add(jCheckBox2);
    jCheckBox2.setBounds(10, 60, 150, 23);

    jLabel2.setText("Jenis Laporan     :");
    jPanel1.add(jLabel2);
    jLabel2.setBounds(70, 90, 100, 20);

     jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jComboBox2.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
          jComboBox2ItemStateChanged(evt);
        }
     });
     jPanel1.add(jComboBox2);
     jComboBox2.setBounds(190, 90, 150, 20);

    jLabel3.setText("Tanggal :");
    jPanel1.add(jLabel3);
    jLabel3.setBounds(70, 120, 60, 20);

     jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox3);
     jComboBox3.setBounds(130, 120, 50, 20);

     jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox4);
     jComboBox4.setBounds(190, 120, 150, 20);

     jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2",
"Item 3", "Item 4" }));
     jPanel1.add(jComboBox5);
     jComboBox5.setBounds(350, 120, 80, 20);

    getContentPane().add(jPanel1);
    jPanel1.setBounds(60, 330, 440, 160);

    jButton1.setText("Cetak");
    getContentPane().add(jButton1);
    jButton1.setBounds(550, 390, 90, 30);
                                                                           187


    jButton2.setText("Lihat");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton2ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton2);
    jButton2.setBounds(640, 390, 80, 30);

    jButton3.setText("Refresh");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton3ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton3);
    jButton3.setBounds(720, 390, 100, 30);

    jButton4.setText("Keluar");
    jButton4.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent evt) {
         jButton4ActionPerformed(evt);
       }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(820, 390, 90, 30);

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

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// berdasarkan ptugas
   if(this.jCheckBox1.isSelected()==true)
   {
      this.jComboBox1.setSelectedIndex(0);
      this.jComboBox1.setEnabled(true);
      this.jComboBox1.requestFocus();
   }
   else if(this.jCheckBox2.isSelected()==false)
   {
      this.jComboBox1.setSelectedIndex(0);
      this.jComboBox1.setEnabled(false);
      this.jButton3.requestFocus();
   }
}

private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
// BERDASARKAN WAKTU
   if(this.jCheckBox2.isSelected()==true)
   {
      this.jComboBox2.setSelectedItem("Pilih");
      this.jComboBox3.setSelectedItem("Pilih");
      this.jComboBox4.setSelectedItem("Pilih");
      this.jComboBox5.setSelectedItem("Pilih");
      this.jComboBox2.setEnabled(true);
                                                                          188

      this.jComboBox3.setEnabled(true);
      this.jComboBox4.setEnabled(true);
      this.jComboBox5.setEnabled(true);
      this.jComboBox2.requestFocus();
    }
    else if(this.jCheckBox2.isSelected()==false)
    {
       this.jComboBox2.setSelectedItem("Pilih");
       this.jComboBox3.setSelectedItem("Pilih");
       this.jComboBox4.setSelectedItem("Pilih");
       this.jComboBox5.setSelectedItem("Pilih");
       this.jComboBox2.setEnabled(false);
       this.jComboBox3.setEnabled(false);
       this.jComboBox4.setEnabled(false);
       this.jComboBox5.setEnabled(false);
       this.jButton3.requestFocus();
    }
}

private void jComboBox2ItemStateChanged(java.awt.event.ItemEvent evt) {
//LAPORAN TANGGAL
   String lap = "";
   lap = (String) this.jComboBox2.getSelectedItem();
   if(lap != null)
   {
      if(lap.equals("Harian"))
      {
         this.jComboBox3.setEnabled(true);
         this.jComboBox4.setEnabled(true);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox3.requestFocus();
      }
      else if(lap.equals("Bulanan"))
      {
         this.jComboBox3.setEnabled(false);
         this.jComboBox4.setEnabled(true);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox4.requestFocus();
      }
      else if(lap.equals("Tahunan"))
      {
         this.jComboBox3.setEnabled(false);
         this.jComboBox4.setEnabled(false);
         this.jComboBox5.setEnabled(true);
         this.jComboBox3.setSelectedItem("Pilih");
         this.jComboBox4.setSelectedItem("Pilih");
         this.jComboBox5.setSelectedItem("Pilih");
         this.jComboBox5.requestFocus();
      }
      else if(lap.equals("Pilih"))
                                                                                                   189

        {
            this.jComboBox3.setEnabled(false);
            this.jComboBox4.setEnabled(false);
            this.jComboBox5.setEnabled(false);
            this.jComboBox3.setSelectedItem("Pilih");
            this.jComboBox4.setSelectedItem("Pilih");
            this.jComboBox5.setSelectedItem("Pilih");
            this.jComboBox2.requestFocus();
        }
    }
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL LIHAT
   if(this.jCheckBox1.isSelected()==true && this.jCheckBox2.isSelected()==false)
   {
      long tp = 0;
      hapustabel();
      NumberFormat nf = NumberFormat.getNumberInstance();
      try
      {
         String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where
a.id_petugas=b.id_petugas and a.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString())
+ "' order by tanggal";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         while (rs.next())
         {
            String nama = rs.getString(1);
            String tgl = rs.getString(2);
            String jm = rs.getString(3);
            String jk= rs.getString(4);
            String[] data = {tgl, nama , jm,jk};
            tabLapAbsen.addRow(data);
         }

            rs.last();

        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan nama pegawai : " + e);
        }

    }

    else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false)
    {
       String tg = (String) this.jComboBox2.getSelectedItem();
       String hr = (String) this.jComboBox3.getSelectedItem();
       String bln = (String) this.jComboBox4.getSelectedItem();
       String thn = (String) this.jComboBox5.getSelectedItem();
       String kondisi = "";


        if(tg.equals("Harian"))
                                                                                                      190

    {
       hapustabel();
       NumberFormat nf = NumberFormat.getNumberInstance();
       kondisi = hr + " " + bln + " " + thn;
       try
       {
          String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b
where a.id_petugas=b.id_petugas and tanggal like '" + kondisi + "' order by tanggal";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
          while (rs.next())
          {
          String nama = rs.getString(1);
          String tgl = rs.getString(2);
          String jm = rs.getString(3);
          String jk= rs.getString(4);
          String[] data = {tgl, nama , jm,jk};
          tabLapAbsen.addRow(data);
          }

          rs.last();

        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Hari : " + e);
        }
    }

    else if(tg.equals("Bulanan"))
    {
       hapustabel();
       NumberFormat nf = NumberFormat.getNumberInstance();
       kondisi = bln + " " + thn;
       try
       {
          String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b
where a.id_petugas=b.id_petugas and tanggal like '%" + kondisi + "' order by tanggal";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
          while (rs.next())
          {
              String nama = rs.getString(1);
             String tgl = rs.getString(2);
             String jm = rs.getString(3);
             String jk= rs.getString(4);
             String[] data = {tgl, nama , jm,jk};
             tabLapAbsen.addRow(data);
          }

          rs.last();

        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Bulan : " + e);
                                                                                                       191

        }
    }

    else if(tg.equals("Tahunan"))
    {
       hapustabel();
       NumberFormat nf = NumberFormat.getNumberInstance();
       kondisi = thn;
       try
       {
          String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b
where a.id_petugas=b.id_petugas and tanggal like '%" + kondisi + "' order by tanggal";
          Statement stat = kon.createStatement();
          ResultSet rs = stat.executeQuery(sql);
          while (rs.next())
          {
              String nama = rs.getString(1);
             String tgl = rs.getString(2);
             String jm = rs.getString(3);
              String jk= rs.getString(4);
             String[] data = {tgl, nama , jm,jk};
             tabLapAbsen.addRow(data);
          }

            rs.last();

        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Tahun : " + e);
        }
     }
  }
  else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true)
  {
     String tg = (String) this.jComboBox2.getSelectedItem();
     String hr = (String) this.jComboBox3.getSelectedItem();
     String bln = (String) this.jComboBox4.getSelectedItem();
     String thn = (String) this.jComboBox5.getSelectedItem();
     String kondisi = "";

     if(tg.equals("Harian"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = hr + " " + bln + " " + thn;
        try
        {
           String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b
where a.id_petugas=b.id_petugas and tanggal like '" + kondisi + "' and b.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
              String nama = rs.getString(1);
                                                                                                       192

              String tgl = rs.getString(2);
              String jm = rs.getString(3);
              String jk= rs.getString(4);
              String[] data = {tgl, nama , jm,jk};
              tabLapAbsen.addRow(data);
          }

              rs.last();

          }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Hari : " + e);
        }
    }

     else if(tg.equals("Bulanan"))
     {
        hapustabel();
        NumberFormat nf = NumberFormat.getNumberInstance();
        kondisi = bln + " " + thn;
        try
        {
           String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b
where a.id_petugas=b.id_petugas and tanggal like '%" + kondisi + "' and b.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal";
           Statement stat = kon.createStatement();
           ResultSet rs = stat.executeQuery(sql);
           while (rs.next())
           {
               String nama = rs.getString(1);
              String tgl = rs.getString(2);
              String jm = rs.getString(3);
              String jk= rs.getString(4);
              String[] data = {tgl, nama , jm,jk};
              tabLapAbsen.addRow(data);
           }

              rs.last();

        }
        catch (Exception e)
        {
          System.out.println("Error Cari data berdasarkan Bulan : " + e);
        }
    }

    else if(tg.equals("Tahunan"))
    {
       hapustabel();
       NumberFormat nf = NumberFormat.getNumberInstance();
       kondisi = thn;
       try
       {
                                                                                                            193

         String sql = "select no_faktur, total , client,status, tanggal , id_petugas from tb_jasa_laundry
where tanggal like '%" + kondisi + "' and b.id_petugas = '" +
getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal";
         Statement stat = kon.createStatement();
         ResultSet rs = stat.executeQuery(sql);
         while (rs.next())
         {
             String nama = rs.getString(1);
            String tgl = rs.getString(2);
            String jm = rs.getString(3);
            String jk= rs.getString(4);
            String[] data = {tgl, nama , jm,jk};
            tabLapAbsen.addRow(data);
         }


              rs.last();
              if(rs.getRow()==0)
              {

              }
            }
            catch (Exception e)
            {
              System.out.println("Error Cari data berdasarkan Tahun : " + e);
            }
        }
    }
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TOMBOL REFRESH
   tampilkandataketabel();
   this.jComboBox2.setSelectedIndex(0);
   this.jComboBox3.setSelectedIndex(0);
   this.jComboBox4.setSelectedIndex(0);
   this.jComboBox5.setSelectedIndex(0);
   this.jComboBox1.setSelectedIndex(0);
   this.jComboBox1.setEnabled(false);
   this.jComboBox2.setEnabled(false);
   this.jComboBox3.setEnabled(false);
   this.jComboBox4.setEnabled(false);
   this.jComboBox5.setEnabled(false);
   this.jCheckBox1.setSelected(false);
   this.jCheckBox2.setSelected(false);
   this.jButton3.requestFocus();
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// keluar
   dispose();
}


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
                                                    194

    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JComboBox jComboBox5;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

}
                                                  195


LAMPIRAN B
OUTPUT PROGRAM



 1. Form Login




 2. Form Utama ( Login Sebagai Admin dan User )
                        196


3. Form Data Petugas




4. Form Data Operator




5. Form Data Voucher
                                             197




6. Form Transaksi Penjualan Pulsa Elektrik




7. Form Transaksi Penjualan Voucher
                                      198




8. Laporan Penjualan Pulsa Elektrik




9. Laporan Penjualan Voucher
                               199




10. Laporan Absensi Karyawan
                                                                                      200


                                           KOESIONER
  Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan Cabang CV
    Dian Mulya Menggunakan Java J2SE, Netbeans IDE 6.1 dan MySQL

I. IDENTITAS PENGISI
  Nama           : …………………………………………………………………….
  Alamat         : …………………………………………………………………….
  Nomor Hp       : …………………………………………………………………….


II. UMUM
  No                        PERNYATAAN                              SS   S   N   TS   STS
  1.    Tampilan aplikasi ini mudah dimengerti.
  2.    Tampilan aplikasi ini menarik.
  3.    Dengan aplikasi ini cara untuk melakukan proses
        pengisian pulsa elektrik dan penjualan voucher
        menjadi lebih mudah.
  4.    Dengan aplikasi ini cara untuk mendapatkan informasi
        laporan menjadi lebih mudah.
  5.    Aplikasi ini sudah memenuhi kebutuhan pengguna
        untuk dapat melakukan proses penjualan pulsa elektrik
        dan voucher.
  6.    Aplikasi ini mempermudah pengguna dalam
        melakukan pencatatan transaksi penjualan pulsa
        elektrik dan penjualan voucher.
  7.    Fasilitas yang terdapat dalam aplikasi ini telah mampu
        memenuhi kebutuhan pengguna dalam proses
        penjualan pulsa elektrik dan penjualan voucher.
  8.    Fasilitas Laporan yang terdapat dalam aplikasi ini telah
        dapat memberikan informasi pembukuan yang
        lengkap.
  9.    Aplikasi ini telah dapat digunakan untuk menggantikan
        sistem penjualan pulsa elektrik dan penjualan voucher
        secara tradisional.
  10.   Laporan yang dihasilkan dalam aplikasi ini
        memberikan hasil yang tepat.


                                                             ……...……, ……………………….




                                                                   ( ……………………………)

								
To top