PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
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 i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Tanggal : ………………..
Ridowati Gunawan, S.Kom. M.T.
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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)
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 5.1 Hasil Pengujian .................................................................................... 53 Tabel 5.2 Hasil Perhitungan Lift Ratio ................................................................ 55
xix
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
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.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 langkahlangkah 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.
7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 1itemset 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 :
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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%
13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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%
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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%
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
2.
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
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.
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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. 20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Menginput Data Barang
Menginput Data Penjualan
Melihat Histori Penjualan Pengguna
Mencari rule penjualan <<depands on>>
Melihat Hasil Apriori
Gambar 3.1 Use Case
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 1
Use Case
Deskripsi
Menginput Data Pengguna dapat menambahkan data barang. Data Barang
tersebut dapat diinputkan sesuai dengan isian yang telah
disediakan
pada
sistem
kemudian
akan
tersimpan dalam database. 2
Menginput Data Pengguna dapat menambahkan data penjualan. Data Penjualan
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
Pengguna dapat mencari rule penjualan. Pada
Penjualan
kegiatan ini sebenarnya pengguna hanya akan menekan tombol dan pencarian rule akan dilakukan oleh sistem.
5
Melihat Hasil
Pengguna dapat melihat hasil output dari algoritma
Apriori
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.
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.5.Diagram Aktivitas 1.5.1. Diagram Aktivitas Menginput Data
Pengguna
Sistem
Menekan tombol Barang
Menampilan form barang
Memasukan data sesuai field
Menekan tombol Simpan
Menyimpan ke database
Gambar 3.2 Diagram Aktivitas Menginput Data Barang
1.5.2. Diagram Aktivitas Menginput Data Penjualan
Pengguna
Sistem
Menekan tombol Penjualan
Menampilkan form penjualan
Memasukan data sesuai field
Menekan tombol Simpan
Menyimpan ke database
Gambar 3.3 Diagram Aktivitas Menginput Data Penjualan
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.5.3. Diagram Aktivitas Melihat Histori Penjualan
Pengguna
Sistem
Menekan tombol Analisa
Mengambil data dari database Menampilan form histori penjualan
Gambar 3.4 Diagram Aktivitas Melihat Histori Penjualan
1.5.4. Diagram Aktivitas Mencari Rule Penjualan
Pengguna
Sistem
Menekan tombol Analisa
Mengambil data dari database Menampilan form histori penjualan
Menekan tombol Proses
Menampilan form Apriori
Menekan tombol Analisa
Menghitung rule penjualan
Gambar 3.5 Diagram Aktivitas Mencari Rule Penjualan
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.5.5. Diagram Aktivitas Melihat Hasil Apriori
Pengguna
Sistem
Menekan tombol Analisa
Mengambil data dari database Menampilan form histori penjualan
Menekan tombol Proses
Menampilan form Apriori
Menekan tombol Analisa
Menghitung rule penjualan
Menampilkan hasil pola
Gambar 3.6 Diagram Aktivitas Melihat Hasil Apriori
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.6. Diagram Sekuensial 1.6.1. Diagram Sekuensial Menginput Data Form Barang boudary
Barang entity
Mengisi data barang Menekan tombol Simpan tambahBarang()
Gambar 3.7 Diagram Sekuensial Menginput Data Barang
1.6.2. Diagram Sekuensial Menginput Data Penjualan Form Penjualan boudary
Barang entity
Mengisi data penjualan Menekan tombol Simpan tambahBarang()
Gambar 3.8 Diagram Sekuensial Menginput Data Penjualan
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Form Apriori boudary
Barang entity
getAllDetail()
Menampilkan data penjualan Menekan tombol Proses
Menekan tombol Analisa c2() c3()
Gambar 3.10 Diagram Sekuensial Mencari Rule Penjualan
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.6.5. Diagram Sekuensial Melihat Hasil Apriori Form Histori Penjualan boudary
Form Apriori boudary
Barang entity
getAllDetail()
Menampilkan data penjualan Menekan tombol Proses
Menekan tombol Analisa
c2() c3()
Menampilkan hasil pola
Gambar 3.11 Diagram Sekuensial Melihat Hasil Apriori
3.7. ER Diagram 1.7.1. Model Data Konseptual 1..*
punya
warna
1..1
pelanggan
1..*
1..*
1..1
barang
beli
1..*
punya
merk
1..1
punya
tipe Gambar 3.12 ER Diagram Konseptual
30
1..*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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_ Nama_ item
item
stok Harga_ beli
Harga_
satuan
kodemerk
kodetipe
kodewarna
jual
5. Tabel Penjualan_det Tabel 3.10 Tabel Logikal Penjualan_det No_faktur
Kode_item Nama_item satuan Harga_jual
Jumlah_ disc Jumlahh_ barang
31
harga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6. Tabel Penjualan Tabel 3.11 Tabel Logikal Penjualan No_faktur
Tgl_faktur
Total_harga
Diskon
Grand_total
7. Tabel Pelanggan Tabel 3.12 Tabel Logikal Pelanggan Kode_pel
Nama
Alamat
1.7.3. Model Data Fisikal 1. Tabel Merk Tabel 3.13 Tabel Fisikal Merk
merk kodemerk (PK) varchar(3) namamerk varchar(40)
2. Tabel Tipe Tabel 3.14 Tabel Fisikal Tipe
tipe kodetipe (PK) varchar(5) namatipe varchar(40) kodemerk (FK) varchar(3)
32
Kodepos
telp
Kode_pel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Barang Form
Gambar 3.14 Desain Menu Barang
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Penjualan Form
Gambar 3.15 Desain Menu Penjualan
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4. DetailPenjualan Form
Gambar 3.16 Desain Histori Penjualan
5. Apriori Form
Gambar 3.17 Desain Menu Apriori
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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; } }
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.
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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();
45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
=Float.parseFloat(jSpinner1.getValue().toString())){ conf=(bnyAB/bnyA)*100; if(conf>= Float.parseFloat(jSpinner2.getValue().toString())){ Apriori ap = new Apriori();
46 ap.setLeft(dt.get(a).getNama_item()); ap.setMid("=>"); ap.setRight(dt.get(b).getNama_item());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
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())) {
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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); } } } } } } } }
49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Seperti kode program diatas, terdapat method isidata yang pertamatama 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.
50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.7 Data Penjualan
Gambar 4.8 Hasil Rule Program
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.9 Hasil Manual Excel
52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 1. Apriori i.
Apriori package Apriori; import import import import import import import
Koneksi.Koneksi; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.util.ArrayList; 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) {
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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; }
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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; } } }
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 import import import import import import import import
Koneksi.Koneksi; java.sql.ResultSet; java.sql.SQLException; java.text.NumberFormat; java.util.List; java.util.Vector; java.util.logging.Level; java.util.logging.Logger; 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); }
62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
@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 dengan Apriori");
untuk
analisa
javax.swing.GroupLayout jPanel1Layout javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(
penjualan =
new
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 1));
0,
700,
new -
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");
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jPanel2.add(jLabel4, org.netbeans.lib.awtextra.AbsoluteConstraints(10, 1));
40,
new -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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 80));
70,
new 700,
jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1); jButton1.setText("Analisa"); jButton1.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setText("Keluar");
65
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButton2.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } });
void
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 javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup(
=
new
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(
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 300));
150,
new 700,
pack(); }// 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();
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} 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 "
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
+ "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("=>");
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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())) {
70
>=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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("=>");
71
","
+
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 import import import
Barang.*; java.util.ArrayList; java.util.List; 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();
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
case 2: return case 3: return case 4: return default: return
k.getRight(); k.getSupp(); k.getConf(); "";
} } @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 private private private private private private private private
String kodeBarang; String merk; String tipe; String warna; String namaBarang; int stokBarang; double hargaBeli; double hargaJual; String satuan;
//KODE_ITEM
//NAMA_ITEM //STOK //HARGA_BELI //HARGA_JUAL //SATUAN
public String getKodeBarang() { return kodeBarang; }
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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; }
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 import import import import import import import import import import import import import import import import import import import
Koneksi.Koneksi; Merk.Merk; Merk.MerkKontrol; Tipe.Tipe; Tipe.TipeKontrol; Warna.Warna; Warna.WarnaKontrol; java.sql.Connection; java.sql.SQLException; java.util.HashMap; java.util.List; java.util.Map; java.util.logging.Level; java.util.logging.Logger; javax.swing.JFrame; javax.swing.JOptionPane; net.sf.jasperreports.engine.JRException; net.sf.jasperreports.engine.JasperFillManager; net.sf.jasperreports.engine.JasperPrint; 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);
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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, 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("");
76
= "
"
+
"Format
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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() {
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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(
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 mouseClicked(java.awt.event.MouseEvent evt) { ListTableMouseClicked(evt); } }); jScrollPane1.setViewportView(ListTable);
void
InternalFrame.getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 60, 400, 90)); jLabel12.setText("Nama barang yang dicari"); InternalFrame.getContentPane().add(jLabel12, org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, 20));
new 160,
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 actionPerformed(java.awt.event.ActionEvent evt) { ExitListButtonActionPerformed(evt); } });
79
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
InternalFrame.getContentPane().add(ExitListButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 160, 1, -1)); getContentPane().add(InternalFrame, org.netbeans.lib.awtextra.AbsoluteConstraints(84, 240));
103,
new 430,
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 master barang");
untuk
memasukkan
javax.swing.GroupLayout jPanel1Layout javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(
=
data new
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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70));
80
0,
new 590,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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); }
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}); merkCombo.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { merkComboActionPerformed(evt); } });
void
tipeCombo.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { tipeComboActionPerformed(evt); } });
void
warnaCombo.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { warnaComboActionPerformed(evt); } });
void
jLabel13.setText("Warna"); jLabel14.setText("Tipe"); jLabel15.setText("Merk"); javax.swing.GroupLayout jPanel3Layout javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup(
=
new
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)
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.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)
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(merkCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
25, 25,
.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)
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(stokTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel7)))
25,
.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 javax.swing.GroupLayout(jPanel4);
85
jPanel4Layout
=
new
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup(
=
new
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)
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addGap(18, 18, 18) .addComponent(BeliSblmPPNTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(168, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup(
78,
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 actionPerformed(java.awt.event.ActionEvent evt) { CetakButtonActionPerformed(evt); } });
void
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); } });
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HapusButton.setText("Hapus"); HapusButton.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { HapusButtonActionPerformed(evt); } });
void
ListButton.setText("List"); ListButton.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { ListButtonActionPerformed(evt); } });
void
BatalButton.setText("Batal"); BatalButton.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { BatalButtonActionPerformed(evt); } });
void
KeluarButton.setText("Keluar"); KeluarButton.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { KeluarButtonActionPerformed(evt); } }); javax.swing.GroupLayout jPanel6Layout javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup(
void
=
new
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)
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.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 javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(
=
new
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING)
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 450));
91
78,
new 590,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
pack(); }// 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 = (List) 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();
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 = (List) 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 brg = (List) BarangKontrol.KoneksiDataBase().getAllBarang(); BarangTableModel model = new BarangTableModel(brg); ListTable.setModel(model); } catch (SQLException ex) { Logger.getLogger(BarangForm.class.getName()).log(Level.SEVERE , null, ex); }
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
InternalFrame.setVisible(true); } private void BatalButtonActionPerformed(java.awt.event.ActionEvent evt) { resetfield(); } private void KeluarButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } private RitelStlhPPNTextFieldKeyPressed(java.awt.event.KeyEvent { }
void 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 {
94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 brg = (List) 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();
95
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
String 1).toString(); String 2).toString(); String 3).toString();
namabarang
=
ListTable.getValueAt(row,
kategori
=
ListTable.getValueAt(row,
hargajual
=
ListTable.getValueAt(row,
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) {
96
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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); } }
97
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 stokTFActionPerformed(java.awt.event.ActionEvent evt) { RitelStlhPPNTextField.requestFocus(); }
void
private void RitelStlhPPNTextFieldActionPerformed(java.awt.event.ActionEve nt evt) { BeliStlhPPNTextField.requestFocus(); } private SimpanButtonKeyPressed(java.awt.event.KeyEvent evt) { SimpanButton.doClick(); }
98
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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;
99
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 import import import import import import import import import import
Koneksi.Koneksi; java.sql.CallableStatement; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement; java.util.ArrayList; java.util.List; java.util.logging.Level; 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 SQLException {
BarangKontrol
100
KoneksiDataBase()
throws
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BarangKontrol kon BarangKontrol(Koneksi.koneksiDatabase()); return kon; }
=
new
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();
101
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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) 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;
102
throws
=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} finally { try { conn.setAutoCommit(true); if (statement != null) { statement.close(); } } catch (SQLException e) { throw e; } } } public List getAllBarang() throws SQLException { PreparedStatement statement = null; ResultSet reset = null; conn.setAutoCommit(false); statement = conn.prepareStatement(SQL_GETALL); reset = statement.executeQuery(); List barang = new ArrayList(); 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 SQLException { PreparedStatement statement = null; ResultSet reset = null;
kode)
throws
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;
103
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} 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 caribarang(String carinama) 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();
=
throws
'"
List barang = new ArrayList(); 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; } }
104
+
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 = new ArrayList(); public BarangTableModel(List 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 ""; } } }
105
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Koneksi package Koneksi; import import import import import
com.mysql.jdbc.Driver; java.sql.Statement; java.sql.Connection; java.sql.DriverManager; 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 import import import import import
Barang.BarangForm; Penjualan.DetailPenjualan; Penjualan.PenjualanForm; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger;
/** * * @author Doni */ public class MenuUtama extends javax.swing.JFrame { public MenuUtama() { initComponents(); } @SuppressWarnings("unchecked")
106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
// <editor-fold defaultstate="collapsed" Code"> private void initComponents() {
desc="Generated
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 actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setText("PENJUALAN"); jButton2.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton3.setText("ANALISA"); jButton3.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } });
void
void
void
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");
107
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N jLabel3.setText("Untuk Analisa Pola Penjualan"); javax.swing.GroupLayout jPanel2Layout javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(
=
new
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 javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(
=
new
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()
108
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.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, javax.swing.GroupLayout.PREFERRED_SIZE)
111,
.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)) );
109
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
javax.swing.GroupLayout layout javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(
=
new
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(); }// private jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { BarangForm brg = new BarangForm(); brg.setVisible(true); } catch (SQLException ex) {
void
Logger.getLogger(MenuUtama.class.getName()).log(Level.SEVERE, null, ex); } } private jButton2ActionPerformed(java.awt.event.ActionEvent evt) { PenjualanForm pjual = new PenjualanForm(); pjual.setVisible(true); }
void
private jButton3ActionPerformed(java.awt.event.ActionEvent evt) { DetailPenjualan dp = new DetailPenjualan(); dp.setVisible(true); }
void
public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MenuUtama().setVisible(true); } }); }
110
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
// 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 private private private private private private private private private private private private private
String noFaktur; String tanggalFaktur; Pelanggan kodePelanggan; String kodeBarang; String namaBarang; String satuan; Double hargasatuan; Double jumlahbarang; Double diskon; Double jumlahharga; Double total; Double diskontotal; Double grandtotal; 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;
111
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} 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;
112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} 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 */
113
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public class PenjualanDetailTableModel AbstractTableModel { private List penjualan ArrayList();
extends =
new
public PenjualanDetailTableModel(List 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 ""; } } }
114
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
c. PenjualanForm package Penjualan; import import import import import import import import import import import import import import import
Barang.Barang; Barang.BarangKontrol; Barang.BarangTableModel; Pelanggan.Pelanggan; Pelanggan.PelangganKontrol; Pelanggan.PelangganDetailTableModel; java.awt.event.KeyEvent; java.sql.SQLException; java.text.SimpleDateFormat; java.util.Date; java.util.GregorianCalendar; java.util.List; java.util.logging.Level; java.util.logging.Logger; 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) {
115
=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Logger.getLogger(PenjualanForm.class.getName()).log(Level.SEV ERE, null, ex); } } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jInternalFramePelanggan = 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 = 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();
116
new
new
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup(
=
new
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel14) .addGap(31, 31, 31)
117
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(cariPelangganTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(82, Short.MAX_VALUE)) ); jPanel6Layout.setVerticalGroup(
182,
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 actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });
118
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
javax.swing.GroupLayout jPanel7Layout javax.swing.GroupLayout(jPanel7); jPanel7.setLayout(jPanel7Layout); jPanel7Layout.setHorizontalGroup(
=
new
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 javax.swing.GroupLayout(jPanel8); jPanel8.setLayout(jPanel8Layout); jPanel8Layout.setHorizontalGroup(
119
=
new
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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); }
120
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}); jScrollPane4.setViewportView(BarangTable); jButton2.setText("Keluar"); jButton2.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel9Layout javax.swing.GroupLayout(jPanel9); jPanel9.setLayout(jPanel9Layout); jPanel9Layout.setHorizontalGroup(
void
=
new
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, org.netbeans.lib.awtextra.AbsoluteConstraints(110, 450));
121
30,
new 560,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorde r()); jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel3.setText("Kode Barang"); jPanel2.add(jLabel3, org.netbeans.lib.awtextra.AbsoluteConstraints(48, 1));
16,
new 73, -
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");
122
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jPanel2.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(454, 16, 88, 1)); jumlahBarangTF.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jumlahBarangTFActionPerformed(evt); } }); jPanel2.add(jumlahBarangTF, org.netbeans.lib.awtextra.AbsoluteConstraints(454, 25));
void
33,
new 88,
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, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 18)); jPanel2.add(noTF, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 25));
14,
new 30,
33,
new 30,
jLabel13.setText("Disc %"); jPanel2.add(jLabel13, new org.netbeans.lib.awtextra.AbsoluteConstraints(548, 16, 40, 1)); discTF.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { discTFActionPerformed(evt);
123
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} }); jPanel2.add(discTF, org.netbeans.lib.awtextra.AbsoluteConstraints(548, 25)); getContentPane().add(jPanel2, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70));
33,
190,
new 40, new 700,
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 penjualan"); jPanel1.add(jLabel2, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 51, 1)); getContentPane().add(jPanel1, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 80));
0,
data new -1, new 700,
jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorde r()); jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); penjualanDetailTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {
"Satuan", Harga"
}, new String [] { "No Faktur", "Kode Barang", "Nama Barang", "Harga Satuan", "Jumlah Barang", "Disc", "Total
} )); jScrollPane1.setViewportView(penjualanDetailTable); jPanel3.add(jScrollPane1, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 194));
124
13,
new 676,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
getContentPane().add(jPanel3, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 220));
260,
new 700,
jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorde r()); jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel17.setText("Total Harga"); jPanel4.add(jLabel17, org.netbeans.lib.awtextra.AbsoluteConstraints(510, 20));
10,
new -1,
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, org.netbeans.lib.awtextra.AbsoluteConstraints(510, 20));
40,
new -1,
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, org.netbeans.lib.awtextra.AbsoluteConstraints(510, 20)); simpanButton.setText("Simpan"); simpanButton.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { simpanButtonActionPerformed(evt);
125
70,
new -1,
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} }); 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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 140));
480,
new 700,
jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorde r()); jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel9.setText("Pelanggan"); jPanel5.add(jLabel9, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 1)); pelangganTF.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { pelangganTFActionPerformed(evt); } }); jPanel5.add(pelangganTF, org.netbeans.lib.awtextra.AbsoluteConstraints(72, 25)); jLabel10.setText("Alamat"); jPanel5.add(jLabel10, org.netbeans.lib.awtextra.AbsoluteConstraints(12, 1));
126
18,
new 60, -
void
13,
44,
new 191,
new 60, -
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
alamatTA.setColumns(20); alamatTA.setRows(5); jScrollPane2.setViewportView(alamatTA); jPanel5.add(jScrollPane2, org.netbeans.lib.awtextra.AbsoluteConstraints(72, 53));
44,
new 191,
jLabel11.setText("Tanggal"); jPanel5.add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 50, 50, 1)); tanggalDC.setDateFormatString("dd-MM-yyyy"); jPanel5.add(tanggalDC, org.netbeans.lib.awtextra.AbsoluteConstraints(390, 50, 25));
new 151,
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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 110));
80,
new 700,
pack(); }// 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);
127
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
List plg = (List) 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 brg = (List) 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 plg = (List) PelangganKontrol.KoneksiDataBase().cariPelanggan(cari); PelangganDetailTableModel model = new PelangganDetailTableModel(plg); pelangganTable.setModel(model); } catch (SQLException ex) {
128
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 jumlahHargaTFActionPerformed(java.awt.event.ActionEvent { 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);
129
void evt)
= = = =
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 = (List) 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());
130
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
alamatTA.setText(p.getNamaPelanggan() p.getAlamatPelanggan()); jInternalFramePelanggan.dispose(); kodeBarangTF.requestFocus(); } catch (SQLException ex) {
+
"\n"
+
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 jumlahHargaTFKeyPressed(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_F1) { DiskonTF.requestFocus(); } }
void
private void DiskonTFActionPerformed(java.awt.event.ActionEvent evt) { String totalharga = totalHargaTF.getText(); Double totharga = Double.parseDouble(totalharga);
131
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
String diskon = DiskonTF.getText(); Double dskon = Double.parseDouble(diskon); Double grndtotal = totharga - dskon; grandTotalTF.setText(String.valueOf(grndtotal)); simpanButton.setEnabled(true); simpanButton.requestFocus(); } private simpanButtonKeyPressed(java.awt.event.KeyEvent evt) { simpanButton.doClick(); }
void
private void simpanButtonActionPerformed(java.awt.event.ActionEvent evt) { String nofaktur = noFakturFK.getText(); Date tglfaktur = tanggalDC.getDate(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MMyyyy"); 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(); }
132
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
private kodeBarangTFKeyPressed(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_F1) { DiskonTF.requestFocus(); } }
void
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;
133
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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);
134
=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
List penjualan = (List) 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 import import import import import
Apriori.AprioriForm; Apriori.AprioriKodeForm; java.sql.SQLException; java.util.List; java.util.logging.Level; java.util.logging.Logger;
/** * * @author Doni */ public class DetailPenjualan extends javax.swing.JFrame { public DetailPenjualan() { initComponents(); try { List p = (List) 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();
135
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 70));
0,
new 700,
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 actionPerformed(java.awt.event.ActionEvent evt) {
136
void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButton1ActionPerformed(evt); } }); jButton2.setText("Keluar"); jButton2.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } });
void
jButton3.setText("Proses KodeBarang"); jButton3.addActionListener(new java.awt.event.ActionListener() { public actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(
void
=
new
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()
137
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
342,
.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, org.netbeans.lib.awtextra.AbsoluteConstraints(0, 410));
70,
new -1,
pack(); }// 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() {
138
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 import import import import import import
Koneksi.Koneksi; java.sql.Connection; java.sql.PreparedStatement; java.sql.ResultSet; java.sql.SQLException; java.util.ArrayList; 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;
139
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 {
140
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 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 = new ArrayList(); while (result.next()) {
141
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 getAllDetail() throws SQLException { PreparedStatement statement = null; ResultSet result = null; try { conn.setAutoCommit(false); statement = conn.prepareStatement(SQL_GETALLDETAIL); result = statement.executeQuery(); List penjualan = new ArrayList(); 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); }
142
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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; } } } }
143
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 ArrayList();
penjualan
=
new
public PenjualanTableModel(List 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";
144
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
case 1: return case 2: return case 3: return case 4: return case 5: return case 6: return default: return
"Kode Barang"; "Nama Barang"; "Harga Satuan"; "Jumlah"; "Diskon"; "Jumlah Harga"; "";
} } }
145