laporan tugas akhir machmud tahnihan_3201016046

103
Aplikasi Kasir Rumah Makan Menggunakan Java dan MySQL TUGAS AKHIR Diajukan Sebagai Persyaratan Untuk Menyelesaikan Pendidikan Diploma III Pada Program Studi Informatika Jurusan Teknik Elektro Politeknik Negeri Pontianak Oleh: MACHMUD TAHNIHAN ISMA ROHMAT NIM. 3201016046 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI PONTIANAK 2013

Upload: danil-sarif

Post on 21-Jan-2016

2.958 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 2: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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 Yunita, ST., M.Sc

NIP.197103111998011001 NIP. 198106272008012014

Mengetahui,

Direktur Politeknik Negeri Pontianak

Mahyus, S.Pd., SE., MM

NIP. 197002011996051001

Page 3: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 4: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

mesin 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

Page 5: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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.

Page 6: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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, Juli 2013

Penulis

Page 7: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 8: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 9: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 10: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 11: Laporan Tugas Akhir Machmud Tahnihan_3201016046

1

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

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

Page 12: Laporan Tugas Akhir Machmud Tahnihan_3201016046

2

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.

Page 13: Laporan Tugas Akhir Machmud Tahnihan_3201016046

3

1.5. Manfaat Tugas Akhir

1. Bagi Pemilik dan Pelanggan

Mempermudah atau mempercepat dalam proses transaksi pembayaran dan

memudahkan pemilik dalam melakukan pengontrolan data.

2. Bagi Mahasiswa

Melatih mahasiswa dalam menerapkan ilmu pengetahuan dan

keterampilan yang didapat selama duduk di bangku perkuliahan 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.

Page 14: Laporan Tugas Akhir Machmud Tahnihan_3201016046

4

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.

Page 15: Laporan Tugas Akhir Machmud Tahnihan_3201016046

5

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.

Page 16: Laporan Tugas Akhir Machmud Tahnihan_3201016046

6

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

Page 17: Laporan Tugas Akhir Machmud Tahnihan_3201016046

7

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

Page 18: Laporan Tugas Akhir Machmud Tahnihan_3201016046

8

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

Page 19: Laporan Tugas Akhir Machmud Tahnihan_3201016046

9

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,

Page 20: Laporan Tugas Akhir Machmud Tahnihan_3201016046

10

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

gagasan 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

Page 21: Laporan Tugas Akhir Machmud Tahnihan_3201016046

11

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.

Page 22: Laporan Tugas Akhir Machmud Tahnihan_3201016046

12

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:

Page 23: Laporan Tugas Akhir Machmud Tahnihan_3201016046

13

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.

Page 24: Laporan Tugas Akhir Machmud Tahnihan_3201016046

14

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.

Page 25: Laporan Tugas Akhir Machmud Tahnihan_3201016046

15

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

Page 26: Laporan Tugas Akhir Machmud Tahnihan_3201016046

16

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.

Page 27: Laporan Tugas Akhir Machmud Tahnihan_3201016046

17

Pembaya

ran

Ambil

Data

Makana

n

Simpan

data

makana

n

Tampil

kan

Input

Data

User

Simpan

data

User

Cetak

Laporan

Entri

Pesana

n

Mulai

Login

Master

Jenis

Diskon

Master

Invent

ori

Master

Menu

Makan

an

Trans

aksi

Kasir

Lapora

n Per

Faktur

Laporan

Form

Laporan

Lapor

an

Per

Item

Sistem

Manageme

nt User

Input

Nama

Makana

n

Input

Bahan

Makana

n

Input

Diskon

Selesai

Logout

Gambar 2.1 Diagram Alur Admin

Page 28: Laporan Tugas Akhir Machmud Tahnihan_3201016046

18

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

Selesai

Logout

Gambar 2.2 Desain Diagram Alur User Level 2

Page 29: Laporan Tugas Akhir Machmud Tahnihan_3201016046

19

3.2. Analisis Basis Data

3.2.1. Struktur Tabel

Program kasir ini menggunakan basis data untuk menyimpan data-

data 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

Field

Tipe

Data

Ukuran Keterangan Jenis

Kunci

Id Varchar 10 Id makanan/minuman

Kode Varchar 10 kodemakanan/minuman Primary

Page 30: Laporan Tugas Akhir Machmud Tahnihan_3201016046

20

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

Page 31: Laporan Tugas Akhir Machmud Tahnihan_3201016046

21

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

Page 32: Laporan Tugas Akhir Machmud Tahnihan_3201016046

22

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

Page 33: Laporan Tugas Akhir Machmud Tahnihan_3201016046

23

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

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

Gambar 2.4 Desain Form Utama

USERNAME

LOGIN USER

USERNAME

PASSWORD

Master Transaksi Laporan Sistem Help

Menu Makanan F2

Inventori F2

Jenis Diskon F2

Page 34: Laporan Tugas Akhir Machmud Tahnihan_3201016046

24

Pada form utama ini akan berisikan menu-menu yang memiliki

fungsi berbeda-beda. Form ini merupakan form utama dalam program

dimana akses ke form lainnya terdapat pada form ini.

3. Desain Form Pilih Meja

Gambar 2.5 Desain Form Pilih Meja

Pada form pilih meja, user akan dihadapkan terhadap beberapa

meja. Jumlah meja disini dapat di ubah sesuai dengan keinginan user.

Form pilih meja ini merupakan form yang tampil sebelum form

transaksi.

4. Desain Form Transaksi

Gambar 2.6 Desain From Transaksi

Form transaksi ini merupakan form yang tampil setelah user

memilih meja. Disini transaksi penjualan dilakukan.

1 3 4 2

5 8 6 7

No Faktur

Daftar Menu Makanan dan

Minuman

Daftar Makanan dan Miuman

Yang Telah Dipilih

Bayar

No Meja Harga yang harus dibayar

Page 35: Laporan Tugas Akhir Machmud Tahnihan_3201016046

25

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.

Page 36: Laporan Tugas Akhir Machmud Tahnihan_3201016046

26

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

Page 37: Laporan Tugas Akhir Machmud Tahnihan_3201016046

27

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

Page 38: Laporan Tugas Akhir Machmud Tahnihan_3201016046

28

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.

Page 39: Laporan Tugas Akhir Machmud Tahnihan_3201016046

29

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.

Page 40: Laporan Tugas Akhir Machmud Tahnihan_3201016046

30

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.

Page 41: Laporan Tugas Akhir Machmud Tahnihan_3201016046

31

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

Page 42: Laporan Tugas Akhir Machmud Tahnihan_3201016046

32

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

Page 43: Laporan Tugas Akhir Machmud Tahnihan_3201016046

33

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.

Page 44: Laporan Tugas Akhir Machmud Tahnihan_3201016046

34

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

Page 45: Laporan Tugas Akhir Machmud Tahnihan_3201016046

35

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.

Page 46: Laporan Tugas Akhir Machmud Tahnihan_3201016046

36

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.

Page 47: Laporan Tugas Akhir Machmud Tahnihan_3201016046

37

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.

Page 48: Laporan Tugas Akhir Machmud Tahnihan_3201016046

38

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

Page 49: Laporan Tugas Akhir Machmud Tahnihan_3201016046

39

LAMPIRAN

Page 50: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 51: Laporan Tugas Akhir Machmud Tahnihan_3201016046

pf1.setText("");

//b1.requestFocus();

salah++;

if (salah == 3) {

JOptionPane.showMessageDialog(this, "Anda sudah gagal login sebanyak 3 kali. \n "

+ "program akan ditutup", "", JOptionPane.ERROR_MESSAGE);

System.exit(0);

}

}

} catch (Throwable t) {

System.err.println(t.toString());

}

}

public Login() {

initComponents();

this.setLocationRelativeTo(null);

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

tf1 = new javax.swing.JTextField();

pf1 = new javax.swing.JPasswordField();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

tf1.setName(""); // NOI18N

tf1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

tf1ActionPerformed(evt);

}

});

tf1.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

tf1KeyPressed(evt);

}

});

pf1.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

pf1KeyPressed(evt);

}

});

Page 52: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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(

Page 53: Laporan Tugas Akhir Machmud Tahnihan_3201016046

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(33, 33, 33)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 218,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(66, 66, 66))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addGap(35, 35, 35)

.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 73,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48,

Short.MAX_VALUE)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap())

);

pack();

}// </editor-fold>

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

// TODO add your handling code here:

}

private void pf1KeyPressed(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

login();

}

}

private void tf1KeyPressed(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

pf1.requestFocus();

}

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

Page 54: Laporan Tugas Akhir Machmud Tahnihan_3201016046

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Login().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JPanel jPanel1;

private javax.swing.JPasswordField pf1;

private javax.swing.JTextField tf1;

2. Class Mainform

package kasir.main;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Frame;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

Page 55: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

}

}

Page 56: Laporan Tugas Akhir Machmud Tahnihan_3201016046

Statement stat;

ResultSet rs;

Statement st;

Statement sta;

public void resetFaktur() {

Date d = new Date();

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

String hari = sd.format(d);

String h = null;

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

String q = "select * from maintenance";

rs = stat.executeQuery(q);

while (rs.next()) {

h = rs.getString(1);

}

if (hari.equals(h)) {

String qu = "delete from faktur";

stat.executeUpdate(qu);

String que = "insert into faktur value('00000')";

stat.executeUpdate(que);

String quer = "delete from maintenance";

stat.executeUpdate(quer);

JOptionPane.showMessageDialog(this, "Faktur telah direset menjadi 00001");

}

} catch (Throwable t) {

t.printStackTrace();

}

}

public MainForm() {

initComponents();

this.setTitle("Form Utama");

this.setLocationRelativeTo(null);

resetFaktur();

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jMenuBar1 = new javax.swing.JMenuBar();

jMenu1 = new javax.swing.JMenu();

jMenuItem1 = new javax.swing.JMenuItem();

jMenuItem2 = new javax.swing.JMenuItem();

jMenuItem12 = new javax.swing.JMenuItem();

jMenu2 = new javax.swing.JMenu();

Page 57: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 58: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

}

Page 59: Laporan Tugas Akhir Machmud Tahnihan_3201016046

});

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(

Page 60: Laporan Tugas Akhir Machmud Tahnihan_3201016046

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 452, Short.MAX_VALUE)

);

pack();

}// </editor-fold>

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Master -> Menu Makanan");

new Menu().show();

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Master -> Inventori");

new Invbahan().show();

}

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

new NamaDiskon().show();

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Transaksi -> Kasir");

new Meja().show();

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Laporan -> Per faktur");

try {

Map<String, Object> map = new HashMap<String, Object>();

map.put("Tanggal", day.format(d));

JasperPrint print = JasperFillManager.fillReport("Report/Perfaktur.jasper", map,

Koneksi.con);

JasperViewer.viewReport(print, false);

} catch (Throwable e) {

JOptionPane.showMessageDialog(null, e.getMessage());

Page 61: Laporan Tugas Akhir Machmud Tahnihan_3201016046

System.out.println(e.getMessage());

}

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Laporan -> Per item");

try {

Map<String, Object> map = new HashMap<String, Object>();

map.put("Tanggal", day.format(d));

JasperPrint print = JasperFillManager.fillReport("Report/Peritem.jasper", map,

Koneksi.con);

JasperViewer.viewReport(print, false);

} catch (Throwable e) {

JOptionPane.showMessageDialog(null, e.getMessage());

System.out.println(e.getMessage());

}

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Laporan -> Inventori");

try {

Map<String, Object> map = new HashMap<String, Object>();

map.put("Tanggal", day.format(d));

JasperPrint print = JasperFillManager.fillReport("Report/Inventori.jasper", map,

Koneksi.con);

JasperViewer.viewReport(print, false);

} catch (Throwable e) {

JOptionPane.showMessageDialog(null, e.getMessage());

System.out.println(e.getMessage());

}

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Sistem -> Management User");

new User().show();

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka menu

Sistem -> Log");

Page 62: Laporan Tugas Akhir Machmud Tahnihan_3201016046

new LogForm().show();

}

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

int quest = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin logout?", "",

JOptionPane.YES_NO_OPTION);

if (quest == JOptionPane.YES_OPTION) {

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " logout");

dispose();

new Login().show();

}

}

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

new Report().show();

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " membuka form

laporan");

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

Page 63: Laporan Tugas Akhir Machmud Tahnihan_3201016046

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new MainForm().setVisible(true);

}

});

}

public static javax.swing.JMenu jMenu1;

private javax.swing.JMenu jMenu2;

public static javax.swing.JMenu jMenu3;

public static javax.swing.JMenu jMenu4;

public static javax.swing.JMenu jMenu5;

private javax.swing.JMenuBar jMenuBar1;

public static javax.swing.JMenuItem jMenuItem1;

private javax.swing.JMenuItem jMenuItem10;

private javax.swing.JMenuItem jMenuItem11;

public static javax.swing.JMenuItem jMenuItem12;

private javax.swing.JMenuItem jMenuItem13;

private javax.swing.JMenuItem jMenuItem14;

public static javax.swing.JMenuItem jMenuItem2;

private javax.swing.JMenuItem jMenuItem3;

private javax.swing.JMenuItem jMenuItem4;

private javax.swing.JMenuItem jMenuItem5;

private javax.swing.JMenuItem jMenuItem6;

public static javax.swing.JMenuItem jMenuItem9;

private javax.swing.JPopupMenu.Separator jSeparator2;

3. Class Transaksi

} catch (Throwable t) {

System.err.println(t.getMessage());

}

}

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

try {

int h = 0;

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

no_meja.getText() + "'";

rs = stat.executeQuery(q);

while (rs.next()) {

h = rs.getInt(1);

}

if (h == 0) {

faktur();

}

} catch (Throwable t) {

}

meja();

}

Page 64: Laporan Tugas Akhir Machmud Tahnihan_3201016046

public void kembali() {

Date d = new Date();

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

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

Log.LogAction(day.format(d), jm.format(d), "Operator: " + nama_op + " kembali ke menu

utama");

dispose();

}

public void cetak() {

if (bayar.getText().equals("0")) {

JOptionPane.showMessageDialog(this, "Anda belum melakukan pembayaran", "",

JOptionPane.WARNING_MESSAGE);

} else {

nama_op = operator.getText();

Date d = new Date();

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

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

Log.LogAction(day.format(d), jm.format(d), "Operator: " + nama_op + " mencetak bill");

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

String q = "update tabel_pesanan set Bayar=" + Integer.parseInt(bayar.getText()) + " ,"

+ "Kembali=" + Integer.parseInt(kembali.getText()) + ", Grand=" +

Integer.parseInt(grandtotal.getText())

+ ", Subtotal=" + Integer.parseInt(subtotal.getText()) + " where Faktur='" +

Nofaktur.getText() + "'";

stat.executeUpdate(q);

initPesan();

Map<String, Object> map = new HashMap<String, Object>();

map.put("No Faktur", Nofaktur.getText());

JasperPrint print = JasperFillManager.fillReport("Report/Nota.jasper", map,

Koneksi.con);

JasperPrintManager.printPage(print, 0, false);

String qu = "delete from tabel_pesanan_sementara where Faktur='" + Nofaktur.getText()

+ "'";

stat.executeUpdate(qu);

initPesan();

} catch (Throwable t) {

t.printStackTrace();

}

}

}

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

cetak();

}

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

new Diskon().show();

}

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

new Bayar().show();

dispose();

Page 65: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 66: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 67: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 68: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

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

Page 69: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

}

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

Bayar b = new Bayar();

// b.bayar.setRequestFocusEnabled(true);

//b.bayar.selectAll();

b.show();

dispose();

//new Meja().show();

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Transaksi.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Transaksi().setVisible(true);

}

});

}

// Variables declaration - do not modify

Page 70: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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;

Page 71: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 72: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 73: Laporan Tugas Akhir Machmud Tahnihan_3201016046

mut = Integer.parseInt(jlhons.getText());

mutaons = Integer.parseInt(mutons.getText());

sis = Integer.parseInt(sisa.getText());

sisons = Integer.parseInt(sisaons.getText());

}

public Invbahan() {

initComponents();

this.setLocationRelativeTo(null);

init();

nol();

}

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

jButton1 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

jButton3 = new javax.swing.JButton();

jButton5 = new javax.swing.JButton();

jButton4 = new javax.swing.JButton();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

jLabel6 = new javax.swing.JLabel();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jLabel10 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

kode = new javax.swing.JTextField();

jns = new javax.swing.JTextField();

jlh = new javax.swing.JTextField();

harga = new javax.swing.JTextField();

cari = new javax.swing.JTextField();

jlhons = new javax.swing.JTextField();

mutasi = new javax.swing.JTextField();

mutons = new javax.swing.JTextField();

sisa = new javax.swing.JTextField();

sisaons = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4"

Page 74: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

));

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

Page 75: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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)

Page 76: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 77: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 78: Laporan Tugas Akhir Machmud Tahnihan_3201016046

.addComponent(jlhons, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(sisaons, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addContainerGap())

);

pack();

}// </editor-fold>

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

int data = jTable1.getSelectedRow();

kode.setText((String) jTable1.getValueAt(data, 0));

jns.setText((String) jTable1.getValueAt(data, 1));

jlh.setText((String) jTable1.getValueAt(data, 2));

mutasi.setText((String) jTable1.getValueAt(data, 3));

jlhons.setText((String) jTable1.getValueAt(data, 4));

mutons.setText((String) jTable1.getValueAt(data, 5));

sisa.setText((String) jTable1.getValueAt(data, 6));

sisaons.setText((String) jTable1.getValueAt(data, 7));

harga.setText((String) jTable1.getValueAt(data, 8));

}

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

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

kd = kode.getText();

jen = jns.getText();

jum = Integer.parseInt(jlh.getText());

jumons = Integer.parseInt(jlhons.getText());

mut = Integer.parseInt(mutasi.getText());

mutaons = Integer.parseInt(mutons.getText());

sis = Integer.parseInt(sisa.getText());

sisons = Integer.parseInt(sisaons.getText());

hrg = Integer.parseInt(harga.getText());

String q = "insert into inventoribahan values('" + kd + "','" + jen + "'," + jum + "," + jumons

+ "," + mut

+ "," + mutaons + "," + sis + "," + sisons + "," + hrg + ")";

stat.executeUpdate(q);

init();

Date d = new Date();

Page 79: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

}

}

Page 80: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

String q = "update inventoribahan set jumlah=0,jum_ons=0,mutasi=0,mutasi_ons=0";

stat.executeUpdate(q);

init();

} catch (Throwable t) {

t.printStackTrace();

}

}

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

int que = JOptionPane.showConfirmDialog(this, "Apakah anda yakin ingin menghapus semua

data?", "", JOptionPane.YES_NO_OPTION);

if (que == JOptionPane.NO_OPTION) {

return;

} else {

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

String q = "delete from inventoribahan";

stat.executeUpdate(q);

init();

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus isi

inventori bahan");

} catch (Throwable t) {

t.printStackTrace();

}

}

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

Page 81: Laporan Tugas Akhir Machmud Tahnihan_3201016046

java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Invbahan.class.getName()).log(java.util.logging.Level.SEVER

E, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Invbahan().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JTextField cari;

private javax.swing.JTextField harga;

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4;

private javax.swing.JButton jButton5;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel10;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JTextField jlh;

private javax.swing.JTextField jlhons;

private javax.swing.JTextField jns;

private javax.swing.JTextField kode;

private javax.swing.JTextField mutasi;

private javax.swing.JTextField mutons;

private javax.swing.JTextField sisa;

private javax.swing.JTextField sisaons;

Page 82: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 83: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 84: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

}

public Menu() {

initComponents();

this.setLocationRelativeTo(null);

jumlahMeja();

init();

}

String nama_op = MainForm.nama_op;

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

jButton1 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

jButton3 = new javax.swing.JButton();

jButton4 = new javax.swing.JButton();

jButton5 = new javax.swing.JButton();

jLabel7 = new javax.swing.JLabel();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

kategori = new javax.swing.JComboBox();

jLabel5 = new javax.swing.JLabel();

jLabel6 = new javax.swing.JLabel();

jCheckBox1 = new javax.swing.JCheckBox();

bMeja = new javax.swing.JButton();

cari = new javax.swing.JTextField();

kode = new javax.swing.JTextField();

jlh2 = new javax.swing.JTextField();

jlh1 = new javax.swing.JTextField();

nama = new javax.swing.JTextField();

id = new javax.swing.JTextField();

harga = new javax.swing.JTextField();

tMeja = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jTable1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

Page 85: Laporan Tugas Akhir Machmud Tahnihan_3201016046

{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

Page 86: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 87: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

});

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

Page 88: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 89: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

);

Page 90: Laporan Tugas Akhir Machmud Tahnihan_3201016046

pack();

}// </editor-fold>

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

id.requestFocus();

int data = jTable1.getSelectedRow();

id.setText((String) jTable1.getValueAt(data, 0));

nama.setText((String) jTable1.getValueAt(data, 1));

nama.setText((String) jTable1.getValueAt(data, 2));

jlh1.setText((String) jTable1.getValueAt(data, 3));

jlh2.setText((String) jTable1.getValueAt(data, 4));

harga.setText((String) jTable1.getValueAt(data, 5));

kategori.setSelectedItem((String) jTable1.getValueAt(data, 6));

}

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

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menambah menu

makanan");

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

data();

String q = "insert into menu values('" + idd + "','" + kd + "','" + nm + "'," + j1 + "," + j2 + ","

+ hr + ",'" + kat + "')";

stat.executeUpdate(q);

init();

clear();

} catch (Throwable t) {

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

JOptionPane.ERROR_MESSAGE);

}

}

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

if (nama.getText().isEmpty() || nama.getText().isEmpty() || harga.getText().isEmpty()) {

JOptionPane.showMessageDialog(this, "Field tidak boleh kosong", "",

JOptionPane.WARNING_MESSAGE);

} else {

Date d = new Date();

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

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

Log.LogAction(day.format(d), jam.format(d), "Operator: " + nama_op + " menghapus menu

makanan");

data();

try {

Koneksi.Connection();

stat = Koneksi.con.createStatement();

String q = "delete from menu where kode='" + kd + "'";

stat.executeUpdate(q);

init();

clear();

} catch (Throwable t) {

Page 91: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 92: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 93: Laporan Tugas Akhir Machmud Tahnihan_3201016046

bar = 0;

while (rs.next()) {

bar++;

}

String[] title = new String[kol];

String[][] isi = new String[bar][kol];

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

title[i] = rsmd.getColumnName(i + 1);

}

int a = 0;

rs = stat.executeQuery(q);

while (rs.next()) {

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

isi[a][i] = rs.getString(i + 1);

}

a++;

}

jTable1.setModel(new DefaultTableModel(isi, title));

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

jTable1.getColumnModel().getColumn(0).setPreferredWidth(65);

jTable1.getColumnModel().getColumn(1).setPreferredWidth(70);

jTable1.getColumnModel().getColumn(2).setPreferredWidth(450);

jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);

jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);

jTable1.getColumnModel().getColumn(5).setPreferredWidth(147);

jTable1.getColumnModel().getColumn(6).setPreferredWidth(148);

jTable1.setShowGrid(true);

jTable1.setRowHeight(22);

} catch (Throwable t) {

System.err.println(t.getMessage());

}

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (InstantiationException ex) {

Page 94: Laporan Tugas Akhir Machmud Tahnihan_3201016046

java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Menu().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton bMeja;

private javax.swing.JTextField cari;

private javax.swing.JTextField harga;

private javax.swing.JTextField id;

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4;

private javax.swing.JButton jButton5;

private javax.swing.JCheckBox jCheckBox1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JTextField jlh1;

private javax.swing.JTextField jlh2;

private javax.swing.JComboBox kategori;

private javax.swing.JTextField kode;

private javax.swing.JTextField nama;

private javax.swing.JTextField tMeja;

6. Class User

package kasir.sistem;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

Page 95: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 96: Laporan Tugas Akhir Machmud Tahnihan_3201016046

jTable1.setRowHeight(22);

} catch (Throwable t) {

System.err.println(t.getMessage());

}

}

int lvl;

String nama, un, ps;

public void data() {

lvl = Integer.parseInt(jComboBox1.getSelectedItem().toString());

nama = nm.getText();

un = user.getText();

ps = pass.getText();

}

public void clear() {

jComboBox1.setSelectedIndex(0);

nm.setText("");

pass.setText("");

user.setText("");

}

public User() {

initComponents();

this.setLocationRelativeTo(null);

init();

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

jButton1 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

jButton3 = new javax.swing.JButton();

jButton4 = new javax.swing.JButton();

jButton5 = new javax.swing.JButton();

jLabel1 = new javax.swing.JLabel();

jComboBox1 = new javax.swing.JComboBox();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

nm = new javax.swing.JTextField();

user = new javax.swing.JTextField();

pass = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jTable1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

Page 97: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

}

Page 98: Laporan Tugas Akhir Machmud Tahnihan_3201016046

});

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

Page 99: Laporan Tugas Akhir Machmud Tahnihan_3201016046

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 69,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(nm, javax.swing.GroupLayout.PREFERRED_SIZE, 200,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE, 200,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE, 200,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(0, 0, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

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

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 40,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 40,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 40,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 40,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 40,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel1)

.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel2)

.addComponent(nm, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3)

.addComponent(user, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel4)

.addComponent(pass, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(15, Short.MAX_VALUE))

);

pack();

}// </editor-fold>

String nama_op = MainForm.nama_op;

Page 100: Laporan Tugas Akhir Machmud Tahnihan_3201016046

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

Page 101: Laporan Tugas Akhir Machmud Tahnihan_3201016046

}

}

}

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

}

}

}

Page 102: Laporan Tugas Akhir Machmud Tahnihan_3201016046

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(User.class.getName()).log(java.util.logging.Level.SEVERE,

null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new User().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4;

private javax.swing.JButton jButton5;

private javax.swing.JComboBox jComboBox1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

Page 103: Laporan Tugas Akhir Machmud Tahnihan_3201016046

private javax.swing.JTextField nm;

private javax.swing.JTextField pass;

private javax.swing.JTextField user;