Anda di halaman 1dari 103

Aplikasi Kasir Rumah Makan Menggunakan Java dan MySQL

TUGAS AKHIR

Diajukan Sebagai Persyaratan Untuk Menyelesaikan


Pendidikan Diploma III Pada
Program Studi Informatika
Jurusan Teknik Elektro Politeknik Negeri Pontianak

Oleh:

MACHMUD TAHNIHAN ISMA ROHMAT


NIM. 3201016046

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI PONTIANAK
2013

LEMBAR PENGESAHAN
APLIKASI KASIR RUMAH MAKAN MENGGUNAKAN JAVA DAN MySQL

Oleh:
NAMA

: MACHMUD TAHNIHAN ISMA ROHMAT

NIM

: 3201016046

Tugas akhir ini telah diterima dan disahkan sebagai salah satu syarat untuk
menyelesaikan Program Pendidikan Diploma III pada Program Studi Teknik
Informartika Jurusan Teknik Elektro Politeknik Negeri Pontianak.

Disahkan oleh:

Ketua Jurusan

Pembimbing

H. Irawan Suharto, ST
NIP.197103111998011001

Yunita, ST., M.Sc


NIP. 198106272008012014

Mengetahui,
Direktur Politeknik Negeri Pontianak

Mahyus, S.Pd., SE., MM


NIP. 197002011996051001

HALAMAN PERNYATAAN
Tugas akhir ini telah dipertahankan di depan tim penguji Jurusan Teknik
Informatika pada tanggal 16 Juli 2013 dan dinyatakan memenuhi persyaratan
untuk mata kuliah tugas akhir.

Tim Penguji
Ketua

Yunita, ST., M.Sc


NIP. 198106272008012014

Penguji I

Dr. Ardi Marwan


NIP. 197408141999031002

RINGKASAN
Aplikasi Kasir Rumah Makan Menggunakan JAVA dan MySQL
Oleh: Machmud Tahnihan Isma Rohmat
Banyak rumah makan yang menggunakan mesin kasir yang sederhana
untuk melakukan perhitungan transaksi pembayaran. Namun tidak jaran gmesinmesin seperti ini adalah mesin yang hanya dapat melakukan perhitungan saja
tanpa dapat menyimpan berkas transaksi yang bisa dijadikan sebaga iarsip atau
laporan, sehingga pemilik tidak dapat memantau atau melihat pendapatan dari
rumah makan yang dikelolanya.
Berkaitan dengan hal tersebut, penulis ingi nmengangka tpembahasan
tentang Aplikasi Kasir yang dapat mempermudah pekerjaan kasir baikdalam
proses transaksi pembayaran maupun perekaman datanya .Dalam hal ini bahasa
pemrograman yang digunakan untuk membuat aplikasi tersebut adalah JAVA dan
terhubung dengan database MySQL.
Dengan adanya sistem aplikasi kasir ini, diharapkan mampu membantu
kinerja dari mesin kasir yang ada. Aplikasi kasir mampu menyimpan data
transaksi dari penjualan rumah makan yang menggunakan aplikasi kasir ini.
Kata Kunci :database , java, MySQL, kasir

PRAKATA

Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala
berkat, rahmat dan hidayah-Nya, sehingga penulis dapat menyelesaikan penulisan
Tugas Akhir ini yang berjudul Aplikasi Kasir Rumah Makan Menggunakan
JAVA dan MySQL. Tujuan dari penulisan Tugas Akhir ini adalah untuk
memenuhi syarat dalam menyelesaikan Program Pendidikan Diploma III
Politeknik Negeri Pontianak serta mampu menciptakan sebuah aplikasi kasir
rumah makan yang diharapkan dapat membantu kinerja kasir.
Tugas Akhir ini dapat diselesaikan atas dorongan, bantuan dan bimbingan
dari berbagai pihak, baik bantuan berupa moril maupun materil. Dalam
kesempatan ini dengan segala kerendahan hati, penulis ingin menyampaikan
ucapan terima kasih yang sebesar-besarnya kepada:
1.

Kedua orangtua penulis yang selalu memberi motivasi, semangat serta doa
yang tulus dan ikhlas.

2.

Bapak Mahyus, S.Pd, SE., MM selaku Direktur Politeknik Negeri


Pontianak.

3.

Bapak H.Irawan Suharto, ST selaku Kepala Jurusan Teknik Elektro


Politeknik Negeri Pontianak.

4.

Bapak Wendhi Yuniarto, ST., MT selaku Kepala Prodi Teknik Informatika


Politeknik Negeri Pontianak.

5.

Ibu Yunita, ST., M.Sc selaku Dosen Pembimbing Tugas Akhir.

6.

Ibu Mariana Syamsudin, ST., MT selaku Dosen Penguji Tugas Akhir.

7.

Bapak Dr. Ardi Marwan selaku Dosen Penguji Tugas Akhir.

8.

Seluruh staf pengajar Politeknik Negeri Pontianak khususnya di Jurusan


Teknik Elektro Program Studi Teknik Informatika yang tidak bisa
disebutkan namanya satu persatu.

9.

Ayu Retno Wulandari yang selalu memberikan penulis semangat dan


motivasi.

10. Teman-teman di kelas VI C yang telah memberikan doa dan dukungannya.

11. Semua pihak yang tidak dapat penulis sebutkan satu persatu yang
telahmemberikanbantuan baik berupa moril maupun materil, sehingga
penulis dapat menyelesaikan penulisan Tugas Akhir ini.
Penulis menyadari bahwa dalam penulisan Tugas Akhir ini masih
terdapat banyak kekurangan dan kekeliruan. Penulis mohon kepada
pembaca untuk dapat memberikan

kritik dan saran yang sifatnya

membangun.
Akhir kata, semoga apa yang telah diberikan kepada penulis baik
itu segala bantuan ataupun jasa, akan mendapatkan balasan dari Tuhan
Yang Maha Esa dan semoga Tugas Akhir ini dapat bermanfaat bagi
pembaca.

Pontianak,

Penulis

Juli 2013

DAFTAR ISI
HALAMAN PERNYATAAN ................................................................................................... iii
RINGKASAN .........................................................................................................................iv
DAFTAR ISI..........................................................................................................................vii
DAFTAR GAMBAR................................................................................................................ix
DAFTAR TABEL .................................................................................................................... x
BAB I .................................................................................................................................... 1
PENDAHULUAN ................................................................................................................... 1
1.1.

Latar Belakang Masalah ...................................................................................... 1

1.2.

Rumusan Masalah ............................................................................................... 2

1.3.

Ruang Lingkup Masalah ...................................................................................... 2

1.4.

Tujuan Tugas Akhir .............................................................................................. 2

1.5.

Manfaat Tugas Akhir ........................................................................................... 3

1.6.

Metodologi.......................................................................................................... 3

1.7.

Sistematika Tugas Akhir ...................................................................................... 4

BAB II ................................................................................................................................... 5
LANDASAN TEORI ................................................................................................................ 5
2.1. Pengertian Aplikasi................................................................................................... 5
2.2. Pengertian Program Kasir ........................................................................................ 5
2.3. Bahasa Pemrograman JAVA ..................................................................................... 6
2.3.1.

Kelebihan dan Kekurangan JAVA .............................................................. 10

2.4. Basis Data ............................................................................................................... 11


2.5.SQL (Structured Query Language) .......................................................................... 12
2.6. XAMPP.................................................................................................................... 13
2.6.1. Penjelasan XAMPP .......................................................................................... 13
2.6.2. Bagian-Bagian Penting Dari XAMPP ................................................................ 15
BAB III ................................................................................................................................ 16
ANALISIS DAN PERANCANGAN SISTEM ............................................................................ 16
3.1. Analisis Kebutuhan Perangkat Lunak ..................................................................... 16
3.1.1. Diagram Alur Admin ........................................................................................ 16
3.1.2. Diagram Alur User Level 2 ............................................................................... 18

3.2. Analisis Basis Data .................................................................................................. 19


3.2.1. Struktur Tabel ................................................................................................. 19
3.2.2. Desain Antar Muka.......................................................................................... 23
BAB IV................................................................................................................................ 27
IMPLEMENTASI ................................................................................................................. 27
4.1. Gambaran Umum Program yang Ada .................................................................... 27
4.2. Pembuatan Database ............................................................................................. 27
4.3. Implementasi ......................................................................................................... 27
4.3.1.Form login ........................................................................................................ 26
4.3.2. Form Utama .................................................................................................... 26
4.3.2.2. Transaksi ...................................................................................................... 29
BAB V................................................................................................................................. 36
PENUTUP ........................................................................................................................... 36
5.1. Kesimpulan ............................................................................................................. 36
5.2 Saran ....................................................................................................................... 36
Daftar Pustaka................................................................................................................... 38
LAMPIRAN ......................................................................................................................... 39

DAFTAR GAMBAR

Gambar 2.1 Diagram Alur Admin ........................................................................ 17


Gambar 2.2 Diagram Alur User Level 2 ............................................................... 18
Gambar 2.3 Form Login ........................................................................................ 23
Gambar 2.4 Form Utama....................................................................................... 23
Gambar 2.5 Form Pilih Meja ................................................................................ 24
Gambar 2.6 Form Transaksi.................................................................................. 24
Gambar 4.1. Form Login User .............................................................................. 26
Gambar 4.2. Form Utama...................................................................................... 26
Gambar 4.3 Form Master ...................................................................................... 27
Gambar 4.4 Form Inventori Menu Makanan ........................................................ 27
Gambar 4.5 Form Inventori Bahan ....................................................................... 28
Gambar 4.6 Form Jenis Diskon............................................................................. 29
Gambar 4.7 Form Pilih Meja ................................................................................ 29
Gambar 4.8 Form Transaksi Kasir ........................................................................ 30
Gambar 4.9 Form Gabung Meja ........................................................................... 31
Gambar 4.10 Form Bayar ...................................................................................... 31
Gambar 4.11 Form Laporan Per Faktur ................................................................ 32
Gambar 4.12 Form Laporan Per Item ................................................................... 32
Gambar 4.13 Form Laporan Inventori .................................................................. 33
Gambar 4.14 Form Laporan .................................................................................. 34
Gambar 4.15 Form Management User .................................................................. 34

DAFTAR TABEL
Tabel 3.1 Account ................................................................................................. 19
Tabel 3.2 Menu ..................................................................................................... 19
Tabel 3.3 Inventori Bahan ..................................................................................... 20
Tabel 3.4 Jenis Diskon .......................................................................................... 21
Tabel 3.5 Pesanan.................................................................................................. 21
Tabel 3.6 Log ........................................................................................................ 22

BAB I
PENDAHULUAN

1.1.

Latar Belakang Masalah


Banyak rumah makan yang menggunakan mesin kasir yang sederhana
untuk melakukan perhitungan transaksi pembayaran.Namun tidak jarang
mesin-mesin seperti ini adalah mesin yang hanya dapat melakukan
perhitungan saja tanpa dapat menyimpan berkas transaksi yang bisa dijadikan
sebagai arsip atau laporan, sehingga pemilik tidak dapat memantau/melihat
pendapatan dari rumah makan yang dikelolanya.
Salah satunya yang biasa digunakan adalah mesin kasir cash register.Cash
register atau sering disebut dengan Mesin kasir elektronik adalah mesin kasir
berbentuk compact yang sudah didesain untuk mudah digunakan bahkan oleh
orang awam sekalipun. Pada cash register jenis ini, terdapat deretan tomboltombol yang didesain untuk mewakili tiap produk tertentu. Juga terdapat
kumpulan tombol numerik angka, untuk memasukkan harga ataupun memilih
kode barang tertentu.
Salah satu kekurangan dari mesin kasir elektronik adalah laporan yang
dihasilkan hanya merupakan laporan sederhana tentang hasil penjualan. Mesin
kasir elektronik juga tidak menyediakan fitur manajemen inventori stok atau
persediaan barang.
Selain itu Alasan keamanan juga perlu diperhitungkan karena mesin kasir
seperti ini pada umumnya tidak bisa mengatur hak akses untuk siapa saja yang
boleh atau tidak boleh menggunakannya. Oleh karena itu penulis ingin
mengangkat pembahasan tentang Aplikasi Kasir yang dapat mempermudah
baik dalam proses transaksi pembayaran maupun perekaman datanya. Dengan
adanya aplikasi kasir ini, diharapkan dapat membantu pemilik dalam
mengelola usaha rumah makannya. Karena aplikasi kasir ini memberikan
laporan langsung yang disimpan kedalam database.

1.2.

Rumusan Masalah
Berdasarkan latar belakang yang telah diuraikan di atas, dapat dirumuskan
permasalahan sebagai berikut, yaitu :
1. Bagaimana menyajikan system komputerisasi pada kasir agar lebih mudah
dalam melakukan proses transaksi pembayaran ?
2. Bagaimana data transaksi tersebut dapat direkam dan disimpan dengan
amansupaya cepat dalam perolehan informasi yang dibutuhkan pemilik ?

1.3.

Ruang Lingkup Masalah


Adapun ruang lingkup dalam pembuatan tugas akhir ini adalah:
1. Penulis hanya membahas masalah-masalah yang berkaitan dengan
transaksi dan perekaman data pembayaran.
2. Penulis tidak membahas tentang rincian biaya pengeluaran dari rumah
makan tersebut.
3. Aplikasi yang dibuat adalah aplikasi desktop yang berbasis localhost.

1.4.

Tujuan Tugas Akhir


Adapun tujuan dari penulisan tugas akhir ini adalah:
1. Mengaplikasikan ilmu yang telah diperoleh semasa mengikuti pendidikan
di Politeknik Negeri Pontianak.
2. Diharapkan mampu menambah kinerja dalam pekerjaan kasir.
3. Menambah wawasan dan pengalaman bagi penulis.
4. Memberi manfaat bagi rumah makan terkait.

1.5.

Manfaat Tugas Akhir


1. Bagi Pemilik dan Pelanggan
Mempermudah atau mempercepat dalam proses transaksi pembayaran dan
memudahkan pemilik dalam melakukan pengontrolan data.
2. Bagi Mahasiswa
Melatih

mahasiswa

dalam

menerapkan

ilmu

pengetahuan

keterampilan yang didapat selama duduk di bangku perkuliahan

dan
dalam

pembuatan aplikasi yang menggunakan bahasa pemrograman Java berbasis


dekstop.
3. Akademis/Universitas
Tugas akhir ini diharapkan dapat memberikan manfaat atau pengetahuan
khususnya mengenai pembuatan aplikasi dengan menggunakan Java.
1.6.

Metodologi
Teknik pengumpulan data yang digunakan penulis dalam penyusunan
Tugas Akhir adalah sebagai berikut :
1. Metode Literatur
Metodi ini dilaksanakan dengan melakukan studi di perpustakaan dan
melalui hasil penelitian yang relevan melalui artikel-artikel yang di dapat
melalui internet, serta mempelajari lebih dalam tentang Java.
2. Metode Implementasi
Pada tahap ini penulis melakukan pengimplementasian metode desain
aplikasi menggunakan Java.
3. Metode Pengujian dan Analisa
Pengujian dilakukan dengan melakukan tanya jawab kepada pihak yang
bersangkutan

dalam

penulisan

tugas

akhir

ini.

Setelah

itu

menganalisiskekurangan apa saja yang timbul saat selesai melakukan


pengujian.

1.7.
Sistematika Tugas Akhir
BAB I
:
PENDAHULUAN
Dalam bab ini berisi tentang latar belakang masalah, rumusan masalah,
ruang lingkup masalah, tujuan tugas akhir, manfaat tugas akhir, metodologi
dan sistematika tugas akhir.
BAB II

LANDASAN TEORI

Dasarteori, pada bab ini dikemukakan tentang landasan yang berisikan


teori-teori pendukung untuk bab-bab selanjutnya.
BAB III

ANALISIS dan PERANCANGAN

Pada bab ini dibahas tentang perancangan design alur dan sistematis dari
program atau aplikasi yang dibuat.
BAB IV

IMPLEMENTASI

Pada bab ini berisi tentang implementasi pembuatan aplikasi kasir berbasis
dekstop menggunakan Java.
BAB V

PENUTUP

Pada bab ini membahas kesimpulan dan saran dari pembahasan yang telah
dilakukan yang merupakan bab penutup dalam penulisan tugas akhir ini.

BAB II
LANDASAN TEORI

2.1. Pengertian Aplikasi


Aplikasi adalah suatu subkelas perangkat lunak komputer yang
memanfaatkan kemampuan komputer langsung untuk melakukan suatu tugas
yang diinginkan pengguna.Biasanya dibandingkan dengan perangkat lunak
sistem yang mengintegrasikan berbagai kemampuan komputer, tapi tidak
secara langsung menerapkan kemampuan tersebut untuk mengerjakan suatu
tugas yang menguntungkan pengguna.Contoh utama perangkat lunak aplikasi
adalah pengolah kata, lembar kerja, dan pemutar media. Beberapa aplikasi
yang digabung bersama menjadi suatu paket kadang disebut sebagai suatu
paket atau suite aplikasi (application suite). Contohnya adalah Microsoft
Office dan OpenOffice.org, yang menggabungkan suatu aplikasi pengolah
kata, lembar kerja, serta beberapa aplikasi lainnya.Aplikasi-aplikasi dalam
suatu paket biasanya memiliki antarmuka pengguna yang memiliki kesamaan
sehingga memudahkan pengguna untuk mempelajari dan menggunakan tiap
aplikasi. Sering kali, mereka memiliki kemampuan untuk saling berinteraksi
satu sama lain sehingga menguntungkan pengguna. Contohnya, suatu lembar
kerja dapat dibenamkan dalam suatu dokumen pengolah kata walaupun dibuat
pada aplikasi lembar kerja yang terpisah.
2.2. Pengertian Program Kasir
Program kasir dapat dikatakan sebagai otak dari sebuah komputer
kasir dan sangat mempengaruhi kinerja komputer kasir. Program kasir sering
juga disebut dengan istilah software toko, software stok ataupun software
kasir. Apabila kita ingin membeli program kasir tentunya harus melihat
kebutuhan yang ada, yaitu jenis usaha apa yang sedang dijalankan? program
kasir untuk setiap jenis usaha tentu saja berbeda-beda, program kasir untuk
sebuah restoran berbeda dengan program kasir untuk minimarket.

Aplikasi kasir pada software kasir rumah makan biasanya melakukan


pencatatan terhadap setiap transaksi penjualan yang terjadi di rumah makan
serta mampu menyajikan laporan-laporan layaknya seperti mesin kasir
konvensional atau cash register. Laporan-laporan ini misalnya adalah total
pendapatan atau omzet rumah makan yang diperoleh pada hari tersebut,
laporan distribusi pembayaran via tunai, debit, atau kartu kredit, laporan
omzet per-kasir, dan juga informasi seputar transaksi mengenai item yang
laku pada hari tersebut serta distribusi jumlah barang yang laku untuk
masing-masing item barang.
Implementasi program kasir rumah makan sendiri saat ini sudah
berkembang tidak hanya melakukan aktivitas manajemen yang berhubungan
dengan fungsi kasir saja. Saat ini hampir semua software kasir rumah makan
berkualitas sudah memasukkan fitur manajemen stok seperti master barang
dan penyesuaian barang atau adjustment stok saat terjadi ketidakcocokan
antara stok di komputer dengan stok fisik, kemudian fitur pembelian ke
supplier dan kartu hutang, serta modul-modul lain yang bervariatif antara
program kasir rumah makan satu dengan program rumah makan lainnya.
2.3. Bahasa Pemrograman JAVA
Java adalah bahasa pemrograman tingkat tinggi yang berorientasi
objek dan program java tersusun dari bagian yang disebut kelas. Kelas terdiri
atas metode-metode yang melakukan pekerjaan dan mengembalikan
informasi setelah melakukan tugasnya. Para pemrogram

Java banyak

mengambil keuntungan dari kumpulan kelas di pustaka kelas Java, yang


disebut dengan Java Application Programming Interface (API). Kelas-kelas
ini diorganisasikan menjadi sekelompok yang disebut paket (package). Java
API telah menyediakan fungsionalitas yang memadai untuk menciptakan
applet dan aplikasi canggih. Jadi ada dua hal yang harus dipelajari dalam
Java, yaitu mempelajari bahasa Java dan bagaimana mempergunakan kelas
pada Java API. Kelas merupakan satu-satunya cara menyatakan bagian
eksekusi program, tidak ada cara lain. Pada Java program javac untuk
mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File

kode sumber mempunyai ekstensi *.java. Kompilator javac menghasilkan file


bytecode kelas dengan ekstensi *.class. Interpreter merupakan modul utama
sistem Java yang digunakan aplikasi Java dan menjalankan program bytecode
Java.
Beberapa keunggulan java yaitu java merupakan bahasa yang
sederhana. Java dirancang agar mudah dipelajari dan digunakan secara
efektif. Java tidak menyediakan fitur-fitur rumit bahasa pemrograman tingkat
tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan
manual, sekarang digantikan dikerjakan Java secara otomatis seperti
dealokasi memori. Bagi pemrogram yang sudah mengenal bahasa C++ akan
cepat belajar susunan bahasa Java namun harus waspada karena mungkin
Java mengambil arah (semantiks) yang berbeda dibanding C++.
Java merupakan bahasa berorientasi objek (OOP) yaitu cara ampuh
dalam pengorganisasian dan pengembangan perangkat lunak. Pada OOP,
program komputer sebagai kelompok objek yang saling berinteraksi.
Deskripsi ringkas OOP adalah mengorganisasikan program sebagai kumpulan
komponen, disebut objek. Objek-objek ini ada secara independen,
mempunyai aturan-aturan berkomunikasi dengan objek lain dan untuk
memerintahkan objek lain guna meminta informasi tertentu atau meminta
objek lain mengerjakan sesuatu. Kelas bertindak sebagai modul sekaligus
tipe. Sebagai tipe maka pada saat jalan, program menciptakan objek-objek
yang merupakan instan-instan kelas. Kelas dapat mewarisi kelas lain. Java
tidak mengijinkan pewarisan jamak namun menyelesaikan kebutuhan
pewarisan jamak dengan fasilitas antarmuka yang lebih elegan.
Seluruh objek diprogram harus dideklarasikan lebih dulu sebelum
digunakan. Ini merupakan keunggulan Java yaitu Statically Typed.
Pemaksaan ini memungkinkan kompilator Java menentukan dan melaporkan
terjadinya pertentangan (ketidakkompatibelan) tipe yang merupakan barikade
awal untuk mencegah kesalahan yang tidak perlu (seperti mengurangkan
variabel bertipe integer dengan variabel bertipe string). Pencegahan sedini

mungkin diharapkan menghasilkan program yang bersih. Kebaikan lain fitur


ini adalah kode program lebih dapat dioptimasi untuk menghasilkan program
berkinerja tinggi.
Java menggunakan model pengamanan tiga lapis (three-layer security
model) untuk melindungi sistem dari untrusted Java code. Pertama, bytecode
verifier membaca bytecode sebelum dijalankan dan menjamin bytecode
memenuhi aturan-aturan dasar bahasa Java. Kedua, class loader menangani
pemuatan kelas Java ke runtime interpreter. Ketiga, manajer keamanan
menangani keamanan tingkat aplikasi dengan mengendalikan apakah program
berhak mengakses sumber daya seperti sistem file, port jaringan, proses
eksternal dan sistem window.
Platform independence adalah kemampuan program bekerja di sistem
operasi yang berbeda. Bahasa Java merupakan bahasa yang secara sempurna
tidak bergantung platform. Tipe variabel Java mempunyai ukuran sama di
semua platform sehingga variabel bertipe integer berukuran sama tidak peduli
dimana program java dikompilasi. Begitu telah tercipta file .class dengan
menggunakan kompilator Java di platform manapun, maka file .class tersebut
dapat dijalankan di platform manapun. Jadi dimanapun dibuat, dimanapun
dapat dijalankan. Slogan ini biasa diringkas sebagai Write Once, Run
Anywhere (WORA).
Java

termasuk

bahasa

Multithreading.

Thread

adalah

untuk

menyatakan program komputer melakukan lebih dari satu tugas di satu waktu
yang sama. Java menyediakan kelas untuk menulis program multithreaded,
program mempunyai lebih dari satu thread eksekusi pada saat yang sama
sehingga memungkinkan program menangani beberapa tugas secara
konkuren.
Program Java melakukan garbage collection yang berarti program
tidak perlu menghapus sendiri objek-objek yang tidak digunakan lagi.
Fasilitas ini mengurangi beban pengelolaan memori oleh pemrogram dan

mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat di


bahasa yang memungkinkan alokasi dinamis.
Java mempunyai mekanisme exception-handling yang ampuh.
Exception-handling menyediakan cara untuk memisahkan antara bagian
penanganan kesalahan dengan bagian kode normal sehingga menuntun ke
struktur kode program yang lebih bersih dan menjadikan aplikasi lebih tegar.
Ketika kesalahan yang serius ditemukan, program Java menciptakan
exception. Exception dapat ditangkap dan dikelola program tanpa resiko
membuat sistem menjadi turun.
Program Java mendukung native method yaitu fungsi ditulis di bahasa
lain, biasanya C/C++. Dukungan native method memungkinkan pemrogram
menulis fungsi yang dapat dieksekusi lebih cepat dibanding fungsi ekivalen di
java. Native method secara dinamis akan di-link ke program java, yaitu
diasosiasikan dengan program saat berjalan.
Selain itu keuntungan menggunakan bahasa pemrograman Java antara
lain memori pada Java secara otomatis dilengkapi garbage collector yang
berfungsi mendealokasi memori yang tidak diperlukan. Tidak ada lagi upaya
yang dilakukan pemrogram untuk melakukan dispose(). Kita tidak lagi
dibebani urusan korupsi memori. Java menerapkan array sebenarnya,
menghilangkan keperluan aritmatika pointer yang berbahaya dan mudah
menjadi salah. Menghilangkan pewarisan jamak (multiple inheritance)
diganti fasilitas antarmuka. Serta mudah dijalankan diberbagai platform.
Salah satu keunggulan java yang lain adalah Grafical User Interface
(GUI) adalah salah satu kemampuan Java dalam mendukung dan manajemen
antarmuka berbasis grafis. Tampilan grafis yang akan ditampilkan terhubung
dengan program serta tempat penyimpanan data. Elemen dasar di Java untuk
penciptan tampilan berbasis grafis adalah dua paket yaitu AWT dan Swing.
Abstract Windowing Toolkit (AWT), atau disebut juga Another Windowing
Toolkit, adalah pustaka windowing bertujuan umum dan multiplatform serta
menyediakan sejumlah kelas untuk membuat GUI di Java. Dengan AWT,
9

dapat membuat window, menggambar, manipulasi gambar, dan komponen


seperti Button, Scrollbar, Checkbox, TextField, dan menu pull-down.
Penggunaan komponen AWT ditandai dengan adanya instruksi :
import java.awt.*; Swing merupakan perbaikan kelemahan di AWT. Banyak
kelas swing menyediakan komponen alternatif terhadap AWT. Contohnya
kelas JButton swing menyediakan fungsionalitas lebih banyak dibanding
kelas Button. Selain itu komponen swing umumnya diawali dengan huruf
J, misalnya JButton, JTextField, JFrame, JLabel, JTextArea, JPanel, dan
sebagainya. Teknologi swing menggunakan dan memperluas gagasangagasan AWT. Sementara, penggunaan komponen Swing ditandai dengan
adanya instruksi : import javax.swing.*;
Beberapa perbedaan AWT dan Swing, AWT merupakan komponen
heavyweight (kelas berat) sedangkan Swing lightweight (kelas ringan). Swing
memiliki lebih banyak komponen. Fasilitas Swing Look and Feel : Metal,
Windows, Motif. Komponen Swing berdasar model-view, yaitu suatu cara
pengembangan komponen dengan pemisahan penyimpanan dan penanganan
data dari representasi visual data.
Bahasa

pemrograman

Java

merupakan

salah

satu

bahasa

pemrograman yang umum digunakan untuk mengembangkan aplikasi basis


data yang dibuat menggunakan MySQL.
2.3.1. Kelebihan dan Kekurangan JAVA
Berikut merupakan kelebihan dan kekurangan yang ada pada bahasa
pemrograman JAVA :
a. Kelebihan
1. Multiplatform
Java dapat dijalankan dibeberapa sistem operasi komputer
sesuai dengan prinsip tulis, jalankan dimana saja.Kelebihan ini
memungkinkan programmer untuk menulis sebuah kode
program lalu dikompilasi (diubah dari bahasa manusia menjadi

10

bahasa yang dimengerti mesin) sekali lalu hasilnya dapat


dijalankan di atas beberapa platform.
2. Library kelas yang lengkap
Java terkenal dengan kelengkapan library(kumpulan program
yang disertakan dalam bahasa pemrograman Java) yang sangat
memudahkan dalam penggunaannya untuk membangun sebuah
aplikasi. Kelengkapan library ini ditambah dengan keberadaan
komunitas Java yang besar yang terus menerus membuat
library-library baru untuk melingkupi seluruh kebutuhan
pembangunan aplikasi.

b. Kekurangan
1. Mudah didekompilasi
Dekompilasi adalah proses pembalikan dari kode jadi menjadi
kode sumber. Hal ini dimungkinkan karena kode jadi Java
merupakan bytecode yang menyimpan banyak atribut bahasa
tingkat tinggi, seperti nama-nama kelas, metode dan tipe data.
2. Penggunaan memori yang banyak
Peggunaan memori untuk program berbasis Java jauh lebih
besar daripada bahasa tingkat tinggi generasi sebelumnya
sepertii C/C++ dan Pascal. Biasanya ini bukan merupakan
masalah bagi pihak yang menggunakan teknologi terbaru,
tetapi menjadi masalah bagi mereka yang masih berkutat
dengan mesin komputer berumur lebih dari 4 tahun.
2.4. Basis Data
Basis data adalah kumpulan informasi yang disimpan di dalam komputer
secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer
untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang
digunakan untuk mengelola dan memanggil kueri (query) basis data disebut
sistem manajemen basis data (Database Management System, DBMS). Sistem
basis data dipelajari dalam ilmu informasi.

11

Konsep dasar dari basis data adalah kumpulan dari catatan-catatan, atau
potongan dari pengetahuan. Sebuah basis data memiliki penjelasan terstruktur dari
jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema
menggambarkan obyek yang diwakili suatu basis data, dan hubungan di antara
obyek tersebut. Ada banyak cara untuk mengorganisasi skema, atau memodelkan
struktur basis data ini dikenal sebagai model basis data atau model data. Model
yang umum digunakan sekarang adalah model relasional, yang menurut istilah
Layman mewakili semua informasi dalam bentuk tabel-tabel yang saling
berhubungan dimana setiap tabel terdiri dari baris dan kolom (definisi yang
sebenarnya menggunakan terminologi matematika). Dalam model ini, hubungan
antar tabel diwakili dengan menggunakan nilai yang sama antar tabel. Model yang
lain seperti model hierarkis dan model jaringan menggunakan cara yang lebih
eksplisit untuk mewakili hubungan antar tabel.
Istilah basis data mengacu pada koleksi dari data-data yang saling
berhubungan, dan perangkat lunaknya seharusnya mengacu sebagai sistem
manajemen basis data (Database Management System/DBMS). Jika konteksnya
sudah jelas, banyak administrator dan programer menggunakan istilah basis data
untuk kedua arti tersebut.
2.5.SQL (Structured Query Language)
SQL adalah sebuah bahasa yang digunakan untuk mengakses data dalam
basis data. Secara umum bahasa ini merupakan bahasa standar yang digunakan
dalam manajemen basis data relasional. Hampir semua server basis data yang ada
mendukung bahasa ini untuk melakukan manajemen datanya.
Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama Johny
Oracle yang membahas tentang ide pembuatan basis data relasional pada bulan
Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar
untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi
nama SEQUEL (Structured English Query Language). Terjadi permasalahan
mengenai penamaan SEQUEL, pada akhirnya IBM pun mengubah namanya
menjadi SQL.
Berikut ini adalah beberapa contoh bentuk deklarasi dari penggunaan basis
data SQL:

12

1. CREATE DATABASE nama_basis_data;


2. CREATE TABLE nama_tabel(nama_field1 tipe_data, nama_field2
tipe_data);
3. SELECT * FROM nama_tabel WHERE kondisi;
4. INSERT

INTO

nama_tabel

(nama_field1,

nama_field2)

VALUES(value1, value2);
5. UPDATE nama_tabel SET nama_field = value WHERE kondisi;
6. DELETE FROM nama_tabel WHERE kondisi;

2.6. XAMPP
X (empat sistem operasi apapun) Apache, MySQL, PHP dan Pearl atau
disingkat XAMPP, adalah perangkat lunak bebas yang mendukung banyak
sistem operasi. XAMPP merupakan kompilasi dari beberapa program yang
berfungsi sebagai server yang dapat berdiri sendiri (localhost). Perangkat
lunak ini memiliki penerjemah bahasa yang ditulis menggunakan bahasa
pemrograman PHP dan Pearl. Program ini tersedia dalam GNU (General
Public license) yang mudah digunakan untuk membuat aplikasi basis data
berbasis client server.
2.6.1. Penjelasan XAMPP
1. X , Kenapa disebut dengan sistem operasi? karena XAMPP bisa
dijalankan di 4 OS besar yang sering digunakan oleh pengguna
komputer yaitu Windows, Linux, Mac OS dan Solaris.
2. A, (Apacahe) merupakan aplikasi web server. Apache ini bersifat
open source yang berarti gratis dan bisa diedit oleh penggunanya.
Tugas utama Apache adalah menghasilkan halaman web yang benar
kepada user berdasarkan kode PHP yang dituliskan oleh pembuat
halaman web. Jika diperlukan juga berdasarkan kode PHP yang
dituliskan,maka dapat saja suatu basis data diakses terlebih dahulu
(misalnya dalam MySQL) untuk mendukung halaman web yang
dihasilkan.

13

3. M,

(MySQL),

merupakan

aplikasi

server

basis

data.

Perkembangannya disebut SQL yang merupakan kepanjangan dari


Structured Query Language. SQL merupakan bahasa terstruktur yang
digunakan untuk mengolah basis data. MySQL dapat digunakan untuk
membuat dan mengelola basis data beserta isinya. Kita dapat
memanfaatkan

MySQL

untuk

menambahkan,

mengubah,

dan

menghapus data yang berada di dalam basis data.


4. P, (PHP), bahasa pemrograman web. Bahasa pemrograman PHP
merupakan bahasa pemrograman untuk membuat web yang bersifat
server-side scripting. PHP memungkinkan kita untuk membuat
halaman web yang bersifat dinamis. Sistem manajemen basis data
yang sering digunakan bersama PHP adalah MySQL. namun PHP juga
mendukung sistem manajement basis data Oracle, Microsoft Access,
Interbase, d-base, PostgreSQL, dan sebagainya.
5. P, (Perl), bahasa pemrograman, pertama kali dikembangkan oleh
Larry Wall di mesin Unix. Perl pertama kali dirilis pada tanggal 18
Desember 1987 ditandai dengan keluarnya Perl 1. Dua diantara
karakteristik utama perl adalah penanganan teks dan berbagai jalan
pintas untuk meyelesaikan persoalan-persoalan umum.Perl sangat
populer di gunakan dalam program-rogram CGI (Common Gateway
Interface) dan protokol internet lainnya.

14

2.6.2. Bagian-Bagian Penting Dari XAMPP


Berikut merupakan bagian-bagian terpentingdari XAMPP:
1. Htdoc
Folder tempat meletakkan berkas-berkas yang akan dijalankan,
seperti berkas PHP, HTML dan skrip lainnya.
2. phpMyAdmin
Perangkat lunak berbasis web (localhost) yang merupakan bagian
untuk mengelola basis data yang ada dikomputer.
3. Kontrol Panel
Berfungsi untuk mengelola layanan (service) XAMPP, seperti
menghentikan layanan (stop) ataupun memulai layanan (start).

15

BAB III
ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Kebutuhan Perangkat Lunak


Analisis ini bertujuan untuk memperoleh semua kebutuhan sistem program
kasir rumah makanyang akan dibangun. Analisis dilakukan dengan
menggunakan diagram alur (flowchart) agar rangkaian proses atau prosedur
sistem kasir yang akan dibangun lebih mudah dipahami.
3.1.1. Diagram Alur Admin
Diagram alur (flowchart) admin ini merupakan gambaran alur atau
kegiatan apa saja yang dapat dilakukan seorang admin terhadap
program kasir tersebut.

16

Mulai

Login

Master
Menu

Makan
an
Input
Nama
Makana
n

Master
Invent
ori

Master
Jenis
Diskon

Input
Bahan
Makana
n

Input
Diskon

Trans
aksi
Kasir

Lapora
n Per
Faktur

Tampil
kan
Entri
Pesana
n

Ambil
Data
Makana
n

Laporan
Form
Laporan

Cetak
Laporan

Lapor
an
Per
Item

Sistem
Manageme
nt User

Input
Data
User

Simpan
data
User

Pembaya
ran

Simpan
data
makana
n

Logout

Selesai

Gambar 2.1 Diagram Alur Admin

17

3.1.2. Diagram Alur User Level 2


Diagram alur (flowchart)user level 2 ini merupakan gambaran alur
transaksi yang dilakukan oleh pemilik/pegawai yang menggunakan
program kasir ini.
Mulai

Login

Transaksi
Kasir

Entri
Pesanan

Pembayaran

Logout

Selesai

Gambar 2.2 Desain Diagram Alur User Level 2

18

3.2. Analisis Basis Data


3.2.1. Struktur Tabel
Program kasir ini menggunakan basis data untuk menyimpan datadata dari hasil transaksi yang dilakukan. Data-data yang dihasilkan itu
antara lain data user atau admin, data transaksi penjualan, data stok bahan
makanan maupun minuman, data menu makanan, dan lain-lain. Agar data
tersebut tidak sulit untuk ditemukan maka diperlukanlah struktur tabel
untuk menampung masing-masing data tersebut.
Berikut merupakan sebagian struktur tabel yang digunakan dalam
pembuatan program kasir ini :
1. Tabel Account
Tabel account ini berisikan informasi pengguna atau admin berupa
level, nama, username, dan password.
Tabel 3.1 Tabel Account
Nama Field

Tipe Data

Ukuran Keterangan

Jenis
Kunci

level

int

1,2

Id User

nama

Varchar

100

Nama

lengkap

pengguna
username

Varchar

15

Nama pengguna

Primary
key

password

Varchar

15

Kata kunci

2. Tabel Menu
Tabel menu ini berisikan informasi makanan atau minuman yang
ada berupa id, kode, nama, jumlah1, jumlah2, harga, dan kategori.
Tabel 3.2 Tabel Menu
Nama

Tipe

Ukuran Keterangan

Jenis

Field

Data

Id

Varchar

10

Id makanan/minuman

Kode

Varchar

10

kodemakanan/minuman Primary

Kunci

19

key
Nama

Varchar

100

Nama
makanan/minuman

Jumlah1

Int

10

Jumlah
makanan/minuman

Jumlah2

Int

10

Jumlah
makanan/minuman

Harga

Int

100

Harga
makanan/minuman

Kategori

Varchar

100

Kategori
makanan/minuman

3. Tabel Inventori Bahan


Tabel inventori bahan ini berisikan tentang info bahan yang akan
digunakan untuk dijadikan makanan yakni informasinya berupa kode,
jenis, jumlah, jum_ons, mutasi, mutasi_ons, sisa, sisa_ons, harga_ons.
Tabel 3.3 Tabel Inventori Bahan
Nama Field

Tipe Data

Ukuran Keterangan

Jenis
Kunci

Kode

Varchar

10

Kode bahan

Primary
key

Jenis

Varchar

10

Jenis bahan

Jumlah

Int

10

Jumlah bahan

Jum_ons

Int

10

Jumlah bahan
dalam ons

Mutasi

Int

10

Pemakaian
bahan

Mutasi_ons

Int

10

Pemakaian
bahan dalam ons

Sisa

Int

10

Sisa bahan

Sisa_ons

int

10

Sisa bahan

20

dalam ons
Harga_ons

Int

10

Harga bahan
dalam ons

4. Tabel Jenis Diskon


Tabel jenis diskon ini berisikan info tentang diskon yang terdapat
pada rumah makan.Dan isinya berupa jenis diskon dan jumlah.
Tabel 3.4 Tabel Jenis Diskon
Nama Field

Tipe Data

Ukuran Keterangan

Jenis
Kunci

Jenis

Varchar

100

Jenis diskon

Primary
key

Jumlah

int

Jumlah diskon

5. Tabel Pesanan
Pada tabel ini berisikan tentang hasil transaksi terhadap konsumen.
Tabel ini berisikan informasi berupa faktur, meja, kode, pesanan,
harga, jumlah, dis, diskon, keterangan, total, tanggal, jam, kasir, bayar,
kembali, grand, subtotal.
Tabel 3.5 Tabel Pesanan
Nama Field

Tipe Data

Ukuran Keterangan

Jenis
Kunci

Faktur

Varchar

10

Faktur transaksi

Meja

Varchar

10

No meja

Kode

Varchar

10

Kode transaksi

Pesanan

Varchar

100

Pesanan

yang

dipesan
Harga

Int

10

Harga transaksi

Jumlah

Int

10

Jumlah pesanan

21

Dis

Int

Jumlah

diskon

dalam %
Diskon

Int

10

Jumlah

diskon

dalam harga
Keterangan

Varchar

100

Total

Int

10

Jumlah harga

Tanggal

Varchar

20

Tanggal
transaksi

Jam

Varchar

20

Jam transaksi

Kasir

Varchar

50

Nama user

6. Tabel Log
Pada tabel ini berisikan tentang log atau daftar pemakaian aplikasi
yang dilakukan oleh user maupun admin. Isi tabel log ini berupa
tanggal, jam, kegiatan.
Tabel 3.6 Tabel Log
Nama Field

Tipe Data

Ukuran Keterangan

Jenis
Kunci

Tanggal

Varchar

20

tanggal
penggunaan
program

Jam

Varchar

20

Jam penggunaan
program

Kegiatan

Varchar

200

Kegiatan apa
saja yang terjadi
pada saat
penggunaan
program

22

3.2.2. Desain Antar Muka


Desain antar muka bertujuan untuk menentukan rancangan form atau
tampilan program yang akan dibuat. Berikut ini adalah desain antar muka
fomr-form tersebut:

1. Desain Form Login User

LOGIN USER
USERNAME
PASSWORD

USERNAME
Gambar 2. 3 Desain Form Login
Form ini merupakan form utama yang tampil pada saat user
menjalankan program, pada form ini user nanti akan mengisikan
username dan password agar user dapat melakukan akses terhadap
program ini.
2. Desain Form Utama

Master Transaksi Laporan Sistem Help


Menu Makanan

Inventori
Jenis Diskon

F2

F2
F2

Gambar 2.4 Desain Form Utama

23

Pada form utama ini akan berisikan menu-menu yang memiliki


fungsi berbeda-beda. Form ini merupakan form utama dalam program
dimana akses ke form lainnya terdapat pada form ini.
3. Desain Form Pilih Meja

Gambar 2.5 Desain Form Pilih Meja


Pada form pilih meja, user akan dihadapkan terhadap beberapa
meja. Jumlah meja disini dapat di ubah sesuai dengan keinginan user.
Form pilih meja ini merupakan form yang tampil sebelum form
transaksi.
4. Desain Form Transaksi

No Faktur

Daftar Makanan dan Miuman


Yang Telah Dipilih

Daftar Menu Makanan dan


Minuman

Harga yang harus dibayar

No Meja

Bayar

Gambar 2.6 Desain From Transaksi


Form transaksi ini merupakan form yang tampil setelah user
memilih meja. Disini transaksi penjualan dilakukan.

24

BAB IV

IMPLEMENTASI

4.1. Gambaran Umum Program yang Ada


Secara keseluruhan program ini

dibuat

menggunakan

bahasa

pemrograman JAVA. Untuk menampung data-data yang dihasilkan dari


program ini dibutuhkan database untuk menampungnya. Program ini
menggunakan MySQL untuk menampung data yang ada.
4.2. Pembuatan Database
Dalam pembuatan dan pengontrolan basis data, program ini tidak hanya
menggunakan MySQL. Untuk membantu dalam pembuatan dan pengontrolan
basis data program ini dibantu oleh XAMPP. Pada pembuatan atau
pengontrolan basis data program ini, dapat dilakukan dengan membuka web
browser dan mengetikkan localhos:81/phpmyadmin/ ke dalam alamat url
yang terdapat pada web browser.
4.3. Implementasi
Subbab ini akan membahas mengenai implementasi dari program yang
telah dibuat dengan menggunakan bahasa pemrograman JAVA ini.

25

4.3.1.Form login

Gambar 4.1. Form Login User


Ini merupakan form pertama yang muncul pada saat program
dijalankan. Disini user harus mempunyai username dan password untuk
melakukan akses login dan masuk kedalam program. Jika user tidak
mempunyai username dan password untuk melakukan akses login, maka
user harus mendaftar dahulu kepada admin yang telah memiliki akses
untuk masuk kedalam program.
4.3.2. Form Utama

Gambar 4.2. Form Utama


Setelah form login, user akan masuk ke dalam form utama. User
dapat melihat beberapa menu yang terdapat pada menu bar di dalam form

26

utama. Masing-masing menu bar tersebut memiliki menu item yang


berbeda-beda dan memiliki fungsi yang berbeda pula.
Jika user login sebagai pengguna level 2, maka menu bar yang
dapat di klik hanya menu bar transaksi. Sedangkan user yang dapat
mengakses setiap menu bar hanyalah user yang mempunyai tingkatan
level 1, dan user yang mempunyai hak akses level 1 seperti pemilik
ataupun admin.
4.3.2.1 Master

Gambar 4.3 Form Master

Pada menu bar master ini terdapat 3 pilihan menu item yaitu :
1. Menu Makanan

Gambar 4.4 Form Inventori Menu Makanan

27

Saat menu makanan di klik maka akan timbul form seperti


gambar 4.4 di atas. Pada form ini user mengisikan data-data
makanan/minuman apa saja yang akan di tampilkan pada menu
makanan yang ada pada form transaksi nanti.

2. Inventori

Gambar 4.5 Form Inventori Bahan


Saat user mengklik menu inventori, maka akan
timbul form inventori seperti pada gambar 4.5 di atas.
Disini user level 1 atau pemilik mengisikan bahan-bahan
apa saja yang ada dan jumlah bahan yang digunakan untuk
membuat makanan.

28

3. Jenis Diskon

Gambar 4.6 Form Jenis Diskon


Pada form ini, terdapat jenis diskon yang ingin
diberlakukan oleh pemilik. Jika pemilik ingin mengadakan
diskon bagi pelanggan maka pemilik hanya melakukan
inputan jenis diskonnya dan berapa jumlah diskonnya.
4.3.2.2. Transaksi
1.Kasir

Gambar 4.7 Form Pilih Meja


Saat mengklik menu bar transaksi lalu pilih kasir,
maka akan tampil form pilih meja. Disini user harus
memilih meja untuk masuk kedalam form kasir.

29

Gambar 4.8 Form Transaksi Kasir


Setelah user memilih meja mana yang kosong,
maka akan tampil form seperti gambar 4.7 di atas. Pada
form ini terdapat pilihan-pilihan yang nantinya akan
diperlihatkan kepada pelanggan. Karena pada form ini
pelanggan akan melakukan transaksi atau pemilihan
makanan dan minuman apa yang ingin dipesan oleh
pelanggan.
Pada form ini terdapat beberapa button pilihan, yaitu :
a. [ESC] Kembali
Jika button ini ditekan maka user akan di hadapkan
kembali kepada form sebelum form transaksi yaitu form
pilih meja.
b. [Del] Hapus
Button

ini

digunakan

jika

pelanggan

ingin

mengganti pesanannya dengan pesanan yang lain.


c. [F4] Gabung
Button gabung ini berfungsi jika ada pelanggan
yang ingin menggabungkan mejanya dengan pelanggan
yang lain. Jika user mengklik button ini maka akan
tampil form sebagai berikut.

30

Gambar 4.9 Form Gabung Meja


Setelah

timbul

form

di

atas

user

hanya

menginputkan no meja sebelum gabung dan memilih


meja yang ingin digabungkan.
d. [F6]Meja
Jika button ini diklik, maka user akan kembali
kepada form pilih meja seperti pada gambar 4.7 di atas.
e. [F12] Cetak
Button ini berfungsi jika user ingin mencetak hasil
transaksi yang telah dilakukan.
f. [F7] Diskon
Button ini berfungsi untuk memberikan diskon
harga

kepada

pelanggan

setelah

penjumlahan

keseluruhan pembelian.
g. [F8] Bayar
Jika tombol ini diklik maka transaksi antara user dan
pelanggan telah selesai. Berikut tampilan form bayar.

Gambar 4.10 Form Bayar

31

4.3.2.3 Laporan
Saat user mengarahkan cursor kepada menu laporan
maka akan tampil beberapa pilihan menu antara lain :
1. Per Faktur
Jika menu ini di klik maka akan tampil laporan
transaksi namun dipisahkan menjadi per faktur seperti
pada gambar berikut.

Gambar 4.11 Form Laporan Per Faktur


2. Per Item
Jika menu ini di klik maka akan tampil laporan
transaksi namun dipisahkan menjadi per item seperti
pada gambar berikut.

Gambar 4.12 Form Laporan Per Item

32

3. Inventori
Jika menu ini di klik maka akan tampil laporan
inventori bahan. Formini melaporkan sisa bahan yang
masih ada maupun yang telah terpakai.

Gambar 4.13 Form Laporan Inventori


4. Form laporan
Pada form ini berisikan keseluruhan data laporan,
yang dapat dicari melalui tanggal yang berada pada
bagian bawah form. Disini user juga dapat melihat
laporan per faktur maupun per item. Berikut gambar
dari form laporan.

33

Gambar 4.14 Form Laporan


4.3.2.4. Sistem
Pada menu bar ini hanya terdapat sebuah menu item yaitu
management user. Form ini merupakan form dimana user membuat
username dan password untuk mengakses program kasir ini. Yang
memiliki akses untuk masuk kedalam management user adalah
user yang mempunyai tingkat level 1 atau admin. Berikut gambar
dari form management user.

Gambar 4.15 Form Management User


34

4.3.2.5. Help
Pada menu bar ini hanya terdapat sebuah menu item
yaitu logout. Jika kita mengklik menu logout maka akan
tampil pilihan yes dan no. Jika user memilih yes, maka user
akan keluar dari program. Jika user memilih no, maka user
akan kembali kepada tampilan form utama.

35

BAB V
PENUTUP

5.1. Kesimpulan
Berdasarkan hasil pembuatan aplikasi kasir rumah makan ini, penulis
mengambil beberapa kesimpulan:
1. Untuk alasan keamanan program memiliki 2 tingkat level user
2. Sistem kasir sudah dirancang untuk mudah digunakan, karna tidak terlalu
banyak pilihan menu didalamnya terutama admin yang mengatur inputan
data.
3. Hasil akhir program sesuai dengan rancangan penulis
4. Program kasir ini memiliki kekurangan dan kelebihan antara lain :
Kelebihan :

Mudah untuk digunakan.

Tidak butuh koneksi internet untuk mengaksesnya, karena berbasis


dekstop.

Program tidak membutuhkan spesifikasi laptop atau PC yang terlalu


tinggi, karena program dapat dijalankan pada spesifikasi laptop atau
PC yang standar.

Memiliki sistem laporan per hari, per minggu, maupun perbulan.

Kekurangan :

Belum menggunakan konsep client server

Masih ada yang menggunakan input manual

5.2 Saran
1. Semoga program ini kedepannya dapat dikembangkan agar program
bisa menjadi multi fungsi yaitu tidak hanya fokus terhadap kasir
rumah makan saja melainkandapat merangkup menjadi program kasir
toko atau mini market.

36

2. Dapat dibuat lebih sederhana lagi dalam perhitungan transaksi agar


tidak terlihat rumit.
3. Dapat ditambahkan menu-menu lainnya seperti makanan atau item
apa saja yang sedang ada potongan harga.

37

Daftar Pustaka
[1] SyarifMulkan, 2012, Bermacam Project Java dengan IDE Netbeans,
Yogyakarta: PenerbitAndi.
[2] WahanaKomputer, 2012, MembangunAplikasiBisnisDenganNetbeans 7,
Yogyakarta: PenerbitAndi.
[3] Miftakhul Huda, 2011, MembuatAplikasi Mini/Super MarketDengan Java,
Yogyakarta: Penerbit PT Elex Media Komputindo.
[4] Irawan, 2011, Java Untuk Orang Awam, Palembang: PenerbitMaxicom.
[5] http://id.wikipedia.org/wiki/MySQL diakses, rabu 24 april pukul 13.25
[6] http://belajar-pemrograman2.blogspot.com/2010/07/apa-itu-java.html diakses,
selasa 23 april pukul 16.05

38

LAMPIRAN

39

1.

Class Login
package kasir.main;
import java.awt.Color;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.geom.RoundRectangle2D;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import kasir.sistem.Log;
import kasir.utils.Koneksi;
import kasir.utils.Meja;
public class Login extends javax.swing.JFrame {
ResultSet rs;
String nama;
String pass;
Statement stat;
boolean result;
Connection con;
int salah = 0;
MainForm mf = new MainForm();
public void login() {
nama = tf1.getText();
pass = pf1.getText();
Meja m = new Meja();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "Select * from account where username ='" + nama + "' and password='" + pass +
"'";
result = stat.executeQuery(q).next();
if (result) {
this.dispose();
mf.show();
salah = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
mf.namaOP(rs.getString(2));
mf.Master(rs.getInt(1));
Log.LogAction(day.format(d), jam.format(d), "Operator login dengan username: " +
nama + ", atas nama: " + rs.getString(2));
}
} else {
JOptionPane.showMessageDialog(this, "Username/Password salah", "",
JOptionPane.ERROR_MESSAGE);
tf1.setText("");

pf1.setText("");
//b1.requestFocus();
salah++;
if (salah == 3) {
JOptionPane.showMessageDialog(this, "Anda sudah gagal login sebanyak 3 kali. \n "
+ "program akan ditutup", "", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
} catch (Throwable t) {
System.err.println(t.toString());
}
}
public Login() {
initComponents();
this.setLocationRelativeTo(null);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
tf1 = new javax.swing.JTextField();
pf1 = new javax.swing.JPasswordField();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
tf1.setName(""); // NOI18N
tf1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tf1ActionPerformed(evt);
}
});
tf1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tf1KeyPressed(evt);
}
});
pf1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
pf1KeyPressed(evt);
}
});

jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N


jLabel2.setText("USERNAME");
jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
jLabel3.setText("PASSWORD");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37,
Short.MAX_VALUE)
.addComponent(pf1, javax.swing.GroupLayout.PREFERRED_SIZE, 186,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 114,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tf1, javax.swing.GroupLayout.PREFERRED_SIZE, 186,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tf1, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(pf1, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(34, Short.MAX_VALUE))
);
jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
jLabel1.setText("LOGIN USER");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 218,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(66, 66, 66))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addGap(35, 35, 35)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 73,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48,
Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void tf1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void pf1KeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
login();
}
}
private void tf1KeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
pf1.requestFocus();
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Login().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPasswordField pf1;
private javax.swing.JTextField tf1;

2.

Class Mainform
package kasir.main;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import kasir.master.Invbahan;
import kasir.master.Menu;
import kasir.master.NamaDiskon;
import kasir.report.Report;
import kasir.sistem.Log;
import kasir.sistem.LogForm;
import kasir.sistem.User;
import kasir.utils.Koneksi;
import kasir.utils.Meja;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author Handya
*/
public class MainForm extends javax.swing.JFrame {
/**
* Creates new form MainForm
*/
public static String nama_op;
int lvl;
public void namaOP(String op) {
this.nama_op = op;
Meja m = new Meja();
m.namaOP(op);
}
public void Master(int lvl) {
if (lvl == 0) {
jMenu1.setEnabled(true);
jMenu3.setEnabled(true);
jMenu4.setEnabled(true);
} else if (lvl == 1) {
jMenuItem9.setVisible(false);
} else {
jMenu1.setEnabled(false);
jMenu3.setEnabled(false);
jMenu4.setEnabled(false);
}
}

Statement stat;
ResultSet rs;
Statement st;
Statement sta;
public void resetFaktur() {
Date d = new Date();
SimpleDateFormat sd = new SimpleDateFormat("dd/MM/yyyy");
String hari = sd.format(d);
String h = null;
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from maintenance";
rs = stat.executeQuery(q);
while (rs.next()) {
h = rs.getString(1);
}
if (hari.equals(h)) {
String qu = "delete from faktur";
stat.executeUpdate(qu);
String que = "insert into faktur value('00000')";
stat.executeUpdate(que);
String quer = "delete from maintenance";
stat.executeUpdate(quer);
JOptionPane.showMessageDialog(this, "Faktur telah direset menjadi 00001");
}
} catch (Throwable t) {
t.printStackTrace();
}
}
public MainForm() {
initComponents();
this.setTitle("Form Utama");
this.setLocationRelativeTo(null);
resetFaktur();
}
/**
* 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() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem12 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();

jMenuItem3 = new javax.swing.JMenuItem();


jMenu3 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem5 = new javax.swing.JMenuItem();
jMenuItem13 = new javax.swing.JMenuItem();
jMenuItem14 = new javax.swing.JMenuItem();
jMenu4 = new javax.swing.JMenu();
jMenuItem6 = new javax.swing.JMenuItem();
jMenuItem9 = new javax.swing.JMenuItem();
jMenu5 = new javax.swing.JMenu();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
jMenuItem10 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jMenuBar1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jMenu1.setText("Master");

jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2
, 0));
jMenuItem1.setText("Menu makanan");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);

jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F3
, 0));
jMenuItem2.setText("Inventori");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem2);

jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F
12, 0));
jMenuItem12.setText("Jenis Diskon");
jMenuItem12.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem12ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem12);
jMenuBar1.add(jMenu1);
jMenu2.setText("Transaksi");

jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4
, 0));
jMenuItem3.setText("Kasir");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem3ActionPerformed(evt);
}
});
jMenu2.add(jMenuItem3);
jMenuBar1.add(jMenu2);
jMenu3.setText("Laporan");

jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5
, 0));
jMenuItem4.setText("Per faktur");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem4);

jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6
, 0));
jMenuItem5.setText("Per item");
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem5ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem5);

jMenuItem13.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F
1, 0));
jMenuItem13.setText("Inventori");
jMenuItem13.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem13ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem13);

jMenuItem14.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F
10, 0));
jMenuItem14.setText("Form Laporan");
jMenuItem14.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem14ActionPerformed(evt);
}

});
jMenu3.add(jMenuItem14);
jMenuBar1.add(jMenu3);
jMenu4.setText("Sistem");

jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F7
, 0));
jMenuItem6.setText("Management User");
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem6);

jMenuItem9.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F9
, 0));
jMenuItem9.setText("Log");
jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem9ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem9);
jMenuBar1.add(jMenu4);
jMenu5.setText("Help");
jMenu5.add(jSeparator2);

jMenuItem10.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F
11, 0));
jMenuItem10.setText("Logout");
jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem10ActionPerformed(evt);
}
});
jMenu5.add(jMenuItem10);
jMenuBar1.add(jMenu5);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 905, Short.MAX_VALUE)
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 452, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Master -> Menu Makanan");
new Menu().show();
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Master -> Inventori");
new Invbahan().show();
}
private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {
new NamaDiskon().show();
}
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Transaksi -> Kasir");
new Meja().show();
}
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Laporan -> Per faktur");
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Tanggal", day.format(d));
JasperPrint print = JasperFillManager.fillReport("Report/Perfaktur.jasper", map,
Koneksi.con);
JasperViewer.viewReport(print, false);
} catch (Throwable e) {
JOptionPane.showMessageDialog(null, e.getMessage());

System.out.println(e.getMessage());
}
}
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Laporan -> Per item");
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Tanggal", day.format(d));
JasperPrint print = JasperFillManager.fillReport("Report/Peritem.jasper", map,
Koneksi.con);
JasperViewer.viewReport(print, false);
} catch (Throwable e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println(e.getMessage());
}
}
private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Laporan -> Inventori");
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Tanggal", day.format(d));
JasperPrint print = JasperFillManager.fillReport("Report/Inventori.jasper", map,
Koneksi.con);
JasperViewer.viewReport(print, false);
} catch (Throwable e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println(e.getMessage());
}
}
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Sistem -> Management User");
new User().show();
}
private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu
Sistem -> Log");

new LogForm().show();
}
private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {
int quest = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin logout?", "",
JOptionPane.YES_NO_OPTION);
if (quest == JOptionPane.YES_OPTION) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " logout");
dispose();
new Login().show();
}
}
private void jMenuItem14ActionPerformed(java.awt.event.ActionEvent evt) {
new Report().show();
Date d = new Date();
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka form
laporan");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {


java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainForm().setVisible(true);
}
});
}
public static javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
public static javax.swing.JMenu jMenu3;
public static javax.swing.JMenu jMenu4;
public static javax.swing.JMenu jMenu5;
private javax.swing.JMenuBar jMenuBar1;
public static javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem10;
private javax.swing.JMenuItem jMenuItem11;
public static javax.swing.JMenuItem jMenuItem12;
private javax.swing.JMenuItem jMenuItem13;
private javax.swing.JMenuItem jMenuItem14;
public static javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
public static javax.swing.JMenuItem jMenuItem9;
private javax.swing.JPopupMenu.Separator jSeparator2;
3.

Class Transaksi
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {
try {
int h = 0;
String q = "select count(*) from tabel_pesanan_sementara where Meja='" +
no_meja.getText() + "'";
rs = stat.executeQuery(q);
while (rs.next()) {
h = rs.getInt(1);
}
if (h == 0) {
faktur();
}
} catch (Throwable t) {
}
meja();
}

public void kembali() {


Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jm = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jm.format(d), "Operator: " + nama_op + " kembali ke menu
utama");
dispose();
}
public void cetak() {
if (bayar.getText().equals("0")) {
JOptionPane.showMessageDialog(this, "Anda belum melakukan pembayaran", "",
JOptionPane.WARNING_MESSAGE);
} else {
nama_op = operator.getText();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jm = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jm.format(d), "Operator: " + nama_op + " mencetak bill");
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "update tabel_pesanan set Bayar=" + Integer.parseInt(bayar.getText()) + " ,"
+ "Kembali=" + Integer.parseInt(kembali.getText()) + ", Grand=" +
Integer.parseInt(grandtotal.getText())
+ ", Subtotal=" + Integer.parseInt(subtotal.getText()) + " where Faktur='" +
Nofaktur.getText() + "'";
stat.executeUpdate(q);
initPesan();
Map<String, Object> map = new HashMap<String, Object>();
map.put("No Faktur", Nofaktur.getText());
JasperPrint print = JasperFillManager.fillReport("Report/Nota.jasper", map,
Koneksi.con);
JasperPrintManager.printPage(print, 0, false);
String qu = "delete from tabel_pesanan_sementara where Faktur='" + Nofaktur.getText()
+ "'";
stat.executeUpdate(qu);
initPesan();
} catch (Throwable t) {
t.printStackTrace();
}
}
}
private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {
cetak();
}
private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {
new Diskon().show();
}
private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {
new Bayar().show();
dispose();

//new Meja().show();
}
private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {
nama_op = operator.getText();
try {
Map map = new HashMap();
JasperPrint print = JasperFillManager.fillReport("Report/Drawer.jasper", map,
Koneksi.con);
JasperPrintManager.printPage(print, 0, false);
} catch (Throwable t) {
t.printStackTrace();
}
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka cash
drawer");
}
private void NofakturActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jenisItemStateChanged(java.awt.event.ItemEvent evt) {
if (jenis.getSelectedItem().toString().equals("")) {
Diskon.setText("0");
} else {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select Jumlah from jenisdiskon where Jenis='" +
jenis.getSelectedItem().toString() + "'";
ResultSet rs = stat.executeQuery(q);
while (rs.next()) {
Diskon.setText(rs.getString(1));
}
} catch (Throwable t) {
}
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ok();
}
private void tSementaraMouseClicked(java.awt.event.MouseEvent evt) {
jButton3.requestFocus();
int data = tSementara.getSelectedRow();
Kode.setText((String) tSementara.getValueAt(data, 0));
Jumlah.setText((String) tSementara.getValueAt(data, 3));
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
int h = 0;

String q = "select count(*) from tabel_pesanan_sementara where Meja='" +


no_meja.getText() + "'";
rs = stat.executeQuery(q);
while (rs.next()) {
h = rs.getInt(1);
}
if (h == 0) {
// faktur();
}
} catch (Throwable t) {
}
kembali();
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
hapus();
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
gabung();
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
pindah();
}
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {
try {
int h = 0;
String q = "select count(*) from tabel_pesanan_sementara where Meja='" +
no_meja.getText() + "'";
rs = stat.executeQuery(q);
while (rs.next()) {
h = rs.getInt(1);
}
if (h == 0) {
// faktur();
}
} catch (Throwable t) {
}
meja();
}
public void makanan() {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select Kode,Nama,Harga,Kategori from menu where Kategori='Makanan'";
rs = stat.executeQuery(q);
rsmd = rs.getMetaData();
kol = rsmd.getColumnCount();
bar = 0;
while (rs.next()) {
bar++;
}
String[] title = new String[kol];
String[][] isi = new String[bar][kol];

for (int i = 0; i < kol; i++) {


title[i] = rsmd.getColumnName(i + 1);
}
int a = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
for (int i = 0; i < kol; i++) {
isi[a][i] = rs.getString(i + 1);
}
a++;
}
tMenu.setModel(new DefaultTableModel(isi, title));
tMenu.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tMenu.getColumnModel().getColumn(0).setPreferredWidth(60);
tMenu.getColumnModel().getColumn(1).setPreferredWidth(310);
tMenu.getColumnModel().getColumn(2).setPreferredWidth(72);
tMenu.getColumnModel().getColumn(3).setPreferredWidth(82);
tMenu.setShowGrid(true);
tMenu.setRowHeight(22);
} catch (Throwable t) {
System.err.println(t.getMessage());
}

}
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {
cetak();
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
new Diskon().show();
nama_op = operator.getText();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jm = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jm.format(d), "Operator: " + nama_op + " memberi diskon");
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
makanan();
}
private void jButton4FocusGained(java.awt.event.FocusEvent evt) {
jButton4.setBackground(Color.GRAY);
}
private void jButton4FocusLost(java.awt.event.FocusEvent evt) {
jButton4.setBackground(new Color(190, 190, 190));
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
minuman();
}
private void jButton5FocusGained(java.awt.event.FocusEvent evt) {
jButton5.setBackground(Color.GRAY);

}
private void jButton5FocusLost(java.awt.event.FocusEvent evt) {
jButton5.setBackground(new Color(190, 190, 190));
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
lainnya();
}
private void jButton6FocusGained(java.awt.event.FocusEvent evt) {
jButton6.setBackground(Color.GRAY);
}
private void jButton6FocusLost(java.awt.event.FocusEvent evt) {
jButton6.setBackground(new Color(190, 190, 190));
}
private void tMenuMouseClicked(java.awt.event.MouseEvent evt) {
if (Nofaktur.getText().equals("00000")) {
JOptionPane.showMessageDialog(this, "Anda harus kembali ke menu utama terlebih
dahulu", "", JOptionPane.WARNING_MESSAGE);
} else {
int data = tMenu.getSelectedRow();
String kode = (String) tMenu.getValueAt(data, 0);
String nama = (String) tMenu.getValueAt(data, 1);
String q = "select * from menu where Kode='" + kode + "'";
String id = null;
try {
rs = stat.executeQuery(q);
while (rs.next()) {
id = rs.getString("id");
}
} catch (Throwable t) {
t.printStackTrace();
}
String qq = "select * from inventoribahan where Kode='" + id + "'";
int hargaO = 0;
String idd = null;
try {
rs = stat.executeQuery(qq);
while (rs.next()) {
idd = rs.getString("Kode");
hargaO = rs.getInt("harga_ons");
}
} catch (Throwable t) {
t.printStackTrace();
}
if (id.equals(idd)) {
Kode.setText(kode);
harga.setText(String.valueOf(hargaO));
} else {
Kode.setText(kode);
}
Jumlah.requestFocus();
Jumlah.selectAll();

}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
Bayar b = new Bayar();
// b.bayar.setRequestFocusEnabled(true);
//b.bayar.selectAll();
b.show();
dispose();
//new Meja().show();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Transaksi().setVisible(true);
}
});
}
// Variables declaration - do not modify

private javax.swing.JTextField Diskon;


private javax.swing.JLabel Jam;
private javax.swing.JTextField Jumlah;
private javax.swing.JTextField Kode;
private javax.swing.JMenuBar MenuBar;
public static javax.swing.JTextField Nofaktur;
public static javax.swing.JLabel bayar;
private javax.swing.JTextField cari;
public static javax.swing.JLabel diskon;
public static javax.swing.JLabel grandtotal;
private javax.swing.JTextField harga;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton11;
private javax.swing.JButton jButton12;
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.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 jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel9;
private javax.swing.JMenu jMenu2;
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 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.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;

private javax.swing.JPopupMenu.Separator jSeparator3;


private javax.swing.JPopupMenu.Separator jSeparator4;
private javax.swing.JPopupMenu.Separator jSeparator5;
private javax.swing.JComboBox jenis;
public static javax.swing.JLabel kembali;
public static javax.swing.JLabel no_meja;
private javax.swing.JLabel no_meja0;
public static javax.swing.JLabel operator;
public static javax.swing.JLabel subtotal;
private javax.swing.JTable tMenu;
public static javax.swing.JTable tSementara;
private javax.swing.JLabel tanggal;
4.

Class Invbahan
package kasir.master;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import kasir.main.MainForm;
import kasir.sistem.Log;
import kasir.utils.Koneksi;
/**
*
* @author Handya
*/
public class Invbahan extends javax.swing.JFrame {
Statement stat;
ResultSet rs;
ResultSetMetaData rsmd;
int bar, kol;
public void init() {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from inventoribahan";
rs = stat.executeQuery(q);
rsmd = rs.getMetaData();
kol = rsmd.getColumnCount();
bar = 0;
while (rs.next()) {
bar++;
}
String[] title = new String[kol];
String[][] isi = new String[bar][kol];
title[0] = "Kode";

title[1] = "Jenis Bahan";


title[2] = "Jumlah";
title[3] = "Jumlah(ons)";
title[4] = "Mutasi";
title[5] = "Mutasi(ons)";
title[6] = "Sisa";
title[7] = "Sisa(ons)";
title[8] = "Harga/ons";
int a = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
for (int i = 0; i < kol; i++) {
isi[a][i] = rs.getString(i + 1);
}
a++;
}
jTable1.setModel(new DefaultTableModel(isi, title));
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(50);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(170);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(75);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(70);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(6).setPreferredWidth(68);
jTable1.getColumnModel().getColumn(7).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(8).setPreferredWidth(100);
jTable1.setShowGrid(true);
jTable1.setRowHeight(22);
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
String kd, jen;
int jum, jumons, mut, mutaons, sis, sisons, hrg;
public void icon() {
}
public void nol() {
jlh.setText("0");
mutasi.setText("0");
jlhons.setText("0");
mutons.setText("0");
sisa.setText("0");
sisaons.setText("0");
harga.setText("0");
}
public void data() {
kd = kode.getText();
jen = jns.getText();
jum = Integer.parseInt(jlh.getText());
jumons = Integer.parseInt(mutasi.getText());

mut = Integer.parseInt(jlhons.getText());
mutaons = Integer.parseInt(mutons.getText());
sis = Integer.parseInt(sisa.getText());
sisons = Integer.parseInt(sisaons.getText());
}
public Invbahan() {
initComponents();
this.setLocationRelativeTo(null);
init();
nol();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
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();
jButton5 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
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();
jLabel10 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
kode = new javax.swing.JTextField();
jns = new javax.swing.JTextField();
jlh = new javax.swing.JTextField();
harga = new javax.swing.JTextField();
cari = new javax.swing.JTextField();
jlhons = new javax.swing.JTextField();
mutasi = new javax.swing.JTextField();
mutons = new javax.swing.JTextField();
sisa = new javax.swing.JTextField();
sisaons = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
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"

}
));
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton1.setText("Tambah");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton2.setText("Hapus");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton3.setText("Ubah");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton5.setText("Reset");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton4.setText("Hapus Semua");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel1.setText("Kode");
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel2.setText("Jenis Bahan");
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel3.setText("Jumlah");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel4.setText("Jumlah (ons)");
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel5.setText("Mutasi");
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel6.setText("Mutasi (ons)");
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel7.setText("Sisa");
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel8.setText("Sisa (ons)");
jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel10.setText("Harga/ons");
jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel9.setText("Pencarian");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(24, 24, 24)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addComponent(jLabel4)
.addComponent(jLabel2)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGap(24, 24, 24)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addComponent(jns, javax.swing.GroupLayout.DEFAULT_SIZE, 59,
Short.MAX_VALUE)
.addComponent(jlh)
.addComponent(kode)
.addComponent(jlhons))
.addGap(85, 85, 85)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addComponent(jLabel7)
.addGap(53, 53, 53))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)

.addGap(36, 36, 36))


.addComponent(jLabel8)
.addComponent(jLabel6))
.addGap(31, 31, 31)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(sisaons, javax.swing.GroupLayout.PREFERRED_SIZE, 85,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(mutasi, javax.swing.GroupLayout.PREFERRED_SIZE, 85,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(mutons, javax.swing.GroupLayout.PREFERRED_SIZE, 85,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sisa, javax.swing.GroupLayout.PREFERRED_SIZE, 85,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(harga, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel9)
.addGap(18, 18, 18)
.addComponent(cari, javax.swing.GroupLayout.PREFERRED_SIZE, 127,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 143, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(23, Short.MAX_VALUE)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 273,


javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 43,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9)
.addComponent(cari, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(17, 17, 17)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel5)
.addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(mutasi, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jLabel6)
.addComponent(jns, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(mutons, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jLabel7)
.addComponent(jlh, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sisa, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jLabel8)
.addComponent(jLabel10)
.addComponent(harga, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jlhons, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sisaons, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
int data = jTable1.getSelectedRow();
kode.setText((String) jTable1.getValueAt(data, 0));
jns.setText((String) jTable1.getValueAt(data, 1));
jlh.setText((String) jTable1.getValueAt(data, 2));
mutasi.setText((String) jTable1.getValueAt(data, 3));
jlhons.setText((String) jTable1.getValueAt(data, 4));
mutons.setText((String) jTable1.getValueAt(data, 5));
sisa.setText((String) jTable1.getValueAt(data, 6));
sisaons.setText((String) jTable1.getValueAt(data, 7));
harga.setText((String) jTable1.getValueAt(data, 8));
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
kd = kode.getText();
jen = jns.getText();
jum = Integer.parseInt(jlh.getText());
jumons = Integer.parseInt(jlhons.getText());
mut = Integer.parseInt(mutasi.getText());
mutaons = Integer.parseInt(mutons.getText());
sis = Integer.parseInt(sisa.getText());
sisons = Integer.parseInt(sisaons.getText());
hrg = Integer.parseInt(harga.getText());
String q = "insert into inventoribahan values('" + kd + "','" + jen + "'," + jum + "," + jumons
+ "," + mut
+ "," + mutaons + "," + sis + "," + sisons + "," + hrg + ")";
stat.executeUpdate(q);
init();
Date d = new Date();

SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");


SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menambah
inventori bahan");
} catch (Throwable t) {
System.err.println(t.getMessage());
t.printStackTrace();
}
}
String nama_op = MainForm.nama_op;
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from inventoribahan where Kode='" + kode.getText() + "'";
stat.executeUpdate(q);
init();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus
inventori bahan");
} catch (Throwable t) {
t.printStackTrace();
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
kd = kode.getText();
jen = jns.getText();
jum = Integer.parseInt(jlh.getText());
jumons = Integer.parseInt(jlhons.getText());
mut = Integer.parseInt(mutasi.getText());
mutaons = Integer.parseInt(mutons.getText());
sis = Integer.parseInt(sisa.getText());
sisons = Integer.parseInt(sisaons.getText());
hrg = Integer.parseInt(harga.getText());
String q = "update inventoribahan set Jenis='" + jen + "',jumlah="
+ jum + ",jum_ons=" + jumons + ",mutasi=" + mut + ",mutasi_ons="
+ mutaons + ",sisa=" + sis + ",sisa_ons=" + sisons + ", harga_ons=" + hrg + " where
Kode='" + kd + "'";
stat.executeUpdate(q);
init();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " mengubah value
pada inventori bahan");
} catch (Throwable t) {
t.printStackTrace();
}
}

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


try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "update inventoribahan set jumlah=0,jum_ons=0,mutasi=0,mutasi_ons=0";
stat.executeUpdate(q);
init();
} catch (Throwable t) {
t.printStackTrace();
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
int que = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin menghapus semua
data?", "", JOptionPane.YES_NO_OPTION);
if (que == JOptionPane.NO_OPTION) {
return;
} else {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from inventoribahan";
stat.executeUpdate(q);
init();
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus isi
inventori bahan");
} catch (Throwable t) {
t.printStackTrace();
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Invbahan().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextField cari;
private javax.swing.JTextField harga;
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.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
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 jlh;
private javax.swing.JTextField jlhons;
private javax.swing.JTextField jns;
private javax.swing.JTextField kode;
private javax.swing.JTextField mutasi;
private javax.swing.JTextField mutons;
private javax.swing.JTextField sisa;
private javax.swing.JTextField sisaons;

5.

Class Menu
package kasir.master;
import java.awt.Image;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import kasir.main.MainForm;
import kasir.sistem.Log;
import kasir.utils.Koneksi;
/**
*
* @author Handya
*/
public class Menu extends javax.swing.JFrame {
/**
* Creates new form Menu
*/
Statement stat;
ResultSet rs;
ResultSetMetaData rsmd;
int bar, kol;
public void init() {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from menu";
rs = stat.executeQuery(q);
rsmd = rs.getMetaData();
kol = rsmd.getColumnCount();
bar = 0;
while (rs.next()) {
bar++;
}
String[] title = new String[kol];
String[][] isi = new String[bar][kol];
for (int i = 0; i < kol; i++) {
title[i] = rsmd.getColumnName(i + 1);
}
int a = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
for (int i = 0; i < kol; i++) {
isi[a][i] = rs.getString(i + 1);
}
a++;
}
jTable1.setModel(new DefaultTableModel(isi, title));

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(65);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(70);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(450);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(147);
jTable1.getColumnModel().getColumn(6).setPreferredWidth(148);
jTable1.setShowGrid(true);
jTable1.setRowHeight(22);
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
public void jumlahMeja() {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from meja";
rs = stat.executeQuery(q);
while (rs.next()) {
tMeja.setText(rs.getString(1));
}
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
String kd, idd;
String nm;
int hr, j1, j2;
String kat;
public void data() {
kd = kode.getText();
nm = nama.getText();
hr = Integer.parseInt(harga.getText());
kat = kategori.getSelectedItem().toString();
idd = id.getText();
j1 = Integer.parseInt(jlh1.getText());
j2 = Integer.parseInt(jlh2.getText());
}
public void clear() {
kode.setText("");
nama.setText("");
harga.setText("");
cari.setText("");
jlh1.setText("0");
jlh2.setText("0");
id.setText("");
}
public void validasi() {
if (kode.getText().isEmpty() || nama.getText().isEmpty() || harga.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Field tidak boleh kosong", "",
JOptionPane.WARNING_MESSAGE);

}
}
public Menu() {
initComponents();
this.setLocationRelativeTo(null);
jumlahMeja();
init();
}
String nama_op = MainForm.nama_op;
/**
* 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();
jButton5 = new javax.swing.JButton();
jLabel7 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
kategori = new javax.swing.JComboBox();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jCheckBox1 = new javax.swing.JCheckBox();
bMeja = new javax.swing.JButton();
cari = new javax.swing.JTextField();
kode = new javax.swing.JTextField();
jlh2 = new javax.swing.JTextField();
jlh1 = new javax.swing.JTextField();
nama = new javax.swing.JTextField();
id = new javax.swing.JTextField();
harga = new javax.swing.JTextField();
tMeja = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jTable1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
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},


{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Kode", "Nama", "Harga", "Kategori"
}
));
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton1.setText("Tambah");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton2.setText("Hapus");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton3.setText("Ubah");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton4.setText("Baru");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

jButton5.setText("Hapus Semua");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel7.setText("Id");
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("Kode");
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel2.setText("Nama menu");
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel8.setText("Jumlah1");
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel3.setText("Kategori");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel4.setText("Harga");
jLabel9.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel9.setText("Jumlah2");
kategori.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
kategori.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Makanan",
"Minuman", "Lainnya" }));
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel5.setText("Pencarian");
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jLabel6.setText("Apakah anda ingin mengubah jumlah meja?");
jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox1ActionPerformed(evt);
}
});
bMeja.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
bMeja.setText("Simpan");
bMeja.setEnabled(false);
bMeja.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bMejaActionPerformed(evt);
}
});
cari.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
cariKeyTyped(evt);

}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1014,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(8, 8, 8)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel8)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jlh1, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(nama, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(id, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(58, 58, 58)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(jLabel9)
.addComponent(jLabel3))

.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(kategori, javax.swing.GroupLayout.PREFERRED_SIZE,
158, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jlh2, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(harga, javax.swing.GroupLayout.PREFERRED_SIZE, 159,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(54, 54, 54)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jCheckBox1)
.addGap(18, 18, 18)
.addComponent(tMeja, javax.swing.GroupLayout.PREFERRED_SIZE, 108,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(33, 33, 33)
.addComponent(bMeja))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 77,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(56, 56, 56)
.addComponent(cari, javax.swing.GroupLayout.PREFERRED_SIZE, 133,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel6)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 183,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 410,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(jLabel9)

.addComponent(jLabel5)
.addComponent(jlh2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cari, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(id, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel4)
.addComponent(harga, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(8, 8, 8)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(kategori, javax.swing.GroupLayout.PREFERRED_SIZE,
29, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(nama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel8)
.addComponent(jlh1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(jLabel6)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jCheckBox1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tMeja, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bMeja)))))
.addContainerGap(50, Short.MAX_VALUE))
);

pack();
}// </editor-fold>
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
id.requestFocus();
int data = jTable1.getSelectedRow();
id.setText((String) jTable1.getValueAt(data, 0));
nama.setText((String) jTable1.getValueAt(data, 1));
nama.setText((String) jTable1.getValueAt(data, 2));
jlh1.setText((String) jTable1.getValueAt(data, 3));
jlh2.setText((String) jTable1.getValueAt(data, 4));
harga.setText((String) jTable1.getValueAt(data, 5));
kategori.setSelectedItem((String) jTable1.getValueAt(data, 6));
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menambah menu
makanan");
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
data();
String q = "insert into menu values('" + idd + "','" + kd + "','" + nm + "'," + j1 + "," + j2 + ","
+ hr + ",'" + kat + "')";
stat.executeUpdate(q);
init();
clear();
} catch (Throwable t) {
JOptionPane.showMessageDialog(this, "Menu gagal ditambah\n" + t.getMessage(), "",
JOptionPane.ERROR_MESSAGE);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (nama.getText().isEmpty() || nama.getText().isEmpty() || harga.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Field tidak boleh kosong", "",
JOptionPane.WARNING_MESSAGE);
} else {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus menu
makanan");
data();
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from menu where kode='" + kd + "'";
stat.executeUpdate(q);
init();
clear();
} catch (Throwable t) {

JOptionPane.showMessageDialog(this, "Menu gagal dihapus\n" + t.getMessage(), "",


JOptionPane.ERROR_MESSAGE);
}
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if (nama.getText().isEmpty() || nama.getText().isEmpty() || harga.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Field tidak boleh kosong", "",
JOptionPane.WARNING_MESSAGE);
} else {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " mengubah menu
makanan");
data();
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "update menu set id='" + idd + "',nama='" + nm + "',Jumlah1=" + j1 + ","
+ "Jumlah2=" + j2 + ",harga=" + hr + ",kategori='" + kat
+ "' where kode='" + kd + "'";
stat.executeUpdate(q);
init();
clear();
} catch (Throwable t) {
JOptionPane.showMessageDialog(this, "Menu gagal diubah\n" + t.getMessage(), "",
JOptionPane.ERROR_MESSAGE);
}
try {
String q = "update inventori set Menu='" + nm + "' where Kode='" + kd + "'";
stat.executeUpdate(q);
String qu = "update summut set Pesanan='" + nm + "' where Kode='" + kd + "'";
} catch (Throwable t) {
}
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
clear();
init();
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from menu";
int a = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin menghapus semua
menu?", "", JOptionPane.YES_NO_OPTION);
if (a == JOptionPane.NO_OPTION) {
return;
} else {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");

SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");


Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus
semua menu makanan");
stat.executeUpdate(q);
init();
JOptionPane.showMessageDialog(this, "Tabel menu telah dikosongkan");
}
} catch (Throwable t) {
}
}
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()) {
tMeja.setEnabled(true);
bMeja.setEnabled(true);
} else {
tMeja.setEnabled(false);
bMeja.setEnabled(false);
}
}
private void bMejaActionPerformed(java.awt.event.ActionEvent evt) {
int a = Integer.parseInt(tMeja.getText());
if (a > 63) {
JOptionPane.showMessageDialog(this, "Jumlah maksimal meja adalah 63", "",
JOptionPane.WARNING_MESSAGE);
tMeja.setText("63");
} else {
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " mengubah
jumlah meja");
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
int jlh = Integer.parseInt(tMeja.getText());
String q = "update meja set jumlah='" + jlh + "'";
stat.executeUpdate(q);
JOptionPane.showMessageDialog(this, "Jumlah meja berhasil diubah");
} catch (Throwable t) {
JOptionPane.showMessageDialog(this, "Gagal melakukan perubahan \n" + t.toString(),
"", JOptionPane.ERROR_MESSAGE);
}
}
}
private void cariKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from menu where nama like '%" + cari.getText() + "%'";
rs = stat.executeQuery(q);
rsmd = rs.getMetaData();
kol = rsmd.getColumnCount();

bar = 0;
while (rs.next()) {
bar++;
}
String[] title = new String[kol];
String[][] isi = new String[bar][kol];
for (int i = 0; i < kol; i++) {
title[i] = rsmd.getColumnName(i + 1);
}
int a = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
for (int i = 0; i < kol; i++) {
isi[a][i] = rs.getString(i + 1);
}
a++;
}
jTable1.setModel(new DefaultTableModel(isi, title));
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(65);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(70);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(450);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(147);
jTable1.getColumnModel().getColumn(6).setPreferredWidth(148);
jTable1.setShowGrid(true);
jTable1.setRowHeight(22);
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Menu().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton bMeja;
private javax.swing.JTextField cari;
private javax.swing.JTextField harga;
private javax.swing.JTextField id;
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.JCheckBox jCheckBox1;
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.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jlh1;
private javax.swing.JTextField jlh2;
private javax.swing.JComboBox kategori;
private javax.swing.JTextField kode;
private javax.swing.JTextField nama;
private javax.swing.JTextField tMeja;

6.

Class User
package kasir.sistem;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import kasir.main.MainForm;
import kasir.utils.Koneksi;
/**
*
* @author Handya
*/
public class User extends javax.swing.JFrame {
/**
* Creates new form User
*/
Statement stat;
ResultSet rs;
ResultSetMetaData rsmd;
int bar, kol;
public void init() {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "select * from account where Level=1 or Level=2 order by level";
rs = stat.executeQuery(q);
rsmd = rs.getMetaData();
kol = rsmd.getColumnCount();
bar = 0;
while (rs.next()) {
bar++;
}
String[] title = new String[kol];
String[][] isi = new String[bar][kol];
title[0] = "Level";
title[1] = "Nama";
title[2] = "Username";
title[3] = "Password";
int a = 0;
rs = stat.executeQuery(q);
while (rs.next()) {
for (int i = 0; i < kol; i++) {
isi[a][i] = rs.getString(i + 1);
}
a++;
}
jTable1.setModel(new DefaultTableModel(isi, title));
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(50);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(235);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(235);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(235);

jTable1.setRowHeight(22);
} catch (Throwable t) {
System.err.println(t.getMessage());
}
}
int lvl;
String nama, un, ps;
public void data() {
lvl = Integer.parseInt(jComboBox1.getSelectedItem().toString());
nama = nm.getText();
un = user.getText();
ps = pass.getText();
}
public void clear() {
jComboBox1.setSelectedIndex(0);
nm.setText("");
pass.setText("");
user.setText("");
}
public User() {
initComponents();
this.setLocationRelativeTo(null);
init();
}
/**
* 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();
jButton5 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jComboBox1 = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
nm = new javax.swing.JTextField();
user = new javax.swing.JTextField();
pass = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jTable1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

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"
}
));
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton1.setText("Tambah");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton2.setText("Hapus");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton3.setText("Ubah");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton4.setText("Baru");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton5.setText("Hapus Semua");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}

});
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("Level
:");
jComboBox1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2" }));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel2.setText("Nama
:");
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel3.setText("Username :");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel4.setText("Password :");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 697,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 128,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))))
.addGroup(layout.createSequentialGroup()
.addGap(175, 175, 175)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 78,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(nm, javax.swing.GroupLayout.PREFERRED_SIZE, 200,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE, 200,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE, 200,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 228,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(nm, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(15, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
String nama_op = MainForm.nama_op;

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


int data = jTable1.getSelectedRow();
jComboBox1.setSelectedItem((String) jTable1.getValueAt(data, 0));
nm.setText((String) jTable1.getValueAt(data, 1));
user.setText((String) jTable1.getValueAt(data, 2));
pass.setText((String) jTable1.getValueAt(data, 3));
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
data();
if (nm.getText().isEmpty() || user.getText().isEmpty() || pass.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Field tidak boleh kosong", "",
JOptionPane.WARNING_MESSAGE);
} else {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "insert into account values(" + lvl + ",'" + nama + "','" + un + "','" + ps + "')";
stat.executeUpdate(q);
init();
clear();
JOptionPane.showMessageDialog(this, "Data user berhasil ditambah");
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menambah
data pengguna");
} catch (Throwable t) {
JOptionPane.showMessageDialog(this, "Gagal menambah data \n" + t.getMessage(), "",
JOptionPane.ERROR_MESSAGE);
}
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
data();
if (nm.getText().isEmpty() || user.getText().isEmpty() || pass.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Gagal menghapus data \n Field tidak boleh
kosong", "", JOptionPane.WARNING_MESSAGE);
} else {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from account where nama='" + nm.getText() + "'";
stat.executeUpdate(q);
init();
clear();
JOptionPane.showMessageDialog(this, "Data berhasil dihapus");
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus
data pengguna");
} catch (Throwable t) {
JOptionPane.showMessageDialog(this, "Gagal menghapus data\n" + t.getMessage(), "",
JOptionPane.ERROR_MESSAGE);

}
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
data();
if (nm.getText().isEmpty() || user.getText().isEmpty() || pass.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Gagal mengubah data \n Field tidak boleh kosong",
"", JOptionPane.WARNING_MESSAGE);
} else {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "update account set level =" + lvl + ", username='" + un + "', password='" + ps
+ "' where nama='" + nama + "'";
stat.executeUpdate(q);
init();
clear();
JOptionPane.showMessageDialog(this, "Data berhasil diubah");
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " mengubah data
pengguna");
} catch (Throwable t) {
t.printStackTrace();
}
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
clear();
nm.setRequestFocusEnabled(true);
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
int quest = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin mengosongkan
tabel?", "", JOptionPane.YES_NO_OPTION);
if (quest == JOptionPane.YES_OPTION) {
try {
Koneksi.Connection();
stat = Koneksi.con.createStatement();
String q = "delete from account where level=1 or level=2";
stat.executeUpdate(q);
init();
JOptionPane.showMessageDialog(this, "Tabel berhasil dikosongkan");
Date d = new Date();
SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus
semua data pengguna");
} catch (Throwable t) {
}
}
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new User().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.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;

private javax.swing.JTextField nm;


private javax.swing.JTextField pass;
private javax.swing.JTextField user;

Anda mungkin juga menyukai