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 NIM : MACHMUD TAHNIHAN ISMA ROHMAT : 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. 6. 7. 8. Ibu Yunita, ST., M.Sc selaku Dosen Pembimbing Tugas Akhir. Ibu Mariana Syamsudin, ST., MT selaku Dosen Penguji Tugas Akhir. Bapak Dr. Ardi Marwan selaku Dosen Penguji Tugas Akhir. 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 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. kritik dan saran yang sifatnya

Pontianak,

Juli 2013

Penulis

DAFTAR ISI
HALAMAN PERNYATAAN ................................................................................................... iii RINGKASAN .........................................................................................................................iv DAFTAR ISI..........................................................................................................................vii DAFTAR GAMBAR................................................................................................................ix DAFTAR TABEL .................................................................................................................... x BAB I .................................................................................................................................... 1 PENDAHULUAN ................................................................................................................... 1 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. Latar Belakang Masalah ...................................................................................... 1 Rumusan Masalah ............................................................................................... 2 Ruang Lingkup Masalah ...................................................................................... 2 Tujuan Tugas Akhir .............................................................................................. 2 Manfaat Tugas Akhir ........................................................................................... 3 Metodologi.......................................................................................................... 3 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 dan dalam

keterampilan yang didapat selama duduk di bangku perkuliahan

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

Trans aksi Kasir

Lapora n Per Faktur

Laporan Form Laporan

Lapor an Per Item

Sistem Manageme nt User

Input Bahan Makana n

Input Diskon

Tampil kan Entri Pesana n

Input Data User

Cetak Laporan

Ambil Data Makana n

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 1,2 100 Jenis Kunci level nama int Varchar Id User 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 Field Id Kode Tipe Data Varchar Varchar 10 10 Id makanan/minuman kodemakanan/minuman Primary Ukuran Keterangan Jenis 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 Jumlah Jum_ons Varchar Int Int 10 10 10 Jenis bahan Jumlah bahan Jumlah bahan dalam ons Mutasi Int 10 Pemakaian bahan Mutasi_ons Int 10 Pemakaian bahan dalam ons Sisa Sisa_ons Int int 10 10 Sisa bahan 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 5 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 Meja Kode Pesanan Varchar Varchar Varchar Varchar 10 10 10 100 Faktur transaksi No meja Kode transaksi Pesanan dipesan Harga Jumlah Int Int 10 10 Harga transaksi Jumlah pesanan yang

21

Dis

Int

Jumlah dalam %

diskon

Diskon

Int

10

Jumlah

diskon

dalam harga Keterangan Total Tanggal Varchar Int Varchar 100 10 20 Jumlah harga Tanggal transaksi Jam Kasir Varchar Varchar 20 50 Jam transaksi 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 F2

Inventori
Jenis Diskon

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

1 5

2 6

3 7

4 8

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 Bayar

No Meja

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 : 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. Belum menggunakan konsep client server Masih ada yang menggunakan input manual

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;