UNIVERSITAS MUHAMMADIYAH YOGYAKARTA 2009thesis.umy.ac.id/datapublik/t1459.pdf · 2014-02-20 · 14....

140
1 TUGAS AKHIR IMPLEMENTASI FUZZY QUERY PADA DATABASE PEREKOMENDASIAN PENERIMAAN PEGAWAI Disusun Oleh: YAHYA ERDIPASA 2001 012 0056 JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH YOGYAKARTA 2009

Transcript of UNIVERSITAS MUHAMMADIYAH YOGYAKARTA 2009thesis.umy.ac.id/datapublik/t1459.pdf · 2014-02-20 · 14....

1

TUGAS AKHIR

IMPLEMENTASI FUZZY QUERY PADA DATABASE

PEREKOMENDASIAN PENERIMAAN PEGAWAI

Disusun Oleh:

YAHYA ERDIPASA

2001 012 0056

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH YOGYAKARTA

2009

2

TUGAS AKHIR

IMPLEMENTASI FUZZY QUERY PADA DATABASE

PEREKOMENDASIAN PENERIMAAN PEGAWAI

Diajukan sebagai salah satu syarat mendapatkan gelar Sarjana Teknik

Program S-1 pada Fakultas Teknik Jurusan Teknik Elektro

Universitas Muhammadiyah Yogyakarta.

Disusun oleh :

YAHYA ERDIPASA

2001 012 0056

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH YOGYAKARTA

2009

3

HALAMAN PENGESAHAN I

TUGAS AKHIR

IMPLEMENTASI FUZZY QUERY PADA DATABASE

PEREKOMENDASIAN PENERIMAAN PEGAWAI

Disusun oleh :

YAHYA ERDIPASA

2001 012 0056

Telah diperiksa dan disetujui :

Dosen Pembimbing Utama Dosen Pembimbing Muda

(Ir. Tony K. Hariadi, M.T.) (Rahmat A. Al Hasibi, S.T.)

4

HALAMAN PENGESAHAN II

IMPLEMENTASI FUZZY QUERY PADA DATABASE

PEREKOMENDASIAN PENERIMAAN PEGAWAI

Skripsi ini telah dipertahankan dan disahkan di depan dewan penguji

pada tanggal 05 Januari 2009

Dosen Penguji : Ir. Tony K. Hariadi, M.T. (...........................................) (Ketua Penguji / Pembimbing Utama) tanggal :

Rahmat A. Al Hasibi, S.T. (...........................................) (Penguji Anggota / Pembimbing Muda) tanggal :

Haris Setyawan, S.T. (...........................................) (Penguji Anggota) tanggal :

Helman Muhammad, S.T., M.T. (...........................................) (Penguji Anggota) tanggal :

Menyetujui,

Ketua Jurusan Teknik Elektro

Universitas Muhammadiyah Yogyakarta

( Ir. Slamet Suripto )

5

HALAMAN PERNYATAAN

Semua yang tertulis dalam naskah skripsi ini adalah benar-benar

merupakan hasil karya saya sendiri dan atau bukan menjiplak hasil karya orang

lain, kecuali yang secara tertulis dijadikan acuan dalam penulisan naskah ini dan

disebutkan dalam daftar pustaka. Apabila dikemudian hari terbukti pernyataan ini

tidak benar, maka saya siap menerima sangsi dari Universitas Muhammadiyah

Yogyakarta sesuai dengan peraturan yang berlaku.

Yogyakarta, 17 Januari 2009

Yang Menyatakan

Yahya Erdipasa

6

HALAMAN PERSEMBAHAN

Kupersembahkan Skripsi ini untuk

• Allah SWT yang telah memberikan keimanan, keikhlasan, kesabaran serta telah

membukakan pintu ilmu pengetahuan kepada hamba-Nya.

• Nabi Muhammad SAW... terima kasih untukmu ya Rasulullah, Manusia terbaik

yang pernah ada di Dunia, pembawa Cahaya dan penghilang Kegelapan bagi seluruh

umat manusia. Maafkanlah ya Rasulullah jika belum bisa menjalankan sunnahMu

sepenuhnya.

• Orang tuaku, adikku terima kasih atas Kasih sayang yang diberikan, kesabaran dan

doa kalian membuatku bisa bersyukur. Aku bangga dan bersyukur bisa HIDUP

diantara kalian.

• Siang dan Malam. Terima kasih telah setia menemaniku selama 24 tahun.

• Seluruh-saudara seimanku... Teruslah berjuang untuk ISLAM karena mundur adalah

sebuah Penghianatan

• Almamaterku Jurusan Teknik Elektro, Fakultas Teknik Universitas Muhammadiyah

Yogyakarta

• Kepada orang-orang yang dengan ikhlas memberikan kasih sayang dan kebaikannya

kepada ku selama ini.

Semoga menjadi kenangan yang indah dan tak terlupakan.

Amien Ya Rabbal ‘Aalamien.........

7

HALAMAN MOTTO

Setiap Manusia dilahirkan orisinil (dalam keadaan fitrah),Setiap Manusia dilahirkan orisinil (dalam keadaan fitrah),Setiap Manusia dilahirkan orisinil (dalam keadaan fitrah),Setiap Manusia dilahirkan orisinil (dalam keadaan fitrah), jangjangjangjangan mati sebagai salinanan mati sebagai salinanan mati sebagai salinanan mati sebagai salinan (stereotype)(stereotype)(stereotype)(stereotype)!!!!

(Adaptasi dari John L. Mason)(Adaptasi dari John L. Mason)(Adaptasi dari John L. Mason)(Adaptasi dari John L. Mason)

8

KATA PENGANTAR

AssalaAssalaAssalaAssalaaaaamu’alaikum Wr. Wb.mu’alaikum Wr. Wb.mu’alaikum Wr. Wb.mu’alaikum Wr. Wb.

Alhamdulillah, puji syukur penulis panjatkan kehadirat Allah SWT yang

telah memberikan kenikmatan berupa nikmat hidup, nikmat iman, nikmat Islam,

nikmat akal, serta nikmat-nikmat lainnya yang tak pernah terbatas kepada penulis

sehingga penulis dapat menyelesaikan laporan skripsi berjudul “Implementasi

Fuzzy Query Pada Database Perekomendasian Penerimaan Pegawai” ini dengan

baik.

Laporan Skripsi ini diselesaikan guna memenuhi persyaratan mendapatkan

gelar Strata 1 (S1) yang telah ditetapkan oleh Fakultas Teknik Elektro Universitas

Muhammadiyah Yogyakarta.

Penulis menyadari terselesaikannya laporan ini tidak terlepas dari

dukungan, bantuan, bimbingan, serta saran-saran yang berharga dari semua pihak.

Oleh karena itu dengan tulus hati penulis ingin mengucapkan terimakasih kepada :

1. Ir. Tony K. Hariadi, M.T. selaku Dekan Fakultas Teknik Universitas

Muhammadiyah Yogyakarta dan selaku Dosen Pembimbing Utama yang

telah memberikan kemampuan terbaiknya dalam membimbing dan

mengarahkan selama pelaksanakan penelitian sampai penulis menyelesaikan

skripsi ini.

9

2. Ir. Slamet Suripto selaku Ketua Jurusan Teknik Elektro Universitas

Muhammadiyah Yogyakarta.

3. Slamet Riyadi, S.T. selaku Dosen Pembimbing Akademik yang telah

membantu penulis dalam merencanakan target studi perkuliahan.

4. Rahmat A. Al Hasibi, S.T. selaku Dosen Pembimbing Muda yang telah

memberikan kemampuan terbaiknya dalam membimbing dan mengarahkan

selama pelaksanakan penelitian sampai penulis menyelesaikan skripsi ini.

5. Haris Setyawan, S.T. dan Helman Muhammad, S.T., M.T. selaku dosen

penguji, terimakasih atas kritik, saran serta spirit yang telah diberikan saat

pendadaran.

6. Semua Dosen Jurusan Teknik Elektro Universitas Muhammadiyah

Yogyakarta yang telah menjadi tempat bertukar fikiran dan informasi

banyak hal tentang dunia keelektroan.

7. Karyawan Tata Usaha (TU) Jurusan Teknik Elektro Universitas

Muhammadiyah Yogyakarta yang telah membantu kelancaran administrasi.

8. Seluruh staf biro, karyawan perpustakaan, dan bank rujukan Universitas

Muhammadiyah Yogyakarta.

9. Kedua orang tuaku terutama untuk alm. papah yang telah mengorbankan

segalanya demi anakmu tercinta. Maafkan bila anakmu ini belum bisa

berbakti sepenuhnya. Mamah maafin anakmu ya yang sering membuat

mamah kecewa baik secara sengaja maupun tidak.

10

10. Adikku Irra, tetap semangat dan rajin belajar, mudah-mudahan apa yang

kamu cita-citakan bisa tercapai. Amin. Kuliahnya jangan lama-lama ya?

Jangan tiru Abangmu ini.

11. Keluarga baruku pa Muksidi beserta anak-anaknya maafkan klo dirasa sikap

saya selama ini di nilai kurang akrab dengan kalian, bukannya apa-apa,

soalnya pulang ke Cerbon aja klo pas lebaran tok.

12. Sahabat-sahabatku Elliana, S.PdI. kapan baby mu lahir? Dah berapa bulan

usia kandunganmu sekarang? Topik dan Abie buruan susul gue, masa

pengen jadi mahasiswa terus-terusan, dr. Efi selamet ya sekarang dah jadi

dokter beneran, tetaplah berpihak kepada rakyat kecil.

13. Teman-teman seperjuangan di Ikatan Mahasiswa Muhammadiyah Cabang

A. R. Fakhruddin periode 2004/2005, Immawan Fauzi SIP., Immawan

Nurdin S.H., Immawati Rita S.P., Immawan Hijrah, Immawan Tanto SIP,

Immawan Mujib S.E., Immawati Ning S.PdI., Immawan Heri, Immawan

Alwi SIP, Immawan Izal, Immawan Herman S.T., Immawati Ai S.PdI.,

kemana kalian semua, koq ‘ga da kabar ya?

14. Teman-teman seperjuangan di Korps Instruktur Ikatan Mahasiswa

Muhammadiyah Cabang A. R. Fakhruddin angkatan pertama makasih dah

mau memfasilitasi kami di setiap pelatihan, angkatan kedua yang dah sama-

sama berjuang guna kemajuan perkaderan IMM di cabang kita, angkatan

ketiga dan keempat maafin ya klo ada kesalahan dalam memfasilitasi

pelatihan kalian.

11

15. Teman-teman seperjuangan di Ikatan Mahasiswa Muhammadiyah

Kordinator Komisariat UMY periode 2003/2004 Immawan kang Iman SIP,

Immawan Kak Romi SIP, Immawati Iis S.E., Immawan Okta SIP.,

Immawan Saptio S.P., Immawati Erlia S.Kep. gimana klo kita nostalgia lagi

ke Bali kayanya enak nich.

16. Teman-teman seperjuangan di Ikatan Mahasiswa Muhammadiyah

Komisariat Fakultas Teknik UMY periode 2003/2003 Immawan Alzi dan

Febri kapan lulus dab! Dang ketuekan, Reno n Salman gimana

kabarmu?Ipul, S.T. makasih dah mau memuji skaligus mengkritik aku.

Makasih dah bersama-sama mengibarkan kembali panji IMM di Fakultas

Teknik. Semoga perjuangan kita semua mendapat balasan yang selayaknya

disisi Tuhan.

17. Immawan dan Immawati di seluruh Indonesia maafin klo saya pernah

berbuat salah baik yang sengaja maupun yang tidak dalam aktifitas

pertemuan kita.

18. Temen-temen seperjuangan di Keluarga Mahasiswa Teknik Eleketro

Universitas Muhammadiyah Yogyakarta periode 2002 - 2003. Dah pada jadi

S.T. semua blom, heheheheh......

19. Teman-teman seperjuangan di PKO Muhammadiyah makasih dah

menjadikan saya partner kerja yang baik bagi kalian.

12

20. Alm. Pak Yasir, Pa Bambang Wahyu, terima kasih atas sharing infonya

tentang kepemanduan training. Buat pak Sugeng terima kasih rumahnya dah

mo dijadiin basecamp instruktur.

21. Tio, Deka, Parman, Sobar S.Ei terima kasih atas pinjeman notebooknya, klo

ga ada kalian aku ga kan dapet bahan-bahan buat tugas akhir kayaknya.

22. Semua temen-temen elektro angkatan 2001 kelas A, B, dan paralel malam

juga 2002 ke atas. Lanjutkan perjuangan, semoga sukses menyertai kita

semua, Amin. Novriandi S.T. makasih atas masukan-masukannya selama

ini, Arif “The Bill” Marsudi terima kasih dah bantu2 nyiapin peralatan

pendadaran (mbok cepet pendadaran biar gentian aku yang nyiapin alat2

mu, piss). Muh. Yamin S.T. kapan mo lulus S2 klo betah di kampung

23. Kost Boyz ( Ibu Kost, Bapak Kost, Alvan “Ahmad” gimana TA mu, mbok

ya di garap jangan main zoo tycon ma CS mulu, Deka “Decca” ntar kmu

ngisi di acara wisudaku ya, Ferdi “Autis” klo nyanyi jangan keras-keras

donk soalnya suaramu kan pas-pasan, Wanto “Robusta” masa cuma bisa

nerbitin satu judul buku, piye jal, Yudis “Anugroz” jangan nge game aja

yang digedein ya, Tio gimana FM nya klo dah jago bilang ya?, Koko

katanya mo nyusul? Apa bareng alvan aja?) keep the spirit n jaga

kekompakan ... Thanks n Love u all.

24. Eks Kost Boyz (Feri, Adit Tea, Agung) jangan lupa sama kostan ya? Adit,

Ari, Mia tetaplah jadi wanita yang perkasa.

13

25. Temen-temen di Hyem Magazine, maafin klo beberapa minggu ini saya ga

bisa bantu ngereview, maklum lagi getol ngerjain TA.

26. Temen-temen Jarimulia, CD driver printerku balikin dong, kan acaranya dah

selesai. Oh ya, sekalian aku minta dokumentasi acarnya donk.

27. Innanaz S.T. makasih ya dah mo jadi temen sharing tentang delphi, Wawan

“Cilacap” S.T. gimana dah dapet kerja blom? Klo blom jangan nge game aja

bro.

28. Semua pihak yang telah membantu baik secara langsung maupun tidak

lansung dalam penulisan laporan ini.

Semoga amal dan kebaikan yang telah diberikan kepada penulis mendapat

balasan yang setimpal, dan semoga laporan ini dapat bermanfaat bagi kita semua,

Amin.

Yogyakarta, 17 Januari 2009

PENULIS

14

DAFTAR ISI

HALAMAN PEGESAHAN I............................................................................ iii

HALAMAN PENGESAHAN II........................................................................ iv

HALAMAN PERNYATAAN........................................................................... v

HALAMAN PERSEMBAHAN........................................................................ vi

HALAMAN MOTTO........................................................................................ vii

KATA PENGENTAR........................................................................................ viii

DAFTAR ISI....................................................................................................... xiv

DAFTAR GAMBAR.......................................................................................... xvii

DAFTAR TABEL............................................................................................... xx

BAB I. PENDAHULUAN............................................................................ 1

A. Latar Belakang Masalah................................................................ 1

B. Rumusan Masalah......................................................................... 3

C. Tujuan........................................................................................... 3

D. Kontribusi...................................................................................... 4

BAB II. TINJAUAN PUSTAKA................................................................... 5

A. Logika Fuzzy................................................................................. 5

1. Pendahuluan............................................................................. 5

2. Perbedaan Himpunan Fuzzy Dengan Himpunan Pasti

(Crisp)...........................................................................................

7

3. Beberapa Hal yang Perlu Diketahui Dalam Sistem Fuzzy.......... 9

15

4. Fungsi Keanggotaan.................................................................... 11

5. Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy............. 19

B. Database........................................................................................... 20

1. Pengertian Database.................................................................. 20

2. Database Relasional.................................................................. 21

3. Structured Query Language (SQL)............................................. 22

C. Teknik untuk Mengimplementasikan Fuzziness ke Dalam

Database............................................................................................

26

1. Fuzzy Query Database............................................................... 26

2. Fuzzy Database.......................................................................... 30

BAB III. METODOLOGI............................................................................... 37

A. Prosedur Perancangan................................................................... 37

B. Analisa Kebutuhan........................................................................ 37

C. Spesifikasi..................................................................................... 39

D. Perancangan Database dan Sistem............................................... 40

1. Perancangan Database............................................................. 40

2. Perancangan Sistem.................................................................. 44

3. Proses Penghitungan Firestrength............................................ 51

4. Pembuatan Graphical User Interface (GUI)............................ 53

E. Verifikasi...................................................................................... 68

F. Validasi......................................................................................... 68

16

BAB IV. IMPLEMENTASI DAN PENGUJIAN........................................ 70

A. Perangkat Lunak................................................................................ 70

1. Implementasi Perangkat Lunak.................................................... 70

2. Analisa Penghitungan Fungsi Keanggotaan Fuzzy..................... 80

3. Analisa Penghitungan Firestrength.......................................... 88

4. Perbandingan Hasil Penghitungan Sistem Lama Dengan

Sistem Baru..............................................................................

91

BAB V. KESIMPULAN DAN DISKUSI...................................................... 95

A. Kesimpulan................................................................................... 95

B. Diskusi.......................................................................................... 95

DAFTAR PUSTAKA.........................................................................................

LAMPIRAN........................................................................................................

17

DAFTAR GAMBAR

Gambar 2.1 Himpunan Muda, Parobaya, dan Tua................................................ 7

Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur............................................. 8

Gambar 2.3 Representasi Linear Naik................................................................... 12

Gambar 2.4 Representasi Linear Turun................................................................. 13

Gambar 2.5 Representasi Kurva Segitiga............................................................... 13

Gambar 2.6 Representasi Kurva Trapesium............................................................ 14

Gambar 2.7 Representasi Kurva Bahu..................................................................... 15

Gambar 2.8 Karakteristik Fungsi Kurva S-Pertumbuhan...................................... 16

Gambar 2.9 Karakteristik Fungsi Kurva S-Penyusutan........................................... 17

Gambar 2.10 Karakteristik Fungsional Kurva π....................................................... 18

Gambar 2.11 Karakteristik Fungsional Kurva β....................................................... 18

Gambar 2.12 Karakteristik Fungsional Kurva Gauss............................................... 19

Gambar 2.13 Pengolahan Data Menjadi Informasi................................................... 21

Gambar 3.1 Prosedur Perancangan...................................................................... 37

Gambar 3.2 Perancangan Database..................................................................... 43

Gambar 3.3 Perancangan Sistem.......................................................................... 44

Gambar 3.4 Diagram Konteks Sistem.................................................................. 45

Gambar 3.5 Diagram Peninjauan......................................................................... 46

Gambar 3.6 Detail Diagram Level 1, Proses 2..................................................... 48

Gambar 3.7 Detail Diagram Level 1, Proses 3..................................................... 49

18

Gambar 3.8 Tampilan Menu Utama......................................................................... 54

Gambar 3.9 Tampilan dari Tab Data Pelamar.......................................................... 55

Gambar 3.10 Tampilan Frame Data Pelamar Tambah Data.................................... 56

Gambar 3.11 Tampilan Frame Data Pelamar Edit Data........................................... 57

Gambar 3.12 Tampilan Frame Data Pelamar Hapus Data....................................... 58

Gambar 3.13 Tampilan dari Tab Jenis Tes.............................................................. 59

Gambar 3.14 Tampilan Frame Tambah Jenis Tes................................................... 60

Gambar 3.15 Tampilan Frame Edit Jenis Tes.......................................................... 61

Gambar 3.16 Tampilan Frame Hapus Jenis Tes...................................................... 62

Gambar 3.17 Tampilan Frame Tambah Kriteria...................................................... 63

Gambar 3.18 Tampilan Frame Edit Kriteria............................................................. 64

Gambar 3.19 Tampilan Frame Hapus Kriteria......................................................... 65

Gambar 3.20 Tampilan Frame Ok Pada Tab Input Nilai......................................... 66

Gambar 3.21 Tampilan Frame Hasil Nilai............................................................... 67

Gambar 3.22 Tampilan Frame Seleksi Pelamar....................................................... 68

Gambar 4.1 Tabel Data Pelamar............................................................................... 70

Gambar 4.4 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Tes Kopetensi.................................................................................

71

Gambar 4.5 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Tes Wawancara..............................................................................

72

Gambar 4.6 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Tes Kremlin Cukup........................................................................

73

19

Gambar 4.7 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Tes Kremlin Baik...........................................................................

73

Gambar 4.8 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Tes Kremlin Topskor......................................................................

74

Gambar 4.9 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain

untuk Kriteria Magang...........................................................................................

75

Gambar 4.10 Tabel Input Nilai.............................................................................. 76

Gambar 4.13 Tabel Hasil....................................................................................... 77

Gambar 4.16 Frame Seleksi Pelamar.................................................................... 79

Gambar 4.17. Diagram Alir Cara Kerja Sistem..................................................... 80

Gambar 4.18 Hasil Seleksi Dengan Mengubah Kategori Kremlin Menjadi

Topskor...................................................................................................................

94

20

DAFTAR TABEL

Tabel 2.1 Tabel Biodata Karyawan...................................................................... 32

Tabel 3.1 Tabel Pelamar........................................................................................ 40

Tabel 3.2 Tabel Jenistes........................................................................................ 41

Tabel 3.3 Tabel Kriteria........................................................................................ 41

Tabel 3.4 Tabel Nilai............................................................................................. 42

Tabel 3.5 Tabel Result.......................................................................................... 42

Tabel 4.1 Tabel 25 Teratas Hasil Pembobotan Nilai............................................ 92

21

BAB I

PENDAHULUAN

A. Latar Belakang Masalah

Pada proses untuk menentukan atau mencari pegawai yang layak

untuk mengisi posisi yang tersedia, tentunya setiap perusahaan memiliki

kriteria-kriteria tertentu untuk menyaring mereka, salah satunya adalah

dengan tahapan-tahapan tes yang diselenggarakan oleh perusahaan tersebut.

Dalam kenyataannya sering kita jumpai perusahaan membuka kesempatan

kerja untuk mengisi bermacam-macam posisi yang mereka butuhkan dalam

satu periode penerimaan.

P.T. BAT Indonesia Tbk. Cirebon merupakan salah satu dari sekian

banyak perusahaan nasional yang berkedudukan di kota Cirebon yang

diminati oleh para pencari kerja untuk dapat bergabung di perusahaan

tersebut. Hal ini cukup beralasan karena perusahaan yang bergerak di bidang

industri rokok khususnya rokok putih ini setiap periodenya memberikan

kesempatan kerja khususnya kepada putra daerah yang memiliki prestasi

untuk ditempatkan pada perusahaan dan anak perusahaannya di samping upah

yang diberikan terbilang tinggi dibandingkan perusahaan-perusahaan lain

yang ada di kota Cirebon dan sekitarnya. Berdasarkan pengamatan yang

dilakukan oleh pihak HRD P.T. BAT Indonesia Tbk. setiap tahunnya ada

sekitar 70-an pelamar kerja yang mencoba mencari peruntungan di

22

perusahaan tersebut, padahal perusahaan setiap tahunnya hanya

membutuhkan sekitar 5 sampai 10 orang tenaga baru.

Mengingat banyaknya antusiasme para pencari kerja, juga kebutuhan

perusahaan atas sumber daya manusia yang berkualitas, maka diperlukan

suatu sistem penseleksian bagi pegawai baru agar nantinya perusahaan dapat

menemukan dan menempatkan mereka pada posisi yang semestinya. Salah

satunya adalah dengan membuat sebuah sistem database yang dapat

mengerjakan proses penseleksian para pelamar kerja agar dapat ditemukan

orang yang tepat untuk ditempatkan pada posisi tertentu dengan kriteria-

kriteria tes dan persyaratan lainnya yang telah ditetapkan.

Database yang ada pada perusahaan saat ini adalah database yang

hanya memuat data biografi pelamar kerja beserta data-data hasil tes yang

diselenggarakan oleh perusahaan. Permasalahan yang timbul adalah ketika

pihak HRD harus menentukan siapa saja dari mereka yang dinyatakan layak

untuk mengisi posisi yang tersedia dengan merujuk pada hasil tes yang terdiri

dari beberapa parameter tes yang telah distandardkan oleh perusahaan.

Ambil contoh perusahaan membutuhkan lima orang untuk menempati

posisi sebagai electrician dengan beberapa tes serta persyaratan yang harus

dipenuhi (tes kompetensi, tes wawancara, tes kreaplin, serta magang),

kemudian HRD melakukan proses penseleksian sesuai dengan kriteria yang

telah ditentukan perusahaan (tes kompetensi baik, tes wawancara baik, tes

kreaplin cukup, serta nilai magang baik). Kesulitan akan timbul ketika pihak

23

HRD harus mencari orang-orang yang memenuhi kriteria yang di maksud,

padahal database yang ada hanya memuat nilai hasil tes yang merupakan data

bersifat data pasti (crisp) yang hanya memiliki dua keadaan: lulus dan tidak,

sedangkan data kriteria yang diinginkan merupakan data yang terdiri dari

beberapa parameter keadaan seperti lulus dengan nilai sangat baik, baik serta

cukup. Oleh karena itu, untuk menangani kriteria-kriteria yang memiliki nilai

data yang tidak pasti atau samar, dapat menggunakan logika fuzzy sebagai

solusi pemecahannya.

Pada proses mencari pelamar kerja yang dapat direkomendasikan

mengisi posisi yang tersedia, logika fuzzy dimasukkan kedalam query.

B. Rumusan Masalah

Permasalahan yang di bahas dalam tugas akhir ini adalah sebagai

berikut:

1. Bagaimana memasukkan logika fuzzy kedalam query.

2. Bagaimana menentukan seberapa layak seorang pelamar kerja untuk dapat

direkomendasikan mengisi posisi yang tersedia berdasarkan kriteria-

kriteria yang dimasukkan.

C. Tujuan

Tujuan dari tugas akhir ini adalah menerapkan logika fuzzy dalam

query untuk melakukan proses penseleksian dalam memilih pelamar kerja

yang layak direkomendasikan untuk mengisi posisi yang tersedia.

24

D. Kontribusi

Database yang di buat diharapkan dapat mempermudah kerja bagian

Human and Resource Department (HRD) khususnya dalam menentukan

siapa saja para pelamar kerja yang dapat mengisi posisi yang tersedia di

dalam sebuah perusahaan atau institusi.

25

BAB II

TINJAUAN PUSTAKA

A. Logika Fuzzy

1. Pendahuluan

Titik awal dari konsep modern mengenai ketidakpastian (fuzzy)

adalah makalah yang di buat oleh Lofti A. Zadeh, di mana 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), tetapi

dinyatakan dalam derajat (degree). Konsep seperti ini di sebut dengan

Fuzziness dan teorinya dinamakan Fuzzy Set Theory.

Logika fuzzy (Fuzziness) dapat didefinisikan sebagai logika kabur

berkenaan dengan semantik dari suatu kejadian, fenomena, atau pernyataan

itu sendiri. Seringkali fenomena tersebut ditemukan dalam pernyataan yang

di buat oleh seseorang, evaluasi, dan pengambilan suatu keputusan. Sebagai

contoh:

a. Manajer pergudangan mengatakan pada manajer produksi seberapa

banyak persediaan barang pada akhir minggu ini, kemudian manajer

produksi ingin menetapkan jumlah barang yang harus di produksi esok

hari.

26

b. Pelayan restoran memberikan pelayanan terhadap tamu, kemudian tamu

ingin memberikan tip yang sesuai atas baik tidaknya pelayanan yang

diberikan.

c. Anda mengatakan pada saya seberapa sejuk ruangan yang anda inginkan,

saya ingin mengatur putaran kipas yang ada pada ruangan ini.

Ada beberapa alasan mengapa orang menggunakan logika fuzzy,

diantaranya:

a. Konsep logika fuzzy mudah dimengerti. Konsep matematis yang

mendasari penalaran fuzzy sangat sederhana dan mudah dimengerti.

b. Logika fuzzy sangat fleksibel.

c. Logika fuzzy memiliki toleransi terhadap data-data yang tidak tepat.

d. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear yang sangat

kompleks.

e. Logika fuzzy dapat membangun dan mengaplikasikan pengalaman-

pengalaman para pakar secara langsung tanpa harus melalui proses

pelatihan.

f. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali secara

konvensional.

g. Logika fuzzy didasarkan pada bahasa alami.

27

2. Perbedaan Himpunan Fuzzy Dengan Himpunan Pasti (Crisp)

Pada himpunan pasti, nilai keanggotaan suatu item x dalam suatu

himpunan A, yang sering ditulis dengan µA[x], memiliki dua kemungkinan,

yaitu:

a. Satu (1), yang berarti bahwa suatu item menjadi anggota dalam suatu

himpunan, atau

b. Nol (0), yang berarti bahwa suatu item tidak menjadi anggota suatu

himpunan.

Contoh :

Misalkan variabel umur dibagi menjadi tiga kategori, yaitu:

Muda umur < 35 tahun

Parobaya 35 ≤ umur ≤ 55 tahun

Tua umur ≥ 55 tahun

Nilai keanggotaan secara grafis, himpunan Muda, Parobaya, dan Tua

dapat di lihat pada gambar 2.1.

1 Muda 1 Parobaya 1 Tua

µ[x] µ[x] µ[x]

0 0 0

0 35 0 35 55 0 55

Gambar 2.1 Himpunan Muda, Parobaya, dan Tua

Pada gambar 2.1 dapat dijelaskan bahwa:

a. Apabila seseorang berusia 34 tahun, maka ia dikatakan Muda (µMuda[34] =

1),

28

b. Apabila seseorang berusia 35 tahun, maka ia dikatakan Tidak Muda

(µMuda[35] = 0),

c. Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan Tidak

Parobaya (µParobaya[35 th - 1 hari] = 0).

Berdasarkan contoh di atas bisa dikatakan pemakaian himpunan

pasti untuk menyatakan umur sangat tidak adil, adanya perubahan sedikit

saja pada suatu nilai mengakibatkan perbedaan kategori yang cukup

signifikan.

Himpunan fuzzy digunakan untuk mengantisipasi hal tersebut.

Seseorang dapat masuk dalam dua himpunan yang berbeda: Muda dan

Parobaya, Parobaya dan Tua, dan sebagainya. Seberapa besar

eksistensinya dalam himpunan tersebut dapat di lihat pada nilai derajat

keanggotaannya. Gambar 2.2 menunjukkan himpunan fuzzy untuk variabel

umur.

Muda Parobaya Tua

µ[x]

0,5

0,25

0 25 35 40 45 50 55 65

Umur (th)

Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur

Pada gambar 2.2 dapat di lihat bahwa:

a. Seseorang yang berumur 40 tahun, termasuk dalam himpunan Muda

dengan µMuda[40] = 0,25; namun dia juga termasuk dalam himpunan

29

Parobaya dengan µParobaya[40] = 0,5.

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

Jika pada himpunan pasti nilai keanggotaan hanya ada dua

kemungkinan, yaitu 0 atau 1, pada himpunan fuzzy nilai keanggotaan terletak

pada rentang 0 sampai dengan 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.

3. Beberapa Hal yang Perlu Diketahui Dalam Sistem Fuzzy

Ada beberapa hal yang perlu diketahui dalam memahami sistem

fuzzy, yaitu:

a. Variabel Fuzzy

Variabel fuzzy merupakan variabel yang hendak di bahas dalam

suatu sistem fuzzy, contoh: umur, temperatur, permintaan, dan sebagainya.

b. Himpunan Fuzzy

Himpunan fuzzy merupakan suatu grup yang mewakili suatu

kondisi atau keadaan tertentu dalam suatu variabel fuzzy. Contoh untuk

beberapa himpunan fuzzy:

• Variabel umur, terbagi menjadi tiga himpunan fuzzy, yaitu: Muda,

Parobaya, dan Tua.

30

• Variabel temperatur, terbagi menjadi lima himpunan fuzzy, yaitu:

Dingin, Sejuk, Normal, Hangat, dan Panas.

Himpunan fuzzy memiliki dua atribut, yaitu:

1) Linguistik, yaitu penamaan grup yang mewakili suatu keadaan atau

kondisi tertentu dengan menggunakan bahasa alami, seperti Dingin,

Sejuk, Normal, Hangat, Panas, dan sebagainya.

2) Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu

variabel, seperti 40, 25, 50, dan sebagainya.

c. Semesta Pembicaraan

Semesta pembicaraan adalah keseluruhan nilai yang

diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy. Semesta

pembicaraan merupakan himpunan bilangan nyata (real) yang senantiasa

bergerak naik (bertambah) secara monoton dari kiri ke kanan. Nilai

semesta pembicaraan dapat berupa bilangan positif maupun bilangan

negatif. Adakalanya nilai semesta pembicaraan ini tidak dibatasi batas

atasnya. Contoh:

• Semesta pembicaraan untuk variabel umur: [0 +∞].

• Semesta pembicaraan untuk variabel temperatur: [0 40].

d. Domain

Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan

dalam semesta pembicaraan dan boleh dioperasikan dalam suatu

himpunan fuzzy. Seperti halnya dengan semesta pembicaraan, domain

31

merupakan himpunan bilangan nyata yang senantiasa bergerak naik

(bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat

berupa bilangan positif maupun negatif. Contoh domain himpunan fuzzy

untuk temperatur:

• Dingin = [0, 20]

• Sejuk = [15, 25]

• Normal = [20, 30]

• Hangat = [25, 35]

• Panas = [30, 40]

4. Fungsi Keanggotaan

Fungsi keanggotaan (membership function) adalah suatu kurva yang

menunjukkan pemetaan titik-titik masukkan 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. Ada beberapa fungsi yang dapat digunakan diantaranya adalah:

a. Representasi Linear

Pada representasi linear, pemetaan masukkan kedalam derajat

keanggotaannya digambarkan sebagai suatu garis lurus. Bentuk ini paling

sederhana dan menjadi pilihan yang baik untuk mendekati suatu konsep

yang kurang jelas. Ada dua keadaan himpunan fuzzy fungsi linear.

32

1) Representasi Linear Naik

Kenaikan himpunan dimulai pada nilai domain yang

memiliki derajat keanggotaan nol bergerak ke kanan menuju ke nilai

domain yang memiliki derajat keanggotaan lebih tinggi (gambar

2.3).

1

derajat

keanggotaan

µ[x]

0 a b domain

Gambar 2.3 Representasi Linear Naik

Fungsi keanggotaan:

0; x ≤ a

µ[x] = (x - a)/(b - a); a < x < b

1; x ≥ b

2) Representasi Linear Turun

Representasi linear turun merupakan kebalikan dari linear

naik. Garis lurus dimulai dari nilai domain dengan derajat

keanggotaan tertinggi pada sisi kiri, kemudian bergerak menurun ke

nilai domain yang memiliki derajat keanggotaan lebih rendah (Gambar

2.4).

33

1

derajat keanggotaan

µ[x]

0 a b domain

Gambar 2.4 Representasi Linear Turun

Fungsi keanggotaan:

1; x ≤

(b - x)/(b - a); a < x < b

0; x ≥ b

b. Representasi Kurva Segitiga

Kurva segitiga pada dasarnya merupakan gabungan antara dua

garis linear seperti terlihat pada gambar 2.5.

1

derajat keanggotaan

µ[x]

0 a b c

domain

Gambar 2.5 Representasi Kurva Segitiga

Fungsi keanggotaan:

0; x ≤ a atau x ≥ c

(x – a)/(b – a); a < x ≤ b

(c – x)/(c – b); b < x < c

1; x = b

µ[x] =

µ[x] =

34

c. Representasi Kurva Travesium

Kurva Travesium pada dasarnya sama seperti bentuk segitiga,

hanya saja ada beberapa titik yang memiliki nilai keanggotaan satu.

1

derajat keanggotaan

µ[x]

0 a b c d

domain

Gambar 2.6 Representasi Kurva Trapesium

Fungsi Keanggotaan:

0; x ≤ a atau x ≥ d

(x – a)/(b – a); a < x < b

1; b ≤ x ≤ c

(d – x)/(d – c); c < x < d

d. Representasi Kurva Bentuk Bahu

Kurva bentuk bahu merupakan jenis kurva dengan keadaan daerah

yang terletak di tengah-tengah suatu variabel yang direpresentasikan dalam

bentuk segitiga, pada sisi kanan dan kirinya akan naik dan turun (misalkan:

Muda bergerak ke Parobaya kemudian bergerak ke Tua). Akan tetapi,

dalam kondisi tertentu, sisi-sisi dari variabel tersebut tidak mengalami

perubahan. Sebagai contoh, apabila telah mencapai kondisi Tua, kenaikan

variabel umur akan tetap pada kondisi Tua. Himpunan fuzzy “bahu”

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 representasi kurva bentuk bahu.

µ[x] =

35

1

0 a d b e c

Gambar 2.7 Representasi Kurva Bahu

Fungsi keanggotaan representasi kurva bahu merupakan perpaduan

antara fungsi keanggotaan representasi linier dengan representasi segitiga

sehingga rumus fungsi keanggotaanya mengikuti rumus fungsi keduanya.

Fungsi ini sering digunakan karena dapat mendefinisikan beberapa

himpunan fuzzy dalam satu waktu serta sederhana dalam proses

penghitungannya.

e. Representasi Kurva S

Kurva S memiliki nilai kenaikan atau penurunan yang tidak linear.

Ada dua representasi kurva S, yaitu kurva S-Pertumbuhan dan kurva S-

Penyusutan. Kurva S didefinisikan dengan menggunakan tiga parameter,

yaitu: nilai keanggotaan nol (α), nilai keanggotaan lengkap (γ), dan titik

infleksi atau crossover (β), yaitu titik yang memiliki domain 50%

benar. Fungsi ini baik digunakan untuk pendefinisian himpunan fuzzy

tunggal.

Bahu Kiri Bahu Kanan

36

1) Representasi Kurva S-Pertumbuhan

Kurva S-Pertumbuhan bergerak dari sisi paling kiri dengan

nilai keanggotaan nol menuju sisi paling kanan dengan nilai

keanggotaan satu. Fungsi keanggotaannya bertumpu pada 50%

nilai derajat keanggotaannya yang sering di sebut dengan titik

infleksi (gambar 2.8).

1

µ[x]

0,5

0 α β γ domain

Gambar 2.8 Karakteristik Fungsi Kurva S-Pertumbuhan

Fungsi keanggotaan kurva S-Pertumbuhan:

0; x ≤ α

2((x - α)/(γ - α))²; α < x ≤ β

1 - 2((γ - x)/(γ - α))²; β < x < γ 1; x ≥ γ

2) Representasi Kurva S-Penyusutan

Kurva S-Penyusutan merupakan kebalikan dari Kurva S-

Pertumbuhan. Nilai keanggotaannya bergerak dari sisi kiri dengan nilai

keanggotaan satu menuju sisi kanan dengan nilai keanggotaan nol.

Seperti yang terlihat pada gambar 2.9.

µ(x;α,β,γ) =

37

1

µ[x] 0,5

0 α β γ

domain

Gambar 2.9 Karakteristik Fungsi Kurva S-Penyusutan

Fungsi keanggotaan kurva S-Penyusutan:

1; x ≤ α

1 - 2((x - α)/(γ - α))²; α < x ≤ β

2((γ - x)/(γ - α))²; β < x < γ

0; x ≥ γ

f. Representasi Kurva Bentuk Lonceng (Bell Curve)

Untuk merepresentasikan himpunan fuzzy biasanya digunakan

kurva bentuk lonceng. Kurva bentuk lonceng terbagi atas tiga kelas, yaitu:

Kurva Phi (π), Beta (β), dan Gauss. Perbedaan ketiga kurva ini terletak

pada gradiennya.

1) Kurva Phi (π)

Kurva-π berbentuk lonceng dengan derajat keangotaan satu

terletak pada pusat dengan domain (γ) dan lebar kurva (β). Seperti

yang terlihat pada gambar 2.10.

µ(x; α, β, γ) =

38

Pusat (γ) 1

µ[x] 0.5 0

Ri lebar (β) Rj Domain

Gambar 2.10 Karakteristik Fungsional Kurva π

Fungsi keanggotaan:

S[x; γ – β, γ – β/2, γ] x ≤ γ

1 – S[x; γ, γ + β/2, γ + β] x > γ

2) Kurva Beta (β)

Seperti halnya Kurva π, kurva beta juga berbentuk lonceng

namun lebih rapat. Kurva ini didefinisikan dengan dua parameter, yaitu

nilai pada domain yang menunjukkan pusat kurva (γ) dan setengah

lebar kurva (β). Seperti yang terlihat pada gambar 2.11.

Pusat (γ) 1 0,5 µ[x] 0

Ri domain Rj

Gambar 2.11 Karakteristik Fungsional Kurva β

Fungsi keanggotaan:

β(x; γ, β) = 1/1 + [x – γ/β]2

π(x,β,γ) =

Titik infleksi (γ + β)

Titik infleksi (γ – β)

Titik infleksi

39

Salah satu perbedaan yang mencolok yang dimiliki oleh kurva

beta terhadap kurva-π adalah fungsi keanggotaannya akan mendekati

nol hanya jika nilai β sangat besar.

3) Kurva Gauss

Kurva Gauss menggunakan γ untuk menunjukkan nilai

domain pada pusat kurva dan k yang menunjukkan lebar kurva.

Seperti yang terlihat pada gambar 2.12.

Pusat (γ) 1

µ[x]

0,5

0

Ri lebar (k) Rj Domain

Gambar 2.12 Karakteristik Fungsional Kurva Gauss

Fungsi keanggotaan:

G(x; k, γ) = e – k(γ – x)2

5. Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy

Seperti halnya himpunan konvensional, ada beberapa operasi yang

didefinisikan secara khusus untuk mengkombinasi dan memodifikasi

himpunan fuzzy. Nilai keanggotaan sebagai hasil dari operasi dua himpunan

atau lebih sering di kenal dengan nama firestrength atau α-predikat. Ada

tiga operator dasar yang diciptakan oleh Zadeh, yaitu:

40

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.

µA∩B = Min(µA[x], µB[y])

b. Operator Or

Operator ini berhubungan dengan operasi union pada himpunan

α-predikat sebagai hasil operasi dengan operator Or diperoleh dengan

mengambil nilai keanggotaan terbesar antar elemen pada himpunan-

himpunan yang bersangkutan.

µAUB = Max(µA[x], µB[y])

c. Operator Not

Operator ini berhubungan dengan operasi komplemen pada

himpunan. α-predikat sebagai hasil operasi dengan operator Not diperoleh

dengan mengurangi nilai keanggotaan elemen pada himpunan yang

bersangkutan dari satu.

µA’ = 1 - µA[x]

B. Database

4. Pengertian Database

Dalam arti khusus database adalah sekumpulan informasi yang di

atur agar mudah di cari. Sedangkan dalam arti umum database adalah

41

sekumpulan data yang di proses dengan bantuan komputer yang

memungkinkan data dapat di akses dengan mudah dan tepat, yang dapat

digambarkan sebagai aktivitas dari satu atau lebih organisasi yang berelasi.

Sebagaimana kita ketahui, manajemen modern sekarang ini telah

mengikutsertakan informasi sebagai sumber daya penting yang setara

dengan sumber daya manusia, uang, mesin, dan meterial. Informasi adalah

suatu bentuk penyajian data yang melalui mekanisme pemrosesan serta

berguna bagi pihak tertentu misalnya manajer. Bagi pihak manajer

informasi merupakan bahan acuan bagi pengambilan keputusan.

Gambar 2.13 Pengolahan Data Menjadi Informasi

5. Database Relasional

Prinsip dari model relasional pertama kali dikenalkan oleh Dr. E. F.

Codd pada bulan Juni 1970 pada tulisan makalahnya yang berjudul ”A

Relational Model of Data for Large Shared Data Banks”. Pada makalah

tersebut Dr. E. F. Codd mengusulkan model relasional untuk sistem database.

Model relasional lebih popular daripada tipe model database lain

seperti hirarki dan network karena kesederhanaannya. Relational Database

Management System (RDBMS) menjadi sangat populer karena mudah

digunakan dan strukturnya bersifat fleksibel. Komponen dari model

relasional adalah:

Data Proses Informasi

42

a. Kumpulan obyek atau relasi yang menyimpan data,

b. Kumpulan operator yang dapat digunakan pada relasi untuk menghasilkan

relasi yang lain,

c. Integritas data untuk akurasi dan konsistensi.

Database relasional menggunakan relasi atau tabel dua dimensi

untuk menyimpan informasi. Sebagai contoh akan di simpan informasi

tentang pegawai dalam suatu perusahaan, maka pada database relasional di

buat beberapa tabel untuk menyimpan kumpulan informasi tentang pegawai

seperti tabel pegawai, tabel departemen, dan tabel gaji.

6. Structured Query Language (SQL)

SQL adalah bahasa standard untuk melakukan query pada database.

SQL independent terhadap arsitektur database sehingga bisa digunakan

pada database apa saja.

Sebuah query adalah sebuah ekspresi bahasa yang menggambarkan

data yang ingin didapatkan kembali dari sebuah database. Dalam

hubungannya dengan optimasi query, seringkali diasumsikan bahwa query-

query tersebut dinyatakan dalam sebuah dasar-dasar isi dan sekumpulan

cara orientasi yang memberikan optimizer pilihan-pilihan di antara

prosedur-prosedur alternatif evaluasi.

Query dapat digunakan pada beberapa keadaan, kebanyakan aplikasi

nyatanya adalah permintaan-permintaan secara langsung dari pengguna

(user) yang memerlukan informasi tentang bentuk maupun isi dari database.

43

Apabila permintaan pengguna terbatas pada sekumpulan query-query

standard, maka query-query tersebut dapat dioptimisasi secara manual oleh

pemrograman prosedur-prosedur pencarian gabungan dan membatasi

masukan dari pengguna pada sebuah ukuran menu.

Tetapi bagaimanapun juga, sebuah sistem optimisasi query otomatis

menjadi penting apabila query-query khusus dinyatakan dengan

menggunakan bahasa query yang digunakan secara umum seperti SQL.

SQL adalah bahasa pemrograman yang digunakan untuk akses ke

database. SQL di buat oleh perusahaan IBM sekitar tahun 1970,

bersamaan dengan diperkenalkannya konsep relational Database. Setelah

mengalami banyak perkembangan, pada masa kini SQL sudah menjadi

bahasa yang lazim digunakan dalam dunia database. Bahasa SQL dapat

digolongkan bahasa generasi keempat yang tidak berupa bahasa yang

berstruktur dan beraturan seperti C dan Pascal (golongan bahasa generasi

ketiga). Oleh karena itu, bahasa SQL mudah dipelajari.

Pernyataan (statement) SQL dapat digolongkan atas tiga golongan

yaitu:

a. Data Definition Language (DDL) yang mendefinisikan struktur suatu

data. Perintah-perintah SQL yang termasuk DDL antara lain :

1) Create = untuk membuat tabel dengan sintaksnya sebagai berikut :

CREATE TABLE [Pemakai.] Nama Tabel( {nama kolom pertama TipeData [default] [constraint kolom] constraint tabel) [,(nama kolom kedua TipeData [default] [constraint kolom] constraint tabel}]... .);

44

2) Alter = untuk mengubah (modify) tabel yang telah dibuat, seperti :

a) Menambah kolom baru,

b) Mengubah ukuran kolom,

c) Mengubah aturan-aturan yang berlaku untuk suatu kolom.

Sintaks yang dapat dipakai adalah:

3) Drop = untuk menghapus suatu tabel. Sintaks yang dapat dipakai

adalah:

b. Data Manipulation Language (DML) yang dapat mencari (query) dan

mengubah (modify) suatu tabel. Perintah-perintah SQL yang termasuk

DML antara lain:

1) Select = untuk membaca (query) isi tabel. Sintaks yang dapat

digunakan adalah sebagai berikut:

DROP TABLE [Pemakai.]Nama Tabel

[CASCADE CONSTRAINTS];

ALTER TABLE [Pemakai.] Nama Tabel {[ADD {Nama Kolom | [CONSTRAINT Nama Constraint] Constraint Tabel}[, Nama Kolom |[CONSTRAINT Nama Constraint] Constraint Tabel }]…)][MODIFY (Nama Kolom [, Nama Kolom]….)][DROP Nama Constra int]}[ENABLE Nama Constraint | DISABLE Nama Constraint];

SELECT [ ALL | DISTINCT {* | [Pemakai..]Nama Tabel.* | Ekspresi [Alias [, Ekspresi [Alias] ]..} FROM [Pemakai.]Nama Table [@Nama Database] [Alias]...[WHERE Kondisi][CONNECT BY Kondisi [START WITH Kondisi]][GROUP BY Ekspresi [, Ekspresi]... .] [HAVING Kondisi][(UNION [ALL] | INTERSECT MINUS)SELECT …] [ORDER BY {EKspresi | Posisi} [ASC }| DESC]…[, {Expresi | Posisi} [ASC | DESC]]]…[FOR UPDATE [OF [[Pemakai.]{Nama Tabel | Nama View}.]Nama Kolom [, [[Pemakai.]{Nama Tabel | Nama View}.]]…] NOWAIT];

45

2) Insert = untuk memasukkan data ke tabel. Sintaks yang dapat

digunakan adalah sebagai berikut:

3) Update = untuk mengubah isi tabel. Sintaks yang dapat digunakan

adalah sebagai berikut:

4) Delete = untuk menghapus isi tabel. Sintaks yang dapat digunakan

adalah sebagai berikut :

c. Data Control Language (DCL) adalah yang mengatur hak-hak

(privilege) untuk seorang pemakai database. Semua bahasa pemrograman

mempunyai aturan gramatikal. Beberapa aturan yang perlu diperhatikan

pada saat menulis bahasa SQL adalah :

1) Semua pernyataan SQL di tutup dengan tanda titik-koma (;).

2) Perintah SQL dapat di tulis dalam satu baris atau di pisah-pisah dalam

beberapa baris agar mudah di baca.

3) SQL tidak membedakan huruf besar atau kecil (not case sensitive)

untuk penulisan perintah-perintah SQL (seperti Create, Alter, Select),

nama tabel, dan nama kolom.

INSERT INTO [Pemakai.]Nama Tabel[@nama Database] [(Nama Kolom [Nama Kolom]…)]VALUE [Ekspresi]...) | Query...);

UPDATE [Pemakai.]Nama Tabel SET {Nama Kolom = Ekspresi [Nama Kolom = Ekspresi].. .| (Nama Kolom [,Nama Kolom]..) = ( Subquery) | [WHERE Kondisi];

DELETE FROM [Pemakai.]Nama Table[@Nama Database] [WHERE Kondisi];

46

4) Isi dari tabel peka terhadap huruf besar atau kecil (case sensitive),

tergantung bagaimana isi tabel dimasukkan. Hal ini penting dijadikan

perhatian ketika membuat pernyataan query SQL dalam mencari isi

tabel.

5) Pernyataan SQL harus di tulis menurut sintaks tertentu.

6) Pernyataan SQL dapat diberikan baris komentar untuk dokumentasi

serta menjelaskan maksud dari pemrograman.

C. Teknik untuk Mengimplementasikan Fuzziness ke Dalam Database

Pada umumnya, ada dua metode untuk memasukkan fuzziness

kedalam database, yaitu:

1. Fuzzy Query Database

Fuzzy query database adalah membuat sebuah fuzzy query terhadap

database klasik. Artinya, kita membuat sebuah aplikasi yang dapat

menangani sebuah query di mana dalam query tersebut terdapat variabel-

variabel yang bernilai fuzzy atau dengan kata lain query tersebut memiliki

variabel-variabel linguistik. Sedangkan data pada database yang akan di

akses merupakan data yang pasti.

Ada beberapa pendekatan yang dapat dijadikan rujukan untuk

menyelesaikan persoalan fuzzy query database. Pendekatan-pendekatan itu

adalah:

47

a. Model Chang

Shi Kuo Chang mengajukan konsep kerangka database yang

mengijinkan pengguna untuk menetapkan isi dan arti dari sebuah

koleksi data. Kerangka database ini nantinya digunakan sebagai suatu

dasar ilmu semantik yang mendukung fuzzy query. Metodologi yang

diusulkan dapat memproses fuzzy query adalah:

Query: get supplierName; goods equal 'Tv'.

Query ini adalah “fuzzy”’ karena tidak menyediakan cukup

keterangan pada DBMS (tidak ada lintasan akses yang ditetapkan).

Terjemahan dari fuzzy query kedalam sebuah query lengkap

dirumuskan sebagai sebuah masalah untuk mengkonversi sebuah

penetapan grafik query secara parsial ke dalam sebuah penetapan

secara menyeluruh. Sebuah query penuh untuk query di atas

mengambil bentuk:

Query: get supply.supplierName; stock.goods equal 'Tv'.

Dalam makalah Chang, istilah “fuzzy” mengacu pada

keterangan penentuan secara tidak menyeluruh pada query, seperti itu

kekurangan dari lintasan akses. Ini harus di catat bahwa teori logika

fuzzy tidak dipergunakan dengan tegas di dalam merumuskan

metodologi. Alhasil, model ini kurang kuat, sepertinya kurang pantas

dalam menangani fuzzy query yang melibatkan data fuzzy yang samar-

samar dan rancu.

48

b. Model Wong

Eugene Wong mengajukan sebuah kerangka untuk menangani

keterangan tidak menyeluruh dalam DBMS nonfuzzy. Terkadang,

sehubungan dengan keterangan tidak menyeluruh atau tidak tepat pada

DBMS, sebuah database tidak dapat menyediakan jawaban untuk

beberapa query. Dalam keadaan di mana ketidaktepatan sehubungan

dengan merekam kesalahan, data usang, skala tidak cocok, atau

kesalahan pengukuran, Wong menyarankan penggunaan dari

pendekatan data statistik untuk mendekati hasil, kecuali jawaban-

jawaban yang penuh arti. Ini di catat bahwa model Wong

berlandaskan teori dari probabilitas dan statistik lebih dari teori

himpunan fuzzy. Sebagai data fuzzy, secara keseluruhan, posibilistik

dibandingkan posibilistik alami, model ini seperti model Chang, tidak

berhasil menangani dengan baik fuzzy query yang melibatkan data

fuzzy.

c. Model Tahani

Valiollah Tahani mengembangkan sebuah kerangka konseptual

tingkat tinggi untuk memproses fuzzy query pada sebuah ruang

lingkup database konvensional nonfuzzy. Diusulkan kerangka sistem

perolehan kembali fuzzy, penggunaan pendekatan dari perancangan

perolehan kembali asosiasi. Di bawah perancangan ini, sebuah fuzzy

query digantikan oleh asosiasi arti dirinya kemudian pencocokan

49

operasi dilakukan untuk membandingkan fuzzy mulai dari akurasi

data hingga memperoleh sebuah jawaban. Model ini dianggap model

yang paling baik untuk menjawab persoalan fuzzy query database

karena model ini menggunakan teori himpunan fuzzy untuk

mendapatkan informasi pada query-nya.

Misalkan dalam sebuah database karyawan di buat kategori-

kategori sebagai berikut:

1) Usia karyawan dikategorikan ke dalam himpunan fuzzy menjadi

Muda, Parobaya, dan Tua.

2) Gaji karyawan dikategorikan ke dalam himpunan fuzzy menjadi

Rendah, Sedang, dan Tinggi.

3) Masa kerja karyawan dikategorikan ke dalam himpunan fuzzy

menjadi Baru dan Lama.

Dari pendefinisian himpunan fuzzy di atas kita dapat membuat

beberapa query, misalnya siapa saja karyawan yang masih muda serta

memiliki gaji tinggi? Query-nya adalah:

Select nama from karyawan where (Usia = “Muda”) and (Gaji =

“Tinggi”).

Maka pada database yang telah dibuat akan muncul siapa-

siapa saja karyawan yang masih muda dan mendapat gaji tinggi.

50

d. Model Kacprzyk

Janusz Kacprzyk menyajikan sebuah sistem fuzzy query yang

di kenal dengan Fquery III. Melalui Fquery III, tambahan data Dbase

III (sebuah nonfuzzy mikro komersial berbasis komputer RDBS)

dapat di bedah menggunakan fuzzy query. Fquery III didasari pada

kerangka dengan teori logika fuzzy.

2. Fuzzy Database

Fuzzy database adalah teknik untuk memasukkan informasi fuzzy ke

dalam database. Maksudnya adalah kita memasukkan informasi-informasi

yang memiliki nilai fuzzy kedalam database.

Ada beberapa pendekatan yang dapat dijadikan rujukan untuk

menyelesaikan persoalan fuzzy query database. Pendekatan-pendekatan itu

adalah:

a. Model Buckles

Model Buckles adalah salah satu model versi paling awal dari

Fuzzy Relational DataBase System (FRDBS) dengan menggabungkan

teori himpunan fuzzy dan Relational DataBase System (RDBS). Billy

P. Buckles merumuskan sebuah kerangka teoritis yang kokoh dari

persamaan mendasar FRDBS yang mana memiliki persyaratan

sebagai berikut:

1) Model ini mengijinkan komponen-komponen tuple nonatomik,

51

2) Model ini memerlukan hubungan persamaan untuk masing-

masing domain data agar supaya memelihara persyaratan penting

dari RDBS klasik,

3) Model ini menerima ambang batas yang didefinisikan pengguna

dari penerimaan selama evaluasi query,

4) Model ini hanya mendukung sebuah kelas spesifik angka fuzzy

tetapi tidak mendukung distribusi kemungkinan jenis data (untuk

perbandingan, lihat model yang disediakan oleh Umano).

b. Model Shenoi

Sujeet Shenoi generalisasikan persamaan berdasar model.

Senoi mengamati bahwa pemeliharaan dari persyaratan RDBS klasik

juga dapat dilakukan dengan cara membatasi komponen-komponen

fuzzy tuples menjadi subset-subset yang tidak kosong dari kesamaan

kelas-kelas dari pembagian domain. Sejak pendapat kesamaan kelas-

kelas lebih umum dibandingkan pendapat dari hubungan persamaan,

sebuah kesamaan model dari FRDBS, dimana sebuah generalisasi dari

model dasar persamaan telah diajukan.

c. Model Umano

Pendekatan berbeda yang lain pada penyajian dan manipulasi

dengan data fuzzy diajukan oleh Umano yang mengembangkan

Kebebasan-0, sebuah FRDBS. Tidak seperti model Buckles dan

Shenoi yang mana batas-batas data fuzzy pada angka fuzzy spesifik,

52

Kebebasan-0 mengikuti distribusi kemungkinan keduanya dan angka

fuzzy. Walaupun demikian, Kebebasan-0 lebih kuat dalam kaitannya

dengan struktur data fuzzy ini, ini kekurangan kerangka database

formal yang mana ditemukan pada model Buckles. Kebebasan-0

menggunakan sebuah bahasa program terlekat pada Fortran untuk

manipulasi data fuzzy.

Misalkan terdapat tabel karyawan seperti terlihat pada tabel 2.1

berikut.

Tabel 2.1 Tabel Biodata Karyawan

Nama Umur (th) Nama Anak

Farrel 35 Maya

Fitri 33 -

Aldo Muda Tidak Tahu

Kaila Tidak Tahu Ningrum

Mozza 56 {Nisa,Ana}p

Misyka {50,51}p Undefined

Pada record pertama, tidak ada data yang ambiguous. Farrel

berusia 35 tahun dan memiliki seorang anak yang bernama Maya.

Pada record kedua juga tidak ada data yang ambiguous. Fitri berusia

33 tahun dan belum mempunyai anak.

Pada record ketiga, Aldo tidak diketahui berapa umurnya

tetapi dia masih muda. Umur Aldo diekspresikan dengan distribusi

53

posibilitas Muda, misalkan Muda merupakan himpunan dengan

distribusi posibilitas sebagai berikut:

Muda = {0,3/15; 0,6/17; 0,8/22; 1/25; 0,8/30; 0,7/33; 0,6/35;

0,2/40}

Aldo memiliki anak tetapi kita tidak mengetahui siapa nama

anaknya. Nama anaknya Aldo diekspresikan dengan distribusi

posibilitas tidak tahu yang berarti siapapun mungkin (nilai posibilitas

= 1).

Pada record keempat kita tidak mengetahui berapa umur Kaila.

Umur Kaila diekspresikan dengan distribusi posibilitas tidak tahu

yang berarti berapapun mungkin. Kaila memiliki anak yang bernama

Ningrum.

Pada record kelima, Mozza diketahui berumur 56 tahun.

Mozza memiliki seorang anak yang belum jelas siapa namanya,

apakah Nisa atau Ana. Nama anak Mozza diekspresikan dengan

distribusi posibilitas {Nisa,Ana}p yang artinya Nisa atau Ana.

Misalkan distribusi posibilitas yang diberikan adalah:

Nama Anak = {0,8/Nisa; 0,5/Ana}

Ini berarti bahwa anak Mozza bernama Nisa memiliki nilai

posibilitas lebih besar dibandingkan dengan nilai posibilitas Ana.

54

Pada record keenam, umur Misyka diketahui 50 atau 51 tahun.

Umur Misyka diekspresikan dengan distribusi posibilitas {50,51}p,

misalkan distribusi posibilitas yang diberikan adalah:

Umur = {0,8/50; 0,4/51}

Ini berarti bahwa umur Misyka 50 tahun memiliki nilai

posibilitas lebih besar dibandingkan dengan nilai posibilitas 51 tahun.

Kita tidak tahu apakah Misyka memiliki anak atau tidak. Nama anak

Misyka diekspresikan dengan distribusi posibilitas undefined, tidak

jelas apakah Misyka memiliki anak atau tidak (nilai posibilitas = 0).

Apabila diberikan query siapa saja karyawan yang usianya

lebih dari 36 tahun? Maka yang termasuk kedalam kategori tersebut

adalah Aldo, Kaila, Mozza dan Misyka.

Aldo termasuk dalam kategori ini karena Aldo termasuk dalam

kategori Muda di mana usia 40 tahun (> 36 tahun) menjadi anggota

himpunan Muda meskipun nilai posibilitasnya 0,2. Kaila termasuk

dalam kategori ini karena kita tidak mengetahui umur Kaila sehingga

berapapun umur yang di minta, Kaila tetap masuk (nilai posibilitas =

1). Mozza jelas termasuk dalam kategori ini sebab umur Mozza 56

tahun. Misyka juga termasuk dalam kategori ini sebab baik 50 tahun

maupun 51 tahun keduanya lebih dari 36 tahun.

55

d. Model Zemankova

Maria Zemankova juga mengembangkan sebuah FRDBS yang

dapat menangani teori fuzzy keduanya serta data distribusi

kemungkinan. RIM, sebuah RDBS nonfuzzy konvensional, di pilih

sebagai sebuah tempat dalam menerapkan FRDBS. Vektor

menunjukkan jenis dukungan oleh RIM yang biasanya mewakili data

fuzzy. Tambahan di buat pada RIM struktur data RDBS sehingga

komponen tuple tidak dibatasi pada nilai atomik. Pengembangan

FRDBS dapat menangani fuzzy query.

Secara umum, FRDBS menunjukkan keuntungan-keuntungan

utama yang mengikuti melalui model RDBS konvensional.

1) Model ini mengijinkan sebuah cara yang lebih alami dari

penanganan data karena data fuzzy lebih kompatibel dengan

pikiran dan pengamatan manusia,

2) Penggunaan dengan teori himpunan fuzzy dan teori distribusi

kemungkinan menyediakan sebuah pondasi matematika formal

untuk penyajian sistematis dan manipulasi dari data pasti dan data

fuzzy,

3) Model ini menyediakan sebuah lingkungan database untuk

menangani keduanya (data pasti dan data fuzzy).

Bagaimanapun, dalam model ini, tidak diragukan bahwa

RDBS adalah kunci kerangka database pada penanganan data fuzzy.

56

Bagaimanapun, seperti generasi terdahulu dari teknologi database,

RDBS dikembangkan untuk pengolahan data konvensional yang

melibatkan struktur data pasti dan data atomik, dengan demikian ini

tidak sesuai untuk aplikasi-aplikasi yang memerlukan penghitungan

intensif dan struktur data kompleks seperti data himpunan fuzzy.

57

BAB III

METODOLOGI

G. Prosedur Perancangan

Prosedur perancangan yang di maksud adalah tata cara pencapaian

target perancangan sebagaimana tertulis dalam tujuan penelitian. Prosedur

perancangan ini ditunjukkan dalam gambar 3.1.

Gambar 3.1 Prosedur Perancangan

H. Analisa Kebutuhan

Sistem yang akan di bangun merupakan sistem database fuzzy.

Karena model yang digunakan adalah Model Tahani, maka relasi yang ada

Analisis Kebutuhan

Spesifikasi

Desain

Verifikasi

Validasi

Finalisasi

Gagal

Berhasil

Target: Tujuan perancangan

58

dalam database masih bersifat standard, dengan penekanan fuzzy pada

beberapa field dalam tabel-tabel yang ada pada database tersebut.

1. Kebutuhan Masukkan

Kebutuhan masukkan sistem digolongkan menjadi dua, yaitu

masukkan fuzzy dan masukkan nonfuzzy.

a. Masukkan fuzzy terdiri dari:

1) Data-data pelamar kerja yang menyangkut: tes kompetensi, tes

wawancara, tes kreaplin, dan magang.

2) Untuk fungsi S-pertumbuhan, nilai keanggotaan nol = α, nilai titik

infleksi = β, dan nilai keanggotaan lengkap = γ. Untuk fungsi

keanggotaan bahu merupakan perpaduan antara fungsi linier naik

dan turun serta fungsi segitiga (nilai batas bawah fungsi linier

turun = a, nilai batas atas fungsi linier turun = b, nilai batas bawah

fungsi segitiga = c, nilai tengah fungsi segitiga = d, nilai batas

atas fungsi segitiga = e, nilai batas bawah fungsi linier naik = f

dan nilai batas atas fungsi linier naik = g) berlaku untuk variabel-

variabel pada bagian (1).

b. Masukkan nonfuzzy terdiri dari data-data pelamar kerja yang

menyangkut ada tidaknya pengalaman kerja.

2. Kebutuhan Keluaran

Keluaran sistem berupa rekomendasi pelamar kerja yang sesuai

dengan kriteria yang diinginkan oleh perusahaan atau instansi terkait.

59

3. Menggunakan Delphi sebagai GUI

Delphi digunakan sebagai antar muka (Graphical User Interface)

agar pengguna tidak mengalami kesulitan dalam memasukkan dan

memproses data sehingga dapat menghindari terjadinya kesalahan.

I. Spesifikasi

Secara umum perangkat lunak yang di bangun mempunyai spesifikasi

sebagai berikut:

1. Memiliki Database yang dapat memuat data-data para pelamar kerja, jenis

dan kriteria tes, nilai hasil tes, serta predeksi pelamar kerja yang akan di

terima.

2. Menggunakan sistem berbasis GUI yaitu Delphi 7.0 tidak berbasis web.

3. Menggunakan Mysql sebagai perangkat lunak penyimpan database tidak

menggunakan client server.

4. Dapat digunakan pada komputer dengan spesifikasi minimum sebagai

berikut:

a. Desktop PC atau Notebook dengan prosessor 800 Mhz.

b. HDD 750 MB.

c. Memory RAM 256 MB.

d. VGA/SVGA 16 MB dengan resolusi (1024 x 768).

e. Sistem operasi Microsoft Windows XP Professional.

60

J. Perancangan Database dan Sistem

Dengan spesifikasi di atas maka komponen-komponen yang

dibutuhkan untuk membangun perangkat lunak ini adalah:

1. Perancangan Database

Database yang digunakan adalah database standard yang sudah

umum digunakan dengan struktur database yang memiliki relasional antar

tabel. Secara keseluruhan kita membuat sebuah database yang di beri nama

database fuzzy. Karena pada penelitian ini menggunakan database model

Tahani, maka query yang akan di dapat dari proses seleksi menggunakan

teori himpunan fuzzy. Ada enam tabel yang digunakan dalam penyelesaian

tugas akhir ini dengan tujuan dan kegunaan yang berbeda-beda.

Penjelasannya adalah sebagai berikut:

a. Struktur Tabel

1) Tabel Pelamar

Tabel pelamar ini digunakan untuk menyimpan data-data

tentang biodata para pelamar kerja. Struktur tabel pelamar kerja

dapat di lihat pada tabel 3.1.

Tabel 3.1 Tabel Pelamar

Nama Field Tipe Data Lebar Keterangan

idpelamar* Integer 11 Auto increment

kode Varchar 8 No. urut pelamar

nama Varchar 32 Nama pelamar

alamat Varchar 64 Alamat pelamar

tempatlahir Varchar 16 Kota kelahiran pelamar

tgllahir Date - Tanggal lahir pelamar

61

usia Real - Usia pelamar

*) Kunci Primer

2) Tabel Jenis Tes

Tabel jenistes ini digunakan untuk menyimpan data-data

tentang jenis-jenis tes yang diadakan untuk menyaring para

pelamar kerja oleh suatu institusi atau perusahaan. Struktur tabel

pelamar dapat di lihat pada tabel 3.2.

Tabel 3.2 Tabel Jenis Tes

Nama Field Tipe Data Lebar Keterangan

idjenistes* Integer 11 Auto increment

nama Varchar 16 Nama jenis tes

*) Kunci Primer

3) Tabel Kriteria dari Jenis Tes

Tabel kriteria ini digunakan untuk menyimpan data-data

tentang derajat keanggotaan suatu jenis tes tertentu pada himpunan

fuzzy tertentu serta menyimpan data-data domain dari himpunan

fuzzy. Struktur tabel pelamar dapat di lihat pada tabel 3.3.

Tabel 3.3 Tabel Kriteria

Nama Field

Tipe Data Lebar Keterangan

idkriteria* Integer 11 Auto increment

nama Varchar 16 Nama kriteria tes

idjenistes Integer 11 Kode dari jenis tes

kurva Varchar 16 Nama fungsi dari derajat keanggotaan fuzzy

a Float - Batas dari himpunan fuzzy

b Float - Batas dari himpunan fuzzy

c Float - Batas dari himpunan fuzzy

d Float - Batas dari himpunan fuzzy

62

*) Kunci Primer

4) Tabel Nilai

Tabel nilai ini digunakan untuk menyimpan data-data

tentang nilai-nilai tes yang di ambil dari hasil tes yang telah

dilakukan oleh perusahaan atau institusi. Struktur tabel pelamar

dapat di lihat pada tabel 3.4.

Tabel 3.4 Tabel Nilai

Nama Field Type Data Lebar Keterangan

idnilai* Integer 11 Auto increment

idpelamar Integer 11 Kode dari nama pelamar

idjenistes Integer 11 Kode dari jenis tes

nilai Float - Nilai *) Kunci Primer

5) Tabel Hasil (Result)

Tabel result ini digunakan untuk menyimpan data-data

tentang hasil dari penghitungan nilai keanggotaan dari fungsi

keanggotaan yang telah ditentukan. Struktur tabel pelamar dapat di

lihat pada tabel 3.5.

Tabel 3.5 Tabel Result

Nama Field Type Data Lebar Keterangan

idresult* Integer 11 Auto increment

idpelamar Integer 11 Kode dari nama pelamar

idkriteria Integer 11 Kode dari kriteria tes

nilai Float - Nilai

63

*) Kunci Primer

6) Tabel Temporary

Tabel sTemp digunakan untuk menyimpan data secara

temporary. Tabel ini memuat field-field yang berisi data-data

sementara yang dihasilkan selama proses penghitungan dalam sistem

ini berlangsung. Data-data yang merupakan hasil dari penghitungan

firestrength antara dua kriteria atau lebih. Untuk lebih jelasnya

tentang kegunaan dari tabel ini akan di bahas pada perancangan

sistem.

Gambar 3.2 Perancangan Database

pelamar

PK idpelamar*

kode

nama

alamat

tempatlahir

tgllahir

nonfuzzy

kriteria

PK idkriteria*

nama

idjenistes

kurva

a

b

c

d

config

PK

nonfuzzy

jenistes

PK idjenistes*

nama

sTemp

PK idresult*

idpelamar

Idkriteria

Temp f1

Temp f2

........

Fire strength temp

Temp nf1

........

result

PK idresult*

idpelamar

Idkriteria

nilai

nilai

PK idnilai*

idpelamar

idjenistes

nilai

64

2. Perancangan Sistem

Secara umum sistem yang akan di buat adalah seperti gambar 3.3

berikut ini:

Gambar 3.3 Perancangan Sistem

a. Diagram Arus Data

Penggunaan diagram arus data di sini bertujuan untuk

memudahkan dalam melihat arus data dalam sebuah sistem.

1) Diagram Konteks

Konteks diagram seperti terlihat pada Gambar 3.4.

Ambil

data yang

diperlukan

Olah data

dan hitung

firestrength

Masukkan:

database

Pelamar kerja

Tentukan

fungsi

keanggotaan

Keluaran:

hasil

rekomendasi

65

Gambar 3.4 Diagram Konteks Sistem

Dari konteks diagram diatas terlihat ada dua entitas luar

yang berhubungan dengan sistem ini, yaitu: Pelamar Kerja dan

Pengguna. Dari pelamar kerja akan diperoleh data-data pelamar

kerja sedangkan pengguna adalah orang yang menjalankan

program ini.

Pengguna dapat menentukan sendiri klasifikasi dari

pelamar kerja yang akan direkomendasikan, yaitu dengan cara

memasukkan:

a) Variabel fuzzy yang dibutuhkan,

b) Himpunan fuzzy dari masing-masing variabel fuzzy,

c) Fungsi keanggotaan dari masing-masing himpunan fuzzy,

Setelah itu, untuk mendapatkan pelamar kerja yang

direkomendasikan, pengguna dapat memasukkan query yang telah

ada pada user interface.

Data Pelamar Kerja

Pelamar Kerja direkomendasi

Query

Database tabel dan field nilai

Definisi fungsi keanggotaan

Definisi himpunan fuzzy

Definisi variabel fuzzy

Pengguna

Sistem

Pelamar Kerja

66

Hasil yang di terima oleh pengguna adalah berupa tabel

yang berisi data pelamar kerja yang direkomendasikan berdasarkan

variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan query yang

dimasukkan oleh pengguna.

2) Diagram Peninjauan

Diagram peninjauan menunjukkan gambaran proses yang

ada dalam sistem secara garis besar. Seperti yang terlihat pada

gambar 3.5.

Gambar 3.5 Diagram Peninjauan

Data Nilai

Data Kriteria

Pelamar Kerja Dirokemendasi

Fungsi

Himpunan fuzzy

Variabel fuzzy

Database tabel dan field

Definisi fungsi

Definisi himpunan fuzzy

Definisi variabel Data Jenis Tes

Query Data Hasil

Data Temporary

Data Pelamar Kerja

Data Pelamar Kerja

Data Pelamar Kerja

Pelamar Kerja

1.1 Masukk

an dan ubah data

Pengguna

Tabel Pelamar

Kerja

1.3 Fuzzy

Query Pengguna

Tabel Nilai

Tabel

Jeinis Tes

Tabel Temporary

1.2 Inisialisai hal yang

dibutuhkan

Pengguna Pengguna Pengguna Pengguna

Tabel Hasil

Tabel

Kriteria

67

Dari diagram peninjauan di atas terlihat ada tiga proses,

yaitu: proses masukkan dan ubah data, proses inisialisasi hal-hal

yang dibutuhkan, serta proses fuzzy query.

a) Proses Masukkan dan Ubah Data.

Pada proses ini pengguna dapat memasukan data para pelamar

kerja atau mengubah data para pelamar kerja yang ada dalam

database.

b) Proses Inisialisasi Hal-hal yang Dibutuhkan.

Pada proses ini pengguna harus memasukkan hal-hal yang

dibutuhkan oleh sistem sebelum melakukan fuzzy query seperti

variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan

database (nama database, tabel, dan field) nilai. Untuk

kebutuhan sistem yang terakhir ini digunakan sebagai atribut

pada variabel fuzzy yang berhubungan dengan dari mana asal

data yang akan di cari nilai keanggotaannya.

c) Proses fuzzy query

Pada proses ini terjadi penghitungan nilai derajat keanggotaan

(µ), penganalisaan query dan penghitungan firestrength.

3) Detail Diagram

a) Level 1, Proses 2

Pada detail diagram ini akan ditampilkan proses lebih

detail dari proses 2. Seperti terlihat pada Gambar 3.6.

68

Gambar 3.6 Detail Diagram Level 1, Proses 2

Dari Gambar 3.6 diatas terlihat ada tiga proses, yaitu:

i. Pendefinisian variabel fuzzy. Pengguna dapat menentukan

variabel fuzzy yang diperlukan dalam proses.

ii. Pendefinisian himpunan fuzzy. Selain membutuhkan variabel

fuzzy, proses juga membutuhkan himpunan fuzzy. Oleh

karena itu pengguna dapat menentukan sendiri himpunan

fuzzy pada masing-masing variabel fuzzy yang akan

dimasukkan ke dalam proses.

iii. Pendefinisian fungsi keanggotan. Pengguna dapat

menentukan sendiri fungsi keanggotaan pada masing-masing

himpunan fuzzy. Pendefinisian fungsi keanggotaan ini juga

mencangkup semesta pembicaraan dan domain pada masing-

masing himpunan fuzzy.

Fungsi keanggotaan

Himpunan fuzzy

Variabel fuzzy

Fuzzy query

Fuzzy query

Fuzzy query

Definisi fungsi keanggotaan

Himpunan fuzzy Variabel fuzzy

Definisi himpunan fuzzy

Definisi variabel fuzzy

Pengguna

1.2.2 Pendefinisian

himpunan

fuzzy

Pengguna

Pengguna

1.2.3 Pendefinisian

fungsi keanggotaan

1.2.1 Pendefinisian variabel

fuzzy

69

b) Level 1, Proses 3

Pada detail diagram ini akan ditampilkan proses lebih

menyeluruh dari proses 3. Seperti terlihat pada Gambar 3.7.

Gambar 3.7 Detail Diagram Level 1, Proses 3

Pada proses 3 terdapat lima proses:

i. Mengisi Database Tabel dan Field Nilai

Nama database, tabel dan field nilai ditentukan oleh

pengguna. Proses ini diperlukan sebagai data masukkan dari

hasil-hasil tes yang telah di lalui oleh para pelamar kerja yang

kemudian nilai tersebut akan di olah sesuai dengan atribut

dari variabel fuzzy yang telah ditentukan, variabel-variabel

Data hasil tes

Pelamar kerja terrekomendasi

Query

Variabel linguistik

Masukkan nilai tes

Data

temporary

Data hasil tes

Data temporary

Data nilai tes

Inisialisasi hal yang

dibutuhkan

Inisialisasi hal yang dibutuhkan

Inisialisasi hal yang dibutuhkan

1.3.3 Penghitungan

derajat keanggotaan

Pengguna

1.3.4 Penghitungan

nilai fire

strength

1.3.5 Menampilkan

tabel

1.3.2 Ambil

statement dari sintaks

Tabel temporary

Tabel hasil

Pengguna

Tabel Nilai

Pengguna

1.3.1 Menyimpan nilai hasil tes

70

yang akan di-fuzzy query-kan harus berada pada satu tabel

yang sama.

ii. Penghitungan Derajat Keanggotaan

Proses ini menghitung nilai derajat keanggotaan dari masing-

masing himpunan fuzzy yang ada dalam variabel fuzzy yang

telah ditentukan oleh pengguna. Penghitungan nilai derajat

keanggotaan juga di dapat dari fungsi keanggotaan yang telah

ditentukan oleh pengguna.

Data yang akan di hitung nilai keanggotaannya adalah

berdasarkan atribut dari nama database, tabel dan field yang

ada pada tabel hasil kemudian hasilnya akan ditampilkan oleh

tabel sTemp.

iii. Ambil Statement dari sintaks “where”

Proses ini adalah proses untuk mengambil variabel linguistik

yang ada pada query dan pada sistem ini variabel linguistik

terletak pada sintaks “where”.

iv. Penghitungan Nilai Firestrength

Firestrength menunjukkan seberapa besar rekomendasi yang

diberikan oleh sistem (firestrength memiliki nilai kisaran

antara 0 – 1). Nilai satu menunjukkan nilai rekomendasi

penuh, semakin mendekati nol maka pelamar kerja tersebut

semakin tidak direkomendasi. Penghitungan firestrength ini

71

membutuhkan data dari tabel hasil dan variabel linguistik dari

query yang ada.

Selama melakukan proses penghitungan firestrength, data

sementara akan di simpan dalam tabel temporary dan setelah

penghitungan selesai, hasil akhir dari penghitungan juga akan

di simpan dalam tabel temporary.

v. Menampilkan tabel temporary

Proses ini merupakan proses yang terakhir dari rangkaian

proses dalam sistem ini. Proses ini akan menampilkan tabel

temporary yang berisi nilai rekomendasi untuk masing-

masing pelamar kerja. Proses ini sangat sederhana karena

hanya mengambil data dari tabel temporary dan

menampilkannya pada GUI.

3. Proses Penghitungan Firestrength

Operator yang bisa digunakan untuk menghitung firestrength hanya

ada dua yaitu AND dan OR. Karena dalam query dapat memiliki variabel

linguistik yang banyak pada sintaks where-nya, maka dibutuhkan suatu

metode agar sistem tahu operand dan operator mana yang harus

dikerjakan lebih dahulu. Oleh karena itu, dalam sistem ini akan

menggunakan metode Infix pada statement variabel linguistiknya. Sebagai

contoh diberikan statement linguistik berikut:

72

Where Tes Kompetensi = ”lulus” and Tes Wawancara = “lulus”

or Kreaplin = “baik”

Urutan pengerjaan yang seharusnya dilakukan adalah:

a. Pertama, sistem akan mengambil fungsi keanggotaan dari variabel

fuzzy tes kompetensi dengan himpunan fuzzy lulus dan variabel fuzzy

tes wawancara dengan himpunan fuzzy lulus yang telah ada pada tabel

temporary. Kemudian melakukan operasi dengan operator and, karena

operatornya and maka data yang diambil adalah nilai minimal dari

kedua nilai keanggotaan tersebut. Setelah itu hasilnya di simpan pada

tabel temporary.

b. Kedua, sistem kemudian mengambil nilai sementara yang ada pada

tabel temporary tadi untuk dilakukan operasi penghitungan firestrength

dengan operand dan operator berikutnya. Hasilnya akan kembali di

simpan dalam tabel temporary. Begitu seterusnya. Setelah seluruh

variabel di eksekusi kemudian hasilnya dioperasikan dengan variabel

nonfuzzy.

Where Tes Kompetensi= “lulus” and

Tes Wawancara = “lulus”

or Kreaplin = “baik”

Pertama

Kedua

73

c. Karena statement sudah habis, berarti nilai terakhir yang dimasukkan ke

dalam tabel temporary adalah hasilnya. Contoh:

Statement where pada query adalah:

where tes kompetensi = lulus and tes wawancara = lulus or

kreaplin = baik and magang = baik

Sehingga penghitungan firestrength-nya adalah:

Firestrength = Max(Min(teskompetensi_lulus,

teswawancara_lulus), Min(kreaplin_baik, magang_baik,))

4. Pembuatan Graphical User Interface (GUI)

Pembuatan Graphical User Interface (GUI) dan program dalam

sistem ini menggunakan Delphi v7.0 sebagai bahasa pemrograman. Secara

sederhana user interface yang ada sebagai berikut:

a. Menu Utama

Frame menu utama merupakan tampilan yang disediakan untuk

melakukan semua proses yang berhubungan dengan fuzzy query dalam

sistem ini. Pada frame ini terdapat tabbedpane di mana masing-

masing tab berisi tools sesuai dengan fungsinya (gambar 3.8).

74

Gambar 3.8 Tampilan Menu Utama

1) Tab Data Pelamar

Tab data pelamar ini merupakan tab untuk mengisikan data-

data para pelamar kerja seperti nama, alamat, tempat lahir, tanggal

lahir, usia, dan pengalaman kerja. Pada tab ini terdapat beberapa

tombol, yaitu:

75

Gambar 3.9 Tampilan dari Tab Data Pelamar

a) Tombol tambah

Tombol ini digunakan untuk menambah data-data yang

masuk dari para pelamar kerja. Jika tombol ini di tekan maka tabel

data pelamar kerja akan menambah baris kosong untuk kemudian

baris tersebut di isi dengan data yang diinginkan.

76

Gambar 3.10 Tampilan Frame Data Pelamar Tambah Data

b) Tombol Edit

Tombol ini digunakan untuk mengubah data-data yang

keliru dari para pelamar kerja yang telah dimasukkan sebelumnya,

misalnya salah ketik nama, alamat dan lain sebagainya. Dari

gambar diatas terlihat jika tombol tersebut di tekan maka akan

muncul frame ubah pada jendela berikutnya kemudian pengguna

dapat merubah data yang di anggap keliru sesuai dengan apa yang

ingin diluruskan.

77

Gambar 3.11 Tampilan Frame Data Pelamar Edit Data

c) Tombol hapus

Tombol ini digunakan untuk menghapus data-data yang

telah dimasukkan kedalam tabel pelamar kerja. Jika tombol ini di

tekan maka data yang telah dimasukkan akan di hapus dengan

terlebih dahulu muncul tab konfirmasi sebelum menghapus data

tersebut. Hal ini diperlukan untuk menghindari terjadinya kesalahan

hapus sehingga ketika ingin mengurungkan untuk menghapus data

tersebut data masih bisa diselamatkan.

78

Gambar 3.12 Tampilan Frame Data Pelamar Hapus Data

2) Tab Jenis Tes

Tab jenis tes ini merupakan tab untuk melakukan inisialisasi

awal seperti membuat variabel fuzzy (tampilan sebelah kiri),

himpunan fuzzy, fungsi keanggotaan, dan domain (tampilan sebelah

kanan). Pada tab ini terdapat beberapa tombol, yaitu:

79

Gambar 3.13 Tampilan dari Tab Jenis Tes

a) Tombol Tambah Jenis Tes (Variabel Fuzzy)

Tombol ini digunakan untuk menambah jenis tes (variabel

fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil

menu untuk menambah jenis tes. Tampilan untuk menambah

jenis tes terlihat seperti pada gambar 3.14.

80

Gambar 3.14 Tampilan Frame Tambah Jenis Tes

b) Tombol Edit Jenis Tes

Tombol ini digunakan untuk mengubah jenis tes (variabel

fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil

menu untuk mengubah jenis tes.

81

Gambar 3.15 Tampilan Frame Edit Jenis Tes

c) Tombol Hapus Jenis Tes

Tombol ini digunakan untuk menghapus jenis tes (variabel

fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil

menu untuk menghapus jenis tes. Tampilan untuk menghapus

jenis tes terlihat seperti pada gambar 3.16.

82

Gambar 3.16 Tampilan Frame Hapus Jenis Tes

d) Tombol Tambah Kriteria (Himpunan Fuzzy)

Tombol ini digunakan untuk menambah kriteria

(himpunan fuzzy) pada sistem. Jika tombol ini di tekan maka

akan tampil menu untuk menambah kriteria (himpunan fuzzy),

kurva (fungsi keanggotaan), serta batas-batas (domain).

Tampilan untuk batas-batas menyesuaikan, tergantung fungsi

keanggotaan yang di pilih. Tampilan untuk menambah kriteria

terlihat seperti pada gambar 3.17.

83

Gambar 3.17 Tampilan Frame Tambah Kriteria.

e) Tombol Edit Kriteria

Tombol ini digunakan untuk mengubah kriteria (himpunan

fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil

menu untuk mengubah kriteria (himpunan fuzzy), kurva (fungsi

keanggotaan) serta batas-batas (domain). Tampilan untuk batas-

batas menyesuaikan, tergantung fungsi keanggotaan yang di

pilih. Tampilan untuk mengubah kriteria terlihat seperti pada

gambar 3.18.

84

Gambar 3.18 Tampilan Frame Edit Kriteria

f) Tombol Hapus Kriteria

Tombol ini digunakan untuk menghapus kriteria (himpunan

fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil

menu untuk menghapus kriteria (himpunan fuzzy), kurva (fungsi

keanggotaan) serta batas-batas (domain). Tampilan untuk

menghapus kriteria terlihat seperti pada gambar 3.19.

85

Gambar 3.19 Tampilan Frame Hapus Kriteria

3) Tab Input Nilai

Tab input nilai ini merupakan tab untuk memasukkan nilai-

nilai dari berbagai macam tes yang telah di lalui oleh para pelamar

kerja, misalnya: tes kompetensi, tes wawancara, beberapa macam

psikotes, test TOEFL, dan lain-lain. Pada tab ini terdapat dua tombol,

yaitu tombol Ok untuk menyimpan nilai yang kemudian akan di

taruh pada tabel hasil dan tombol batal untuk membatalkan proses

penyimpanan nilai. Apabila tombol Ok di tekan maka akan muncul

frame dialog untuk mengkonfirmasi jadi atau tidaknya data di

simpan pada tabel hasil. Untuk lebih jelasnya dapat di lihat pada

86

gambar 3.20.

Gambar 3.20 Tampilan Frame Ok Pada Tab Input Nilai

4) Tab Hasil Nilai

Tab hasil nilai ini merupakan tab untuk menampilkan nilai-

nilai dari berbagai macam tes yang telah di lalui oleh para pelamar

kerja, misalnya: tes kompetensi, tes wawancara, beberapa macam

psikotes, test TOEFL, dan lain-lain. Tampilan untuk tab hasil nilai

terlihat seperti pada gambar 3.21.

87

Dalam tab ini terdapat tombol seleksi

Gambar 3.21 Tampilan Frame Hasil Nilai

Pada frame ini terdapat tombol seleksi yang apabila tombol ini

di tekan akan tampil menu seleksi pelamar yang didalamnya terdapat

proses query serta penghitungan firestrength yang akhirnya akan

memunculkan seberapa besar para pelamar kerja dapat di terima

(memiliki kriteria) untuk mengisi posisi yang ditawarkan.

88

Gambar 3.22 Tampilan Frame Seleksi Pelamar

K. Verifikasi

Proses verifikasi perangkat lunak dilakukan berdasarkan pemasangan

perangkat lunak pendukung seperti database server serta MySQL editor

kedalam komputer agar database yang ada pada perangkat lunak utama dapat

di akses di komputer. Apabila perangkat lunak utama masih belum bisa di

akses, maka dilakukan pengecekkan baik terhadap perangkat lunak

pendukung maupun terhadap configuration setting yang ada pada perangkat

lunak utamanya.

L. Validasi

Pengujian validasi perangkat lunak ini dilakukan dengan cara

melakukan proses pengamatan atau pemantauan terhadap kinerja orang-orang

yang di anggap lulus oleh sistem serta menguji kinerja orang-orang tersebut

dengan kasus yang di buat oleh pihak HRD sehingga pihak HRD dapat

memastikan apakah orang-orang itu benar-benar memiliki kemampuan sesuai

89

dengan apa yang telah di analisa oleh sistem. Waktu pengujian bisa dilakukan

dengan memanfaatkan masa kontrak karyawan atau sekurang-kurangnya tiga

bulan masa kerja. Dari proses pengujian serta pengamatan tersebut

diharapkan akan terjadi kesesuaian antara hasil penghitungan sistem

perangkat lunak dengan keadaan sebenarnya sehingga pada akhirnya

perangkat lunak ini dapat dipertanggung jawabkan serta dapat dijadikan

rujukan dalam setiap proses penseleksian pegawai baru di kemudian hari.

90

BAB IV

IMPLEMENTASI DAN PENGUJIAN

A. Perangkat Lunak

5. Implementasi Perangkat Lunak

Pada percobaan ini akan di uji jalannya aplikasi sesuai dengan urutan

proses yang telah di rancang dan hasil yang diharapkan adalah data para

pelamar kerja yang terokemendasi berdasarkan kriteria-kriteria yang telah

ditetapkan oleh pengguna. Pada pengujian kali ini data yang di ambil adalah

data para pelamar kerja yang ingin mengisi posisi sebagai electrician dan

datanya dapat di lihat pada gambar 4.1 berikut.

Gambar 4.1 Tabel Data Pelamar

91

Kemudian pengguna menentukan variabel fuzzy yang diperoleh dari

kriteria-kriteria yang akan di ambil untuk menseleksi para pelamar kerja.

Kriteria-kriteria tersebut berupa persyaratan serta jenis-jenis tes yang harus di

lalui dalam sebuah proses penerimaan karyawan baru untuk posisi

electrician yang terdiri dari:

a. Tes Kompetensi

Dari kriteria tes kompetensi ini kemudin di buat kategori “baik”

untuk dijadikan sebagai himpunan fuzzy, fungsi keanggotaan S-

Pertumbuhan di buat untuk memenuhi kategori tes kompetensi serta di

buat nilai domainnya dengan nilai terendah 60 dan tertinggi 100.

Gambar 4.2 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Tes Kompetensi

92

b. Tes Wawancara

Himpunan fuzzy dari variabel fuzzy tes wawancara adalah

“baik”, fungsi keanggotaan yang di pakai adalah fungsi keanggotaan S-

Pertumbuhan dan nilai domai untuk tes wawancara adalah 60 sampai

dengan 100.

Gambar 4.3 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Tes Wawancara

c. Tes Kreaplin

Himpunan fuzzy untuk tes kreaplin adalah “cukup”, “baik” dan

“topskor”. Fungsi keanggotaan yang di pakai adalah fungsi

keanggotaan bahu dan nilai domai untuk tes kreaplin dari tiap-tiap

kategori adalah cukup 5 – 8, baik 7 – 11, dan top skor 10 - 14.

93

Gambar 4.4 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Tes Kreaplin Cukup

Gambar 4.5 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Tes Kreaplin Baik

94

Gambar 4.6 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Tes Kreaplin Topskor

d. Magang

Himpunan fuzzy untuk magang adalah “baik”, fungsi

keanggotaan yang di pakai adalah fungsi keanggotaan S-Pertumbuhan

dan nilai domai untuk magang adalah 60 sampai dengan 100.

95

Gambar 4.7 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai

Domain untuk Kriteria Magang

Setelah variabel, himpunan, fungsi keanggotaan serta domain dari

logika fuzzy di buat langkah selanjutnya adalah memasukkan semuan nilai

hasil ujian yang telah distandardkan sebelumnya ke dalam tabel nilai tes

dan hasilnya akan terlihat seperti gambar 4.8 berikut ini.

96

Gambar 4.8 Tabel Input Nilai (Data 34 Nilai Teratas)

Setelah semua nilai hasil tes dimasukkan, langkah selanjutnya

adalah menyimpan nilai tersebut dan hasilnya dapat dilihat pada tabel hasil.

Jika terjadi kekeliruan dalam memasukkan data, pengguna dapat langsung

mengubahnya dengan cara mengklik data pada kolom tabel yang datanya

keliru kemudian mengubahnya dengan cara memasukkan langsung data

baru pada kolom tabel tersebut sebelum tab input ini di tutup. Karena tabel

nilai ini merupakan tabel temporary maka data-data yang dimasukkan akan

hilang dengan sendirinya ketika pengguna menekan tombol OK atau

pengguna menutup jendela tab input nilai. Jadi, pastikan pengguna

memasukkan data dengan benar sebelum menekan tombol Ok atau sebelum

97

menutup tab input nilai.

Gambar 4.9 Tabel Hasil (Data 30 Nilai Teratas)

Dari tabel hasil ini pengguna dapat memulai proses penseleksian

pelamar kerja yang akan direkomendasikan untuk mengisi posisi

electrician dengan menekan tombol seleksi yang terletak pada pojok kiri

bawah dari layout tabel hasil dengan menggunakan mouse. Ketika tombol

seleksi di tekan maka akan muncul frame seleksi.

Di dalam frame ini pada kolom sisi kanan atas memuat semua

variabel serta himpunan fuzzy yang telah di buat sebelumnya sedangkan

pada kolom sisi kiri atas digunakan untuk menyaring kategori yang telah

kita tentukan sebagai proses peng-query-an. Selain itu pada frame ini juga

terdapat kolom untuk variabel nonfuzzy yang datanya di ambil dari tabel

98

data pelamar. Variabel nonfuzzy ini berfungsi untuk mengakomodasi

kriteria yang cukup hanya di lihat dengan kategori ya dan tidak.

Misalkan standard yang ditetapkan oleh pengguna untuk posisi

electrician adalah tes kompetensi baik, tes wawancara baik, tes kreaplin

baik, magang baik, serta pengalaman kerja tidak diutamakan, maka

pengguna dapat menyaringnya dengan menekan tombol panah warna hijau

dengan sebelumnya menekan kursor mouse pada kolom variabel serta

himpunan fuzzy yang diinginkan, dilanjutkan dengan penyaringan kategori

pada variabel nonfuzzy. Setelah proses peng-query-an dilakukan hal

berikutnya yang harus dilakukan adalah menekan tombol cari pelamar

sesuai dengan filter dan hasil dari pencarian tersebut dapat di lihat pada

tabel yang terdapat di kolom bawah dari frame seleksi.

99

Gambar 4.10 Frame Seleksi Pelamar

Tabel pada frame seleksi merupakan tabel temporary maka data itu

akan hilang dengan sendirinya ketika pengguna menekan tombol OK atau

menutup jendela tab seleksi pelamar atau membuat filter seleksi baru. Jadi,

pastikan pengguna telah mendokumentasikan data tersebut atau jika sudah

terlanjur maka ulangi tahap penseleksiannya. Untuk memudahkan

pemahaman urutan kerja dari perangkat lunak ini, dapat dilihat pada

diagram alir pada gambar 4.11.

100

Gambar 4.11 Diagram Alir Cara Kerja Sistem

6. Analisa Penghitungan Fungsi Keanggotaan Fuzzy

Dari penjelasan pembahasan sebelumnya, nilai yang tersaji pada tabel

seleksi pelamar di dapat dari proses penghitungan data yang bersumber dari

tabel hasil. Nilai-nilai tersebut merupakan hasil penghitungan dari tiap-tiap

variabel, himpunan, serta fungsi keanggotaan yang telah ditentukan

Tidak

Ya

Tidak

Ya

............

Mulai

Data pelamar

Jenis tes

Input Nilai

Masukkan Data Pelamar

Masukkan jenis dan kriteria tes

Masukkan dan simpan nilai-nilai tes

............

Hasil Nilai

Tampilan Hasil seleksi

Seleksi

Tentukan jenis dan kriteria yang ingin di seleksi (proses peng-query-an)

Eksekusi query

yang telah di buat

Selesai

Tambah/edit/hapus data?

Tambah/edit/hapus jenis dan kriteria tes?

101

sebelumnya. Adapun penjelasan lebih lengkapnya dapat di lihat pada

pembahasan berikut ini.

a. Tes Kompetensi

Pada kolom tes kompetensi, nilai himpunan “lulus” merupakan

nilai yang di dapat dari penghitungan logika fuzzy dengan menggunakan

fungsi keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat

di ambil beberapa sampel data dari para pelamar kerja berikut ini.

1) Umar Hadi Waluyo

Nilai tes kompetensi = 77, batas bawah (α) = 60, batas atas (γ) = 100.

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes kompetensi bagi Umar Hadi Waluyo adalah:

µLulus[77] = 2((x – α)/(γ – α))2

= 2((77 – 60)/(100 – 60))2

= 2((17)/(40))2

= 2(0,425)2

= 2(0,180625)

= 0,36125

2) Arif Setiyawan

Nilai tes kompetensi = 70, batas bawah (α) = 60, batas atas (γ) = 100.

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes kompetensi bagi Arif Setiyawan adalah:

µLulus[70] = 2((x – α)/(γ – α))2

102

= 2((70 – 60)/(100 – 60))2

= 2((10)/(40))2

= 2(0,25)2

= 2(0,0625)

= 0,125

3) Agus Joko Umbaran

Nilai tes kompetensi = 58, batas bawah (α) = 60, batas atas (γ) = 100.

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes kompetensi bagi Agus Joko Umbaran adalah 0 karena nilai yang

dimiliki oleh Agus Joko Umbaran ≤ 60. Sesuai dengan rumus fungsi

keanggotaan S-Pertumbuhan bahwa apabila nilai x ≤ batas bawah (α)

maka nilai keanggotaannya = 0.

Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja

lainnya, digunakan rumus yang sama serta hasilnya dapat di lihat pada

kolom “lulus” pada tabel temporary pada frame seleksi pelamar.

b. Tes Wawancara

Pada kolom tes wawancara, nilai himpunan “lulus” merupakan

nilai yang di dapat dari penghitungan logika fuzzy dengan menggunakan

fungsi keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat

di ambil beberapa sampel data dari para pelamar kerja berikut ini.

1) Umar Hadi Waluyo

Nilai tes wawancara = 66, batas bawah (α) = 60, batas atas (γ) = 100.

103

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes wawancara bagi Umar Hadi Waluyo adalah:

µLulus[66] = 2((x – α)/(γ – α))2

= 2((66 – 60)/(100 – 60))2

= 2((6)/(40))2

= 2(0,15)2

= 2(0,0225)

= 0,045

2) Arif Setiyawan

Nilai tes wawancara = 78, batas bawah (α) = 60, batas atas (γ) = 100.

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes wawancara bagi Arif Setiyawan adalah:

µLulus[78] = 2((x – α)/(γ – α))2

= 2((78 – 60)/(100 – 60))2

= 2((18)/(40))2

= 2(0,45)2

= 2(0,2025)

= 0,405

3) Agus Joko Umbaran

Nilai tes wawancara = 65, batas bawah (α) = 60, batas atas (γ) = 100.

Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel

tes wawancara bagi Agus Joko Umbaran adalah:

104

µLulus[65] = 2((x – α)/(γ – α))2

= 2((65 – 60)/(100 – 60))2

= 2((5)/(40))2

= 2(0,125)2

= 2(0,015625)

= 0,03125

Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja

lainnya, menggunakan rumus yang sama serta hasilnya dapat di lihat

pada kolom “lulus_1” pada tabel temporary pada frame seleksi pelamar.

c. Kreaplin

Pada kolom kreaplin, nilai himpunan “baik” merupakan nilai yang

di dapat dari penghitungan logika fuzzy dengan menggunakan fungsi

keanggotaan bahu. Sebagai contoh penghitungan dapat di ambil beberapa

sampel data dari para pelamar kerja berikut ini.

1) Umar Hadi Waluyo

Nilai kreaplin = 7, kurva bahu merupakan perpaduan dari dua buah

kurva linear serta sebuah kurva segitiga, karena himpunan “baik”

terletak pada kurva segitiga maka domain (batas) yang digunakan

adalah domain kurva segitiga dimana batas 1 = 7, batas 2 = 9, batas 3

= 11. Maka nilai fungsi keanggotaan untuk himpunan “baik” pada

variabel tes kreaplin bagi Umar Hadi Waluyo adalah 0 karena nilai

yang dimiliki oleh Umar Hadi Waluyo ≤ 7. Sesuai dengan rumus

105

fungsi keanggotaan segitiga bahwa apabila nilai x ≤ batas 1 (a) maka

nilai keanggotaannya = 0.

2) Arif Setiyawan

Nilai kreaplin = 6, kurva bahu merupakan perpaduan dari dua buah

kurva linear serta sebuah kurva segitiga, karena himpunan “baik”

terletak pada kurva segitiga maka domain (batas) yang digunakan

adalah domain kurva segitiga dimana batas 1 = 7, batas 2 = 9, batas 3

= 11. Maka nilai fungsi keanggotaan untuk himpunan “baik” pada

variabel tes kompetensi bagi Arif Setiyawan adalah 0 karena nilai

yang dimiliki oleh Arif Setiyawan ≤ 7. Sesuai dengan rumus fungsi

keanggotaan segitiga bahwa apabila nilai x ≤ batas 1 (a) maka nilai

keanggotaannya = 0.

3) Agus Joko Umbaran

Nilai kreaplin = 5, kurva bahu merupakan perpaduan dari dua buah

kurva linear serta sebuah kurva segitiga, karena himpunan “baik”

terletak pada kurva segitiga maka domain (batas) yang digunakan

adalah domain kurva segitiga dimana batas 1 (a) = 7, batas 2 (b) = 9,

batas 3 (c) = 11. Maka nilai fungsi keanggotaan untuk himpunan

“baik” pada variabel kreaplin bagi Agus Joko Umbaran adalah 0

karena nilai yang dimiliki oleh Agus Joko Umbaran ≤ 7. Sesuai

dengan rumus fungsi keanggotaan segitiga bahwa apabila nilai x ≤

batas 1 (a) maka nilai keanggotaannya = 0.

106

Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja

lainnya, menggunakan rumus yang sama serta hasilnya dapat dilihat

pada kolom “baik” pada tabel temporary pada frame seleksi pelamar.

Adapun untuk mengetahui proses penghitungan dengan nilai

yang memenuhi persyaratan himpunan “baik” diberikan contoh sebagai

berikut.

1) Rosit Evendi

Nilai kreaplin = 8, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai

fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin

bagi Rosit Evendi adalah:

µbaik[8] = (x – a)/(b – a)

= (8 – 7)/(9 – 7)

= 0,5

2) Abdul Manan

Nilai kreaplin = 9, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai

fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin

bagi Abdul Manan adalah 1 karena nilai yang dimiliki oleh Abdul

Manan = 9. Sesuai dengan rumus fungsi keanggotaan segitiga bahwa

apabila nilai x = batas 2 (b) maka nilai keanggotaannya = 1.

3) Candra Agung

Nilai kreaplin = 10, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai

fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin

107

bagi Candra Agung adalah:

µbaik[10] = (c – x)/(c – b)

= (11 – 10)/(11 – 9)

= 0,5

d. Magang

Pada kolom magang, nilai himpunan “baik” merupakan nilai yang

di dapat dari penghitungan logika fuzzy dengan menggunakan fungsi

keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat di

ambil beberapa sampel data dari para pelamar kerja berikut ini.

1) Umar Hadi Waluyo

Nilai magang = 70, batas bawah (α) = 60, batas atas (γ) = 100. Maka

nilai fungsi keanggotaan untuk himpunan “baik” pada variabel

magang bagi Umar Hadi Waluyo adalah:

µLulus[77] = 2((x – α)/(γ – α))2

= 2((70 – 60)/(100 – 60))2

= 2((10)/(40))2

= 2(0,25)2

= 2(0,0625)

= 0,125

2) Arif Setiyawan

Nilai magang = 70, batas bawah (α) = 60, batas atas (γ) = 100. Maka

nilai fungsi keanggotaan untuk himpunan “baik” pada variabel

108

magang bagi Arif Setiyawan adalah:

µLulus[70] = 2((x – α)/(γ – α))2

= 2((70 – 60)/(100 – 60))2

= 2((10)/(40))2

= 2(0,25)2

= 2(0,0625)

= 0,125

3) Agus Joko Umbaran

Nilai magang = 60, batas bawah (α) = 60, batas atas (γ) = 100. Maka

nilai fungsi keanggotaan untuk himpunan “baik” pada variabel

magang bagi Agus Joko Umbaran adalah 0 karena nilai yang dimiliki

oleh Agus Joko Umbaran ≤ 60. Sesuai dengan rumus fungsi

keanggotaan S-Pertumbuhan bahwa apabila nilai x ≤ batas bawah (α)

maka nilai keanggotaannya = 0.

Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja

lainnya, digunakan rumus yang sama serta hasilnya dapat di lihat pada

kolom “baik_2” pada tabel temporary pada frame seleksi pelamar.

7. Analisa Penghitungan Firestrength

Dari frame seleksi pelamar di atas dapat dilihat statement “where”

pada proses peng-query-an tersebut adalah:

Where tes kompetensi = lulus and tes wawancara = lulus and tes

kreaplin = baik and magang = baik and pengalaman kerja = all.

109

Sehingga penghitungan firestrength-nya adalah:

Firestrength = Min(µtes kompetensi lulus, µtes wawancara lulus,

µtes kreaplin baik, µmagang baik)

Hasil dari query di atas kemudian di saring kembali oleh masukkan

nonfuzzy yang telah di buat yaitu pengalaman kerja = all. Sebagai contoh

penghitungan di ambil dari data beberapa pelamar kerja sebagai berikut.

1) Saleh Al-farabi

Dari tabel temporary pada frame seleksi pelamar dapat di lihat

bahwa Saleh Al-farabi memiliki data sebagai berikut:

• Kompetensi = 0,98875

• Wawancara = 0,93875

• Kreaplin = 1

• Magang = 0,5

Sehingga penghitungan firestrength-nya adalah:

Firesrength = Min(0,98875,0,93875,1, 0,5) = 0,5

2) Suryana

Dari tabel temporary pada frame seleksi pelamar dapat di lihat

bahwa Suryana memiliki data sebagai berikut:

• Kompetensi = 0,93875

• Wawancara = 0,93875

• Kreaplin = 1

• Magang = 0,5

110

Sehingga penghitungan firestrength-nya adalah:

Firesrength = Min(0,93875,0,93875,1, 0,5) = 0,5

3) Dirza Suhendra

Dari tabel temporary pada frame seleksi pelamar dapat di lihat

bahwa Dirza Suhendra memiliki data sebagai berikut:

• Kompetensi = 0,84875

• Wawancara = 0,68

• Kreaplin = 0,5

• Magang = 0,5

Sehingga penghitungan firestrength-nya adalah:

Firesrength = Min(0,84875, 0,68,0,5,0,5) = 0,5

Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja

lainnya, digunakan rumus yang sama serta hasilnya dapat dilihat pada

kolom “firestrength” pada tabel temporary pada frame seleksi pelamar.

Pada kolom firestrength dalam tabel seleksi pelamar, hasil

penghitungannya kemudian diurutkan dari nilai firestrength tertinggi

hingga nilai firestrength terendah. Hal ini dimaksudkan agar pengguna

dapat dengan mudah menentukan para pelamar kerja yang dinyatakan di

terima untuk posisi electrician dengan cara mengambil data para pelamar

kerja dari nilai firestrength tertinggi sebanyak yang dibutuhkan.

Apabila perusahaan hanya membutuhkan tiga orang untuk

ditempatkan pada posisi electrician maka nama-nama yang masuk

111

nominasi adalah Saleh Al-farabi, Suryana, dan Dirza Suhendra.

8. Perbandingan Hasil Penghitungan Sistem Lama Dengan Sistem Baru

Membandingkan antara sistem yang di buat saat ini dengan sistem

yang sudah ada pada perusahaan atau instansi menjadi suatu keniscayaan

untuk mengetahui apakah sistem yang baru ini nantinya dapat

menggantikan peran sistem sebelumnya.

a. Hasil Pembobotan Nilai

Pembobotan yang ditetapkan oleh pihak HRD P.T. BAT

Indonesia Tbk. adalah untuk nilai tes kompetensi x 0,3, tes wawancara

x 0,3, kreaplin x 0,2, dan magang x 0,2. Hasil dari pembobotan terhadap

nilai tes para pelamar kerja secara lengkap dapat di lihat pada tabel 4.1

berikut.

112

Tabel. 4.1 Tabel 25 Teratas Hasil Pembobotan Nilai

No. No

Id Nama

Tes

Kompetensi Bobot Hasil

Tes

Wawancara Bobot Hasil Kreaplin Bobot Hasil Magang Bobot Hasil Hasil

1 36 Esti Wahyuningsih 1 0,3 0,3 1 0,3 0,3 0,79 0,2 0,158 0,8 0,2 0,16 0,918

2 17 Saiful Jauhari 0,9 0,3 0,27 0,9 0,3 0,27 0,86 0,2 0,172 0,8 0,2 0,16 0,872

3 30 Miftahul Jannah 0,99 0,3 0,297 0,99 0,3 0,297 0,57 0,2 0,114 0,8 0,2 0,16 0,868

4 63 Saleh Al-Farabi 0,97 0,3 0,291 0,93 0,3 0,279 0,64 0,2 0,128 0,8 0,2 0,16 0,858

5 64 Suryana 0,93 0,3 0,279 0,93 0,3 0,279 0,64 0,2 0,128 0,8 0,2 0,16 0,846

6 28 Ferdinand Anton 0,8 0,3 0,24 1 0,3 0,3 0,71 0,2 0,142 0,8 0,2 0,16 0,842

7 16 Herilmiwati 0,91 0,3 0,273 0,8 0,3 0,24 0,79 0,2 0,158 0,8 0,2 0,16 0,831

8 12 Abdul Manan 1 0,3 0,3 0,8 0,3 0,24 0,64 0,2 0,128 0,8 0,2 0,16 0,828

9 13 Candra Agung 0,96 0,3 0,288 0,78 0,3 0,234 0,71 0,2 0,142 0,8 0,2 0,16 0,824

10 56 Agung Setiadi 0,83 0,3 0,249 0,97 0,3 0,291 0,5 0,2 0,1 0,8 0,2 0,16 0,8

11 11 Rosit Evendi 0,98 0,3 0,294 0,77 0,3 0,231 0,57 0,2 0,114 0,8 0,2 0,16 0,799

12 43 Dirza Suhendra 0,89 0,3 0,267 0,84 0,3 0,252 0,57 0,2 0,114 0,8 0,2 0,16 0,793

13 26 Hendra Ermi Devitra 0,88 0,3 0,264 0,96 0,3 0,288 0,5 0,2 0,1 0,7 0,2 0,14 0,792

14 27 Joko Triyanto 0,81 0,3 0,243 0,99 0,3 0,297 0,5 0,2 0,1 0,7 0,2 0,14 0,78

15 29 Maulani 0,79 0,3 0,237 0,88 0,3 0,264 0,57 0,2 0,114 0,8 0,2 0,16 0,775

16 50 Ferdiyansyah 0,84 0,3 0,252 0,82 0,3 0,246 0,64 0,2 0,128 0,7 0,2 0,14 0,766

17 44 Said Karim Johar 0,92 0,3 0,276 0,78 0,3 0,234 0,57 0,2 0,114 0,7 0,2 0,14 0,764

18 66 Haries Sutamin 0,82 0,3 0,246 0,8 0,3 0,24 0,64 0,2 0,128 0,7 0,2 0,14 0,754

19 65 Sunaryo 0,9 0,3 0,27 0,76 0,3 0,228 0,57 0,2 0,114 0,7 0,2 0,14 0,752

20 34 Denny Yuliansyah 0,8 0,3 0,24 0,85 0,3 0,255 0,57 0,2 0,114 0,7 0,2 0,14 0,749

21 10 Dedi Subianto 0,82 0,3 0,246 0,75 0,3 0,225 0,57 0,2 0,114 0,8 0,2 0,16 0,745

22 18 Akbar Nugraha 0,89 0,3 0,267 0,77 0,3 0,231 0,5 0,2 0,1 0,7 0,2 0,14 0,738

23 70 Jarot Adi Sutarto 0,91 0,3 0,273 0,7 0,3 0,21 0,57 0,2 0,114 0,7 0,2 0,14 0,737

24 59 Beni Wahyudi 0,8 0,3 0,24 0,8 0,3 0,24 0,57 0,2 0,114 0,7 0,2 0,14 0,734

25 53 Khairul Fuadi 0,92 0,3 0,276 0,59 0,3 0,177 0,79 0,2 0,158 0,6 0,2 0,12 0,731

113

b. Perbandingan Hasil Penghitungan Pembobotan Dengan Firestrength

Dari hasil penghitungan dengan cara pembobotan terlihat bahwa

Esti Wahyuningsih menempati posisi paling puncak, dengan kata lain Esti

Wahyuningsih memiliki nilai bobot paling tinggi, sedangkan dari hasil

penghitungan firestrength Saleh Al-farabi menempati posisi paling puncak

dan ini juga berarti bahwa Saleh Al-farabi memiliki nilai derajat

keanggotaan paling tinggi dari proses peng-query-an yang telah dilakukan.

Pada proses penghitungan firestength nama Esti Wahyuningsih

tidak termasuk, hal ini dikarenakan Esti Wahyuningsih dikategorikan oleh

sistem (logika fuzzy) sebagai orang yang tidak termasuk dalam kategori

yang ditetapkan oleh pengguna, yaitu: tes kompetensi lulus, tes wawancara

lulus, tes kreaplin baik, magang baik, dan pengalaman kerja tidak

diutamakan.

Hasil penghitungan dari fungsi keanggotaan pada himpunan fuzzy

kreaplin baik untuk Esti Wahyuningsih adalah 0, karena nilai yang dimiliki

oleh Esti Wahyuningsih ≥ 11. Sesuai dengan rumus fungsi keanggotaan

segitiga bahwa apabila nilai x ≥ batas 3 (11) maka nilai keanggotaannya = 0.

Akan tetapi apabila kategori dalam proses peng-query-an di ubah

menjadi tes kompetensi lulus, tes wawancara lulus, tes kreaplin topskor,

magang baik, dan pengalaman kerja tidak diutamakan maka Esti

Wahyuningsih termasuk dalam kategori tersebut, karena pada himpunan

fuzzy kreaplin topskor nilai yang dimiliki oleh Esti Wahyuningsih menjadi

114

anggota himpunan fuzzy tersebut dengan perincian perhitungannya adalah:

µLulus[11] = (x – b)/(b – a)

= (11 – 10)/(14 – 10)

= 1/4

= 0,25

Hal yang sama juga terjadi pada Saiful Jauhari yang menempati

posisi kedua atau satu tingkat di bawah Esti Wahyuningsih dalam

penghitungan menggunakan metode pembobotan. Artinya, seberapa pun

tinggi atau rendah nilai hasil tesnya akan menjadi tidak terseleksi oleh

sistem ketika nilai tersebut tidak termasuk dalam kategori yang ditentukan.

Gambar 4.18 Hasil Seleksi Dengan Mengubah Kategori Kreaplin Menjadi

Topskor.

115

BAB V

KESIMPULAN DAN DISKUSI

C. Kesimpulan

Dari hasil pegujian dan implementasi alat, maka dapat disimpulkan

bahwa peneltian ini telah berhasil dalam merancang dan membuat sebuah alat

yang dapat digunakan oleh perusahaan/institusi khususnya bagi Human and

Resource Department (HRD) dalam merekomendasikan siapa saja para

pelamar kerja yang dinyatakan layak untuk mengisi posisi yang tersedia. Di

antara bukti keberhasilan ini adalah sebagai berikut:

1. Pada perangkat lunak ini logika fuzzy berhasil dimasukkan kedalam proses

peng-query-an dalam sebuah database. Hal ini dibuktikan dari

keberhasilan perangkat lunak ini dalam mengeksekusi setiap proses peng-

query-an yang diberikan oleh pengguna ke dalam sistem.

2. Perangkat lunak ini dapat merekomendasikan siapa saja para pelamar kerja

yang dinyatakan layak untuk mengisi posisi tertentu berdasarkan kriteria

yang telah di buat sebelumnya.

D. Diskusi

Selama dan setelah penelitian ini terlaksana, sistem masih memiliki

kekurangan-kekurangan sebagai berikut:

1. Perangkat lunak ini hanya memberikan nilai derajat perekomendasian,

keputusan yang sebenarnya tergantung pada pengguna.

116

2. Untuk pengambilan keputusan yang lebih baik lagi dimungkinkan untuk

menggunakan metode kombinasi (hybrid) terhadap logika fuzzy,

contohnya adalah menggabungkan logika fuzzy dengan jaringan syaraf

tiruan.

117

DAFTAR PUSTAKA

Buku Referensi

Badriyah, Tessy. 2003. Oracle Academic Initiative Oracle9i Introduction to SQL.

Surabaya: Politeknik Elektronika Negeri Surabaya.

Galindo, José, Urrutia, Angélica and Piattini, Mario. 2006. Fuzzy Databases:

Modeling, Design and Implementation. Harshey: Idea Group Publishing

Kusumadewi, Sri dan Purnomo, Hari. 2004. Aplikasi Logika Fuzzy Untuk

Pendukung Keputusan. Yogyakarta: Graha Ilmu.

Timothy, J. Ross. 2004. Fuzzy Logic With Engineering Applications. Chichester:

John Wiley & Sons.

Artikel dan Jurnal

http://database.about.com.

http://fuzzy.sonalysts.com/How Fuzzy Query Works.html

Malaysian Journal of Computer Science, Vol. 10 No. 1, June 1997, pp. 42-46

118

LAMPIRAN

119

A. Listing Program Delphi

1. Halaman Depan

unit MainForm;

implementation

uses DataPelamarForm, DataJenisTesForm, NilaiForm,

HasilNilaiForm,

Rutinitas;

{$R *.dfm}

{$R winxp.res}

procedure TfrmMain.FormCreate(Sender: TObject);

begin

Self.WindowState := wsMaximized;

end;

procedure TfrmMain.actPelamarExecute(Sender: TObject);

begin

DataPelamar;

end;

procedure TfrmMain.actNilaiExecute(Sender: TObject);

begin

InputNilai;

end;

procedure TfrmMain.actJenisTesExecute(Sender: TObject);

begin

DataJenisTes;

end;

procedure TfrmMain.actHasilExecute(Sender: TObject);

begin

HasilNilai;

end;

end.

2. Form Data Pelamar

unit DataPelamarForm;

procedure DataPelamar;

implementation

uses DMForm, Rutinitas, TambahPelamarForm, DateUtils;

{$R *.dfm}

procedure DataPelamar;

var

120

aComponent: TComponent;

begin

aComponent := Application.FindComponent('frmDataPelamar');

if not Assigned(aComponent) then

frmDataPelamar := TfrmDataPelamar.Create(Application);

frmDataPelamar.Show;

end;

procedure TfrmDataPelamar.qryPelamarNewRecord(DataSet:

TDataSet);

function GetKode: string;

begin

with qryRutinitas do

try

SQL.Text := 'select max(idpelamar) from pelamar';

Open;

First;

Result := Format('%.5d',[Fields[0].AsInteger+1]);

finally

Free;

end;

end;

begin

qryPelamarkode.AsString := GetKode;

end;

procedure TfrmDataPelamar.qryPelamarAfterInsert(DataSet:

TDataSet);

begin

end;

procedure TfrmDataPelamar.qryPelamarCalcFields(DataSet:

TDataSet);

begin

if qryPelamartgllahir.IsNull then

qryPelamarUsia.AsVariant := null

else qryPelamarUsia.AsString :=

IntToStr(YearsBetween(qryPelamartgllahir.AsDateTime,Date)) + '

Th';

end;

121

procedure TfrmDataPelamar.qryPelamarBeforePost(DataSet:

TDataSet);

function IDPelamar: Integer;

begin

with qryRutinitas do

try

SQL.Text := 'select max(idpelamar) from pelamar';

Open;

First;

Result := Fields[0].AsInteger + 1;

finally

Free;

end;

end;

begin

if qryPelamaridpelamar.IsNull then

qryPelamaridpelamar.AsInteger := IDPelamar;

end;

procedure TfrmDataPelamar.FormCreate(Sender: TObject);

var

i: Integer;

begin

for i := 0 to qryPelamar.FieldCount -1 do

begin

if LowerCase(qryPelamar.Fields[i].FieldName) = 'nonfuzzy'

then

begin

qryPelamar.Fields[i].DisplayLabel := GetNonFuzzy;

Break;

end;

end;

inherited;

end;

procedure TfrmDataPelamar.qryPelamarAfterEdit(DataSet: TDataSet);

begin

TambahPelamar(DataSet)

end;

122

end.

3. Form Jenis Tes

unit DataJenisTesForm;

procedure DataJenisTes;

implementation

uses DMForm, TambahJenisTesForm, TambahKriteriaForm,

Rutinitas;

{$R *.dfm}

procedure DataJenisTes;

var

aComponent: TComponent;

begin

aComponent := Application.FindComponent('frmDataJenisTes');

if not Assigned(aComponent) then

frmDataJenisTes := TfrmDataJenisTes.Create(Application);

frmDataJenisTes.Show;

end;

procedure TfrmDataJenisTes.qryJenisTesAfterInsert(DataSet:

TDataSet);

begin

TambahJenisTes(DataSet);

end;

procedure TfrmDataJenisTes.qryJenisTesAfterOpen(DataSet:

TDataSet);

begin

qryKriteria.Close;

qryKriteria.Open;

end;

procedure TfrmDataJenisTes.qryKriteriaNewRecord(DataSet:

TDataSet);

begin

with DataSet do

begin

FieldByName('idjenistes').AsInteger :=

qryJenisTesidjenistes.AsInteger;

FieldByName('kurva').AsString := 'Linear Naik';

end;

end;

123

procedure TfrmDataJenisTes.qryKriteriaAfterInsert(DataSet:

TDataSet);

begin

TambahKriteria(DataSet);

end;

procedure TfrmDataJenisTes.actHapusKriteriaExecute(Sender:

TObject);

begin

if KonfirmasiHapus then

qryKriteria.Delete;

end;

procedure TfrmDataJenisTes.actTambahKriteriaExecute(Sender:

TObject);

begin

qryKriteria.Append;

end;

procedure TfrmDataJenisTes.actEditKriteriaExecute(Sender: TObject);

begin

qryKriteria.Edit;

end;

procedure TfrmDataJenisTes.qryKriteriaAfterPost(DataSet: TDataSet);

begin

qryJenisTes.Locate('idjenistes',qryKriteriaidjenistes.AsInteger,[]);

end;

procedure TfrmDataJenisTes.qryKriteriaBeforePost(DataSet:

TDataSet);

begin

with DataSet do

begin

if (FieldByName('kurva').AsString = 'Linear Naik') or

(FieldByName('kurva').AsString = 'Linear Turun') then

begin

FieldByName('c').AsVariant := null;

FieldByName('d').AsVariant := null;

end

else if (FieldByName('kurva').AsString = 'Kurva Segitiga') or

(FieldByName('kurva').AsString = 'Kurva S Pertumbuhan') or

124

(FieldByName('kurva').AsString = 'Kurva S Penyusutan') then

FieldByName('d').AsVariant := null;

end;

end;

procedure TfrmDataJenisTes.qryKriteriaaValidate(Sender: TField);

begin

if (qryKriteriakurva.AsString = 'S Pertumbuhan') or

(qryKriteriakurva.AsString = 'S Penyusutan') then

if not(qryKriteriac.IsNull) then

qryKriteriab.AsFloat := qryKriteriaa.AsFloat +

((qryKriteriac.AsFloat - qryKriteriaa.AsFloat) / 2);

end;

procedure TfrmDataJenisTes.qryKriteriacValidate(Sender: TField);

begin

if (qryKriteriakurva.AsString = 'S Pertumbuhan') or

(qryKriteriakurva.AsString = 'S Penyusutan') then

if not(qryKriteriaa.IsNull) then

qryKriteriab.AsFloat := qryKriteriaa.AsFloat +

((qryKriteriac.AsFloat - qryKriteriaa.AsFloat) / 2);

end;

end.

4. Form Tambah Jenis Tes

unit TambahJenisTesForm;

function TambahJenisTes(Dataset: TDataSet): Boolean;

implementation

uses DataJenisTesForm;

{$R *.dfm}

function TambahJenisTes(Dataset: TDataSet): Boolean;

begin

frmTambahJenisTes := TfrmTambahJenisTes.Create(Application);

with frmTambahJenisTes do

try

dsMaster.DataSet := Dataset;

Caption := 'Jenis Tes';

Result := ShowModal = mrOk;

finally

Free;

end;

125

end;

end.

5. Tambah Kriteria

unit TambahKriteriaForm;

function TambahKriteria(Dataset: TDataSet): Boolean;

implementation

uses DMForm, DataJenisTesForm, Rutinitas;

{$R *.dfm}

function TambahKriteria(Dataset: TDataSet): Boolean;

begin

frmTambahKriteria := TfrmTambahKriteria.Create(Application);

with frmTambahKriteria do

try

qryJenisTes.Open;

dsMaster.DataSet := Dataset;

cbxKurvaChange(cbxKurva);

Caption := 'Kriteria Penilaian';

Result := ShowModal = mrOk;

finally

Free;

end;

end;

procedure TfrmTambahKriteria.cbxKurvaChange(Sender: TObject);

var

vis: Boolean;

begin

vis := cbxKurva.ItemIndex in [0,1,2,3,4,5];

lblA.Visible := vis;

lblB.Visible := vis;

edtA.Visible := vis;

edtB.Visible := vis;

vis := cbxKurva.ItemIndex in [2,3,4,5];

lblC.Visible := vis;

edtC.Visible := vis;

vis := cbxKurva.ItemIndex = 3;

lblD.Visible := vis;

126

edtD.Visible := vis;

edtB.Enabled := cbxKurva.ItemIndex in [0,1,2,3];

end;

end.

6. Form Input Nilai

unit NilaiForm;

procedure InputNilai;

implementation

uses Rutinitas, DateUtils;

{$R *.dfm}

procedure InputNilai;

var

i: Integer;

str: TStrings;

begin

frmNilai := TfrmNilai.Create(Application);

with frmNilai do

try

Caption := 'Input Nilai';

str := TStringList.Create;

tblNilai.AddField('idpelamar',ftInteger);

tblNilai.AddField('tgllahir',ftDate);

tblNilai.AddField('kode',ftString,8);

tblNilai.AddField('nama',ftString,32);

tblNilai.AddField('alamat',ftString,64);

with qryRutinitas do

try

SQL.Text := 'select idjenistes,nama from jenistes';

SQL.Add('order by idjenistes');

Open;

First;

while not Eof do

begin

tblNilai.AddField(FieldByName('idjenistes').AsString,ftFloat);

str.Add(FieldByName('nama').AsString);

Next;

end;

127

tblNilai.Open;

Close;

SQL.Text := 'select * from pelamar order by kode';

Open;

First;

while not Eof do

begin

tblNilai.Append;

tblNilai.FieldByName('idpelamar').AsInteger :=

FieldByName('idpelamar').AsInteger;

tblNilai.FieldByName('tgllahir').AsDateTime :=

FieldByName('tgllahir').AsDateTime;

tblNilai.FieldByName('kode').AsString :=

FieldByName('kode').AsString;

tblNilai.FieldByName('nama').AsString :=

FieldByName('nama').AsString;

tblNilai.FieldByName('alamat').AsString :=

FieldByName('alamat').AsString;

tblNilai.Post;

Next;

end;

finally

Free;

end;

with grd1 do

for i := 0 to Columns.Count -1 do

begin

if (Columns[i].FieldName = 'idpelamar') or

(Columns[i].FieldName = 'tgllahir') then

Columns[i].Visible := False

else if Columns[i].FieldName = 'kode' then

begin

Columns[i].Title.Caption := 'Kode';

Columns[i].Width := 64;

Columns[i].ReadOnly := True;

end

else if Columns[i].FieldName = 'nama' then

begin

128

Columns[i].Title.Caption := 'Nama';

Columns[i].Width := 128;

Columns[i].ReadOnly := True;

end

else if Columns[i].FieldName = 'alamat' then

begin

Columns[i].Title.Caption := 'Alamat';

Columns[i].Width := 256;

Columns[i].ReadOnly := True;

end

else

begin

Columns[i].Title.Caption := str[i-5];

Columns[i].Title.Alignment := taRightJustify;

end;

end;

tblNilai.First;

ShowModal;

finally

str.Free;

Free;

end;

end;

{ TfrmNilai }

function TfrmNilai.Simpan: Boolean;

var

i: Integer;

idjenistes: Integer;

begin

Result := MessageDlg('Simpan data ?', mtConfirmation, [mbYes,

mbNo], 0) = mrYes;

if not Result then

Exit;

try

tblNilai.DisableControls;

with qryRutinitas do

try

SQL.Text := 'delete from nilai';

129

Execute;

Close;

SQL.Text := 'insert into nilai(';

SQL.Add('idpelamar,idjenistes,nilai)');

SQL.Add('values(');

SQL.Add(':idpelamar,:idjenistes,:nilai)');

tblNilai.First;

while not tblNilai.Eof do

begin

for i := 0 to tblNilai.FieldCount -1 do

begin

if (tblNilai.Fields[i].FieldName = 'idpelamar') or

(tblNilai.Fields[i].FieldName = 'tgllahir') or

(tblNilai.Fields[i].FieldName = 'kode') or

(tblNilai.Fields[i].FieldName = 'nama') or

(tblNilai.Fields[i].FieldName = 'alamat') then

Continue;

//if Copy(tblNilai.Fields[i].FieldName,1,1) = 'j' then

begin

idjenistes := StrToInt(tblNilai.Fields[i].FieldName);

Close;

ParamByName('idpelamar').AsInteger :=

tblNilai.FieldByName('idpelamar').AsInteger;

ParamByName('idjenistes').AsInteger := idjenistes;

ParamByName('nilai').AsFloat :=

tblNilai.FieldByName(tblNilai.Fields[i].FieldName).AsFloat;

Execute;

end;

end;

tblNilai.Next;

end;

finally

Free;

end;

InsertIntoResult;

finally

tblNilai.EnableControls;

end;

130

if Result then

MessageDlg('Data berhasil disimpan', mtInformation, [mbOK],

0);

end;

procedure TfrmNilai.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if not(ActiveControl is TDBGrid) then

inherited;

end;

procedure TfrmNilai.FormCloseQuery(Sender: TObject; var

CanClose: Boolean);

begin

if ModalResult = mrOk then

CanClose := Simpan;

end;

procedure TfrmNilai.mniAmbilUsiaClick(Sender: TObject);

begin

if not(grd1.DataSource.DataSet.State in [dsInsert,dsEdit]) then

grd1.DataSource.DataSet.Edit;

grd1.DataSource.DataSet.FieldByName(grd1.Columns[grd1.SelectedI

ndex].FieldName).AsInteger :=

YearsBetween(tblNilai.FieldByName('tgllahir').AsDateTime,Date);

end;

procedure TfrmNilai.pm1Popup(Sender: TObject);

begin

mniAmbilUsia.Enabled :=

(grd1.Columns[grd1.SelectedIndex].FieldName <> 'idpelamar') and

(grd1.Columns[grd1.SelectedIndex].FieldName <> 'tgllahir') and

(grd1.Columns[grd1.SelectedIndex].FieldName <> 'kode') and

(grd1.Columns[grd1.SelectedIndex].FieldName <> 'nama') and

(grd1.Columns[grd1.SelectedIndex].FieldName <> 'alamat')

end;

end.

7. Form Hasil

unit HasilNilaiForm;

procedure HasilNilai;

131

implementation

uses Rutinitas, SeleksiForm;

{$R *.dfm}

procedure HasilNilai;

var

aComponent: TComponent;

begin

aComponent := Application.FindComponent('frmHasilNilai');

if not Assigned(aComponent) then

begin

frmHasilNilai := TfrmHasilNilai.Create(Application);

frmHasilNilai.LoadNilai;

end;

frmHasilNilai.Show;

end;

{ TfrmHasilNilai }

procedure TfrmHasilNilai.LoadNilai;

var

i: Integer;

str: TStrings;

begin

if tblNilai.Active then

tblNilai.Close;

try

str := TStringList.Create;

tblNilai.AddField('idpelamar',ftInteger);

tblNilai.AddField('tgllahir',ftDate);

tblNilai.AddField('kode',ftString,8);

tblNilai.AddField('nama',ftString,32);

tblNilai.AddField('alamat',ftString,64);

with qryRutinitas do

try

SQL.Text := 'select idjenistes,nama from jenistes';

SQL.Add('order by idjenistes');

Open;

First;

while not Eof do

begin

132

tblNilai.AddField('j' +

FieldByName('idjenistes').AsString,ftFloat);

str.Add(FieldByName('nama').AsString);

Next;

end;

tblNilai.Open;

Close;

SQL.Text := 'select

n.idpelamar,p.kode,p.nama,p.tgllahir,p.alamat,';

SQL.Add('n.idjenistes,n.nilai from pelamar p');

SQL.Add('join nilai n on n.idpelamar = p.idpelamar');

SQL.Add('order by n.idpelamar,n.idjenistes');

Open;

First;

while not Eof do

begin

if

not(tblNilai.Locate('idpelamar',FieldByName('idpelamar').AsInteger,[]

)) then

begin

tblNilai.Append;

tblNilai.FieldByName('idpelamar').AsInteger :=

FieldByName('idpelamar').AsInteger;

tblNilai.FieldByName('tgllahir').AsDateTime :=

FieldByName('tgllahir').AsDateTime;

tblNilai.FieldByName('kode').AsString :=

FieldByName('kode').AsString;

tblNilai.FieldByName('nama').AsString :=

FieldByName('nama').AsString;

tblNilai.FieldByName('alamat').AsString :=

FieldByName('alamat').AsString;

end

else tblNilai.Edit;

tblNilai.FieldByName('j'+FieldByName('idjenistes').AsString).AsFloat

:= FieldByName('nilai').AsFloat;

tblNilai.Post;

Next;

133

end;

finally

Free;

end;

with grd1 do

for i := 0 to Columns.Count -1 do

begin

if (Columns[i].FieldName = 'idpelamar') or

(Columns[i].FieldName = 'tgllahir') then

Columns[i].Visible := False

else if Columns[i].FieldName = 'kode' then

begin

Columns[i].Title.Caption := 'Kode';

Columns[i].Width := 64;

end

else if Columns[i].FieldName = 'nama' then

begin

Columns[i].Title.Caption := 'Nama';

Columns[i].Width := 128;

end

else if Columns[i].FieldName = 'alamat' then

begin

Columns[i].Title.Caption := 'Alamat';

Columns[i].Width := 256;

end

else

begin

Columns[i].Title.Caption := str[i-5];

Columns[i].Title.Alignment := taRightJustify;

end;

end;

tblNilai.First;

finally

str.Free;

end;

end;

134

procedure TfrmHasilNilai.btnSeleksiClick(Sender: TObject);

begin

Seleksi;

end;

end.

8. Form Seleksi Pelamar

unit SeleksiForm;

function Seleksi: Boolean;

implementation

uses DMForm, Rutinitas, Math;

{$R *.dfm}

function Seleksi: Boolean;

begin

frmSeleksi := TfrmSeleksi.Create(Application);

with frmSeleksi do

try

SQLSelect := TStringList.Create;

SQLWhere := TStringList.Create;

SQLOrder := TStringList.Create;

Caption := 'Seleksi Pelamar';

sTemp := 't' + IntToStr(Random(999));

//ShowMessage(sTemp);

ConvertResult2FinalResult(sTemp);

qryJenisTes.Open;

qryKriteria.Open;

tblFilter.Open;

tblFilterAfterPost(tblFilter);

SQLOrder.Text := 'order by nilai desc';

lblNonFuzzy.Caption := GetNonFuzzy;

cbxNonFuzzy.ItemIndex := 0;

Result := ShowModal = mrOk;

finally

SQLSelect.Free;

SQLWhere.Free;

SQLOrder.Free;

Free;

end;

end;

135

procedure TfrmSeleksi.btnGoClick(Sender: TObject);

begin

if qryKriteriaidkriteria.IsNull then

begin

MessageDlg('Kriteria tidak ada', mtWarning, [mbOK], 0);

Exit;

end;

if

tblFilter.Locate('idkriteria;operator',VarArrayOf([qryKriteriaidkriteria.

AsInteger,rgDan.Items[rgDan.ItemIndex]]),[]) then

Exit;

tblFilter.Append;

tblFilterIDKriteria.AsInteger := qryKriteriaidkriteria.AsInteger;

tblFilterJenis.AsString := qryJenisTesnama.AsString;

tblFilterKriteria.AsString := qryKriterianama.AsString;

tblFilterOperator.AsString := rgDan.Items[rgDan.ItemIndex];

tblFilter.Post;

end;

procedure TfrmSeleksi.btnHapusClick(Sender: TObject);

begin

if tblFilter.Eof then

Exit;

if Konfirmasi('Remove filter ?') then

tblFilter.Delete;

end;

procedure TfrmSeleksi.tblFilterAfterPost(DataSet: TDataSet);

var

bm: TBookmarkStr;

begin

mmoFilter.Clear;

try

bm := tblFilter.Bookmark;

tblFilter.First;

while not tblFilter.Eof do

begin

if tblFilter.Bof then

136

mmoFilter.Text := tblFilterJenis.AsString + ' ' +

tblFilterKriteria.AsString

else mmoFilter.Text := mmoFilter.Text + ' ' +

tblFilterOperator.AsString + ' ' + tblFilterJenis.AsString + ' ' +

tblFilterKriteria.AsString;

tblFilter.Next;

end;

finally

tblFilter.Bookmark := bm;

end;

end;

procedure TfrmSeleksi.btnFilterPelamarClick(Sender: TObject);

var

bm: TBookmarkStr;

a,b: Extended;

nilai: Extended; // nilai fire strength

idpelamar: TStrings; // daftar idpelamar

i: Integer;

operator: string;

begin

// query disini

try

bm := tblFilter.Bookmark;

if tblFilter.Eof then

begin

MessageDlg('Silakan pilih kriteria', mtWarning, [mbOK], 0);

Exit;

end;

// edit dulu tabel temporary utk memperoleh firestrenght

with qryRutinitas do

try

idpelamar := TStringList.Create;

try

SQL.Text := 'select idpelamar from pelamar order by

idpelamar';

Open;

First;

while not Eof do

137

begin

idpelamar.Add(Fields[0].AsString); // masukkan

idpelamar ke stringlist

Next;

end;

for i := 0 to idpelamar.Count -1 do

begin

tblFilter.First;

while not tblFilter.Eof do

begin

if tblFilter.Bof then

begin

Close;

SQL.Text := 'select

k'+tblFilterIDKriteria.AsString;

tblFilter.Next; // ambil record kedua

SQL.Add(',k'+tblFilterIDKriteria.AsString);

SQL.Add('from '+sTemp);

SQL.Add('where idpelamar=:idpelamar');

ParamByName('idpelamar').AsInteger :=

StrToInt(idpelamar[i]);

Open;

First;

a := Fields[0].AsFloat;

b := Fields[1].AsFloat;

operator := tblFilterOperator.AsString;

end

else

begin

Close;

SQL.Text := 'select

k'+tblFilterIDKriteria.AsString;

SQL.Add('from '+sTemp);

SQL.Add('where idpelamar=:idpelamar');

ParamByName('idpelamar').AsInteger :=

StrToInt(idpelamar[i]);

Open;

138

First;

a := nilai;

b := Fields[0].AsFloat;

operator := tblFilterOperator.AsString;

end;

if operator = 'dan' then

nilai := Min(a,b)

else nilai := Max(a,b);

tblFilter.Next;

end;

// update fire strengthnya tabel temp berdasar

filter/operator

Close;

SQL.Text := Format('update %s set nilai=:nilai where

idpelamar=:idpelamar',[sTemp]);

ParamByName('idpelamar').AsInteger :=

StrToInt(idpelamar[i]);

ParamByName('nilai').AsFloat := nilai;

Execute;

end;

finally

idpelamar.Free;

end;

finally

Free;

end;

finally

tblFilter.Bookmark := bm;

end;

cbxNonFuzzyChange(cbxNonFuzzy);

end;

procedure TfrmSeleksi.tblFilterCalcFields(DataSet: TDataSet);

begin

if tblFilterOperator.AsString = 'dan' then

tblFilterOperator2.AsString := 'and'

else tblFilterOperator2.AsString := 'or';

end;

procedure TfrmSeleksi.cbxNonFuzzyChange(Sender: TObject);

139

var

bm: TBookmarkStr;

begin

try

bm := tblFilter.Bookmark;

tblFilter.DisableControls;

SQLSelect.Text := 'select f.idpelamar,p.kode as "Kode",p.nama

as "Nama",p.alamat as "Alamat",p.nonfuzzy as "'+GetNonFuzzy+'"';

tblFilter.First;

while not tblFilter.Eof do

begin

SQLSelect.Add(',f.k' + tblFilterIDKriteria.AsString + ' as "' +

tblFilterKriteria.AsString + '"');

tblFilter.Next;

end;

SQLSelect.Add(',nilai as "Fire Strength"'); // ==> nilai fire

strength

SQLSelect.Add(Format('from %s f',[sTemp]));

SQLSelect.Add('join pelamar p on p.idpelamar = f.idpelamar');

SQLWhere.Text := 'where';

tblFilter.First;

while not tblFilter.Eof do

begin

if tblFilter.Bof then

SQLWhere.Add('f.k' + tblFilterIDKriteria.AsString + '>0')

else SQLWhere.Add(tblFilterOperator2.AsString + ' f.k' +

tblFilterIDKriteria.AsString + '>0');

tblFilter.Next;

end;

if cbxNonFuzzy.ItemIndex in [1,2] then // False,True

SQLWhere.Add('and

p.nonfuzzy='+IntToStr(cbxNonFuzzy.ItemIndex-2));

with qryResult do

begin

Close;

SQL.Clear;

SQL.Add(SQLSelect.Text);

SQL.Add(SQLWhere.Text);

140

SQL.Add(SQLOrder.Text);

Open;

//ShowMessage(SQL.Text);

grdResult.Columns[0].Visible := False;

end;

finally

tblFilter.Bookmark := bm;

tblFilter.EnableControls;

end;

end;

procedure TfrmSeleksi.dsResultDataChange(Sender: TObject; Field:

TField);

begin

inherited;

end;

end.