Aplikasi Kasir Rumah Makan Menggunakan Java dan MySQL TUGAS AKHIR
Diajukan Sebagai Persyaratan Untuk Menyelesaikan Pendidikan Diploma III Pada Program Studi Informatika Jurusan Teknik Elektro Politeknik Negeri Pontianak
Oleh:
MACHMUD TAHNIHAN ISMA ROHMAT NIM. 3201016046
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI PONTIANAK 2013
LEMBAR PENGESAHAN APLIKASI KASIR RUMAH MAKAN MENGGUNAKAN JAVA DAN MySQL
Oleh: NAMA
: MACHMUD TAHNIHAN ISMA ROHMAT
NIM
: 3201016046
Tugas akhir ini telah diterima dan disahkan sebagai salah satu syarat untuk menyelesaikan Program Pendidikan Diploma III pada Program Studi Teknik Informartika Jurusan Teknik Elektro Politeknik Negeri Pontianak.
Disahkan oleh:
Ketua Jurusan
Pembimbing
H. Irawan Suharto, ST NIP.197103111998011001
Yunita, ST., M.Sc NIP. 198106272008012014
Mengetahui, Direktur Politeknik Negeri Pontianak
Mahyus, S.Pd., SE., MM NIP. 197002011996051001
HALAMAN PERNYATAAN Tugas akhir ini telah dipertahankan di depan tim penguji Jurusan Teknik Informatika pada tanggal 16 Juli 2013 dan dinyatakan memenuhi persyaratan untuk mata kuliah tugas akhir.
Tim Penguji Ketua
Yunita, ST., M.Sc NIP. 198106272008012014
Penguji I
Dr. Ardi Marwan NIP. 197408141999031002
RINGKASAN Aplikasi Kasir Rumah Makan Menggunakan JAVA dan MySQL Oleh: Machmud Tahnihan Isma Rohmat Banyak rumah makan yang menggunakan mesin kasir yang sederhana untuk melakukan perhitungan transaksi pembayaran. Namun tidak jaran gmesinmesin seperti ini adalah mesin yang hanya dapat melakukan perhitungan saja tanpa dapat menyimpan berkas transaksi yang bisa dijadikan sebaga iarsip atau laporan, sehingga pemilik tidak dapat memantau atau melihat pendapatan dari rumah makan yang dikelolanya. Berkaitan dengan hal tersebut, penulis ingi nmengangka tpembahasan tentang Aplikasi Kasir yang dapat mempermudah pekerjaan kasir baikdalam proses transaksi pembayaran maupun perekaman datanya .Dalam hal ini bahasa pemrograman yang digunakan untuk membuat aplikasi tersebut adalah JAVA dan terhubung dengan database MySQL. Dengan adanya sistem aplikasi kasir ini, diharapkan mampu membantu kinerja dari mesin kasir yang ada. Aplikasi kasir mampu menyimpan data transaksi dari penjualan rumah makan yang menggunakan aplikasi kasir ini. Kata Kunci :database , java, MySQL, kasir
PRAKATA
Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala berkat, rahmat dan hidayah-Nya, sehingga penulis dapat menyelesaikan penulisan Tugas Akhir ini yang berjudul “Aplikasi Kasir Rumah Makan Menggunakan JAVA dan MySQL”. Tujuan dari penulisan Tugas Akhir ini adalah untuk memenuhi syarat dalam menyelesaikan Program Pendidikan Diploma III Politeknik Negeri Pontianak serta mampu menciptakan sebuah aplikasi kasir rumah makan yang diharapkan dapat membantu kinerja kasir. Tugas Akhir ini dapat diselesaikan atas dorongan, bantuan dan bimbingan dari berbagai pihak, baik bantuan berupa moril maupun materil. Dalam kesempatan ini dengan segala kerendahan hati, penulis ingin menyampaikan ucapan terima kasih yang sebesar-besarnya kepada: 1.
Kedua orangtua penulis yang selalu memberi motivasi, semangat serta doa yang tulus dan ikhlas.
2.
Bapak Mahyus, S.Pd, SE., MM selaku Direktur Politeknik Negeri Pontianak.
3.
Bapak H.Irawan Suharto, ST selaku Kepala Jurusan Teknik Elektro Politeknik Negeri Pontianak.
4.
Bapak Wendhi Yuniarto, ST., MT selaku Kepala Prodi Teknik Informatika Politeknik Negeri Pontianak.
5.
Ibu Yunita, ST., M.Sc selaku Dosen Pembimbing Tugas Akhir.
6.
Ibu Mariana Syamsudin, ST., MT selaku Dosen Penguji Tugas Akhir.
7.
Bapak Dr. Ardi Marwan selaku Dosen Penguji Tugas Akhir.
8.
Seluruh staf pengajar Politeknik Negeri Pontianak khususnya di Jurusan Teknik Elektro Program Studi Teknik Informatika yang tidak bisa disebutkan namanya satu persatu.
9.
Ayu Retno Wulandari yang selalu memberikan penulis semangat dan motivasi.
10. Teman-teman di kelas VI C yang telah memberikan doa dan dukungannya.
11. Semua pihak yang tidak dapat penulis sebutkan satu persatu yang telahmemberikanbantuan baik berupa moril maupun materil, sehingga penulis dapat menyelesaikan penulisan Tugas Akhir ini. Penulis menyadari bahwa dalam penulisan Tugas Akhir ini masih terdapat banyak kekurangan dan kekeliruan. Penulis mohon kepada pembaca untuk dapat memberikan
kritik dan saran yang sifatnya
membangun. Akhir kata, semoga apa yang telah diberikan kepada penulis baik itu segala bantuan ataupun jasa, akan mendapatkan balasan dari Tuhan Yang Maha Esa dan semoga Tugas Akhir ini dapat bermanfaat bagi pembaca.
Pontianak,
Penulis
Juli 2013
DAFTAR ISI HALAMAN PERNYATAAN ................................................................................................... iii RINGKASAN .........................................................................................................................iv DAFTAR ISI..........................................................................................................................vii DAFTAR GAMBAR................................................................................................................ix DAFTAR TABEL .................................................................................................................... x BAB I .................................................................................................................................... 1 PENDAHULUAN ................................................................................................................... 1 1.1.
Latar Belakang Masalah ...................................................................................... 1
1.2.
Rumusan Masalah ............................................................................................... 2
1.3.
Ruang Lingkup Masalah ...................................................................................... 2
1.4.
Tujuan Tugas Akhir .............................................................................................. 2
1.5.
Manfaat Tugas Akhir ........................................................................................... 3
1.6.
Metodologi.......................................................................................................... 3
1.7.
Sistematika Tugas Akhir ...................................................................................... 4
BAB II ................................................................................................................................... 5 LANDASAN TEORI ................................................................................................................ 5 2.1. Pengertian Aplikasi................................................................................................... 5 2.2. Pengertian Program Kasir ........................................................................................ 5 2.3. Bahasa Pemrograman JAVA ..................................................................................... 6 2.3.1.
Kelebihan dan Kekurangan JAVA .............................................................. 10
2.4. Basis Data ............................................................................................................... 11 2.5.SQL (Structured Query Language) .......................................................................... 12 2.6. XAMPP.................................................................................................................... 13 2.6.1. Penjelasan XAMPP .......................................................................................... 13 2.6.2. Bagian-Bagian Penting Dari XAMPP ................................................................ 15 BAB III ................................................................................................................................ 16 ANALISIS DAN PERANCANGAN SISTEM ............................................................................ 16 3.1. Analisis Kebutuhan Perangkat Lunak ..................................................................... 16 3.1.1. Diagram Alur Admin ........................................................................................ 16 3.1.2. Diagram Alur User Level 2 ............................................................................... 18
3.2. Analisis Basis Data .................................................................................................. 19 3.2.1. Struktur Tabel ................................................................................................. 19 3.2.2. Desain Antar Muka.......................................................................................... 23 BAB IV................................................................................................................................ 27 IMPLEMENTASI ................................................................................................................. 27 4.1. Gambaran Umum Program yang Ada .................................................................... 27 4.2. Pembuatan Database ............................................................................................. 27 4.3. Implementasi ......................................................................................................... 27 4.3.1.Form login ........................................................................................................ 26 4.3.2. Form Utama .................................................................................................... 26 4.3.2.2. Transaksi ...................................................................................................... 29 BAB V................................................................................................................................. 36 PENUTUP ........................................................................................................................... 36 5.1. Kesimpulan ............................................................................................................. 36 5.2 Saran ....................................................................................................................... 36 Daftar Pustaka................................................................................................................... 38 LAMPIRAN ......................................................................................................................... 39
DAFTAR GAMBAR
Gambar 2.1 Diagram Alur Admin ........................................................................ 17 Gambar 2.2 Diagram Alur User Level 2 ............................................................... 18 Gambar 2.3 Form Login ........................................................................................ 23 Gambar 2.4 Form Utama....................................................................................... 23 Gambar 2.5 Form Pilih Meja ................................................................................ 24 Gambar 2.6 Form Transaksi.................................................................................. 24 Gambar 4.1. Form Login User .............................................................................. 26 Gambar 4.2. Form Utama...................................................................................... 26 Gambar 4.3 Form Master ...................................................................................... 27 Gambar 4.4 Form Inventori Menu Makanan ........................................................ 27 Gambar 4.5 Form Inventori Bahan ....................................................................... 28 Gambar 4.6 Form Jenis Diskon............................................................................. 29 Gambar 4.7 Form Pilih Meja ................................................................................ 29 Gambar 4.8 Form Transaksi Kasir ........................................................................ 30 Gambar 4.9 Form Gabung Meja ........................................................................... 31 Gambar 4.10 Form Bayar ...................................................................................... 31 Gambar 4.11 Form Laporan Per Faktur ................................................................ 32 Gambar 4.12 Form Laporan Per Item ................................................................... 32 Gambar 4.13 Form Laporan Inventori .................................................................. 33 Gambar 4.14 Form Laporan .................................................................................. 34 Gambar 4.15 Form Management User .................................................................. 34
DAFTAR TABEL Tabel 3.1 Account ................................................................................................. 19 Tabel 3.2 Menu ..................................................................................................... 19 Tabel 3.3 Inventori Bahan ..................................................................................... 20 Tabel 3.4 Jenis Diskon .......................................................................................... 21 Tabel 3.5 Pesanan.................................................................................................. 21 Tabel 3.6 Log ........................................................................................................ 22
BAB I PENDAHULUAN
1.1.
Latar Belakang Masalah Banyak rumah makan yang menggunakan mesin kasir yang sederhana untuk melakukan perhitungan transaksi pembayaran.Namun tidak jarang mesin-mesin seperti ini adalah mesin yang hanya dapat melakukan perhitungan saja tanpa dapat menyimpan berkas transaksi yang bisa dijadikan sebagai arsip atau laporan, sehingga pemilik tidak dapat memantau/melihat pendapatan dari rumah makan yang dikelolanya. Salah satunya yang biasa digunakan adalah mesin kasir cash register.Cash register atau sering disebut dengan Mesin kasir elektronik adalah mesin kasir berbentuk compact yang sudah didesain untuk mudah digunakan bahkan oleh orang awam sekalipun. Pada cash register jenis ini, terdapat deretan tomboltombol yang didesain untuk mewakili tiap produk tertentu. Juga terdapat kumpulan tombol numerik angka, untuk memasukkan harga ataupun memilih kode barang tertentu. Salah satu kekurangan dari mesin kasir elektronik adalah laporan yang dihasilkan hanya merupakan laporan sederhana tentang hasil penjualan. Mesin kasir elektronik juga tidak menyediakan fitur manajemen inventori stok atau persediaan barang. Selain itu Alasan keamanan juga perlu diperhitungkan karena mesin kasir seperti ini pada umumnya tidak bisa mengatur hak akses untuk siapa saja yang boleh atau tidak boleh menggunakannya. Oleh karena itu penulis ingin mengangkat pembahasan tentang Aplikasi Kasir yang dapat mempermudah baik dalam proses transaksi pembayaran maupun perekaman datanya. Dengan adanya aplikasi kasir ini, diharapkan dapat membantu pemilik dalam mengelola usaha rumah makannya. Karena aplikasi kasir ini memberikan laporan langsung yang disimpan kedalam database.
1
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.
2
1.5.
Manfaat Tugas Akhir 1. Bagi Pemilik dan Pelanggan Mempermudah atau mempercepat dalam proses transaksi pembayaran dan memudahkan pemilik dalam melakukan pengontrolan data. 2. Bagi Mahasiswa Melatih
mahasiswa
dalam
menerapkan
ilmu
pengetahuan
keterampilan yang didapat selama duduk di bangku perkuliahan
dan dalam
pembuatan aplikasi yang menggunakan bahasa pemrograman Java berbasis dekstop. 3. Akademis/Universitas Tugas akhir ini diharapkan dapat memberikan manfaat atau pengetahuan khususnya mengenai pembuatan aplikasi dengan menggunakan Java. 1.6.
Metodologi Teknik pengumpulan data yang digunakan penulis dalam penyusunan Tugas Akhir adalah sebagai berikut : 1. Metode Literatur Metodi ini dilaksanakan dengan melakukan studi di perpustakaan dan melalui hasil penelitian yang relevan melalui artikel-artikel yang di dapat melalui internet, serta mempelajari lebih dalam tentang Java. 2. Metode Implementasi Pada tahap ini penulis melakukan pengimplementasian metode desain aplikasi menggunakan Java. 3. Metode Pengujian dan Analisa Pengujian dilakukan dengan melakukan tanya jawab kepada pihak yang bersangkutan
dalam
penulisan
tugas
akhir
ini.
Setelah
itu
menganalisiskekurangan apa saja yang timbul saat selesai melakukan pengujian.
3
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.
4
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.
5
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
6
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
7
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
8
mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat di bahasa yang memungkinkan alokasi dinamis. Java mempunyai mekanisme exception-handling yang ampuh. Exception-handling menyediakan cara untuk memisahkan antara bagian penanganan kesalahan dengan bagian kode normal sehingga menuntun ke struktur kode program yang lebih bersih dan menjadikan aplikasi lebih tegar. Ketika kesalahan yang serius ditemukan, program Java menciptakan exception. Exception dapat ditangkap dan dikelola program tanpa resiko membuat sistem menjadi turun. Program Java mendukung native method yaitu fungsi ditulis di bahasa lain, biasanya C/C++. Dukungan native method memungkinkan pemrogram menulis fungsi yang dapat dieksekusi lebih cepat dibanding fungsi ekivalen di java. Native method secara dinamis akan di-link ke program java, yaitu diasosiasikan dengan program saat berjalan. Selain itu keuntungan menggunakan bahasa pemrograman Java antara lain memori pada Java secara otomatis dilengkapi garbage collector yang berfungsi mendealokasi memori yang tidak diperlukan. Tidak ada lagi upaya yang dilakukan pemrogram untuk melakukan dispose(). Kita tidak lagi dibebani urusan korupsi memori. Java menerapkan array sebenarnya, menghilangkan keperluan aritmatika pointer yang berbahaya dan mudah menjadi salah. Menghilangkan pewarisan jamak (multiple inheritance) diganti fasilitas antarmuka. Serta mudah dijalankan diberbagai platform. Salah satu keunggulan java yang lain adalah Grafical User Interface (GUI) adalah salah satu kemampuan Java dalam mendukung dan manajemen antarmuka berbasis grafis. Tampilan grafis yang akan ditampilkan terhubung dengan program serta tempat penyimpanan data. Elemen dasar di Java untuk penciptan tampilan berbasis grafis adalah dua paket yaitu AWT dan Swing. Abstract Windowing Toolkit (AWT), atau disebut juga “Another Windowing Toolkit”, adalah pustaka windowing bertujuan umum dan multiplatform serta menyediakan sejumlah kelas untuk membuat GUI di Java. Dengan AWT, 9
dapat membuat window, menggambar, manipulasi gambar, dan komponen seperti Button, Scrollbar, Checkbox, TextField, dan menu pull-down. Penggunaan komponen AWT ditandai dengan adanya instruksi : import java.awt.*; Swing merupakan perbaikan kelemahan di AWT. Banyak kelas swing menyediakan komponen alternatif terhadap AWT. Contohnya kelas JButton swing menyediakan fungsionalitas lebih banyak dibanding kelas Button. Selain itu komponen swing umumnya diawali dengan huruf “J”, misalnya JButton, JTextField, JFrame, JLabel, JTextArea, JPanel, dan sebagainya. Teknologi swing menggunakan dan memperluas gagasangagasan AWT. Sementara, penggunaan komponen Swing ditandai dengan adanya instruksi : import javax.swing.*; Beberapa perbedaan AWT dan Swing, AWT merupakan komponen heavyweight (kelas berat) sedangkan Swing lightweight (kelas ringan). Swing memiliki lebih banyak komponen. Fasilitas Swing Look and Feel : Metal, Windows, Motif. Komponen Swing berdasar model-view, yaitu suatu cara pengembangan komponen dengan pemisahan penyimpanan dan penanganan data dari representasi visual data. Bahasa
pemrograman
Java
merupakan
salah
satu
bahasa
pemrograman yang umum digunakan untuk mengembangkan aplikasi basis data yang dibuat menggunakan MySQL. 2.3.1. Kelebihan dan Kekurangan JAVA Berikut merupakan kelebihan dan kekurangan yang ada pada bahasa pemrograman JAVA : a. Kelebihan 1. Multiplatform Java dapat dijalankan dibeberapa sistem operasi komputer sesuai dengan prinsip tulis, jalankan dimana saja.Kelebihan ini memungkinkan programmer untuk menulis sebuah kode program lalu dikompilasi (diubah dari bahasa manusia menjadi
10
bahasa yang dimengerti mesin) sekali lalu hasilnya dapat dijalankan di atas beberapa platform. 2. Library kelas yang lengkap Java terkenal dengan kelengkapan library(kumpulan program yang disertakan dalam bahasa pemrograman Java) yang sangat memudahkan dalam penggunaannya untuk membangun sebuah aplikasi. Kelengkapan library ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat library-library baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
b. Kekurangan 1. Mudah didekompilasi Dekompilasi adalah proses pembalikan dari kode jadi menjadi kode sumber. Hal ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode dan tipe data. 2. Penggunaan memori yang banyak Peggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya sepertii C/C++ dan Pascal. Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru, tetapi menjadi masalah bagi mereka yang masih berkutat dengan mesin komputer berumur lebih dari 4 tahun. 2.4. Basis Data Basis data adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (Database Management System, DBMS). Sistem basis data dipelajari dalam ilmu informasi.
11
Konsep dasar dari basis data adalah kumpulan dari catatan-catatan, atau potongan dari pengetahuan. Sebuah basis data memiliki penjelasan terstruktur dari jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema menggambarkan obyek yang diwakili suatu basis data, dan hubungan di antara obyek tersebut. Ada banyak cara untuk mengorganisasi skema, atau memodelkan struktur basis data ini dikenal sebagai model basis data atau model data. Model yang umum digunakan sekarang adalah model relasional, yang menurut istilah Layman mewakili semua informasi dalam bentuk tabel-tabel yang saling berhubungan dimana setiap tabel terdiri dari baris dan kolom (definisi yang sebenarnya menggunakan terminologi matematika). Dalam model ini, hubungan antar tabel diwakili dengan menggunakan nilai yang sama antar tabel. Model yang lain seperti model hierarkis dan model jaringan menggunakan cara yang lebih eksplisit untuk mewakili hubungan antar tabel. Istilah basis data mengacu pada koleksi dari data-data yang saling berhubungan, dan perangkat lunaknya seharusnya mengacu sebagai sistem manajemen basis data (Database Management System/DBMS). Jika konteksnya sudah jelas, banyak administrator dan programer menggunakan istilah basis data untuk kedua arti tersebut. 2.5.SQL (Structured Query Language) SQL adalah sebuah bahasa yang digunakan untuk mengakses data dalam basis data. Secara umum bahasa ini merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya. Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama Johny Oracle yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language). Terjadi permasalahan mengenai penamaan SEQUEL, pada akhirnya IBM pun mengubah namanya menjadi SQL. Berikut ini adalah beberapa contoh bentuk deklarasi dari penggunaan basis data SQL:
12
1. CREATE DATABASE nama_basis_data; 2. CREATE TABLE nama_tabel(nama_field1 tipe_data, nama_field2 tipe_data); 3. SELECT * FROM nama_tabel WHERE kondisi; 4. INSERT
INTO
nama_tabel
(nama_field1,
nama_field2)
VALUES(value1, value2); 5. UPDATE nama_tabel SET nama_field = value WHERE kondisi; 6. DELETE FROM nama_tabel WHERE kondisi;
2.6. XAMPP X (empat sistem operasi apapun) Apache, MySQL, PHP dan Pearl atau disingkat XAMPP, adalah perangkat lunak bebas yang mendukung banyak sistem operasi. XAMPP merupakan kompilasi dari beberapa program yang berfungsi sebagai server yang dapat berdiri sendiri (localhost). Perangkat lunak ini memiliki penerjemah bahasa yang ditulis menggunakan bahasa pemrograman PHP dan Pearl. Program ini tersedia dalam GNU (General Public license) yang mudah digunakan untuk membuat aplikasi basis data berbasis client server. 2.6.1. Penjelasan XAMPP 1. X , Kenapa disebut dengan sistem operasi? karena XAMPP bisa dijalankan di 4 OS besar yang sering digunakan oleh pengguna komputer yaitu Windows, Linux, Mac OS dan Solaris. 2. A, (Apacahe) merupakan aplikasi web server. Apache ini bersifat open source yang berarti gratis dan bisa diedit oleh penggunanya. Tugas utama Apache adalah menghasilkan halaman web yang benar kepada user berdasarkan kode PHP yang dituliskan oleh pembuat halaman web. Jika diperlukan juga berdasarkan kode PHP yang dituliskan,maka dapat saja suatu basis data diakses terlebih dahulu (misalnya dalam MySQL) untuk mendukung halaman web yang dihasilkan.
13
3. M,
(MySQL),
merupakan
aplikasi
server
basis
data.
Perkembangannya disebut SQL yang merupakan kepanjangan dari Structured Query Language. SQL merupakan bahasa terstruktur yang digunakan untuk mengolah basis data. MySQL dapat digunakan untuk membuat dan mengelola basis data beserta isinya. Kita dapat memanfaatkan
MySQL
untuk
menambahkan,
mengubah,
dan
menghapus data yang berada di dalam basis data. 4. P, (PHP), bahasa pemrograman web. Bahasa pemrograman PHP merupakan bahasa pemrograman untuk membuat web yang bersifat server-side scripting. PHP memungkinkan kita untuk membuat halaman web yang bersifat dinamis. Sistem manajemen basis data yang sering digunakan bersama PHP adalah MySQL. namun PHP juga mendukung sistem manajement basis data Oracle, Microsoft Access, Interbase, d-base, PostgreSQL, dan sebagainya. 5. P, (Perl), bahasa pemrograman, pertama kali dikembangkan oleh Larry Wall di mesin Unix. Perl pertama kali dirilis pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Dua diantara karakteristik utama perl adalah penanganan teks dan berbagai jalan pintas untuk meyelesaikan persoalan-persoalan umum.Perl sangat populer di gunakan dalam program-rogram CGI (Common Gateway Interface) dan protokol internet lainnya.
14
2.6.2. Bagian-Bagian Penting Dari XAMPP Berikut merupakan bagian-bagian terpentingdari XAMPP: 1. Htdoc Folder tempat meletakkan berkas-berkas yang akan dijalankan, seperti berkas PHP, HTML dan skrip lainnya. 2. phpMyAdmin Perangkat lunak berbasis web (localhost) yang merupakan bagian untuk mengelola basis data yang ada dikomputer. 3. Kontrol Panel Berfungsi untuk mengelola layanan (service) XAMPP, seperti menghentikan layanan (stop) ataupun memulai layanan (start).
15
BAB III ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Kebutuhan Perangkat Lunak Analisis ini bertujuan untuk memperoleh semua kebutuhan sistem program kasir rumah makanyang akan dibangun. Analisis dilakukan dengan menggunakan diagram alur (flowchart) agar rangkaian proses atau prosedur sistem kasir yang akan dibangun lebih mudah dipahami. 3.1.1. Diagram Alur Admin Diagram alur (flowchart) admin ini merupakan gambaran alur atau kegiatan apa saja yang dapat dilakukan seorang admin terhadap program kasir tersebut.
16
Mulai
Login
Master Menu
Makan an Input Nama Makana n
Master Invent ori
Master Jenis Diskon
Input Bahan Makana n
Input Diskon
Trans aksi Kasir
Lapora n Per Faktur
Tampil kan Entri Pesana n
Ambil Data Makana n
Laporan Form Laporan
Cetak Laporan
Lapor an Per Item
Sistem Manageme nt User
Input Data User
Simpan data User
Pembaya ran
Simpan data makana n
Logout
Selesai
Gambar 2.1 Diagram Alur Admin
17
3.1.2. Diagram Alur User Level 2 Diagram alur (flowchart)user level 2 ini merupakan gambaran alur transaksi yang dilakukan oleh pemilik/pegawai yang menggunakan program kasir ini. Mulai
Login
Transaksi Kasir
Entri Pesanan
Pembayaran
Logout
Selesai
Gambar 2.2 Desain Diagram Alur User Level 2
18
3.2. Analisis Basis Data 3.2.1. Struktur Tabel Program kasir ini menggunakan basis data untuk menyimpan datadata dari hasil transaksi yang dilakukan. Data-data yang dihasilkan itu antara lain data user atau admin, data transaksi penjualan, data stok bahan makanan maupun minuman, data menu makanan, dan lain-lain. Agar data tersebut tidak sulit untuk ditemukan maka diperlukanlah struktur tabel untuk menampung masing-masing data tersebut. Berikut merupakan sebagian struktur tabel yang digunakan dalam pembuatan program kasir ini : 1. Tabel Account Tabel account ini berisikan informasi pengguna atau admin berupa level, nama, username, dan password. Tabel 3.1 Tabel Account Nama Field
Tipe Data
Ukuran Keterangan
Jenis Kunci
level
int
“1”,”2”
Id User
nama
Varchar
100
Nama
lengkap
pengguna username
Varchar
15
Nama pengguna
Primary key
password
Varchar
15
Kata kunci
2. Tabel Menu Tabel menu ini berisikan informasi makanan atau minuman yang ada berupa id, kode, nama, jumlah1, jumlah2, harga, dan kategori. Tabel 3.2 Tabel Menu Nama
Tipe
Ukuran Keterangan
Jenis
Field
Data
Id
Varchar
10
Id makanan/minuman
Kode
Varchar
10
kodemakanan/minuman Primary
Kunci
19
key Nama
Varchar
100
Nama makanan/minuman
Jumlah1
Int
10
Jumlah makanan/minuman
Jumlah2
Int
10
Jumlah makanan/minuman
Harga
Int
100
Harga makanan/minuman
Kategori
Varchar
100
Kategori makanan/minuman
3. Tabel Inventori Bahan Tabel inventori bahan ini berisikan tentang info bahan yang akan digunakan untuk dijadikan makanan yakni informasinya berupa kode, jenis, jumlah, jum_ons, mutasi, mutasi_ons, sisa, sisa_ons, harga_ons. Tabel 3.3 Tabel Inventori Bahan Nama Field
Tipe Data
Ukuran Keterangan
Jenis Kunci
Kode
Varchar
10
Kode bahan
Primary key
Jenis
Varchar
10
Jenis bahan
Jumlah
Int
10
Jumlah bahan
Jum_ons
Int
10
Jumlah bahan dalam ons
Mutasi
Int
10
Pemakaian bahan
Mutasi_ons
Int
10
Pemakaian bahan dalam ons
Sisa
Int
10
Sisa bahan
Sisa_ons
int
10
Sisa bahan
20
dalam ons Harga_ons
Int
10
Harga bahan dalam ons
4. Tabel Jenis Diskon Tabel jenis diskon ini berisikan info tentang diskon yang terdapat pada rumah makan.Dan isinya berupa jenis diskon dan jumlah. Tabel 3.4 Tabel Jenis Diskon Nama Field
Tipe Data
Ukuran Keterangan
Jenis Kunci
Jenis
Varchar
100
Jenis diskon
Primary key
Jumlah
int
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
Varchar
10
Faktur transaksi
Meja
Varchar
10
No meja
Kode
Varchar
10
Kode transaksi
Pesanan
Varchar
100
Pesanan
yang
dipesan Harga
Int
10
Harga transaksi
Jumlah
Int
10
Jumlah pesanan
21
Dis
Int
5
Jumlah
diskon
dalam % Diskon
Int
10
Jumlah
diskon
dalam harga Keterangan
Varchar
100
Total
Int
10
Jumlah harga
Tanggal
Varchar
20
Tanggal transaksi
Jam
Varchar
20
Jam transaksi
Kasir
Varchar
50
Nama user
6. Tabel Log Pada tabel ini berisikan tentang log atau daftar pemakaian aplikasi yang dilakukan oleh user maupun admin. Isi tabel log ini berupa tanggal, jam, kegiatan. Tabel 3.6 Tabel Log Nama Field
Tipe Data
Ukuran Keterangan
Jenis Kunci
Tanggal
Varchar
20
tanggal penggunaan program
Jam
Varchar
20
Jam penggunaan program
Kegiatan
Varchar
200
Kegiatan apa saja yang terjadi pada saat penggunaan program
22
3.2.2. Desain Antar Muka Desain antar muka bertujuan untuk menentukan rancangan form atau tampilan program yang akan dibuat. Berikut ini adalah desain antar muka fomr-form tersebut:
1. Desain Form Login User
LOGIN USER USERNAME PASSWORD
USERNAME Gambar 2. 3 Desain Form Login Form ini merupakan form utama yang tampil pada saat user menjalankan program, pada form ini user nanti akan mengisikan username dan password agar user dapat melakukan akses terhadap program ini. 2. Desain Form Utama
Master Transaksi Laporan Sistem Help Menu Makanan
Inventori Jenis Diskon
F2
F2 F2
Gambar 2.4 Desain Form Utama
23
Pada form utama ini akan berisikan menu-menu yang memiliki fungsi berbeda-beda. Form ini merupakan form utama dalam program dimana akses ke form lainnya terdapat pada form ini. 3. Desain Form Pilih Meja
1
2
3
4
5
6
7
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
No Meja
Bayar
Gambar 2.6 Desain From Transaksi Form transaksi ini merupakan form yang tampil setelah user memilih meja. Disini transaksi penjualan dilakukan.
24
BAB IV
IMPLEMENTASI
4.1. Gambaran Umum Program yang Ada Secara keseluruhan program ini
dibuat
menggunakan
bahasa
pemrograman JAVA. Untuk menampung data-data yang dihasilkan dari program ini dibutuhkan database untuk menampungnya. Program ini menggunakan MySQL untuk menampung data yang ada. 4.2. Pembuatan Database Dalam pembuatan dan pengontrolan basis data, program ini tidak hanya menggunakan MySQL. Untuk membantu dalam pembuatan dan pengontrolan basis data program ini dibantu oleh XAMPP. Pada pembuatan atau pengontrolan basis data program ini, dapat dilakukan dengan membuka web browser dan mengetikkan “localhos:81/phpmyadmin/” ke dalam alamat url yang terdapat pada web browser. 4.3. Implementasi Subbab ini akan membahas mengenai implementasi dari program yang telah dibuat dengan menggunakan bahasa pemrograman JAVA ini.
25
4.3.1.Form login
Gambar 4.1. Form Login User Ini merupakan form pertama yang muncul pada saat program dijalankan. Disini user harus mempunyai username dan password untuk melakukan akses login dan masuk kedalam program. Jika user tidak mempunyai username dan password untuk melakukan akses login, maka user harus mendaftar dahulu kepada admin yang telah memiliki akses untuk masuk kedalam program. 4.3.2. Form Utama
Gambar 4.2. Form Utama Setelah form login, user akan masuk ke dalam form utama. User dapat melihat beberapa menu yang terdapat pada menu bar di dalam form
26
utama. Masing-masing menu bar tersebut memiliki menu item yang berbeda-beda dan memiliki fungsi yang berbeda pula. Jika user login sebagai pengguna level 2, maka menu bar yang dapat di klik hanya menu bar transaksi. Sedangkan user yang dapat mengakses setiap menu bar hanyalah user yang mempunyai tingkatan level 1, dan user yang mempunyai hak akses level 1 seperti pemilik ataupun admin. 4.3.2.1 Master
Gambar 4.3 Form Master
Pada menu bar master ini terdapat 3 pilihan menu item yaitu : 1. Menu Makanan
Gambar 4.4 Form Inventori Menu Makanan
27
Saat menu makanan di klik maka akan timbul form seperti gambar 4.4 di atas. Pada form ini user mengisikan data-data makanan/minuman apa saja yang akan di tampilkan pada menu makanan yang ada pada form transaksi nanti.
2. Inventori
Gambar 4.5 Form Inventori Bahan Saat user mengklik menu inventori, maka akan timbul form inventori seperti pada gambar 4.5 di atas. Disini user level 1 atau pemilik mengisikan bahan-bahan apa saja yang ada dan jumlah bahan yang digunakan untuk membuat makanan.
28
3. Jenis Diskon
Gambar 4.6 Form Jenis Diskon Pada form ini, terdapat jenis diskon yang ingin diberlakukan oleh pemilik. Jika pemilik ingin mengadakan diskon bagi pelanggan maka pemilik hanya melakukan inputan jenis diskonnya dan berapa jumlah diskonnya. 4.3.2.2. Transaksi 1.Kasir
Gambar 4.7 Form Pilih Meja Saat mengklik menu bar transaksi lalu pilih kasir, maka akan tampil form pilih meja. Disini user harus memilih meja untuk masuk kedalam form kasir.
29
Gambar 4.8 Form Transaksi Kasir Setelah user memilih meja mana yang kosong, maka akan tampil form seperti gambar 4.7 di atas. Pada form ini terdapat pilihan-pilihan yang nantinya akan diperlihatkan kepada pelanggan. Karena pada form ini pelanggan akan melakukan transaksi atau pemilihan makanan dan minuman apa yang ingin dipesan oleh pelanggan. Pada form ini terdapat beberapa button pilihan, yaitu : a. [ESC] Kembali Jika button ini ditekan maka user akan di hadapkan kembali kepada form sebelum form transaksi yaitu form pilih meja. b. [Del] Hapus Button
ini
digunakan
jika
pelanggan
ingin
mengganti pesanannya dengan pesanan yang lain. c. [F4] Gabung Button gabung ini berfungsi jika ada pelanggan yang ingin menggabungkan mejanya dengan pelanggan yang lain. Jika user mengklik button ini maka akan tampil form sebagai berikut.
30
Gambar 4.9 Form Gabung Meja Setelah
timbul
form
di
atas
user
hanya
menginputkan no meja sebelum gabung dan memilih meja yang ingin digabungkan. d. [F6]Meja Jika button ini diklik, maka user akan kembali kepada form pilih meja seperti pada gambar 4.7 di atas. e. [F12] Cetak Button ini berfungsi jika user ingin mencetak hasil transaksi yang telah dilakukan. f. [F7] Diskon Button ini berfungsi untuk memberikan diskon harga
kepada
pelanggan
setelah
penjumlahan
keseluruhan pembelian. g. [F8] Bayar Jika tombol ini diklik maka transaksi antara user dan pelanggan telah selesai. Berikut tampilan form bayar.
Gambar 4.10 Form Bayar
31
4.3.2.3 Laporan Saat user mengarahkan cursor kepada menu laporan maka akan tampil beberapa pilihan menu antara lain : 1. Per Faktur Jika menu ini di klik maka akan tampil laporan transaksi namun dipisahkan menjadi per faktur seperti pada gambar berikut.
Gambar 4.11 Form Laporan Per Faktur 2. Per Item Jika menu ini di klik maka akan tampil laporan transaksi namun dipisahkan menjadi per item seperti pada gambar berikut.
Gambar 4.12 Form Laporan Per Item
32
3. Inventori Jika menu ini di klik maka akan tampil laporan inventori bahan. Formini melaporkan sisa bahan yang masih ada maupun yang telah terpakai.
Gambar 4.13 Form Laporan Inventori 4. Form laporan Pada form ini berisikan keseluruhan data laporan, yang dapat dicari melalui tanggal yang berada pada bagian bawah form. Disini user juga dapat melihat laporan per faktur maupun per item. Berikut gambar dari form laporan.
33
Gambar 4.14 Form Laporan 4.3.2.4. Sistem Pada menu bar ini hanya terdapat sebuah menu item yaitu management user. Form ini merupakan form dimana user membuat username dan password untuk mengakses program kasir ini. Yang memiliki akses untuk masuk kedalam management user adalah user yang mempunyai tingkat level 1 atau admin. Berikut gambar dari form management user.
Gambar 4.15 Form Management User 34
4.3.2.5. Help Pada menu bar ini hanya terdapat sebuah menu item yaitu logout. Jika kita mengklik menu logout maka akan tampil pilihan yes dan no. Jika user memilih yes, maka user akan keluar dari program. Jika user memilih no, maka user akan kembali kepada tampilan form utama.
35
BAB V PENUTUP
5.1. Kesimpulan Berdasarkan hasil pembuatan aplikasi kasir rumah makan ini, penulis mengambil beberapa kesimpulan: 1. Untuk alasan keamanan program memiliki 2 tingkat level user 2. Sistem kasir sudah dirancang untuk mudah digunakan, karna tidak terlalu banyak pilihan menu didalamnya terutama admin yang mengatur inputan data. 3. Hasil akhir program sesuai dengan rancangan penulis 4. Program kasir ini memiliki kekurangan dan kelebihan antara lain : Kelebihan :
Mudah untuk digunakan.
Tidak butuh koneksi internet untuk mengaksesnya, karena berbasis dekstop.
Program tidak membutuhkan spesifikasi laptop atau PC yang terlalu tinggi, karena program dapat dijalankan pada spesifikasi laptop atau PC yang standar.
Memiliki sistem laporan per hari, per minggu, maupun perbulan.
Kekurangan :
Belum menggunakan konsep client server
Masih ada yang menggunakan input manual
5.2 Saran 1. Semoga program ini kedepannya dapat dikembangkan agar program bisa menjadi multi fungsi yaitu tidak hanya fokus terhadap kasir rumah makan saja melainkandapat merangkup menjadi program kasir toko atau mini market.
36
2. Dapat dibuat lebih sederhana lagi dalam perhitungan transaksi agar tidak terlihat rumit. 3. Dapat ditambahkan menu-menu lainnya seperti makanan atau item apa saja yang sedang ada potongan harga.
37
Daftar Pustaka [1] SyarifMulkan, 2012, Bermacam Project Java dengan IDE Netbeans, Yogyakarta: PenerbitAndi. [2] WahanaKomputer, 2012, MembangunAplikasiBisnisDenganNetbeans 7, Yogyakarta: PenerbitAndi. [3] Miftakhul Huda, 2011, MembuatAplikasi Mini/Super MarketDengan Java, Yogyakarta: Penerbit PT Elex Media Komputindo. [4] Irawan, 2011, Java Untuk Orang Awam, Palembang: PenerbitMaxicom. [5] http://id.wikipedia.org/wiki/MySQL diakses, rabu 24 april pukul 13.25 [6] http://belajar-pemrograman2.blogspot.com/2010/07/apa-itu-java.html diakses, selasa 23 april pukul 16.05
38
LAMPIRAN
39
1.
Class Login package kasir.main; import java.awt.Color; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.geom.RoundRectangle2D; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JOptionPane; import kasir.sistem.Log; import kasir.utils.Koneksi; import kasir.utils.Meja; public class Login extends javax.swing.JFrame { ResultSet rs; String nama; String pass; Statement stat; boolean result; Connection con; int salah = 0; MainForm mf = new MainForm(); public void login() { nama = tf1.getText(); pass = pf1.getText(); Meja m = new Meja(); Date d = new Date(); SimpleDateFormat day = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss"); try { Koneksi.Connection(); stat = Koneksi.con.createStatement(); String q = "Select * from account where username ='" + nama + "' and password='" + pass + "'"; result = stat.executeQuery(q).next(); if (result) { this.dispose(); mf.show(); salah = 0; rs = stat.executeQuery(q); while (rs.next()) { mf.namaOP(rs.getString(2)); mf.Master(rs.getInt(1)); Log.LogAction(day.format(d), jam.format(d), "Operator login dengan username: " + nama + ", atas nama: " + rs.getString(2)); } } else { JOptionPane.showMessageDialog(this, "Username/Password salah", "", JOptionPane.ERROR_MESSAGE); tf1.setText("");
pf1.setText(""); //b1.requestFocus(); salah++; if (salah == 3) { JOptionPane.showMessageDialog(this, "Anda sudah gagal login sebanyak 3 kali. \n " + "program akan ditutup", "", JOptionPane.ERROR_MESSAGE); System.exit(0); } } } catch (Throwable t) { System.err.println(t.toString()); } } public Login() { initComponents(); this.setLocationRelativeTo(null); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // 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(); }// 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 */ // /* 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); } // /* 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") // 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(); }// 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 map = new HashMap(); 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 map = new HashMap(); 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 map = new HashMap(); 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 */ // /* 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); } // /* 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 map = new HashMap(); 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 */ // /* 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); } // /* 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") // 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(); }// 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 */ // /* 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); } // /* 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") // 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(); }// 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 */ // /* 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); } // /* 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") // 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(); }// 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 */ // /* 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); } // /* 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;