Você está na página 1de 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 No. Mahasiswa Jurusan Angkatan

: Dwi Ary Bowo : 50404216 : Teknik Informatika : 2004

Telah disetujui oleh Dosen Pembimbing Pada tanggal Dosen Pembimbing,

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

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

2 Bertitik tolak dari kekurangan inilah penulis mencoba membuat sebuah aplikasi penjualan voucher dan pulsa elektrik pada perluasan cabang CV Dian Mulya menggunakan Java J2SE, Netbeans IDE 6.0 dan MySQL. Untuk membantu mengatasi kekurangan pada transaksi penjualan dengan cara tradisional seperti pencatatan transaksi yang masih dilakukan dengan cara tradisional yaitu penggunaan buku, pengetikan format sms yang ditentukan provider dengan cara menulis manual pada telepon selular yaitu dengan menggunakan metode penggunaan computer yang dihubungkan dengan telepon selular menggunakan kabel data, dimana untuk melakukan transaksinya, karyawan atau penjual hanya memasukkan data yang terdapat pada aplikasi penjualan pulsa elektrik melalui computer dan setelah itu aplikasi secara otomatis yang akan mengirim SMS kepada provider berupa kode format sesuai prosedur yang ditentukan provider. 1.2 Batasan Masalah Dalam hal ini penulis membatasi masalah pada perancangan sistem yang menggunakan UML (Unified Modelling Language), perancangan database, pembuatan aplikasi dan juga uji coba. Dari segi perancangan database membahas tentang tabel, field-field dan juga relational dari tabel-tabel yang digunakan. Dari segi pembuatan aplikasi membahas tentang tampilan form yang dibuat seminimalis mungkin sehingga aplikasi dapat dengan mudah digunakan pemakainya (user friendly). 1.3 Tujuan Penelitian Tujuan dari penelitian ini adalah membangun sebuah aplikasi penjualan voucher dan pulsa elektrik menggunakan komputer dan telepon selular yang dihubungkan melalui media kabel data. Serta memberikan kemudahan bagi karyawan atau pengguna dalam melakukan transaksi dimana pegawai tidak harus mengetik secara manual melalui telepon selular atau menghafal kode format penulisan yang diajukan oleh provider. Pemberian laporan penjualan dan absensi karyawan yang akurat kepada pemilik. Serta dapat digunakan sebagai acuan untuk membuat usaha yang sama seperti CV Dian Mulya yaitu membuat gerai penjualan voucer dan pulsa elektrik. 1.4 Metode Penelitian Guna memperoleh bahan-bahan dan informasi yang dibutuhkan dalam perancangan, dilakukan studi lapangan pada tempat-tempat penjualan voucher dan pulsa elektrik. Selain itu penulis juga mencari artikel-artikel yang ada hubungannya dengan tema penulisan ilmiah penulis. Untuk menunjang penelitian, dilakukan pula kajian kepustakaan dengan mengumpulkan dan mempelajari berbagai referensi dari buku, web site dan catatan-catatan kuliah mengenai perancangan basis data, pemrograman bahasa Java dan MySQL 5 sehingga dapat dijadikan landasan untuk melakukan penelitian. 1.5 Sistematika Penulisan Untuk lebih memudahkan pembaca dalam memahami isi penulisan akhir ini, maka penulis membuat sistematika penulisan dalam lima bab, di mana bab yang satu dengan yang lain saling berkaitan. Bab I menguraikan tentang alasan pemilihan judul atau latar belakang masalah, pembatasan masalah, perumusan masalah, tujuan penelitian serta manfaat dari penelitian. Bab II membahas tentang konsep-konsep aplikasi layanan SMS, MySQL sebagai

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

BAB II LANDASAN TEORI

2.1

Perkembangan SMS (Short Message Service)

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

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

2.1.1

Arsitektur Jaringan SMS

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

Gambar 2.1 Arsitektur Jaringan SMS

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

Gambar 2.2 Skenario SMS MO (Mobile Originating)

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

2.2

Java Java adalah bahasa pemrograman serbaguna. Java dapat digunakan untuk

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

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

2.2.2

Kelebihan dan Kekurangan Java Kelebihan:

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

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

2.2.3

OOP Pada Java

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

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

11 InterfaceAdalah suatu abstraksi dari class. Interface hanya berisi daftar field dan method tanpa detail kode. Suatu class yang mengimplementasikan suatu interface maka class tersebut harus mendefinisikan method yang terdapat pada interface tersebut. 4. Penanganan Kesalahan Pada Java Java menggunakan model exception dalam menangani kesalahan pada program. Oleh karena pemeriksaan pada tahap kompilasi program Java sangat ketat, suatu method yang berpotensi untuk membangkitkan kesalahan harus ditangani dengan struktur trycatchfinally 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 trycatch tersebut dapat ditulis sebagai berikut: try { .statement yang berpeluang untuk terjadinya kesalahan. } catch(classexception1 pengenal) { .statement yang akan dikerjakan apabila kesalahan 1 terjadi.

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

2.2.4

GUI (Graphical User Interface)

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

JLabel namaLabel = new JLabel(label); Sama seperti namanya, class ini akan membuat suatu label pada sebuah window.
2. JTextField

JTextField namaText = new JTextField(jumlah_karakter_max); JTextField adalah suatu class yang akan memudahkan kita dalam membentuk isian text pada suatu frame.

13
3. JButton

JButton namaButton = new JButton(label_pada_button); JButton adalah suatu class yang akan membantu kita membentuk objek tombol.
4. JFrame

JFrame sebenarnya adalah suatu class yang disediakan untuk memudahkan kita dalam membuat suatu window.
5. JInternalFrame

Sama halnya dengan JFrame, JInternalFrame akan membantu kita dalam membuat window. Bedanya JInternalFrame akan berada didalam suatu window lainnya, jadi tidak dapat berdiri sendiri seperti JFrame.
6. JMenu

JMenu akan membuat objek menu bar pada sebuah frame.


7. ActionListener

ActionListener bukan merupakan suatu objek, melainkan sebuah class yang akan menampung aksi-aksi dari sebuah objek (yang banyak dipakai disini adalah tombol). Aksi-aksi itu akan ditampung dalam sebuah metode bernama ActionPerformed. Jadi bila kita menggunakan ActionListener, maka kita harus menyertakan metode ActionPerformed pada class tersebut.
8. Container

Container.setLayout(new GridLayout(jumlah_baris, jumlah_kolom)); Container akan membantu kita dalam mengatur penempatan objek seperti text, label, ataupun tombol. Ada banyak cara yang disediakan untuk mengatur penempatan objek. GridLayout akan membagi sebuah window menjadi beberapa baris dan kolom sesuai yang kita masukkan pada saat setLayout. Dan penempatan objeknya dimulai dari kiri atas lalu kekanan. Empat hal utama untuk membangun program berbasis GUI menggunakan swing yaitu: 1. Menciptakan dan konfigurasi component

Untuk menciptakan component GUI sama seperti membuat object lain dalam java, dengan menjalankan constructor. Setiap component dapat dilihat karakteristiknya dalam dokumentasi java. 2. Menambahkan component pada container

14 Setiap component dalam java harus diletakkan di dalam container. Container dalam java terdapat di java.awt.Container. Container yang sering digunakan yaitu JFrame dan JDialog. Untuk program berbasis web, dapat menggunakan container Applet dalam class java.applet.Applet. Ketiga container tersebut merupakan top level-container, yaitu container dasar yang menjadi tempat dasar bagi component dan container yang lain. Selain tiga di atas masih ada beberapa container lain seperti JPanel. 3. Mengatur tata letak component

Setelah meletakkan component dalam container, maka component dapat diatur ukuran dan tata letaknya. Selain itu dapat juga diatur warna dan bentuknya. Untuk mengatur layout, object yang digunakan yaitu LayoutManager. 4. Menangani kejadian (event-handling) yang dihasilkan oleh component

Component seringkali mengalami kejadian seperti button diklik, frame digeser, dan lain sebagainya. Kejadian merupakan hasil interaksi user dan program. Kejadian ini lebih lanjut disebut dengan event. Agar program dapat merespon event, maka perlu adanya event-listener.

2.3

MySQL

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

2.3.1

Sejarah MySQL

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

15 Saat itu Michael Widenius atauMonty, 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 INDEX VIEW *DROP

*ALTER TABLE 2. Data Manipulation Language ( DML )

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

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

17 dengan penggunaan tool yang tepat.

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

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

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

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

Gambar 2.3 Konsepsi Dasar UML

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

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

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

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

2.4.3.2 Pengertian Class Diagram

20 Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Class memiliki tiga area pokok : 1. Nama (dan stereotype) 2. Atribut 3. Metoda Atribut dan metoda dapat memiliki salah satu sifat berikut : 1. 2. Private, tidak dapat dipanggil dari luar class yang bersangkutan 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. 3. Agregasi, yaitu hubungan yang menyatakan bagian (terdiri atas..). Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class

lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi.

21 4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-passing dari satu

class kepada class lain. Hubungan dinamis dapat digambarkan dengan menggunakan sequence diagram yang akan dijelaskan kemudian.

Gambar 2.5 Contoh Class Diagram

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

22

Gambar 2.6 Contoh Statechart Diagram

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

23

Gambar 2.7 Contoh Activity Diagram

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

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

Gambar 2.8 Contoh Sequence Diagram

2.5

AT Command

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

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

2.5.1

AT Command dan Hyper Terminal

Mengakses AT Command melalui Hyperterminal sangat mudah dilakukan. Hal pertama yang harus dilakukan adalah memastikan komputer dan handset telah terhubung melalui port COM(menggunakan kabel R 232) atau melalui COM virtual pada windows (biasanya menggunakan kabel USB sebagai port COM, khusus penggunaan kabel USB pastikan bahwa driver kabel tersebut telah terinstal). Pada tabel 2.1 dapat kita lihat sebagian dari perintah-perintah AT command yang akan digunakan pada aplikasi yang akan dibuat.
Tabel 2.1 Perintah dasar AT Command
AT Command AT AT+CMGF AT+CSCS AT+CNMI Keterangan Mengecek apakah Handphone telah terhubung Untuk menetapkan format mode dari terminal Untuk menetapkan jenis encoding Untuk mendeteksi pesan SMS baru masuk secara otomatis AT+CMGL AT+CMGS AT+CMGR AT+CMGD ATE1 ATV1 AT+CGMI AT+CGMM AT+CGMR AT+CBC Membuka daftar SMS yang ada pada SIM Card Mengirim pesan SMS Membaca pesan SMS Menghapus pasan SMS Mengatur ECHO Mengatur input dan output berupa naskah Mengecek Merek HP Mengecek Seri HP Mengecek Versi Keluaran HP Mengecek Baterai

26
AT Command AT+CSQ AT+CCLK? AT+CALM=<n> Keterangan Mengecek Kualitas Sinyal Mengecek Jam (waktu) pada HP 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 AT+CGSN AT+CLIP=1 AT+CLCC AT+COPN AT+COPS? AT+CPBR=<n> Mengecek ID SIM CARD Mengecek Nomor IMEI Menampilkan nomor telepon pemanggil Menampilkan nomor telepon yang sedang memanggil Menampilkan Nama Sumua Operator di dunia Menampilkan nama operator dari SIM yang digunakan Membaca nomor telepon yang disimpan pada buku telepon (SIM CARD) n adalah nomor urut penyimpanan AT+CPMS=<md> Mengatur Memori dari HP md adalah memori yang digunakan ME = Memori HP SM = Memori SIM CARD

27

BAB III PERANCANGAN DAN IMPLEMENTASI

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

3.1.

Perancangan Sistem Menggunakan UML Perancangan sistem pada aplikasi ini digunakan dengan menggunakan Unified

Modelling Language (UML). Perancangan model sistem pada aplikasi ini digambarkan melalui Use Case Diagram, Class Diagram, Sequence Diagram dan Activity Diagram.

3.1.1

Use Case Diagram

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

28

Gambar 3.1 Use Case Diagram

3.1.2

Class Diagram

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

29

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

30 3.1.3 Sequence Diagram

Gambar 3.3 Sequence Diagram

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

3.1.4

Activity Diagram

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

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

Gambar 3.4 Activity Diagram

3.2

Perancangan Hardware

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

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

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

Gambar 3.5 Perancangan Hardware

3.3

Perancangan Aplikasi

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

33 3.3.1 Rancangan Struktur Database

Untuk menjelaskan hasil yang diinginkan dan menghindari kerangkapan data, aplikasi ini menggunakan satu database yaitu database db_dian_mulya yang terdiri dari 8 tabel relasional, yaitu tabel tb_petugas, tb_absensi, tb_operator, tb_jual_pulsa_elektrik, tb_sisa_pulsa, tb_barang, tb_detail_jual, tb_jual. A. Tabel tb_petugas Digunakan untuk tempat penyimpanan data Petugas. Struktur tabelnya terdiri dari beberapa field, yaitu : Tabel 3.1 Struktur Tabel tb_petugas Nama Field Id_petugas nama pswd Hak Jenis Field Char Varchar Varchar Varchar Lebar 4 45 45 10 Keterangan

Primari Key Nama petugas Password buat login 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 id_petugas tanggal jam_masuk jam_keluar Jenis Field Char Varchar Varchar Varchar Lebar 4 20 10 10 Keterangan

Foreign Key Tanggal absensi Jam pada saat login aplikasi Jam pada saat keluar aplikasi

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

34

Tabel 3.3 Struktur Tabel tb_operator Nama Field Id_operator Nama_operator Harga_beli Harga_jual Harga_pulsa Jenis Field Char Varchar Integer Integer Integer Lebar 4 20 7 7 7 Keterangan

Primary Key Nama operator (Simpati, IM3 ,dll) Harga beli pulsa elektrik Harga jual pulsa elektrik Nominal pulsa elektrik Kode format untuk SMS (SM20)

Kode_isi

Varchar

20

SM = Kode untuk simpati 20 = nominal pulsa

D. Tabel tb_jual_pulsa_elektrik Digunakan untuk tempat penyimpanan data transaksi penjualan pulsa elektrik. Struktur tabelnya terdiri dari beberapa field, yaitu : Tabel 3.4 Struktur Tabel tb_jual_pulsa_elektrik Nama Field faktur no_hp id_operator harga_beli harga_jual tanggal status id_petugas Jenis Field Char Varchar Char Integer Integer Varchar Varchar Char Lebar 8 16 4 7 7 20 20 4 Keterangan

Primary Key Nomor telepon selular pembeli Foreign Key Harga beli pulsa elektrik Harga jual pulsa elektrik Tanggal transaksi penjualan pulsa Status pengiriman pulsa Foreign Key

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

35 Tabel 3.5 Struktur Tabel tb_sisa_pulsa Nama Field sisa_pulsa Jenis Field Integer Lebar 12 Keterangan

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 id_barang nama harga_beli harga_jual stok Jenis Field Char Varchar Integer integer integer Lebar 4 45 7 7 7 Keterangan

Primary Key Nama untuk voucher cth Im3 10.000 Harga beli voucher Harga 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 no_faktur total tanggal id_petugas Jenis Field Char Integer Varchar Char Lebar 8 7 40 4 Keterangan

Primary Key Total harga dari voucher yang dibeli Tanggal transaksi pembelian Foreign Key

H. Tabel tb_detail_jual

36 digunakan untuk tempat penyimpanan detail dari penjualan voucher, dihitung per faktur dapat lebih dari beberapa barang atau voucher. Struktur tabelnya terdiri dari beberapa field, yaitu : Tabel 3.8 Struktur Tabel tb_detail_jual Nama Field no_faktur nama jumlah harga_beli harga_jual Total detail Jenis Field Char Varchar Integer Integer Integer Integer Lebar 8 45 7 7 7 7 Keterangan

Foreign Key Nama untuk voucher cth Im3 10.000 Jumlah voucher yang dibeli Harga beli barang saat transaksi Harga jual pada saat transaksi Total harga transaksi

3.3.2

Rancangan Tampilan Aplikasi

Perancangan tampilan desain output.

3.4

Implementasi

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

3.4.1

Pembuatan Database

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

37

Gambar 3.16 Prompt Login Database MySQL C. Untuk membuat database pulsa digunakan sintax :
CREATE DATABASE db_dian_mulya;

D. Untuk menggunakan database yang telah dibuat digunakan sintax :


USE db_dian_mulya;

E. Untuk membuat tabel tb_petugas digunakan sintax :


CREATE TABLE tb_petugas ( `id_petugas` CHAR(4) NOT NULL, `nama` VARCHAR(45) NOT NULL, `pswd` VARCHAR(10) NOT NULL, `hak` VARCHAR(5) NOT NULL, PRIMARY KEY(`id_petugas`) )

F. Untuk membuat tabel tb_operator digunakan sintax :


CREATE TABLE tb_operator ( `id_operator` CHAR(4) NOT NULL, `nama_operator` VARCHAR(20) NOT NULL, `harga_beli` INTEGER UNSIGNED NOT NULL, `harga_jual` INTEGER UNSIGNED NOT NULL, `harga_pulsa` INTEGER UNSIGNED NOT NULL, `kode_isi` VARCHAR(20) NOT NULL, PRIMARY KEY(`id_operator`) )

38

G. Untuk membuat tabel tb_barang digunakan sintax :


CREATE TABLE tb_barang ( `id_barang` CHAR(4) NOT NULL, `nama` VARCHAR(45) NOT NULL, `harga_beli` INTEGER UNSIGNED NOT NULL, `harga_jual` INTEGER UNSIGNED NOT NULL, `stok` INTEGER UNSIGNED NOT NULL, PRIMARY KEY(`id_barang`) )

H. Untuk membuat tabel tb_sisa_pulsa digunakan sintax :


CREATE TABLE tb_sisa_pulsa ( `sisa_pulsa` int );

I. Untuk membuat tabel tb_jual_pulsa_elektrik digunakan sintax :


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

39
)

J. Untuk membuat tabel tb_jual digunakan sintax :


CREATE TABLE tb_jual ( `no_faktur` CHAR(8) NOT NULL, `total` INTEGER UNSIGNED NOT NULL, `tanggal` VARCHAR(40) NOT NULL, `id_petugas` CHAR(4) NOT NULL, PRIMARY KEY(`no_faktur`), CONSTRAINT `FK_tb_jual_1` FOREIGN KEY `FK_tb_jual_1` (`id_petugas`) REFERENCES `tb_petugas` (`id_petugas`) ON DELETE CASCADE ON UPDATE CASCADE )

K. Untuk membuat tabel tb_detail_jual digunakan sintax :


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

3.4.2

Pembuatan Program

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

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

Gambar 3.17 Halaman NetBeans IDE 6.1

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

41

Gambar 3.18 Tampilan New Project

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

42

Gambar 3.19 Tampilan Kotak Dialog New Java Application

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

43

Gambar 3.20 Tampilan Kotak Dialog New File

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

3.4.3

Penjelasan Kode Program

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

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

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

46

BAB IV HASIL DAN PEMBAHASAN

4.1 Spesifikasi Perangkat yang Digunakan untuk Pengujian Spesifikasi yang digunakan untuk menguji aplikasi ini adalah prosessor Intel Pentium 4.2 GHz RAM 512 MB, dengan sistem operasi Microsoft Windows XP SP 2, telepon selular Sony Ericson type T610 dan kabel data. 4.2 Pengujian Untuk menguji aplikasi ini pertama-tama pengguna menjalankan file yang bernama skripsi_bowo, sehingga akan muncul tampilan menu utama seperti pada Gambar 4.1.

Gambar 4.1 Tampilan Menu Utama

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

47

Gambar 4.2 Tampilan Form Login

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

Gambar 4.3 Perbedaan Menu User dan Admin

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

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

Gambar 4.4 Form Admin Petugas

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

49

Gambar 4.5 Form Admin Operator Pulsa Elektrik

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

50

Gambar 4.6 Form Admin Voucher

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

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

Gambar 4.7 Form Transaksi Penjualan Pulsa Elektrik

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

Gambar 4.8 Form Transaksi Penjualan Voucher

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

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

Gambar 4.9 Form Laporan Penjualan Pulsa Elektrik

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

54

Gambar 4.10 Form Laporan Penjualan Voucher

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

55

Gambar 4.11 Form Laporan Absensi Karyawan

4.3 Hasil Pengujian Berdasarkan pengujian di atas, dapat terlihat bahwa program dapat berjalan. Untuk menilai keberhasilan aplikasi yang dibuat, penulis melakukan uji coba program pada 20 orang pengguna, dimana masing-masing orang diberi pengarahan selama 5 menit untuk penggunaan program, setelah itu pengguna mencoba aplikasi yang telah dibuat, dan mengisi kuisioner yang diberikan penulis. Penulis mengelompokkan penilaian berdasarkan tampilan program, cara penggunaan program, fasilitas pada program, kegunaan program dan ketepatan program. Data hasil pengujian dapat dilihat pada Tabel 4.1.
Tabel 4.1 Hasil Kuisioner

Nama Sugeng R Rizal Dicki Ryan Dandy

Pertanyaan 1 N SS S S S 2 S S N S N 3 SS SS SS SS S 4 SS SS S SS S 5 S S S S N 6 SS SS SS SS S 7 SS SS SS S S 8 SS S S S N 9 SS S S S S 10 SS SS S S S

56 Danu N N N N N S N S S S Opik N TS N N N S N N S S Markus N TS S S N S S N S S Ozi S N S S S SS SS S SS SS Izul S N SS SS S SS SS SS SS S Aank S N S N S S S S N S Dimas S N S N S N S N S N Niea SS N SS S SS S SS SS S SS Nina S N SS S S N S N SS S Kholik S N S N S SS S N S N Budi S N S N S N S N S SS Faizah SS N SS S S S S SS S SS Siti S N SS S S N SS S S SS Iwan N TS N TS S TS S S S N Dina S N N S S S S S N S Untuk mengetahui kesimpulan dari setiap pertanyaan penulis menggunakan sistem bobot, pada tabel 4.2 ditetapkan bobot nilai dari setiap jawaban.
Tabel 4.2 Bobot Nilai

No 1. 2. 3. 4. 5.

Jawaban Sangat Setuju (SS) Setuju (S) Normal (N) Tidak Setuju (TS) Sangat Tidak Setuju (STS)

Bobot 5 4 3 2 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 1 dan 2 Total Bobot

SS S 3 15 15 60

N 19 57

TS STS 3 6 0 0

Nilai bobot untuk tampilan program adalah :

57

15 + 60 + 57 + 6 2 x 20

= 3,45

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 3 dan 4 Total Bobot

SS S 13 65 16 64

N 10 30

TS STS 1 2 0 0

Nilai bobot untuk cara penggunaan program adalah : 65 + 64 + 30 + 2 2 x 20 = 4,025

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 5 dan 6 Total Bobot

SS S 8 40 23 92

N 8 24

TS STS 1 2 0 0

Nilai bobot untuk cara penggunaan program adalah : 40 + 92 + 24 + 2 2 x 20 = 3,95

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

58 Pada pertanyaan nomor 7 dan 8 pada kuisioner, penulis menitik beratkan kepada fasilitas pada program. Pada tabel 4.6 dapat dilihat bobot nilai untuk fasilitas pada program.
Tabel 4.6 Bobot Nilai Fasilitas Pada Program

Nomor Pertanyaan 7 dan 8 Total Bobot

SS S 11 55 20 80

N 9 27

TS STS 0 0 0 0

Nilai bobot untuk fasilitas pada program adalah 55 + 80 + 27 2 x 20 = 4,05

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 9 dan 10 Total Bobot

SS S 11 55 24 96

N 5 15

TS STS 0 0 0 0

Nilai bobot untuk fasilitas pada program adalah 55 + 96 + 15 2 x 20 = 4,15

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

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

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

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

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

61

BAB V PENUTUP
5.1 Kesimpulan

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

5.2

Saran

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

62

LAMPIRAN LAMPIRAN A

LISTING PROGRAM
File koneksi_database.java import java.util.*; import java.sql.*; public class koneksi_database { public Connection koneksiDatabase() { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException cnfe) { System.out.println(cnfe); } Connection koneksi = null; try { koneksi = DriverManager.getConnection("jdbc:mysql://localhost/db_dian_mulya", "root", ""); }

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

File utama.java import java.sql.*; import java.awt.*; import java.awt.event.*; import java.util.Calendar; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; public class Utama extends javax.swing.JFrame { // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // ================================ BATAS EDIT ========================== public String Vtgl="", Vjam=""; private void bisa_menu_admin() { this.jMenu1.setVisible(true); this.jMenu2.setVisible(true); this.jMenu3.setVisible(true); this.jMenuItem5.setEnabled(false); this.jMenuItem6.setEnabled(true); } private void bisa_menu_user() { this.jMenu1.setVisible(false); this.jMenu2.setVisible(true); this.jMenu3.setVisible(false); this.jMenuItem5.setEnabled(false); this.jMenuItem6.setEnabled(true); } private void tidak_menu() { this.jMenu1.setVisible(false); this.jMenu2.setVisible(false); this.jMenu3.setVisible(false); this.jMenuItem5.setEnabled(true); this.jMenuItem6.setEnabled(false); } private void absen_keluar() { try { String sql1 = "update tb_absen set jam_keluar = '" + Vjam + "' where jam_keluar like '0'"; Statement stat1 = kon.createStatement(); int rs1 = stat1.executeUpdate(sql1); } catch (SQLException ex) {

64
System.out.println("Error OnClose Menu Utama => " + ex); } } public void tanggal() { try{ ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent ae) { String nolbulan = ""; String nolhari = ""; String noljam = ""; String nolmenit= ""; String noldetik = ""; //MEMBUAT DATE Calendar dt = Calendar.getInstance(); //MENGAMBIL NILAI JAM, MENIT, DETIK String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"}; String Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No vember","Desember"}; int tahun = dt.get(dt.YEAR); int bulan = dt.get(dt.MONTH); int hari_V = dt.get(dt.DAY_OF_WEEK); int hari = dt.get(dt.DAY_OF_MONTH); int jam = dt.get(dt.HOUR_OF_DAY); int menit = dt.get(dt.MINUTE); int detik =dt.get(dt.SECOND); //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit) if (bulan < 10) { nolbulan = "0"; } if (hari < 10) { nolhari = "0"; } if (jam < 10) { noljam = "0"; } if (menit < 10) { nolmenit = "0"; } if (detik < 10) { noldetik = "0"; } //MEMBUAT string tanggal

65
String Sbulan = nolbulan + Integer.toString(bulan); String Shari = nolhari + Integer.toString(hari); String Sjam = noljam + Integer.toString(jam); String Smenit = nolmenit + Integer.toString(menit); String Sdetik = noldetik + Integer.toString(detik); Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun; Vjam = Sjam+":"+Smenit+":"+Sdetik; } }; //TIMER new javax.swing.Timer(1000, taskPerformer).start(); } catch (Exception e) {System.out.println ("Error : " + e);} }

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

/** Creates new form Utama */ /* Konstruktor*/ public Utama() { tanggal(); initComponents(); setContentPane(this.jDesktopPane1); tidak_menu(); //bisa_menu_admin(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jDesktopPane1 = new javax.swing.JDesktopPane(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu4 = new javax.swing.JMenu(); jMenuItem5 = new javax.swing.JMenuItem(); jMenuItem6 = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JSeparator(); jMenuItem7 = new javax.swing.JMenuItem(); jMenu1 = new javax.swing.JMenu(); jMenuItem1 = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); jMenuItem8 = new javax.swing.JMenuItem(); jMenuItem9 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); jMenuItem2 = new javax.swing.JMenuItem();

66
jMenuItem10 = new javax.swing.JMenuItem(); jMenuItem11 = new javax.swing.JMenuItem(); jMenu3 = new javax.swing.JMenu(); jMenuItem4 = new javax.swing.JMenuItem(); jMenuItem12 = new javax.swing.JMenuItem(); jMenuItem13 = new javax.swing.JMenuItem(); jMenuItem14 = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER); jMenu4.setText("File"); // NOI18N jMenu4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu4ActionPerformed(evt); } }); jMenuItem5.setText("Log In"); // NOI18N jMenuItem5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem5ActionPerformed(evt); } }); jMenu4.add(jMenuItem5); jMenuItem6.setText("Log Out"); // NOI18N jMenuItem6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem6ActionPerformed(evt); } }); jMenu4.add(jMenuItem6); jMenu4.add(jSeparator2); jMenuItem7.setText("Keluar"); // NOI18N jMenuItem7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem7ActionPerformed(evt); } }); jMenu4.add(jMenuItem7); jMenuBar1.add(jMenu4); jMenu1.setText("Data"); // NOI18N jMenu1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu1ActionPerformed(evt); } });

67

jMenuItem1.setText("Petugas"); // NOI18N jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); jMenu1.add(jMenuItem1); jMenuItem3.setText("Operator"); // NOI18N jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem3ActionPerformed(evt); } }); jMenu1.add(jMenuItem8); jMenuItem9.setText("Voucher "); // NOI18N jMenuItem9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem9ActionPerformed(evt); } }); jMenu1.add(jMenuItem9); jMenuBar1.add(jMenu1); jMenu2.setText("Transaksi"); // NOI18N jMenuItem2.setText("Pulsa Elektrik"); // NOI18N jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); jMenu2.add(jMenuItem10); jMenuItem11.setText("Voucher "); jMenuItem11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem11ActionPerformed(evt); } }); jMenu2.add(jMenuItem11); jMenuBar1.add(jMenu2); jMenu3.setText("Laporan"); // NOI18N jMenuItem4.setText("Laporan Pulsa Elektrik"); // NOI18N jMenuItem4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem4ActionPerformed(evt); } });

68
jMenu3.add(jMenuItem12); jMenuItem13.setText("Laporan Voucher"); jMenuItem13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem13ActionPerformed(evt); } }); jMenu3.add(jMenuItem13); jMenuItem14.setText("Laporan Absensi Karyawan"); jMenuItem14.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem14ActionPerformed(evt); } }); jMenu3.add(jMenuItem14); jMenuBar1.add(jMenu3); setJMenuBar(jMenuBar1); pack(); }// </editor-fold> private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) { //Menu Keluar if(JOptionPane.showConfirmDialog(null,"Apakan anda ingin keluar dari aplikasi ini ?",".:: CV DIAN MULYA ::.",0,3) == 0) { absen_keluar(); dispose(); } } private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) { // MENU Log In this.jDesktopPane1.removeAll(); repaint(); final Login log = new Login(); log.setTitle("LOGIN CV DIAN MULYA"); log.setSize(380,160); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth()-log.getWidth()) / 2; int y = (this.getHeight()-log.getHeight()) / 2; log.setLocation(x,y-25); log.show(); this.jDesktopPane1.add(log); log.jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent a) { String nama = log.jTextField1.getText(); String pass = log.jPasswordField1.getText(); try

69
{ String sql = "select * from tb_petugas where nama = '" + nama + "' and pswd = '" + pass +"'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow() > 0) { String sql1 = "insert into tb_absen values('" + rs.getString(1) + "', '" + Vtgl + "', '" + Vjam + "','0')"; Statement stat1 = kon.createStatement(); int rs1 = stat1.executeUpdate(sql1); log.dispose(); String hak = rs.getString(4); if(hak.equals("Admin")) { bisa_menu_admin(); } else if(hak.equals("User")) { bisa_menu_user(); } } else { JOptionPane.showMessageDialog(null,"Access Denied !!!",".:: Error Log In ::.",0); } } catch(Exception e) { System.out.println("Error " + e); } } }); } private void jMenu4ActionPerformed(java.awt.event.ActionEvent evt) { } private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) { // MENU OPERATOR this.jDesktopPane1.removeAll(); repaint(); Provider prov = new Provider(); prov.setTitle("CV Dian Mulya <Admin Data Operator>"); prov.setSize(655,490); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth() - prov.getSize().width)/2; int y = (this.getHeight() - prov.getSize().height)/2; prov.setLocation(x,y-25); prov.show(); this.jDesktopPane1.add(prov); } private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {

70
// MENU PETUGAS this.jDesktopPane1.removeAll(); repaint(); Petugas tugas = new Petugas(); tugas.setTitle("CV Dian Mulya <Admin Data Petugas>"); tugas.setSize(580,475); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth() - tugas.getSize().width)/2; int y = (this.getHeight() - tugas.getSize().height)/2; tugas.setLocation(x,y-25); tugas.show(); this.jDesktopPane1.add(tugas); } private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { // MENU PENJUALAN pulsa elektrik this.jDesktopPane1.removeAll(); repaint(); Penjualan_Pulsa jual = new Penjualan_Pulsa(); jual.setTitle("CV Dian Mulya <Transaksi Penjualan Pulsa Elektrik)"); jual.setSize(1015,680); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth() - jual.getSize().width)/2; int y = (this.getHeight() - jual.getSize().height)/2; jual.setLocation(x-2,y-27); jual.show(); this.jDesktopPane1.add(jual); } private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL LOG OUT absen_keluar(); tidak_menu(); } private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) { // Laporan penjualan pulsa this.jDesktopPane1.removeAll(); repaint(); Laporan_Jual Lap = new Laporan_Jual(); Lap.setTitle("CV Dian Mulya (Laporan Penjualan Pulsa Elektrik)"); Lap.setSize(1015,695); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth() - Lap.getSize().width)/2; int y = (this.getHeight() - Lap.getSize().height)/2; Lap.setLocation(x-2,y-24); Lap.show(); this.jDesktopPane1.add(Lap); } private void formWindowClosing(java.awt.event.WindowEvent evt) { absen_keluar();

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

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

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

72
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (this.getWidth() - lapab.getSize().width)/2; int y = (this.getHeight() - lapab.getSize().height)/2; lapab.setLocation(x-2,y-24); lapab.show(); this.jDesktopPane1.add(lapab); } /** * @param args the command line arguments */ public static void main(String args[]) { Utama tama = new Utama(); //ngasih nama form = jual tama.setSize(1025,745); //bwt ngatur lebar form (format= (widht, hight)) Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen int lebar = (screen.width - tama.getSize().width)/2; int tinggi = (screen.height - tama.getSize().height)/2; tama.setTitle("CV.Dian Mulya"); tama.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tama.setLocation(lebar,tinggi-15); tama.setResizable(false); tama.setVisible(true); } // Variables declaration - do not modify private javax.swing.JDesktopPane jDesktopPane1; public javax.swing.JMenu jMenu1; public javax.swing.JMenu jMenu2; public javax.swing.JMenu jMenu3; private javax.swing.JMenu jMenu4; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem10; private javax.swing.JMenuItem jMenuItem11; private javax.swing.JMenuItem jMenuItem12; private javax.swing.JMenuItem jMenuItem13; private javax.swing.JMenuItem jMenuItem14; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem4; private javax.swing.JMenuItem jMenuItem5; private javax.swing.JMenuItem jMenuItem6; private javax.swing.JMenuItem jMenuItem7; private javax.swing.JMenuItem jMenuItem8; private javax.swing.JMenuItem jMenuItem9; private javax.swing.JSeparator jSeparator2; // End of variables declaration } File login.java import java.sql.*; import javax.swing.*; //public class Login extends javax.swing.JFrame { public class Login extends javax.swing.JInternalFrame {

73
/** Creates new form Login */ public Login() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jLabel4 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jPasswordField1 = new javax.swing.JPasswordField(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Username : "); getContentPane().add(jLabel4); jLabel4.setBounds(10, 20, 140, 15); jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11)); getContentPane().add(jTextField1); jTextField1.setBounds(170, 20, 170, 20); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("Password : "); getContentPane().add(jLabel3); jLabel3.setBounds(20, 40, 130, 15); jButton5.setText("LoGin"); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); getContentPane().add(jButton5); jButton5.setBounds(90, 70, 90, 23); jButton6.setText("Keluar"); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); getContentPane().add(jButton6); jButton6.setBounds(190, 70, 90, 23);

74

jPasswordField1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { jPasswordField1KeyReleased(evt); } }); getContentPane().add(jPasswordField1); jPasswordField1.setBounds(170, 40, 170, 20); pack(); }// </editor-fold> private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL MASUK } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL KELUAR dispose(); } private void jPasswordField1KeyReleased(java.awt.event.KeyEvent evt) { // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { /* Login log = new Login(); //ngasih nama form = jual log.setSize(380,140); //bwt ngatur lebar form (format= (widht, hight)) Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen int lebar = (screen.width - log.getSize().width)/2; int tinggi = (screen.height - log.getSize().height)/2; log.setTitle(".:: Login ::."); log.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); log.setLocation(lebar,tinggi-15); log.setResizable(false); log.setVisible(true); */ } // Variables declaration - do not modify public javax.swing.JButton jButton5; public javax.swing.JButton jButton6; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; public javax.swing.JPasswordField jPasswordField1; public javax.swing.JTextField jTextField1; // End of variables declaration } File petugas.java

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

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

public void tampilkandataketabel() { hapustabel(); try

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

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

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

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

BATAS

EDIT

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

78
jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); jLabel17 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jLabel6 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Petugas"); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabel); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) {

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

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledB order(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,

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

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

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

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

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

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

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

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

81

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

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

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

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

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

jButton4.setText("Keluar");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** * @param args the command line arguments */ public static void main(String args[]) { /* Petugas tugas = new Petugas(); tugas.setSize(580,475); //ngasih nama form = jual

//bwt ngatur lebar form (format= (widht, hight))

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

89

// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; // End of variables declaration } File provider.java import java.sql.*; import javax.swing.*;

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

// =================== BATAS EDIT ===================================== // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabel = new javax.swing.table.DefaultTableModel(null, new String[]{"ID OPERATOR","NAMA OPERATOR","NOMINAL PULSA","HARGA BELI","HARGA JUAL","KODE ISI"}) {

90
public boolean isCellEditable(int iRows, int iCols) { return false; } }; private void bersih() { this.jTextField1.setText(""); this.jTextField2.setText(""); this.jTextField3.setText(""); this.jTextField4.setText(""); this.jTextField5.setText(""); this.jLabel2.setText(""); } public void hapustabel() { int row = tabel.getRowCount(); for (int i=0; i < row ; i++ ) { tabel.removeRow(0); } } public void tampilkandataketabel() { hapustabel(); try { String sql = "select * from tb_operator order by NAMA_operator, harga_pulsa"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String id = rs.getString(1); String nama = rs.getString(2); String hb = rs.getString(3); String hj = rs.getString(4); String hp = rs.getString(5); String kode = rs.getString(6); String[] data = {id, nama, hp, hb, hj, kode}; tabel.addRow(data); } } catch (Exception e) { System.out.println("Error " + e); } } private void id_operator() { int byk_data; byk_data = 0; try

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

/** Creates new form Provider */ public Provider() { initComponents(); bersih(); tampilkandataketabel(); this.jButton4.setVisible(false); this.jLabel1.setVisible(false); this.jLabel1.setText(""); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); jLabel17 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel();

92
jLabel5 = new javax.swing.JLabel(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); jTextField4 = new javax.swing.JTextField(); jTextField5 = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jLabel8 = new javax.swing.JLabel(); jTextField6 = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabel); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(10, 10, 630, 190); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel1.setForeground(new java.awt.Color(51, 51, 255)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Tambah Data"); jLabel1.setOpaque(true); getContentPane().add(jLabel1); jLabel1.setBounds(160, 230, 100, 20);

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

93
jPanel1.setLayout(null); jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel17.setText("ID Operator : "); jPanel1.add(jLabel17); jLabel17.setBounds(30, 10, 100, 20); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("Nominal Pulsa : "); jPanel1.add(jLabel3); jLabel3.setBounds(20, 50, 110, 15); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel5.setText("Harga Beli : "); jPanel1.add(jLabel5); jLabel5.setBounds(30, 70, 100, 15); jButton5.setText("OK"); jButton5.setEnabled(false); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jPanel1.add(jButton5); jButton5.setBounds(110, 140, 90, 23); jButton6.setText("BATAL"); jButton6.setEnabled(false); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); jPanel1.add(jButton6); jButton6.setBounds(210, 140, 90, 23); jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel1.add(jTextField1); jTextField1.setBounds(140, 30, 170, 20); jTextField2.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel1.add(jTextField2); jTextField2.setBounds(140, 50, 170, 20); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Nama Operator : "); jPanel1.add(jLabel4); jLabel4.setBounds(10, 30, 120, 15); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel2.setText("jLabel2");

94
jPanel1.add(jLabel2); jLabel2.setBounds(140, 10, 170, 20); jTextField3.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel1.add(jTextField3); jTextField3.setBounds(140, 70, 170, 20); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel6.setText("Harga Jual : "); jPanel1.add(jLabel6); jLabel6.setBounds(30, 90, 100, 15); jTextField4.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel1.add(jTextField4); jTextField4.setBounds(140, 90, 170, 20); jTextField5.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel1.add(jTextField5); jTextField5.setBounds(140, 110, 170, 20); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel7.setText("Kode Isi Pulsa : "); jPanel1.add(jLabel7); jLabel7.setBounds(10, 110, 120, 15); getContentPane().add(jPanel1); jPanel1.setBounds(150, 240, 330, 170); jButton1.setText("Tambah"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); getContentPane().add(jButton1); jButton1.setBounds(120, 420, 90, 23); jButton2.setText("Edit"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); getContentPane().add(jButton2); jButton2.setBounds(220, 420, 90, 23); jButton3.setText("Hapus"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); getContentPane().add(jButton3); jButton3.setBounds(320, 420, 90, 23);

95

jButton4.setText("Cetak"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); getContentPane().add(jButton4); jButton4.setBounds(520, 420, 90, 23); jButton7.setText("Keluar"); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt); } }); getContentPane().add(jButton7); jButton7.setBounds(420, 420, 90, 23); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel8.setText("Cari Nama Operator : "); getContentPane().add(jLabel8); jLabel8.setBounds(240, 210, 220, 20); jTextField6.setFont(new java.awt.Font("Tahoma", 1, 11)); jTextField6.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { jTextField6KeyReleased(evt); } }); getContentPane().add(jTextField6); jTextField6.setBounds(470, 210, 170, 20); pack(); }// </editor-fold> private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL KELUAT dispose(); } private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { // TABEL PROVIDER String aksi = this.jLabel1.getText(); if(aksi.equals("Edit Data") || aksi.equals("Hapus Data")) { int brs = this.jTable1.getSelectedRow(); String id = tabel.getValueAt(brs,0).toString(); String nama = tabel.getValueAt(brs,1).toString(); String hp = tabel.getValueAt(brs,2).toString(); String hb = tabel.getValueAt(brs,3).toString(); String hj = tabel.getValueAt(brs,4).toString(); String kode = tabel.getValueAt(brs,5).toString(); this.jLabel2.setText(id); this.jTextField1.setText(nama);

96
this.jTextField2.setText(hp); this.jTextField3.setText(hb); this.jTextField4.setText(hj); this.jTextField5.setText(kode); this.jTextField1.requestFocus(); } } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL OK String id = this.jLabel2.getText(); String nama = this.jTextField1.getText(); String hp = this.jTextField2.getText(); String hb = this.jTextField3.getText(); String hj = this.jTextField4.getText(); String kode = this.jTextField5.getText(); if(jLabel1.getText() == "Tambah Data") { if(nama.equals("") || hp.equals("") || hb.equals("") || hj.equals("") || kode.equals("")) { JOptionPane.showMessageDialog(null,"Isi dengan Lengkap", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.requestFocus(); } else { try { String sql = "insert into tb_operator values('" + id + "','" + nama + "','" + hb + "','" + hj + "','" + hp + "', '" + kode + "')"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); bersih(); tampilkandataketabel(); id_operator(); this.jTextField1.requestFocus(); } catch (Exception e) { System.out.println("Error Tambah Data : " + e + "\n"); } } } else if(jLabel1.getText() == "Edit Data") { if(id.equals("")) { JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel diatas !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTable1.requestFocus(); } else { if(this.jLabel2.getText().equals(""))

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

98
{ if(nama.equals("") || hp.equals("") || hb.equals("") || hj.equals("") || kode.equals("")) { JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.requestFocus(); } else { if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin menghapus data ini ?", ".:: CV DIAN MULYA CONFIRMATION ::.",0,3)==0) { try { String sql = "delete from tb_operator where id_operator = '" + id + "'"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); bersih(); tampilkandataketabel(); this.jTable1.requestFocus(); } catch (Exception e) { System.out.println("Error Hapus Data : " + e + "\n"); } } } } } } } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL BATAL bersih(); tampilkandataketabel(); this.jTextField6.setText(""); this.jLabel1.setText(""); this.jLabel1.setVisible(false); this.jButton5.setEnabled(false); this.jButton6.setEnabled(false); this.jButton1.requestFocus(); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL HAPUS bersih(); this.jLabel1.setVisible(true); this.jLabel1.setText("Hapus Data"); this.jButton5.setEnabled(true); this.jButton6.setEnabled(true); this.jTable1.requestFocus(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL EDIT

99
bersih(); this.jLabel1.setVisible(true); this.jLabel1.setText("Edit Data"); this.jButton5.setEnabled(true); this.jButton6.setEnabled(true); this.jTable1.requestFocus(); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL CETAK JOptionPane.showMessageDialog(null,"Fasilitas Cetak data belum tersedia !!!",".:: CV DIAN MULYA INFORMATION::.",1); this.jButton1.requestFocus(); /* try { String prg = "C:\\datavision-1.0.0\\datavision.bat"; String report = "C:\\datavision-1.0.0\\Pulsa.xml"; Process proc = Runtime.getRuntime().exec(prg + " -p" + "123456" + " -w" + report); try { proc.waitFor(); } catch(InterruptedException e) { System.out.print("error Cetak1 : " + e + "\n"); } } catch(Exception es) { System.out.print("error Cetak2 : " + es + "\n"); } */ } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL TAMBAH DATA id_operator(); this.jLabel1.setVisible(true); this.jLabel1.setText("Tambah Data"); this.jButton5.setEnabled(true); this.jButton6.setEnabled(true); this.jTextField1.requestFocus(); } private void jTextField6KeyReleased(java.awt.event.KeyEvent evt) { // CARI NAMA PROVIDER hapustabel(); try { String sql = "select * from tb_operator where nama_operator like '" + this.jTextField6.getText() + "%' order by nama_operator, harga_pulsa"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) {

100
String id = rs.getString(1); String nama = rs.getString(2); String hb = rs.getString(3); String hj = rs.getString(4); String hp = rs.getString(5); String kode = rs.getString(6); String[] data = {id, nama, hp, hb, hj, kode}; tabel.addRow(data); } } catch (Exception e) { System.out.println("Error " + e); } } /** * @param args the command line arguments */ public static void main(String args[]) { /* Provider prov = new Provider(); //ngasih nama form = jual prov.setSize(655,490); //bwt ngatur lebar form (format= (widht, hight)) Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen int lebar = (screen.width - prov.getSize().width)/2; int tinggi = (screen.height - prov.getSize().height)/2; prov.setTitle(".:: CV Dian Mulya ::."); prov.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); prov.setLocation(lebar,tinggi-15); prov.setResizable(false); prov.setVisible(true); */ } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2;

101
private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField4; private javax.swing.JTextField jTextField5; private javax.swing.JTextField jTextField6; // End of variables declaration } File voucher.java import java.sql.*; import javax.swing.*; public class voucher extends javax.swing.JInternalFrame { //=================================batas edit====================== // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabbr = new javax.swing.table.DefaultTableModel(null, new String[]{"ID barang","NAMA","HARGA BELI","HARGA JUAL","STOK"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; private void bersih() { this.jTextField1.setText(""); this.jTextField2.setText(""); this.jTextField3.setText(""); this.jTextField4.setText(""); this.jLabel1.setText(""); } //BERSIHIN DATA PADA TABEL public void hapustabel() { int row = tabbr.getRowCount(); for (int i=0; i < row ; i++ ) { tabbr.removeRow(0); } } //TAMPILIN DATA KE TABEL public void tampilkandataketabel() { hapustabel(); try { String sql = "select * from tb_barang order by id_barang"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql);

102
while (rs.next()) { String id = rs.getString(1); String nama = rs.getString(2); String hb = rs.getString(3); String hj = rs.getString(4); String stok = rs.getString(5); String[] data = {id, nama, hb, hj,stok}; tabbr.addRow(data); } } catch (Exception e) { System.out.println("Error " + e); } } private void id_barang() { int byk_data; byk_data = 0; try { String sql = "select * from tb_barang order by id_barang"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); byk_data = rs.getRow(); if (byk_data == 0) { this.jLabel12.setText("V001"); } else { String id = rs.getString(1); int n = Integer.parseInt(id.substring(1, 4)) + 1; String nomor = ""; for(int i = 1; i <= 3 - String.valueOf(n).length(); i++) { nomor = nomor + "0"; } nomor = "V" + nomor + String.valueOf(n); this.jLabel12.setText(nomor); } } catch (Exception e) { System.out.println("Error Id barang : " + e + "\n"); } } // ================================ BATAS EDIT ===================================== /** Creates new form voucher */ public voucher() {

103
initComponents(); tampilkandataketabel(); this.jLabel1.setVisible(false); this.jLabel1.setText(""); this.jLabel12.setText(""); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jTextField4 = new javax.swing.JTextField(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabbr);

104
jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jTable1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jTable1KeyPressed(evt); } }); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(20, 10, 480, 120); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jPanel1.setLayout(null); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel2.setText("id barang"); jPanel1.add(jLabel2); jLabel2.setBounds(30, 20, 80, 20); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel1.setForeground(new java.awt.Color(0, 0, 255)); jLabel1.setText("Tambah data "); jLabel1.setOpaque(true); jPanel1.add(jLabel1); jLabel1.setBounds(10, -10, 100, 30); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel3.setText("nama "); jPanel1.add(jLabel3); jLabel3.setBounds(30, 40, 80, 20); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel4.setText("harga beli "); jPanel1.add(jLabel4); jLabel4.setBounds(30, 60, 80, 20); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel5.setText("harga jual "); jPanel1.add(jLabel5); jLabel5.setBounds(30, 80, 80, 20); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel6.setText("stok "); jPanel1.add(jLabel6); jLabel6.setBounds(30, 100, 80, 20); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel7.setText(":"); jPanel1.add(jLabel7); jLabel7.setBounds(120, 100, 10, 20); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

105
jLabel8.setText(":"); jPanel1.add(jLabel8); jLabel8.setBounds(120, 20, 10, 20); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel9.setText(":"); jPanel1.add(jLabel9); jLabel9.setBounds(120, 40, 10, 20); jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel10.setText(":"); jPanel1.add(jLabel10); jLabel10.setBounds(120, 60, 10, 20); jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel11.setText(":"); jPanel1.add(jLabel11); jLabel11.setBounds(120, 80, 10, 20); jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel12.setText("jLabel12"); jPanel1.add(jLabel12); jLabel12.setBounds(140, 20, 80, 20); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt); } }); jPanel1.add(jTextField1); jTextField1.setBounds(130, 40, 130, 20); jPanel1.add(jTextField2); jTextField2.setBounds(130, 60, 130, 20); jPanel1.add(jTextField3); jTextField3.setBounds(130, 80, 130, 20); jPanel1.add(jTextField4); jTextField4.setBounds(130, 100, 130, 20); jButton1.setText("OK"); jButton1.setEnabled(false); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jPanel1.add(jButton1); jButton1.setBounds(50, 130, 80, 23); jButton2.setText("BATAL"); jButton2.setEnabled(false); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jPanel1.add(jButton2);

106
jButton2.setBounds(143, 130, 90, 23); getContentPane().add(jPanel1); jPanel1.setBounds(110, 140, 300, 170); jButton3.setText("Tambah"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); getContentPane().add(jButton3); jButton3.setBounds(70, 330, 90, 23); jButton4.setText("Edit"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); getContentPane().add(jButton4); jButton4.setBounds(170, 330, 80, 23); jButton5.setText("Hapus"); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); getContentPane().add(jButton5); jButton5.setBounds(270, 330, 90, 23); jButton6.setText("Keluar"); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); getContentPane().add(jButton6); jButton6.setBounds(370, 330, 80, 23); pack(); }// </editor-fold> private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL OK String id = this.jLabel12.getText(); String nama = this.jTextField1.getText(); String hbeli = this.jTextField2.getText(); String hjual = this.jTextField3.getText(); String stok = this.jTextField4.getText();

107
if(jLabel1.getText() == "Tambah Data") { if(nama.equals("") || hbeli.equals("") || hjual.equals("") || stok.equals("")) { JOptionPane.showMessageDialog(null,"Isi dengan Lengkap", ".::CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.requestFocus(); } else { try { String sql = "insert into tb_barang values('" + id + "','" + nama + "','" + hbeli + "','" + hjual + "', '" + stok + "')"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); bersih(); tampilkandataketabel(); id_barang(); this.jTextField1.requestFocus(); } catch (Exception e) { System.out.println("Error Tambah Data : " + e + "\n"); } } } else if(jLabel1.getText() == "Edit Data") { if(id.equals("")) { JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel diatas !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTable1.requestFocus(); } else { if(this.jLabel12.getText().equals("")) { JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit pada tabel !", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.requestFocus(); } else { if(nama.equals("") || hbeli.equals("") || hjual.equals("") || stok.equals("")) { JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.requestFocus(); } else { if(JOptionPane.showConfirmDialog(null, "Apakah anda ingin merubah data ini ?", ".:: CV DIAN MULYA CONFIRMATION ::.",0,3)==0)

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

109
tampilkandataketabel(); this.jTable1.requestFocus(); } catch (Exception e) { System.out.println("Error Hapus Data : " + e + "\n"); } } } } } } } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { //TOMBOL KELUAR dispose(); } private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {

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

110
// TOMBOL TAMBAH bersih(); id_barang(); //ngambil id barang this.jLabel1.setVisible(true); this.jLabel1.setText("Tambah Data"); this.jButton1.setEnabled(true); this.jButton2.setEnabled(true); this.jTextField1.requestFocus(); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL EDIT bersih(); this.jLabel1.setVisible(true); this.jLabel1.setText("Edit Data"); this.jLabel12.setText(""); this.jButton1.setEnabled(true); this.jButton2.setEnabled(true); this.jTextField1.requestFocus(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL BATAL bersih(); tampilkandataketabel(); this.jLabel1.setText(""); this.jLabel1.setVisible(false); this.jLabel12.setText(""); this.jButton1.setEnabled(false); this.jButton2.setEnabled(false); jButton1.requestFocus(); }

// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1;

111
private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField4; // End of variables declaration } File penjualan_pulsa.java import java.sql.*; import javax.swing.*; import java.awt.event.*; import java.text.*; import java.util.*; public class Penjualan_Pulsa extends javax.swing.JInternalFrame implements javax.comm.SerialPortEventListener{ //public class Penjualan_Pulsa extends javax.swing.JFrame implements javax.comm.SerialPortEventListener{

// DEKLARASI PUBLIC public String Vtgl; public int Sisa_pulsa; NumberFormat nf = NumberFormat.getNumberInstance(); // ========================= BATAS EDIT ==================== // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabSMS1 = new javax.swing.table.DefaultTableModel(null, new String[]{"Id SMS","Status SMS","Tanggal","No Telepon","Isi Pesan"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; // BUAT JUDUL HEADER TABEL_2.... javax.swing.table.DefaultTableModel tabSMS2 = new javax.swing.table.DefaultTableModel(null, new String[]{"Faktur","No HP","Operator","Pulsa","Harga","Tanggal","Status"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; // METODE SERIAL EVEN int bufferOffset=0; byte[] bacaBuffer = new byte[100000]; int n; java.io.InputStream input;

112

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

// TERIMA RESPON AT String memory = ""; String id_sms = ""; String status_sms = ""; String respons = ""; int index = 0; int PDU = 0; int status = 0; int loopPhone = 0; int loopSimCard = 0; boolean merek = false; boolean seri = false; boolean imei = false; private void terimaResponsAT(String buffer) { String tanggal_sms = ""; String jam_sms = ""; String tlp_sms = ""; String isi_sms = "";

java.util.StringTokenizer st = new java.util.StringTokenizer(buffer, "\r\n"); while(st.hasMoreTokens()) { System.out.print(buffer + "\n"); //MENGAMBIL TOKEN YANG ADA PADA OBJEK

113
respons = st.nextToken(); System.out.print(respons); if(merek) { this.jLabel12.setText(respons.trim()); merek = false; } else if(seri) { this.jLabel14.setText(respons.trim()); seri = false; } else if(imei) { this.jLabel10.setText(respons.trim()); imei = false; //ngaktifin tombol OK, BATAL, dan DownLoad Pesan Inbox this.jButton3.setEnabled(true); this.jButton4.setEnabled(true); this.jButton5.setEnabled(true); this.jButton6.setEnabled(true); this.jButton7.setEnabled(true); // buat ngecek SMS baru yang masuk... CekSMS(); } //Respon Jika Terminal Sudah Terhubung if(respons.startsWith("ATH0")) { this.jButton1.setEnabled(false); this.jButton2.setEnabled(true); } else if(respons.startsWith("+COPS:")) { //BUAT CARI PROVIDER SIM CARD java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(","); String[] hasil = pattern.split(respons.trim()); String cbb = hasil[2].trim(); this.jLabel16.setText(cbb); } else if(respons.startsWith("AT+CPMS=ME")) { memory = "Phone"; } else if(respons.startsWith("AT+CPMS=\"ME\"")) { memory = "Phone"; } else if(respons.startsWith("AT+CPMS=SM")) { memory = "SIM Card"; } else if(respons.startsWith("AT+CPMS=\"SM\""))

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

115
{e.getMessage();} } else if(respons.startsWith("+CMTI:")) { java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":"); String[] hasil = pattern.split(respons.trim()); pattern = java.util.regex.Pattern.compile(","); hasil = pattern.split(hasil[1].trim()); index = Integer.parseInt(hasil[1].trim()); SmitDev.SmsServer.Server.kirimAT("AT+CPMS=" + hasil[0].trim() + "\15", 1250); SmitDev.SmsServer.Server.kirimAT("AT+CMGR=" + index + "\15", 1250); // Baca Pesan Baru Yang Masuk } else if(respons.startsWith("+CDSI:")) { java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(":"); String[] hasil = pattern.split(respons.trim()); pattern = java.util.regex.Pattern.compile(","); hasil = pattern.split(hasil[1].trim()); index = Integer.parseInt(hasil[1].trim()); SmitDev.SmsServer.Server.kirimAT("AT+CPMS=" + hasil[0].trim() + "\15", 1250); SmitDev.SmsServer.Server.kirimAT("AT+CMGR=" + index + "\15", 1250); // Baca Pesan Baru Yang Masuk } } } // tampilkan id pegawai private void idpeg() { try { String sql = "select id_petugas from tb_absen where jam_keluar='0'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow() > 0) { this.jLabel28.setText(rs.getString(1)); } } catch (Exception e) { System.out.println("Error tampilkan id pegawai : " + e); } } // tampilkan nama pegawai private void namapeg() { try { String sql = "select a.nama from tb_petugas a, tb_absen b where a.id_petugas = b.id_petugas and b.jam_keluar='0'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql);

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

117
int sp = rs.getInt(1); Sisa_pulsa = sp; this.jLabel18.setText("Rp " + sp); } } catch (Exception e) { System.out.println("Error tampilkandataketabel : " + e); } } // BUAT JUDUL HEADER TABEL.... javax.swing.table.DefaultTableModel tabSMS = new javax.swing.table.DefaultTableModel(null, new String[]{"Id SMS","Status SMS","Tanggal","Jam","No Telepon","Isi Pesan","Memory"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } };

javax.swing.Timer time; String akhir = "0", detik = "0", menit = "0", jam = "0"; int i, d, m, j; public void waktuKoneksi() { i=0; d=0; m=0; j=0; akhir = "0"; detik = "0"; menit = "0"; jam = "0"; // Action Listener untuk keperluan Timer java.awt.event.ActionListener tr = new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { String nol_jam = ""; String nol_men = ""; String nol_det = ""; String nol_akh = ""; // Nilai milidetik akhir = Integer.toString(i); i += 1; // Apabila milidetik >= 99 if (i >= 99) { i = 0; // Nilai detik ditambahkan 1 d += 1; detik = Integer.toString(d); // Apabila nilai detik = 0 if (d == 0) { // Nilai Menit ditambahkan 1 m += 1; menit = Integer.toString(m);

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

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

119
public void actionPerformed(java.awt.event.ActionEvent evt) { System.out.print("TIMER CEK SMS \n"); // BACA SMS YANG ADA DI MEMORY HP SmitDev.SmsServer.Server.kirimAT("AT+CPMS=\"ME\""+"\15",1000); SmitDev.SmsServer.Server.kirimAT("AT+CMGL=0"+"\15",1250); } }; // Membuat Timer dengan waktu delay = 1 Menit time1 = new javax.swing.Timer(60000, tr0); // Menjalankan Timer time1.start(); } public void port_koneksi() { try { this.jComboBox3.removeAllItems(); this.jComboBox4.removeAllItems(); this.jComboBox5.removeAllItems(); this.jComboBox4.addItem("COM4"); this.jComboBox4.addItem("COM1"); this.jComboBox4.addItem("COM2"); this.jComboBox4.addItem("COM3"); this.jComboBox4.addItem("COM5"); this.jComboBox4.addItem("COM6"); this.jComboBox5.addItem("9600"); this.jComboBox5.addItem("110"); this.jComboBox5.addItem("300"); this.jComboBox5.addItem("2400"); this.jComboBox5.addItem("4800"); this.jComboBox5.addItem("9600"); this.jComboBox5.addItem("19200"); this.jComboBox3.addItem("8"); this.jComboBox3.addItem("7"); this.jComboBox3.addItem("6"); this.jComboBox3.addItem("5"); } catch (Exception e) { System.out.println("Error port_koneksi : " + e + "\n"); } }

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

120
rs.last(); if(rs.getRow()>0) { rs.first(); this.jComboBox1.addItem(rs.getString(1)); while (rs.next()) { String Aprovider = rs.getString(1); this.jComboBox1.addItem(Aprovider); } } } catch (Exception e) { System.out.println("Error ambilProvider : " + e + "\n"); } } public void tanggal() { try{ ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent ae) { String nolbulan = ""; String nolhari = ""; String noljam = ""; String nolmenit= ""; String noldetik = ""; //MEMBUAT DATE Calendar dt = Calendar.getInstance(); //MENGAMBIL NILAI JAM, MENIT, DETIK String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"}; String Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No vember","Desember"}; int tahun = dt.get(dt.YEAR); int bulan = dt.get(dt.MONTH); int hari_V = dt.get(dt.DAY_OF_WEEK); int hari = dt.get(dt.DAY_OF_MONTH); int jam = dt.get(dt.HOUR_OF_DAY); int menit = dt.get(dt.MINUTE); int detik =dt.get(dt.SECOND); //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit) if (bulan < 10) { nolbulan = "0"; } if (hari < 10) { nolhari = "0"; }

121
if (jam < 10) { noljam = "0"; } if (menit < 10) { nolmenit = "0"; } if (detik < 10) { noldetik = "0"; } //MEMBUAT string tanggal String Sbulan = nolbulan + Integer.toString(bulan); String Shari = nolhari + Integer.toString(hari); String Sjam = noljam + Integer.toString(jam); String Smenit = nolmenit + Integer.toString(menit); String Sdetik = noldetik + Integer.toString(detik); //menamoilkan pada layar jLabel21.setText(Jhari[hari_V]+", "+Shari+" "+Jbulan[bulan]+" "+tahun); Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun; jLabel22.setText(Sjam+":"+Smenit+":"+Sdetik); } }; //TIMER new javax.swing.Timer(1000, taskPerformer).start(); } catch (Exception e) {System.out.println ("Error : " + e);} } public void bersih() { this.jTextField1.setText(""); this.jTextField4.setText(""); this.jLabel6.setText(""); this.jComboBox1.setSelectedIndex(0); this.jComboBox2.setSelectedIndex(0); } public void hapustabel() { int row = tabSMS2.getRowCount(); for (int k=0; k < row ; k++ ) { tabSMS2.removeRow(0); } } public void tampilkandataketabel() { hapustabel(); try

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

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

/** Creates new form Penjualan_Pulsa */ // INI KONSTRAKTOR... public Penjualan_Pulsa() { initComponents(); faktur(); namapeg(); idpeg(); sisa_pulsa(); port_koneksi(); ambilProvider(); tanggal(); tampilkandataketabel(); this.jButton8.setVisible(false); this.jLabel28.setVisible(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is

123
* always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jPanel3 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton3 = new javax.swing.JButton(); jLabel25 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton4 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jPanel5 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jComboBox1 = new javax.swing.JComboBox(); jComboBox2 = new javax.swing.JComboBox(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); jTable3 = new javax.swing.JTable(); jLabel17 = new javax.swing.JLabel(); jLabel18 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jTextField4 = new javax.swing.JTextField(); jLabel19 = new javax.swing.JLabel(); jLabel20 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel27 = new javax.swing.JLabel(); jLabel28 = new javax.swing.JLabel(); jLabel29 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jLabel16 = new javax.swing.JLabel(); jButton8 = new javax.swing.JButton(); jLabel21 = new javax.swing.JLabel(); jLabel22 = new javax.swing.JLabel(); jLabel23 = new javax.swing.JLabel(); jLabel24 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel26 = new javax.swing.JLabel();

124
jComboBox3 = new javax.swing.JComboBox(); jComboBox4 = new javax.swing.JComboBox(); jComboBox5 = new javax.swing.JComboBox(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); jButton1.setText("CONNECT"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); getContentPane().add(jButton1); jButton1.setBounds(260, 10, 100, 30); jButton2.setText("DISCONNECT"); jButton2.setEnabled(false); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); getContentPane().add(jButton2); jButton2.setBounds(260, 43, 100, 30); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true), "SMS INBOX", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N jPanel1.setForeground(new java.awt.Color(51, 51, 255)); jPanel1.setFont(new java.awt.Font("Tahoma", 1, 12)); jPanel1.setLayout(new java.awt.BorderLayout()); jPanel3.setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabSMS1); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1);

125
jPanel3.add(jScrollPane1); jScrollPane1.setBounds(0, 0, 980, 120); jButton3.setText("CEK INBOX"); jButton3.setEnabled(false); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jPanel3.add(jButton3); jButton3.setBounds(828, 125, 150, 23); jLabel25.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel25.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel25.setText("Isi SMS : "); jPanel3.add(jLabel25); jLabel25.setBounds(0, 125, 69, 15); jTextArea1.setColumns(1); jTextArea1.setLineWrap(true); jTextArea1.setRows(5); jScrollPane2.setViewportView(jTextArea1); jPanel3.add(jScrollPane2); jScrollPane2.setBounds(80, 125, 530, 45); jButton4.setText("CEK STATUS"); jButton4.setEnabled(false); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jPanel3.add(jButton4); jButton4.setBounds(670, 125, 150, 23); jButton7.setText("+ SALDO"); jButton7.setEnabled(false); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt); } }); jPanel3.add(jButton7); jButton7.setBounds(670, 150, 150, 23); jButton9.setText("KELUAR"); jButton9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton9ActionPerformed(evt); } }); jPanel3.add(jButton9); jButton9.setBounds(828, 150, 150, 23);

126
jPanel1.add(jPanel3, java.awt.BorderLayout.CENTER); getContentPane().add(jPanel1); jPanel1.setBounds(10, 440, 990, 200); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true), "ISI PULSA", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N jPanel5.setForeground(new java.awt.Color(51, 51, 255)); jPanel5.setFont(new java.awt.Font("Tahoma", 1, 12)); jPanel5.setLayout(null); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("Nomor Telp : "); jPanel5.add(jLabel3); jLabel3.setBounds(320, 290, 140, 15); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Operator : "); jPanel5.add(jLabel4); jLabel4.setBounds(370, 250, 90, 15); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel5.setText("Nominal Pulsa : "); jPanel5.add(jLabel5); jLabel5.setBounds(350, 270, 110, 15); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jPanel5.add(jLabel6); jLabel6.setBounds(470, 310, 170, 20); jTextField1.setFont(new java.awt.Font("Tahoma", 1, 11)); jPanel5.add(jTextField1); jTextField1.setBounds(470, 290, 170, 20); jComboBox1.setMaximumRowCount(5); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pilih", "Esia", "IM3", "Mentari", "SimPati", "XL Bebas" })); jComboBox1.setAutoscrolls(true); jComboBox1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jComboBox1MouseClicked(evt); } public void mousePressed(java.awt.event.MouseEvent evt) { jComboBox1MousePressed(evt); } }); jComboBox1.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jComboBox1ItemStateChanged(evt);

127
} }); jComboBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox1ActionPerformed(evt); } }); jPanel5.add(jComboBox1); jComboBox1.setBounds(470, 250, 170, 19); jComboBox2.setMaximumRowCount(5); jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Pilih", "1.000", "2.000", "3.000", "5.000", "20.000", "25.000", "30.000", "50.000", "100.000" })); jComboBox2.setAutoscrolls(true); jComboBox2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jComboBox2MouseClicked(evt); } }); jComboBox2.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jComboBox2ItemStateChanged(evt); } }); jComboBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox2ActionPerformed(evt); } }); jPanel5.add(jComboBox2); jComboBox2.setBounds(470, 270, 170, 19); jButton5.setText("OK"); jButton5.setEnabled(false); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jPanel5.add(jButton5); jButton5.setBounds(400, 335, 90, 23); jButton6.setText("BATAL"); jButton6.setEnabled(false); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); jPanel5.add(jButton6); jButton6.setBounds(500, 335, 90, 23); jTable3.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null},

128
{null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable3.setModel(tabSMS2); jTable3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable3MouseClicked(evt); } }); jScrollPane3.setViewportView(jTable3); jPanel5.add(jScrollPane3); jScrollPane3.setBounds(90, 20, 820, 180); jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel17.setText("Sisa Pulsa Elektrik : "); jPanel5.add(jLabel17); jLabel17.setBounds(90, 220, 140, 20); jLabel18.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel18.setText("Rp 0"); jPanel5.add(jLabel18); jLabel18.setBounds(230, 220, 160, 20); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel8.setText("Cari Nomor Telp : "); jPanel5.add(jLabel8); jLabel8.setBounds(540, 210, 190, 20); jTextField4.setFont(new java.awt.Font("Tahoma", 1, 11)); jTextField4.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { jTextField4KeyReleased(evt); } }); jPanel5.add(jTextField4); jTextField4.setBounds(740, 210, 170, 20); jLabel19.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel19.setText("Nomor Faktur : "); jPanel5.add(jLabel19); jLabel19.setBounds(90, 200, 130, 20); jLabel20.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel20.setText("L20"); jPanel5.add(jLabel20); jLabel20.setBounds(230, 200, 180, 20);

129

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel7.setText("Harga Jual : "); jPanel5.add(jLabel7); jLabel7.setBounds(320, 310, 140, 20); jLabel27.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel27.setText("Petugas :"); jPanel5.add(jLabel27); jLabel27.setBounds(90, 240, 130, 20); jLabel28.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jPanel5.add(jLabel28); jLabel28.setBounds(230, 270, 80, 20); jLabel29.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jPanel5.add(jLabel29); jLabel29.setBounds(230, 240, 110, 20); getContentPane().add(jPanel5); jPanel5.setBounds(10, 70, 990, 370); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel9.setText("Imei :"); getContentPane().add(jLabel9); jLabel9.setBounds(780, 10, 60, 20); jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel10.setText("Unknown Device"); getContentPane().add(jLabel10); jLabel10.setBounds(850, 10, 140, 20); jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel11.setText(" Merek HP :"); getContentPane().add(jLabel11); jLabel11.setBounds(460, 10, 120, 20); jLabel12.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel12.setText("Unknown Device"); getContentPane().add(jLabel12); jLabel12.setBounds(590, 10, 150, 20); jLabel13.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel13.setText("Type Perangkat :"); getContentPane().add(jLabel13); jLabel13.setBounds(460, 30, 120, 20); jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel14.setText("Unknown Device"); getContentPane().add(jLabel14); jLabel14.setBounds(590, 30, 150, 20);

130
jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel15.setText("Operator :"); getContentPane().add(jLabel15); jLabel15.setBounds(750, 30, 90, 20); jLabel16.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel16.setText("Unknown Network"); getContentPane().add(jLabel16); jLabel16.setBounds(850, 30, 140, 20); jButton8.setText("KELUAR"); jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8ActionPerformed(evt); } }); getContentPane().add(jButton8); jButton8.setBounds(370, 10, 90, 30); jLabel21.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); getContentPane().add(jLabel21); jLabel21.setBounds(590, 50, 180, 20); jLabel22.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); getContentPane().add(jLabel22); jLabel22.setBounds(850, 50, 100, 20); jLabel23.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel23.setText("Tanggal :"); getContentPane().add(jLabel23); jLabel23.setBounds(460, 50, 120, 20); jLabel24.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel24.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel24.setText("Jam :"); getContentPane().add(jLabel24); jLabel24.setBounds(780, 50, 60, 20); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText(" Data Bits :"); getContentPane().add(jLabel1); jLabel1.setBounds(30, 50, 110, 20); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText("Connect using :"); getContentPane().add(jLabel2); jLabel2.setBounds(30, 10, 110, 20); jLabel26.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel26.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);

131
jLabel26.setText("Bits Per Second :"); getContentPane().add(jLabel26); jLabel26.setBounds(30, 30, 110, 20); jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); getContentPane().add(jComboBox3); jComboBox3.setBounds(150, 50, 90, 20); jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); getContentPane().add(jComboBox4); jComboBox4.setBounds(150, 10, 90, 20); jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); getContentPane().add(jComboBox5); jComboBox5.setBounds(150, 30, 90, 20); pack(); }// </editor-fold> private void jComboBox1MousePressed(java.awt.event.MouseEvent evt) { // TODO add your handling code here: } private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) { // NAMA PROVIDER this.jComboBox2.setEnabled(true); this.jComboBox2.removeAllItems(); this.jComboBox2.addItem("Pilih"); this.jLabel6.setText(""); try { String sql1 = "select harga_pulsa from tb_operator where nama_operator = '" + this.jComboBox1.getSelectedItem() + "' order by harga_pulsa"; Statement stat1 = kon.createStatement(); ResultSet rs1 = stat1.executeQuery(sql1); while (rs1.next()) { int harga = Integer.parseInt(rs1.getString(1)); this.jComboBox2.addItem(harga); } } catch (Exception e) { System.out.println("Error Provider ItemStateChange : " + e + "\n"); } } private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { }

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

133
String sql1 = "insert into tb_jual_pulsa_elektrik values('" + jLabel20.getText() + "','" + jTextField1.getText() + "','" + id_operator + "','" + hb + "','" + hj + "','" + Vtgl + "','BELUM','" + jLabel28.getText() +"')"; Statement stat1 = kon.createStatement(); int rs1 = stat1.executeUpdate(sql1); // buat Update Sisa Pulsa String sql2 = "update tb_sisa_pulsa set sisa_pulsa = sisa_pulsa - '" + hb + "'"; Statement stat2 = kon.createStatement(); int rs2 = stat2.executeUpdate(sql2); faktur(); sisa_pulsa(); bersih(); tampilkandataketabel(); this.jComboBox1.requestFocus(); } catch (SQLException e) { System.out.println("Error Masukkan Transaksi : " + e + "\n"); } } } catch (Exception e) { System.out.println("Error Provider ItemStateChange : " + e + "\n"); } } } else { JOptionPane.showMessageDialog(null, "Isi data dengan Lengkap !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); }

} else { System.out.println(Sisa_pulsa - Integer.parseInt(this.jLabel6.getText())); JOptionPane.showMessageDialog(null, "Saldo pulsa tidak cukup untuk melakukan transaksi penjualan pulsa elektrik !!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); } } } private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL KELUAR if(this.jButton2.isEnabled()==true) { //Menghentikan timer untuk cek SMS masuk this.time1.stop(); // Menutup Koneksi ke Terminal... SmitDev.SmsServer.Server.tutupTerminal();

134
} dispose(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL PUTUS if(SmitDev.SmsServer.Server.port != null); { //Menghentikan timer untuk cek SMS masuk this.time1.stop(); // Menutup Koneksi ke Terminal... SmitDev.SmsServer.Server.tutupTerminal(); int row = tabSMS.getRowCount(); for(int i=0; i<row; i++) { tabSMS.removeRow(0); } this.jButton1.setEnabled(true); this.jButton2.setEnabled(false); this.jButton3.setEnabled(false); this.jButton4.setEnabled(false); this.jButton5.setEnabled(false); this.jButton6.setEnabled(false); this.jButton7.setEnabled(false); this.jLabel10.setText("unknown Device"); this.jLabel12.setText("unknown Device"); this.jLabel14.setText("unknown Device"); this.jLabel16.setText("unknown Network"); } } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //TOMBOL KONEKSI String port_com = this.jComboBox4.getSelectedItem().toString(); String bps = this.jComboBox5.getSelectedItem().toString(); String data_bits = this.jComboBox3.getSelectedItem().toString(); // SmitDev.SmsServer.Server.koneksiTerminal("COM4","9600","8","None","1", "None"); SmitDev.SmsServer.Server.koneksiTerminal(port_com,bps,data_bits,"None","1", "None"); try { SmitDev.SmsServer.Server.port.addEventListener(this); } catch(java.util.TooManyListenersException tmle) {} SmitDev.SmsServer.Server.kirimAT("AT+CGMI"+"\15",1000); SmitDev.SmsServer.Server.kirimAT("AT+CGMM"+"\15",1000); SmitDev.SmsServer.Server.kirimAT("AT+CGSN"+"\15",1000); SmitDev.SmsServer.Server.kirimAT("AT+COPS?"+"\15",1000); SmitDev.SmsServer.Server.kirimAT("ATH0"+"\15",500); } private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {

135

} private void jComboBox2ItemStateChanged(java.awt.event.ItemEvent evt) { // NOMINAL PULSA try { String sql1 = "select harga_jual from tb_operator where nama_operator = '" + jComboBox1.getSelectedItem() + "' and Harga_pulsa = '" + jComboBox2.getSelectedItem() + "'"; Statement stat1 = kon.createStatement(); ResultSet rs1 = stat1.executeQuery(sql1); while (rs1.next()) { String hj = rs1.getString(1).toString(); this.jLabel6.setText(hj); } } catch (Exception e) { System.out.println("Error Provider COMBO NOMINAL PULSA : " + e + "\n"); } } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL BATAL bersih(); tampilkandataketabel(); this.jComboBox1.requestFocus(); } private void jTextField4KeyReleased(java.awt.event.KeyEvent evt) { // CARI NO TELP hapustabel(); try { //String sql = "select * from tb_jual_pulsa_elektrik order by faktur"; String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and no_hp like '" + this.jTextField4.getText() + "%' order by faktur desc"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String no_hp = rs.getString(2); String provider = rs.getString(3); String hp = rs.getString(4); String hj = rs.getString(5); String tgl = rs.getString(6); String status = rs.getString(7); String[] data = {faktur,no_hp, provider, hp, hj, tgl, status}; tabSMS2.addRow(data); } } catch (Exception e) {

136
System.out.println("Error " + e); } } private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { // BUAT ISI SMS int xrow = this.jTable1.getSelectedRow(); String isiSMS = this.tabSMS1.getValueAt(xrow, 4).toString(); this.jTextArea1.setText(isiSMS); } private void jTable3MouseClicked(java.awt.event.MouseEvent evt) { // TBTRANSAKSI PENJUALAN int xrow = this.jTable3.getSelectedRow(); if(this.tabSMS2.getValueAt(xrow, 6).toString().equals("BELUM")) { int a = JOptionPane.showConfirmDialog(null, "Apakah pulsa sukses ditransfer ?", ".:: CV DIAN MULYA CONFIRMATION ::.", 0, 3); if(a==0) { String faktur = this.tabSMS2.getValueAt(xrow, 0).toString(); try { // Buat masukkin ke tb_jual_pulsa_elektrik pada database String sql1 = "update tb_jual_pulsa_elektrik set status = 'TERKIRIM' where faktur = '" + faktur + "'"; Statement stat1 = kon.createStatement(); int rs1 = stat1.executeUpdate(sql1); tampilkandataketabel(); this.jComboBox1.requestFocus(); } catch (Exception e) { System.out.println("Error Masukkan Transaksi : " + e + "\n"); } } } } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { //TOMBOL DOWNLOAD PESAN SMS INBOX int row = tabSMS1.getRowCount(); for(int i=0; i<row; i++) { tabSMS1.removeRow(0); } if (this.jButton3.isEnabled()== true) { // BACA SMS YANG ADA DI MEMORY HP SmitDev.SmsServer.Server.kirimAT("AT+CPMS=\"ME\""+"\15",1000); SmitDev.SmsServer.Server.kirimAT("AT+CMGL=0"+"\15",1250); SmitDev.SmsServer.Server.kirimAT("AT+CMGL=1"+"\15",1250); } } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

137
// TOMBOL CEK STATUS String no = JOptionPane.showInputDialog(null,"Masukkan no HP : ","Cek Status Pengiriman Pulsa",1); if(no != null) { //System.out.println(no); String provider = "085691352335"; String isi_sms = "CEK " + no + " 8007"; //System.out.println(isi_sms); SmitDev.SmsServer.Server.kirimSMS(provider,isi_sms,true); } } private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL TAMBAH SALDO String sal = JOptionPane.showInputDialog(null,"Jumlah Pulsa : ","Tambah Saldo Pulsa",1); if(sal != null) { int saldo = Integer.parseInt(sal); if(saldo > 0) { try { // Buat tambah saldo pulsa elektrik String sql1 = "update tb_sisa_pulsa set sisa_pulsa = sisa_pulsa + '" + saldo + "'"; Statement stat1 = kon.createStatement(); int rs1 = stat1.executeUpdate(sql1); sisa_pulsa(); } catch (Exception e) { System.out.println("Error Tambah Saldo Pulsa Elektrik : " + e + "\n"); } } } } private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL KELUAR if(this.jButton2.isEnabled()==true) { //Menghentikan timer untuk cek SMS masuk this.time1.stop(); // Menutup Koneksi ke Terminal... SmitDev.SmsServer.Server.tutupTerminal(); } dispose(); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Penjualan_Pulsa jual = new Penjualan_Pulsa(); //ngasih nama form = jual jual.setSize(1015,730); //bwt ngatur lebar form (format= (widht, hight))

138
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // bwt ngambil property screen int lebar = (screen.width - jual.getSize().width)/2; int tinggi = (screen.height - jual.getSize().height)/2; jual.setTitle(".:: CV dian Mulya ::."); jual.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jual.setLocation(lebar,tinggi-15); jual.setResizable(false); jual.setVisible(true); */ } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JButton jButton9; private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; private javax.swing.JComboBox jComboBox3; private javax.swing.JComboBox jComboBox4; private javax.swing.JComboBox jComboBox5; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9;

139
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable jTable1; private javax.swing.JTable jTable3; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField4; // End of variables declaration } File trans_voucher.java import java.sql.*; import javax.swing.*; import java.awt.event.*; import java.text.*; import java.util.*; public class trans_voucher extends javax.swing.JInternalFrame { // DEKLARASI PUBLIC public String Vtgl, hjual="", hbeli="",id_barang="",stkbrg=""; int grandTotal=0; /** Creates new form trans_voucher */ //=======================================batas edit============================= // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabtv = new javax.swing.table.DefaultTableModel(null, new String[]{" Nama Barang "," Jumlah "," Harga Jual"," Total "}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; public void bersih() { this.jComboBox1.setSelectedIndex(0); this.jTextField1.setText("0"); this.jLabel13.setText("0"); } public void tanggal() { try{ ActionListener taskPerformer = new ActionListener()

140
{ public void actionPerformed(ActionEvent ae) { String nolbulan = ""; String nolhari = ""; String noljam = ""; String nolmenit= ""; String noldetik = ""; //MEMBUAT DATE Calendar dt = Calendar.getInstance(); //MENGAMBIL NILAI JAM, MENIT, DETIK String Jhari[] = {"Dummy","Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"}; String Jbulan[]={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","oktober","No vember","Desember"}; int tahun = dt.get(dt.YEAR); int bulan = dt.get(dt.MONTH); int hari_V = dt.get(dt.DAY_OF_WEEK); int hari = dt.get(dt.DAY_OF_MONTH); int jam = dt.get(dt.HOUR_OF_DAY); int menit = dt.get(dt.MINUTE); int detik =dt.get(dt.SECOND); //jika bulan,hari,jam,menit,detik lebih kecil dari 10 (hanya 1 digit) if (bulan < 10) { nolbulan = "0"; } if (hari < 10) { nolhari = "0"; } if (jam < 10) { noljam = "0"; } if (menit < 10) { nolmenit = "0"; } if (detik < 10) { noldetik = "0"; } //MEMBUAT string tanggal String Sbulan = nolbulan + Integer.toString(bulan); String Shari = nolhari + Integer.toString(hari); String Sjam = noljam + Integer.toString(jam); String Smenit = nolmenit + Integer.toString(menit); String Sdetik = noldetik + Integer.toString(detik); //menamoilkan pada layar jLabel6.setText(Shari+" "+Jbulan[bulan]+" "+tahun);

141
Vtgl = Shari+" "+Jbulan[bulan]+" "+tahun; jLabel8.setText(Sjam+":"+Smenit+":"+Sdetik); } }; //TIMER new javax.swing.Timer(1000, taskPerformer).start(); } catch (Exception e) {System.out.println ("Error : " + e);} } // tampilkan nama pegawai private void namapeg() { try { String sql = "select a.nama from tb_petugas a, tb_absen b where a.id_petugas = b.id_petugas and b.jam_keluar='0'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow() > 0) { this.jLabel15.setText(rs.getString(1)); } } catch (Exception e) { System.out.println("Error tampilkan nama pegawai : " + e); } } // tampilkan id pegawai private void idpeg() { try { String sql = "select id_petugas from tb_absen where jam_keluar='0'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow() > 0) { this.jLabel3.setText(rs.getString(1)); } } catch (Exception e) { System.out.println("Error tampilkan id pegawai : " + e); } } public void hapustabel() { int row = tabtv.getRowCount();

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

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

143
this.jComboBox1.addItem(rs.getString(1)); while (rs.next()) { String BL = rs.getString(1); this.jComboBox1.addItem(BL); } } } catch (Exception e) { System.out.println("Error getComboBarang: " + e + "\n"); } } public void setBarang(String faktur, String total, String tgl, String id_petugas) { try { //String sql = "select * from tb_jasa_laundry order by no_faktur"; String sql = "insert into tb_jual values('" + faktur + "','" + total + "','" + tgl + "','" + id_petugas + "')"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); } catch (SQLException e) { System.out.println("Error setBarang : " + e + "\n"); } } public void setDetailJual(String faktur, String id_barang, String byk, String hbeli,String hjual, String total_detail) { try { String sql = "insert into tb_detail_jual values('" + faktur + "','" + id_barang + "','" + byk + "','" + hbeli + "','" + hjual + "','" + total_detail + "')"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); } catch (SQLException e) { System.out.println("Error setDetailjual : " + e + "\n"); } } public void setStok(String id_barang, String byk, String stkbrg ){ try { int stk = Integer.parseInt(stkbrg) - Integer.parseInt(byk); String sql = "update tb_barang set stok ='" + stk + "' where id_barang ='" + id_barang + "'"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); } catch (SQLException e) { System.out.println("Error setstok : " + e + "\n");

144
} } //======================================batas edit============================= public trans_voucher() { initComponents(); idpeg(); namapeg(); tanggal(); faktur(); getComboBarang(); this.jLabel3.setVisible(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jLabel10 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); jLabel11 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jLabel9 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); getContentPane().setLayout(null); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel1.setText("Petugas :"); getContentPane().add(jLabel1); jLabel1.setBounds(10, 10, 130, 20); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel2.setText("No Faktur :");

145
getContentPane().add(jLabel2); jLabel2.setBounds(10, 40, 130, 20); jLabel3.setForeground(new java.awt.Color(0, 0, 204)); jLabel3.setText("jLabel3"); getContentPane().add(jLabel3); jLabel3.setBounds(40, 210, 120, 20); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel4.setForeground(new java.awt.Color(0, 0, 204)); jLabel4.setText("jLabel4"); getContentPane().add(jLabel4); jLabel4.setBounds(150, 40, 120, 20); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel5.setText("Tanggal :"); getContentPane().add(jLabel5); jLabel5.setBounds(290, 10, 120, 20); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel6.setText("jLabel6"); getContentPane().add(jLabel6); jLabel6.setBounds(420, 10, 230, 20); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel7.setText("Jam :"); getContentPane().add(jLabel7); jLabel7.setBounds(290, 40, 130, 20); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel8.setText("jLabel8"); getContentPane().add(jLabel8); jLabel8.setBounds(420, 40, 210, 20); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabtv); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(10, 82, 630, 110); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jPanel1.setLayout(null); jLabel10.setText("Barang jPanel1.add(jLabel10); :");

146
jLabel10.setBounds(100, 60, 90, 20); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jComboBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox1ActionPerformed(evt); } }); jPanel1.add(jComboBox1); jComboBox1.setBounds(200, 60, 140, 20); jLabel11.setText("Jumlah :"); jPanel1.add(jLabel11); jLabel11.setBounds(100, 90, 90, 20); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt); } }); jTextField1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { jTextField1KeyReleased(evt); } }); jPanel1.add(jTextField1); jTextField1.setBounds(200, 90, 140, 20); jLabel12.setText("Total :"); jPanel1.add(jLabel12); jLabel12.setBounds(100, 120, 80, 20); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel13.setText("0"); jPanel1.add(jLabel13); jLabel13.setBounds(200, 120, 140, 20); jButton1.setText("Tambah"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jPanel1.add(jButton1); jButton1.setBounds(50, 160, 100, 30); jButton2.setText("Selesai"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jPanel1.add(jButton2); jButton2.setBounds(170, 160, 100, 30);

147
jButton3.setText("Keluar"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jPanel1.add(jButton3); jButton3.setBounds(290, 160, 100, 30); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel9.setForeground(new java.awt.Color(0, 0, 255)); jLabel9.setText("Detail Pembelian Barang :"); jPanel1.add(jLabel9); jLabel9.setBounds(20, 10, 190, 30); getContentPane().add(jPanel1); jPanel1.setBounds(80, 240, 450, 200); jLabel14.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel14.setForeground(new java.awt.Color(255, 0, 51)); jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel14.setText("Grand total : 0"); getContentPane().add(jLabel14); jLabel14.setBounds(410, 200, 230, 30); jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel15.setForeground(new java.awt.Color(0, 0, 204)); jLabel15.setText("jLabel15"); getContentPane().add(jLabel15); jLabel15.setBounds(150, 10, 120, 20); pack(); }// </editor-fold> private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL TAMBAH String nama = this.jComboBox1.getSelectedItem().toString(); String byk = this.jTextField1.getText(); String total = this.jLabel13.getText(); grandTotal+=Integer.parseInt(total); String[] data = {nama, byk, hjual, total}; tabtv.addRow(data); this.jLabel14.setText("Grand Total : " + grandTotal); bersih(); this.jComboBox1.requestFocus(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL SELESAI String faktur = this.jLabel4.getText(); String total = String.valueOf(grandTotal); String tgl = this.jLabel6.getText();

148
String id_petugas = this.jLabel3.getText(); setBarang(faktur, total, tgl, id_petugas); int row = tabtv.getRowCount(); for (int brs=0; brs < row ; brs++ ) { String byk = tabtv.getValueAt(brs,1).toString(); String total_detail = tabtv.getValueAt(brs,3).toString(); setDetailJual(faktur, id_barang, byk, hbeli, hjual, total_detail); setStok(id_barang,byk,stkbrg); } bersih(); hapustabel(); faktur(); this.jLabel14.setText("Grand Total : 0"); this.jComboBox1.requestFocus(); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // keluar dispose(); } private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) { // masukin jumlah barang try { String sql1 = "select harga_jual,stok,harga_beli,id_barang from tb_barang where nama = '" + this.jComboBox1.getSelectedItem().toString() + "'"; Statement stat1 = kon.createStatement(); ResultSet rs1 = stat1.executeQuery(sql1); while (rs1.next()) { int hl = rs1.getInt(1); hjual = rs1.getString(1); hbeli = rs1.getString(3); id_barang = rs1.getString(4); stkbrg = rs1.getString(2); int stok = rs1.getInt(2); int hl1= 0; if(!this.jTextField1.getText().equals("")) { if ( stok >= Integer.parseInt(this.jTextField1.getText())) { hl1= hl * Integer.parseInt(this.jTextField1.getText()); } else { JOptionPane.showMessageDialog(null, " Stok tidak mencukupi, stok barang yang tersisa sebanyak " + stok + "!!!", ".:: CV DIAN MULYA INFORMATION ::.", 1); this.jTextField1.setText(""); this.jTextField1.requestFocus();

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

// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextField1; // End of variables declaration }

File Laporan_jual.java import java.sql.*; import javax.swing.*; import java.awt.event.*; import java.text.*; import java.util.*;; //public class Provider extends javax.swing.JInternalFrame { public class Laporan_Jual extends javax.swing.JInternalFrame { // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1....

150
javax.swing.table.DefaultTableModel tabLap1 = new javax.swing.table.DefaultTableModel(null, new String[]{"No Faktur","No Telp","Provider","Nominal Pulsa","Harga Beli","Harga Jual","Tanggal","Status"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; public void hapustabel() { int row = tabLap1.getRowCount(); for (int k=0; k < row ; k++ ) { tabLap1.removeRow(0); } } public void tampilkandataketabel() { long tb = 0; long tj = 0; NumberFormat nf = NumberFormat.getNumberInstance(); hapustabel(); try { String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator order by faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String no_hp = rs.getString(2); String provider = rs.getString(3); String hp = rs.getString(4); String hb = rs.getString(5); String hj = rs.getString(6); String tgl = rs.getString(7); String status = rs.getString(8); tb += Integer.parseInt(hb); tj += Integer.parseInt(hj); String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)), nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status}; tabLap1.addRow(data); } this.jLabel7.setText("Rp " + nf.format(tj)); this.jLabel8.setText("Rp " + nf.format(tb)); this.jLabel9.setText("Rp " + nf.format(tj - tb)); } catch (Exception e) { System.out.println("Error Tampilkan data ke tabel : " + e); }

151
} public void provider() { try { String sql = "select distinct nama_operator from tb_operator order by nama_operator"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); this.jComboBox5.removeAllItems(); this.jComboBox5.addItem("Pilih"); while (rs.next()) { String provider = rs.getString(1); this.jComboBox5.addItem(provider); } } catch (Exception e) { System.out.println("Error Tampilkan data provider : " + e); } } /** Creates new form Laporan_Jual */ public Laporan_Jual() { String tgl; initComponents(); tampilkandataketabel(); provider(); this.jButton2.setVisible(false); this.jComboBox1.removeAllItems(); this.jComboBox2.removeAllItems(); this.jComboBox3.removeAllItems(); this.jComboBox4.removeAllItems(); this.jComboBox1.addItem("Pilih"); this.jComboBox1.addItem("Harian"); this.jComboBox1.addItem("Bulanan"); this.jComboBox1.addItem("Tahunan"); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jComboBox2.addItem("Pilih"); for(int t = 1; t<=31; t++) { tgl = ""; tgl = Integer.toString(t); if(tgl.length()==1) { tgl = "0" + tgl;

152
} this.jComboBox2.addItem(tgl); } this.jComboBox3.addItem("Pilih"); this.jComboBox3.addItem("Januari"); this.jComboBox3.addItem("Februari"); this.jComboBox3.addItem("Maret"); this.jComboBox3.addItem("April"); this.jComboBox3.addItem("Mei"); this.jComboBox3.addItem("Juni"); this.jComboBox3.addItem("Juli"); this.jComboBox3.addItem("Agustus"); this.jComboBox3.addItem("September"); this.jComboBox3.addItem("Oktober"); this.jComboBox3.addItem("November"); this.jComboBox3.addItem("Desember"); //MEMBUAT DATE Calendar dt = Calendar.getInstance(); int th = dt.get(dt.YEAR); this.jComboBox4.addItem("Pilih"); for (int j = 2007; j<=th; j++) { String tahun = Integer.toString(j); this.jComboBox4.addItem(tahun); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jComboBox1 = new javax.swing.JComboBox(); jLabel1 = new javax.swing.JLabel(); jComboBox5 = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jComboBox2 = new javax.swing.JComboBox(); jComboBox3 = new javax.swing.JComboBox(); jComboBox4 = new javax.swing.JComboBox(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); jLabel4 = new javax.swing.JLabel();

153
jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabLap1); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(10, 10, 990, 530); jButton1.setText("Lihat"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); getContentPane().add(jButton1); jButton1.setBounds(700, 615, 90, 23); jButton2.setText("Cetak"); jButton2.setEnabled(false); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); getContentPane().add(jButton2); jButton2.setBounds(600, 615, 90, 23); jButton3.setText("Refresh"); jButton3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton3MouseClicked(evt); } });

154
getContentPane().add(jButton3); jButton3.setBounds(800, 615, 90, 23); jButton4.setText("Keluar"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); getContentPane().add(jButton4); jButton4.setBounds(900, 615, 90, 23); jPanel1.setLayout(null); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jComboBox1.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jComboBox1ItemStateChanged(evt); } }); jComboBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox1ActionPerformed(evt); } }); jPanel1.add(jComboBox1); jComboBox1.setBounds(140, 70, 90, 20); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText("Tanggal :"); jPanel1.add(jLabel1); jLabel1.setBounds(40, 97, 90, 14); jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox5); jComboBox5.setBounds(140, 25, 190, 20); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText("Nama Operator :"); jPanel1.add(jLabel2); jLabel2.setBounds(20, 28, 110, 14); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("Jenis Laporan :"); jPanel1.add(jLabel3); jLabel3.setBounds(20, 73, 110, 14); jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox2); jComboBox2.setBounds(140, 95, 50, 20); jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

155
jPanel1.add(jComboBox3); jComboBox3.setBounds(200, 95, 130, 20); jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox4); jComboBox4.setBounds(340, 95, 70, 20); jCheckBox1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jCheckBox1.setText("Berdasarkan Operator"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); jPanel1.add(jCheckBox1); jCheckBox1.setBounds(0, 0, 160, 23); jCheckBox2.setFont(new java.awt.Font("Tahoma", 1, 12)); jCheckBox2.setText("Berdasarkan waktu"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox2ActionPerformed(evt); } }); jPanel1.add(jCheckBox2); jCheckBox2.setBounds(0, 47, 143, 23); getContentPane().add(jPanel1); jPanel1.setBounds(10, 540, 430, 120); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("TOTAL PENDAPATAN :"); getContentPane().add(jLabel4); jLabel4.setBounds(720, 585, 150, 20); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel5.setText("TOTAL PENJUALAN :"); getContentPane().add(jLabel5); jLabel5.setBounds(720, 545, 150, 20); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel6.setText("TOTAL PEMBELIAN :"); getContentPane().add(jLabel6); jLabel6.setBounds(720, 565, 150, 20); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel7.setText("0"); getContentPane().add(jLabel7); jLabel7.setBounds(880, 545, 110, 20); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12));

156
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel8.setText("0"); getContentPane().add(jLabel8); jLabel8.setBounds(880, 565, 110, 20); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel9.setText("0"); getContentPane().add(jLabel9); jLabel9.setBounds(880, 585, 110, 20); pack(); }// </editor-fold> private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL KELUAR dispose(); } private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) { //LAPORAN TANGGAL String lap = ""; lap = (String) this.jComboBox1.getSelectedItem(); if(lap != null) { if(lap.equals("Harian")) { this.jComboBox2.setEnabled(true); this.jComboBox3.setEnabled(true); this.jComboBox4.setEnabled(true); this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox2.requestFocus(); } else if(lap.equals("Bulanan")) { this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(true); this.jComboBox4.setEnabled(true); this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox3.requestFocus(); } else if(lap.equals("Tahunan")) { this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(true); this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox4.requestFocus(); } else if(lap.equals("Pilih"))

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

158
this.jLabel8.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Hari : " + e); } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false) { String tg = (String) this.jComboBox1.getSelectedItem(); String hr = (String) this.jComboBox2.getSelectedItem(); String bln = (String) this.jComboBox3.getSelectedItem(); String thn = (String) this.jComboBox4.getSelectedItem(); String kondisi = ""; long tb = 0; long tj = 0; if(tg.equals("Harian")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = hr + " " + bln + " " + thn; try { String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and tanggal like '" + kondisi + "' order by faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String no_hp = rs.getString(2); String provider = rs.getString(3); String hp = rs.getString(4); String hb = rs.getString(5); String hj = rs.getString(6); String tgl = rs.getString(7); String status = rs.getString(8); tb += Integer.parseInt(hb); tj += Integer.parseInt(hj); String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)), nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status}; tabLap1.addRow(data); } this.jLabel7.setText("Rp " + nf.format(tj)); this.jLabel8.setText("Rp " + nf.format(tb)); this.jLabel9.setText("Rp " + nf.format(tj - tb)); rs.last(); if(rs.getRow()==0)

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

160
} } else if(tg.equals("Tahunan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = thn; try { String sql = "select faktur, no_hp, nama_operator, harga_pulsa, tb_jual_pulsa_elektrik.harga_beli, tb_jual_pulsa_elektrik.harga_jual, tanggal, status from tb_jual_pulsa_elektrik, tb_operator where tb_jual_pulsa_elektrik.id_operator = tb_operator.id_operator and tanggal like '%" + kondisi + "' order by faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String no_hp = rs.getString(2); String provider = rs.getString(3); String hp = rs.getString(4); String hb = rs.getString(5); String hj = rs.getString(6); String tgl = rs.getString(7); String status = rs.getString(8); tb += Integer.parseInt(hb); tj += Integer.parseInt(hj); String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)), nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status}; tabLap1.addRow(data); } this.jLabel7.setText("Rp " + nf.format(tj)); this.jLabel8.setText("Rp " + nf.format(tb)); this.jLabel9.setText("Rp " + nf.format(tj - tb)); rs.last(); if(rs.getRow()==0) { this.jLabel7.setText("Rp 0"); this.jLabel8.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true) { String tg = (String) this.jComboBox1.getSelectedItem(); String hr = (String) this.jComboBox2.getSelectedItem(); String bln = (String) this.jComboBox3.getSelectedItem(); String thn = (String) this.jComboBox4.getSelectedItem();

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

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

163
Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String no_hp = rs.getString(2); String provider = rs.getString(3); String hp = rs.getString(4); String hb = rs.getString(5); String hj = rs.getString(6); String tgl = rs.getString(7); String status = rs.getString(8); tb += Integer.parseInt(hb); tj += Integer.parseInt(hj); String[] data = {faktur,no_hp, provider, nf.format(Integer.parseInt(hp)), nf.format(Integer.parseInt(hb)), nf.format(Integer.parseInt(hj)), tgl, status}; tabLap1.addRow(data); } this.jLabel7.setText("Rp " + nf.format(tj)); this.jLabel8.setText("Rp " + nf.format(tb)); this.jLabel9.setText("Rp " + nf.format(tj - tb)); rs.last(); if(rs.getRow()==0) { this.jLabel7.setText("Rp 0"); this.jLabel8.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } } private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { /* buat Tabel Terkirim int a = JOptionPane.showConfirmDialog(null, "Apakah pulsa sudah terkirim ?", ".:: Question ::.", 0, 3); if(a==0) { int brs = this.jTable1.getSelectedRow(); String faktur = tabLap1.getValueAt(brs,0).toString(); try { String sql = "update tb_jual_pulsa_elektrik set status = 'TERKIRIM' where faktur = '" + faktur + "'"; Statement stat = kon.createStatement(); int rs = stat.executeUpdate(sql); } catch (Exception e) { System.out.println("Error Ubah status : " + e); }

164
} */ } private void jButton3MouseClicked(java.awt.event.MouseEvent evt) { // TOMBOL REFRESH tampilkandataketabel(); this.jComboBox1.setSelectedIndex(0); this.jComboBox2.setSelectedIndex(0); this.jComboBox3.setSelectedIndex(0); this.jComboBox4.setSelectedIndex(0); this.jComboBox5.setSelectedIndex(0); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jCheckBox1.setSelected(false); this.jCheckBox2.setSelected(false); this.jButton3.requestFocus(); } private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { // BERDASARKAN PROVIDER if(this.jCheckBox1.isSelected()==true) { this.jComboBox5.setSelectedIndex(0); this.jComboBox5.setEnabled(true); this.jComboBox5.requestFocus(); } else if(this.jCheckBox1.isSelected()==false) { this.jComboBox5.setSelectedIndex(0); this.jComboBox5.setEnabled(false); this.jButton3.requestFocus(); } } private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) { // BERDASARKAN WAKTU if(this.jCheckBox2.isSelected()==true) { this.jComboBox1.setSelectedItem("Pilih"); this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox1.setEnabled(true); this.jComboBox2.setEnabled(true); this.jComboBox3.setEnabled(true); this.jComboBox4.setEnabled(true); this.jComboBox1.requestFocus(); } else if(this.jCheckBox2.isSelected()==false) { this.jComboBox1.setSelectedItem("Pilih"); this.jComboBox2.setSelectedItem("Pilih");

165
this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jButton3.requestFocus(); } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; private javax.swing.JComboBox jComboBox3; private javax.swing.JComboBox jComboBox4; private javax.swing.JComboBox jComboBox5; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration } File Laporan_voucher.java import java.sql.*; import javax.swing.*; import java.awt.event.*; import java.text.*; import java.util.*;;

166
public class laporan_voucher extends javax.swing.JInternalFrame { //=================================BATAS EDIT============================= // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabLapVoucher = new javax.swing.table.DefaultTableModel(null, new String[]{"No Faktur","Nama Barang"," Jumlah "," Harga Beli "," Harga Jual "," Total Detail","Nama Petugas","Tanggal"}) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; public void hapustabel() { int row = tabLapVoucher.getRowCount(); for (int k=0; k < row ; k++ ) { tabLapVoucher.removeRow(0); } } public void tampilkandataketabel() { long tb = 0; long tj = 0; NumberFormat nf = NumberFormat.getNumberInstance(); hapustabel(); try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas order by no_faktur,c.nama DESC;"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1;

167
String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); } catch (Exception e) { System.out.println("Error Tampilkan data ke tabel : " + e); } } public void idpeg() { try { String sql = "select distinct nama from tb_petugas order by nama"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); this.jComboBox1.removeAllItems(); this.jComboBox1.addItem("Pilih"); while (rs.next()) { String peg = rs.getString(1); this.jComboBox1.addItem(peg); } } catch (Exception e) { System.out.println("Error Tampilkan data petugas : " + e); } } public String getIdPeg(String nama) { String id=""; try { String sql = "select id_petugas from tb_petugas where nama = '" + nama + "'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow()>0) { rs.first(); id = rs.getString(1); } } catch (Exception e) { System.out.println("Error getIdPeg : " + e + "\n"); } return id;

168
} //=================================BATAS EDIT============================= /** Creates new form laporan_voucher */ public laporan_voucher() { String tgl; initComponents(); tampilkandataketabel(); idpeg(); this.jButton1.setVisible(false); this.jComboBox2.removeAllItems(); this.jComboBox3.removeAllItems(); this.jComboBox4.removeAllItems(); this.jComboBox5.removeAllItems(); this.jComboBox2.addItem("Pilih"); this.jComboBox2.addItem("Harian"); this.jComboBox2.addItem("Bulanan"); this.jComboBox2.addItem("Tahunan"); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jComboBox3.addItem("Pilih"); for(int t = 1; t<=31; t++) { tgl = ""; tgl = Integer.toString(t); if(tgl.length()==1) { tgl = "0" + tgl; } this.jComboBox3.addItem(tgl); } this.jComboBox4.addItem("Pilih"); this.jComboBox4.addItem("Januari"); this.jComboBox4.addItem("Februari"); this.jComboBox4.addItem("Maret"); this.jComboBox4.addItem("April"); this.jComboBox4.addItem("Mei"); this.jComboBox4.addItem("Juni"); this.jComboBox4.addItem("Juli"); this.jComboBox4.addItem("Agustus"); this.jComboBox4.addItem("September"); this.jComboBox4.addItem("Oktober"); this.jComboBox4.addItem("November"); this.jComboBox4.addItem("Desember"); //MEMBUAT DATE Calendar dt = Calendar.getInstance();

169
int th = dt.get(dt.YEAR); this.jComboBox5.addItem("Pilih"); for (int j = 2007; j<=th; j++) { String tahun = Integer.toString(j); this.jComboBox5.addItem(tahun); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jCheckBox1 = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); jCheckBox2 = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); jComboBox2 = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); jComboBox3 = new javax.swing.JComboBox(); jComboBox4 = new javax.swing.JComboBox(); jComboBox5 = new javax.swing.JComboBox(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jButton4 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabLapVoucher);

170
jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(20, 20, 950, 450); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jPanel1.setLayout(null); jCheckBox1.setText("Berdasarkan Petugas"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); jPanel1.add(jCheckBox1); jCheckBox1.setBounds(10, 10, 160, 23); jLabel1.setText("Nama Petugas :"); jPanel1.add(jLabel1); jLabel1.setBounds(70, 30, 110, 20); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox1); jComboBox1.setBounds(190, 30, 150, 20); jCheckBox2.setText("Berdasarkan Waktu"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox2ActionPerformed(evt); } }); jPanel1.add(jCheckBox2); jCheckBox2.setBounds(10, 60, 150, 23); jLabel2.setText("Jenis Laporan :"); jPanel1.add(jLabel2); jLabel2.setBounds(70, 90, 100, 20); jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jComboBox2.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jComboBox2ItemStateChanged(evt); } }); jPanel1.add(jComboBox2); jComboBox2.setBounds(190, 90, 150, 20); jLabel3.setText("Tanggal :"); jPanel1.add(jLabel3); jLabel3.setBounds(70, 120, 60, 20); jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox3);

171
jComboBox3.setBounds(130, 120, 50, 20); jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox4); jComboBox4.setBounds(190, 120, 150, 20); jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox5); jComboBox5.setBounds(350, 120, 80, 20); getContentPane().add(jPanel1); jPanel1.setBounds(30, 490, 440, 160); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Total Pendapatan :"); getContentPane().add(jLabel4); jLabel4.setBounds(640, 570, 150, 30); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel5.setText("0"); getContentPane().add(jLabel5); jLabel5.setBounds(800, 570, 150, 30); jButton4.setText("Keluar"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); getContentPane().add(jButton4); jButton4.setBounds(840, 620, 90, 30); jButton3.setText("Refresh"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); getContentPane().add(jButton3); jButton3.setBounds(740, 620, 100, 30); jButton2.setText("Lihat"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); getContentPane().add(jButton2); jButton2.setBounds(660, 620, 80, 30); jButton1.setText("Cetak"); getContentPane().add(jButton1);

172
jButton1.setBounds(570, 620, 90, 30); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel6.setText("Total Pembelian :"); getContentPane().add(jLabel6); jLabel6.setBounds(640, 530, 150, 30); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel7.setText("0"); getContentPane().add(jLabel7); jLabel7.setBounds(800, 530, 150, 30); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel8.setText("Total Penjualan :"); getContentPane().add(jLabel8); jLabel8.setBounds(640, 490, 150, 30); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel9.setText("0"); getContentPane().add(jLabel9); jLabel9.setBounds(800, 490, 150, 30); pack(); }// </editor-fold> private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { // berdasarkan ptugas if(this.jCheckBox1.isSelected()==true) { this.jComboBox1.setSelectedIndex(0); this.jComboBox1.setEnabled(true); this.jComboBox1.requestFocus(); } else if(this.jCheckBox2.isSelected()==false) { this.jComboBox1.setSelectedIndex(0); this.jComboBox1.setEnabled(false); this.jButton3.requestFocus(); } } private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) { // BERDASARKAN WAKTU if(this.jCheckBox2.isSelected()==true) { this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox5.setSelectedItem("Pilih"); this.jComboBox2.setEnabled(true); this.jComboBox3.setEnabled(true); this.jComboBox4.setEnabled(true);

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

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

175
String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan nama pegawai : " + e); } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false) { String tg = (String) this.jComboBox2.getSelectedItem(); String hr = (String) this.jComboBox3.getSelectedItem(); String bln = (String) this.jComboBox4.getSelectedItem(); String thn = (String) this.jComboBox5.getSelectedItem(); String kondisi = ""; long tb = 0; long tj = 0; if(tg.equals("Harian")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = hr + " " + bln + " " + thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '" + kondisi + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next())

176
{ String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Hari : " + e); } } else if(tg.equals("Bulanan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = bln + " " + thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5);

177
String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Bulan : " + e); } } else if(tg.equals("Tahunan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum);

178
tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true) { String tg = (String) this.jComboBox2.getSelectedItem(); String hr = (String) this.jComboBox3.getSelectedItem(); String bln = (String) this.jComboBox4.getSelectedItem(); String thn = (String) this.jComboBox5.getSelectedItem(); String kondisi = ""; long tb = 0; long tj = 0; if(tg.equals("Harian")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = hr + " " + bln + " " + thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '" + kondisi + "' and d.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4);

179
String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Hari : " + e); } } else if(tg.equals("Bulanan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = bln + " " + thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' and d.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8);

180
int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1; String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Bulan : " + e); } } else if(tg.equals("Tahunan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = thn; try { String sql = "select b.no_faktur,c.nama,b.jumlah,b.harga_beli,b.harga_jual,b.total_detail,d.nama,a.tanggal from tb_jual a, tb_detail_jual b, tb_barang c, tb_petugas d where a.no_faktur = b.no_faktur and c.id_barang =b.id_barang and d.id_petugas=a.id_petugas and tanggal like '%" + kondisi + "' and d.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by no_faktur DESC"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String faktur = rs.getString(1); String brg = rs.getString(2); String jum = rs.getString(3); String hb= rs.getString(4); String hj= rs.getString(5); String tot = rs.getString(6); String nama = rs.getString(7); String tgl = rs.getString(8); int hb1 = Integer.parseInt(hb) *Integer.parseInt(jum); int hj1 = Integer.parseInt(hj) *Integer.parseInt(jum); tb += hb1; tj += hj1;

181
String[] data = {faktur ,brg , nf.format(Integer.parseInt(jum)),nf.format(Integer.parseInt(hb)),nf.format(Integer.parseInt(hj)),tot,nama , tgl}; tabLapVoucher.addRow(data); } this.jLabel9.setText("Rp " + nf.format(tj)); this.jLabel7.setText("Rp " + nf.format(tb)); this.jLabel5.setText("Rp " + nf.format(tj-tb)); rs.last(); if(rs.getRow()==0) { this.jLabel5.setText("Rp 0"); this.jLabel7.setText("Rp 0"); this.jLabel9.setText("Rp 0"); } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } }

// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; private javax.swing.JComboBox jComboBox3; private javax.swing.JComboBox jComboBox4; private javax.swing.JComboBox jComboBox5; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; }

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

182
import java.awt.event.*; import java.text.*; import java.util.*;; public class laporan_absen extends javax.swing.JInternalFrame { //=================================BATAS EDIT============================= // manggil prosedur koneksiDatabase pada class koneksi_database pada file koneksi_database.java Connection kon = new koneksi_database().koneksiDatabase(); // BUAT JUDUL HEADER TABEL_1.... javax.swing.table.DefaultTableModel tabLapAbsen = new javax.swing.table.DefaultTableModel(null, new String[]{"Tanggal","Nama Petugas"," Jam Masuk "," Jam Keluar " }) { public boolean isCellEditable(int iRows, int iCols) { return false; } }; public void hapustabel() { int row = tabLapAbsen.getRowCount(); for (int k=0; k < row ; k++ ) { tabLapAbsen.removeRow(0); } } public void tampilkandataketabel() { NumberFormat nf = NumberFormat.getNumberInstance(); hapustabel(); try { String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where a.id_petugas=b.id_petugas order by tanggal;"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1); String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); } } catch (Exception e) { System.out.println("Error Tampilkan data ke tabel : " + e); }

183
} public void idpeg() { try { String sql = "select distinct nama from tb_petugas order by nama"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); this.jComboBox1.removeAllItems(); this.jComboBox1.addItem("Pilih"); while (rs.next()) { String peg = rs.getString(1); this.jComboBox1.addItem(peg); } } catch (Exception e) { System.out.println("Error Tampilkan data petugas : " + e); } } public String getIdPeg(String nama) { String id=""; try { String sql = "select id_petugas from tb_petugas where nama = '" + nama + "'"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); rs.last(); if(rs.getRow()>0) { rs.first(); id = rs.getString(1); } } catch (Exception e) { System.out.println("Error getIdPeg : " + e + "\n"); } return id; } //=================================BATAS EDIT============================= /** Creates new form laporan_absen */ public laporan_absen() { String tgl; initComponents(); tampilkandataketabel(); idpeg(); this.jButton1.setVisible(false); this.jComboBox2.removeAllItems();

184
this.jComboBox3.removeAllItems(); this.jComboBox4.removeAllItems(); this.jComboBox5.removeAllItems(); this.jComboBox2.addItem("Pilih"); this.jComboBox2.addItem("Harian"); this.jComboBox2.addItem("Bulanan"); this.jComboBox2.addItem("Tahunan"); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jComboBox3.addItem("Pilih"); for(int t = 1; t<=31; t++) { tgl = ""; tgl = Integer.toString(t); if(tgl.length()==1) { tgl = "0" + tgl; } this.jComboBox3.addItem(tgl); } this.jComboBox4.addItem("Pilih"); this.jComboBox4.addItem("Januari"); this.jComboBox4.addItem("Februari"); this.jComboBox4.addItem("Maret"); this.jComboBox4.addItem("April"); this.jComboBox4.addItem("Mei"); this.jComboBox4.addItem("Juni"); this.jComboBox4.addItem("Juli"); this.jComboBox4.addItem("Agustus"); this.jComboBox4.addItem("September"); this.jComboBox4.addItem("Oktober"); this.jComboBox4.addItem("November"); this.jComboBox4.addItem("Desember"); //MEMBUAT DATE Calendar dt = Calendar.getInstance(); int th = dt.get(dt.YEAR); this.jComboBox5.addItem("Pilih"); for (int j = 2007; j<=th; j++) { String tahun = Integer.toString(j); this.jComboBox5.addItem(tahun); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is

185
* always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jCheckBox1 = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); jCheckBox2 = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); jComboBox2 = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); jComboBox3 = new javax.swing.JComboBox(); jComboBox4 = new javax.swing.JComboBox(); jComboBox5 = new javax.swing.JComboBox(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); this.jTable1.setModel(tabLapAbsen); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(10, 10, 980, 310); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jPanel1.setLayout(null); jCheckBox1.setText("Berdasarkan Petugas"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); jPanel1.add(jCheckBox1); jCheckBox1.setBounds(10, 10, 160, 23); jLabel1.setText("Nama Petugas :");

186
jPanel1.add(jLabel1); jLabel1.setBounds(70, 30, 110, 20); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox1); jComboBox1.setBounds(190, 30, 150, 20); jCheckBox2.setText("Berdasarkan Waktu"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox2ActionPerformed(evt); } }); jPanel1.add(jCheckBox2); jCheckBox2.setBounds(10, 60, 150, 23); jLabel2.setText("Jenis Laporan :"); jPanel1.add(jLabel2); jLabel2.setBounds(70, 90, 100, 20); jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jComboBox2.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jComboBox2ItemStateChanged(evt); } }); jPanel1.add(jComboBox2); jComboBox2.setBounds(190, 90, 150, 20); jLabel3.setText("Tanggal :"); jPanel1.add(jLabel3); jLabel3.setBounds(70, 120, 60, 20); jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox3); jComboBox3.setBounds(130, 120, 50, 20); jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox4); jComboBox4.setBounds(190, 120, 150, 20); jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jPanel1.add(jComboBox5); jComboBox5.setBounds(350, 120, 80, 20); getContentPane().add(jPanel1); jPanel1.setBounds(60, 330, 440, 160); jButton1.setText("Cetak"); getContentPane().add(jButton1); jButton1.setBounds(550, 390, 90, 30);

187

jButton2.setText("Lihat"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); getContentPane().add(jButton2); jButton2.setBounds(640, 390, 80, 30); jButton3.setText("Refresh"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); getContentPane().add(jButton3); jButton3.setBounds(720, 390, 100, 30); jButton4.setText("Keluar"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); getContentPane().add(jButton4); jButton4.setBounds(820, 390, 90, 30); pack(); }// </editor-fold> private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) { // berdasarkan ptugas if(this.jCheckBox1.isSelected()==true) { this.jComboBox1.setSelectedIndex(0); this.jComboBox1.setEnabled(true); this.jComboBox1.requestFocus(); } else if(this.jCheckBox2.isSelected()==false) { this.jComboBox1.setSelectedIndex(0); this.jComboBox1.setEnabled(false); this.jButton3.requestFocus(); } } private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) { // BERDASARKAN WAKTU if(this.jCheckBox2.isSelected()==true) { this.jComboBox2.setSelectedItem("Pilih"); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox5.setSelectedItem("Pilih"); this.jComboBox2.setEnabled(true);

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

189
{ this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jComboBox3.setSelectedItem("Pilih"); this.jComboBox4.setSelectedItem("Pilih"); this.jComboBox5.setSelectedItem("Pilih"); this.jComboBox2.requestFocus(); } } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL LIHAT if(this.jCheckBox1.isSelected()==true && this.jCheckBox2.isSelected()==false) { long tp = 0; hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); try { String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where a.id_petugas=b.id_petugas and a.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1); String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); } rs.last(); } catch (Exception e) { System.out.println("Error Cari data berdasarkan nama pegawai : " + e); } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==false) { String tg = (String) this.jComboBox2.getSelectedItem(); String hr = (String) this.jComboBox3.getSelectedItem(); String bln = (String) this.jComboBox4.getSelectedItem(); String thn = (String) this.jComboBox5.getSelectedItem(); String kondisi = "";

if(tg.equals("Harian"))

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

191
} } else if(tg.equals("Tahunan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = thn; try { String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where a.id_petugas=b.id_petugas and tanggal like '%" + kondisi + "' order by tanggal"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1); String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); } rs.last(); } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } else if(this.jCheckBox2.isSelected()==true && this.jCheckBox1.isSelected()==true) { String tg = (String) this.jComboBox2.getSelectedItem(); String hr = (String) this.jComboBox3.getSelectedItem(); String bln = (String) this.jComboBox4.getSelectedItem(); String thn = (String) this.jComboBox5.getSelectedItem(); String kondisi = ""; if(tg.equals("Harian")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = hr + " " + bln + " " + thn; try { String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where a.id_petugas=b.id_petugas and tanggal like '" + kondisi + "' and b.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1);

192
String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); } rs.last(); } catch (Exception e) { System.out.println("Error Cari data berdasarkan Hari : " + e); } } else if(tg.equals("Bulanan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = bln + " " + thn; try { String sql = "select b.nama, tanggal, jam_masuk, jam_keluar from tb_absen a, tb_petugas b where a.id_petugas=b.id_petugas and tanggal like '%" + kondisi + "' and b.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1); String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); } rs.last(); } catch (Exception e) { System.out.println("Error Cari data berdasarkan Bulan : " + e); } } else if(tg.equals("Tahunan")) { hapustabel(); NumberFormat nf = NumberFormat.getNumberInstance(); kondisi = thn; try {

193
String sql = "select no_faktur, total , client,status, tanggal , id_petugas from tb_jasa_laundry where tanggal like '%" + kondisi + "' and b.id_petugas = '" + getIdPeg(this.jComboBox1.getSelectedItem().toString()) + "' order by tanggal"; Statement stat = kon.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String nama = rs.getString(1); String tgl = rs.getString(2); String jm = rs.getString(3); String jk= rs.getString(4); String[] data = {tgl, nama , jm,jk}; tabLapAbsen.addRow(data); }

rs.last(); if(rs.getRow()==0) { } } catch (Exception e) { System.out.println("Error Cari data berdasarkan Tahun : " + e); } } } } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TOMBOL REFRESH tampilkandataketabel(); this.jComboBox2.setSelectedIndex(0); this.jComboBox3.setSelectedIndex(0); this.jComboBox4.setSelectedIndex(0); this.jComboBox5.setSelectedIndex(0); this.jComboBox1.setSelectedIndex(0); this.jComboBox1.setEnabled(false); this.jComboBox2.setEnabled(false); this.jComboBox3.setEnabled(false); this.jComboBox4.setEnabled(false); this.jComboBox5.setEnabled(false); this.jCheckBox1.setSelected(false); this.jCheckBox2.setSelected(false); this.jButton3.requestFocus(); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // keluar dispose(); }

// Variables declaration - do not modify private javax.swing.JButton jButton1;

194
private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; private javax.swing.JComboBox jComboBox3; private javax.swing.JComboBox jComboBox4; private javax.swing.JComboBox jComboBox5; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration }

195

LAMPIRAN B OUTPUT PROGRAM

1. Form Login

2. Form Utama ( Login Sebagai Admin dan User )

196 3. Form Data Petugas

4. Form Data Operator

5. Form Data Voucher

197

6. Form Transaksi Penjualan Pulsa Elektrik

7. Form Transaksi Penjualan Voucher

198

8. Laporan Penjualan Pulsa Elektrik

9. Laporan Penjualan Voucher

199

10. Laporan Absensi Karyawan

200

KOESIONER Aplikasi Penjualan Voucher dan Pulsa Elektrik Pada Perluasan Cabang CV Dian Mulya Menggunakan Java J2SE, Netbeans IDE 6.1 dan MySQL
I. IDENTITAS PENGISI
Nama Alamat Nomor Hp : . : . : .

II. UMUM
No 1. 2. 3. PERNYATAAN Tampilan aplikasi ini mudah dimengerti. Tampilan aplikasi ini menarik. Dengan aplikasi ini cara untuk melakukan proses pengisian pulsa elektrik dan penjualan voucher menjadi lebih mudah. Dengan aplikasi ini cara untuk mendapatkan informasi laporan menjadi lebih mudah. Aplikasi ini sudah memenuhi kebutuhan pengguna untuk dapat melakukan proses penjualan pulsa elektrik dan voucher. Aplikasi ini mempermudah pengguna dalam melakukan pencatatan transaksi penjualan pulsa elektrik dan penjualan voucher. Fasilitas yang terdapat dalam aplikasi ini telah mampu memenuhi kebutuhan pengguna dalam proses penjualan pulsa elektrik dan penjualan voucher. Fasilitas Laporan yang terdapat dalam aplikasi ini telah dapat memberikan informasi pembukuan yang lengkap. Aplikasi ini telah dapat digunakan untuk menggantikan sistem penjualan pulsa elektrik dan penjualan voucher secara tradisional. Laporan yang dihasilkan dalam aplikasi ini memberikan hasil yang tepat. SS S N TS STS

4. 5.

6.

7.

8.

9.

10.

..., .

( )

Você também pode gostar