penerapan fuzzy database model tahani dalam … · penerapan fuzzy database model tahani dalam...
Post on 27-Apr-2019
252 Views
Preview:
TRANSCRIPT
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM
SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL
SEWA
(Studi Kasus : Penyewaan Mobil di
Daerah Istimewa Yogyakarta)
Skripsi
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun Oleh :
Alexander Vitto Ardiyanto
125314116
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i
THE APPLICATION OF FUZZY DATABASE MODEL
TAHANI
IN DECISION SUPPORT SYSTEMS
IN SELECTING CAR RENTALS
(A CASE STUDY ON CAR RENTAL SERVICES IN
YOGYAKARTA SPECIAL PROVINCE)
Thesis
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Komputer Degree
In Informatics Engineering
By :
Alexander Vitto Ardiyanto
125314116
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i
HALAMAN PERSETUJUAN
SKRIPSI
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN
PEMILIHAN MOBIL SEWA
(Studi Kasus : Penyewaan Mobil di
Daerah Istimewa Yogyakarta)
Disusun Oleh :
Alexander Vitto Ardiyanto
125314116
Telah disetujui oleh :
Pembimbing,
Eko Hari Parmadi, S.Si., M. Kom. Tanggal :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i
HALAMAN PENGESAHAN
SKRIPSI
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG
KEPUTUSAN PEMILIHAN MOBIL SEWA
(Studi Kasus : Penyewaan Mobil di
Daerah Istimewa Yogyakarta)
Dipersiapkan dan ditulis oleh :
Alexander Vitto Ardiyanto
125314116
Telah dipertahankan di depan Panitia Penguji
Pada tanggal 19 Agustus 2016
Dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua : P.H. Prima Rosa, S.Si, M.Sc. ..............................
Sekretaris : J.B. Budi Darmawan, S.T., M.Sc. ..............................
Anggota : Eko Hari Parmadi, S.Si., M. Kom. ..............................
Yogyakarta, .......................
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
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 kutipan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, ...................
Penulis
Alexander Vitto Ardiyanto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, Saya Mahasiswa Teknik Informatika Universitas Sanata Dharma :
Nama : Alexander Vitto Ardiyanto
NIM : 125314116
Demi pengembangan ilmu pengetahuan, Saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya
ilmiah Saya yang berjudul:
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN
PEMILIHAN MOBIL SEWA
(Studi Kasus : Penyewaan Mobil di
Daerah Istimewa Yogyakarta)
Beserta perangka yang diperlukan (bila ada). Dengan demikian Saya memberikan kepada Perpustakaan Universitas
Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan
data, mendistribusikannya secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan
akademis tanpa perlu meminta ijin dari Saya maupun memberikan royaliti kepada Saya selama tetap mencantumkan
nama Saya sebagai penulis.
Demikian pernyataan ini Saya buat dengan sebenarnya.
Dibuat di Yogyakarta,
Pada tanggal : ...................
Yang menyatakan,
Alexander Vitto Ardiyanto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN
Karya Skripsi ini Saya persembahkan kepada:
1. Tuhan Yesus Kristus, yang memberikan berkat dan mendampi dalam
menyelesaikan karya skripsi ini.
2. Keluargaku, antara lain Bapak, Mamah, Simbah, Kakak, dan Adikku
yang selalu memberikan dukungan doa maupun materi.
3. Calon pendamping hidupku dan keluarganya yang selalu mendoakan
dan memberikan semangat.
4. Para Dosen dan Teman-Teman Mahasiswa Teknik Informatika
Universitas Sanata Dharma yang sudah mendampingi dan memberikan
pertolongan selama Saya menjalankan studi.
5. Keluarga besar Universitas Sanata Dharma yang telah memberikan
segala pengalaman berharga dalam hidupkan untuk bekal masuk ke dunia
kerja.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
HALAMAN MOTTO
“Whatever will be, will be”
“Apa yang kamu tanam itu yang kamu tuai”
“Slow down and everything you are chasing
Will come around and catch you”
(John DePaola)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
ABSTRAK
Perkembangan teknologi dan ilmu pengetahuan saat ini sangat pesat. Hal
ini bisa dilihat dengan banyak terciptanya sebuah sistem yang membantu
mempercepat aktivitas manusia. Contohnya sistem pemesanan taksi, pemesanan
hotel, dan pemesanan hotel secara online. Dari beberapa contoh sistem yang
sudah dibuat muncul juga ide untuk membuat sistem penyewaan mobil secara
online. Tetapi sistem penyewaan mobil secara online yang sudah metode
penyimpanannya menggunakan basis data standart. Pada umumnya basis data
standart digunakan untuk menangani data yang bersifat tegas. Tetapi tidak semua
data itu tegas. Untuk menangani data yang bersifat tidak tegas atau samar, maka
digunakan aturan logika fuzzy yang diterapkan pada sebuah sistem basis data.
Salah satu metode tentang fuzzy database yang sudah ada adalah fuzzy database
model Tahani.
Penerapkan fuzzy database model Tahani dalam Sistem Pendukung
Keputusan Pemilihan Mobil Sewa menggunakan masukan berupa bahasa verbal
dan menghasilkan keluaran berupa rekomendasi mobil yang akan disewa. Jika
dibandingkan dengan penggunaan basis data standard hasilnya tidak terlalu
berbeda jauh. Tetapi penerapan fuzzy database ini memiliki kekurangan
dibandingkan basis data standart, yaitu waktu pencarian data sesuai kriteria yang
lebih lama dan kapasitas penyimpanan data lebih banyak.
Kata kunci : Penyewaan mobil, Basis data standart, Fuzzy Database model Tahani
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
Nowadays, science and technology develop very rapidly. This is proved
by many creations of a system that helps accelerate human activities, such as taxi
booking system, and hotel reservations online. There also emerges an idea to
create an online car rental system. However there is an obstacle concerning the
method which uses standard database. In general, a standard database is used to
handle firm data. Since not all data are firm, fuzzy logic rules are applied to a
database system. One method of fuzzy logic available to date is fuzzy database
model Tahani.
This thesis tries to apply fuzzy database model Tahani in Election
Decision Support System Car Rental using verbal language as input and
producing output in the form of recommended car being rented. When compared
with the use of standard databases, the results are not too much different. But the
application of fuzzy databases have disadvantages compared to standard
databases, namely the longer search time of data according to criteria, and the
more data storage capacity.
Keywords : car rental, database standards, fuzzy database model Tahani
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yang Maha Esa yang telah mengaruniakan
berkat dan rahmat-Nya sehingga penulis dapat menyelesaikan tugas akhir ini.
Dalam proses penulisan tugas akhir ini ada banyak pihak yang telah
memberikan bantuan dan perhatian dengan caranya masing-masing sehingga
tugas akhir ini dapat diselesaikan. Oleh karena itu penulis mengucapkan terima
kasih kepada :
1. Tuhan Yesus Kristus yang senantiasa memberikan berkat dan bimbingan
kepada saya.
2. Eko Hari Parmadi, S.Si., M. Kom. selaku dosen pembimbing tugas akhir
yang telah membimbing saya dalam penyusunan tugas akhir ini.
3. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. dan Bapak J.B. Budi
Darmawan, S.T., M.Sc. selaku panitia penguji yang telah memberikan
banyak kritik dan saran untuk tugas akhir ini.
4. Kedua orang tua tercinta Bapak Karyanto dan Ibu Mulat Listyarini,
kakakku Aluysia Vicka T.S. dan semua anggota keluarga saya yang selalu
mendoakan , mendukung, dan memotivasi penulis sehingga penulis dapat
menyelesaikan tugas akhir ini.
5. Lukas, Bagus, Andreas, Tegar, Novian, Candra, Eric, Agustin, Ni Putu,
Monic, Riya yang telah memberikan bantuan, semangat, dan doa dalam
penyusunan tugas akhir ini.
6. Lidwina Septyana Anggraeni yang telah memberikan motivasi, doa, dan
perhatian sehingga tugas akhir ini selesai tepat pada waktunya.
7. Semua teman-teman di program studi Teknik Informatika angkatan 2012.
8. Keluarga besar Universitas Sanata Dharma yang telah menjadi
pendamping dalam pembentukan karakter dan telah memberikan banyak
pengalaman dalam berbagai bidang.
9. Semua pihak yang telah membantu penulis dalam penyusunan tugas akhir
ini yang tidak dapat disebutkan satu persatu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
Penulis menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh
karena itu, penulis sangat mengharapkan kritik dan saran untuk memperbaiki
tugas akhir ini. Akhir kata, penulis berharap tulisan ini berguna bagi
perkembangan ilmu pengetahuan dan pengguna.
Penulis,
Alexander Vitto Ardiyanto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN JUDUL
HALAMAN JUDUL (BAHASA INGGRIS) .......................................................... i
HALAMAN PERSETUJUAN ................................................................................. i
HALAMAN PENGESAHAN ................................................................................. i
PERNYATAAN KEASLIAN KARYA ................................................................ iv
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS ................................................................ v
HALAMAN PERSEMBAHAN ............................................................................ vi
HALAMAN MOTTO ........................................................................................... vii
ABSTRAK ........................................................................................................... viii
ABSTRACT ........................................................................................................... ix
KATA PENGANTAR ............................................................................................. x
DAFTAR ISI ......................................................................................................... xii
DAFTAR GAMBAR ............................................................................................. xv
DAFTAR TABEL ............................................................................................... xvii
BAB I PENDAHULUAN ..................................................................................... 1
1.1. Latar Belakang Masalah ............................................................................ 1
1.2. Rumusan Masalah ..................................................................................... 2
1.3. Tujuan ........................................................................................................ 2
1.4. Batasan Masalah ........................................................................................ 3
1.5. Metode Penelitian ...................................................................................... 3
1.5.1. Survey awal ........................................................................................ 3
1.5.2. Studi Pustaka ...................................................................................... 3
1.5.3. Perancangan Database ....................................................................... 4
1.5.4. Tahap Perancangan Sistem ................................................................ 4
1.5.5. Pengujian Sistem ................................................................................ 4
1.5.6. Tahap Analisis Hasil Pengujian ......................................................... 4
1.6. Sistematika Pembahasan ........................................................................... 4
BAB II LANDASAN TEORI............................................................................. 6
2.1. Sistem Pendukung Keputusan ................................................................... 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2.1.1. Definisi Sistem Pendukung Keputusan .............................................. 6
2.1.2. Komponen-komponen Sistem Pendukung Keputusan ....................... 6
2.1.3. Manfaat Sistem Pendukung Keputusan ............................................. 8
2.1.4. Keterbatasan Sistem Pendukung Keputusan ...................................... 8
2.2. Logika Fuzzy (Logika Kabur) ................................................................... 9
2.2.1. Pengertian Logika Fuzzy .................................................................... 9
2.2.2. Alasan Digunakannya Logika Fuzzy ............................................... 10
2.2.3. Himpunan Fuzzy .............................................................................. 10
2.2.4. Fungsi Keanggotaan ......................................................................... 15
2.2.5. Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy ................. 19
2.3. Fuzzy Database ....................................................................................... 20
2.3.1. Basisdata Fuzzy Model Tahani ........................................................ 20
2.4. Query ....................................................................................................... 24
BAB III METODOLOGI PENELITIAN .......................................................... 25
3.1. Gambaran Umum .................................................................................... 25
3.2. Desain Penelitian ..................................................................................... 25
3.2.1. Studi Literatur .................................................................................. 25
3.2.2. Data .................................................................................................. 25
3.2.3. Perancangan Alat Uji ....................................................................... 26
3.3. Spesifikasi Software dan Hardware ........................................................ 27
3.4. Pengujian dan Evaluasi Sistem ............................................................... 27
BAB IV ANALISIS DAN PERANCANGAN SISTEM ................................... 28
4.1. Analisa Kebutuhan .................................................................................. 28
4.1.1. Analisa Sistem ................................................................................. 28
4.1.2. Analisa Kebutuhan Pengguna .......................................................... 29
4.1.3. Diagram Arus Data .......................................................................... 32
4.1.4. Perancangan Basis data .................................................................... 37
4.1.5. Penerapan Contoh Perhitungan ........................................................ 41
4.2. Perancangan Antar Muka ........................................................................ 51
4.2.1. Perancangan Halaman Awal ............................................................ 51
4.2.2. Perancangan Halaman Pencarian ..................................................... 52
4.2.3. Perancangan Halaman Data Mobil .................................................. 54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
4.2.4. Perancangan Halaman Batas Himpunan .......................................... 55
BAB V IMPEMENTASI DAN ANALISA HASIL ......................................... 56
5.1. Implementasi ........................................................................................... 56
5.1.1. Implementasi Fungsi Keanggotaan Harga Murah ........................... 56
5.1.2. Implementasi Fungsi Keanggotaan Harga Sedang .......................... 60
5.1.3. Implementasi Fungsi Keanggotaan Harga Mahal ............................ 64
5.1.4. Implementasi Fungsi Keanggotaan Ukuran Kecil ........................... 69
5.1.5. Implementasi Fungsi Keanggotaan Ukuran Normal ........................ 74
5.1.6. Implementasi Fungsi Keanggotaan Ukuran Besar ........................... 79
5.1.7. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedikit . 83
5.1.8. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedang . 87
5.1.9. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Banyak 92
5.1.10. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedikit ....... 96
5.1.11. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedang ..... 101
5.1.12. Implementasi Fungsi Keanggotaan Kapasitas BBM Banyak..... 105
5.1.13. Implementasi Fungsi Keanggotaan Tahun Lama ....................... 109
5.1.14. Implementasi Fungsi Keanggotaan Tahun Baru ........................ 113
5.1.15. Implementasi Perhitungan Hasil Query Satu Kriteria ................ 118
5.1.16. Implementasi Perhitungan Hasil Query Dua Kriteria ................ 121
5.1.17. Implementasi Perhitungan Hasil Query Tiga Kriteria ................ 124
5.1.18. Implementasi Perhitungan Hasil Query Empat Kriteria ............ 129
5.1.19. Implementasi Perhitungan Hasil Query Lima Kriteria .............. 138
5.2. Hasil Implementasi ................................................................................ 156
5.2.1. Form Utama ................................................................................... 156
5.2.2. Form Data Mobil ........................................................................... 157
5.2.3. Form Pencarian .............................................................................. 159
5.2.4. Form Batas Himpunan ................................................................... 162
5.3. Pengujian ............................................................................................... 162
BAB VI PENUTUP ......................................................................................... 166
6.1. Kesimpulan ............................................................................................ 166
6.2. Saran ...................................................................................................... 166
DAFTAR PUSTAKA .......................................................................................... 167
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR GAMBAR
Gambar 2. 1. Himpunan fuzzy pada variabel Umur .............................................. 12
Gambar 2. 2. Himpunan fuzzy pada variable mahasiswa ...................................... 14
Gambar 2. 3. Representasi linear naik ................................................................... 16
Gambar 2. 4. Representasi linear turun .................................................................. 17
Gambar 2. 5. Representasi kurva trapezium .......................................................... 17
Gambar 2. 6. Representasi kurva trapezium .......................................................... 18
Gambar 2. 7. Daerah ‘bahu’ pada variabel TEMPERATUR ................................. 19
Gambar 2. 8. Fungsi keanggotaan pada Variabel Harga........................................ 23
Gambar 4. 1. Flowchart sistem .............................................................................. 29
Gambar 4. 2. Use Case System .............................................................................. 29
Gambar 4. 3. Package Kelola Data Mobil ............................................................. 30
Gambar 4. 4. Package Kelola Data Batas Himpunan ............................................ 30
Gambar 4. 5. Package Rekomendasi Mobil .......................................................... 31
Gambar 4. 6. Diagram Konteks Sistem.................................................................. 32
Gambar 4. 7. Diagram Arus Data Level 1 ............................................................. 33
Gambar 4. 8. Diagram Arus Data Proses Rekomendasi Mobil ............................. 34
Gambar 4. 9. Arus Data Proses Kelola Data Mobil ............................................... 35
Gambar 4. 10. Diagram Arus Data Proses Kelola Data Batas Himp. Fuzzy ......... 36
Gambar 4. 11. Perancangan konseptual ................................................................. 37
Gambar 4. 12. Perancangan Logikal ...................................................................... 37
Gambar 4. 13. Fungsi keanggotaan pada Variabel Harga...................................... 42
Gambar 4. 14. Fungsi Keanggotaan pada Variabel Panjang.................................. 43
Gambar 4. 15. Fungsi keanggotaan pada Variabel Lebar ...................................... 44
Gambar 4. 16. Fungsi keanggotaan pada Varabel Tinggi ...................................... 45
Gambar 4. 17. Fungsi keanggotaan pada Variabel Ukuran ................................... 46
Gambar 4. 18. Fungsi keanggotaan pada Variabel Kapasitas BBM ...................... 47
Gambar 4. 19. Fungsi keanggotaan pada Variabel Kapasitas penumpang ............ 48
Gambar 4. 20. Fungsi keanggotaan pada Variabel Tahun ..................................... 49
Gambar 4. 21. Desaign Halaman Home Admin .................................................... 51
Gambar 4. 22. Desaign Halaman Pencarian Tab Fuzzy Admin ............................ 52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
Gambar 4. 23. Desaign Halaman Pencarian Tab Fuzzy Pengguna ........................ 52
Gambar 4. 24. Desaign Halaman Pencarian Tab Tegas Admin............................. 53
Gambar 4. 25. Desaign Halaman Pencarian Tab Tegas Pengguna ........................ 53
Gambar 4. 26. Desaign Halamn Data Mobil Admin.............................................. 54
Gambar 4. 27. Desaign Halaman Data Mobil Pengguna ....................................... 54
Gambar 4. 28. Desaign Halaman Batas Himpunan Admin ................................... 55
Gambar 5. 1. Form Utama Untuk Admin ............................................................ 156
Gambar 5. 2. Form Utama Untuk Pengguna ........................................................ 157
Gambar 5. 3. Form Data Mobil Admin ................................................................ 158
Gambar 5. 4. Form Data Mobil Pengguna ........................................................... 159
Gambar 5. 5. Form Pencarian Tab Fuzzy ............................................................ 160
Gambar 5. 6. Form Pencarian Tab Tegas............................................................. 161
Gambar 5. 7. Form Batas Himpunan ................................................................... 162
Gambar 5. 8. Ukuran Setiap Tabel Penyimpanan ................................................ 164
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
DAFTAR TABEL
Tabel 2. 1. Contoh Tabel DT_HP pada Outlet Penjualan HP ................................ 21
Tabel 2. 2. Fire Strength untuk query Harga Sedang, Berat RINGAN, Ada WAP
................................................................................................................................ 24
Tabel 4. 1. Tabel Data Mobil ................................................................................. 38
Tabel 4. 2. Tabel Batas Himpunan ......................................................................... 38
Tabel 4. 3. Tabel Mu .............................................................................................. 39
Tabel 4. 4. Data Mobil ........................................................................................... 41
Tabel 4. 5. Nilai Derajat Keanggotaan pada setiap Himpunan .............................. 50
Tabel 4. 6. Fire strength ......................................................................................... 51
Tabel 5. 1. Tabel Hasil Fuzzy Database............................................................... 162
Tabel 5. 2. Tabel Hasil Basis Data Standard........................................................ 163
Tabel 5. 3. Tabel Hasil Fuzzy Database dengan Dua Kriteria ............................. 164
Tabel 5. 4. Tabel Hasil Basis Data Standard dengan Dua Kriteria ...................... 164
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Pada era globalisasi ini kebutuhan teknologi sangat dibutuhkan
manusia untuk melakukan aktivitas sehari-hari. Karena teknologi dapat
membuat pekerjaan sehari-hari menjadi mudah dan cepat dilakukan. Salah
satu teknologi yang dibutuhkan pada saat ini adalah teknologi dibidang
transportasi yaitu mobil. Mobil sudah menjadi primadona dikalangan
masyarakat pada saat ini. Karena mobil adalah alat transportasi yang
praktis, cepat, dan dapat menampung banyak penumpang atau muatan. Hal
ini tentu sangat bermanfaat bagi orang yang sering beraktivitas diluar
ruangan seperti mengantar barang atau pergi dengan keluarga. Tetapi,
harga mobil yang cukup mahal menjadi keterbatasan bagi orang untuk
memilikinya.
Melihat permasalahan itu banyak orang atau pengusaha yang membuka
jasa penyewaan mobil, memang usaha ini sangat menjanjikan. Karena
memberikan kemudahan bagi orang yang tidak memiliki mobil untuk
menggunakannya. Selain itu mereka juga bisa memilih mobil jenis apa
yang akan disewa sesuai dengan keinginannya, karena pada tempat
penyewaan mobil biasanya terdapat berbagai macam jenis mobil. Seiring
perkembangannya, bisnis sewa mobil ini juga bisa melayani penyewaan
melalui media sosial maupun melalui aplikasi khusus yang dimiliki oleh
penawar jasa sewa mobil.
Pada era teknologi ini sudah banyak sistem informasi untuk penyewaan
atau pemesanan mobil pada perusahaan sewa mobil (rental). Beberapa
sistem informasi yang sudah pernah dibuat diantaranya Sistem Informasi
Pemesanan dan Penyewaan Mobil Berbasis Web Pada CV. Louhan
Mobilindo dan Perancangan Aplikasi Rental Mobil Pada CV Karya
Bersama Palembang. Pada kedua sistem tersebut penyimpanan data
menggunakan sistem basis data, tetapi di kedua sistem tersebut hanya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
menggunakan sistem basis data standard saja. Tetapi, penggunaan sistem
basis data standard biasanya untuk menangani data-data yang bersifat
pasti. Namun pada kenyataannya tidak semua data bersifat tegas.
Seiring berkembangnya teknologi terdapat sebuah ide yang
mendefinisikan konsep relasi fuzzy dalam sebuah Database Management
System (DBMS) dengan derajat keanggotaan. Ide tersebut dikemukakan
oleh Tahani (1997). Fuzzy database Model Tahani menggunakan teori
himpunan fuzzy untuk mendapatkan informasi pada querynya.
Berkaitan dengan hal tersebuat maka peneliti tertarik untuk menyusun
sebuah tugas akhir yang berjudul “Penerapan Fuzzy Database Model
Tahani dalam Sistem Pendukung Keputusan Pemilihan Mobil Sewa”.
Dengan menggunakan logika Fuzzy pada Database ini diharapkan dapat
menangani data yang bersifat tidak tegas atau samar yang terkandung
dalam kriteria-kriteria yang disediakan. Selain itu, penelitian ini
diharapkan dapat membantu calon penyewa mobil dalam menentukan
mobil yang akan disewa.
1.2. Rumusan Masalah
Berdasarkan latar belakang di atas, maka rumusan masalah yang akan
diselesaikan, yaitu:
a. Bagaimana mengimplementasikan fuzzy database model Tahani
dalam SPK pemilihan mobil sewa ?
b. Apakah pengimplementasian fuzzy database model Tahani lebih
efisien dari pada database standard dengan indikator waktu proses
eksekusi query dan table space yang digunakan untuk menyimpan
data?
1.3. Tujuan
Tujuan dari penelitian tugas akhir ini adalah:
a. Membangun SPK pemilihan mobil sewa dengan menggunakan metode
fuzzy database model Tahani.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
b. Mengetahui seberapa efisien penerapan fuzzy database model Tahani
dan database klasik.
1.4. Batasan Masalah
Dalam membangun sistem informasi ini terdapat beberapa batasan
masalah, antara lain:
a. Kriteria-kriteria yang digunakan dalam pengambilan keputusan
adalah harga, tahun perakitan kendaraan, kapasitas kendaraan,
kapasitas bahan bakar, dan ukuran.
b. Data mobil yang digunakan adalah data mobil yang disewakan dari
beberapa usaha penyewaan mobil di Yogyakarta.
c. Sistem yang dibuat tidak mendukung untuk rekomendasi
penyewaan kendaraan selain mobil.
d. Sistem ini dibangun berbasis desktop dengan menggunakan bahasa
pemrograman java dan database oracle.
1.5. Metode Penelitian
Langkah-langkah metode penelitian yang dilakukan dalam penelitian ini
sebagai berikut:
1.5.1. Survey awal
Dilakukan wawancara kepada pihak terkait (penyewa dan pemilik
penyewaan mobil) serta melakukan pengumpulan data yang telah
tersedia sebelumnya di tempat penyewaan mobil.
1.5.2. Studi Pustaka
Dilakukan studi pustaka untuk mengumpulkan teori-teori yang
digunakan dalam penelitian ini, meliputi teori mengenai
pengemplementasian fuzzy database model Tahani, penerapan
fuzzy database model Tahani dalam sebuah sistem informasi, serta
mencari informasi-informasi lain yang mendukung pembangunan
sistem informasi ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.5.3. Perancangan Database
Pada tahap ini dilakukan perancangan database sesuai dengan data
yang diperoleh.
1.5.4. Tahap Perancangan Sistem
Pada tahap ini dilakukan perancangan sistem yang akan dibangun,
meliputi disain user interface, fitur-fitur disediakan aplikasi, dan
penanganan koneksi dengan system database.
1.5.5. Pengujian Sistem
Dilakukan percobaan terhadap sistem yang telah dibangun.
Percobaan dilakukan dengan menggunakan operator AND, OR,
dan NOT.
1.5.6. Tahap Analisis Hasil Pengujian
Pada tahap ini dilakukan analisis keluaran yang dihasilkan oleh
sistem.
1.6. Sistematika Pembahasan
Sistematika penulisan dibagi menjadi beberapa bab, sebagai berikut :
a. Bab I : Pendahuluan
Bab ini berisi latar belakang, rumusan dan batasan masalah, tujua
penelitian, manfaat penelitian, metodologi penelitian, dan sistematika
penulisan.
b. Bab II : Landasan Teori
Bab ini berisi teori-teori yang dapat menunjang penelitian, yaitu
berupa pengertian sistem pendukung keputusan, logika fuzzy, dan fuzzy
database model Tahani.
c. Bab III : Metodologi Penelitian
Bab ini berisi tentang gambaran umum sistem yang akan dibangun,
data yang digunakan, desain pennelitian, spesifikasi software dan
hardware yang digunakan.
d. Bab IV : Analisis dan Perancangan Sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Bab ini berisi tentang cara penerapan konsep dasar yang telah
diuraikan pada Bab II untuk menganalisis dan merancang tentang
sistem sesuai tahap-tahap penyelesaian masalah tersebut dengan
menggunakan Fuzzy Database model Tahani.
e. Bab V : Implementasi dan Analisis Sistem
Bab ini berisi tentang implementasi ke program komputer berdasarkan
hasil perancangan yang dibuat, analisis perangkat lunak yang telah
dibuat, serta kelebihan dan kekurangan pada sistem.
f. Bab VI : Penutup
Dalam bab ini berisi tentang kesimpulan dan saran dari keseluruhan
penulisan tugas akhir.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
BAB II
LANDASAN TEORI
2.1. Sistem Pendukung Keputusan
2.1.1. Definisi Sistem Pendukung Keputusan
Menurut (Suryadi, 1989) Sistem Pendukung Keputusan
(SPK) atau Decision Support System (DSS) adalah suatu sistem
berbasis komputer untuk membantu pengambilan keputusan dalam
memanfaatkan data dengan menggunakan model tertentu untuk
memecahkan berbagai persoalan yang semi terstruktur atau tidak
terstruktur. Persoalan pengambilan keputusan pada dasarnya adalah
bentuk pemilihan dari berbagai alternatif tindakan yang mungkin
dipilih melalui mekanisme tertentu, dengan harapan akan
menghasilkan sebuah keputusan yang terbaik.
2.1.2. Komponen-komponen Sistem Pendukung Keputusan
Suatu SPK memiliki tiga subsistem utama yang menentukan
kapabilitas teknik SPK tersebut, yaitu sebagai berikut:
1. Subsistem Manajemen Basis Data (Data Base Management
Subsystem)
Ada beberapa perbedaan antara database untuk SPK dan non-
SPK. Pertama, sumber data untuk SPK lebih “kaya” daripada
non-SPK dimana data harus berasal dari luar dan dari dalam
karena proses pengambilan keputusan, terutama dalam level
managemen puncak, sangat bergantung pada sumber data luar,
seperti data ekonomi. Kedua, proses pengambilan dan ekstraksi
data dari sumber data yang sangat besar. SPK membutuhkan
proses ekstraksi dan DBMS yang dalam pengelolaannya harus
cukup fleksibel untuk memungkinkan penambahan dan
pengurangannya secara cepat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2. Subsistem Managemen Model (Model Management
Subsystem)
Salah satu keunggulan SPK adalah kemampuan untuk
mengintegrasikan akses data dan model-model keputusan. Hal
ini dapat dilakukan dengan menambahkan model-model
keputusan ke dalam sistem informasi yang menggunakan
database sebagai mekanisme integrasi dan komunikasi di antara
model-model. Komunikasi antara berbagai model yang saling
berhubungan diserahkan kepada pengambil keputusan sebagai
proses intelektual dan manual.
3. Subsistem Perangkat Lunak Penyelenggara Dialog (Dialog
Generation and Management Subsystem)
Komponin dari sistem dialog adalah pemakai, terminal, dan
sistem perangkat lunak. Subsistem dialog dibagi menjadi tiga
bagian yaitu:
a. Bahasa aksi, meliputi apa yang dapat digunakan oleh
pemakai dalam berkomunikasi dengan sistem. Hal ini
meliputi pemilihan-pemilihan seperti papan ketik
(keyboard), panel-panel sentuh, joystick, perintah suara dan
sebagainya.
b. Bahasa tampilan atau presentasi, meliputi apa yang harus
diketahui oleh pemakai. Bahasa tampilan meliputi pilihan-
pilihan seperti printer, layar tampilan, grafik, warna, plotter,
keluaran suara, dan sebagainya.
c. Basis pengetahuan, meliputi apa yang harus diketahui oleh
pemakai agar pemakaian sistem bisa efektif. Basis
pengetahuan bisa berada dalam pikiran pemakai, pada kartu
referensi atau petunjuk, dalam buku manual, dan
sebagainya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2.1.3. Manfaat Sistem Pendukung Keputusan
SPK memberikan keuntungan atau menfaat bagi para pemakainya.
Keuntungan yang dimaksud antara lain:
1. SPK memperluas kemampuan pengambilan keputusan dalam
memproses data atau informasi bagi pemakainya.
2. SPK membantu pengambilan keputusan dalam hal
penghematan waktu yang dibutuhkan untuk memecahkan
masalah terutama berbagai masalah yang sangat kompleks dan
tidak terstruktur.
3. SPK dapat menghasilkan solusi dengan lebih cepat serta
hasilnya dapat diandalkan.
4. Walaupun suatu SPK, mungkin saja tidak mampu memecahkan
masalah yang dihadapi oleh pengambil keputusan, namun ia
dapat menjadi stimulan bagi pegambil keputusan dalam
memahami persoalannya. Karena SPK mampu menyajikan
berbagai alternatif.
SPK dapat menyediakan bukti tambahan untuk memberikan
pembenaran sehingga dapat memperkuat posisi pengambilan
keputusan.
2.1.4. Keterbatasan Sistem Pendukung Keputusan
Disamping memiliki keuntungan dan manfaat, SPK juga memiliki
keterbatasan diantaranya adalah sebagai berikut:
1. Ada beberapa kemampuan manajemen dan bakat manusia yang
tidak dapat dimodelkan, sehingga model yang ada dalam sistem
tidak semuanya mencerminkan persoalan sebenarnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2. Kemampuan suatu SPK terbatas pada pembendaharaan
pengetahuan yang dimilikinya (pengetahuan dasar serta model
dasar).
3. Proses-proses yang dapat dilakukan SPK biasanya tergantung
juga pada kemampuan perangkat lunak yang digunakannya.
SPK tidak memiliki kemampuan intuisi seperti yang dimiliki
manusi. Karena walaupun bagaimanapun canggihnya suatu SPK,
dia hanyalah suatu kumpulan perangkat keras, perangkat lunak, dan
sistem operasi yang tidak dilengkapi dengan kemampuan berpikir.
2.2. Logika Fuzzy (Logika Kabur)
2.2.1. Pengertian Logika Fuzzy
Logika fuzzy adalah suatu cara yang tepat untuk memetakan
suatu ruang input kedalam suatu ruang output. Titik awal dari
konsep modern mengenai ketidakpastian adalah paper yang dibuat
oleh Lotfi A Zadeh (1965), dimana Zadeh memperkenalkan teori
yang memiliki obyek-obyek dari himpunan fuzzy yang memiliki
batasan yang tidak presisi dan keanggotaan dalam himpunan fuzzy,
dan bukan dalam bentuk logika benar (true) atau salah (false), tapi
dinyatakan dalam derajat (degree). Konsep seperti ini disebut
dengan Fuzziness dan teorinya dinamakan Fuzzy Set Theory.
Fuzziness dapaet didefinisikan sebagai logika kabur berkenaan
dengan semantik dari suatu kejadian, fenomena atau pernyataan itu
sendiri. Serigkali ditemui dalam pernyataan yang dibuat oleh
seseorang, evaluasi dan suatu pengambilan keputusan. Sebagai
contoh:
1. Manajer pergudangan mengatakan pada manajer produksi
seberapa banyak persediaan barang pada akhir minggu ini,
kemudian manajer produksi akan menetapkan jumlah barang
yang harus diproduksi esok hari.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
2. Pelayan restoran memberikan pelayanan terhadap tamu,
kemudian tamu akan memberikan tip yang sesuai atas baik
tidaknya pelayanan yang diberikan.
3. Anda mengatakan pada saya seberapa sejuk ruangan yang anda
inginkan, saya akan mengatur putaran kipas yang ada pada
ruangan ini.
2.2.2. Alasan Digunakannya Logika Fuzzy
Ada beberapa alasan mengapa orang menggunakan logika fuzzy
(Kusumadewi S, Purnomo H, 2010) antara lain:
1. Konsep logika fuzzy mudah dimengerti. Konsep matematis
yang mendasari penalaran fuzzy sangat sederhana dan mudah
dimengerti.
2. Logika fuzzy sangat fleksibel.
3. Logika fuzzy memiliki toleransi terhadap data-data yang tidak
tepat.
4. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear
yang sangat kompleks.
5. Logika fuzzy dapat membangun dan mengaplikasikan
pengalaman-pengalaman para pakar secara langsung tanpa
harus melalui proses pelatihan.
6. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali
secara konvensional.
7. Logika fuzzy didasarkan pada bahasa alami.
2.2.3. Himpunan Fuzzy
Pada himpunan tegas (crisp), nilai keanggotaan suatu item x dalam
suatu himpunan A, yang sering ditulis denganµA[x], memiliki 2
kemungkinan (Kusumadewi S, Purnomo H, 2010) yaitu:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
1. Satu (1), yang berarti bahwa suatu item menjadi anggota dalam
suatu himpunan, atau
2. Nol (0), yang berarti bahwa suatu item tidak menjadi anggota
dalam suatu himpunan.
Contoh:
Misalkan variabel umur dibagi menjadi 3 kategori, yaitu:
MUDA umur < 35 tahun
PAROBAYA 35 ≤ umur ≤ 55 tahun
TUA umur ≥ 55 tahun
Bisa dikatakan bahwa:
Apabila seseorang berusia 34 tahun, maka ia dikatakan MUDA
(µMUDA[34] = 1);
Apabila seseorang berusia 35 tahun, maka ia dikatakan TIDAK
MUDA (µMUDA[35] = 0);
Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia
dikatakan TIDAK MUDA (µMUDA[35 th- 1hr] = 0);
Apabila seseorang berusia 35 tahun, maka ia dikatakan
PAROBAYA (µPAROBAYA[35] = 1);
Apabila seseorang berusia 34 tahun, maka ia dikatakan TIDAK
PAROBAYA (µPAROBAYA[34] = 0);
Apabila seseorang berusia 55 tahun, maka ia dikatakan
PAROBAYA (µPAROBAYA[55] = 1);
Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia
dikatakan TIDAK PAROBAYA (µPAROBAYA[35 th – 1 hr]
= 0);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Dari sini bisa dikatakan bahwa pemakaian himpunan crisp untuk
menyatakan umur sangat tidak adil, adanya perubahan kecil saja
pada suatu nilai mengakibatkan perbedaan kategori yang cukup
signifikan.
Himpunan fuzzy digunakan untuk mengantisipasi hal tersebut.
Seseorang dapat masuk dalam 2 himpunan yang berbeda, MUDA
dan PAROBAYA, PAROBAYA dan TUA, dsb. Seberapa besar
eksistensinya dalam himpunan tersebut dapat dilihat pada nilai
keanggotaannya. Seperti terlihat pada gambar 2.1.
Gambar 2. 1. Himpunan fuzzy pada variabel Umur
Pada Gambar 2.1, dapat dilihat bahwa:
Seseorang yang berumur 40 tahun, termasuk dalam himpunan
MUDA dengan µMUDA[40] = 0,25; maupun dia juga
termasuk dalam himpunan PAROBAYA dengan
µPAROBAYA[40] = 0,5.
Seseorang yang berumur 50 tahun, termasuk dalam himpunan
TUA dengan µTUA[50] = 0,25; namun dia juga termasuk
dalam himpunan PAROBAYA dengan µPAROBAYA[50] =
0,5.
Kalau pada himpunan crisp, nilai keanggotaan hanya ada 2
kemungkinan, yaitu 0 atau 1, pada himpunan fuzzy nilai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
keanggotaan terletak pada rentang 0 sampai 1. Apabila x memiliki
nilai keanggotaan fuzzy µA[x] = 0 berarti x tidak menjadi anggota
himpunan A, demikian pula apabila x memiliki nilai keanggotaan
fuzzy µA[x] = 1 berarti x menjadi anggota penuh pada himpunan
A.
Terkadang kemiripan antara keanggotaan fuzzy dengan probabilitas
menimmbulkan kerancuan. Keduanya memiliki nilai pada interval
[0,1], namun interprestasi nilainya sangat berbeda antara kedua
kasus tersebut. Keanggotaan fuzzy memberikan suatu ukuran
terhadap pendapatan atau keputusan, sedangkan probabilitas
mengindikasikan proporsi terhadap keseringan suatu hasil bernilai
benar dalam jangka panjang. Misalnya, jika nilai keanggotaan
suatu himpunan fuzzy MUDA adalah 0,9; maka tidak perlu
dipermasalahkan berapa seringnya nilai itu diulang secara
individual untuk mengharapkan suatu hasil yang hampir pasti
muda. Di lain pihak, nilai probabilitas 0,9 muda berarti 10% dari
himpunan tersebut diharapkan tidak muda.
Himpunan fuzzy memiliki 2 atribut, yaitu:
1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu
keadaan atau kondisi tertentu dengan menggunakan bahasa
alami, seperti: MUDA, PAROBAYA, TUA.
2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran
dari suatu variable seperti: 40, 25, 50, dsb.
Ada beberapa hal yang perlu diketahui dalam memahami sistem
fuzzy (Kusumadewi S, Purnomo H, 2010) yaitu:
a. Variable fuzzy
Variable fuzzy merupakan variable yang hendak dibahas
dalam suatu sistem fuzzy. Contoh: umur, temperature,
permintaan, dsb.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
b. Himpunan fuzzy
Himpunan fuzzy merupakan suatu grup yang mewakili suatu
kondisi atau keadaan tertentu dalam suatu variable fuzzy.
Contoh:
Variable mahasiswa, terbagi menjadi 5 himpunan fuzzy, yaitu:
kurang sekali, kurang, cukup, baik dan baik sekali. Seperti
terlihat pada gambar 2.2.
Gambar 2. 2. Himpunan fuzzy pada variable mahasiswa
c. Semesta Pembicaraan
Semesta pembicaraan adalah keseluruhan nilai yang
diperolehkan untuk dioperasikan dalam suatu variable fuzzy.
Semesta pembicaraan merupakan himpunan bilangan real yang
senantiasa naik (bertambah) secara monoton dari kiri ke kanan.
Nilai semesta pembicaraan dapat berupa bilangan positif
maupun negatif. Ada kalanya nilai semesta pembicaraan ini
tidak dibatasi batas atasnya.
Contoh:
Semesta pembicaraan untuk variable mahasiswa: [0 50].
d. Domain
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Domain himpunan fuzzy adalah keseluruhan nilai yang
diijinkan dalam semesta pembicaraan dan boleh dioperasikan
dalam suatu himpunan fuzzy. Seperti halnya semesta
pembicaraan, domain merupakan himpunan bilangan real yang
senantiasa naik (bertambah) secara monoton dari kiri ke kanan.
Nilai domain dapat berupa bilangan positif dan bilangan
negatif.
Contoh domain himpunan fuzzy:
1. Kurang sekali =[0 15]
2. Kurang =[5 25]
3. Cukup =[15 35]
4. Baik =[25 45]
5. Baik sekali =[35 50]
2.2.4. Fungsi Keanggotaan
Fungsi keanggotaan (membership function) adalah suatu kurva
yang menunjukkan pemetaan titik-titik input data kedalam nilai
keanggotaannya (sering juga disebut dengan derajat keanggotaan)
yang memiliki interval antara 0 sampai 1. Salah satu cara yang
dapat digunakan untuk mendapatkan nilai keanggotaan adalah
dengan melalui pendekatan fungsi (Kusumadewi S, Purnomo H,
2010). Ada beberapa fungsi yang bisa digunakan.
a. Representasi Linear
Pada representasi linear, pemetaan input ke derajat
keanggotaannya digambarkan sebagai suatu garis lurus.
Bentuk ini paling sederhana dan menjadi pilihan yang baik
untuk mendekati suatu konsep yang kurang jelas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Ada dua keadaan himpunan fuzzy yang linear. Pertama,
kenaikan himpunan dimulai pada nilai domain yang memiliki
derajat keanggotaan nol(0) bergerak ke kanan menuju ke nilai
domain yang memiliki derajat keanggotaan lebih tinggi Seperti
terlihat pada gambar 2.3.
Gambar 2. 3. Representasi linear naik
Fungsi keanggotaan:
Kedua, merupakan kebalikan dari yang pertama. Garis lurus
dimulai dari nilai domai dengan derajat keanggotaan tertinggi
pada sisi kiri, kemudian bergerak menurun ke nilai domain
yang memiliki derajat keanggotaan lebih rendah. Seperti
terlihat pada gambar 2.4.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Gambar 2. 4. Representasi linear turun
Fungsi keanggotaan:
b. Representasi kurva segitiga
Kurva segitiga pada dasarnya merupakan gabungan antara 2
garis (linear). Seperti pada gambar 2.5.
Gambar 2. 5. Representasi kurva trapezium
Fungsi keanggotaan:
c. Representasi kurva trapezium
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Kurva Segitiga pada dasarnya seperti bentuk segitiga, hanya
saja ada beberapa titik yang memiliki nilai keanggotaan 1.
Seperti pada gambar 2.6.
Gambar 2. 6. Representasi kurva trapezium
Fungsi keanggotaan:
d. Representasi kurva bahu
Daerah yang terletak di tengah-tengah suatu variabel yang
direpresentasikan dalam bentuk segitiga, pada sisi kanan dan
kirinya akan naik dan turun (misalkan: DINGIN bergerak ke
SEJUK bergerak ke HANGAT dan bergerak ke PANAS).
Tetapi terkadang salah satu sisi dari variabel tersebut tidak
mengalami perubahan. Sebagai contoh, apabila telah mencapai
kondisi PANAS, kenaikan temperatur akan tetap berada pada
kondisi PANAS. Himpunan fuzzy ‘bahu’, bukan segitiga,
digunakan untuk mengakhiri variabel suatu daerah fuzzy. Bahu
kiri bergerak dari benar ke salah, demikian juga bahu kanan
bergerak dari salah ke benar. Gambar 2.7. menunjukkan
variabel TEMPERATUR dengan daerah bahunya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
Gambar 2. 7. Daerah ‘bahu’ pada variabel TEMPERATUR
2.2.5. Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy
Seperti halya himpunan konvensional, ada beberapa operasi
yang didefinisikan secara khusus untuk kombinasi dan modifikasi
himpunan fuzzy. Nilai keanggotaan sebagai hasil dari operasi 2
himpunan sering dikenal dengan fire strength atau α-predikat. Ada
3 operator dasar yang diciptakan oleh Zadeh, yaitu:
a. Operator AND
Operator ini berhubungan dengan operasi interseksi pada
himpunan. Α-predikat sebagai hasil operasi dengan operator
AND diperoleh dengan mengambil nilai keanggotaan terkecil
antar elemen pada himpunan-himpunan yang bersangkutan.
b. Operator OR
Operator ini berhubungan dengan operasi union pada
himpunan. Α-predikat sebagai hasil operasi dengan operator
OP diperoleh dengan mengambil nilai keanggotaan terbesar
antar elemen pada himpunan-himpunan yang bersangkutan.
c. Operator NOT
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Operator ini berhubungan dengan operasi komplemen pada
himpunan. α-predikat sebagai hasil operasi dengan operator
NOT diperoleh dengan mengurangkan nilai keanggotaan
elemen pada himpunan yang bersangkutan dari 1.
2.3. Fuzzy Database
Basis data (database) merupakan kumpulan dari data yang saling
berhubungan satu dengan yang lainnya, tersimpan di perangkat keras
komputer dan digunakan perangkat lunak untuk memanipulasinya. Sistem
basis data (database system) adalah suatu sistem informasi yang
mengintegrasikan kumpulan data yang saling berhubungan satu dengan
yang lainnya dan membuatnya tersedia untuk beberapa aplikasi dalam
suatu organisasi. Sedangkan fuzzy database system adalah suatu sistem
basis data yang menggunakan teori himpunan fuzzy dalam menghasilkan
informasi (Efendi R, Ernawati, Hidayati R, 2014). Keuntungan fuzzy
database sistem adalah sebagai berikut:
Fuzzy database memungkinkan penanganan data secara alami
karena mengikuti pikiran manusia.
Digunakan logika fuzzy dalam melakukan pencarian data sehingga
menghasilkan data yang sistematis.
Menyediakan lingkungan basis data untuk menangani data yang
masih samar.
2.3.1. Basisdata Fuzzy Model Tahani
Sebagian besar basis data standard diklarifikasikan berdasarkan
bagaimana data tersebut dipandang oleh user. Basis data fuzzy
model Tahani masih tetap menggunakan relasi standard, hanya saja
model ini menggunakan teori himpunan fuzzy untuk mendapatkan
informasi pada query-nya. Jadi, data awal yang diproses adalah
data yang memiliki nilai crisp (pasti/ jelas keberadaannya), dan
ketika akan melakukan proses pencarian data yang bersifat samar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
maka proses tersebut yang dinamakan proses fuzzy query melalui
fuzzy database model Tahani.
Ide dari sistem fuzzy database model Tahani adalah mendefinisikan
konsep dari relasi fuzzy dalam sebuah database sistem dengan
menggunakan derajat keanggotaan.
Contoh kasus yang dapat diselesaikan dengan fuzzy database model
Tahani adalah aplikasi fuzzy database system model Tahani untuk
memberikan rekomendasi pilihan HP bagi konsumen berdasarkan
kriteria-kriteria yang dingiinkan oleh konsumen. Pada kasus
tersebut, outlet HP memiliki data HP yang tersimpan pada tabel.
Atribut yang ada pada setiap tipe HP berupa: harga, dimensi, berat,
dan phonebook_memory; serta ada tidaknya fasilitas WAP (Efendi
R, Ernawati, Hidayati R, 2014) seperti pada Tabel 2.
Tabel 2. 1. Contoh Tabel DT_HP pada Outlet Penjualan HP
Jika dengan menggunakan basis data standard, kita dapat mencari
data-data HP dengan spesifikasi tertentu dengan menggunakan
query. Misal kita ingin mendapatkan informasi tentang tipe HP
yang harganya kurang dari Rp. 1.000.000,- tetapi beratnya kurang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
dari atau sama dengan 100 gram, maka kita bisa menuliskan suatu
query:
SELECT TYPE FROM DT_HP WHERE (Harga < 1000000) and
(Berat ≤ 100).
Sehingga muncul tipe HP T29s, sedangkan tipe HP T190 yang
harganya kurang sari Rp. 1.000.000,- tidak terpilih padahal beda
beratnya selisih 1 gram dari kriteria yang ditentukan. Disini berarti
pada basisdata standard, adanya perubahan kecil saja
mengakibatkan perbedaan kategori yang cukup signifikan antara
HP yang terpilih dan tidak terpilih.
Agar konsumen lebih mudah dalam memberikan kriteria yang
diinginkan, maka penyampaian informasi tentang kriteria suatu
atribut direpresentasikan menggunakan bahasa sehari-hari/ variabel
linguistik. Pada kasus penjualan HP, seorang konsumen ingin
mencari informasi mengenai tipe HP yang sesuai dengan kriteria
yang diinginkannya, adapun datanya menggunakan bahasa sehari-
hari (bersifat samar).
Pada basisdata fuzzy Tahani, awalnya dibentuk suatu himpunan
fuzzy dengan fungsi keanggotaanya. Untuk menilai tipe HP yang
diinginkan maka dibentuklah beberapa kategori yang perlu
dipertimbangkan dengan himpunan yang memiliki pada masih-
masing kriteria. Kriteria-kriteria tersebut adalah sebagai berikut:
a. Harga HP (MURAH, SEDANG, dan MAHAL)
b. Dimensi (KECIL, SEDANG, dan BESAR)
c. Berat (RINGAN, SEDANG, dan BERAT)
d. Phonebook memory (SEDIKIT, SEDANG, dan BANYAK)
Misalkan kita mengkategorikan harga HP ke dalam himpunan:
MURAH, SEDANG, dan MAHAL. Himpunan MURAH dan
MAHAL menggunakan pendekatan fungsi keanggotaan berbentuk
bahu, sedangkan himpunan SEDANG menggunakan pendekatan
fungsi keanggotaan berbentuk segitiga. Fungsi keanggotaan harga
HP terlihat pada gambar 2.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Gambar 2. 8. Fungsi keanggotaan pada Variabel Harga
Fungsi keanggotaan variabel harga dirumuskan sebagai
berikut:
Misal ingin diketahui tipe HP apa saja yang harganya SEDANG,
beratnya RINGAN, dan ada WAP. Maka, Structured Query
language (SQL) yang dibentuk adalah:
SELECT TYPE FROM DT_HP WHERE (harga=”sedang”) AND
(berat = “RINGAN”) AND (WAP= TRUE)
Karena variabel WAP bersifat non fuzzy, maka hanya ada 2
kemungkinan derajat keanggotaan, yaitu 1 apabila ada WAP, dan 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
apabila tidak ada WAP. Tabel 2.2 memperlihatkan fire strength
sebagai hasil operasi dari (Harga SEDANG) AND (Berat
RINGAN) AND (Ada WAP) sebagai:
µHargaSEDANGᴖBeratRINGANᴖAdaWAP =
min(µHargaSEDANG[x1], µBeratRINGAN[x3], µAdaWAP[x5]).
Tabel 2. 2. Fire Strength untuk query Harga Sedang, Berat
RINGAN, Ada WAP
Tabel 2.2. memperlihatkan hasil pencarian terhadap Query 2. Ada 7
HP yang direkomendasi, dengan rekomendasi tertinggi adalah HP
tipe SG 2000, dan rekomendasi terendah adalah HP tipe T29s.
Sedangkan 8 tipe lainnya tidak direkomendasikan.
2.4. Query
Query adalah semacam kemampuan untuk menampilkan suatu data dari
database dimana mengambil dari tabel-tabel yang ada di database, namun
tabel tersebut tidak semua ditampilkan sesuai dengan yang kita inginkan.
Data apa yang ingin kita tampilkan. Misal: data peminjam dengan buku
yang dipinjam, maka nanti akan mengambil data dari tabel peminjam dan
tabel buku.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
BAB III
METODOLOGI PENELITIAN
3.1. Gambaran Umum
Penelitian yang dilakukan bertujuan untuk untuk memberikan
rekomendasi mobil sewa kepada calon penyewa berdasarkan kriteria-
kriteria seperti harga, tahun perakitan, kapasitas penumpang, ukuran,
konsumsi bahan bakar, dan kondisi. Sistem pendukung keputusan
pemilihan mobil sewa ini menggunakan metode fuzzy database model
Tahani. Data yang dipakai adalah data mobil yang ada di penyewaan
mobil daerah Yogyakarta. Nantinya sistem diharapkan mampu
memberikan rekomendasi mobil yang sesuai dengan kriteria yang di
masukan oleh pengguna.
3.2. Desain Penelitian
3.2.1. Studi Literatur
Studi literatur dilakukan dengan membaca buku, jurnal, serta
sumber lain yang berkaitan dengan fuzzy database model Tahani.
3.2.2. Data
- Data yang Digunakan
Data yang digunakan adalah data mobil pada 2 tempat
penyewaan mobil besar dan memiliki beberapa cabang di
D.I.Y, yaitu Sabila Transport yang berlokasi di Jl.Gambir
Anom No.9 dan Sewa Mobil yang terletak di Jl. Bantul km
10,5. Untuk kelengkapan data tentang spesifikasi mobil yang
disewakan ada di STNK/BKPK. Tetapi ada beberapa unit
mobil tidak berada di tempat atau sedang disewa. Maka untuk
data mobil yang sedang disewa diambil dari website yang
disediakan oleh pihak penyewa, yaitu
http://www.sabilatransport.com/.
- Teknik Pengumpulan Data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Teknik pengumpulan data yang digunakan adalah wawancara
dan pencarian di internet. Wawancara dilakukan dengan tanya
jawab kepada pengurus penyewaan mobil tentang data mobil
yang disewakan. Selain wawancara, dilakukan pencarian di
internet untuk data mobil yang lebih spesifik. Karena ada
beberapa tempat penyewaan mobil yang tidak bisa
memberikan informasi secara spesifik tentang mobil yang
disewakan.
3.2.3. Perancangan Alat Uji
Perancangan alat uji dalam penelitian ini menggunakan model
waterfall. Berikut adalah beberapa tahapannya:
- Analisa
Dalam tahap ini dilakukan analisa terhadap kebutuhan sistem.
Seorang sistem analis bertugas dalam mencari informasi
sebanyak mungkin dari user sehingga sistem yang dibuat
sesuai dengan keinginan user. Tahapan ini biasanya akan
menghasilkan dokumen user requirement yang dapat
digunakan sistem analis untuk menerjemahkan ke dalam
bahasa pemrograman.
- Desain
Dalam tahap ini dilakukan proses membuat rancangan alat uji
berdasarkan informasi dari tahap-tahap sebelumnya. Proses
ini berfokus pada struktur data, arsitektur perangkat lunak,
representasi interface, dan detail algoritma. Tahapan ini akan
menghasilkan dokumen yang disebut software requirement.
Dokumen ini yang digunakan seorang programmer untuk
membangun sistemnya.
- Pengkodean (Coding)
Pengkodean merupakan tahap di mana perancangan yang
telah dibuat pada tahap desain diterjemahkan ke dalam bahasa
pemrograman pada komputer. Pengkodean menghasilkan alat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
uji dalam bentuk perangkat lunak yang dibuat berdasarkan
rancangan yang telah ada.
- Pengujian
Pada tahap pengujian, alat uji berupa perangkat lunak diuji
coba untuk mengetahui apakah perangkat lunak tersebut sudah
sesuai dengan rancangan dan kebutuhan pengguna. Selain itu,
pengujian dilakukan untuk menemukan kesalahan-kesalahan
sistem yang kemudian akan diperbaiki.
3.3. Spesifikasi Software dan Hardware
Spesifikasi software dan hardware yang digunakan dalam implementasi
sistem penentuan stok buku ini adalah sebagai berikut:
a. Software
- Sistem Operasi yang digunakan adalah Microsoft Windows 7
32-bit.
- Bahasa pemrograman yang digunakan adalah bahasa
pemrograman Java dengan menggunakan aplikasi Netbeans.
b. Hardware
- Processor yang digunakan adalah Intel(R) Core(TM) i3 CPU
M 350 @ 2.27 GHz 2.27 GHz.
- Memory yaitu 2 GB.
3.4. Pengujian dan Evaluasi Sistem
Pengujian dan evaluasi pada sistem adalah sebagai berikut:
a. Pengujian
Pengujian dilakukan dengan cara mengimplementasikan logika fuzzy
kedalam sistem basis data. Kemudian dilakukan pencarian waktu
proses eksekusi query setiap variabel dan dan table space yang
digunakan untuk menyimpan data.
b. Evaluasi
Evaluasi dilakukan sesuai dengan tujuan dalam penelitian ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
BAB IV
ANALISIS DAN PERANCANGAN SISTEM
4.1. Analisa Kebutuhan
4.1.1. Analisa Sistem
Sistem yang akan dibuat bertujuan untuk memberikan
rekomendasi mobil sewa kepada calon penyewa berdasarkan
kriteria-kriteria seperti harga, tahun perakitan, kapasitas
penumpang, ukuran, konsumsi bahan bakar, dan kondisi. Sistem
pendukung keputusan pemilihan mobil sewa ini menggunakan
metode fuzzy database model Tahani. Data yang dipakai adalah
data mobil yang ada di penyewaan mobil daerah Yogyakarta.
Data-data mobil ini akan disimpan pada sebuah tabel di database.
Setelah itu data akan diolah dengan metode fuzzy database model
Tahani untuk menentukan fire-strength sesuai dengan kriteria
yang diberikan. Pada akhirnya mobil dengan firestrength tertinggi
lebih direkomedasikan untuk disewa. Sistem ini akan di
implementasikan ke sebuah aplikasi berbasis desktop dengan
menggunakan pemrograman berbasis java. Gambar 4.1 berisi
tentang flowchart yang digunakan untuk memahami jalannya
program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Penentuan
himpunan fuzzy
Start
Proses
Input
Kriteria user
End
Ya
TidakPenentuan fungsi
keanggotaan
Perhitungan
firestrength
Gambar 4. 1. Flowchart sistem
4.1.2. Analisa Kebutuhan Pengguna
4.1.2.1. Use Case Diagram
System
Admin
Pengguna
Kelola Data Batas Himpunan
Rekomendasi Mobil
Pencarian Mobil
Kelola Data Mobil
Gambar 4. 2. Use Case System
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Admin
Kelola Data Mobil
Insert
Update
view
Delete
Gambar 4. 3. Package Kelola Data Mobil
Admin
Kelola Data Batas Himpunan
Insert
Update
view
Delete
Gambar 4. 4. Package Kelola Data Batas Himpunan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Pengguna
Rekomendasi Mobil
Perhitungan Derajat Keanggotaan
Perhitungan Firestrength
Gambar 4. 5. Package Rekomendasi Mobil
Pada gambar 4.2., gambar 4.3, gambar 4.4., da gambar 4.5.
direpresentasikan semua aktivitas yang dilakukan oleh pengguna
dan admin pada sistem. Pengguna dalam sistem ini melakukan
aktivitas seperti pencarian mobil dan rekomendasi mobil.
Sedangkan admin melakukan aktivitas kelola data mobil dan
kelola data batas himpunan.
4.1.2.2. Tabel Ringkasan Use Case
Nama Use Case Keterangan Pelaku
Kelola Data Mobil Use case ini merupakan
kumpulan dari beberapa
proses, yaitu insert data
mobil, view data mobil,
update data mobil, dan delete
data mobil.
Admin
Kelola Data Batas
Himpunan
Use case ini merupakan
kumpulan dari beberapa
proses, yaitu insert data batas
himpunan fuzzy, view data
batas himpunan fuzzy,
update data batas himpunan
fuzzy, dan delete batas
Admin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
himpunan fuzzy.
Pencarian Mobil Use case ini merupakan
proses memasukkan kriteria
mobil yang akan di sewa.
Pengguna
Rekomendasi Mobil Use case ini merupakan
kumpulan dari beberapa
proses, yaitu perhitungan
derajat keanggotaan dan
perhitungan firestrength
sesuai dengan kriteria yang
ditentukan.
Pengguna
4.1.3. Diagram Arus Data
4.1.3.1. Diagram Konteks
Admin
0
SYSTEMPengguna
Data Mobil
Batas Himp. Fuzzy
Kriteria Mobil
Mobil Direkomendasi
Gambar 4. 6. Diagram Konteks Sistem
Diagram konteks untuk sistem ini seperti terlihat pada gambar
4.3 ada dua entitas luar yang berhubungan dengan sistem ini,
yaitu: Admin dan pengguna. Admin adalah orang yang memiliki
penyewaan atau orang yang berhak mengisi data ke sistem. Dari
admin akan diperoleh batas himpunan fuzzy dan data mobil.
Sedangkan pengguna akan mendapatkan layanan rekomendasi
mobil sesuai dengan kriteria yang diinginkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
4.1.3.2. Diagram Arus Data Level 1
Admin
1
Kelola
Data Mobil
2
Kelola Data
Batas
Himpunan
3
Rekomendasi
Mobil
4
Pencarian
Mobil
TBatasHimp
Data
Bata
s
him
p. fu
zzy
Bata
s him
p.
fuzz
y
Pengguna
Data mobil
TDataMobil
Data mobil
Data MobilData Mobil
TMu
Derajat
keanggotaan &
fire strength
Data
Kriteria
Mobil
Data
Rekomendasi
Mobil
Data
Bata
s
him
p. fu
zzy
Gambar 4. 7. Diagram Arus Data Level 1
Diagram arus data level 1 untuk sistem ini seperti terlihat pada
gambar 4.4. Diagram arus data level 1 terdiri dari 4 proses, yaitu
proses kelola data mobil, proses kelola data batas himpunan,
proses rekomendasi mobil, serta proses pencarian mobil. Pada
proses kelola data mobil, data disimpan dan diambil dari tabel
TDataMobil. Pada proses kelola data batas himpuna, data
disimpan dan diambil dari tabel TbatasHimp. Pada proses
pencarian mobil. Pengguna memasukan kriteria mobil yang
diinginkan, dan kemudian akan mendapatkan satu atau lebih
data mobil yang berkaitan dengan kriteria yang diinginkan.
Setelah itu data akan masuk ke proses rekomendasi mobil dan
hasilnya akan disimpan pada tabel TMu. Selain itu pada proses
rekomendasi mobil akan mengambil data dari tabel TMu untuk
menentukan seberapa besar nilai fire strength yang berguna
sebagai acuan rekomendasi mobil untuk pengguna. Jika nilai fire
strength mendekati nilai 1, maka akan semakin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
direkomendasikan dan sebaliknya apabila mendekati nilai 0,
maka tidak direkomendasikan.
4.1.3.3. Diagram Arus Data Level 2
3.1
Perhitungan
derajat
keanggotaan
4
Pencarian
Mobil
Pengguna
TDataMobil
Data MobilData Mobil
TMu
Data Derajat
keanggotaan
Data
Kriteria
Mobil
Data
Rekomendasi
Mobil
3.2
Perhitungan
Firestrength
Data
Dera
jat
keanggota
an
Gambar 4. 8. Diagram Arus Data Proses Rekomendasi Mobil
Diagram arus data level 2 untuk rekomendasi mobil sistem ini
seperti terlihat pada gambar 4.5. Diagram arus data level 2 ini
mendefinisikan proses rekomendasi mobil menjadi 2 proses,
yaitu proses perhitungan derajat keanggotaan dan proses
perhitungan firestrength. Proses perhitungan derajat
keanggotaan ini bertujuan memproses data mobil yang sudah
disortir sesuai dengan kriteria sehingga menghasilkan nilai
derajat keanggotaan dan disimpan ke tabel TMu. Sedangkan
pada proses perhitungan firestrength, data diambil dari tabel
TMu berupa data derajat keanggotaan yang kemudian akan
diproses sehingga menghasilkan nilai fire strength.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
Admin
1.1
Insert Data
Mobil
Dat
a m
obil
TDataMobil
Data mobil
Data
Mobil
1.2
Check
Data
Mobil
Data
mobil
1.3
Update
Data
Mobil
1.4
Delete
Data
Mobil
Data m
obilDat
a m
obil
Data
mobil
Data
mobil
Gambar 4. 9. Arus Data Proses Kelola Data Mobil
Diagram arus data level 2 untuk kelola data mobil sistem ini
seperti terlihat pada gambar 4.6. Diagram arus data level 2 ini
mendefinisikan proses kelola data mobil menjadi 4 proses, yaitu
proses insert data mobil, check data mobil, update data mobil,
dan delete data mobil. Insert data mobil adalah proses
memasukan data mobil ke tabel TDataMobil. Check data mobil
hanya untuk melihat data mobil yang ada di tabel TDataMobil.
Upadate data mobil untuk mengubah data mobil yang sudah ada
di tabel TDataMobil. Delete data mobil untuk menghapus data
mobil yang ada di tabel TDataMobil.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
2.1
Insert Data
Batas Himp.
fuzzyTBatasHimp
Data B
atas
himp. fuzzy
2.2
Check Data
Batas Himp.
fuzzy
Admin
2.4
Delete Data
Batas Himp.
fuzzy
2.3
Update Data
Batas Himp.
fuzzy
Data B
atas
himp. fuzzy
Data Batas
himp. fuzzy
Data Batas
himp. fuzzy
Data Batas
himp. fuzzyData B
atas
himp. fuzzy
Data Batas
himp. fu
zzy
Data
Bata
s
him
p. fu
zzy
Gambar 4. 10. Diagram Arus Data Proses Kelola Data Batas
Himp. Fuzzy
Diagram arus data level 2 untuk kelola data batas himp. fuzzy
sistem ini seperti terlihat pada gambar 4.7. Diagram arus data
level 2 ini mendefinisikan proses kelola data batas himpunan
fuzzy menjadi 4 proses, yaitu proses insert data batas himp.
fuzzy, check data batas himp. fuzzy, update data batas himp.
fuzzy, dan delete data batas himp. fuzzy. Insert data batas himp.
fuzzy untuk memasukan data batas himpunan fuzzy ke tabel
TBatasHimp. check data batas himp. fuzzy untuk melihat data
batas himpunan fuzzy yang ada di tabel TBatasHimp. Update
data batas himp. fuzzy untuk mengubah data batas himpunan
fuzzy yang ada di tabel TBatasHimp.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
4.1.4. Perancangan Basis data
4.1.4.1. Perancangan Konseptual
DATAMOBIL MU
BATASHIMPUNAN
(1.1)
ID
NAMA
HARGA
PANJANG
LEBAR
TINGGI
KAPASITAS_PENUMPANG
TAHUN
KAPASITAS_BBM
MHARGA1
MHARGA2
MHARGA3
MUKURAN1
MUKURAN3
MUKURAN2
MKAPASITASP1MKAPASITASP2
MKAPASITASP3
MKAPASITASB2
MKAPASITASB1
MKAPASITASB3
MTAHUN1
MTAHUN2
BATAS NILAI
ID
Gambar 4. 11. Perancangan konseptual
4.1.4.2. Perancangan Logikal
TDataMobil
PK ID
Nama
Harga
Panjang
Lebar
Tinggi
Kapasitas_penumpang
Kapasitas_bbm
Tahun
TBatasHimp
PK Batas
nilai
TMu
PK ID
Mharga1
Mharga2
Mharga3
Mukuran1
Mukuran2
Mukuran3
MkapasitasP1
MkapasitasP2
MkapasitasP3
MkapasitasBBM1
MkapasitasBBM2
MkapasitasBBM3
Mtahun1
Mtahun2
Gambar 4. 12. Perancangan Logikal
4.1.4.3. Perancangan Pisikal
a. Tabel DataMobil
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Tabel DataMobil digunakan untuk menyimpan data-data
tentang atribut, harga serta spesifikasi mobil, struktur tabel
DataMobil dapat dilihat pada tabel 4.1.
Tabel 4. 1. Tabel Data Mobil
Nama Field Type Data Lebar Keterangan
Id* varchar2 20 Id Kendaraan
Nama varchar2 20 Nama kendaraan
Harga number Harga sewa kendaraan
Kapasitas
BBM
number Kapasitas BBM
Panjang number Panjang kendaraan
Lebar number Lebar kendaraan
Tinggi number Tinggi kendaraan
Kapasitas
penumpang
number Kapasitas kendaraan
Tahun number Tahun keluaran
kendaraan
*) Kunci Primer
b. Tabel BatasHimpunan
Tabel BatasHimpunan digunakan untuk menyimpan data-data
batas himpunan-himpunan fuzzy, struktur tabel BatasHimpunan
dapat dilihat pada tabel 4.2.
Tabel 4. 2. Tabel Batas Himpunan
Nama Field Type Data Lebar Keterangan
Batas* varchar2 20 Nama batas suatu
himpunan fuzzy
nilai number nilai batas suatu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
himpunan fuzzy
*) Kunci Primer
c. Tabel Mu
Tabel Mu digunakan untuk menyimpan data-data tentang
derajat keanggotaan suatu kriteria mobil tertentu pada
himpunan fuzzy tertentu, struktur tabel Mu dapat dilihat pada
tabel 4.3.
Tabel 4. 3. Tabel Mu
Nama Field Type
Data
Lebar Keterangan
Id* varchar2 20 Id kendaraan
Mharga1 number Derajat
keanggotaan untuk
harga di
himp.MURAH
Mharga2 number Derajat
keanggotaan untuk
harga di
himp.SEDANG
Mharga3 number Derajat
keanggotaan untuk
harga di
himp.MAHAL
Mukuran1 number Derajat
keanggotaan untuk
kondisi di
himp.KECIL
Mukuran2 number Derajat
keanggotaan untuk
kondisi di
himp.NORMAL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Mukuran3 number Derajat
keanggotaan untuk
kondisi di
himp.BESAR
MkapasitasP1 number Derajat
keanggotaan untuk
kondisi di
himp.SEDIKIT
MkapasitasP2 number Derajat
keanggotaan untuk
kondisi di
himp.SEDANG
MkapasitasP3 number Derajat
keanggotaan untuk
kondisi di
himp.BANYAK
MkapasitasB1 number Derajat
keanggotaan untuk
kondisi di
himp.SEDIKIT
MkapasitasB2 number Derajat
keanggotaan untuk
kondisi di
himp.SEDANG
MkapasitasB3 number Derajat
keanggotaan untuk
kondisi di
himp.BANYAK
Mtahun1 number Derajat
keanggotaan untuk
tahun di
himp.LAMA
Mtahun2 number Derajat
keanggotaan untuk
tahun di
himp.BARU
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
4.1.5. Penerapan Contoh Perhitungan
Data-data yang ada berupa 8, maka peneliti mecoba melakukan
perhitungan manual sesuai dengan metode fuzzy database model
Tahani. Langkah-langkah perhitungan manual, sebagai berikut :
Diketahui :
Tabel 4. 4. Data Mobil
Id* Nama Harga Panj
ang
Leba
r
Tinggi Kapas
itas
penu
mpan
g
Kapas
itas
BBM
Tahun
1
Brio
satya type
e 300000 3610 1680 1485 5 35 2013
2 Jazz 300000 3845 1675 1525 5 42 2007
3 Jazz vtec 300000 3845 1675 1525 5 42 2008
4
Avanza
1.3 VVTi 250000 4120 1630 1695 8 45 2008
5
Avanza
1.3g 300000 4140 1660 1695 8 45 2010
6 Yaris 300000 3750 1695 1520 5 42 2009
7 Swift 300000 3755 1690 1510 5 45 2010
8 Splash 300000 3715 1680 1618 5 43 2010
4.1.5.1. Fungsi Keanggotaan
a. Variabel Harga
Variabel harga dibagi menjadi 3 himpunan fuzzy,yaitu
MURAH, NORMAL, dan MAHAL. Himpunan MURAH dan
MAHAL menggunakan pendekatan fungsi keanggotaan yang
berbentuk bahu, sedangkan himpunan NORMAL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 4. 13. Fungsi keanggotaan pada Variabel Harga
Fungsi keanggotaannya:
b. Variabel Ukuran
Variabel ukuran merupakan variabel yang diperngaruhi oleh
tiga variabel lainnya, yaitu: variabel panjang, lebar, dan tinggi.
1. Variabel Panjang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Variabel panjang dibagi menjadi tiga himpunan fuzzy,
yaitu: PENDEK, SEDANG, dan PANJANG. Himpunan
PENDEK dan PANJANG menggunakan pendekatan fungsi
keanggotaan yang berbentuk bahu, sedangkan himpunan
NORMAL menggunakan pendekatan fungsi keanggotaan
berbentuk segitiga.
Gambar 4. 14. Fungsi Keanggotaan pada Variabel Panjang
Fungsi keanggotaannya:
2. Variabel Lebar
Variabel lebar dibagi menjadi tiga himpunan fuzzy, yaitu:
SEMPIT, SEDANG, dan LEBAR. Himpunan SEMPIT dan
LEBAR menggunakan pendekatan fungsi keanggotaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
yang berbentuk bahu, sedangkan himpunan NORMAL
menggunkan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 4. 15. Fungsi keanggotaan pada Variabel Lebar
Fungsi keanggotaanya:
3. Variabel Tinggi
Variabel tinggi dibagi menjadi tiga himpunan fuzzy, yaitu:
PENDEK, SEDANG, dan TINGGI. Himpunan PENDEK
dan TINGGI menggunakan pendekatan fungsi keanggotaan
yang berbentuk bahu, sedangkan himpunan NORMAL
menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 4. 16. Fungsi keanggotaan pada Varabel Tinggi
Fungsi keanggotaanya:
Variabel ukuran, dibagi menjadi tiga himpunan, yaitu: KECIL,
NORMAL, dan BESAR. Meskipun variabel Panjang, Lebar, dan
Tinggi masing-masing terbagi atas tiga himpunan fuzzy, namun
untuk mengkategorikan suatu mobil masuk dalam salah satu
himpunan (KECIL, NORMAL, atau BESAR) tidak memerlukan
inferensi dari himpunan-himpunan pada variabel panjang, lebar,
dan tinggi. Pembagian ketiga variabel menjadi himpunan-
himpunan, hanya diperlukan untuk memudahkan dalam
pengambilan batas fungsi keanggotaan pada variabel ukuran.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Himpunan KECIL, memiliki fungsi keanggotaan berbentuk bahu
kiri, dengan nilai batas bawah diperoleh dari hasil perkalian batas
bawah himpunan PENDEK (pada variabel panjang), SEMPIT
(pada variabel lebar), dan PENDEK (pada variabel tinggi).
Sedangkan nilai batas atas diperoleh dari hasil perkalian batas atas
himpunan PENDEK (pada variabel panjang), SEMPIT (pada
variabel lebar), dan PENDEK (pada variabel tinggi).
Himpunan NORMAL, memiliki fungsi keanggotaan berbentuk
segitiga, dengan nilai batas bawah diperoleh dari hasil perkalian
batas bawah himpunan SEDANG (pada variabel panjang),
NORMAL (pada variabel lebar), dan SEDANG (pada variabel
tinggi). Sedangkan nilai batas atas diperoleh dari hasil perkalian
batas atas himpunan SEDANG (pada variabel panjang), NORMAL
(pada variabel lebar), dan SEDANG (pada variabel tinggi).
Himpunan BESAR, memiliki fungsi keanggotaan berbentuk bahu
kanan, dengan nilai batas bawah diperoleh dari hasil perkalian
batas bawah himpunan PANJANG (pada variabel panjang),
LEBAR (pada variabel lebar), dan TINGGI (pada variabel tinggi).
Sedangkan nilai batas atas diperoleh dari hasil perkalian batas atas
himpunan PANJANG (pada variabel panjang), LEBAR (pada
variabel lebar), dan TINGGI (pada variabel tinggi).
Gambar 4. 17. Fungsi keanggotaan pada Variabel Ukuran
Fungsi keanggotaannya:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
c. Variabel Kapasitas BBM
Variabel kapasitas BBM dibagi menjadi tiga himpunan fuzzy,
yaitu SEDIKIT, SEDANG, dan BANYAK. Himpunan
SEDIKIT dan BANYAK menggunakan pendekatan fungsi
keanggotaan yang berbentuk bahu, sedangkan himpunan
SEDANG menggunakan pendekatan fungsi keanggotaan
berbentuk segitiga.
Gambar 4. 18. Fungsi keanggotaan pada Variabel Kapasitas BBM
Fungsi keanggotaannya:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
d. Variabel Kapasitas penumpang
Variabel kapasitas penumpang dibagi menjadi tiga himpunan
fuzzy, yaitu SEDIKIT, SEDANG, dan BANYAK. Himpunan
SEDIKIT dan BANYAK menggunakan pendekatan fungsi
keanggotaan yang berbentuk bahu, sedangkan himpunan
SEDANG menggunakan pendekatan fungsi keanggotaan
berbentuk segitiga.
Gambar 4. 19. Fungsi keanggotaan pada Variabel Kapasitas penumpang
Fungsi keanggotaannya:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
e. Variabel Tahun
Variabel Tahun dibagi menjadi dua himpunan fuzzy, yaitu
BARU dan LAMA. Himpunan BARU dan LAMA
menggunakan pendekatan fungsi keanggotaan yang berbentuk
bahu.
Gambar 4. 20. Fungsi keanggotaan pada Variabel Tahun
Fungsi Keanggotaannya:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
4.1.5.2. Query 1
Ingin diketahui, mobil apa saja yang memiliki kriteria harga
MURAH, ukuran BESAR, kapasitas penumpang BANYAK,
kapasitas BBM SEDANG, dan tahun LAMA. Mobil apakah
yang akan direkomendasikan ?
SELECT a.Nama, a.Harga, b.Mu
FROM DataMobil a, Mu b
where ((((a.Harga=’MURAH’)) and (Ukuran=’BESAR’)) and
(a.Kapasitas_penumpang=’BANYAK’)) and
(a.kapasitas_BBM=’SEDANG’))
Order by b.Mu DESC, a.Harga ASC
Tabel 4. 5. Nilai Derajat Keanggotaan pada setiap Himpunan
Id* Nama Derajat Keanggotaan
Harga
MURAH
Ukuran
KECIL
Kapasitas
Penumpang
BANYAK
Kapasitas
BBM
SEDANG
1
Brio satya
type e 1 0,69496139 0 0
2 Jazz 1 0,51809721 0 0,466667
3 Jazz vtec 1 0,51809721 0 0,466667
4
Avanza 1.3
VVTi 1,5 0,17940521 1 0,666667
5 Avanza 1.3g 1 0,12175315 1 0,666667
6 Yaris 1 0,55281996 0 0
7 Swift 1 0,56998167 0 0,666667
8 Splash 1 0,45807774 0 0,533333
Hasil Pencarian Query 1 bisa dilihat pada tabel 3.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Tabel 4. 6. Fire strength
Nama Harga Rekomendasi
Avanza 1.3
VVTi 250000 0,179405206
Avanza 1.3g 300000 0,121753145
Brio satya
type e 300000 0
Jazz 300000 0
Jazz vtec 300000 0
Yaris 300000 0
Swift 300000 0
Splash 300000 0
Jadi mobil yang paling direkomendasikan sesuai dengan kriteria
adalah mobil dengan nama Avanza 1.3 VVTi.
4.2. Perancangan Antar Muka
4.2.1. Perancangan Halaman Awal
HOME BATAS HIMPUNANDATA MOBILPENCARIAN
PENERAPAN
MODEL
TAHANI DALAM SISTEM
PENDUKUNG KEPUTUSAN
PEMILIHAN MOBIL SEWA
FUZZY
DATABASE
Gambar 4. 21. Desaign Halaman Home Admin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
4.2.2. Perancangan Halaman Pencarian
Gambar 4. 22. Desaign Halaman Pencarian Tab Fuzzy Admin
Gambar 4. 23. Desaign Halaman Pencarian Tab Fuzzy Pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Gambar 4. 24. Desaign Halaman Pencarian Tab Tegas Admin
Gambar 4. 25. Desaign Halaman Pencarian Tab Tegas Pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
4.2.3. Perancangan Halaman Data Mobil
Gambar 4. 26. Desaign Halamn Data Mobil Admin
Gambar 4. 27. Desaign Halaman Data Mobil Pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
4.2.4. Perancangan Halaman Batas Himpunan
Gambar 4. 28. Desaign Halaman Batas Himpunan Admin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
BAB V
IMPEMENTASI DAN ANALISA HASIL
5.1. Implementasi
Perancangan sistem yang sudah dilakukan selanjutnya diimpleentasikan ke
dalam program. Program dibuat dengan menggunakan bahasa
pemrograman Java.
5.1.1. Implementasi Fungsi Keanggotaan Harga Murah
public void MhargaMurah() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,harga from
datamobil");
rs = st.executeQuery();
String id = "";
double m = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("harga");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where
id='" + id + "'");
rs3 = st3.executeQuery();
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bHargaMurahA()) {
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA1) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bHargaMurahB()) {
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA1) VALUES (?, '0')");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (bHargaMurahB() - h);
m = m / (bHargaMurahB() - bHargaMurahA());
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA1) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h <= bHargaMurahA()) {
st4 = conn.prepareStatement("update mu set
MHARGA1='1' where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (h >= bHargaMurahB()) {
st4 = conn.prepareStatement("update mu set
MHARGA1='0' where id=?");
st4.setString(1, id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
st4.executeUpdate();
} else if (tamp.equals(id)) {
m = (bHargaMurahB() - h);
m = m / (bHargaMurahB() - bHargaMurahA());
st4 = conn.prepareStatement("update mu set
MHARGA1=? where id=?");
st4.setDouble(1, m);
st4.setString(2, id);
st4.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan
untuk fungsi keanggotaan himpunan murah pada variabel harga. Data dari
database akan diolah sesuai dengan fungsi keanggotaan murah pada
varibel harga.
5.1.2. Implementasi Fungsi Keanggotaan Harga Sedang
public void MhargaSedang() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,harga from
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
datamobil");
rs = st.executeQuery();
String id = "";
double m = 0;
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("harga");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where
id='" + id + "'");
rs3 = st3.executeQuery();
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h >= bHargaNormalA() && h <=
bHargaNormalB()) {
m = (h - bHargaNormalA());
m = m / (bHargaNormalB() - bHargaNormalA());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else if (h >= bHargaNormalB() && h <=
bHargaNormalC()) {
m = (bHargaNormalC() - h);
m = m / (bHargaNormalC() - bHargaNormalB());
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA2) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h >= bHargaNormalA() && h <=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
bHargaNormalB()) {
m = (h - bHargaNormalA());
m = m / (bHargaNormalB() - bHargaNormalA());
st2 = conn.prepareStatement("update mu set
MHARGA2=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else if (h >= bHargaNormalB() && h <=
bHargaNormalC()) {
m = (bHargaNormalC() - h);
m = m / (bHargaNormalC() - bHargaNormalB());
st2 = conn.prepareStatement("update mu set
MHARGA2=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("update mu set
MHARGA2='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan
untuk fungsi keanggotaan himpunan sedang pada variabel harga. Data dari
database akan diolah sesuai dengan fungsi keanggotaan sedang pada
varibel harga.
5.1.3. Implementasi Fungsi Keanggotaan Harga Mahal
public void MhargaMahal() throws SQLException {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,harga from
datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("harga");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where
id='" + id + "'");
rs3 = st3.executeQuery();
double m = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bHargaMahalA()) {
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA3) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bHargaMahalB()) {
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA3) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bHargaMahalA());
m = m / (bHargaMahalB() - bHargaMahalA());
st2 = conn.prepareStatement("INSERT INTO
MU(ID, MHARGA3) VALUES (?, ?)");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h <= bHargaMahalA()) {
st2 = conn.prepareStatement("update mu set
MHARGA3='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bHargaMahalB()) {
st2 = conn.prepareStatement("update mu set
MHARGA3='1' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bHargaMahalA());
m = m / (bHargaMahalB() - bHargaMahalA());
st2 = conn.prepareStatement("update mu set
MHARGA3=? where id=?");
st2.setDouble(1, m);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
st2.setString(2, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan
untuk fungsi keanggotaan himpunan mahal pada variabel harga. Data dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
database akan diolah sesuai dengan fungsi keanggotaan mahal pada varibel
harga.
5.1.4. Implementasi Fungsi Keanggotaan Ukuran Kecil
public void MUkurangKecil() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id from datamobil");
rs = st.executeQuery();
String id = "";
double tamp = 0;
double batasA = 0;
double batasB = 0;
double m = 0;
while (rs.next()) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
id = rs.getString("id");
st3 = conn.prepareStatement("Select id from mu where id='" + id
+ "'");
rs3 = st3.executeQuery();
String i = "";
while (rs3.next()) {
i = rs3.getString("id");
}
tamp = MpanjangPendek(id) * MlebarSempit(id) *
MtinggiPendek(id) / Math.pow(10, 9);
batasA = bPanjangPendekA() * bTinggiPendekA() /
Math.pow(10, 9);
batasA = batasA * bLebarSempitA();
batasB = bPanjangPendekB() * bTinggiPendekB() /
Math.pow(10, 9);
batasB = batasB * bLebarSempitB();
System.out.println(tamp);
System.out.println("PA" + bPanjangPendekA());
System.out.println("LA" + bLebarSempitA());
System.out.println("TA" + bTinggiPendekA());
System.out.println("PB" + bPanjangPendekB());
System.out.println("LB" + bLebarSempitB());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
System.out.println("TB" + bTinggiPendekB());
System.out.println(batasA);
System.out.println(batasB);
if (i.equals("")) {
if (tamp <= batasA) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN1) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else if (tamp >= batasB) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN1) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (batasB - tamp);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN1) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
}
} else {
System.out.println(tamp);
System.out.println("PA" + bPanjangPendekA());
System.out.println("LA" + bLebarSempitA());
System.out.println("TA" + bTinggiPendekA());
System.out.println("PB" + bPanjangPendekB());
System.out.println("LB" + bLebarSempitB());
System.out.println("TB" + bTinggiPendekB());
System.out.println(batasA);
System.out.println(batasB);
if (tamp <= batasA) {
st2 = conn.prepareStatement("update mu set
MUKURAN1='1' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (tamp >= batasB) {
st2 = conn.prepareStatement("update mu set
MUKURAN1='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
m = (batasB - tamp);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("update mu set
MUKURAN1=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan
untuk fungsi keanggotaan himpunan kecil pada variabel ukuran. Data dari
database akan diolah sesuai dengan fungsi keanggotaan kecil pada varibel
ukuran.
5.1.5. Implementasi Fungsi Keanggotaan Ukuran Normal
public void MUkurangNormal() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id from datamobil");
rs = st.executeQuery();
String id = "";
double tamp = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
double batasA = 0;
double batasB = 0;
double batasC = 0;
double m = 0;
while (rs.next()) {
id = rs.getString("id");
st3 = conn.prepareStatement("Select id from mu where id='" + id
+ "'");
rs3 = st3.executeQuery();
String i = "";
while (rs3.next()) {
i = rs3.getString("id");
}
tamp = MpanjangSedang(id) * MlebarSedang(id) *
MtinggiSedang(id) / Math.pow(10, 9);
batasA = bPanjangSedangA() * bLebarSedangA() / Math.pow(10,
9);
batasA = batasA * bTinggiSedangA();
batasB = bPanjangSedangB() * bLebarSedangB() / Math.pow(10,
9);
batasB = batasB * bTinggiSedangB();
batasC = bPanjangSedangC() * bLebarSedangC() / Math.pow(10,
9);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
batasC = batasC * bTinggiSedangC();
System.out.println(tamp);
if (i.equals("")) {
if (tamp <= batasB && tamp >= batasA) {
m = (tamp - batasA);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else if (tamp >= batasB && tamp <= batasC) {
m = (batasC - tamp);
m = m / (batasC - batasB);
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN2) VALUES (?, '0')");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
st2.setString(1, id);
st2.executeUpdate();
}
} else {
if (tamp <= batasB && tamp >= batasA) {
m = (tamp - batasA);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("update mu set MUKURAN2=?
where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else if (tamp >= batasB && tamp <= batasC) {
m = (batasC - tamp);
m = m / (batasC - batasB);
st2 = conn.prepareStatement("update mu set MUKURAN2=?
where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("update mu set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
MUKURAN2='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan normal pada variabel ukuran. Data dari
database akan diolah sesuai dengan fungsi keanggotaan normal pada varibel
ukuran.
5.1.6. Implementasi Fungsi Keanggotaan Ukuran Besar
public void MUkurangBesar() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id from datamobil");
rs = st.executeQuery();
String id = "";
double tamp = 0;
double batasA = 0;
double batasB = 0;
double m = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
while (rs.next()) {
id = rs.getString("id");
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
String i = "";
while (rs3.next()) {
i = rs3.getString("id");
}
tamp = MpanjangPanjang(id) * MlebarLebar(id) *
MtinggiTinggi(id) / Math.pow(10, 9);
batasA = bPanjangPanjangA() * bLebarLebarA() / Math.pow(10,
9);
batasA = batasA * bTinggiTinggiA();
batasB = bPanjangPanjangB() * bLebarLebarB() / Math.pow(10,
9);
batasB = batasB * bTinggiTinggiB();
System.out.println(tamp);
if (i.equals("")) {
if (tamp <= batasA) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN3) VALUES (?, '0')");
st2.setString(1, id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
st2.executeUpdate();
} else if (tamp >= batasB) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN3) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (tamp - batasA);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MUKURAN3) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
if (tamp <= batasA) {
st2 = conn.prepareStatement("update mu set MUKURAN3='0'
where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (tamp >= batasB) {
st2 = conn.prepareStatement("update mu set MUKURAN3='1'
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (tamp - batasA);
m = m / (batasB - batasA);
st2 = conn.prepareStatement("update mu set MUKURAN3=?
where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan besar pada variabel ukuran. Data dari database
akan diolah sesuai dengan fungsi keanggotaan besar pada varibel ukuran.
5.1.7. Implementasi Fungsi Keanggotaan Kapasitas Penumpang
Sedikit
public void MKapasitasPenumpangSedikit() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
st = conn.prepareStatement("select id,kapasitas_penumpang
from datamobil");
rs = st.executeQuery();
String id = "";
double m = 0;
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_penumpang");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='"
+ id + "'");
rs3 = st3.executeQuery();
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bKapasitasPenumpangSedikitA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP1) VALUES (?, '1')");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasPenumpangSedikitB()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP1) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (bKapasitasPenumpangSedikitB() - h);
m = m / (bKapasitasPenumpangSedikitB() -
bKapasitasPenumpangSedikitA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP1) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h <= bKapasitasPenumpangSedikitA()) {
st4 = conn.prepareStatement("update mu set
MKAPASITASP1='1' where id=?");
st4.setString(1, id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
st4.executeUpdate();
} else if (h >= bKapasitasPenumpangSedikitB()) {
st4 = conn.prepareStatement("update mu set
MKAPASITASP1='0' where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (tamp.equals(id)) {
m = (bKapasitasPenumpangSedikitB() - h);
m = m / (bKapasitasPenumpangSedikitB() -
bKapasitasPenumpangSedikitA());
st4 = conn.prepareStatement("update mu set
MKAPASITASP1=? where id=?");
st4.setDouble(1, m);
st4.setString(2, id);
st4.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan sedikit pada variabel kapasitas penumpang.
Data dari database akan diolah sesuai dengan fungsi keanggotaan sedikit pada
varibel kapasitas penumpang.
5.1.8. Implementasi Fungsi Keanggotaan Kapasitas Penumpang
Sedang
public void MKapasitasPenumpangSedang() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,kapasitas_penumpang from
datamobil");
rs = st.executeQuery();
String id = "";
double m = 0;
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_penumpang");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
System.out.println(id);
System.out.println(h);
if (h >= bKapasitasPenumpangSedangA() && h <=
bKapasitasPenumpangSedangB()) {
m = (h - bKapasitasPenumpangSedangA());
m = m / (bKapasitasPenumpangSedangB() -
bKapasitasPenumpangSedangA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else if (h >= bKapasitasPenumpangSedangB() && h <=
bKapasitasPenumpangSedangC()) {
m = (bKapasitasPenumpangSedangC() - h);
m = m / (bKapasitasPenumpangSedangC() -
bKapasitasPenumpangSedangB());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
MKAPASITASP2) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h >= bKapasitasPenumpangSedangA() && h <=
bKapasitasPenumpangSedangB()) {
m = (h - bKapasitasPenumpangSedangA());
m = m / (bKapasitasPenumpangSedangB() -
bKapasitasPenumpangSedangA());
st2 = conn.prepareStatement("update mu set
MKAPASITASP2=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else if (h >= bKapasitasPenumpangSedangB() && h <=
bKapasitasPenumpangSedangC()) {
m = (bKapasitasPenumpangSedangC() - h);
m = m / (bKapasitasPenumpangSedangC() -
bKapasitasPenumpangSedangB());
st2 = conn.prepareStatement("update mu set
MKAPASITASP2=? where id=?");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("update mu set
MKAPASITASP2='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan sedang pada variabel kapasitas penumpang.
Data dari database akan diolah sesuai dengan fungsi keanggotaan sedang
pada varibel kapasitas penumpang.
5.1.9. Implementasi Fungsi Keanggotaan Kapasitas Penumpang
Banyak
public void MKapasitasPenumpangBanyak() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,kapasitas_penumpang from
datamobil");
rs = st.executeQuery();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
String id = "";
double m = 0;
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_penumpang");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bKapasitasPenumpangBanyakA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP3) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasPenumpangBanyakB()) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP3) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bKapasitasPenumpangBanyakA());
m = m / (bKapasitasPenumpangBanyakB() -
bKapasitasPenumpangBanyakA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASP3) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h <= bKapasitasPenumpangBanyakA()) {
st2 = conn.prepareStatement("update mu set
MKAPASITASP3='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasPenumpangBanyakB()) {
st2 = conn.prepareStatement("update mu set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
MKAPASITASP3='1' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bKapasitasPenumpangBanyakA());
m = m / (bKapasitasPenumpangBanyakB() -
bKapasitasPenumpangBanyakA());
st2 = conn.prepareStatement("update mu set
MKAPASITASP3=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan banyak pada variabel kapasitas penumpang.
Data dari database akan diolah sesuai dengan fungsi keanggotaan banyak
pada varibel kapasitas penumpang.
5.1.10. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedikit
public void MKapasitasBBMSedikit() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,kapasitas_BBM from
datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_BBM");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
double m = 0;
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
System.out.println("kapasitas" + h);
System.out.println("ba" + bKapasitasBBMSedikitA());
System.out.println("bb" + bKapasitasBBMSedikitB());
if (tamp.equals("")) {
System.out.println(id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
System.out.println(h);
if (h <= bKapasitasBBMSedikitA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB1) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasBBMSedikitB()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB1) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else {
System.out.println(bKapasitasBBMSedikitA());
m = (bKapasitasBBMSedikitB() - h);
m = m / (bKapasitasBBMSedikitB() -
bKapasitasBBMSedikitA());
System.out.println(m);
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB1) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
} else {
System.out.println("Data sudah ada");
if (h <= bKapasitasBBMSedikitA()) {
st4 = conn.prepareStatement("update mu set
MKAPASITASB1='1' where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (h >= bKapasitasBBMSedikitB()) {
st4 = conn.prepareStatement("update mu set
MKAPASITASB1='0' where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (tamp.equals(id)) {
System.out.println(bKapasitasBBMSedikitA());
m = (bKapasitasBBMSedikitB() - h);
m = m / (bKapasitasBBMSedikitB() -
bKapasitasBBMSedikitA());
System.out.println(m);
st4 = conn.prepareStatement("update mu set
MKAPASITASB1=? where id=?");
st4.setDouble(1, m);
st4.setString(2, id);
st4.executeUpdate();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan sedikit pada variabel kapasitas BBM. Data dari
database akan diolah sesuai dengan fungsi keanggotaan sedikit pada varibel
kapasitas BBM.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
5.1.11. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedang
public void MKapasitasBBMSedang() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,kapasitas_BBM from
datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_BBM");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102
rs3 = st3.executeQuery();
double m = 0;
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h >= bKapasitasBBMSedangA() && h <=
bKapasitasBBMSedangB()) {
m = (h - bKapasitasBBMSedangA());
m = m / (bKapasitasBBMSedangB() -
bKapasitasBBMSedangA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else if (h >= bKapasitasBBMSedangB() && h <=
bKapasitasBBMSedangC()) {
m = (bKapasitasBBMSedangC() - h);
m = m / (bKapasitasBBMSedangC() -
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103
bKapasitasBBMSedangB());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB2) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h >= bKapasitasBBMSedangA() && h <=
bKapasitasBBMSedangB()) {
m = (h - bKapasitasBBMSedangA());
m = m / (bKapasitasBBMSedangB() -
bKapasitasBBMSedangA());
st2 = conn.prepareStatement("update mu set
MKAPASITASB2=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
st2.executeUpdate();
} else if (h >= bKapasitasBBMSedangB() && h <=
bKapasitasBBMSedangC()) {
m = (bKapasitasBBMSedangC() - h);
m = m / (bKapasitasBBMSedangC() -
bKapasitasBBMSedangB());
st2 = conn.prepareStatement("update mu set
MKAPASITASB2=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
} else {
st2 = conn.prepareStatement("update mu set
MKAPASITASB2='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan sedang pada variabel kapasitas BBM. Data dari
database akan diolah sesuai dengan fungsi keanggotaan sedang pada varibel
kapasitas BBM.
5.1.12. Implementasi Fungsi Keanggotaan Kapasitas BBM Banyak
public void MKapasitasBBMBanyak() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,kapasitas_BBM from
datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("kapasitas_BBM");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
double m = 0;
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
107
System.out.println(h);
if (h <= bKapasitasBBMBanyakA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB3) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasBBMBanyakB()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB3) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bKapasitasBBMBanyakA());
m = m / (bKapasitasBBMBanyakB() -
bKapasitasBBMBanyakA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MKAPASITASB3) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
if (h <= bKapasitasBBMBanyakA()) {
st2 = conn.prepareStatement("update mu set
MKAPASITASB3='0' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bKapasitasBBMBanyakB()) {
st2 = conn.prepareStatement("update mu set
MKAPASITASB3='1' where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bKapasitasBBMBanyakA());
m = m / (bKapasitasBBMBanyakB() -
bKapasitasBBMBanyakA());
st2 = conn.prepareStatement("update mu set
MKAPASITASB3=? where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
}
}
}
conn.commit();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
109
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan banyak pada variabel kapasitas BBM. Data
dari database akan diolah sesuai dengan fungsi keanggotaan banyak pada
varibel kapasitas BBM.
5.1.13. Implementasi Fungsi Keanggotaan Tahun Lama
public void MTahunLama() throws SQLException {
PreparedStatement st = null;
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,tahun from datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("tahun");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
double m = 0;
while (rs3.next()) {
tamp = rs3.getString("id");
System.out.println("Masuk");
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
111
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bTahunLamaA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN1) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bTahunLamaB()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN1) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (bTahunLamaB() - h);
m = m / (bTahunLamaB() - bTahunLamaA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN1) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
st2.executeUpdate();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
} else {
System.out.println("Data sudah ada");
if (h <= bTahunLamaA()) {
st4 = conn.prepareStatement("update mu set MTAHUN1='1'
where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (h >= bTahunLamaB()) {
st4 = conn.prepareStatement("update mu set MTAHUN1='0'
where id=?");
st4.setString(1, id);
st4.executeUpdate();
} else if (tamp.equals(id)) {
m = (bTahunLamaB() - h);
m = m / (bTahunLamaB() - bTahunLamaA());
st4 = conn.prepareStatement("update mu set MTAHUN1=?
where id=?");
st4.setDouble(1, m);
st4.setString(2, id);
st4.executeUpdate();
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan lama pada variabel tahun. Data dari database
akan diolah sesuai dengan fungsi keanggotaan lama pada varibel tahun.
5.1.14. Implementasi Fungsi Keanggotaan Tahun Baru
public void MTahunBaru() throws SQLException {
PreparedStatement st = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
PreparedStatement st2 = null;
PreparedStatement st3 = null;
PreparedStatement st4 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
ResultSet rs4 = null;
try {
conn.setAutoCommit(false);
st = conn.prepareStatement("select id,tahun from datamobil");
rs = st.executeQuery();
String id = "";
while (rs.next()) {
id = rs.getString("id");
int h = rs.getInt("tahun");
String tamp = "";
st3 = conn.prepareStatement("Select id from mu where id='" + id +
"'");
rs3 = st3.executeQuery();
double m = 0;
while (rs3.next()) {
tamp = rs3.getString("id");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
System.out.println("Masuk");
}
if (tamp.equals("")) {
System.out.println(id);
System.out.println(h);
if (h <= bTahunBaruA()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN2) VALUES (?, '0')");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bTahunBaruB()) {
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN2) VALUES (?, '1')");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bTahunBaruA());
m = m / (bTahunBaruB() - bTahunBaruA());
st2 = conn.prepareStatement("INSERT INTO MU(ID,
MTAHUN2) VALUES (?, ?)");
st2.setString(1, id);
st2.setDouble(2, m);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
st2.executeUpdate();
}
} else {
System.out.println("Data sudah ada");
if (h <= bTahunBaruA()) {
st2 = conn.prepareStatement("update mu set MTAHUN2='0'
where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else if (h >= bTahunBaruB()) {
st2 = conn.prepareStatement("update mu set MTAHUN2='1'
where id=?");
st2.setString(1, id);
st2.executeUpdate();
} else {
m = (h - bTahunBaruA());
m = m / (bTahunBaruB() - bTahunBaruA());
st2 = conn.prepareStatement("update mu set MTAHUN2=?
where id=?");
st2.setDouble(1, m);
st2.setString(2, id);
st2.executeUpdate();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
}
}
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw ex;
} finally {
try {
conn.setAutoCommit(true);
if (st != null) {
st.close();
}
} catch (SQLException ex) {
throw ex;
}
}
}
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk
fungsi keanggotaan himpunan baru pada variabel tahun. Data dari database
akan diolah sesuai dengan fungsi keanggotaan baru pada varibel tahun.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
5.1.15. Implementasi Perhitungan Hasil Query Satu Kriteria
public List<Mu> lihatHasil1(String kriteria1,String n1) throws SQLException {
PreparedStatement st = null;
ResultSet rs = null;
PreparedStatement st2 = null;
ResultSet rs2 = null;
try {
conn.setAutoCommit(false);
String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu
m"
+ " where d.id=m.id and m." + kriteria1 + "> 0 ";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
List<Mu> m = new ArrayList<Mu>();
while (rs.next()) {
Mu mu = new Mu();
mu.setNama(rs.getString("nama"));
mu.setHarga(Double.parseDouble(rs.getString("harga")));
String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + " from
mu"
+ " where id='" + rs.getString("id") + "'";
System.out.println(rs.getString("id"));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
119
st2 = conn.prepareStatement(sql2);
rs2 = st2.executeQuery();
double i = 0;
while (rs2.next()) {
for (int j = 1; j <= 1; j++) {
i = Double.parseDouble(rs2.getString(j));
}
}
mu.setSum(i);
if (i != 0) {
m.add(mu);
} else {
}
}
Collections.sort(m, new Comparator<Mu>() {
@Override
public int compare(Mu m1, Mu m2) {
return Double.compare(m2.getSum(), m1.getSum());
}
});
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
120
conn.commit();
return m;
} catch (SQLException exception) {
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
Listing program di atas digunakan untuk menghitung fire strength sesuai
dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan
cara mengambil derajat keanggotaan dari database kemudian setiap derajat
keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan
aturan atau operator yang diinputkan, misalnya operator and, or, atau not.
Listing program di atas hanya untuk query dengan satu kriteria saja.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
5.1.16. Implementasi Perhitungan Hasil Query Dua Kriteria
public List<Mu> lihatHasil2(String kriteria1, String kriteria2, String
operator1,String n1,String n2) throws SQLException {
PreparedStatement st = null;
ResultSet rs = null;
PreparedStatement st2 = null;
ResultSet rs2 = null;
try {
conn.setAutoCommit(false);
String sql = "select distinct d.id,d.nama,d.harga from datamobil
d, mu m"
+ " where d.id=m.id and m." + kriteria1 + ">= 0 " +
operator1 + " m." + kriteria2 + ">= 0 ";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
List<Mu> m = new ArrayList<Mu>();
while (rs.next()) {
Mu mu = new Mu();
mu.setNama(rs.getString("nama"));
mu.setHarga(Double.parseDouble(rs.getString("harga")));
String sql2 = "select "+n1+""+kriteria1+" " + kriteria1 +
","+n2+"" + kriteria2 + " " + kriteria2 + " from mu"
+ " where id='" + rs.getString("id") + "'";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
System.out.println(rs.getString("id"));
st2 = conn.prepareStatement(sql2);
rs2 = st2.executeQuery();
double i = 0;
while (rs2.next()) {
if (operator1.equals("AND")) {
i = 1;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("OR")) {
i = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
123
}
mu.setSum(i);
if (i != 0) {
m.add(mu);
} else {
}
}
Collections.sort(m, new Comparator<Mu>() {
@Override
public int compare(Mu m1, Mu m2) {
return Double.compare(m2.getSum(), m1.getSum());
}
});
conn.commit();
return m;
} catch (SQLException exception) {
throw exception;
} finally {
try {
conn.setAutoCommit(true);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
124
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
Listing program di atas digunakan untuk menghitung fire strength sesuai
dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan
cara mengambil derajat keanggotaan dari database kemudian setiap derajat
keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan
aturan atau operator yang diinputkan, misalnya operator and, or, atau not.
Listing program di atas hanya untuk query dengan dua kriteria saja.
5.1.17. Implementasi Perhitungan Hasil Query Tiga Kriteria
public List<Mu> lihatHasil3(String kriteria1, String kriteria2, String kriteria3,
String operator1, String operator2,String n1, String n2,String n3) throws
SQLException {
PreparedStatement st = null;
ResultSet rs = null;
PreparedStatement st2 = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
125
ResultSet rs2 = null;
try {
conn.setAutoCommit(false);
String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu
m"
+ " where d.id=m.id and (m." + kriteria1 + "> 0 " + operator1 + "
m." + kriteria2 + "> 0)"
+ " " + operator2 + " m." + kriteria3 + " > 0";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
List<Mu> m = new ArrayList<Mu>();
while (rs.next()) {
Mu mu = new Mu();
mu.setNama(rs.getString("nama"));
mu.setHarga(Double.parseDouble(rs.getString("harga")));
String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + ","
+ " "+n2+"" + kriteria2 + " " + kriteria2 + ","
+ " "+n3+"" + kriteria3 + " " + kriteria3 + " from mu"
+ " where id='" + rs.getString("id") + "'";
System.out.println(rs.getString("id"));
st2 = conn.prepareStatement(sql2);
rs2 = st2.executeQuery();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
126
double i = 0;
while (rs2.next()) {
if (operator1.equals("AND") && operator2.equals("AND")) {
i = 1;
for (int j = 1; j <= 3; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("OR") && operator2.equals("OR")) {
i = 0;
for (int j = 1; j <= 3; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("AND") && operator2.equals("OR")) {
i = 1;
for (int j = 1; j <= 2; j++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
127
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
if (i < Double.parseDouble(rs2.getString(3))) {
i = Double.parseDouble(rs2.getString(3));
}
}
if (operator1.equals("OR") && operator2.equals("AND")) {
i = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
if (i > Double.parseDouble(rs2.getString(3))) {
i = Double.parseDouble(rs2.getString(3));
}
}
}
mu.setSum(i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
128
if (i != 0) {
m.add(mu);
} else {
}
}
Collections.sort(m, new Comparator<Mu>() {
@Override
public int compare(Mu m1, Mu m2) {
return Double.compare(m2.getSum(), m1.getSum());
}
});
conn.commit();
return m;
} catch (SQLException exception) {
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (rs != null) {
rs.close();
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
129
if (st != null) {
st.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
Listing program di atas digunakan untuk menghitung fire strength sesuai
dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan
cara mengambil derajat keanggotaan dari database kemudian setiap derajat
keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan
aturan atau operator yang diinputkan, misalnya operator and, or, atau not.
Listing program di atas hanya untuk query dengan tiga kriteria saja.
5.1.18. Implementasi Perhitungan Hasil Query Empat Kriteria
public List<Mu> lihatHasil4(String kriteria1, String kriteria2, String kriteria3,
String kriteria4, String operator1, String operator2, String operator3,String
n1,String n2, String n3,String n4) throws SQLException {
PreparedStatement st = null;
ResultSet rs = null;
PreparedStatement st2 = null;
ResultSet rs2 = null;
try {
conn.setAutoCommit(false);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
130
String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu
m"
+ " where d.id=m.id and ( m." + kriteria1 + "> 0 " + operator1 + "
m." + kriteria2 + "> 0 )"
+ " " + operator2 + " ( m." + kriteria3 + " > 0 " + operator3 + " " +
kriteria4 + " > 0 )";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
List<Mu> m = new ArrayList<Mu>();
while (rs.next()) {
Mu mu = new Mu();
mu.setNama(rs.getString("nama"));
mu.setHarga(Double.parseDouble(rs.getString("harga")));
String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + ","
+ " "+n2+"" + kriteria2 + " " + kriteria2 + ", "
+ " "+n3+"" + kriteria3 + " " + kriteria3 + ","
+ " "+n4+"" + kriteria4 + " " + kriteria4 + " from mu"
+ " where id='" + rs.getString("id") + "'";
System.out.println(rs.getString("id"));
st2 = conn.prepareStatement(sql2);
rs2 = st2.executeQuery();
double i = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
131
double x = 0;
while (rs2.next()) {
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("AND")) {
i = 1;
for (int j = 1; j <= 4; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("OR")) {
i = 0;
for (int j = 1; j <= 4; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("OR")) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
132
i = 1;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
}
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("OR")) {
i = 1;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
133
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("OR")) {
i = 0;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
134
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("AND")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
135
if (i > x) {
i = x;
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("AND")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
136
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("AND")) {
i = 1;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
}
}
mu.setSum(i);
if (i != 0) {
m.add(mu);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
137
} else {
}
}
Collections.sort(m, new Comparator<Mu>() {
@Override
public int compare(Mu m1, Mu m2) {
return Double.compare(m2.getSum(), m1.getSum());
}
});
conn.commit();
return m;
} catch (SQLException exception) {
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
138
}
} catch (SQLException exception) {
throw exception;
}
}
}
Listing program di atas digunakan untuk menghitung fire strength sesuai
dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan
cara mengambil derajat keanggotaan dari database kemudian setiap derajat
keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan
aturan atau operator yang diinputkan, misalnya operator and, or, atau not.
Listing program di atas hanya untuk query dengan empat kriteria saja.
5.1.19. Implementasi Perhitungan Hasil Query Lima Kriteria
public List<Mu> lihatHasil5(String kriteria1, String kriteria2, String kriteria3,
String kriteria4, String kriteria5, String operator1, String operator2, String
operator3, String operator4,String n1,String n2, String n3,String n4, String n5)
throws SQLException {
PreparedStatement st = null;
ResultSet rs = null;
PreparedStatement st2 = null;
ResultSet rs2 = null;
try {
conn.setAutoCommit(false);
String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu
m"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
139
+ " where d.id=m.id and ((( m." + kriteria1 + "> 0 " + operator1 + "
m." + kriteria2 + "> 0 )"
+ " " + operator2 + " ( m." + kriteria3 + " > 0 " + operator3 + " " +
kriteria4 + " > 0 )) " + operator4 + " m." + kriteria5 + " > 0 )";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
List<Mu> m = new ArrayList<Mu>();
while (rs.next()) {
Mu mu = new Mu();
mu.setNama(rs.getString("nama"));
mu.setHarga(Double.parseDouble(rs.getString("harga")));
String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + ","
+ " "+n2+"" + kriteria2 + " " + kriteria2 + ", "
+ " "+n3+"" + kriteria3 + " " + kriteria3 + ","
+ " "+n4+"" + kriteria4 + " " + kriteria4 + ","
+ " "+n5+""+kriteria5+" "+kriteria5+" from mu"
+ " where id='" + rs.getString("id") + "'";
System.out.println(rs.getString("id"));
st2 = conn.prepareStatement(sql2);
rs2 = st2.executeQuery();
double i = 0;
double x = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
140
while (rs2.next()) {
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("AND") && operator4.equals("AND")) {
i = 1;
for (int j = 1; j <= 5; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("OR") && operator4.equals("OR")) {
i = 0;
for (int j = 1; j <= 5; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
}
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("OR") && operator4.equals("OR")) {
i = 1;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
141
x = 0;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("OR") && operator4.equals("AND")) {
i = 1;
x = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
142
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("OR") && operator4.equals("OR")) {
i = 1;
x = 0;
for (int j = 1; j <= 2; j++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
143
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("OR") && operator4.equals("AND")) {
i = 1;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
144
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("OR") && operator4.equals("OR")) {
i = 0;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
145
}
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("OR") && operator4.equals("AND")) {
i = 0;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
146
}
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("OR") && operator4.equals("AND")) {
i = 0;
x = 0;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
147
for (int j = 3; j <= 4; j++) {
if (x < Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("AND") && operator4.equals("OR")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
148
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("AND") &&
operator3.equals("AND") && operator4.equals("AND")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
149
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("AND") && operator4.equals("OR")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
150
}
}
if (i < x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("OR") && operator2.equals("OR") &&
operator3.equals("AND") && operator4.equals("AND")) {
i = 0;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i < Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
151
}
if (i < x) {
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("AND") && operator4.equals("OR")) {
i = 1;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
152
if (i < x) {
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("AND") &&
operator3.equals("AND") && operator4.equals("OR")) {
i = 1;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i > x) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
153
i = x;
}
if (i < Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
if (operator1.equals("AND") && operator2.equals("OR") &&
operator3.equals("AND") && operator4.equals("AND")) {
i = 1;
x = 1;
for (int j = 1; j <= 2; j++) {
if (i > Double.parseDouble(rs2.getString(j))) {
i = Double.parseDouble(rs2.getString(j));
}
}
for (int j = 3; j <= 4; j++) {
if (x > Double.parseDouble(rs2.getString(j))) {
x = Double.parseDouble(rs2.getString(j));
}
}
if (i < x) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
154
i = x;
}
if (i > Double.parseDouble(rs2.getString(5))) {
i = Double.parseDouble(rs2.getString(5));
}
}
}
mu.setSum(i);
if (i != 0) {
m.add(mu);
} else {
}
}
Collections.sort(m, new Comparator<Mu>() {
@Override
public int compare(Mu m1, Mu m2) {
return Double.compare(m2.getSum(), m1.getSum());
}
});
conn.commit();
return m;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
155
} catch (SQLException exception) {
throw exception;
} finally {
try {
conn.setAutoCommit(true);
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
} catch (SQLException exception) {
throw exception;
}
}
}
Listing program di atas digunakan untuk menghitung fire strength sesuai
dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan
cara mengambil derajat keanggotaan dari database kemudian setiap derajat
keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan
aturan atau operator yang diinputkan, misalnya operator and, or, atau not.
Listing program di atas hanya untuk query dengan lima kriteria saja.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
156
5.2. Hasil Implementasi
5.2.1. Form Utama
Form utama pada aplikasi ini dibagi menjadi dua, yaitu form utama untuk
admin dan form utama untuk pengguna. Untuk implementasinya bisa
dilihat pada gambar di bawah ini.
5.2.1.1. Form Utama Admin
Gambar 5. 1. Form Utama Untuk Admin
Pada form utama untuk admin ini terdapat empat menu, yaitu home,
pencarian, data mobil, dan batas himpunan. Menu home untuk
menampilkan halaman awal seperti yang terlihat pada gambar di atas.
Menu pencarian untuk mencari mobil berdasarkan kriteria. Menu data
mobil untuk melihat data mobil yang tersimpan pada sistem. Dan yang
terakhir menu batas himpunan untuk melihat batas himpunan yang
menjadi acuan untuk proses perhitungan derajat keanggotaan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
157
5.2.1.2. Form Utama Pengguna
Gambar 5. 2. Form Utama Untuk Pengguna
Pada form utama untuk pengguna ini terdapat tiga menu, yaitu home,
pencarian, dan data mobil. Fungsi untuk setiap menu hampir sama
seperti fungsi menu yang ada pada form utama untuk admin.
5.2.2. Form Data Mobil
Form data mobil pada aplikasi ini dibagi menjadi dua, yaitu form data
mobil untuk admin dan form data mobil untuk pengguna. Untuk
implementasinya bisa dilihat pada gambar di bawah ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
158
5.2.2.1. Form Data Mobil Admin
Gambar 5. 3. Form Data Mobil Admin
Pada form data mobil admin ini berfungsi untuk melihat,
menambahkan, menghapus, dan mengubah data mobil ke dalam
sistem yang dilakukan oleh admin. Untuk menambahkan data admin
memasukan data mobil melalui field-field yang terdapat pada form
data mobil. Pada form tersebut juga terdapat tombol clear dam simpan
yang aktif. Tombol clear berfungsi untuk menghapus text yang
terdapat pada field-field di form data mobil. Sedangkan tombol
simpan berfungsi untuk menyimpan data yang ada di field-field ke
dalam database. Pada form data mobil juga terdapat dua tombol ubah
dan hapus yang tidak aktif. Untuk mengaktifkan tombol tersebut
admin harus mengarahkan kursor pada salah satu data mobil yang ada
di tabel kemudian diklik kanan pada mouse, maka data muncul pad
field-field di form tersebut dan kedua tombol akan aktif. Tombol
hapus untuk menghapus data yang sudah dipilih dan tombol ubah
untuk menyimpan data yang sudah di ubah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
159
5.2.2.2. Form Data Mobil Pengguna
Gambar 5. 4. Form Data Mobil Pengguna
Pada form data mobil pengguna ini berfungsi untuk melihat data mobil
saja. Berbeda dengan admin yang bisa mengubah, menambah, dan
menghapus data mobil.
5.2.3. Form Pencarian
Form pencarian pada aplikasi ini memiliki fungsi yang sama untuk admin
dan pengguna. Pada form pencarian ini terdapat dua submenu, yaitu fuzzy
dan tegas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
160
5.2.3.1. Form Pencarian Tab Fuzzy
Gambar 5. 5. Form Pencarian Tab Fuzzy
Gambar di atas menunjukan tampilan pada submenu fuzzy. Pada
submenu fuzzy ini terdapat lima kriteria yang bisa dipilih oleh
pengguna. Untuk memilih kriteria sudah terdapat pilihan yang tersedia
pada combo box pilih. Kemudian pengguna bisa juga memilih aturan
atau operator seperti not, and, dan or. Tombol cari pada form ini
berfungsi untuk mencari mobil sesuai dengan kriteria yang telah
dimasukan dan hasilnya akan muncul pada tabel di bawah. Hasil
berupa sebuah rekomendasi mobil yang di inginkan sesuai dengan
kriteria yang sudah diproses sesuai aturan fuzzy database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
161
5.2.3.2. Form Pencarian Tab Tegas
Gambar 5. 6. Form Pencarian Tab Tegas
Gambar di atas menunjukan tampilan pada submenu tegas. Pada
submenu tegas ini terdapat lima kriteria yang bisa dipilih oleh
pengguna sama seperti pada form pencarian submenu fuzzy. Tetapi
pada submenu tegas ini pengguna harus memasukan nilai nominal
untuk setiap kriteria yang dipilih. Tombol cari pada submenu ini
berfungsi sama seperti pada submenu fuzzy, tetapi data kriteria ini
dioleh sesuai dengan aturan database klasik tidak menggunkan aturan
fuzzy dan hasilnya akan ditampilkan pada tabel di bawah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
162
5.2.4. Form Batas Himpunan
Gambar 5. 7. Form Batas Himpunan
Form batas himpunan ini hanya bisa diakses oleh admin saja karena pada
form ini berfungsi untuk melihat, mengubah, menambah, dan menghapus
batas himpunan untuk proses perhitungan fuzzy.
5.3. Pengujian
Pada tahap ini dilakukan perbandingan hasil dan waktu pencarian query
antara fuzzy database dan basis data standard (tegas).
Tabel 5. 1. Tabel Hasil Fuzzy Database
Variabel
Kondisi
Fuzzy hasil waktu
harga murah 22 0,327
sedang 7 0,265
mahal 8 0,265
ukuran kecil 18 0,334
normal 32 0,425
besar 16 0,398
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
163
kapasitas BBM sedikit 19 0,31
sedang 23 0,331
banyak 15 0,354
kapasitas
penumpang sedikit 8 0,349
sedang 16 0,316
banyak 26 0,375
tahun lama 29 0,312
baru 7 0,304
Tabel 5. 2. Tabel Hasil Basis Data Standard
Variabel Kondisi Tegas hasil waktu
harga harga<=300000 19 0,234
harga>300000 and harga<500000 7 0,265
harga>=500000 8 0,266
ukuran ukuran<=7600000000 0 0,352
ukuran>7600000000 and
ukuran<17100000000 32 0,293
ukuran>17100000000 2 0,311
kapasitas BBM kBBM<=35 3 0,289
kBBM>35 and kBBM<65 23 0,316
kBBM>65 8 0,324
kapasitas
penumpang kPenumpang<=4 0 0,312
kPenumpang>4 and kPenumpang<8 16 0,308
kPenumpang>=8 34 0,296
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
164
tahun tahun<=2012 27 0,301
tahun>=2014 5 0,303
Tabel 5. 3. Tabel Hasil Fuzzy Database dengan Dua Kriteria
Variabel
Kondisi
Fuzzy hasil waktu
harga murah
7 0,434
and
kapasitas
penumpang sedikit
Tabel 5. 4. Tabel Hasil Basis Data Standard dengan Dua Kriteria
Variabel Kondisi Tegas hasil waktu
harga harga<=300000
0 0,33
and
kapasitas
penumpang kPenumpang<=4
Gambar 5. 8. Ukuran Setiap Tabel Penyimpanan
Jika diperhatikan dari hasil pengujian, waktu untuk melakukan pencaria
data sesuai kriteria dengan menggunakan metode fuzzy database lebih
lama daripada database standart. karena pada sistem ini hasil perhitungan
derajat keanggotaan untuk setiap variabel disimpan pada sebuah tabel
sehingga perlu digunakan operasi join untuk pencarian sehingga waktu
yang dibutuhkan untuk pencarian data menjadi lebih lama. Selain itu,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
165
karena penerapan fuzzy database pada sistem penyewaan mobil ini
menggunakan 3 tabel, yaitu tabel datamobil dengan ukuran 197 byte, tabel
batashimpunan dengan ukuran 121 byte, dan tabel mu dengan ukuran 512
byte. Sedangkan pada penerapan basis data standart untuk penyimpanan
data menggunakan 2 tabel, yaitu tabel datamobil dengan ukuran 197 dan
tabel batashimpunan dengan ukuran 121 byte. Jika dibandingkan total
space yang dibutuhkan untuk penyimpanan pada sistem yang menerapkan
fuzzy database totalnya 830 byte dan pada basis data standart total space
untuk penyimpanan adalah 318 byte. Jadi penerapan fuzzy database pada
sistem penyewaan mobil ini jika dilihat dari sudut pandang kapasitas
penyimpanan data lebih banyak daripada penerapan basis data standart.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
166
BAB VI
PENUTUP
6.1. Kesimpulan
Kesimpulan yang diperoleh dari penelitian tentang penerapan fuzzy
database model tahani dalam sistem pendukung keputusan pemilihan
mobil sewa ini, yakni sebagai berikut:
1) Sistem pendukung keputusan pemilihan mobil sewa ini mampu
memberikan rekomendasi sesuai dengan kriteria yang dimasukan oleh
penggunanya.
2) Penerapan fuzzy database pada sistem ini kurang efektif daripada
menggunakan basis data standard (tegas). Karena jika berdasarkan
indikator penggunaan tabel untuk menyimpan hasil derajat
keanggotaan ini memboroskan tempat penyimpanan. Selain itu
penggunaan tabel untuk menyimpan hasil derajat keanggotaan juga
membuat akses pencarian data menjadi lebih lama.
6.2. Saran
Adapun beberapa saran yang penulis berikan untuk pengembangan sistem
ini, antara lain sebagai berikut.
1) Variabel yang digunakan pada sistem ini hanya terbatas pada variabel
harga, ukuran, kapasitas penumpang, kapasitas BBM, dan tahun.
Dalam pengembangannya, sistem ini diharapkan dapat menambahkan
variabel baru, menghapus, dan mengubah variabel yang sudah ada.
2) Dalam pengembangannya, sistem ini diharapkan dapat diakses secara
global melalui sebuah web (web base).
3) Dalam pengembangannya, sistem ini diharapkan untuk tidak
menyimpan hasil derajat keanggotaan setiap variabel kedalam tabel.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
167
DAFTAR PUSTAKA
Efendi R, Ernawati, Hidayati R. (2014). Aplikasi Fuzzy Database Model
Tahani Dalam Memberikan Rekomendasi Pembelin Rumah
Berbasis Web. Jurnal, F. Teknik Universitas Bengkulu.
Kusumadewi, S. dan Purnomo, H. (2004) Aplikasi Logika Fuzzy untuk
Pendukung Keputusam. Yogyakarta: Penerbit Graha Ilmu.
Puspitaning, Verania. (2009) Program Bantu Pengaturan Lampu Lalu
Lintas Menggunakan Logika Fuzzy. Skripsi, F. Teknik USD.
Yogyakarta.
Suryadi, Kadarsah. (1989) Sistem Pendukung Keputusan Suatu Wacana
Struktural Idealisasi dan implementasi konsep Pengambilan
Keputusan. Jakarta: PT. Remaja Rosdakarya.
Wahyudi, R. Pengertian Query.
http://www.academia.edu/12086993/Pengertian_Query/ [Accessed
4 December 2015].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
top related