aplikasi penjualan voucher dan pulsa elektrik pada perluasan

200
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.

Upload: vukhuong

Post on 08-Dec-2016

254 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 2: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 3: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 4: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 5: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 6: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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).

Page 7: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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).

Page 8: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 9: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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,

Page 10: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 11: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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….

Page 12: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 13: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 14: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 15: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 )

Page 16: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 17: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 18: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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:

Page 19: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 20: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 21: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 .

Page 22: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 23: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 24: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 25: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 26: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 27: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 28: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 29: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 30: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 31: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 :

Page 32: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 33: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Nama Field Jenis

Field Lebar

Keterangan

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

Nama Field Jenis

Field Lebar

Keterangan

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 :

Page 34: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

34

Tabel 3.3 Struktur Tabel tb_operator

Nama Field Jenis

Field Lebar

Keterangan

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_isi Varchar 20

Kode format untuk SMS (SM20)

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

Nama Field Jenis

Field Lebar

Keterangan

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 :

Page 35: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

35

Tabel 3.5 Struktur Tabel tb_sisa_pulsa

Nama Field Jenis

Field Lebar

Keterangan

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

Nama Field Jenis

Field Lebar

Keterangan

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

Nama Field Jenis

Field Lebar

Keterangan

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

Page 36: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Nama Field Jenis

Field Lebar

Keterangan

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)

Page 37: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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`)

)

Page 38: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 39: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 40: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 41: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 42: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 43: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 44: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 45: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 46: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 47: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 48: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 49: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 50: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 51: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 52: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 53: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 54: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 55: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 56: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 :

Page 57: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

57

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 :

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 :

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.

40 + 92 + 24 + 2

2 x 20 = 3,95

65 + 64 + 30 + 2

2 x 20 = 4,025

15 + 60 + 57 + 6

2 x 20 = 3,45

Page 58: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 :

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 :

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

55 + 96 + 15

2 x 20 = 4,15

55 + 80 + 27

2 x 20 = 4,05

Page 59: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 60: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 61: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

Page 62: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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", "");

}

Page 63: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 64: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 65: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 66: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

});

Page 67: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

});

Page 68: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 69: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 70: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 71: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 72: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 {

Page 73: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 74: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 75: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 76: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

{

Page 77: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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() {

Page 78: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 79: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 80: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 81: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 82: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 83: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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() + "')";

Page 84: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

{

Page 85: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

{

Page 86: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 87: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 88: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

*/

}

Page 89: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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"})

{

Page 90: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 91: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 92: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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("")));

Page 93: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 94: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 95: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 96: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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(""))

Page 97: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 98: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 99: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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())

{

Page 100: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 101: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 102: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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() {

Page 103: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 104: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 105: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 106: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 107: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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)

Page 108: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 109: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 110: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 111: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 112: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 113: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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\""))

Page 114: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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)

Page 115: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 116: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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)

{

Page 117: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 118: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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() {

Page 119: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 120: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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";

}

Page 121: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 122: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 123: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 124: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 125: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 126: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 127: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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},

Page 128: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 129: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 130: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 131: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

}

Page 132: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 133: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 134: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 135: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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)

{

Page 136: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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) {

Page 137: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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))

Page 138: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 139: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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()

Page 140: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 141: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 142: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 143: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 144: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 :");

Page 145: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 146: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 147: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 148: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 149: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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....

Page 150: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

Page 151: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 152: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 153: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

});

Page 154: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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" }));

Page 155: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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));

Page 156: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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"))

Page 157: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 158: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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)

Page 159: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 160: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 161: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 162: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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";

Page 163: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

Page 164: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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");

Page 165: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.*;;

Page 166: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 167: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 168: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 169: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 170: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 171: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 172: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 173: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 174: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 175: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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())

Page 176: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 177: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 178: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 179: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 180: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 181: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.*;

Page 182: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

}

Page 183: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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();

Page 184: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

Page 185: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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 :");

Page 186: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 187: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 188: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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"))

Page 189: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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"))

Page 190: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 191: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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);

Page 192: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

{

Page 193: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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;

Page 194: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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

}

Page 195: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

195

LAMPIRAN B

OUTPUT PROGRAM

1. Form Login

2. Form Utama ( Login Sebagai Admin dan User )

Page 196: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

196

3. Form Data Petugas

4. Form Data Operator

5. Form Data Voucher

Page 197: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

197

6. Form Transaksi Penjualan Pulsa Elektrik

7. Form Transaksi Penjualan Voucher

Page 198: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

198

8. Laporan Penjualan Pulsa Elektrik

9. Laporan Penjualan Voucher

Page 199: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

199

10. Laporan Absensi Karyawan

Page 200: Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan

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.

……...……, ……………………….

( ……………………………)