APLIKASI DATA MINING MENGGUNAKAN ALGORITMA … · UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM Skripsi...
Transcript of APLIKASI DATA MINING MENGGUNAKAN ALGORITMA … · UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM Skripsi...
APLIKASI DATA MINING
MENGGUNAKAN ALGORITMA APRIORI
UNTUK ANALISIS POLA PENJUALAN
DI XYZ HELM
Skripsi
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun oleh :
Alfonsus Doni Setyawan
105314096
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i
DATA MINING APPLICATION
USING APRIORI ALGORITHM
FOR ANALYSIS OF SALES PATTERN
IN XYZ HELMET
Thesis
Presented as Partial Fullfilment of the Requirements
To Obtain the Computer Bachelor Degree
In Informatics Engineering
By :
Alfonsus Doni Setyawan
105314096
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
HALAMAN PERSETUJUAN PEMBIMBING
SKRIPSI
APLIKASI DATA MINING MENGGUNAKAN ALGORITMA APRIORI
UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM
Dipersiapkan dan ditulis oleh :
Alfonsus Doni Setyawan
105314096
Telah disetujui oleh :
Pembimbing
Ridowati Gunawan, S.Kom. M.T. Tanggal : ………………..
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
HALAMAN PENGESAHAN SKRIPSI
APLIKASI DATA MINING MENGGUNAKAN ALGORITMA APRIORI
UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM
Dipersiapkan dan ditulis oleh :
Alfonsus Doni Setyawan
105314096
Telah dipertahankan di depan Panitia Penguji
Pada tanggal ……………………… 2016
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji:
Nama Lengkap Tanda Tangan
Ketua Drs.Haris Sriwindono M.Kom .........................
Sekretaris Paulina Heruningsih Prima Rosa M.Sc .........................
Anggota Ridowati Gunawan, S.Kom. M.T. .........................
Yogyakarta, ……………………
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, Ph.D.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
HALAMAN MOTTO
Jika ada mimpi selalu ada harapan
Jika ada harapan selalu ada usaha
Jika ada usaha selalu ada hasil
Jangan takut bermimpi untuk berhasil
Make dreams come true
(anonymous)
Berusahalah sampai tetes terakhir
Karena hasil tidak akan mengingkari usaha
(anonymous)
Katak selalu melompat kedepan
Walau jalan terjal menanti tak takut untuk melangkah
Hiduplah seperti katak
(anonymous)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN PERSEMBAHAN
Karya ini aku persembahkan untuk
Tuhan Yesus yang baik telah memberi karunia,
rahmat, dan penyertaanNya.
Bapak yang selalu ada, bahkan saat aku menulis halaman ini
aku percaya bapak ada disini.
Ibu dan adikku yang selalu memberikan
doa dan dukungan.
Dosen pembimbing skripsi yang telah memberikan
bimbingan dengan penuh kesabaran.
Kekasih yang selalu memberi semangat dan harapan
Serta kepada semua orang
yang telah membantu pengerjaan tugas akhir ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam
daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, …………………… 2016
Penulis,
Alfonsus Doni Setyawan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
APLIKASI DATA MINING MENGGUNAKAN ALGORITMA APRIORI
UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM
Alfonsus Doni Setyawan
ABSTRAK
Data mining merupakan proses untuk menganalisis kumpulan data yang
menghasilkan pengetahuan baru sehingga dapat membantu dalam pengambilan
keputusan. Terdapat metode Association Rule dalam data mining yang dapat
menentukan pola aturan dari kumpulan data. Data dalam penelitian ini bertujuan
untuk mengetahui pola penjualan di XYZ Helm dengan analisis hasil
menggunakan Algoritma Apriori. Penelitian ini diperoleh dari hasil penjualan
helm sejumlah 126 nota transaksi dengan 798 detil penjualan yang kemudian
diolah dengan algoritma tersebut dengan menentukan nilai support dan
confidence. Hasil analisis menunjukan terdapat 4 barang yang lolos dari minimum
support 40% dan minimum confidence 50% dan diharapkan dapat membantu
pemilik usaha dalam mengambil keputusan untuk penjualan selanjutnya.
Kata kunci : Data mining, Association Rule, Algoritma Apriori, Support,
Confidence
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
DATA MINING APPLICATION USING APRIORI ALGORITHM
FOR ANALYSIS OF SALES PATTERN IN XYZ HELMET
Alfonsus Doni Setyawan
ABSTRACT
Data mining is the process to analyze data sets that produce new knowledge to
help making a decision. There is a method of Association Rule in the data mining
that can determine the rule pattern of the data sets. This research aims to know the
sales pattern in XYZ Helmet using apriori algorithm. The data
were obtained from the results of sales at XYZ helmet that totaled 126
transactions with 798 sales details which were analyzed using the algorithm by
determining the value of support and confidence. According to the result of
analysis, there are 4 items passed minimum support 40% and minimum
confidence 50%. This result is expected to help business owner in deciding next
sales plan.
Key Word : Data mining, Association Rule, Algoritma Apriori, Support,
Confidence
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma
Nama : Alfonsus Doni Setyawan
Nomor Mahasiswa : 105314096
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul:
APLIKASI DATA MINING MENGGUNAKAN ALGORITMA APRIORI
UNTUK ANALISIS POLA PENJUALAN DI XYZ HELM
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpusatakaan Universitas Sanata Dharma hak untuk menyimpan,
mengalihkan dalam bentuk media lain, mengelolanya di internet atau media lain
untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun
memberikan royalti kepada saya selama saya tetap mencantumkan nama saya
sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal,……………………
Yang menyatakan,
Alfonsus Doni Setyawan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji syukur dan terima kasih penulis panjatkan kepada Tuhan Yesus Kristus
atas segala berkat dan anugerah-Nya sehingga skripsi yang berjudul “APLIKASI
DATA MINING MENGGUNAKAN ALGORITMA APRIORI UNTUK
ANALISIS POLA PENJUALAN DI XYZ HELM” ini dapat diselesaikan dengan
baik. Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar sarjana
di Program Studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas
Sanata Dharma Yogyakarta.
Penulisan skripsi ini tentunya dapat selesai berkat dukungan dan bantuan dari
berbagai pihak. Oleh karena itu, penulis ingin mengucapkan banyak terima kasih
kepada :
1. Bpk. Sudi Mungkasi, Ph.D., selaku Dekan Fakultas Sains dan Teknologi
Universitas Sanata Dharma.
2. Ibu Dr. Anastasia Rita Widarti, M.Kom selaku Kepala Program Studi Fakultas
Psikologi Universitas Sanata Dharma.
3. Ibu Ridowati Gunawan, S.Kom, M.T., selaku Dosen Pembimbing Skripsi.
Terima kasih atas kesabarannya dalam membimbing pengerjaan tugas akhir.
4. Segenap Bapak / Ibu staf pengajar di Fakultas Sains dan Teknologi Universitas
Sanata Dharma, khususnya Program Studi Teknik Informatika. Terima kasih
untuk ilmu dan pelayanan yang telah diberikan.
5. Bapak, Ibu dan adik yang tercinta. Terima kasih untuk dukungan dan doa yang
selalu menguatkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
6. Hilda Muliastu Widesti, pacar yang tersayang. Terima kasih untuk kesabaran,
cinta, dan perhatiannya. Terima kasih telah selalu mengingatkan saat rasa
malas melanda.
7. Untuk teman-teman di Universitas Sanata Dharma, dan semua teman-teman
lainnya yang selalu memberi dukungan, dan sindiran juga ilmu yang berguna
hingga skripsi saya selesai.
8. Seluruh pihak yang telah membantu selesainya skripsi ini, yang tidak bisa
disebutkan satu per satu. Terima kasih banyak.
Pada akhirnya penulis menyadari bahwa skripsi ini memiliki banyak
kekurangan. Oleh karena itu, penulis mengharapkan saran dan kritik yang dapat
membuat skripsi ini menjadi lebih baik lagi.
Yogyakarta, ....................2016
Penulis
Alfonsus Doni Setyawan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN JUDUL .............................................................................................. i
HALAMAN PERSETUJUAN PEMBIMBING ................................................. ii
HALAMAN PENGESAHAN .......................................................................................... iii
HALAMAN MOTTO .......................................................................................... iv
HALAMAN PERSEMBAHAN............................................................................. v
HALAMAN PERNYATAAN KEASLIAN KARYA ........................................ vi
ABSTRAK ........................................................................................................... vii
ABSTRACT ......................................................................................................... viii
HALAMAN PERSETUJUAN PUBLIKASI KARYA ILMIAH ..................... ix
KATA PENGANTAR ........................................................................................... x
DAFTAR ISI ........................................................................................................ xii
DAFTAR GAMBAR .......................................................................................... xvi
DAFTAR TABEL............................................................................................. xviii
BAB I PENDAHULUAN .......................................................................... 1
1.1.Latar Belakang .......................................................................... 1
1.2.Rumusan Masalah ..................................................................... 3
1.3.Tujuan dan Manfaat .................................................................. 3
1.4.Batasan Masalah........................................................................ 3
1.5.Metodologi ................................................................................ 4
1.6.Sistematika Penulisan................................................................ 5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
BAB II LANDASAN TEORI ..................................................................... 7
2.1. Pengertian Data Mining ........................................................... 7
2.2. Proses Penambangan Data ....................................................... 7
2.3. Teknik Penambangan Data ...................................................... 9
2.4. Teknik Asosiasi ...................................................................... 10
2.5. Algoritma Apriori .................................................................. 12
BAB III ANALISIS DAN DESAIN SISTEM .......................................... 16
3.1. Identifikasi Sistem ................................................................. 16
3.2. Analisis Sistem ....................................................................... 17
3.3. Pemrosesan Data .................................................................... 18
3.4. Use Case Diagram .................................................................. 23
3.4.1. Diagram Use Case ....................................................... 23
3.4.2. Definisi Use Case ........................................................ 24
3.5. Diagram Aktivitas .................................................................. 25
3.5.1. Diagram Aktivitas Menginput Data ............................ 25
3.5.2. Diagram Aktivitas Menginput Data Penjualan ............ 25
3.5.3. Diagram Aktivitas Melihat Histori Penjualan ............. 26
3.5.4. Diagram Aktivitas Mencari Rule Penjualan ................ 26
3.5.5. Diagram Aktivitas Melihat Hasil Apriori .................... 27
3.6. Diagram Sekuensial ............................................................... 28
3.6.1. Diagram Sekuensial Menginput Data ......................... 28
3.6.2. Diagram Sekuensial Menginput Data Penjualan......... 28
3.6.3. Diagram Sekuensial Melihat Histori Penjualan .......... 29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
3.6.4. Diagram Sekuensial Mencari Rule Penjualan ............. 29
3.6.5. Diagram Sekuensial Melihat Hasil Apriori ................. 30
3.7. ER Diagram ........................................................................... 30
3.7.1. Model Data Konseptual............................................... 30
3.7.2. Model Data Logikal .................................................... 31
3.7.3. Model Data Fisikal ...................................................... 32
3.8. Desain Program ...................................................................... 34
BAB IV IMPLEMENTASI SISTEM ....................................................... 38
4.1. Spesifikasi Hardware dan Software ....................................... 38
4.4.1. Spesifikasi Hardware ................................................... 38
4.4.2. Spesifikasi Software .................................................... 38
4.2. Pembuatan Database .............................................................. 38
4.3. Koneksi Java dan MySQL ..................................................... 38
4.4. Implementasi Program ........................................................... 40
4.4.1. Halaman Utama ........................................................... 40
4.4.2. Halaman Barang .......................................................... 40
4.4.3. Halaman Penjualan ...................................................... 41
4.4.4. Halaman Histori Penjualan .......................................... 42
4.4.5. Halaman Apriori .......................................................... 43
4.5. Pengujian Program ................................................................. 50
BAB V ANALISIS SISTEM .................................................................... 53
5.1. Analisis Sistem Pengujian ...................................................... 53
5.2. Manfaat Sistem ...................................................................... 55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
5.3. Kelebihan dan Kekurangan Program ..................................... 55
5.3.1. Kelebihan Program...................................................... 55
5.3.2. Kekurangan Program ................................................... 56
BAB VI PENUTUP .................................................................................... 57
6.1. Kesimpulan ............................................................................ 57
6.2. Saran ...................................................................................... 57
DAFTAR PUSTAKA .......................................................................................... 58
LAMPIRAN ......................................................................................................... 59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR
Gambar 2.1 Langkah KDD .................................................................................... 9
Gambar 3.1 Use Case ........................................................................................... 23
Gambar 3.2 Diagram Aktivitas Menginput Data Barang..................................... 25
Gambar 3.3 Diagram Aktivitas Menginput Data Penjualan ................................ 25
Gambar 3.4 Diagram Aktivitas Melihat Histori Penjualan .................................. 26
Gambar 3.5 Diagram Aktivitas Mencari Rule Penjualan..................................... 26
Gambar 3.6 Diagram Aktivitas Melihat Hasil Apriori......................................... 27
Gambar 3.7 Diagram Sekuensial Menginput Data Barang .................................. 28
Gambar 3.8 Diagram Sekuensial Menginput Data Penjualan .............................. 28
Gambar 3.9 Diagram Sekuensial Melihat Histori Penjualan ............................... 29
Gambar 3.10 Diagram Sekuensial Mencari Rule Penjualan ................................ 29
Gambar 3.11 Diagram Sekuensial Melihat Hasil Apriori .................................... 30
Gambar 3.12 ER Diagram Konseptual................................................................. 30
Gambar 3.13 Desain Menu Utama ....................................................................... 34
Gambar 3.14 Desain Menu Barang ...................................................................... 35
Gambar 3.15 Desain Menu Penjualan .................................................................. 36
Gambar 3.16 Desain Histori Penjualan ................................................................ 37
Gambar 3.17 Desain Menu Apriori ...................................................................... 37
Gambar 4.1 Halaman Utama ................................................................................ 40
Gambar 4.2 Halaman Barang ............................................................................... 41
Gambar 4.3 Halaman Penjualan ........................................................................... 42
Gambar 4.4 Halaman Histori Penjualan............................................................... 43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 4.5 Halaman Apriori ............................................................................... 44
Gambar 4.6 Hasil Analisis ................................................................................... 45
Gambar 4.7 Data Penjualan.................................................................................. 51
Gambar 4.8 Hasil Rule Program .......................................................................... 51
Gambar 4.9 Hasil Manual Excel .......................................................................... 52
Gambar 5.1 Hasil Apriori ..................................................................................... 54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
DAFTAR TABEL
Tabel 2.1 Contoh Transaksi Penjualan................................................................. 13
Tabel 2.2 Contoh Penentuan C1........................................................................... 13
Tabel 2.3 Contoh Kombinasi Data ....................................................................... 14
Tabel 2.4 Contoh Kombinasi Data ....................................................................... 15
Tabel 3.1 Atribut Tabel Penjualan_det ................................................................ 17
Tabel 3.2 Atribut Untuk Penambangan ................................................................ 18
Tabel 3.3 Atribut Tabel Detailpenjualan .............................................................. 19
Tabel 3.4 Atribut Tabel Detailpenjualancanvaser ................................................ 20
Tabel 3.5 Definisi Use Case ................................................................................. 24
Tabel 3.6 Tabel Logikal Warna ........................................................................... 31
Tabel 3.7 Tabel Logikal Merk ............................................................................. 31
Tabel 3.8 Tabel Logikal Tipe ............................................................................... 31
Tabel 3.9 Tabel Logikal Barang........................................................................... 31
Tabel 3.10 Tabel Logikal Penjualan_det ............................................................. 31
Tabel 3.11 Tabel Logikal Penjualan .................................................................... 32
Tabel 3.12 Tabel Logikal Pelanggan ................................................................... 32
Tabel 3.13 Tabel Fisikal Merk ............................................................................. 32
Tabel 3.14 Tabel Fisikal Tipe .............................................................................. 32
Tabel 3.15 Tabel Fisikal Barang .......................................................................... 33
Tabel 3.16 Tabel Fisikal Penjualan_det ............................................................... 33
Tabel 3.17 Tabel Fisikal Penjualan ...................................................................... 34
Tabel 3.18 Tabel Fisikal Pelanggan ..................................................................... 34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
Tabel 5.1 Hasil Pengujian .................................................................................... 53
Tabel 5.2 Hasil Perhitungan Lift Ratio ................................................................ 55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I
PENDAHULUAN
1.1. Latar Belakang
Beberapa tahun terakhir, jumlah kendaraan terutama sepeda motor
meningkat di kota-kota besar. Misalnya, di Yogyakarta, jumlah motor
bertambah banyak setiap tahunnya sejak 2009 (Iskandar, 24 Agustus 2014).
Tidak mengherankan apabila penduduk di kota-kota besar memilih sepeda
motor sebagai alat transportasi utama sebab sepeda motor memudahkan
mereka untuk berpindah dari satu tempat ke tempat yang lain dengan cepat.
Selain itu, sepeda motor juga dapat membantu mereka menghemat waktu
untuk mencapai suatu tempat dibandingkan menggunakan kendaraan umum.
Ketika mengendarai sepeda motor, seseorang wajib menggunakan helm.
Helm merupakan alat pelindung keselamatan yang memiliki fungsi sangat
penting yaitu melindungi pengendara dari kecelakaan yang tidak diinginkan,
seperti jatuh atau terkena benturan. Untuk memaksimalkan fungsi pelindung
keselamatan tersebut, saat ini sudah banyak helm yang dilengkapi fitur
tambahan. Misalnya, ada helm yang dilengkapi dengan kaca ganda (double
visor) sehingga pengendara dapat menghindari sinar matahari yang
menyilaukan ketika mengendarai motor. Ada pula helm yang dilengkapi
dengan kunci pengaman (anti theft system) sehingga tidak mudah dicuri
ketika ditinggalkan di motor.
Pada saat ini, ada berbagai merk dan tipe helm yang beredar di pasaran.
Helm pun semakin menarik dengan aneka pilihan warna, motif, maupun
gambar. Hal ini membuat helm tidak hanya berfungsi sebagai alat pelindung
keselamatan namun juga membuat pengendara motor terlihat gaya.
XYZ Helm merupakan distributor penjualan helm yang melayani
permintaan dari Yogyakarta dan Jawa Tengah. Banyaknya permintaan helm
membuat perusahaan tersebut membutuhkan perangkat lunak untuk
mengelola transaksi yang dilakukan. Dengan melihat catatan-catatan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
transaksi yang disimpan dalam perangkat lunak tersebut, perusahaan dapat
dengan mudah mengetahui helm yang sesuai dengan permintaan pasar.
Salah satu area penerapan data mining adalah di dalam bidang promosi.
Bila sasaran promosi tidak ditentukan secara baik, dalam arti tidak
diupayakan mencari sasaran promosi yang potensial, maka hanya akan
menghabiskan banyak waktu dan biaya yang seharusnya bisa diminimalisir
melalui pemilihan target promosi yang baik. Salah satu cara yang dapat
diterapkan adalah dengan menerapkan penggunaan data mining. Dengan data
mining, diharapkan dapat mengoptimalkan penjualan. Penjualan barang yang
laku dan kurang laku dipasaran akan terlihat sehingga dengan demikian
barang yang kurang laku dapat dioptimalkan dengan cara obral atau bisa
dipaketkan dengan barang yang laris atau bisa juga dapat dimasukkan ke
dalam bonus penjualan bagi pembeli dengan jumlah banyak.
Algoritma Apriori adalah algoritma pengambilan data dengan aturan
asosiatif (Association rule) untuk menentukan hubungan asosiatif suatu
kombinasi item (Kusrini, 2007). Association Rule yang dimaksud dilakukan
melalui mekanisme penghitungan support dan confidence dari suatu
hubungan item. Sebuah aturan asosiasi dikatakan interesting jika nilai
support adalah lebih besar dari minimum support dan juga nilai confidence
adalah lebih besar dari minimum confidence. Algoritma Apriori ini akan
cocok untuk diterapkan bila terdapat beberapa hubungan item yang ingin
dianalisis. Penggunaan algoritma ini, akan memberikan pengetahuan bagi
pengguna berupa aturan atau pola penjualan yang telah terjadi.
Dari latar belakang tersebut, penulis tertarik menerapkan data mining
dalam penjualan di XYZ helm sehingga memudahkan penentuan hubungan
asosiatif tiap barang yang terjual. Hasil tersebut diharapkan dapat membantu
pemilik perusahan dalam pengoptimalan penjualan barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.2. Rumusan Masalah
Berdasarkan latar belakang yang telah dijelaskan di atas, maka dapat
dirumuskan masalah, yaitu :
a. Bagaimana membangun aplikasi data mining untuk analisis pola
penjualan helm di XYZ Helm menggunakan algoritma Apriori?
b. Bagaimana hasil penggunaan algoritma Apriori untuk analisis pola
penjualan?
1.3. Tujuan dan Manfaat
Adapun tujuan yang ingin dicapai adalah :
Mengetahui analisis pola penjualan helm dengan penerapan data mining
menggunakan algoritma Apriori.
Sedangkan manfaat yang diperoleh adalah :
a. Bagi Penulis
Dapat menambah pengetahuan dan wawasan lebih lanjut dari
perkuliahan, dan dapat mengaplikasikan ke dalam kasus yang nyata.
b. Bagi Pengguna
Diharapkan dari penelitian ini, informasi yang diperoleh menjadi
pertimbangan pengguna untuk marketing sehingga barang yang paling
laku atau kurang laku dapat dioptimalkan penjualannya.
1.4. Batasan Masalah
Agar tidak menyimpang dari permasalahan dan dapat mencapai sasaran
yang diharapkan, maka penulis membatasi permasalahan pada:
a. Data yang digunakan adalah data penjualan helm bulan Januari sampai
Februari 2015.
b. Data diperoleh dari basis data program yang telah berjalan di XYZ helm.
c. Data yang digunakan adalah No Faktur, Kode Item, Nama Item, dan
Jumlah Barang.
d. Berdasarkan data tersebut, output program adalah pola penjualan helm.
e. Pembuatan aplikasi menggunakan NetBeans IDE 6.8 dan MySQL.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.5. Metodologi
Metode penelitian yang digunakan dalam penelitian ini adalah studi
kasus dengan langkah-langkah sebagai berikut :
a. Pengumpulan Data
Pengambilan data dari rekap transaksi penjualan helm pada XYZ
Helm.
b. Penambangan Data
Data Cleaning (Pembersihan Data)
Pembersihan data adalah langkah awal yang penting dalam
proses mining karena data yang berkualitas dapat memberikan
informasi yang berkualitas pula. Pembersihan data akan dilakukan
pada data yang kosong dan dapat dilakukan dengan cara
penghapusan tuple, mengisi dengan konstanta, atau dengan nilai
rata-rata.
Data Integration (Integrasi Data)
Integrasi data adalah menggabungkan berbagai sumber ke
sebuah tempat penyimpanan data. Hal ini berguna untuk mendeteksi
dan menyelesaikan data yang mengandung konflik sehingga data
yang diperoleh pun menjadi tidak terdapat redundancy.
Data Selection (Seleksi Data)
Data yang relevan diambil dan dianalisis dari sebuah basis data.
Data Transformation (Transformasi Data)
Transformasi data akan dilakukan untuk mengubah data
menjadi bentuk atau satuan yang tepat untuk ditambang. Hal ini
akan terjadi apa bila pada suatu kolom atribut, memiliki satuan
berbeda. Misalnya data nilai rapor yang memiliki data continue
diubah dalam interval tertentu.
Data Mining (Penambangan Data)
Mengaplikasikan metode yang digunakan yaitu Apriori untuk
mendapatkan pola data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Pattern Evaluation (Evaluasi Pola)
Mengidentifikasi pola-pola data yang menarik untuk
mempresentasikan pengetahuan berdasarkan pengukuran yang
penting.
Knowledge Presentation (Presentasi Pengetahuan)
Teknik visualisasi kepada pengguna untuk mempresentasikan
pengetahuan.
c. Uji Coba Sistem
Melakukan uji coba pada aplikasi data mining menggunakan
metode Apriori untuk analisis pola penjualan di XYZ secara
keseluruhan terhadap pengguna.
Menganalisis hasil pola yang didapat dengan teknik Apriori dari
perhitungan data yang ada.
1.6. Sistematika Penulisan
Sistematika penulisan laporan tugas akhir ini adalah sebagai berikut :
1. BAB I PENDAHULUAN
Berisi tentang latar belakang, rumusan masalah, tujuan dan manfaat,
batasan masalah, metodologi penelitian dan sistematika penulisan.
2. BAB II LANDASAN TEORI
Berisi penjelasan teori-teori yang digunakan sebagai dasar untuk
pembuatan aplikasi.
3. BAB III ANALISIS DAN DESAIN SISTEM
Berisi tentang analisis sistem yang akan dibuat dengan menerapkan
teori-teori yang telah dipaparkan pada bab sebelumnya. Terdapat
pembuatan desain sistem yang akan dibuat.
4. BAB IV IMPLEMENTASI SISTEM
Berisi tentang penjelasan implementasi sistem informasi praktek
dokter umum yang meliputi struktur menu sistem dan tampilan
program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
5. BAB V ANALISIS SISTEM
Berisi tentang analisis hasil dari implementasi sistem. Terdapat
penjelasan tentang hasil uji coba sistem dan kelebihan atau
kekurangan yang ada.
6. BAB VI PENUTUP
Berisi tentang kesimpulan dan saran untuk pengembangan sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
BAB II
LANDASAN TEORI
2.1. Pengertian Data Mining
Data mining (Penambangan Data) adalah suatu proses menemukan
hubungan yang berarti, pola, dan kecenderungan dengan memeriksa dalam
sekumpulan besar data yang tersimpan dalam penyimpanan dengan
menggunakan teknik pengenalan pola seperti teknik statistika dan
matematika (Kusrini dan Luthfi, 2009).
Secara sederhana dapat diartikan bahwa data mining atau yang disebut
juga dengan Knowledge Discovery in Database (KDD) adalah serangkaian
proses untuk mengekstrak pola yang penting atau menarik dari sejumlah data
yang sangat besar berupa pengetahuan yang selama ini tidak diketahui secara
manual.
Data mining muncul setelah banyak dari pemilik data baik perorangan
maupun organisasi mengalami penumpukan data yang telah terkumpul
selama beberapa tahun, misalnya data pembelian, data penjualan, data
nasabah, data transaksi, data akademik, dan sebagainya. Kemudian muncul
pertanyaan dari pemilik data tersebut, apa yang harus dilakukan terhadap
tumpukan data tersebut.
2.2. Proses Penambangan Data (Data Mining)
Data mining merupakan serangkaian proses yang terdiri dari langkah-
langkah sesuai pada Gambar 2.1 :
1. Data Selection (Seleksi Data)
Pada langkah ini, data yang relevan akan dianalisis yang diambil
dari sebuah basis data. Akan dilakukan analisis korelasi untuk analisis
fitur. Atribut-atribut data akan dicek apakah relevan ataupun atribut yang
mengalami redudansi tidak akan digunakan. Atribut yang diharapkan
adalah atribut yang bersifat independen. Artinya antara atribut satu
dengan atribut yang lain tidak saling mempengaruhi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2. Data Cleaning (Pembersihan Data)
Pada langkah ini, noise data yang tidak konsisten akan dihapus. Di
dunia nyata, data cenderung tidak lengkap, noisy, dan tidak konsisten.
Pembersihan data secara rutin mencoba mendeteksi missing values,
memperhalus noise dari luar dengan mengidentifikasi outliers, dan
membenarkan ketidak konsistenan di dalam data.
3. Data Integration (Integrasi Data)
Pada langkah ini, akan dilakukan penggabungan data dari berbagai
macam sumber data. Data ini akan digabungkan ke dalam penyimpanan
data yang koheren. Macam-macam penyimpanan termasuk multiple
databases, data cubes, atau flat files. Hal-hal yang perlu diperhatikan
dalam integrasi data yaitu integrasi skema, pencocokan objek, redudansi
data.
4. Data Transformation (Transformasi Data)
Pada langkah ini, data ditransformasikan atau dikonsolidasi kedalam
bentuk-bentuk yang sesuai atau tepat untuk ditambang.
5. Data Mining (Penambangan Data)
Merupakan sebuah proses penting, dimana metode-metode
diaplikasikan dengan tepat untuk mengekstrak pola data.
6. Pattern Evaluation (Evaluasi Pola)
Mengidentifikasi pola yang sungguh-sungguh menarik untuk
merepresentasikan pengetahuan berdasarkan beberapa pengukuran yang
penting.
7. Knowledge Presentation (Presentasi Pengetahuan)
Teknik visualisasi dalam merepresentasikan pengetahuan yang
dipresentasikan kepada pengguna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Gambar 2.1. Langkah KDD ( Han & Kamber 2006)
2.3. Teknik Penambangan Data
Penambangan data dibagi menjadi beberapa teknik, seperti :
1. Association Rule
Teknik mining untuk menemukan aturan assosiatif antara suatu
kombinasi item. Contoh dari aturan assosiatif dari analisa pembelian
di suatu pasar swalayan adalah bisa diketahui berapa besar
kemungkinan seorang pelanggan membeli roti bersamaan dengan
susu. Dengan pengetahuan tersebut pemilik pasar swalayan dapat
mengatur penempatan barangnya atau merancang kampanye
pemasaran dengan memakai kupon diskon untuk kombinasi barang
tertentu. Penting tidaknya suatu aturan assosiatif dapat diketahui
dengan dua parameter, support yaitu persentase kombinasi item
tersebut dalam database dan confidence yaitu kuatnya hubungan
antar item dalam aturan assosiatif.
2. Classification
Proses untuk menemukan model atau fungsi yang menjelaskan atau
membedakan konsep atau kelas data, dengan tujuan untuk dapat
memperkirakan kelas dari suatu objek yang labelnya tidak diketahui.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Model itu sendiri bisa berupa aturan “jika-maka”, berupa decision
tree, formula matematis atau neural network.
3. Clustering
Berbeda dengan association rule mining dan classification dimana
kelas data telah ditentukan sebelumnya, clustering melakukan
pengelompokan data tanpa berdasarkan kelas data tertentu. Bahkan
clustering dapat dipakai untuk memberikan label pada kelas data
yang belum diketahui itu. Karena itu clustering sering digolongkan
sebagai metode unsupervised learning. Prinsip dari clustering adalah
memaksimalkan kesamaan antar anggota satu kelas dan
meminimumkan kesamaan antar kelas/cluster. Clustering dapat
dilakukan pada data yan memiliki beberapa atribut yang dipetakan
sebagai ruang multidimensi.
2.4. Teknik Asosiasi
Teknik asosiasi adalah merupakan suatu metode penambangan data
untuk mencari pola asosiasi yang sering muncul dalam data. Metode ini
popular karena sering digunakan untuk menganalisis keranjang belanja.
Aturan yang terbentuk akan berupa “jika maka” dalam suatu transaksi. Bisa
digambarkan jika membeli barang A maka membeli barang B terjadi dalam
satu transaksi.
Hal penting dalam teknik asosiasi :
1. Item, Itemset, dan k-Itemset
Sebuah nilai atribut disebut dengan item, kumpulan dari beberapa
item disebut dengan itemset, dan k-itemset adalah itemset yang berisi
k item.
2. Support
Persentasi dari transaksi yang mengandung seluruh itemset. Semakin
banyak persentasi support yang didapat bisa disimpulkan bahwa item
tersebut laku dipasaran karena muncul dibanyak transaksi, dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
sebaliknya semakin sedikit support yang diperoleh menandakan item
yang kurang laku.
… (2.1)
3. Confidence
Persentasi banyaknya A pada transaksi yang mengandung B.
… (2.2)
Support dan confidence adalah parameter yang digunakan untuk
mengukur aturan asosiasi. Aturan asosiasi tersebut dapat diperoleh dari
itemset yang mempunyai support dan confidence lebih besar dari minimum
support (minsup) dan minimum confidence (minconf).
Masalah yang mendasar dalam teknik asosiasi dibagi menjadi dua, yaitu
1. Menemukan seluruh itemset yang memiliki support >= minsup
Itemset yang memiliki support lebih besar atau sama dengan minsup
disebut dengan large itemset, sedangkan yang memiliki support lebih
kecil dari minimum support disebut dengan small itemset.
2. Menggunakan large itemset untuk menghasilkan aturan asosiasi yang
diinginkan.
Algoritma yang digunakan dalam teknik asosiasi antara lain :
1. Apriori
Algoritma ini mencari frequent itemset dari database transaksi
melalui beberapa tahap iterasi.
2. FP Growth
Algoritma ini berbeda dengan Apriori, tidak perlu melakukan
pencarian kandidat. Data direpresentasikan menggunakan Frequent
Pattern Tree melalui pendekatan devide and conquer untuk mendapat
frequent itemset.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
2.5.Algoritma Apriori
Langkah-langkah dari algoritma Apriori adalah sebagai berikut
(Ulmer,David,2002) :
1. Set k=1 (menunjuk pada itemset ke-1).
2. Hitung semua k-itemset (itemset yang mempunyai k item), untuk
mendapatkan candidate 1-itemset.
3. Hitung support dari semua calon itemset kemudian filter itemset tersebut
berdasarkan perhitungan minimum support, untuk mendapatkan frequent
1-itemset.
4. Gabungkan semua itemset berukuran k untuk menghasilkan calon
itemset k+1 atau candidate k-itemset.
5. Set k=k+1.
6. Ulangi langkah 3-5 sampai tidak ada itemset yang lebih besar yang dapat
dibentuk.
Apriori secara umum adalah mencari frequent itemset dari database
transaksi penjualan melalui beberapa tahap iterasi. Langkah pertama
algoritma ini adalah menghitung kejadian item untuk menentukan large 1-
itemset atau frequent itemset. Langkah berikutnya untuk large itemset
tersebut dilakukan penggabungan dari item yang telah lolos seleksi kemudian
itemset yang tidak lolos maka akan dihapus. Langkah berikutnya untuk item
yang telah lolos diiterasi tersebut maka akan digunakan untuk proses
selanjutnya, dan yang tidak lolos akan dihapus. Demikian langkah demi
langkah pencarian kandidat melalui iterasi sehingga memperoleh titik akhir
yang tidak dapat dilakukan iterasi lagi.
Untuk lebih jelasnya berikut ini merupakan contoh penerapan algoritma
Apriori untuk mencari aturan asosiasi :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Tabel 2.1 Contoh Transaksi Penjualan
Transaksi Item yang dibeli
1 Susu, Teh, Gula
2 Teh, Gula, Roti
3 Teh, Gula
4 Susu, Roti
5 Susu, Gula, Roti
6 Teh, Gula
7 Gula, Kopi, Susu
8 Gula, Kopi, Susu
9 Susu, Roti, Kopi
10 Gula, Teh, Kopi
Dari table data transaksi tersebut akan dicari pola asosiasi dengan
minimal support lebih dari 20% dan confidence lebih dari 35%. Maka
penyelesaiannya :
1. Langkah pertama menentukan C1 atau candidate 1-itemset dam
jumlah kemunculan disemua transaksi.
Tabel 2.2 Contoh Penentuan C1
Kombinasi Jumlah
Teh 5
Gula 8
Kopi 4
Susu 6
Roti 4
Support 1-itemset
- Support(Teh) = 5/10 = 50%
- Support(Gula) = 8/10 = 80%
- Support(Kopi) = 4/10 = 40%
- Support(Susu) = 6/10 = 60%
- Support(Roti) = 4/10 = 40%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
2. Kumpulkan data item yang mempunyai kemunculan lebih atau sama
dengan 2 sehingga menjadi kombinasi data.
Tabel 2.3 Contoh Kombinasi Data
Kombinasi Jumlah
Teh, Gula 5
Teh, Kopi 1
Teh, Susu 1
Teh, Roti 1
Gula, Kopi 3
Gula, Susu 4
Gula, Roti 2
Kopi, Susu 3
Kopi, Roti 1
Susu, Roti 3
Support 2-itemset
- Support(Teh,Gula) = 5/10 = 50%
- Support(Gula,Kopi) = 3/10 = 30%
- Support(Gula,Susu) = 4/10 = 40%
- Support(Gula,Roti) = 2/10 = 20%
- Support(Kopi,Susu) = 3/10 = 30%
- Support(Susu,Roti) = 3/10 = 30%
Confidence 2-itemset
- Confidence(Teh,Gula) = 5/5 = 100%
- Confidence(Gula,Kopi) = 3/8 = 37.5%
- Confidence(Gula,Susu) = 4/8 = 50%
- Confidence(Gula,Roti) = 2/8 = 25%
- Confidence(Kopi,Susu) = 3/4 = 75%
- Confidence(Susu,Roti) = 3/6 = 50%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
3. Kemudian buat gabungan antara itemset yang lolos sehingga menjadi
3itemset dan jumlah kemunculan disetiap transaksi.
Tabel 2.4 Contoh Kombinasi Data
Kombinasi Jumlah
Teh, Gula, Kopi 1
Teh, Gula, Susu 1
Gula, Susu, Kopi 2
Gula, Susu, Roti 0
Gula, Kopi, Roti 0
Kopi, Susu, Roti 1
Support 3-itemset
- Support(Gula Susu, Kopi) = 2/10 = 20%
Confidence 3-itemset
- Confidence(Gula Susu,Kopi) = 2/4 = 50%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
BAB III
ANALISIS DAN DESAIN SISTEM
3.1.Identifikasi Sistem
XYZ Helm merupakan distributor penjualan helm yang melayani
permintaan helm. Banyak permintaan ini membuat perusahaan memiliki data
penjualan yang terus bertambah setiap harinya. Data tersebut disimpan
didalam bentuk database dengan program penjualan yang telah berjalan. Data
yang disimpan sangat beragam dan sangat banyak. Hal tersebut sebenarnya
dapat berguna bagi pemilik usaha jika diolah lebih dalam untuk menentukan
keterkaitan penjualan dari setiap barang yang ada. Namun untuk menemukan
keterkaitan tersebut tentusaja akan sulit jika harus memilah dari setiap
penjualan yang ada. Masalah ini dapat diatasi dengan adanya penambangan
data karena semua data penjualan yang ada akan diolah oleh sistem sehingga
pemilik usaha dapat melihat keterkaitan dengan mudah.
Sistem ini berfungsi sebagai alat bantu untuk XYZ Helm dalam
menganalisis pola penjualan helm. Sistem ini menggunakan algoritma asosiasi
dan menggunakan teknik apriori. Sistem akan mengolah penjualan, data
barang harus terlebih dahulu dimiliki dan dapat dimasukan pada master barang
yang disediakan. Setiap penjualan yang dilakukan direkap dengan menyimpan
juga data barang yang dijual sehingga dapat diketahui pada setiap nota
penjualan terdapat barang apa saja yang keluar. Data tersebut akan di simpan
dalam database, semakin banyak data yang dimiliki dapat membuat hasil
menjadi semakin baik. Data penjualan yang telah tersimpan akan diolah
dengan teknik apriori. Keluaran dari teknik tersebut akan berupa tingkat
keterkaitan dari barang yang telah dibeli oleh konsumen dari XYZ Helm,
sehingga dapat diketahui barang yang diminati.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
3.2.Analisis Sistem
Langkah-langkah dari algoritma Apriori adalah sebagai berikut
(Ulmer,David,2002) :
1. Set k=1 (menunjuk pada itemset ke-1).
2. Hitung semua k-itemset (itemset yang mempunyai k item), untuk
mendapatkan candidate 1-itemset.
3. Hitung support dari semua calon itemset kemudian filter itemset
tersebut berdasarkan perhitungan minimum support, untuk
mendapatkan frequent 1-itemset.
4. Gabungkan semua itemset berukuran k untuk menghasilkan calon
itemset k+1 atau candidate k-itemset.
5. Set k=k+1.
6. Ulangi langkah 3-5 sampai tidak ada itemset yang lebih besar yang
dapat dibentuk.
Data yang akan digunakan untuk penelitian ini adalah data penjualan dari
XYZ Helm. Data tersebut diperoleh dari database program yang telah
berjalan. Jumlah data untuk penelitian ini terdapat 726 record yang tersimpan
dalam tabel penjualan_det. Berikut penjelasan detail atribut tabel tersebut pada
Table 3.1
Table 3.1 Atribut Tabel Penjualan_det
No Nama Atribut Keterangan
1 no_faktur Nomor faktur penjualan
2 kode_item Kode item yang terjual
3 nama_item Nama item yang terjual
4 satuan Satuan item yang terjual
5 harga_jual Harga jual per item
6 jumlah_barang Jumlah item yang terjual
7 disc Diskon penjualan per item
8 jumlah_harga Total harga dikali jumlah item yang terjual
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Data pada tabel tersebut masih merupakan data mentah, harus diproses
terlebih dahulu agar dapat dipakai untuk proses penambangan data.
3.3. Pemrosesan Data
Sebelum data dimasukan ke dalam sistem untuk proses penambangan
data, dilakukan pemrosesan awal terlebih dahulu. Pemrosesan tersebut
merupakan serangkaian langkah yang sesuai dengan KDD (Knowlage
Discovery in Database). Tidak semua langkah dilakukan dalam pemrosesan
awal tersebut karena dilihat dari data yang ada. Proses tersebut terdiri dari
langkah-langkah berikut :
1. Data Selection (Seleksi Data)
Proses seleksi data merupakan pemilihan data yang relevan untuk
penelitian. Pada database awal terdapat banyak atribut dalam tabel yang
tidak diperlukan karena tidak digunakan dalam proses penambangan
data. Sehingga dipilih beberapa atribut pada tabel 3.2.
Tabel 3.2 Atribut Untuk Penambangan
No Nama Atribut Keterangan
1 no_faktur Nomor faktur penjualan
2 kode_item Kode item yang terjual
3 nama_item Nama item yang terjual
4 jumlah_barang Jumlah item yang terjual
2. Data Cleaning (Pembersihan Data)
Proses pembersihan data merupakan langkah pertama yang harus
dilakukan. Dari data mentah yang ada dilakukan pembersihan dari data
yang tidak relevan. Namun dalam data penjualan ini tidak dilakukan
pembersihan karena data mentah tersebut dapat digunakan seluruhnya.
Record yang akan diolah berjumlah 726.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
3. Data Integration (Integrasi Data)
Proses integrasi data merupakan penggabungan data dari beberapa
sumber. Disini yang diperlukan untuk penambangan data adalah data
penjualan. Sementara data penjualan pada XYZ Helm terdapat dua jenis,
yaitu penjualan yang langsung dari toko dan penjualan canvaser. Untuk
itu diperlukan penggabungan terlebih dahulu dari rekap data penjualan
tersebut.
Tabel 3.3 Atribut Tabel Detailpenjualan
No Nama Atribut Keterangan
1 noFaktur Nomor faktur penjualan
2 kodeBarang Kode barang yang terjual
3 namaBarang Nama barang yang terjual
4 satuan Satuan item yang terjual
5 hargaJual Harga jual setelah diskon
6 quantity Jumlah barang terjual
7 discount Diskon per barang (%)
8 discountReal Diskon per barang (Rp)
9 discount2 Diskon kedua per barang (Rp)
10 total Total harga dari sejumlah barang
11 urut Urutan barang terjualan
12 hpp Harga pokok penjualan
13 hppdpp Harga pokok penjualan
14 hargasatuan Harga jual per barang
15 sisapesan Sisa pesan penjualan
16 statusReturOrder Status retur pemesanan
17 statusNotaKredit Status nota kredit penjualan
18 noUrut Urutan penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Tabel 3.4 Atribut Tabel Detailpenjualancanvaser
No Nama Atribut Keterangan
1 noFaktur Nomor faktur penjualan
2 kodeBarang Kode barang yang terjual
3 namaBarang Nama barang yang terjual
4 satuan Satuan item yang terjual
5 hargaJual Harga jual setelah diskon
6 quantity Jumlah barang terjual
7 discount Diskon per barang (%)
8 discountReal Diskon per barang (Rp)
9 discount2 Diskon kedua per barang (Rp)
10 total Total harga dari sejumlah barang
11 urut Urutan barang terjualan
12 hpp Harga pokok penjualan
13 hppdpp Harga pokok penjualan
14 hargasatuan Harga jual per barang
15 sisapesan Sisa pesan penjualan
16 statusReturOrder Status retur pemesanan
17 statusNotaKredit Status nota kredit penjualan
18 noUrut Urutan penjualan
19 kodeCanvaser Kode dari canvaser yang menjual
Dari kedua tabel diatas, akan dilakukan penggabungan menjadi satu
tabel untuk diolah. Tabel penggabungan tersebut merupakan tabel
penjualan_det pada Tabel 3.1.
4. Data Transformation (Transformasi Data)
Proses transformasi data merupakan proses pengubahan data
menjadi bentuk atau satuan yang tepat untuk ditambang. Pada data yang
dimiliki tidak memerlukan proses transformasi karena tidak memiliki
data continue karena data yang diambil adalah hasil masukkan program
sehingga tidak ada data kosong.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
5. Data Mining (Penambangan Data)
Proses penambangan data merupakan proses pengolahan data yang
telah didapat dari pemrosesan data. Pengolahan menggunakan algoritma
Apriori sebagai berikut :
1. Set k=1 (menunjuk pada itemset ke-1).
2. Hitung semua k-itemset (itemset yang mempunyai k item), untuk
mendapatkan candidate 1-itemset.
3. Hitung support dari semua calon itemset kemudian filter itemset
tersebut berdasarkan perhitungan minimum support, untuk
mendapatkan frequent 1-itemset.
4. Gabungkan semua itemset berukuran k untuk menghasilkan calon
itemset k+1 atau candidate k-itemset.
5. Set k=k+1.
6. Ulangi langkah 3-5 sampai tidak ada itemset yang lebih besar yang
dapat dibentuk.
6. Pattern Evaluation (Evaluasi Pola)
Proses evaluasi pola akan dilakukan dengan penggunaan lift ratio
untuk mengukur seberapa penting aturan yang telah didapat dari
program. Nilai ini akan menunjukkan kevalidan informasi apakah barang
A dibeli secara bersamaan dengan barang B, yang diperoleh dari hasil
perhitungan support dan confidence.
… (3.1)
Jika hasil perhitungan lift ratio lebih dari 1 maka dapat dikatakan
bahwa transaksi tersebut valid atau bisa dikatakan bahwa dalam
transaksi tersebut barang A dan B dibeli secara bersamaan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
7. Knowladge Presentation (Presentasi Pengetahuan)
Proses presentasi pengetahuan akan ditampilkan dalam bentuk
tabel java. Pada tabel tersebut akan ditampilkan asosiasi barang yang
dibeli secara bersamaan dan persentase jumlah support beserta
confidence. Dengan tampilan tersebut akan membantu mempermudah
pengguna untuk memahami hasil dari proses penambangan data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
3.4. Use Case Diagram
1.4.1. Diagram Use Case
Pada sistem ini aka ada 1 pengguna. Kegiatan yang dapat
dilakukan adalah menginput data, melihat histori penjualan, mencari
rule penjualan, dan melihat hasil apriori. Dari kegiatan yang dapat
dilakukan, terdapat 1 kegiatan yang terdapat keterangan depands on
yang artinya baru dapat dilakukan setelah kegiatan sebelumnya
dikerjakan. Ditunjukan pada Gambar 3.1
Gambar 3.1 Use Case
Menginput
Data Barang
Melihat
Histori
Penjualan
Melihat Hasil
Apriori
Pengguna
Mencari
rule penjualan
<<depands on>>
Menginput
Data
Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
1.4.2. Definisi Use Case
Deskripsi dari use case pada Gambar 3.1 dijabarkan dalam Tabel
3.5.
Tabel 3.5 Definisi Use Case
No Use Case Deskripsi
1 Menginput Data
Barang
Pengguna dapat menambahkan data barang. Data
tersebut dapat diinputkan sesuai dengan isian yang
telah disediakan pada sistem kemudian akan
tersimpan dalam database.
2 Menginput Data
Penjualan
Pengguna dapat menambahkan data penjualan. Data
tersebut dapat diinputkan sesuai dengan isian yang
telah disediakan pada sistem kemudian akan
tersimpan dalam database.
3 Melihat Histori
Penjualan
Pengguna dapat melihat histori data penjualan. Data
tersebut diperoleh dari database yang telah
menyimpan data dari setiap penjualan yang pernah
dilakukan.
4 Mencari Rule
Penjualan
Pengguna dapat mencari rule penjualan. Pada
kegiatan ini sebenarnya pengguna hanya akan
menekan tombol dan pencarian rule akan dilakukan
oleh sistem.
5 Melihat Hasil
Apriori
Pengguna dapat melihat hasil output dari algoritma
apriori. Hasil yang ditampilkan adalah hasil dari
pencarian rule yang telah dilakukan sebelumnya.
Hasil ini akan muncul jika kegiatan Mencari Rule
Penjualan telah selesai dikerjakan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
3.5.Diagram Aktivitas
1.5.1. Diagram Aktivitas Menginput Data
Menekan tombol Barang Menampilan form barang
Menyimpan ke databaseMenekan tombol Simpan
Memasukan data sesuai
field
Pengguna Sistem
Gambar 3.2 Diagram Aktivitas Menginput Data Barang
1.5.2. Diagram Aktivitas Menginput Data Penjualan
Menekan tombol
Penjualan
Menampilkan form
penjualan
Menyimpan ke databaseMenekan tombol Simpan
Memasukan data sesuai
field
Pengguna Sistem
Gambar 3.3 Diagram Aktivitas Menginput Data Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
1.5.3. Diagram Aktivitas Melihat Histori Penjualan
Menekan tombol Analisa
Menampilan form histori
penjualan
Pengguna Sistem
Mengambil data dari
database
Gambar 3.4 Diagram Aktivitas Melihat Histori Penjualan
1.5.4. Diagram Aktivitas Mencari Rule Penjualan
Menekan tombol Analisa
Menampilan form histori
penjualan
Menekan tombol Proses
Pengguna Sistem
Mengambil data dari
database
Menampilan form Apriori
Menghitung rule
penjualanMenekan tombol Analisa
Gambar 3.5 Diagram Aktivitas Mencari Rule Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
1.5.5. Diagram Aktivitas Melihat Hasil Apriori
Menekan tombol Analisa
Menampilan form histori
penjualan
Menekan tombol Proses
Pengguna Sistem
Mengambil data dari
database
Menampilan form Apriori
Menghitung rule
penjualanMenekan tombol Analisa
Menampilkan hasil pola
Gambar 3.6 Diagram Aktivitas Melihat Hasil Apriori
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
3.6. Diagram Sekuensial
1.6.1. Diagram Sekuensial Menginput Data
Mengisi data
barang
Form Barang
boudary
Barang
entity
tambahBarang()
Menekan
tombol Simpan
Gambar 3.7 Diagram Sekuensial Menginput Data Barang
1.6.2. Diagram Sekuensial Menginput Data Penjualan
Mengisi data
penjualan
Form
Penjualan
boudary
Barang
entity
tambahBarang()
Menekan
tombol Simpan
Gambar 3.8 Diagram Sekuensial Menginput Data Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
1.6.3. Diagram Sekuensial Melihat Histori Penjualan
Form Histori
Penjualan
boudary
Barang
entity
getAllDetail()
Menampilkan
data penjualan
Gambar 3.9 Diagram Sekuensial Melihat Histori Penjualan
1.6.4. Diagram Sekuensial Mencari Rule Penjualan
Form Histori
Penjualan
boudary
Barang
entity
getAllDetail()
Menampilkan
data penjualan
Form Apriori
boudary
Menekan tombol
Proses
Menekan tombol
Analisa
c2() c3()
Gambar 3.10 Diagram Sekuensial Mencari Rule Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
1.6.5. Diagram Sekuensial Melihat Hasil Apriori
Form Histori
Penjualan
boudary
Barang
entity
getAllDetail()
Menampilkan
data penjualan
Form Apriori
boudary
Menekan tombol
Proses
Menekan tombol
Analisac2() c3()
Menampilkan
hasil pola
Gambar 3.11 Diagram Sekuensial Melihat Hasil Apriori
3.7. ER Diagram
1.7.1. Model Data Konseptual
pelanggan beli barang punya merk
punya
tipe
1..*1..* 1..1 1..*
1..1
1..*
warnapunya
1..1
1..*
Gambar 3.12 ER Diagram Konseptual
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
1.7.2. Model Data Logikal
1. Tabel Warna
Tabel 3.6 Tabel Logikal Warna
Kode_warna Nama_warna
2. Tabel Merk
Tabel 3.7 Tabel Logikal Merk
kodemerk namamerk
3. Tabel Tipe
Tabel 3.8 Tabel Logikal Tipe
kodetipe namatipe kodemerk
4. Tabel Barang
Tabel 3.9 Tabel Logikal Barang
Kode_
item
Nama_
item
stok Harga_
beli
Harga_
jual
satuan kodemerk kodetipe kodewarna
5. Tabel Penjualan_det
Tabel 3.10 Tabel Logikal Penjualan_det
No_faktur Kode_item Nama_item satuan Harga_jual Jumlah_
barang
disc Jumlahh_
harga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
6. Tabel Penjualan
Tabel 3.11 Tabel Logikal Penjualan
No_faktur Tgl_faktur Total_harga Diskon Grand_total Kode_pel
7. Tabel Pelanggan
Tabel 3.12 Tabel Logikal Pelanggan
Kode_pel Nama Alamat Kodepos telp
1.7.3. Model Data Fisikal
1. Tabel Merk
Tabel 3.13 Tabel Fisikal Merk
merk
kodemerk (PK)
namamerk
varchar(3)
varchar(40)
2. Tabel Tipe
Tabel 3.14 Tabel Fisikal Tipe
tipe
kodetipe (PK)
namatipe
kodemerk (FK)
varchar(5)
varchar(40)
varchar(3)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
3. Tabel Barang
Tabel 3.15 Tabel Fisikal Barang
barang
kode_item (PK)
nama_item
stok
harga_beli
harga_jual
satuan
kodemerk (FK)
kodetipe (FK)
kode_warna (FK)
varchar(15)
varchar(30)
int(11)
double
double
varchar(10)
varchar(4)
varchar(4)
varchar(4)
4. Tabel Penjualan_det
Tabel 3.16 Tabel Fisikal Penjualan_det
penjualan_det
no_faktur (FK)
kode_item (FK)
nama_item
satuan
harga_jual
jumlah_barang
disc
jumlah_harga
varchar(20)
varchar(30)
varchar(50)
varchar(11)
double
double
double
double
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
5. Tabel Penjualan
Tabel 3.17 Tabel Fisikal Penjualan
penjualan
no_faktur (PK)
tgl_faktur
total_harga
diskon
grand_total
kode_pel (FK)
varchar(20)
varchar(20)
double
double
double
varchar(20)
6. Tabel Pelanggan
Tabel 3.18 Tabel Fisikal Pelanggan
pelanggan
kode_pel (PK)
nama
alamat
kodepos
telp
varchar(15)
varchar(35)
varchar(30)
varchar(7)
varchar(13)
3.8. Desain Program
1. Menu Utama
Gambar 3.13 Desain Menu Utama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
2. Barang Form
Gambar 3.14 Desain Menu Barang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
3. Penjualan Form
Gambar 3.15 Desain Menu Penjualan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
4. DetailPenjualan Form
Gambar 3.16 Desain Histori Penjualan
5. Apriori Form
Gambar 3.17 Desain Menu Apriori
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
BAB IV
IMPLEMENTASI SISTEM
4.1. Spesifikasi hardware dan software
1.1.1. Spesifikasi hardware
1. Prosesor Intel Pentium Dual Core
2. Memori 2 GB
3. Hardisk 320 GB
1.1.2. Spesifikasi software
1. Sistem Operasi Windows 8.1 Pro
2. JDK1.8.0_65 dan JRE1.8.0_65
3. Netbeans IDE 6.8
4. SQLYog
4.2. Pembuatan Database
Pada bagian ini dilakukan pembuatan database baru pada MySQL dengan
bantuan SQLYog untuk menyimpan data-data yang akan digunakan. Adapun
langkah-langkah pembuatan database sebagai berikut :
1. Membuat database baru dengan nama apriori.
2. Pilih database yang baru saja dibuat kemudian Create table.
3. Buat tabel sesuai dengan perancangan yang telah dibuat.
4.3. Koneksi Java dan MySQL
Untuk menjembatani komunikasi data antara Java dengan MySQL perlu
digunakan JDBC (Java Databases Connectivity). Langkah untuk membuat
koneksi untuk keduanya, dengan :
1. Menambahkan driver dari library Java, yaitu MySQL JDBC Driver –
mysql-connector-java-5.16.bin.jar.
2. Membuat Java class untuk membuat koneksi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Pada file koneksi.java ini ada fungsi yang berguna :
1. koneksiDatabase()
Fungsi ini digunakan untuk mendefinisikan letak dari database
yang akan dituju. Terdapat url, user, password yang akan
digunakan pengisian letaknya.
public class Koneksi {
private static Connection connection;
public Connection con;
public Statement stat;
public static Connection koneksiDatabase() throws SQLException {
if (connection == null) {
DriverManager.registerDriver(new Driver());
String url = "jdbc:mysql://localhost/aprioridataasli";
String user = "root";
String password = "admin";
connection = DriverManager.getConnection(url,user,password);
}
return connection;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
4.4. Implementasi Program
1.4.1. Halaman Utama
Halaman utama ini merupakan halaman yang ditampilkan pertama
kali ketika program dijalankan. Pada tampilan halaman ini, terdapat 3
tombol yaitu tombol barang, penjualan, dan analisis.
Gambar 4.1 Halaman Utama
1.4.2. Halaman Barang
Halaman ini merupakan halaman yang muncul ketika menekan
tombol barang di halaman utama. Halaman ini digunakan untuk
memasukan data barang baru atau melakukan edit untuk barang yang
sudah ada. Barang disini dapat digunakan untuk melakukan penjualan.
Dalam data barang ini, terdapat kode barang yang telah otomatis dari
program, kemudian merk, tipe, warna, dan satuan dalam bentuk combo
box. Lalu terdapat nama barang, stok, ritel setelah ppn, dan beli setelah
ppn yang dapat diisi oleh pengguna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Gambar 4.2 Halaman Barang
1.4.3. Halaman Penjualan
Halaman ini merupakan halaman yang muncul ketika menekan
tombol penjualan di halaman utama. Halaman ini digunakan untuk
menambahkan data penjualan. Data penjualan akan digunakan untuk
analisis dengan algoritma apriori. Pertama kali pengguna harus
memasukan pelanggan kemudian akan otomatis diikuti oleh alamat,
jika pelanggan telah ada dalam database. Lalu diikuti dengan
mengisikan barang yang dijual sehingga penjualan dapat di simpan
untuk proses berikutnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Gambar 4.3 Halaman Penjualan
1.4.4. Halaman Histori Penjualan
Halaman ini merupakan halaman yang muncul ketika menekan
tombol analisis di halaman utama. Halaman ini digunakan untuk
menampilkan terlebih dahulu histori penjualan sebelum langkah
analisis menggunakan apriori. Disini ditampilkan tabel yang berisi no
faktur, kode barang, nama barang, dan jumlah. Pada tabel ini akan
muncul semua penjualan yang telah disimpan dalam database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Gambar 4.4 Halaman Histori Penjualan
1.4.5. Halaman Apriori
Halaman ini merupakan halaman yang muncul ketika menekan
tombol proses di halaman histori penjualan. Halaman ini digunakan
untuk menampilkan analisis dari data penjualan yang ada. Pertama kali
terlihat disini ada nilai minimum support, minimum confidence, dan
count. Nilai minimum support langsung diset sebesar 20%, minimum
confidence diset sebesar 50%, dan count disini terisi 126 sesuai dengan
jumlah penjualan yang ada. Terdapat juga textArea pada halaman ini,
nantinya akan digunakan untuk mengeluarkan hasil analisis algoritma
apriori.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
Gambar 4.5 Halaman Apriori
Ketika telah muncul halaman seperti Gambar 4.5, dapat menekan
tombol Analisis. Tombol ini berfungsi untuk menampilkan data pola
penjualan dari hasil analisis penjualan yang ada. Saat menekan tombol,
tunggu hingga proses selesai karena proses cukup memakan waktu
terlebih jika data penjualan berjumlah banyak. Tidak serta merta Count
sejumlah 126 transaksi tersebut adalah jumlah dari record yang akan
dioleh karena setiap penjualan akan mempunyai banyak barang yang
laku. Sebagai contoh jika pada setiap penjualan ada 5 barang terjual,
maka record yang akan diproses berjumlah 126 dikalikan 5 jadi
jumlahnya 730.
Dapat dilihat pada gambar 4.5, muncul hasil pola dari penjualan
yang ada. Muncul banyak pola penjualan karena minimum support
yang menjadi batas bisa dibilang cukup rendah. Untuk
memaksimalkan pola, bisa dinaikan juga minimum support dan
minimum confidence hingga batas yang pas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 4.6 Hasil Analisis
Seperti pada Gambar 4.6 diatas, hasil analisis dapat diperoleh dari
perhitungan yang dilakukan oleh program dan ditampilkan dalam
bentuk tabel. Penggunaan tabel untuk visualisasi diharapkan
mempermudah pengguna dalam mengambil pengetahuan. Kode
program yang digunakan dalam analisis tersebut sebagai berikut :
Koneksi koneksi=new Koneksi();
SQL sql=new SQL();
Vector<Apriori> dt=new Vector<Apriori>();
void isidata(){
dt.removeAllElements();
try{
int temp=Integer.parseInt(jTextField1.getText())*Integer.parseInt(jSpinner1.getValue().toString())/100;
System.out.println(temp);
koneksi.konek();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
ResultSet set = koneksi.stat.executeQuery("SELECT count(distinct(p.no_faktur)), t.namatipe " +
"FROM penjualan_det p, barang b, tipe t " +
"where b.tipe = t.kodetipe and p.kode_item = b.kode_item " +
"GROUP BY t.namatipe HAVING count(distinct(p.no_faktur)) >=1");
while(set.next()){
if(set.getInt("count(distinct(p.no_faktur))")>=temp ){
Apriori data=new Apriori();
data.setNama_item(set.getString("t.namatipe"));
data.setNilai(set.getInt("count(distinct(p.no_faktur))"));
dt.add(data);
}
}
set.close();
koneksi.stat.close();
koneksi.con.close();
} catch(Exception z){
JOptionPane.showMessageDialog(null, "Not Connect
"+z.getMessage(),"ERROR",JOptionPane.ERROR_MESSAGE);}
}
void c2(){
jTextArea1.setText("");
int n=0;
float bnyAB, bnyA, bnyB=0;
float supp,conf=0;
for(int a=0; a<dt.size();a++){
n++;
for(int b=0+n; b<dt.size();b++){
bnyAB=sql.c2(dt.get(a).getNama_item(), dt.get(b).getNama_item());
bnyA=dt.get(a).getNilai();
bnyB=dt.get(b).getNilai();
supp=bnyAB/Integer.parseInt(jTextField1.getText())*100;
if(supp>=Float.parseFloat(jSpinner1.getValue().toString())){
conf=(bnyAB/bnyA)*100;
if(conf>= Float.parseFloat(jSpinner2.getValue().toString())){
Apriori ap = new Apriori();
ap.setLeft(dt.get(a).getNama_item());
ap.setMid("=>");
ap.setRight(dt.get(b).getNama_item());
ap.setSupp(atur.format(supp));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Apriori ap = new Apriori();
ap.setLeft(dt.get(a).getNama_item());
ap.setMid("=>");
ap.setRight(dt.get(b).getNama_item());
ap.setSupp(atur.format(supp));
ap.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
conf=(bnyAB/bnyB)*100;
if(conf>= Float.parseFloat(jSpinner2.getValue().toString())){
Apriori ap2 = new Apriori();
ap2.setLeft(dt.get(b).getNama_item());
ap2.setMid("=>");
ap2.setRight(dt.get(a).getNama_item());
ap2.setSupp(atur.format(supp));
ap2.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap2);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
}
void c3(){
int n=0,m=0,o=0;
String item1,item2,item3="";
float bnyABC,bnyAB=0;
float supp,conf=0;
for(int a=0; a<dt.size();a++){ n++;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
void c3(){
int n=0,m=0,o=0;
String item1,item2,item3="";
float bnyABC,bnyAB=0;
float supp,conf=0;
for(int a=0; a<dt.size();a++){ n++;
for(int b=0+n ;b<dt.size();b++){
for(int c=0+b+1; c<dt.size();c++){
bnyABC=sql.c3(dt.get(a).getNama_item(), dt.get(b).getNama_item(), dt.get(c).getNama_item());
supp=bnyABC/Integer.parseInt(jTextField1.getText())*100;
if(supp>=Float.parseFloat(jSpinner1.getValue().toString())){
bnyAB=sql.c2(dt.get(a).getNama_item(), dt.get(b).getNama_item());
conf=(bnyABC/bnyAB)*100;
if(conf>= Float.parseFloat(jSpinner2.getValue().toString())) {
Apriori ap = new Apriori();
ap.setLeft(dt.get(a).getNama_item()+","+dt.get(b).getNama_item());
ap.setMid("=>");
ap.setRight(dt.get(c).getNama_item());
ap.setSupp(atur.format(supp));
ap.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
bnyAB=sql.c2(dt.get(a).getNama_item(), dt.get(c).getNama_item());
conf=(bnyABC/bnyAB)*100;
if(conf>= Float.parseFloat(jSpinner2.getValue().toString())) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Apriori ap2 = new Apriori();
ap2.setLeft(dt.get(a).getNama_item()+","+dt.get(c).getNama_item());
ap2.setMid("=>");
ap2.setRight(dt.get(b).getNama_item());
ap2.setSupp(atur.format(supp));
ap2.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap2);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
bnyAB=sql.c2(dt.get(b).getNama_item(), dt.get(c).getNama_item());
conf=(bnyABC/bnyAB)*100;
if(conf>= Float.parseFloat(jSpinner2.getValue().toString())) {
Apriori ap3 = new Apriori();
ap3.setLeft(dt.get(b).getNama_item()+","+dt.get(c).getNama_item());
ap3.setMid("=>");
ap3.setRight(dt.get(a).getNama_item());
ap3.setSupp(atur.format(supp));
ap3.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap3);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
Seperti kode program diatas, terdapat method isidata yang pertama-
tama menghapus vector sehingga data dalam keadaan kosong.
Kemudian terdapat query untuk mengambil data barang yang ada
dalam transaksi. Lalu data akan disortir, jika data melebihi nilai temp
maka data akan dimasukan ke dalam vector untuk nantinya diolah
untuk menghasilkan rule.
Terdapat method c2 untuk mendapatkan rule penjualan. Terdapat
deklarasi n, bnyAB, bnyA, bnyB, supp, dan conf. Kemudian terdapat
looping untuk mengambil data a dan b. Lalu dihitung banyak
kemunculan bnyAB, bnyA, bnykB, dan supp. Jika nilai supp lebih dari
nilai minimal support yang telah ditentukan pada jSpinner1 maka
hitung conf. Bila nilai conf lebih dari nilai minimal confidence yang
telah ditentukan pada jSpinner2 maka rule tersebut akan disimpan pada
database.
4.5. Pengujian Program
Pengujian program dilakukan untuk mengetahui validitas penghitungan
pada program. Pengujian akan menggunakan beberapa data yang diambil
untuk sample percobaan. Pengujian akan membandingkan hasil dari program
dan perhitungan manual menggunakan excel untuk membuktikan tingkat
kevalidan program sebelum dijalankan pada kasus nyata.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Gambar 4.7 Data Penjualan
Gambar 4.8 Hasil Rule Program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Gambar 4.9 Hasil Manual Excel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
BAB V
ANALISIS SISTEM
5.1. Analisis Sistem Pengujian
Setelah program telah selesai dibuat, pada tahap ini dilakukan uji coba
program dengan data yang telah didapat dari record transaksi toko XYZ.
Data yang akan diolah berjumlah 798 record untuk mendapatkan aturan
asosiasi.
Pengujian
Sumber Data : Tabel penjualan_det Jumlah Transaksi : 126
Jumlah Baris : 798 Jumlah Jenis Barang : 18
Tabel 5.1 Hasil Pengujian
Minimum Support 20% 30% 40%
Minimum Confidence 50% 50% 50%
Large Itemset 12 9 7
Jumlah Barang 7 5 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Gambar 4.1 Hasil Apriori
Selain hasil pengujian di atas, dapat ditarik kesimpulan bahwa nilai
support dan confidence dapat digunakan untuk promosi penjualan dengan
penentuan diskon atau bonus. Rule yang menggandung support yang tinggi
adalah penjualan barang yang laku, yang dapat disimpulkan dari banyak
terdapat barang tersebut dalam transaksi yang ada dan sebaliknya. Dengan
begitu dapat membantu dalam membuat pemecahan masalah. Barang yang
tidak muncul dalam minimum support dapat digunakan sebagai bonus
pembelian barang yang memiliki support lebih tinggi sehingga barang yang
memiliki support kecil dapat terbuang dari gudang karena tidak laku pada
penjualan. Dengan kemungkinan seperti itu dapat ditarik kesimpulan juga
bahwa barang yang memiliki support tinggi bisa diperbanyak stok barang
karena sangat laku dalam penjualan dan dapat memberikan keuntungan bagi
toko.
Untuk menguji hasil dilakukan dengan penggunaan lift ratio untuk
mengukur seberapa penting aturan yang telah didapat dari program. Nilai ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
akan menunjukkan kevalidan informasi apakah barang A dibeli secara
bersamaan dengan barang B.
Tabel 5.2 Hasil Perhitungan Lift Ratio
Rule Lift Ratio
EVO SOLID - SR => XTREAM CL 1.96
SUPERCROSS NEUT… => XTREAM CL 1.64
TEEN HELLO KITTY.. => XTREAM CL 1.52
VISTRO SOLID - 2V => XTREAM CL 1.12
Jika hasil perhitungan lift ratio lebih dari 1 maka dapat dikatakan bahwa
transaksi tersebut valid atau bisa dikatakan bahwa dalam transaksi tersebut
barang A dan B dibeli secara bersamaan.
5.2. Manfaat Sistem
Manfaat yang diperoleh dengan adanya sistem sebagai berikut :
1. Pengguna dapat melakukan pencarian pola penjualan sehingga dapat
diketahui barang yang dibeli oleh konsumen secara bersamaan.
2. Pola penjualan yang tersedia dapat dianalisa oleh pengguna sehingga
dapat menjadi rekomendasi untuk pengembangan usaha, seperti menjadi
media promosi penjualan.
5.3. Kelebihan dan Kekurangan Program
5.3.1. Kelebihan Program
1. Program dapat mengolah data histori penjualan yang tidak
digunakan sehingga mendapatkan pola penjualan.
2. Program dapat menyajikan pengolahan data dengan mudah
sehingga pengguna tinggal menunggu hasil proses olah data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
5.3.2. Kekurangan Program
1. Program yang telah dibuat masih sangat sederhana hanya terfokus
pada penjualan dan penerapan algoritma Apriori.
2. Program hanya dapat mengolah penjualan helm yang telah masuk
ke dalam database sehingga terbatas terhadapt data helm.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
BAB VI
PENUTUP
6.1.Kesimpulan
Dari hasil penelitian yang telah dilakukan, maka dapat diperoleh beberapa
kesimpulan antara lain :
1. Algoritma Apriori dapat diimplementasikan untuk mendapatkan pola
penjualan dari histori yang ada.
2. Berdasarkan hasil pola penjualan dapat memberikan pengetahuan bagi
pengguna untuk mengoptimalkan penjualan, semakin besar support yang
muncul pada output maka barang tersebut paling laku untuk dijual.
6.2. Saran
Saran yang dapat diberikan oleh penulis antara lain :
1. Penelitian dapat diperbanyak jumlah data penjualan sehingga dapat
mendapatkan hasil dengan persentase yang lebih tinggi.
2. Input data penjualan dapat dibuat lebih universal sehingga dapat
digunakan untuk data-data penjualan selain penjualan helm.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
DAFTAR PUSTAKA
Kusrini dan Luthfi. 2009. Algoritma Data Mining. Yogyakarta : Andi
Offset.
Han, J. & Kamber, M. 2006. Second Edition : Data Mining Concepts
and Techniques, Chapter 2.
Iskandar Yoni. 23 Agustus 2014. Pertambahan Jumlah Kendaraan di
DIY dari Tahun ke Tahun. diakses pada tanggal 27 Agustus 2015
dari tribunnews.com/regional/2014/08/23/pertambahan-jumlah-
kendaraan-di-diy-dari-tahun-ke-tahun
Ulmer,David (2002), Mining an Online Auction Data Warehouse
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
LAMPIRAN
1. Apriori
i. Apriori
package Apriori;
import Koneksi.Koneksi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Doni
*/
public class Apriori {
private String kode_item;
private String nama_item;
private int nilai;
private String left;
private String mid;
private String right;
private String supp;
private String conf;
private Connection conn;
private final String SQL_SIMPAN = "insert into
apriori(dtleft, dtmid, dtright, supp, conf) " +
"values(?,?,?,?,?)";
private final String SQL_DELETE = "delete from apriori";
private final String SQL_GETALL = "select * from
apriori";
public Apriori(Connection koneksi) {
this.conn = koneksi;
}
public static Apriori KoneksiDataBase() throws
SQLException {
Apriori kon = new Apriori(Koneksi.koneksiDatabase());
return kon;
}
Apriori() {
}
public String getKode_item() {
return kode_item;
}
public void setKode_item(String kode_item) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
this.kode_item = kode_item;
}
public String getNama_item() {
return nama_item;
}
public void setNama_item(String nama_item) {
this.nama_item = nama_item;
}
public int getNilai() {
return nilai;
}
public void setNilai(int nilai) {
this.nilai = nilai;
}
public String getLeft() {
return left;
}
public void setLeft(String left) {
this.left = left;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
public String getRight() {
return right;
}
public void setRight(String right) {
this.right = right;
}
public String getSupp() {
return supp;
}
public void setSupp(String supp) {
this.supp = supp;
}
public String getConf() {
return conf;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
public void setConf(String conf) {
this.conf = conf;
}
public void simpanRule(Apriori apriori) throws
SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_SIMPAN);
statement.setString(1, apriori.getLeft());
statement.setString(2, apriori.getMid());
statement.setString(3, apriori.getRight());
statement.setString(4, apriori.getSupp());
statement.setString(5, apriori.getConf());
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public void deleteRule() throws SQLException {
PreparedStatement statement = null;
PreparedStatement statement1 = null;
try {
conn.setAutoCommit(false);
statement1 = conn.prepareStatement(SQL_DELETE);
statement1.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
public List<Apriori> getAll() throws SQLException {
PreparedStatement statement = null;
ResultSet reset = null;
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_GETALL);
reset = statement.executeQuery();
List<Apriori> barang = new ArrayList <Apriori>();
while (reset.next()) {
Apriori apriori = new Apriori();
apriori.setLeft(reset.getString("dtleft"));
apriori.setMid(reset.getString("dtmid"));
apriori.setRight(reset.getString("dtright"));
apriori.setSupp(reset.getString("supp"));
apriori.setConf(reset.getString("conf"));
barang.add(apriori);
}
conn.commit();
return barang;
}
}
ii. AprioriForm
package Apriori;
import Koneksi.Koneksi;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Doni
*/
public class AprioriForm extends javax.swing.JFrame {
NumberFormat atur = NumberFormat.getInstance();
/** Creates new form AprioriForm */
public AprioriForm() throws SQLException {
initComponents();
jTextField1.setText(String.valueOf(sql.bnyTransaksi()));
isidata();
atur.setMaximumFractionDigits(2);
jSpinner1.setValue(20);
jSpinner2.setValue(50);
jTextArea1.setVisible(false);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated
Code">
private void initComponents() {
jLabel8 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jSpinner1 = new javax.swing.JSpinner();
jSpinner2 = new javax.swing.JSpinner();
jTextField1 = new javax.swing.JTextField();
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();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jLabel8.setText("jLabel8");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_
CLOSE);
getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder
(javax.swing.border.BevelBorder.RAISED));
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
jLabel1.setText("Apriori");
jLabel2.setText("Digunakan untuk analisa penjualan
dengan Apriori");
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addContainerGap(447, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jLabel2)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
getContentPane().add(jPanel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 700, -
1));
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
jPanel2.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel2.add(jSpinner1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(140, 20, 55, -
1));
jPanel2.add(jSpinner2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(410, 20, 55, -
1));
jTextField1.setEditable(false);
jTextField1.setText("200");
jPanel2.add(jTextField1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(620, 20, 45, -
1));
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel3.setText("Minimum Support");
jPanel2.add(jLabel3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, -1, -
1));
jLabel4.setText("Nilai minimum pembelian barang yang
sama");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
jPanel2.add(jLabel4, new
org.netbeans.lib.awtextra.AbsoluteConstraints(10, 40, -1, -
1));
jLabel5.setText("%");
jPanel2.add(jLabel5, new
org.netbeans.lib.awtextra.AbsoluteConstraints(200, 20, -1, -
1));
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel6.setText("Minimum Confidence");
jPanel2.add(jLabel6, new
org.netbeans.lib.awtextra.AbsoluteConstraints(280, 20, -1, -
1));
jLabel7.setText("Nilai minimum kepercayaan item
barang");
jPanel2.add(jLabel7, new
org.netbeans.lib.awtextra.AbsoluteConstraints(280, 40, -1, -
1));
jLabel9.setText("%");
jPanel2.add(jLabel9, new
org.netbeans.lib.awtextra.AbsoluteConstraints(470, 20, -1, -
1));
jLabel10.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel10.setText("Count");
jPanel2.add(jLabel10, new
org.netbeans.lib.awtextra.AbsoluteConstraints(570, 20, -1, -
1));
jLabel11.setText("Jumlah transaksi");
jPanel2.add(jLabel11, new
org.netbeans.lib.awtextra.AbsoluteConstraints(570, 40, -1, -
1));
getContentPane().add(jPanel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70, 700,
80));
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton1.setText("Analisa");
jButton1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Keluar");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jTable1.setModel(new
javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null}
},
new String [] {
"LEFT", " ", "RIGHT", "SUPP", "CONF"
}
));
jScrollPane2.setViewportView(jTable1);
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE, 680, Short.MAX_VALUE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap(554,
Short.MAX_VALUE)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jButton2))
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 680, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 9,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addGap(17, 17, 17))
);
getContentPane().add(jPanel3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 150, 700,
300));
pack();
}// </editor-fold>
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Apriori.KoneksiDataBase().deleteRule();
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
c2();
c3();
try {
List<Apriori> apriori = (List<Apriori>)
Apriori.KoneksiDataBase().getAll();
AprioriTableModel model = new
AprioriTableModel(apriori);
jTable1.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new AprioriForm().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
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.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSpinner jSpinner1;
private javax.swing.JSpinner jSpinner2;
private javax.swing.JTable jTable1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
Koneksi koneksi = new Koneksi();
SQL sql = new SQL();
Vector<Apriori> dt = new Vector<Apriori>();
void isidata() {
dt.removeAllElements();
try {
int temp =
Integer.parseInt(jTextField1.getText()) *
Integer.parseInt(jSpinner1.getValue().toString()) / 100;
System.out.println(temp);
koneksi.konek();
ResultSet set = koneksi.stat.executeQuery("SELECT
count(distinct(p.no_faktur)), t.namatipe "
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
+ "FROM penjualan_det p, barang b, tipe t
"
+ "where b.tipe = t.kodetipe and
p.kode_item = b.kode_item "
+ "GROUP BY t.namatipe HAVING
count(distinct(p.no_faktur)) >=1");
while (set.next()) {
if
(set.getInt("count(distinct(p.no_faktur))") >= temp) {
Apriori data = new Apriori();
data.setNama_item(set.getString("t.namatipe"));
data.setNilai(set.getInt("count(distinct(p.no_faktur))"));
dt.add(data);
}
}
set.close();
koneksi.stat.close();
koneksi.con.close();
} catch (Exception z) {
JOptionPane.showMessageDialog(null, "Not Connect
" + z.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
void c2() {
jTextArea1.setText("");
int n = 0;
float bnyAB, bnyA, bnyB = 0;
float supp, conf = 0;
for (int a = 0; a < dt.size(); a++) {
n++;
for (int b = 0 + n; b < dt.size(); b++) {
bnyAB = sql.c2(dt.get(a).getNama_item(),
dt.get(b).getNama_item());
bnyA = dt.get(a).getNilai();
bnyB = dt.get(b).getNilai();
supp = bnyAB /
Integer.parseInt(jTextField1.getText()) * 100;
if (supp >=
Float.parseFloat(jSpinner1.getValue().toString())) {
conf = (bnyAB / bnyA) * 100;
if (conf >=
Float.parseFloat(jSpinner2.getValue().toString())) {
System.out.println(bnyAB + " " +
bnyA);
//
jTextArea1.setText(jTextArea1.getText()+" Jika membeli \"
"+dt.get(a).getNama_item()+" \" maka akan membeli \"
"+dt.get(b).getNama_item()+" \" dengan Supp
"+atur.format(supp)+"% dan Conf "+atur.format(conf)+"% \n");
Apriori ap = new Apriori();
ap.setLeft(dt.get(a).getNama_item());
ap.setMid("=>");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
ap.setRight(dt.get(b).getNama_item());
ap.setSupp(atur.format(supp));
ap.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
conf = (bnyAB / bnyB) * 100;
if (conf >=
Float.parseFloat(jSpinner2.getValue().toString())) {
System.out.println(bnyAB + " " +
bnyB);
Apriori ap2 = new Apriori();
ap2.setLeft(dt.get(b).getNama_item());
ap2.setMid("=>");
ap2.setRight(dt.get(a).getNama_item());
ap2.setSupp(atur.format(supp));
ap2.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap2);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
}
}
}
}
void c3() {
int n = 0, m = 0, o = 0;
String item1, item2, item3 = "";
float bnyABC, bnyAB = 0;
float supp, conf = 0;
for (int a = 0; a < dt.size(); a++) {
n++;
for (int b = 0 + n; b < dt.size(); b++) {
for (int c = 0 + b + 1; c < dt.size(); c++) {
bnyABC = sql.c3(dt.get(a).getNama_item(),
dt.get(b).getNama_item(), dt.get(c).getNama_item());
supp = bnyABC /
Integer.parseInt(jTextField1.getText()) * 100;
if (supp >=
Float.parseFloat(jSpinner1.getValue().toString())) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
bnyAB =
sql.c2(dt.get(a).getNama_item(), dt.get(b).getNama_item());
conf = (bnyABC / bnyAB) * 100;
if (conf >=
Float.parseFloat(jSpinner2.getValue().toString())) {
Apriori ap = new Apriori();
ap.setLeft(dt.get(a).getNama_item() + "," +
dt.get(b).getNama_item());
ap.setMid("=>");
ap.setRight(dt.get(c).getNama_item());
ap.setSupp(atur.format(supp));
ap.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
bnyAB =
sql.c2(dt.get(a).getNama_item(), dt.get(c).getNama_item());
conf = (bnyABC / bnyAB) * 100;
if (conf >=
Float.parseFloat(jSpinner2.getValue().toString())) {
Apriori ap2 = new Apriori();
ap2.setLeft(dt.get(a).getNama_item() + "," +
dt.get(c).getNama_item());
ap2.setMid("=>");
ap2.setRight(dt.get(b).getNama_item());
ap2.setSupp(atur.format(supp));
ap2.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap2);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
bnyAB =
sql.c2(dt.get(b).getNama_item(), dt.get(c).getNama_item());
conf = (bnyABC / bnyAB) * 100;
if (conf >=
Float.parseFloat(jSpinner2.getValue().toString())) {
Apriori ap3 = new Apriori();
ap3.setLeft(dt.get(b).getNama_item() + "," +
dt.get(c).getNama_item());
ap3.setMid("=>");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
ap3.setRight(dt.get(a).getNama_item());
ap3.setSupp(atur.format(supp));
ap3.setConf(atur.format(conf));
try {
Apriori.KoneksiDataBase().simpanRule(ap3);
} catch (SQLException ex) {
Logger.getLogger(AprioriForm.class.getName()).log(Level.SEVER
E, null, ex);
}
}
}
}
}
}
}
}
iii. AprioriTableModel
package Apriori;
import Barang.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Doni
*/
public class AprioriTableModel extends AbstractTableModel {
private List<Apriori> apriori = new ArrayList<Apriori>();
public AprioriTableModel(List<Apriori> apriori) {
this.apriori = apriori;
}
public int getRowCount() {
return apriori.size();
}
public int getColumnCount() {
return 5;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Apriori k = apriori.get(rowIndex);
switch (columnIndex) {
case 0:
return k.getLeft();
case 1:
return k.getMid();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
case 2:
return k.getRight();
case 3:
return k.getSupp();
case 4:
return k.getConf();
default:
return "";
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "LEFT";
case 1:
return "=>";
case 2:
return "RIGHT";
case 3:
return "SUPP";
case 4:
return "CONF";
default:
return "";
}
}
}
2. Barang
a. Barang
package Barang;
/**
*
* @author Doni
*/
public class Barang {
private String kodeBarang; //KODE_ITEM
private String merk;
private String tipe;
private String warna;
private String namaBarang; //NAMA_ITEM
private int stokBarang; //STOK
private double hargaBeli; //HARGA_BELI
private double hargaJual; //HARGA_JUAL
private String satuan; //SATUAN
public String getKodeBarang() {
return kodeBarang;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
public void setKodeBarang(String kodeBarang) {
this.kodeBarang = kodeBarang;
}
public String getMerk() {
return merk;
}
public void setMerk(String merk) {
this.merk = merk;
}
public String getTipe() {
return tipe;
}
public void setTipe(String tipe) {
this.tipe = tipe;
}
public String getWarna() {
return warna;
}
public void setWarna(String warna) {
this.warna = warna;
}
public String getNamaBarang() {
return namaBarang;
}
public void setNamaBarang(String namaBarang) {
this.namaBarang = namaBarang;
}
public int getStokBarang() {
return stokBarang;
}
public void setStokBarang(int stokBarang) {
this.stokBarang = stokBarang;
}
public double getHargaBeli() {
return hargaBeli;
}
public void setHargaBeli(double hargaBeli) {
this.hargaBeli = hargaBeli;
}
public double getHargaJual() {
return hargaJual;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
public void setHargaJual(double hargaJual) {
this.hargaJual = hargaJual;
}
public String getSatuan() {
return satuan;
}
public void setSatuan(String satuan) {
this.satuan = satuan;
}
}
b. BarangForm
package Barang;
import Koneksi.Koneksi;
import Merk.Merk;
import Merk.MerkKontrol;
import Tipe.Tipe;
import Tipe.TipeKontrol;
import Warna.Warna;
import Warna.WarnaKontrol;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author masdonzdulz
*/
public class BarangForm extends javax.swing.JFrame {
/** Creates new form BarangForm */
public BarangForm() throws SQLException {
initComponents();
isiMerk();
isiTipe();
isiWarna();
resetfield();
jLabel9.setVisible(false);
jLabel11.setVisible(false);
RitelSblmPPNTextField.setVisible(false);
BeliSblmPPNTextField.setVisible(false);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
InternalFrame.setVisible(false);
SimpanButton.setEnabled(false);
HapusButton.setEnabled(false);
KodeBarangTextField.setEnabled(false);
}
private void isiMerk() throws SQLException {
List<Merk> merks =
MerkKontrol.KoneksiDataBase().getAllMerk();
for (Merk k : merks) {
merkCombo.addItem(k.getKodeMerk() + " " +
k.getNamaMerk());
}
}
private void isiTipe() throws SQLException {
String pilih =
String.valueOf(merkCombo.getSelectedItem().toString().substri
ng(0, 3));
System.out.println(pilih);
tipeCombo.removeAllItems();
List<Tipe> tipes =
TipeKontrol.KoneksiDataBase().getAllTipeByMerk(pilih);
for (Tipe t : tipes) {
tipeCombo.addItem(t.getKodeTipe() + " " +
t.getNamaTipe());
}
}
private void isiWarna() throws SQLException {
List<Warna> warnas =
WarnaKontrol.KoneksiDataBase().getAllWarna();
for (Warna w : warnas) {
warnaCombo.addItem(w.getKodeWarna() + " " +
w.getNamaWarna());
}
}
private void checkFormatAngka(String angka) {
if (!angka.matches("[0-9]*")) {
JOptionPane.showMessageDialog(rootPane, "Format
Salah, Masukkan Harus Angka");
RitelStlhPPNTextField.setText("");
BeliStlhPPNTextField.setText("");
stokTF.setText("");
}
}
private void resetfield() {
KodeBarangTextField.setText("");
NamaBarangTextField.setText("");
stokTF.setText("");
RitelSblmPPNTextField.setText("");
RitelStlhPPNTextField.setText("");
BeliSblmPPNTextField.setText("");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
BeliStlhPPNTextField.setText("");
merkCombo.setSelectedIndex(0);
tipeCombo.setSelectedIndex(0);
warnaCombo.setSelectedIndex(0);
automaticNumber();
SimpanButton.setText("Simpan");
SimpanButton.setEnabled(false);
HapusButton.setEnabled(false);
}
private void automaticNumber() {
try {
merkCombo.setEditable(true);
tipeCombo.setEditable(true);
warnaCombo.setEditable(true);
String pilih =
String.valueOf(merkCombo.getSelectedItem());
String merk = pilih.toString().substring(0, 2);
String pilih2 =
String.valueOf(tipeCombo.getSelectedItem());
String tipe = pilih2.toString().substring(0, 3);
String pilih3 =
String.valueOf(warnaCombo.getSelectedItem());
String warna = pilih3.toString().substring(0, 2);
long kd =
BarangKontrol.KoneksiDataBase().cekKode();
String kode = String.valueOf(kd);
String hasilkode = "";
if (kd < 10) {
hasilkode = merk + tipe + warna + "00" +
kode;
} else if (kd < 100) {
hasilkode = merk + tipe + warna + "0" + kode;
} else if (kd >= 100) {
hasilkode = merk + tipe + warna + kode;
}
KodeBarangTextField.setText(hasilkode);
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
/** 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() {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
InternalFrame = new javax.swing.JInternalFrame();
jScrollPane1 = new javax.swing.JScrollPane();
ListTable = new javax.swing.JTable();
jLabel12 = new javax.swing.JLabel();
caribarangtextfield = new javax.swing.JTextField();
ExitListButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
KodeBarangTextField = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
NamaBarangTextField = new javax.swing.JTextField();
satuanCombo = new javax.swing.JComboBox();
stokTF = new javax.swing.JTextField();
merkCombo = new javax.swing.JComboBox();
tipeCombo = new javax.swing.JComboBox();
warnaCombo = new javax.swing.JComboBox();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
RitelStlhPPNTextField = new javax.swing.JTextField();
jLabel9 = new javax.swing.JLabel();
RitelSblmPPNTextField = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
jLabel10 = new javax.swing.JLabel();
BeliStlhPPNTextField = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
BeliSblmPPNTextField = new javax.swing.JTextField();
jPanel6 = new javax.swing.JPanel();
CetakButton = new javax.swing.JButton();
SimpanButton = new javax.swing.JButton();
HapusButton = new javax.swing.JButton();
ListButton = new javax.swing.JButton();
BatalButton = new javax.swing.JButton();
KeluarButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_
CLOSE);
getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
InternalFrame.setVisible(true);
InternalFrame.getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
ListTable.setModel(new
javax.swing.table.DefaultTableModel(
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Kode Barang", "Nama Barang", "Harga Beli",
"Harga Jual"
}
));
ListTable.addMouseListener(new
java.awt.event.MouseAdapter() {
public void
mouseClicked(java.awt.event.MouseEvent evt) {
ListTableMouseClicked(evt);
}
});
jScrollPane1.setViewportView(ListTable);
InternalFrame.getContentPane().add(jScrollPane1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(10, 60, 400,
90));
jLabel12.setText("Nama barang yang dicari");
InternalFrame.getContentPane().add(jLabel12, new
org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, 160,
20));
caribarangtextfield.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
caribarangtextfieldActionPerformed(evt);
}
});
caribarangtextfield.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent
evt) {
caribarangtextfieldKeyReleased(evt);
}
});
InternalFrame.getContentPane().add(caribarangtextfield, new
org.netbeans.lib.awtextra.AbsoluteConstraints(170, 20, 230, -
1));
ExitListButton.setText("Exit");
ExitListButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
ExitListButtonActionPerformed(evt);
}
});
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
InternalFrame.getContentPane().add(ExitListButton,
new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 160, -
1, -1));
getContentPane().add(InternalFrame, new
org.netbeans.lib.awtextra.AbsoluteConstraints(84, 103, 430,
240));
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder
(javax.swing.border.BevelBorder.RAISED));
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
// NOI18N
jLabel1.setText("Data Barang");
jLabel2.setText("Digunakan untuk memasukkan data
master barang");
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel1))
.addContainerGap(321, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jLabel2,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(9, 9, 9))
);
getContentPane().add(jPanel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 590,
70));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorde
r(null, "Informasi Produk",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), new java.awt.Color(204, 0,
0))); // NOI18N
jLabel3.setText("Kode Barang");
jLabel4.setText("Nama Barang");
jLabel5.setText("Satuan");
jLabel7.setText("Stok");
NamaBarangTextField.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
NamaBarangTextFieldActionPerformed(evt);
}
});
NamaBarangTextField.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent
evt) {
NamaBarangTextFieldKeyReleased(evt);
}
});
satuanCombo.setModel(new
javax.swing.DefaultComboBoxModel(new String[] { "pcs", "crt"
}));
satuanCombo.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
satuanComboActionPerformed(evt);
}
});
stokTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
stokTFActionPerformed(evt);
}
});
stokTF.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyReleased(java.awt.event.KeyEvent
evt) {
stokTFKeyReleased(evt);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
});
merkCombo.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
merkComboActionPerformed(evt);
}
});
tipeCombo.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
tipeComboActionPerformed(evt);
}
});
warnaCombo.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
warnaComboActionPerformed(evt);
}
});
jLabel13.setText("Warna");
jLabel14.setText("Tipe");
jLabel15.setText("Merk");
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(jLabel5)
.addComponent(jLabel3)
.addComponent(jLabel14)
.addComponent(jLabel15)
.addComponent(jLabel13)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 88,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(warnaCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 245,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tipeCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 245,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(merkCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 245,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(KodeBarangTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 77,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.TRAILING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(satuanCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 75,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(40, 40, 40)
.addComponent(jLabel7,
javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(stokTF,
javax.swing.GroupLayout.PREFERRED_SIZE, 75,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(NamaBarangTextField,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 245,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(224, 224, 224))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(KodeBarangTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(7, 7, 7)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
.addComponent(jLabel15,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(merkCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel14,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tipeCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(warnaCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(NamaBarangTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(9, 9, 9)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel5,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
.addComponent(stokTF,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)))
.addGroup(jPanel3Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(satuanCombo,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(22, 22, 22))
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorde
r(null, "Informasi Penjualan",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), new java.awt.Color(255, 0,
0))); // NOI18N
jLabel8.setText("Ritel Setelah PPN");
RitelStlhPPNTextField.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
RitelStlhPPNTextFieldActionPerformed(evt);
}
});
RitelStlhPPNTextField.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
RitelStlhPPNTextFieldKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent
evt) {
RitelStlhPPNTextFieldKeyReleased(evt);
}
});
jLabel9.setText("Ritel Sebelum PPN");
RitelSblmPPNTextField.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent
evt) {
RitelSblmPPNTextFieldKeyReleased(evt);
}
});
javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(10, 10, 10)
.addComponent(RitelStlhPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 75,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel9,
javax.swing.GroupLayout.PREFERRED_SIZE, 110,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(RitelSblmPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 75,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(171, Short.MAX_VALUE))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel9,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(RitelSblmPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(RitelStlhPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorde
r(null, "Informasi Pembelian",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), new java.awt.Color(255, 0,
0))); // NOI18N
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
jLabel10.setText("Beli Setelah PPN");
BeliStlhPPNTextField.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
BeliStlhPPNTextFieldActionPerformed(evt);
}
});
BeliStlhPPNTextField.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
BeliStlhPPNTextFieldKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent
evt) {
BeliStlhPPNTextFieldKeyReleased(evt);
}
});
jLabel11.setText("Beli Sebelum PPN");
BeliSblmPPNTextField.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
BeliSblmPPNTextFieldKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent
evt) {
BeliSblmPPNTextFieldKeyReleased(evt);
}
});
javax.swing.GroupLayout jPanel5Layout = new
javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(10, 10, 10)
.addComponent(BeliStlhPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 75,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 110,
javax.swing.GroupLayout.PREFERRED_SIZE)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
.addGap(18, 18, 18)
.addComponent(BeliSblmPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 78,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(168, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(BeliSblmPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(BeliStlhPPNTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
CetakButton.setText("Cetak Persediaan");
CetakButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
CetakButtonActionPerformed(evt);
}
});
SimpanButton.setText("Simpan");
SimpanButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
SimpanButtonActionPerformed(evt);
}
});
SimpanButton.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
SimpanButtonKeyPressed(evt);
}
});
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
HapusButton.setText("Hapus");
HapusButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
HapusButtonActionPerformed(evt);
}
});
ListButton.setText("List");
ListButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
ListButtonActionPerformed(evt);
}
});
BatalButton.setText("Batal");
BatalButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
BatalButtonActionPerformed(evt);
}
});
KeluarButton.setText("Keluar");
KeluarButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
KeluarButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel6Layout = new
javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(CetakButton,
javax.swing.GroupLayout.DEFAULT_SIZE, 569, Short.MAX_VALUE))
.addGroup(jPanel6Layout.createSequentialGroup()
.addGap(112, 112, 112)
.addComponent(SimpanButton)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(HapusButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 71,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(ListButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(BatalButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 67,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(KeluarButton)))
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(CetakButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(HapusButton)
.addComponent(ListButton)
.addComponent(BatalButton)
.addComponent(SimpanButton,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(KeluarButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
.addComponent(jPanel5,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel6,
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(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel3,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 233,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jPanel4,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jPanel5,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.R
ELATED)
.addComponent(jPanel6,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
getContentPane().add(jPanel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 78, 590,
450));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
pack();
}// </editor-fold>
private void
SimpanButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (SimpanButton.getText().startsWith("S")) {
String kode = KodeBarangTextField.getText();
String nama = NamaBarangTextField.getText();
String stok = stokTF.getText();
String ritel = RitelStlhPPNTextField.getText();
String beli = BeliStlhPPNTextField.getText();
String satuan =
satuanCombo.getSelectedItem().toString();
String merk =
merkCombo.getSelectedItem().toString().substring(0,
2).trim();
String tipe =
tipeCombo.getSelectedItem().toString().substring(0,
3).trim();
String warna =
warnaCombo.getSelectedItem().toString().substring(0,
2).trim();
Barang brg = new Barang();
brg.setKodeBarang(kode);
brg.setNamaBarang(nama);
brg.setHargaJual(Double.parseDouble(ritel));
brg.setHargaBeli(Double.parseDouble(beli));
brg.setStokBarang(Integer.parseInt(stok));
brg.setSatuan(satuan);
brg.setMerk(merk);
brg.setTipe(tipe);
brg.setWarna(warna);
try {
BarangKontrol.KoneksiDataBase().tambahBarang(brg);
JOptionPane.showMessageDialog(rootPane, "
Data Berhasil Masuk");
List<Barang> barang = (List<Barang>)
BarangKontrol.KoneksiDataBase().getAllBarang();
resetfield();
} catch (Exception ex) {
JOptionPane.showMessageDialog(rootPane, "
Data dengan \n id = " + kode
+ " nama = " + nama + " \n Gagal
Masuk " + " \n error: " + ex.getMessage());
ex.getMessage();
}
} else {
String kode = KodeBarangTextField.getText();
String nama = NamaBarangTextField.getText();
String stok = stokTF.getText();
String ritel = RitelStlhPPNTextField.getText();
String beli = BeliStlhPPNTextField.getText();
String satuan =
satuanCombo.getSelectedItem().toString();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
Barang brgBaru = new Barang();
brgBaru.setKodeBarang(kode);
brgBaru.setNamaBarang(nama);
brgBaru.setHargaJual(Double.parseDouble(ritel));
brgBaru.setHargaBeli(Double.parseDouble(beli));
brgBaru.setStokBarang(Integer.parseInt(stok));
brgBaru.setSatuan(satuan);
try {
BarangKontrol.KoneksiDataBase().updatebarang(brgBaru);
JOptionPane.showMessageDialog(rootPane, "
Data Berhasil Ter-Update");
List<Barang> barang = (List<Barang>)
BarangKontrol.KoneksiDataBase().getAllBarang();
resetfield();
} catch (Exception ex) {
JOptionPane.showMessageDialog(rootPane, "
Data dengan \n id = " + kode
+ " nama = " + nama + " \n Gagal
Update " + " \n error: " + ex.getMessage());
ex.getMessage();
}
}
}
private void
HapusButtonActionPerformed(java.awt.event.ActionEvent evt) {
String kode = KodeBarangTextField.getText();
Barang hps = new Barang();
try {
BarangKontrol.KoneksiDataBase().Hapusbarang(kode);
JOptionPane.showMessageDialog(this, " Data
Katagori Dengan Kode = " + kode + " \n Berhasil Dihapus");
resetfield();
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
private void
ListButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
List<Barang> brg = (List<Barang>)
BarangKontrol.KoneksiDataBase().getAllBarang();
BarangTableModel model = new
BarangTableModel(brg);
ListTable.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
InternalFrame.setVisible(true);
}
private void
BatalButtonActionPerformed(java.awt.event.ActionEvent evt) {
resetfield();
}
private void
KeluarButtonActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
private void
RitelStlhPPNTextFieldKeyPressed(java.awt.event.KeyEvent evt)
{
}
private void
BeliStlhPPNTextFieldKeyPressed(java.awt.event.KeyEvent evt) {
}
private void
RitelStlhPPNTextFieldKeyReleased(java.awt.event.KeyEvent evt)
{
checkFormatAngka(RitelStlhPPNTextField.getText());
int a =
Integer.parseInt(RitelStlhPPNTextField.getText()) * 10 / 11;
RitelSblmPPNTextField.setText(String.valueOf(a));
SimpanButton.setEnabled(true);
}
private void
BeliStlhPPNTextFieldKeyReleased(java.awt.event.KeyEvent evt)
{
checkFormatAngka(BeliStlhPPNTextField.getText());
int a =
Integer.parseInt(BeliStlhPPNTextField.getText()) * 10 / 11;
BeliSblmPPNTextField.setText(String.valueOf(a));
SimpanButton.setEnabled(true);
}
private void stokTFKeyReleased(java.awt.event.KeyEvent
evt) {
checkFormatAngka(stokTF.getText());
SimpanButton.setEnabled(true);
}
private void
NamaBarangTextFieldKeyReleased(java.awt.event.KeyEvent evt) {
}
private void
NamaBarangTextFieldActionPerformed(java.awt.event.ActionEvent
evt) {
try {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
String namaMenu = NamaBarangTextField.getText();
Boolean cekBarang =
BarangKontrol.KoneksiDataBase().cekNamaBarang(namaMenu);
if (cekBarang == true) {
JOptionPane.showMessageDialog(this, "Nama
barang sudah ada");
} else {
if
(NamaBarangTextField.getDocument().getLength() > 30) {
JOptionPane.showMessageDialog(this, "Nama
barang tidak boleh lebih dari 30 karakter");
NamaBarangTextField.requestFocus();
} else if
(NamaBarangTextField.getDocument().getLength() < 1) {
JOptionPane.showMessageDialog(this, "Nama
barang tidak boleh kurang dari 1 karakter");
NamaBarangTextField.requestFocus();
}
}
stokTF.requestFocus();
} catch (SQLException e) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, e);
}
}
private void
ExitListButtonActionPerformed(java.awt.event.ActionEvent evt)
{
InternalFrame.dispose();
}
private void
caribarangtextfieldKeyReleased(java.awt.event.KeyEvent evt) {
String cari = caribarangtextfield.getText();
try {
List<Barang> brg = (List<Barang>)
BarangKontrol.KoneksiDataBase().caribarang(cari);
BarangTableModel model = new
BarangTableModel(brg);
ListTable.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
private void
ListTableMouseClicked(java.awt.event.MouseEvent evt) {
try {
int row = ListTable.getSelectedRow();
String kodebarang = ListTable.getValueAt(row,
0).toString();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
String namabarang = ListTable.getValueAt(row,
1).toString();
String kategori = ListTable.getValueAt(row,
2).toString();
String hargajual = ListTable.getValueAt(row,
3).toString();
Barang brg =
BarangKontrol.KoneksiDataBase().getBarangByKode(kodebarang);
KodeBarangTextField.setText(brg.getKodeBarang());
String kodemk = brg.getMerk();
Merk merk =
MerkKontrol.KoneksiDataBase().getMerkByKode(kodemk);
String merks = kodemk + " " + merk.getNamaMerk();
System.out.println(merks);
merkCombo.setSelectedItem(merks);
String kodetp = brg.getTipe();
Tipe tipe =
TipeKontrol.KoneksiDataBase().getTipeByKode(kodetp);
String tipes = kodetp + " " + tipe.getNamaTipe();
System.out.println(tipes);
tipeCombo.setSelectedItem(tipes);
String kodewrn = brg.getWarna();
Warna warna =
WarnaKontrol.KoneksiDataBase().getWarnaByKode(kodewrn);
String warnas = kodewrn + " " +
warna.getNamaWarna();
System.out.println(warnas);
warnaCombo.setSelectedItem(warnas);
satuanCombo.setSelectedItem(brg.getSatuan());
stokTF.setText(String.valueOf(brg.getStokBarang()));
NamaBarangTextField.setText(brg.getNamaBarang());
RitelStlhPPNTextField.setText(String.valueOf(brg.getHargaJual
()));
Double ritel =
Double.parseDouble(RitelStlhPPNTextField.getText()) * 10 /
11;
RitelSblmPPNTextField.setText(ritel.toString());
BeliStlhPPNTextField.setText(String.valueOf(brg.getHargaBeli(
)));
Double beli =
Double.parseDouble(BeliStlhPPNTextField.getText()) * 10 / 11;
BeliSblmPPNTextField.setText(beli.toString());
KodeBarangTextField.setEnabled(false);
SimpanButton.setEnabled(true);
HapusButton.setEnabled(true);
InternalFrame.setVisible(false);
SimpanButton.setText("Update");
} catch (SQLException ex) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
private void
RitelSblmPPNTextFieldKeyReleased(java.awt.event.KeyEvent evt)
{
checkFormatAngka(RitelSblmPPNTextField.getText());
int a =
Integer.parseInt(RitelSblmPPNTextField.getText()) * 11 / 10;
RitelStlhPPNTextField.setText(String.valueOf(a));
}
private void
BeliSblmPPNTextFieldKeyReleased(java.awt.event.KeyEvent evt)
{
checkFormatAngka(BeliSblmPPNTextField.getText());
int a =
Integer.parseInt(BeliSblmPPNTextField.getText()) * 11 / 10;
BeliStlhPPNTextField.setText(String.valueOf(a));
}
private void
CetakButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
Connection kon = null;
String reportSource = "";
kon = Koneksi.koneksiDatabase();
reportSource = "./reports/laporan.jasper";
Map<String, Object> params = new HashMap<String,
Object>();
try {
JasperPrint jasperPrint =
JasperFillManager.fillReport(reportSource, params, kon);
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException ex) {
ex.printStackTrace();
}
this.setExtendedState(JFrame.ICONIFIED);
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
private void
satuanComboActionPerformed(java.awt.event.ActionEvent evt) {
}
private void
BeliSblmPPNTextFieldKeyPressed(java.awt.event.KeyEvent evt) {
SimpanButton.setEnabled(true);// TODO add your
handling code here:
}
private void
BeliStlhPPNTextFieldActionPerformed(java.awt.event.ActionEven
t evt) {
SimpanButton.setEnabled(true);
SimpanButton.requestFocus();// TODO add your handling
code here:
}
private void
merkComboActionPerformed(java.awt.event.ActionEvent evt) {
try {
isiTipe();
automaticNumber();
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
private void
tipeComboActionPerformed(java.awt.event.ActionEvent evt) {
automaticNumber();
}
private void
warnaComboActionPerformed(java.awt.event.ActionEvent evt) {
automaticNumber();
}
private void
stokTFActionPerformed(java.awt.event.ActionEvent evt) {
RitelStlhPPNTextField.requestFocus();
}
private void
RitelStlhPPNTextFieldActionPerformed(java.awt.event.ActionEve
nt evt) {
BeliStlhPPNTextField.requestFocus();
}
private void
SimpanButtonKeyPressed(java.awt.event.KeyEvent evt) {
SimpanButton.doClick();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
private void
caribarangtextfieldActionPerformed(java.awt.event.ActionEvent
evt) {
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new BarangForm().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE
, null, ex);
}
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton BatalButton;
private javax.swing.JTextField BeliSblmPPNTextField;
private javax.swing.JTextField BeliStlhPPNTextField;
private javax.swing.JButton CetakButton;
private javax.swing.JButton ExitListButton;
private javax.swing.JButton HapusButton;
private javax.swing.JInternalFrame InternalFrame;
private javax.swing.JButton KeluarButton;
private javax.swing.JTextField KodeBarangTextField;
private javax.swing.JButton ListButton;
private javax.swing.JTable ListTable;
private javax.swing.JTextField NamaBarangTextField;
private javax.swing.JTextField RitelSblmPPNTextField;
private javax.swing.JTextField RitelStlhPPNTextField;
private javax.swing.JButton SimpanButton;
private javax.swing.JTextField caribarangtextfield;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JComboBox merkCombo;
private javax.swing.JComboBox satuanCombo;
private javax.swing.JTextField stokTF;
private javax.swing.JComboBox tipeCombo;
private javax.swing.JComboBox warnaCombo;
// End of variables declaration
}
c. BarangKontrol
package Barang;
import Koneksi.Koneksi;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Doni
*/
public class BarangKontrol {
private final String SQL_SIMPAN = "insert into
barang(kode_item, nama_item, stok, harga_beli, harga_jual,
satuan, merk, tipe, warna) "
+ "values(?,?,?,?,?,?,?,?,?)";
private final String SQL_UPDATE = "update barang set
nama_item=?, stok=?, harga_beli=?, harga_jual=?, satuan=?,"
+ "merk=?, tipe=?, warna=? where kode_item=?";
private final String SQL_GETALL = "select * from barang";
private final String SQL_CEKNAMABARANG = "select
nama_item from barang where nama_item = ?";
private final String SQL_HAPUSBARANG = "delete from
barang where kode_item=?";
private final String SQL_GETKODE = "select
max(substring(kode_item,8,10)) from barang";
private final String SQL_GETBYKODE = "select * from
barang where kode_item = ?";
private Connection conn;
public BarangKontrol(Connection koneksi) {
this.conn = koneksi;
}
public static BarangKontrol KoneksiDataBase() throws
SQLException {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
BarangKontrol kon = new
BarangKontrol(Koneksi.koneksiDatabase());
return kon;
}
public void tambahBarang(Barang barang) throws
SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_SIMPAN);
statement.setString(1, barang.getKodeBarang());
statement.setString(2, barang.getNamaBarang());
statement.setInt(3, barang.getStokBarang());
statement.setDouble(4, barang.getHargaBeli());
statement.setDouble(5, barang.getHargaJual());
statement.setString(6, barang.getSatuan());
statement.setString(7, barang.getMerk());
statement.setString(8, barang.getTipe());
statement.setString(9, barang.getWarna());
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public void updatebarang(Barang barang) throws
SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_UPDATE);
statement.setString(1, barang.getNamaBarang());
statement.setInt(2, barang.getStokBarang());
statement.setDouble(3, barang.getHargaBeli());
statement.setDouble(4, barang.getHargaJual());
statement.setString(5, barang.getSatuan());
statement.setString(6, barang.getMerk());
statement.setString(7, barang.getTipe());
statement.setString(8, barang.getWarna());
statement.setString(9, barang.getKodeBarang());
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public void Hapusbarang(String hps) throws SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement =
conn.prepareStatement(SQL_HAPUSBARANG);
statement.setString(1, hps);
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public boolean cekNamaBarang(String namabarang) throws
SQLException {
PreparedStatement statement = null;
boolean cari = false;
ResultSet result = null;
try {
conn.setAutoCommit(false);
statement =
conn.prepareStatement(SQL_CEKNAMABARANG);
statement.setString(1, namabarang);
result = statement.executeQuery();
if (result.next()) {
cari = true;
}
conn.commit();
return cari;
} catch (SQLException e) {
conn.rollback();
throw e;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public List<Barang> getAllBarang() throws SQLException {
PreparedStatement statement = null;
ResultSet reset = null;
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_GETALL);
reset = statement.executeQuery();
List<Barang> barang = new ArrayList<Barang>();
while (reset.next()) {
Barang brg = new Barang();
brg.setKodeBarang(reset.getString("kode_item"));
brg.setNamaBarang(reset.getString("nama_item"));
brg.setHargaBeli(reset.getDouble("harga_beli"));
brg.setHargaJual(reset.getDouble("harga_jual"));
barang.add(brg);
}
conn.commit();
return barang;
}
public Barang getBarangByKode(String kode) throws
SQLException {
PreparedStatement statement = null;
ResultSet reset = null;
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_GETBYKODE);
statement.setString(1, kode);
reset = statement.executeQuery();
Barang barang = null;
while (reset.next()) {
Barang brg = new Barang();
brg.setKodeBarang(reset.getString("kode_item"));
brg.setNamaBarang(reset.getString("nama_item"));
brg.setStokBarang(reset.getInt("stok"));
brg.setHargaBeli(reset.getDouble("harga_beli"));
brg.setHargaJual(reset.getDouble("harga_jual"));
brg.setSatuan(reset.getString("satuan"));
brg.setMerk(reset.getString("merk"));
brg.setTipe(reset.getString("tipe"));
brg.setWarna(reset.getString("warna"));
return brg;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
}
conn.commit();
return barang;
}
public long cekKode() throws SQLException {
String kode = "";
long kdB = 0;
PreparedStatement statement = null;
ResultSet rset = null;
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_GETKODE);
rset = statement.executeQuery();
while (rset.next()) {
kode =
rset.getString("max(substring(kode_item,8,10))");
if (kode == null) {
kdB = 0;
break;
}
String kdBg = kode;
kdB = Long.parseLong(kdBg);
}
kdB = kdB + 1;
return kdB;
}
public List<Barang> caribarang(String carinama) throws
SQLException {
PreparedStatement psmt = null;
ResultSet reset = null;
conn.setAutoCommit(false);
String sql = "select * from barang "
+ "where lower(nama_item) like '" +
carinama.toLowerCase() + "%'";
psmt = conn.prepareStatement(sql);
reset = psmt.executeQuery();
List<Barang> barang = new ArrayList<Barang>();
while (reset.next()) {
Barang brg = new Barang();
brg.setKodeBarang(reset.getString("kode_item"));
brg.setNamaBarang(reset.getString("nama_item"));
brg.setHargaBeli(reset.getDouble("harga_beli"));
brg.setHargaJual(reset.getDouble("harga_jual"));
barang.add(brg);
}
conn.commit();
return barang;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
d. BarangTableModel
package Barang;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class BarangTableModel extends AbstractTableModel {
private List<Barang> barang = new ArrayList<Barang>();
public BarangTableModel(List<Barang> barang) {
this.barang = barang;
}
public int getRowCount() {
return barang.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Barang k = barang.get(rowIndex);
switch (columnIndex) {
case 0:
return k.getKodeBarang();
case 1:
return k.getNamaBarang();
case 2:
return k.getHargaBeli();
case 3:
return k.getHargaJual();
default:
return "";
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Kode Barang";
case 1:
return "Nama Barang";
case 2:
return "Harga Beli";
case 3:
return "Harga Jual";
default:
return "";
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
3. Koneksi
package Koneksi;
import com.mysql.jdbc.Driver;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author Doni
*/
public class Koneksi {
private static Connection connection;
public Connection con;
public Statement stat;
public static Connection koneksiDatabase() throws
SQLException {
if (connection == null) {
DriverManager.registerDriver(new Driver());
String url = "jdbc:mysql://localhost/apriori";
String user = "root";
String password = "admin";
connection =
DriverManager.getConnection(url,user,password);
}
return connection;
}
}
4. Menu Utama
package MenuUtama;
import Barang.BarangForm;
import Penjualan.DetailPenjualan;
import Penjualan.PenjualanForm;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Doni
*/
public class MenuUtama extends javax.swing.JFrame {
public MenuUtama() {
initComponents();
}
@SuppressWarnings("unchecked")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
107
// <editor-fold defaultstate="collapsed" desc="Generated
Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CL
OSE);
jButton1.setText("BARANG");
jButton1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("PENJUALAN");
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("ANALISA");
jButton3.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder(
));
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); //
NOI18N
jLabel1.setText("Aplikasi Data Mining");
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 18)); //
NOI18N
jLabel2.setText("Menggunakan Metode Apriori");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 18)); //
NOI18N
jLabel3.setText("Untuk Analisa Pola Penjualan");
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addContainerGap(102, Short.MAX_VALUE)
.addComponent(jLabel1)
.addGap(88, 88, 88))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addContainerGap(67, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLa
yout.Alignment.TRAILING)
.addComponent(jLabel3)
.addComponent(jLabel2))
.addGap(51, 51, 51))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.REL
ATED)
.addComponent(jLabel3)
.addContainerGap(19, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
109
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLa
yout.Alignment.TRAILING, false)
.addComponent(jPanel2,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
jPanel1Layout.createSequentialGroup()
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNR
ELATED)
.addComponent(jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNR
ELATED)
.addComponent(jButton3,
javax.swing.GroupLayout.PREFERRED_SIZE, 111,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(jPanel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(48, 48, 48)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLa
yout.Alignment.BASELINE)
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 64,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE, 64,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3,
javax.swing.GroupLayout.PREFERRED_SIZE, 64,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(27, Short.MAX_VALUE))
);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.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.LE
ADING)
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
BarangForm brg = new BarangForm();
brg.setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(MenuUtama.class.getName()).log(Level.SEVERE,
null, ex);
}
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
PenjualanForm pjual = new PenjualanForm();
pjual.setVisible(true);
}
private void
jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
DetailPenjualan dp = new DetailPenjualan();
dp.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MenuUtama().setVisible(true);
}
});
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
111
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
// End of variables declaration
}
5. Penjualan
a. Penjualan
package Penjualan;
import Pelanggan.Pelanggan;
import java.util.Date;
/**
*
* @author Doni
*/
public class Penjualan {
private String noFaktur;
private String tanggalFaktur;
private Pelanggan kodePelanggan;
private String kodeBarang;
private String namaBarang;
private String satuan;
private Double hargasatuan;
private Double jumlahbarang;
private Double diskon;
private Double jumlahharga;
private Double total;
private Double diskontotal;
private Double grandtotal;
private String keterangan;
public String getNoFaktur() {
return noFaktur;
}
public void setNoFaktur(String noFaktur) {
this.noFaktur = noFaktur;
}
public String getTanggalFaktur() {
return tanggalFaktur;
}
public void setTanggalFaktur(String tanggalFaktur) {
this.tanggalFaktur = tanggalFaktur;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
}
public Pelanggan getKodePelanggan() {
return kodePelanggan;
}
public void setKodePelanggan(Pelanggan kodePelanggan) {
this.kodePelanggan = kodePelanggan;
}
public String getKodeBarang() {
return kodeBarang;
}
public void setKodeBarang(String kodeBarang) {
this.kodeBarang = kodeBarang;
}
public String getNamaBarang() {
return namaBarang;
}
public void setNamaBarang(String namaBarang) {
this.namaBarang = namaBarang;
}
public String getSatuan() {
return satuan;
}
public void setSatuan(String satuan) {
this.satuan = satuan;
}
public Double getHargasatuan() {
return hargasatuan;
}
public void setHargasatuan(Double hargasatuan) {
this.hargasatuan = hargasatuan;
}
public Double getJumlahbarang() {
return jumlahbarang;
}
public void setJumlahbarang(Double jumlahbarang) {
this.jumlahbarang = jumlahbarang;
}
public Double getDiskon() {
return diskon;
}
public void setDiskon(Double diskon) {
this.diskon = diskon;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
}
public Double getJumlahharga() {
return jumlahharga;
}
public void setJumlahharga(Double jumlahharga) {
this.jumlahharga = jumlahharga;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public Double getGrandtotal() {
return grandtotal;
}
public void setGrandtotal(Double grandtotal) {
this.grandtotal = grandtotal;
}
public String getKeterangan() {
return keterangan;
}
public void setKeterangan(String keterangan) {
this.keterangan = keterangan;
}
public Double getDiskontotal() {
return diskontotal;
}
public void setDiskontotal(Double diskontotal) {
this.diskontotal = diskontotal;
}
}
b. PenjualanDetailTableModel
package Penjualan;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Doni
*/
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
public class PenjualanDetailTableModel extends
AbstractTableModel {
private List<Penjualan> penjualan = new
ArrayList<Penjualan>();
public PenjualanDetailTableModel(List<Penjualan>
penjualan) {
this.penjualan = penjualan;
}
public int getRowCount() {
return penjualan.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Penjualan k = penjualan.get(rowIndex);
switch (columnIndex) {
case 0:
return k.getNoFaktur();
case 1:
return k.getKodeBarang();
case 2:
return k.getNamaBarang();
case 3:
return k.getJumlahbarang();
default:
return "";
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "No Faktur";
case 1:
return "Kode Barang";
case 2:
return "Nama Barang";
case 3:
return "Jumlah";
default:
return "";
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
c. PenjualanForm
package Penjualan;
import Barang.Barang;
import Barang.BarangKontrol;
import Barang.BarangTableModel;
import Pelanggan.Pelanggan;
import Pelanggan.PelangganKontrol;
import Pelanggan.PelangganDetailTableModel;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Doni
*/
public class PenjualanForm extends javax.swing.JFrame {
public PenjualanForm() {
initComponents();
jInternalFrameBarang.setVisible(false);
jInternalFramePelanggan.setVisible(false);
GregorianCalendar gc = new GregorianCalendar();
tanggalDC.setDate(gc.getTime());
automaticNumber();
}
private void automaticNumber() {
try {
long kd =
PenjualanKontrol.KoneksiDataBase().cekKode();
String kode = String.valueOf(kd);
String hasilkode = "";
if (kd < 10) {
hasilkode = "PEN" + "000" + kode;
} else if (kd < 100) {
hasilkode = "PEN" + "00" + kode;
} else if (kd < 1000) {
hasilkode = "PEN" + "0" + kode;
} else if (kd >= 1000) {
hasilkode = "PEN" + kode;
}
noFakturFK.setText(hasilkode);
} catch (SQLException ex) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated
Code">
private void initComponents() {
jInternalFramePelanggan = new
javax.swing.JInternalFrame();
jPanel6 = new javax.swing.JPanel();
jLabel14 = new javax.swing.JLabel();
cariPelangganTF = new javax.swing.JTextField();
jPanel7 = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
pelangganTable = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
jInternalFrameBarang = new
javax.swing.JInternalFrame();
jPanel8 = new javax.swing.JPanel();
jLabel16 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jPanel9 = new javax.swing.JPanel();
jScrollPane4 = new javax.swing.JScrollPane();
BarangTable = new javax.swing.JTable();
jButton2 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
kodeBarangTF = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
namaBarangTF = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
satuanTF = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
hargaSatuanTF = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
jumlahBarangTF = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jumlahHargaTF = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
noTF = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
discTF = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
penjualanDetailTable = new javax.swing.JTable();
jPanel4 = new javax.swing.JPanel();
jLabel17 = new javax.swing.JLabel();
totalHargaTF = new javax.swing.JTextField();
jLabel18 = new javax.swing.JLabel();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
DiskonTF = new javax.swing.JTextField();
grandTotalTF = new javax.swing.JTextField();
jLabel19 = new javax.swing.JLabel();
simpanButton = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
pelangganTF = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
alamatTA = new javax.swing.JTextArea();
jLabel11 = new javax.swing.JLabel();
tanggalDC = new com.toedter.calendar.JDateChooser();
jLabel15 = new javax.swing.JLabel();
noFakturFK = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_
CLOSE);
getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jInternalFramePelanggan.setVisible(true);
jInternalFramePelanggan.getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel14.setText("Nama pelanggan yang dicari");
cariPelangganTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
cariPelangganTFActionPerformed(evt);
}
});
cariPelangganTF.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent
evt) {
cariPelangganTFKeyReleased(evt);
}
});
javax.swing.GroupLayout jPanel6Layout = new
javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel14)
.addGap(31, 31, 31)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
.addComponent(cariPelangganTF,
javax.swing.GroupLayout.PREFERRED_SIZE, 182,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(82, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGap(22, 22, 22)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel14)
.addComponent(cariPelangganTF,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(18, Short.MAX_VALUE))
);
jInternalFramePelanggan.getContentPane().add(jPanel6,
new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 440,
60));
pelangganTable.setModel(new
javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Kode Pelanggan", "Nama Pelanggan", "Alamat"
}
));
pelangganTable.addMouseListener(new
java.awt.event.MouseAdapter() {
public void
mouseClicked(java.awt.event.MouseEvent evt) {
pelangganTableMouseClicked(evt);
}
});
jScrollPane3.setViewportView(pelangganTable);
jButton1.setText("Keluar");
jButton1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
119
javax.swing.GroupLayout jPanel7Layout = new
javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(jScrollPane3,
javax.swing.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel7Layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(21, 21, 21))))
);
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(jScrollPane3,
javax.swing.GroupLayout.PREFERRED_SIZE, 194,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
.addComponent(jButton1)
.addContainerGap(12, Short.MAX_VALUE))
);
jInternalFramePelanggan.getContentPane().add(jPanel7,
new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 65, 440,
240));
getContentPane().add(jInternalFramePelanggan, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));
jInternalFrameBarang.setVisible(true);
jInternalFrameBarang.getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel16.setText("Nama barang yang dicari");
javax.swing.GroupLayout jPanel8Layout = new
javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
120
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel16)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
.addComponent(jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE, 177,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(224, Short.MAX_VALUE))
);
jPanel8Layout.setVerticalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jLabel16)
.addComponent(jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jInternalFrameBarang.getContentPane().add(jPanel8,
new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 540,
50));
BarangTable.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 [] {
"Kode Barang", "Nama Barang", "Harga Beli",
"Harga Jual"
}
));
BarangTable.addMouseListener(new
java.awt.event.MouseAdapter() {
public void
mouseClicked(java.awt.event.MouseEvent evt) {
BarangTableMouseClicked(evt);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
});
jScrollPane4.setViewportView(BarangTable);
jButton2.setText("Keluar");
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel9Layout = new
javax.swing.GroupLayout(jPanel9);
jPanel9.setLayout(jPanel9Layout);
jPanel9Layout.setHorizontalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel9Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel9Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addComponent(jScrollPane4,
javax.swing.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE)
.addComponent(jButton2,
javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
jPanel9Layout.setVerticalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel9Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane4,
javax.swing.GroupLayout.PREFERRED_SIZE, 302,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
.addComponent(jButton2)
.addContainerGap(23, Short.MAX_VALUE))
);
jInternalFrameBarang.getContentPane().add(jPanel9,
new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 50, 540,
370));
getContentPane().add(jInternalFrameBarang, new
org.netbeans.lib.awtextra.AbsoluteConstraints(110, 30, 560,
450));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
jPanel2.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel3.setText("Kode Barang");
jPanel2.add(jLabel3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(48, 16, 73, -
1));
kodeBarangTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
kodeBarangTFActionPerformed(evt);
}
});
kodeBarangTF.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
kodeBarangTFKeyPressed(evt);
}
});
jPanel2.add(kodeBarangTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(48, 33, 73,
25));
jLabel4.setText("Nama Barang");
jPanel2.add(jLabel4, new
org.netbeans.lib.awtextra.AbsoluteConstraints(127, 16, 190, -
1));
jPanel2.add(namaBarangTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(127, 33, 190,
25));
jLabel5.setText("Satuan");
jPanel2.add(jLabel5, new
org.netbeans.lib.awtextra.AbsoluteConstraints(323, 16, -1, -
1));
jPanel2.add(satuanTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(323, 33, 35,
25));
jLabel6.setText("Harga Satuan");
jPanel2.add(jLabel6, new
org.netbeans.lib.awtextra.AbsoluteConstraints(364, 16, -1, -
1));
jPanel2.add(hargaSatuanTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(364, 33, 84,
25));
jLabel7.setText("Jumlah Barang");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
123
jPanel2.add(jLabel7, new
org.netbeans.lib.awtextra.AbsoluteConstraints(454, 16, 88, -
1));
jumlahBarangTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jumlahBarangTFActionPerformed(evt);
}
});
jPanel2.add(jumlahBarangTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(454, 33, 88,
25));
jLabel8.setText("Total Harga");
jPanel2.add(jLabel8, new
org.netbeans.lib.awtextra.AbsoluteConstraints(594, 13, 94, -
1));
jumlahHargaTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jumlahHargaTFActionPerformed(evt);
}
});
jumlahHargaTF.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
jumlahHargaTFKeyPressed(evt);
}
});
jPanel2.add(jumlahHargaTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(594, 33, 94,
25));
jLabel12.setText("No");
jPanel2.add(jLabel12, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 14, 30,
18));
jPanel2.add(noTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 33, 30,
25));
jLabel13.setText("Disc %");
jPanel2.add(jLabel13, new
org.netbeans.lib.awtextra.AbsoluteConstraints(548, 16, 40, -
1));
discTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
discTFActionPerformed(evt);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
124
}
});
jPanel2.add(discTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(548, 33, 40,
25));
getContentPane().add(jPanel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 190, 700,
70));
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder
(javax.swing.border.BevelBorder.RAISED));
jPanel1.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
jLabel1.setText("FORM PENJUALAN");
jPanel1.add(jLabel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 13, -1,
32));
jLabel2.setText("Form untuk memasukan data
penjualan");
jPanel1.add(jLabel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 51, -1, -
1));
getContentPane().add(jPanel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 700,
80));
jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
jPanel3.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
penjualanDetailTable.setModel(new
javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"No Faktur", "Kode Barang", "Nama Barang",
"Satuan", "Harga Satuan", "Jumlah Barang", "Disc", "Total
Harga"
}
));
jScrollPane1.setViewportView(penjualanDetailTable);
jPanel3.add(jScrollPane1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 13, 676,
194));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
125
getContentPane().add(jPanel3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 260, 700,
220));
jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
jPanel4.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel17.setText("Total Harga");
jPanel4.add(jLabel17, new
org.netbeans.lib.awtextra.AbsoluteConstraints(510, 10, -1,
20));
totalHargaTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
totalHargaTFActionPerformed(evt);
}
});
jPanel4.add(totalHargaTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(580, 10, 100, -
1));
jLabel18.setText("Diskon (Rp)");
jPanel4.add(jLabel18, new
org.netbeans.lib.awtextra.AbsoluteConstraints(510, 40, -1,
20));
DiskonTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
DiskonTFActionPerformed(evt);
}
});
jPanel4.add(DiskonTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(580, 40, 100, -
1));
jPanel4.add(grandTotalTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(580, 70, 100, -
1));
jLabel19.setText("Grand Total");
jPanel4.add(jLabel19, new
org.netbeans.lib.awtextra.AbsoluteConstraints(510, 70, -1,
20));
simpanButton.setText("Simpan");
simpanButton.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
simpanButtonActionPerformed(evt);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
126
}
});
simpanButton.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent
evt) {
simpanButtonKeyPressed(evt);
}
});
jPanel4.add(simpanButton, new
org.netbeans.lib.awtextra.AbsoluteConstraints(510, 110, -1, -
1));
jButton3.setText("Keluar");
jButton3.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel4.add(jButton3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(590, 110, -1, -
1));
getContentPane().add(jPanel4, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 480, 700,
140));
jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
jPanel5.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel9.setText("Pelanggan");
jPanel5.add(jLabel9, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 18, 60, -
1));
pelangganTF.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
pelangganTFActionPerformed(evt);
}
});
jPanel5.add(pelangganTF, new
org.netbeans.lib.awtextra.AbsoluteConstraints(72, 13, 191,
25));
jLabel10.setText("Alamat");
jPanel5.add(jLabel10, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 44, 60, -
1));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
127
alamatTA.setColumns(20);
alamatTA.setRows(5);
jScrollPane2.setViewportView(alamatTA);
jPanel5.add(jScrollPane2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(72, 44, 191,
53));
jLabel11.setText("Tanggal");
jPanel5.add(jLabel11, new
org.netbeans.lib.awtextra.AbsoluteConstraints(330, 50, 50, -
1));
tanggalDC.setDateFormatString("dd-MM-yyyy");
jPanel5.add(tanggalDC, new
org.netbeans.lib.awtextra.AbsoluteConstraints(390, 50, 151,
25));
jLabel15.setText("No Faktur");
jPanel5.add(jLabel15, new
org.netbeans.lib.awtextra.AbsoluteConstraints(330, 20, -1, -
1));
jPanel5.add(noFakturFK, new
org.netbeans.lib.awtextra.AbsoluteConstraints(390, 20, 130,
25));
getContentPane().add(jPanel5, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 80, 700,
110));
pack();
}// </editor-fold>
private void
pelangganTFActionPerformed(java.awt.event.ActionEvent evt) {
String kodePelanggan = pelangganTF.getText();
System.out.println(kodePelanggan);
try {
Pelanggan cariPelanggan =
PelangganKontrol.KoneksiDataBase().getPelangganByKode(kodePel
anggan);
if (cariPelanggan != null) {
pelangganTF.setText(cariPelanggan.getKodePelanggan());
alamatTA.setText(cariPelanggan.getNamaPelanggan() + "\n" +
cariPelanggan.getAlamatPelanggan());
kodeBarangTF.requestFocus();
} else {
int reply =
JOptionPane.showConfirmDialog(null, "Pelanggan tidak
ditemukan. Lihat list pelanggan ?", "Konfirmasi",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (reply == JOptionPane.YES_OPTION) {
jInternalFramePelanggan.setVisible(true);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
128
List<Pelanggan> plg = (List<Pelanggan>)
PelangganKontrol.KoneksiDataBase().getAllPelanggan();
PelangganDetailTableModel model = new
PelangganDetailTableModel(plg);
pelangganTable.setModel(model);
}
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
private void
kodeBarangTFActionPerformed(java.awt.event.ActionEvent evt) {
String kodebarang = kodeBarangTF.getText();
try {
Barang cariBarang =
BarangKontrol.KoneksiDataBase().getBarangByKode(kodebarang);
if (cariBarang != null) {
Barang barang =
BarangKontrol.KoneksiDataBase().getBarangByKode(kodebarang);
namaBarangTF.setText(barang.getNamaBarang());
satuanTF.setText(barang.getSatuan());
hargaSatuanTF.setText(String.valueOf(barang.getHargaJual()));
jumlahBarangTF.requestFocus();
} else {
int reply =
JOptionPane.showConfirmDialog(null, "Kode Barang Tidak Ada.
Ingin Melihat List Barang ?", "Konfirmasi",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (reply == JOptionPane.YES_OPTION) {
jInternalFrameBarang.setVisible(true);
List<Barang> brg = (List<Barang>)
BarangKontrol.KoneksiDataBase().getAllBarang();
BarangTableModel model = new
BarangTableModel(brg);
BarangTable.setModel(model);
}
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
private void
cariPelangganTFKeyReleased(java.awt.event.KeyEvent evt) {
String cari = cariPelangganTF.getText();
try {
List<Pelanggan> plg = (List<Pelanggan>)
PelangganKontrol.KoneksiDataBase().cariPelanggan(cari);
PelangganDetailTableModel model = new
PelangganDetailTableModel(plg);
pelangganTable.setModel(model);
} catch (SQLException ex) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
129
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
private void
jumlahBarangTFActionPerformed(java.awt.event.ActionEvent evt)
{
String hrgBrg = hargaSatuanTF.getText();
Double hBrg = Double.parseDouble(hrgBrg);
String jmlBrg = jumlahBarangTF.getText();
Double jBrg = Double.parseDouble(jmlBrg);
Double totaltnpdiskon = hBrg * jBrg;
String totaltpdiskon =
String.valueOf(totaltnpdiskon);
jumlahHargaTF.setText(totaltpdiskon);
discTF.requestFocus();
}
private void
discTFActionPerformed(java.awt.event.ActionEvent evt) {
String jmtnpdiskon = jumlahHargaTF.getText();
Double jtnpdiskon = Double.parseDouble(jmtnpdiskon);
String diskon = discTF.getText();
Double dskon = Double.parseDouble(diskon);
Double totaldgndiskon = jtnpdiskon - ((dskon / 100) *
jtnpdiskon);
String totalstlhdiskon =
String.valueOf(totaldgndiskon);
jumlahHargaTF.setText(totalstlhdiskon);
jumlahHargaTF.requestFocus();
}
private void
jumlahHargaTFActionPerformed(java.awt.event.ActionEvent evt)
{
try {
String nofaktur = noFakturFK.getText();
String kode = kodeBarangTF.getText();
String nama = namaBarangTF.getText();
String satuan = satuanTF.getText();
Double hargasatuan =
Double.parseDouble(hargaSatuanTF.getText());
Double jumlahbarang =
Double.parseDouble(jumlahBarangTF.getText());
Double diskon =
Double.parseDouble(discTF.getText());
Double jumlahharga =
Double.parseDouble(jumlahHargaTF.getText());
Penjualan p = new Penjualan();
p.setNoFaktur(nofaktur);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
130
p.setKodeBarang(kode);
p.setNamaBarang(nama);
p.setHargasatuan(hargasatuan);
p.setJumlahbarang(jumlahbarang);
p.setDiskon(diskon);
p.setSatuan(satuan);
p.setJumlahharga(jumlahharga);
try {
PenjualanKontrol.KoneksiDataBase().tambahdetailpenjualan(p);
JOptionPane.showMessageDialog(rootPane, "
Data Berhasil Masuk");
System.out.println(nofaktur);
resetfield();
hitungtotal();
} catch (Exception ex) {
JOptionPane.showMessageDialog(rootPane, "
Data dengan \n id = " + kode + " nama = " + nama + " \n
Gagal Masuk " + " \n error: " + ex.getMessage());
ex.getMessage();
}
List<Penjualan> penjualan = (List<Penjualan>)
PenjualanKontrol.KoneksiDataBase().getAllPenjualanDetail(nofa
ktur);
PenjualanTableModel model = new
PenjualanTableModel(penjualan);
penjualanDetailTable.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
kodeBarangTF.requestFocus();
}
private void
cariPelangganTFActionPerformed(java.awt.event.ActionEvent
evt) {
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jInternalFramePelanggan.dispose();
}
private void
pelangganTableMouseClicked(java.awt.event.MouseEvent evt) {
int row = pelangganTable.getSelectedRow();
String kodePelanggan = pelangganTable.getValueAt(row,
0).toString();
try {
Pelanggan p =
PelangganKontrol.KoneksiDataBase().getPelangganByKode(kodePel
anggan);
pelangganTF.setText(p.getKodePelanggan());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
131
alamatTA.setText(p.getNamaPelanggan() + "\n" +
p.getAlamatPelanggan());
jInternalFramePelanggan.dispose();
kodeBarangTF.requestFocus();
} catch (SQLException ex) {
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
jInternalFrameBarang.dispose();
}
private void
BarangTableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int row = BarangTable.getSelectedRow();
String kodebarang = BarangTable.getValueAt(row,
0).toString();
try {
Barang b =
BarangKontrol.KoneksiDataBase().getBarangByKode(kodebarang);
kodeBarangTF.setText(b.getKodeBarang());
namaBarangTF.setText(b.getNamaBarang());
satuanTF.setText(b.getSatuan());
hargaSatuanTF.setText(String.valueOf(b.getHargaJual()));
jInternalFrameBarang.dispose();
jumlahBarangTF.requestFocus();
} catch (SQLException ex) {
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
private void
totalHargaTFActionPerformed(java.awt.event.ActionEvent evt) {
}
private void
jumlahHargaTFKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_F1) {
DiskonTF.requestFocus();
}
}
private void
DiskonTFActionPerformed(java.awt.event.ActionEvent evt) {
String totalharga = totalHargaTF.getText();
Double totharga = Double.parseDouble(totalharga);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
132
String diskon = DiskonTF.getText();
Double dskon = Double.parseDouble(diskon);
Double grndtotal = totharga - dskon;
grandTotalTF.setText(String.valueOf(grndtotal));
simpanButton.setEnabled(true);
simpanButton.requestFocus();
}
private void
simpanButtonKeyPressed(java.awt.event.KeyEvent evt) {
simpanButton.doClick();
}
private void
simpanButtonActionPerformed(java.awt.event.ActionEvent evt) {
String nofaktur = noFakturFK.getText();
Date tglfaktur = tanggalDC.getDate();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-
yyyy");
String tanggal = sdf.format(tglfaktur);
String kodepel = pelangganTF.getText();
Double totalharga =
Double.parseDouble(totalHargaTF.getText());
Double diskon =
Double.parseDouble(DiskonTF.getText());
Double grandtotal =
Double.parseDouble(grandTotalTF.getText());
Penjualan pj = null;
Penjualan p = new Penjualan();
p.setNoFaktur(nofaktur);
p.setTanggalFaktur(tanggal);
Pelanggan pl = new Pelanggan();
pl.setKodePelanggan(kodepel);
p.setTotal(totalharga);
p.setDiskontotal(diskon);
p.setGrandtotal(grandtotal);
p.setKodePelanggan(pl);
try {
PenjualanKontrol.KoneksiDataBase().tambahpenjualan(p);
JOptionPane.showMessageDialog(rootPane, " Data
Berhasil Masuk");
System.out.println(nofaktur);
resetfield();
hitungtotal();
} catch (Exception ex) {
JOptionPane.showMessageDialog(rootPane, " Data
dengan \n faktur = " + nofaktur + "\n Gagal Masuk " + " \n
error: " + ex.getMessage());
ex.getMessage();
}
resetnota();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
133
private void
kodeBarangTFKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_F1) {
DiskonTF.requestFocus();
}
}
private void
jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PenjualanForm().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable BarangTable;
private javax.swing.JTextField DiskonTF;
private javax.swing.JTextArea alamatTA;
private javax.swing.JTextField cariPelangganTF;
private javax.swing.JTextField discTF;
private javax.swing.JTextField grandTotalTF;
private javax.swing.JTextField hargaSatuanTF;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JInternalFrame jInternalFrameBarang;
private javax.swing.JInternalFrame
jInternalFramePelanggan;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel 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.JPanel jPanel2;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
134
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jumlahBarangTF;
private javax.swing.JTextField jumlahHargaTF;
private javax.swing.JTextField kodeBarangTF;
private javax.swing.JTextField namaBarangTF;
private javax.swing.JTextField noFakturFK;
private javax.swing.JTextField noTF;
private javax.swing.JTextField pelangganTF;
private javax.swing.JTable pelangganTable;
private javax.swing.JTable penjualanDetailTable;
private javax.swing.JTextField satuanTF;
private javax.swing.JButton simpanButton;
private com.toedter.calendar.JDateChooser tanggalDC;
private javax.swing.JTextField totalHargaTF;
// End of variables declaration
private void resetfield() {
kodeBarangTF.setText("");
namaBarangTF.setText("");
satuanTF.setText("");
hargaSatuanTF.setText("");
jumlahBarangTF.setText("");
discTF.setText("");
jumlahHargaTF.setText("");
}
private void hitungtotal() throws SQLException {
String nofaktur = noFakturFK.getText();
Penjualan total =
PenjualanKontrol.KoneksiDataBase().hitungtotal(nofaktur);
totalHargaTF.setText(String.valueOf(total.getTotal()));
}
private void resetnota() {
try {
resetfield();
automaticNumber();
pelangganTF.setText("");
alamatTA.setText("");
totalHargaTF.setText("");
DiskonTF.setText("");
grandTotalTF.setText("");
simpanButton.setEnabled(false);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
135
List<Penjualan> penjualan = (List<Penjualan>)
PenjualanKontrol.KoneksiDataBase().getAllPenjualanDetail("");
PenjualanTableModel model = new
PenjualanTableModel(penjualan);
penjualanDetailTable.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV
ERE, null, ex);
}
}
}
d. DetailPenjualanForm
package Penjualan;
import Apriori.AprioriForm;
import Apriori.AprioriKodeForm;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Doni
*/
public class DetailPenjualan extends javax.swing.JFrame {
public DetailPenjualan() {
initComponents();
try {
List<Penjualan> p = (List<Penjualan>)
PenjualanKontrol.KoneksiDataBase().getAllDetail();
PenjualanDetailTableModel model = new
PenjualanDetailTableModel(p);
penjualandetailTable.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(DetailPenjualan.class.getName()).log(Level.S
EVERE, null, ex);
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated
Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
penjualandetailTable = new javax.swing.JTable();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
136
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_
CLOSE);
getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder
(javax.swing.border.BevelBorder.RAISED));
jPanel1.setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18));
jLabel1.setText("Histori Penjualan");
jPanel1.add(jLabel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 2, -1,
35));
jLabel2.setText("Digunakan untuk melihat daftar
penjualan");
jPanel1.add(jLabel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(12, 43, -1, -
1));
getContentPane().add(jPanel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 700,
70));
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorde
r());
penjualandetailTable.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 [] {
"No Faktur", "Kode Item", "Nama iItem",
"Jumlah Barang"
}
));
jScrollPane1.setViewportView(penjualandetailTable);
jButton1.setText("Proses TipeBarang");
jButton1.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
137
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Keluar");
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("Proses KodeBarang");
jButton3.addActionListener(new
java.awt.event.ActionListener() {
public void
actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE, 676, Short.MAX_VALUE)
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
.addComponent(jButton1)
.addGap(18, 18, 18)
.addComponent(jButton2)
.addGap(18, 18, 18))))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
138
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 342,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.U
NRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.Group
Layout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3))
.addContainerGap(19, Short.MAX_VALUE))
);
getContentPane().add(jPanel2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70, -1,
410));
pack();
}// </editor-fold>
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
AprioriForm prior = new AprioriForm();
prior.setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(DetailPenjualan.class.getName()).log(Level.S
EVERE, null, ex);
}
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
private void
jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
try {
AprioriKodeForm prior = new AprioriKodeForm();
prior.setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(DetailPenjualan.class.getName()).log(Level.S
EVERE, null, ex);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
139
new DetailPenjualan().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.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable penjualandetailTable;
// End of variables declaration
}
e. PenjualanKontrol
package Penjualan;
import Koneksi.Koneksi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Doni
*/
public class PenjualanKontrol {
private final String SQL_SIMPANDET = "insert into
penjualan_det "
+ "(no_faktur, kode_item, nama_item, harga_jual,
jumlah_barang, total, satuan, disc) "
+ "values(?,?,?,?,?,?,?,?)";
private final String SQL_SIMPAN = "insert into penjualan
"
+ "(no_faktur, tgl_faktur, kode_pel, total_harga,
diskon, grand_total) "
+ "values(?,?,?,?,?,?)";
private final String SQL_GETALLPENJUALANDETAIL = "select
* from penjualan_det where no_faktur = ? ";
private final String SQL_GETKODE = "select
max(substring(no_faktur,4,6)) from penjualan";
private final String SQL_HTOTAL = "select sum(total) from
penjualan_det where no_faktur = ? ";
private final String SQL_GETALLDETAIL = "select
no_faktur, kode_item, nama_item, jumlah_barang from
penjualan_det";
private Connection conn;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
140
public PenjualanKontrol(Connection koneksi) {
this.conn = koneksi;
}
public static PenjualanKontrol KoneksiDataBase() throws
SQLException {
PenjualanKontrol kon = new
PenjualanKontrol(Koneksi.koneksiDatabase());
return kon;
}
public long cekKode() throws SQLException {
String kode = "";
long kdB = 0;
PreparedStatement statement = null;
ResultSet rset = null;
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_GETKODE);
rset = statement.executeQuery();
while (rset.next()) {
kode =
rset.getString("max(substring(no_faktur,4,6))");
if (kode == null) {
kdB = 0;
break;
}
String kdBg = kode;
kdB = Long.parseLong(kdBg);
}
kdB = kdB + 1;
return kdB;
}
public void tambahdetailpenjualan(Penjualan p) throws
SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_SIMPANDET);
statement.setString(1, p.getNoFaktur());
statement.setString(2, p.getKodeBarang());
statement.setString(3, p.getNamaBarang());
statement.setDouble(4, p.getHargasatuan());
statement.setDouble(5, p.getJumlahbarang());
statement.setDouble(6, p.getJumlahharga());
statement.setString(7, p.getSatuan());
statement.setDouble(8, p.getDiskon());
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
141
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public void tambahpenjualan(Penjualan penjualan) throws
SQLException {
PreparedStatement statement = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_SIMPAN);
statement.setString(1, penjualan.getNoFaktur());
statement.setString(2,
penjualan.getTanggalFaktur());
statement.setString(3,
penjualan.getKodePelanggan().getKodePelanggan());
statement.setDouble(4, penjualan.getTotal());
statement.setDouble(5,
penjualan.getDiskontotal());
statement.setDouble(6,
penjualan.getGrandtotal());
statement.executeUpdate();
conn.commit();
} catch (SQLException x) {
conn.rollback();
throw x;
} finally {
try {
conn.setAutoCommit(true);
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public List<Penjualan> getAllPenjualanDetail(String
nofaktur) throws SQLException {
PreparedStatement statement = null;
ResultSet result = null;
try {
conn.setAutoCommit(false);
statement =
conn.prepareStatement(SQL_GETALLPENJUALANDETAIL);
statement.setString(1, nofaktur);
result = statement.executeQuery();
List<Penjualan> penjualan = new
ArrayList<Penjualan>();
while (result.next()) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
142
Penjualan p = new Penjualan();
p.setNoFaktur(result.getString("no_faktur"));
p.setKodeBarang(result.getString("kode_item"));
p.setNamaBarang(result.getString("nama_item"));
p.setSatuan(result.getString("satuan"));
p.setHargasatuan(result.getDouble("harga_jual"));
p.setJumlahbarang(result.getDouble("jumlah_barang"));
p.setDiskon(result.getDouble("disc"));
p.setJumlahharga(result.getDouble("total"));
penjualan.add(p);
}
conn.commit();
return penjualan;
} catch (SQLException e) {
throw e;
} finally {
try {
conn.setAutoCommit(true);
if (result != null) {
result.close();
}
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public List<Penjualan> getAllDetail() throws SQLException
{
PreparedStatement statement = null;
ResultSet result = null;
try {
conn.setAutoCommit(false);
statement =
conn.prepareStatement(SQL_GETALLDETAIL);
result = statement.executeQuery();
List<Penjualan> penjualan = new
ArrayList<Penjualan>();
while (result.next()) {
Penjualan p = new Penjualan();
p.setNoFaktur(result.getString("no_faktur"));
p.setKodeBarang(result.getString("kode_item"));
p.setNamaBarang(result.getString("nama_item"));
p.setJumlahbarang(result.getDouble("jumlah_barang"));
penjualan.add(p);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
143
conn.commit();
return penjualan;
} catch (SQLException e) {
throw e;
} finally {
try {
conn.setAutoCommit(true);
if (result != null) {
result.close();
}
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
throw e;
}
}
}
public Penjualan hitungtotal(String kode) throws
SQLException {
PreparedStatement statement = null;
ResultSet reset = null;
try {
conn.setAutoCommit(false);
statement = conn.prepareStatement(SQL_HTOTAL);
statement.setString(1, kode);
reset = statement.executeQuery();
Penjualan p = null;
while (reset.next()) {
p = new Penjualan();
p.setTotal(Double.parseDouble(reset.getString("sum(total)")))
;
}
conn.commit();
return p;
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (reset != null) {
reset.close();
}
if (statement != null) {
statement.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
144
f. PenjualanTableModel
package Penjualan;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Doni
*/
public class PenjualanTableModel extends AbstractTableModel {
private List<Penjualan> penjualan = new
ArrayList<Penjualan>();
public PenjualanTableModel(List<Penjualan> penjualan) {
this.penjualan = penjualan;
}
public int getRowCount() {
return penjualan.size();
}
public int getColumnCount() {
return 7;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Penjualan k = penjualan.get(rowIndex);
switch (columnIndex) {
case 0:
return k.getNoFaktur();
case 1:
return k.getKodeBarang();
case 2:
return k.getNamaBarang();
case 3:
return k.getHargasatuan();
case 4:
return k.getJumlahbarang();
case 5:
return k.getDiskon();
case 6:
return k.getJumlahharga();
default:
return "";
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "No Faktur";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
145
case 1:
return "Kode Barang";
case 2:
return "Nama Barang";
case 3:
return "Harga Satuan";
case 4:
return "Jumlah";
case 5:
return "Diskon";
case 6:
return "Jumlah Harga";
default:
return "";
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI