LAPORAN PROYEK KHUSUS PORTAL BEASISWA KPU DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

download LAPORAN PROYEK KHUSUS PORTAL BEASISWA KPU DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

of 136

description

LAPORAN PROYEK KHUSUS PORTAL BEASISWA KPU DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

Transcript of LAPORAN PROYEK KHUSUS PORTAL BEASISWA KPU DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

  • 1

    LAPORAN PROYEK KHUSUS

    PORTAL BEASISWA KPU

    DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

    Kidung Hudha Candra Bumi (08/265927/PA/11929)

    Poerwiyanto (08/269978/PA/12157)

    Uki Astika Mancasari (08/269581/PA/11982)

    JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA

    FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

    UNIVERSITAS GADJAH MADA

    YOGYAKARTA

    2011

  • 2

    HALAMAN PENGESAHAN

    LAPORAN PROYEK KHUSUS

    PORTAL BEASISWA KPU

    DENGAN SISTEM PENDUKUNG KEPUTUSAN BERBASIS FUZZY

    Pembimbing

    Sri Mulyana, Drs., M.Kom

    Tim Penulis

    Penulis 1, Penulis 2, Penulis 3,

    Kidung Hudha Candra Bumi Poerwiyanto Uki Astika Mancasari

  • 3

    KATA PENGANTAR

    Puji syukur kami panjatkan kepada Tuhan Yang Maha Esa yang memberikan rahmat,

    sehingga kami dapat menyelesaikan proyek dengan judul Portal Beasiswa KPU dengan

    Sistem Pendukung Keputusan Berbasis Fuzzy.

    Tujuan utama dari proyek ini adalah untuk membangun sebuah sistem yang memudahkan

    penawar beasiswa dalam menawarkan beasiswa dan menentukan pemohon-pemohon beasiswa

    yang layak meraih beasiswa dan pemohon beasiswa dalam menemukan informasi tentang

    beasiswa-beasiswa. Selain itu, proyek ini untuk memenuhi persyaratan guna menyelesaikan mata

    kuliah Proyek Khusus.

    Pengembangan proyek ini dari awal hingga laporan ini diselesaikan tidak terlepas dari

    kerja sama dari sesama anggota kelompok dan pihak terkait yang telah menyumbangkan tenaga,

    yaitu bapak Sri Mulyana, Drs., M.Kom selaku dosen pembimbing. Untuk itu, kami mengucapkan

    terima kasih sedalam-dalamnya kepada bapak Sri Mulyana, Drs., M.Kom.

    Yogyakarta, Juni 2011

    Tim Penulis

  • 4

    DAFTAR ISI

    HALAMAN JUDUL1

    HALAMAN PENGESAHAN.2

    KATA PENGANTAR3

    DAFTAR ISI4

    DAFTAR GAMBAR..6

    ABSTRAK7

    BAB I PENDAHULUAN9

    1.1 Latar Belakang...9

    1.2 Rumusan Masalah...10

    1.3 Batasan Masalah..10

    1.4 Tujuan.11

    1.5 Manfaat...11

    1.6 Metodologi Perancangan.11

    BAB II LANDASAN TEORI13

    2.1 Decision Support System (Sistem Pendukung Keputusan)........13

    2.2 Logika Fuzzy..15

    2.3 CodeIgniter.17

    2.4 Model-View-Controller..18

    BAB III ANALISIS DAN PERANCANGAN SISTEM.19

    3.1 Analisis Sistem19

    3.1.1 Analisis Masalah19

    3.2 Perancangan Sistem.19

  • 5

    3.2.1 Perancangan Fungsional Sistem.20

    3.2.2 Perancangan Basis Data24

    3.2.3 Perancangan Antar Muka..27

    BAB IV IMPLEMENTASI.33

    4.1 Implementasi...33

    BAB V PENGUJIAN SISTEM.47

    5.1 Pengujian Sistem.47

    BAB VI KESIMPULAN...60

    6.1 Kesimpulan..60

    DAFTAR PUSTAKA61

    LAMPIRAN...62

  • 6

    DAFTAR GAMBAR

    Gambar 3.1 Diagram Konteks..22

    Gambar 3.2 DAD Level 1.22

    Gambar 3.3 Use Case...23

    Gambar 3.4 Rancangan antar muka halaman pendaftaran beasiswa28

    Gambar 3.5 Rancangan antar muka halaman login pengguna.28

    Gambar 3.6 Rancangan antar muka halaman tambah peubah penentu29

    Gambar 3.7 Rancangan antar muka tambah fungsi keanggotaan.30

    Gambar 3.8 Rancangan antar muka halaman tambah aturan...30

    Gambar 3.9 Rancangan antar muka halaman pendaftaran mahasiswa/i...31

    Gambar 3.10 Rancangan antar muka halaman mahasiswa/i..32

    Gambar 4.1 Halaman publik33

    Gambar 4.2 Halaman pendaftaran mahasiswa/i...34

    Gambar 4.3 Halaman hasil (publik).35

    Gambar 4.4 Halamanpendaftaran beasiswa.36

    Gambar 4.5 Halaman login...37

    Gambar 4.6 Halaman beasiswa38

    Gambar 4.7 Halaman beasiswa (deskripsi)..39

    Gambar 4.8 Halaman beasiswa (ganti kata sandi)39

    Gambar 4.9 Halaman peubah penentu..40

    Gambar 4.10 Halaman tambah/ubah peubah penentu40

    Gambar 4.11 Halaman fungsi keanggotaan41

    Gambar 4.12 Halaman tambah/ubah fungsi keanggotaan..42

    Gambar 4.13 Halaman fungsi keanggotaan (pemula)42

    Gambar 4.14 Halaman tambah/ubah fungsi keanggotaan (pemula)...43

    Gambar 4.15 Halaman basis aturan44

    Gambar 4.16 Halaman tambah aturan44

  • 7

    Gambar 4.17 Halaman hasil (beasiswa).45

    Gambar 4.18 Halaman pemohon46

    Gambar 4.19 Halaman pemohon (ganti kata sandi)...46

    Gambar 5.1 Pendaftaran beasiswa baru47

    Gambar 5.2 Notifikasi jika nama pengguna telah dipakai48

    Gambar 5.3 Halaman login..49

    Gambar 5.4 Halaman login jika terjadi kesalahan49

    Gambar 5.5 Halaman beasiswa49

    Gambar 5.6 Halaman beasiswa (deskripsi)..50

    Gambar 5.7 Penambahan peubah penentu50

    Gambar 5.8 Halaman peubah penentu..51

    Gambar 5.9 Pengubahan peubah penentu.51

    Gambar 5.10 Halaman peubah penentu..51

    Gambar 5.11 Penambahan fungsi keanggotaan..52

    Gambar 5.12 Halaman fungsi keanggotaan52

    Gambar 5.13 Penambahan aturan...52

    Gambar 5.14 Penambahan gagal jika aturan telah ada...53

    Gambar 5.15 Halaman basis aturan53

    Gambar 5.16 Pendaftaran pemohon...54

    Gambar 5.17 Notifikasi jika berkas tidak berformat *.zip.55

    Gambar 5.18 Notifikasi jika nama pengguna telah dipakai56

    Gambar 5.19 Halaman login..56

    Gambar 5.20 Halaman pemohon57

    Gambar 5.21 Halaman hasil (beasiswa).57

    Gambar 5.22 Halaman rincian hasil...58

    Gambar 5.23 Halaman hasil (beasiswa) setelah kidung diterima...58

    Gambar 5.24 Halaman hasil (publik).59

  • 8

    ABSTRAK

    Portal Beasiswa KPU

    dengan Sistem Pendukung Keputusan Berbasis Fuzzy

    Banyak sekali masyarakat Indonesia yang memiliki potensi tinggi dalam pendidikan

    tetapi tidak memiliki perekonomian yang cukup dalam meraih pendidikan tersebut.Hal ini

    memicu beberapa instansi baik yang negeri maupun swasta mengadakan beasiswa bagi

    masyarakat yang kurang mampu namun memiliki potensi yang tinggi. Tetapi dalam penyebaran

    informasi beasiswa tersebut masih kurang merata sehingga sedikit masyarakat yang mengetahui

    tentang pengadaan beasiswa, padahal teknologi saat ini sudah berkembang semakin pesat. Untuk

    itu diperlukan sebuah media yang digunakan untuk menggabungkan teknologi internet dan

    penyebaran informasi tentang pengadaan beasiswa.

    Pemilihan dan penetapan mahasiswa berprestasi ini menjadi suatu proses yang rumit

    karena pengerjaannya yang selama ini masih manual, selain itu proses tersebut memiliki banyak

    peluang untuk membuat keputusan yang salah karena dapat terjadi proses penilaian yang bersifat

    subjektif. Hal ini dapat mengakibatkan mahasiswa yang dipilih tidak mencapai standart yang

    diinginkan dan tidak memperoleh calon yang terbaik.

    Portal Beasiswa KPUdengan Sistem Pendukung Keputusan Berbasis Fuzzy adalah portal

    beasiswa yang berbasis sistem pendukung keputusan model fuzzy yang mampu menentukan

    penerimaan beasiswa secara efektif dan efisien disertai dengan penyediaan informasi beasiswa

    yang cepat, tepat dan akurat.

    Kata kunci: portal beasiswa, sistem pendukung keputusan, logika fuzzy.

  • 9

    BAB I

    PENDAHULUAN

    1.1 Latar Belakang

    Manusia semakin memahami pentingnya makna pendidikan, terutama dari aspek kebutuhan

    karena saat ini pendidikan merupakan salah satu investasi penting untuk masa depan. Dengan

    adanya pendidikan, maka dapat meningkatkan kualitas sumberdaya manusia masyarakat

    Indonesia. Namun, dalam penerimaan pendidikan tersebut masih memiliki beberapa kendala

    salah satunya dari segi ekonomi. Banyak sekali masyarakat Indonesia yang memiliki potensi

    tinggi dalam pendidikan tetapi tidak memiliki perekonomian yang cukup dalam meraih

    pendidikan tersebut. Hal ini memicu beberapa instansi baik yang negeri maupun swasta

    mengadakan beasiswa bagi masyarakat yang kurang mampu namun memiliki potensi yang

    tinggi. Tetapi dalam penyebaran informasi beasiswa tersebut masih kurang merata sehingga

    sedikit masyarakat yang mengetahui tentang pengadaan beasiswa, padahal teknologi saat ini

    sudah berkembang semakin pesat. Dengan seiringnya perkembangan teknologi tersebut, maka di

    butuhkan penyebaran informasi yang cepat, salah satu teknologi pendukung untuk

    perkembangan informasi adalah internet, karena internet bersifat sangat global dan dapat diakses

    secara umum.

    Untuk itu diperlukan sebuah media yang digunakan untuk menggabungkan teknologi

    internet dan penyebaran informasi tentang pengadaan beasiswa. Salah satu media tersebut dapat

    berupa sebuah portal yang digunakan untuk menggabungkan beberapa informasi beasiswa yang

    terdaftar yang kemudian portal tersebut dapat melakukan seleksi secara otomatis dalam

    penentuan penerima beasiswa sesuai dengan kriteria yang telah ditentukan.

    Proses penentuan untuk seleksi penerima beasiswa menggunakan salah satu cabang ilmu

    dari kecerdasan buatan yakni sistem pendukung keputusan, yaitu suatu sistem yang dirancang

    untuk membantu user dalam melakukan sebuah keputusan untuk memilih alternative dari suatu

    masalah untuk mencapai tujuan yang diinginkan.

    Beberapa metode yang dapat digunakan dalam sistem pendukung keputusan antara lain :

    Wighted of Sum, Promethee, Profile Matching, Fuzzy, AHP (Analyric Hierarchy Process), AHP

  • 10

    Fuzzy. Fuzzy merupakan salah satu metode yang telah banyak diaplikasikan diberbagai bidang

    dan mampu menyelesaikan permasalahan dan pembuatan keputusan yang kompleks sehingga

    dapat digunakan untuk analisis kelayakan penerimaan beasiswa. Metode ini terdiri dari 3 bagian,

    yaitu fuzzifikasi, inferensi, dan defuzzifikasi. Dari penerapan fuzzy ini akan kita dapatkan suatu

    keputusan apakah seorang calon penerima beasiswa layak untuk mendapatkan beasiswa.

    Manfaat proses pemilihan ini adalah untuk mencapai akhir yang diinginkan yaitu

    mendapatkan mahasiswa yang tepat berdasarkan kriteria-kriteria yang telah ditentukan.

    Pemilihan dan penetapan mahasiswa berprestasi ini menjadi suatu proses yang rumit karena

    pengerjaannya yang selama ini masih manual, selain itu proses tersebut memiliki banyak peluang

    untuk membuat keputusan yang salah karena dapat terjadi proses penilaian yang bersifat

    subjektif. Hal ini dapat mengakibatkan mahasiswa yang dipilih tidak mencapai standart yang

    diinginkan dan tidak memperoleh calon yang terbaik.

    Oleh karena itu, dibangun sebuah portal beasiswa yang mampu menampung seluruh

    informasi beasiswa yang ditawarkan sekaligus melakukan penilaian berdasarkan syarat-syarat

    yang diharapkan penawar beasiswa untuk mendukung keputusan yang akan diambil, dalam hal

    ini menentukan peraih beasiswa.

    1.2 Rumusan Masalah

    Dari latar belakang di atas dapat di ambil rumusan masalah yang akan menjadi pembahasan

    proyek yaitu bagaimana merancang dan membangun sebuah aplikasi sistem pendukung

    keputusan yang berbasis web menggunakan metode fuzzy untuk penentuan penerimaan

    beasiswa.

    1.3 Batasan Masalah

    Batasan masalah yang digunakan dalam perancangan proyek ini bertujuan agar proyek

    menjadi lebih realitis dan terarah dalam pengembangannya. Adapun batasan masalah yang

    digunakan adalah sebagai berikut.

    1. Rule base yg digunakan menggunakan operator AND.

    2. Keluaran program ini berupa saran untuk mendukung sebuah keputusan, tidak

    mengambil keputusan.

    3. Satu ID hanya untuk satu beasiswa.

  • 11

    4. Satu ID mahasiswa hanya bias mendaftarkan satu beasiswa.

    1.4 Tujuan

    Tujuan rancangan sistem ini adalah membuat portal beasiswa yang berbasis sistem

    pendukung keputusan model fuzzy yang mampu menentukan penerimaan beasiswa secara efektif

    dan efisien disertai dengan penyediaan informasi beasiswa yang cepat, tepat dan akurat.

    1.5 Manfaat

    Adapun manfaat dari pembuatan system ini adalah :

    1. Menjadi alat bantu untuk memudahakan sebuah instansi dalam menyeleksi mahasiswa

    yang mendaftar beasiswa.

    2. Menjadi alat bantu bagi mahasiswa untuk memudahkan mencari informasi beasiswa

    secara cepat hanya dalam satu portal saja.

    Dengan penyeleksian yang cepat dan tepat terhadap mahasiswa yang mendaftar beasiswa, maka

    secara tidak langsung penyeleksian ini bersifat adil karena sesuai dengan kriteria yang ditentukan

    sistem.

    1.6 Metodologi Perancangan

    Metodologi yang digunakan dalam perancangan proyek ini adalah

    1. Perencanaan

    Perencanaan dilakukan dengan mendefinisikan masalah, menentukan tujuan dan sasaran

    yang ingin dicapai, serta mempelajari prospeknya. Untuk itu dilakukan studi pada berbagai

    metode penyeleksian beasiswa yang ada, aplikasi portal beasiswa yang ada beserta kelebihan

    dan kekurangannya dan studi mengenai teknologi Internet yang akan digunakan untuk

    membangun aplikasi.

    2. Analisis dan Perancangan

    Dilakukan analisis dan perancangan portal beasiswa berbasis sistem pendukung

    keputusan metode fuzzy. Analisis dan perancangan meliputi antarmuka pengguna, basis data,

    dan sistem pendukung keputusan dengan metode fuzzy, mulai dari peubah linguistik, fungsi

    keanggotaan, sampai mesin inferensi.

  • 12

    3. Desain

    Proses disain merupakan penuangan hasil analisis dalam bentuk rancangan. Rancangan

    meliputi disain arsitektur, alur, basis data, dan antarmuka aplikasi yang termuat pada poin

    Rancangan.

    4. Implementasi dan Pengujian

    Rancangan yang telah dibuat diimplementasikan ke dalam bentuk program yang berbasis

    web dengan framework MVC yang dibangun dengan bahasa pemrograman PHP. Antarmuka

    dibangun dengan html dan css serta didukung oleh framework javascript jquery yang

    membuat web menjadi lebih interaktif. Basis data menggunakan MySQL, sedangkan untuk

    web server digunakan apache http server.

    . Setelah implementasi selesai dilakukan, selanjutnya dilakukan pengujian terhadap

    sistem untuk memastikan sistem memenuhi dan mampu menyelesaikan permasalahan yang

    ada.

  • 13

    BAB II

    LANDASAN TEORI

    2.1 Decision Support System (Sistem Pendukung Keputusan)

    DSS adalah bagian dari sistem informasi berbasis komputer (termasuk sistem berbasis

    pengetahuan (manajemen pengetahuan)) yang dipakai untuk mendukung pengambilan keputusan

    dalam suatu organisasi atau perusahaan.

    DSS adalah sekumpulan prosedur berbasis model yang digunakan untuk pemrosesan data

    dan membantu seorang pengelola membuat sebuah pertimbangan dalam pembuatan keputusan

    (Little, 1970). sistem harus sederhana, mudah untuk diatur, dapat melakukan penyesuaian, dan

    interaktif.

    Moore dan Chang (1980) berpendapat bahwa konsep terstruktur pada umumnya tidak berarti;

    sebuah masalah dapat dideskripsikan sebagai setruktur atau tidak terstruktur hanya dalm kondisi

    tertentu. Maka mereka mendefinisikan bahwa DSS sebagai perluasan sistem yang mampu

    mendukung analisa data ad hoc dan permodelan keputusan, berorientasi pada perencanaan masa

    depan dan digunakan pada interval yang tidak terencana dan irregular.

    Bonczek et al. (1980) menyatakan bahwa sistem pendukung keputusan adalah sistem

    berbasis computer yang berisi tiga komponen yang interaktif yaitu language system (sebuah

    mekanisme untuk komunikasi antara user dan komponen dalam SPK), knowledge system (tempat

    penyimpanan dari permasalahan dengan domain knowledge yang terdapat dalam DSS dapat

    berupa data maupun prosedur), dan problem-processing system (penghubung antara dua

    komponen yang mampu melakukan manipulasi terhadap sebuah permasalah pada pengambilan

    keputusan). Konsep dari definisi ini sangat penting untk pemahaman hubungan antara DSS dan

    knowledge.

    Menurut Keen (1980), SPK adalah sebuah hasil dari pengembangan proses dimana DSS user

    pembangun SPK dan SPK itu sendiri mampu mempengaruhi satu sama lain yang merupakan

    hasil dari evolusi sitem dan pola yang digunakan.

  • 14

    Dari beberapa definisi di atas dilakukan perbandingan dengan menguji dari beberapa konsep

    untuk mendefinisikan DSS (table 1). Dapat kita lihat bahwa konsep dasar dari SPK telah

    dikembangkan dari berbagai persepsi definisi SPK dan ide bagaimana sebuah objektif dari SPK

    mencapai tujuan.

    Karakteristik Sistem Pendukung Keputusan

    SPK pada umunya dibangun untuk mendukung sebuah solusi dari certain problem dan

    untuk mengevaluasi sebuah probabilitas.

    1. SPK dapat mendukung untuk membuat keputusan dengan permasalahan semi-

    terstrukur dan tidak terstruktur dengan memadukan penentuan manusia dan

    komputerisasi informasi.

    2. Pendukung keputusan untuk berbagai level pengelolaan.

    3. Dapat digunakan oleh secara individu dan berkelompok.

  • 15

    4. Sistem pendukung keputusan dapat membuat interdependen dan sekuensial

    keputusan. Keputusan dapat dilakukan sekali, berkali-kali, dan berulang kali.

    5. Mendukung untuk semua fase dalam pengambilan keputusan : kecerdasan, desain,

    pemilihan, dan implementasi.

    6. Mendukung berbagai proses dari pengambilan keputusan.

    7. Pengambil keputusan harus reaktif dan dapat mengubah kondisi secara seketika dan

    sistem tersebut harus langsung dapat melakukan penyesuaian dengan perubahan yang

    terjadi.

    8. Bersifat user-friendly , grafis yang baik, dan interaktif untuk meningkatkan

    efektivitas dari SPK.

    9. Lebih mementingkan efektivitas (keakuratan, kecepatan, kualitas) daripada efisiensi

    (biaya pembuatan).

    10. Pembuat keputusan harus memiliki kendali penuh terhadap setiap langkah dalam

    pengambilan keputusan.

    11. End user dapat mengkonstruksi dan mengubah sistem. Sistem yang besar dapat

    dibangun dengan bantuan pakar sistem informasi.

    SPK digunakan untuk permodelan analisa pengambilan keputusan.

    2.2 Logika Fuzzy

    Logika fuzzy digunakan ketika terjadi keadaan yang tidak pasti dalam kehidupan sehari-

    hari. Teknik ini menggunakan teori matematis dari fuzzy sets (Jamshidi et al., 1997;Klir dan

    Yuan, 1995;McNeill dan Freiberger,1993; Nguyen dan Walker,1999), yaitu simulasi proses dari

    human reasoning yang normal dengan menggunakan computer yang dapat bekerja secara logis

    dibandingkan dengan metode computer yang konvensional.

    Latar belakang dari pendekatan ini adalah bahwa dalam setiap pengambilan keputusan

    tidak selalu bernilai true atau false,namun ada juga daerah yang abu-abu, yakni daerah yang

    berada diantara nilai true dan false tersebut.

    Dengan menggunakan Logika Fuzzy, maka dalam menginterpretasikan persepsi manusia

    akan menjadi lebih efektif dan akurat pad a pengambilan keputusan, karena

  • 16

    tidak semua situasi bernilai 100% true dan false. Berbagai permasalahan dalam pengambilan

    keputusan tidak dapat menggunakan true dan false, namun membutuhkan model matematis.

    Contoh dari penjelasan di atas adalah fuzzy sets dalam mendeskripsikan tinggi badan

    dengan range 5 hingga 7 kaki(1kaki = 30cm, 1inch=2.54cm).

    Enrollment in local colleges, 2005

    Height Proportions Vote

    For

    510 0.05

    511 0.10

    6 0.60

    61 0.15

    62 0.10

    Misal tinggi dari jack adalah 6kaki. Maka dengan menggunakan teori probabilitas, kita

    bisa menggunakkan kumulpatif distribusi probabilitas bahwa ada kemungkinan 75% bahwa Jack

    termasuk tinggi.

    Dalam logika fuzzy, maka dapat dikatakan bahwa knowledge-base bahwa Jack adalah

    tinggi (CF=0.75) dan pernyataan bahwa Jack adalah pendek (CF=0.15). Dalam teori probabilitas

    , jika probabilitas Jack adalah tinggi 0.75 maka probabilitas bahwa Jack adalah pendek 0.25.

  • 17

    2.3 CodeIgniter

    Codeigniter adalah sebuah framework untuk web yang dibuat dalam format PHP. Format

    yang dibuat ini selanjutnya dapat digunakan untuk membuat sistem aplikasi web yang kompleks.

    Codeigniter dapat mempercepat proses pembuatan web, karena semua class dan model yang

    dibuatkan sudah ada dan hanya tinggal menggunakan kembali pada aplikasi web yang akan

    dibuat. Sebelum melangkah lebih jauh perlu mengetahui definisi dari sebuah framework.

    Framework secara umum adalah sebuah susunan atau rangkaian kerja yang tetap dan

    dibuat sedemikian rupa yang kemudian dapat digunakan kembali dalam sebuah aktifitas kerja

    yang lain tapi tetap dalam satu area kerja dengan rangkaian kerja yang sebelumnya.

    Sistem Codeigniter

    Tampilan web adalah bagian akhir di manahalaman web tersebut tersebut terlihat pada browser.

    Tahapannya adalah sebagai berikut:

    1. File [tampilan web/index.php] bertindak sebagai kontroler utama, yang berfungsi sebagai

    penampil halaman web yang memuat sumber kode utama yang berfungsi untuk

    menjalankan Codeigniter.

    2. Bagian [Routing] berfungsi untuk menerima permintaan HTTP untuk mnentukan langkah

    selanjutnya diambil.

    3. Jika file Chace ada, maka sistem langsung akan menuju bagian [Caching] yang kemudian

    akan ditampilkan pada halaman web, tanpa melalui sistem Codeigniter yang normal.

    4. Pada bagian [Security], semua permintaan HTTP dan form yang dikirim oleh pengguna

    akan di saring untuk pengaman.

    5. Kemudian data akan menuju bagian [Application controller] yang akan memunculkan

    model, library, script helper dan plugins dan semua sumber yang dibutuhkan untuk

    melengkapi permintaan tersebut.

    6. Tampilan akhir [View] akan dikirim ke dalam browser untuk dilihat pada halam web.

    Jika [Caching] diterima maka tampilan akhir akan menjalani caching terlebih dahulu

    sehingga permintaan yang sama akan dapat berjalan lebih cepat pada browser.

  • 18

    2.4 Model- View-Controller

    Framework Codeigniter adalah framework yang berbasis Model-View-Contreller (MVC).

    MVC adalah sebuah software yang memisahkan antara aplikasi logika dengan presentasi pada

    halaman web. Sehingga hal ini akan menyebabkan halam web akan mangandung kode yang

    sedikit karena sudah terjadi pemisahan antara tampilan dan pemograman.

    Model merupakan struktur data. Secara spesifik class model akan mengandung fungsi

    kode yang akan membantu dalam segala proses yang berhubungan dengan database

    seperti memasukkan, mengedit, mendapatkan dan menghapus data dalam sebuah

    database.

    View merupakan informasi yang disampaikan ke pengguna. Sebuah view biasanya

    berupa halam web, tetapi dalam Codeigniter, sebuah view juga bisa berupa sebuah

    fragmen halaman seperti header dan footer. View juga bisa berupa halaman RSS atau

    jenis halam web yang lain.

    Controller merupakan sebuah perantara antara Model dan View dan semua sumber yang

    dibutuhkan untuk memproses permintaan HTTP dan dalam membuat halam web.

    Dalam menggunakan framework Codeigniter, kehadiran bagian Model tidak sering

    dibutuhkan, hanya dapat bekerja dengan bagian Controller dan View atau dapat dibangun fungsi

    sendiri secara minimal menggunakan dua bagian tersebut. Codeigniter diperbolehkan untuk

    membangun aplikasi sesuai kemampuan dan keinginan.

  • 19

    BAB III

    ANALISIS DAN PERANCANGAN SISTEM

    3.1 Analisis Sistem

    Sebelum Portal Beasiswa KPU dengan Sistem Pendukung Keputusan Berbasis Fuzzy

    dikembangkan, terlebih dahulu dilakukan tahapan analisis sistem. Analisis sistem diperlukan

    untuk mengetahui kebutuhan pengguna dan sistem. Dengan adanya sistem, diharapkan

    pengembangan sistem akan berjalan sesuai yang direncanakan.

    3.1.1 Analisis Masalah

    Beasiswa merupakan suatu permasalahan yang menyangkut dua sisi, yaitu penawar dan

    pengguna. Di sisi penawar/pemberi permasalahan yang sering terjadi adalah menawarkan

    beasiswa secara efektif dan masalah dalam menilai dan menentukan peraih beasiswa, sedangkan

    di sisi pemohon adalah mencari beasiswa. Pemecahan masalah adalah membuat sebuah portal

    yang berisi gabungan informasi-informasi beasiswa dari berbagai instansi dan universitas. Untuk

    pemecahan penilaian bisa dilakukan dengan memanfaatkan sistem pendukung keputusan yang

    mampu memberi nilai dan saran terhadap setiap pemohon beasiswa untuk kemudian dapat secara

    mudah dipilih oleh penawar beasiswa. Metode yang digunakan untuk sistem pendukung

    keputusan adalah logika fuzzy.

    Dengan bantuan mesin inferensi berupa syarat-syarat (selanjutnya disebut peubah

    penentu) dan basis aturan, penilaian menjadi suatu proses yang dapat diabaikan oleh penawar

    beasiswa sebelum pengambilan keputusan.

    3.2 Perancangan Sistem

    Perancangan yang dimaksudkan di sini adalah perancangan sistem yang meliputi perancangan

    fungsional sistem yang ditunjukkan dalam Diagram Alir Data dan Use Case, perancangan basis

    data, dan perancangan antar muka.

  • 20

    3.2.1 Perancangan fungsional sistem

    Perancangan fungsionalitas sistem merupakan tahap awal untuk merancang semua proses

    dan aliran data yang terjadi dalam sistem.

    Diagram Konteks

    Diagram konteks atau yang dikenal sebagai Diagram Alir Data (DAD) Level 0 berfungsi

    untuk menunjukan ruang lingkup dan batasan dari sebuah sistem yang dibangun, serta

    menunjukan adanya interaksi sistem dengan entitas luar. Entitas luar yang berhubungan secara

    langsung dengan sistem ini adalah Pemberi beasiswa dan Mahasiswa.

    1. Pemberi beasiswa

    Pemberi beasiswa memiliki peranan, yaitu:

    Memberikan masukan berupa informasi beasiswa serta manipulasi data beasiswa

    tergantung pada syarat yang ditentukan .

    Menentukan mahasiswa mana yang akan mendapatkan beasiswa.

    2. Mahasiswa

    Mahasiswa memiliki peranan, yaitu:

    Memberikan masukan berupa data diri dan kriteria yang disyaratkan oleh pemberi

    beasiswa. Sistem akan memberikan keluaran berupa hasil apakah mahasiswa

    diterima atau ditolak.

  • 21

    Flowchart(Penawar Beasiswa dan Pemberi)

    Mulai

    Mendaftarkan beasiswa

    Login ke halaman beasiswa

    Menambah peubah penentu

    Mengubah peubah penentu

    Menghapus peubah penentu

    Menambah fungsi keanggotaan

    Mengubah fungsi keanggotaan

    Menghapus fungsi keanggotaan

    Mengubah aturan Menambah aturan

    Melihat hasil penilaian

    Melihat rincian data pemohon

    Menerima Menolak

    Selesai

    Mulai

    Mendaftarkan diri sebagai pemohon

    Login ke halaman pemohon

    Mengisi nilai untuk syarat-syarat

    Selesai

  • 22

    Diagram konteks dari portal beasiswa berbasis sistem pendukung keputusan model fuzzy

    ditunjukan oleh gambar berikut :

    Gambar 3.1: Diagram Konteks

    Diagram Alir Data Level 1

    Diagram alir data level 1 merupakan kelanjutan diagram konteks yang menggambarkan

    proses-proses yang berlangsung dalam sistem. Diagram alir data level 1 dapat dilihat pada

    gambar berikut ini.

  • 23

    Gambar 3.2: DAD Level 1

    Use Case

    Use case adalah gambaran fungsionalitas dari suatu sistem, sehingga customer atau

    pengguna sistem paham dan mengerti mengenai kegunaan sistem yang akan dibangun.

    Gambar 3.3: Use Case.

  • 24

    3.2.2 Perancangan Basis Data

    1. Tabel Applicant

    Tabel applicant digunakan untuk menyimpan data-data dari pengaju beasiswa. Field-field

    yang terdapat pada table tersebut :

    No. Nama Field Tipe Data Keterangan

    1. appId Int(11) Kode Identitas untuk calon

    penerima beasiswa(Primary Key)

    2. appSchId Int(11) Kode Identitas untuk beasiswa

    yang diajukan (Foreign Key)

    3. appUsername VarChar(50) Username yg di gunakan calon

    penerima beasiswa untuk login

    4. appPwd VarChar(50) Berisi password untuk verifikasi.

    5. appBirthdate Date Tanggal lahir

    6. appDepartment VarChar(100) Asal jurusan

    7. appEmail VarChar(100) Email

    8. appFile VarChar(50) Untuk mengunggah file zip

    9. appGuaName VarChar(100) Nama wali/orangtua

    10. appRegDate Datetime Tanggal pendaftaran

    11. appUniversity VarChar(100) Asal universitas

    12. appGender Enum(laki-

    laki,perempuan)

    Jenis kelamin

    13. appAddress VarChar(1000) Alamat

    14. appTelNumber VarChar(20) Nomor yang dapat dihubungi

    2. Tabel Scholarship

    Tabel scholarship digunakan untuk menyimpan data-data dari pemberi beasiswa. Field-field

    yang terdapat dalam tabel scholarship tersebut :

  • 25

    No Nama Field Tipe Data Keterangan

    1. schId Int(11) Kode Identitas untuk pemberi

    beasiswa (Primary Key)

    2. schContent Text Penjelasan tentang beasiswa dan

    syarat-syarat yang ditentukan

    3. schEmail VarChar(100) Email

    4. schExpDate Date Batas pendaftaran beasiswa

    5. schPassword VarChar(50) Password untuk verifikasi login

    6. schRegDate Datetime Tanggal Pendaftaran

    7. schTitle VarChar(100) Judul beasiswa

    8. schUsername VarChar(50) Username untuk login

    3. Tabel RuleBase

    Table rulebase digunakan untuk menyimpan data aturan untuk fuzzy dari penentuan

    syarat oleh pemberi beasiswa. Field-field dari table rulebase adalah :

    No Nama Field Tipe Data Keterangan

    1. rulBasId Int(11) Kode Identitas untuk rule

    base(Primary Key)

    2. rulBasSchId Int(11) Kode Identitas untuk rule base

    pada beasiswa yang ditawarkan

    3. rulBasAntecedent VarChar(50) Antecedent pada rule base yang

    ditetapkan

    4. rulBasConsequent Int(11) Consequent pada rule base yang

    ditetapkan

    4. Tabel Membershipfunction

    Tabel membershipfunction digunakan untuk menyimpan data-data dari rentang nilai

    Linguistik Variabel. Field-field dari table membershipfunction adalah :

  • 26

    No. Nama Field Tipe Data Keterangan

    1. memFunId Int(11) Kode Identitas untuk

    membership function

    2. memFunLinVarId Int(11) Kode Identitas untuk

    membership function tergantung

    pada Linguistic Variabel

    3. memFunSchId Int(11) Kode Identitas membership

    function tergantung pada

    beasiswa yang di pilih

    4. memFunName VarChar(50) Nama membership function

    5. memFunValue1 Double Nilai titik pertama untuk

    membership function

    6. memFunValue2 Double Nilai titik kedua untuk

    membership function

    7. memFunValue3 Double Nilai titik ketiga untuk

    membership function

    8. memFunValue4 Double Nilai titik keempat untuk

    membership function

    5. Tabel LinguisticVariable

    Tabel LinguisticVariable digunakan untuk menyimpan data-data variable yang dijadikan

    penentu dalam syarat beasiswa yang telah ditentukan. Field-field dari table

    LinguisticVariable adalah :

    No. Nama Field Tipe Data Keterangan

    1. linVarId Int(11) Kode Identitas untuk Linguistik

    Variable

    2. linVarSchId Int(11) Kode Identitas untuk Linguistik

    Variabel tergantung pada

    beasiswa yang di pilih

  • 27

    3. linVarName VarChar(50) Nama dari Linguistik Variabel

    4. linVarType Enum(antecedent

    ,consequent)

    Tipe dari Linguistik Variable

    6. Tabel Value

    Tabel value digunakan untuk menyimpan data-data dari nilai yang diperlukan sebagai

    penilaian oleh sistem dengan perhitungan fuzzy.Field-field dari table value adalah :

    No. Nama Field Tipe Data Keterangan

    1. valAppId Int(11) Kode Identitas untuk table value

    2. valLinVarId Int(11) Kode Identitas untuk Linguisitk

    Variabel untuk value

    3. valSchId Int(11) Kode Identitas untuk beasiswa

    pada value

    4. valValue Double Nilai dari value

    3.2.3 Perancangan Antar Muka

    Antarmuka merupakan sebuah jembatan komunikasi antara sistem dan pengguna. Antar

    muka yang dirancang diharapkan mampu memudahkan pengguna dalam berinteraksi dengan

    sistem. Rancangan antar muka yang ada adalah sebagai berikut.

    Rancangan Antaramuka Halaman Pendaftaran Beasiswa

    Pendaftaran beasiswa berfungsi untuk para pemberi beasiswa untuk mendaftarkan

    beasiswa yang akan diberikan atau diumumkan. Pada antarmuka ini, pengguna diminta

    memasukkan Nama Pengguna, Kata Sandi, Email, Judul dari beasiswa, Tanggal Penutupan

    Pendaftaran, dan Isi yang berisi keterangan tentang beasiswa yang diberikan. Tombol Submit

    untuk memasukkan data-data yang telah diisikan.

  • 28

    Gambar 3.4: Rancangan antar muka halaman pendaftaran beasiswa.

    Rancagan Antarmuka Halaman Login Pengguna

    Halaman login pengguna berfungsi untuk login para pemberi beasiswa dan mahasiswa

    dan sebagai penga,an data, sehingga hanya pengguna yang mendapat akses yaitu pemberi

    beasiswa yang dapat melakukan manipulasi data yang ada disistem. Pada antarmuka ini,

    pengguna diminta memasukkan Nama Pengguna, Kata Sandi, dan memilih login sebagai

    mahasiswa atau pihak beasiswa. Tombol Submit untuk memeriksa masukan nama pengguna,

    kata sandi dan hak akses pengguna apliksi. Rancangn antarmuka halam pengguna ditunjukkan

    seperti gambar berikut:

    Gambar 3.5: Rancangan antar muka halaman login pengguna.

  • 29

    Rancangan Antarmuka Halaman Tambah Peubah Penentu

    Halaman ini berfungsi untuk menentukan kriteria-kriteria yang digunakan untuk menilai

    kelayakan calon penerima beasiswa, misalnya indeks prestasi kumulatif. Pada antarmuka

    halaman peubah penentu ini pemberi beasiswa mengisi nama peubah penentu dan jenisnya,

    anteseden atau konsekuennya. Tombol Submit berfungsi untuk memasukkan data yang telah

    dimasukkan. Rancangn antarmuka halam pengguna ditunjukkan seperti gambar berikut:

    Gambar 3.6: Rancangan antar muka halaman tambah peubah penentu.

    Rancangan Antarmuka Tambah Fungsi Keanggotaan

    Halaman Tambah Fungsi Keanggotaan berfungsi untuk menentukan fungsi-fungsi untuk

    setiap peubah penentu, misalnya fungsi rendah, sedang, dan tinggi untuk indeks prestasi

    kumulatif. Pada antarmuka ini, pemberi beasiswa memilih peubah penentu yang ingin ditentukan

    fungsi keanggotaannya, kemudian masukkan nama variable ligustiknya, nilai-nilai variable

    lingustiknya dari batas bawah sampai batas atas, serta tipe fungsi keanggotaannya apakah

    semakin besar nilainya maka semakin baik atau semkin kecil nilainya maka semakin baik.

    Tombol Submit berfungsi untuk memasukkan data-data yang telah diisi ke database. Rancangn

    antarmuka halam pengguna ditunjukkan seperti gambar berikut:

  • 30

    Gambar 3.7: Rancangan antar muka tambah fungsi keanggotaan.

    Rancangan Antarmuka Halaman Tambah Aturan

    Halaman tambah aturan ini berfungsi untuk menentukan aturan-aturan yang digunakan

    untuk menilai kelayakan calon penerima beasiswa, misalnya jika indeks prestasi kumulatif

    rendah, kelayakan rendah. Pada antarmuka ini, pemberi beasiswa dapat menambah beberapa

    aturan bedasarkan banyaknya pasangan fungsi keanggotaan yang telah dibuat sebelumnya.

    Misalnya, pengguna membuat 2 pasangan anteseden dan konsekuen pada fungsi keanggotaannya

    maka pada halaman basis data ini ditentukan 2 aturan juga. Berikut gambar rancangan antarmuka

    halaman basis aturan ketika proses penambahan aturan:

    Gambar 3.8: Rancangan antar muka halaman tambah aturan.

  • 31

    Rancangan Antarmuka Pendaftaran Mahasiswa/i

    Halaman Pendaftaran Mahasiswa/i berfungsi untuk para mahasiswa untuk mendaftar

    atau mencari beasiswa. Pada antarmuka ini, mahasiswa diminta memasukkan Nama Pengguna,

    Kata Sandi, Jurusan yang ditempuh, Email, Berkas yang merupakan data-data tambahkan yang

    diminta atau disyaratkan oleh pemilik beasiswa dalam bentuk .zip, Tanggal Lahir,

    Institusi/Universitas asal, Nama Wali, Alamat sekarang, dan nomor telepon. Tombol Submit

    untuk memasukkan data-data yang telah diisikan.

    Gambar 3.9: Rancangan antar muka halaman pendaftaran mahasiswa/i.

    Setelah mendaftarkan diri pada sebuah beasiswa, maka kembali ke halaman Login

    kemudian mahasiswa memasukkan persyaratan-persyaratan lain yang ditentukan oleh pemilik

    beasiswa. Indeks Prestasi Kumulatif misalnya.

  • 32

    IP

    Gambar 3.10: Rancangan antar muka halaman mahasiswa/i.

    Submit

  • 33

    BAB IV

    IMPLEMENTASI

    4.1 Implementasi

    Hasil implementasi rancangan direncanakan terdiri dari beberapa halaman yang berfungsi

    sebagai penghubung antar pengguna dan sistem. Setiap halaman dirancang sesuai dengan fungsi

    yang dibutuhkan.

    Halaman Publik

    Gambar 4.1: halaman publik.

  • 34

    Halaman publik menjadi halaman utama dari Portal Beasiswa KPU. Pada halaman ini,

    pengunjung bisa menawarkan beasiswa ke pengunjung lain melalui tautan daftar beasiswa

    baru. Untuk pengunjung yang telah terdaftar di Portal Beasiswa KPU, bisa mengunjungi

    halaman pengguna melalui tautan yang disediakan. Selain itu, di halaman publik ditampilkan

    informasi beasiswa-beasiswa yang terdaftar di Portal Beasiswa KPU. Di setiap informasi

    terdapat tautan yang mengarahkan pengunjung ke halaman pendaftaran dan hasil penilaian dari

    beasiswa tersebut.

    Halaman Pendaftaran Mahasiswa/i

    Gambar 4.2: halaman pendaftaran mahasiswa/i.

    Seperti dijelaskan sebelumnya, terdapat tautan pendaftaran bagi mahasiswa/i (tidak harus,

    bisa juga tingkatan lainnya) untuk setiap beasiswa. Tautan ini akan mengarahkan pemohon

  • 35

    beasiswa ke halaman seperti terlihat di gambar 2. Pada halaman ini, seorang pemohon

    mengisikan semua data yang diminta untuk dapat mendaftarkan diri ke beasiswa yang

    dikehendaki.

    Halaman Hasil (Publik)

    Gambar 4.3: halaman hasil (publik).

    Halaman ini berfungsi seperti pengumuman untuk setiap beasiswa yang terdaftar. Di

    halaman ini dapat dilihat pemohon-pemohon beasiswa mana yang diterima sebagai peraih

    beasiswa dan ditolak. Selain itu, jika data pemohon-pemohon belum diproses, maka akan

    ditampilkan sebagai dalam pertimbangan. Data yang ditampilkan diurut berdasarkan nama

    pengguna dari pemohon-pemohon beasiswa.

    Halaman Pendaftaran Beasiswa

  • 36

    Gambar 4.4: halaman pendaftaran beasiswa.

    Pengunjung yang tertarik untuk menawarkan beasiswa bisa mengisi data yang dibutuhkan

    pada halaman pendaftaran beasiswa agar beasiswa ditampilkan di halaman publik dari Portal

    Beasiswa KPU, sehingga pengunjung lain yang tertarik terhadap beasiswa yang ditawarkan bisa

    mendaftarkan diri. Informasi utama yang dibutuhkan untuk menawarkan beasiswa adalah judul,

    informasi (syarat-syarat, dsb.), dan tanggal penutupan pendaftaran beasiswa.

    Halaman Login

  • 37

    Gambar 4.5: halaman login.

    Halaman login berfungsi sebagai otentikasi pengguna terdaftar, baik itu penawar

    beasiswa maupun pemohon beasiswa. Data yang digunakan untuk otentikasi hanya nama

    pengguna dan kata sandi yang dipilih saat pendaftaran.

  • 38

    Halaman Beasiswa

    Gambar 4.6: halaman beasiswa.

  • 39

    Gambar 4.7: halaman beasiswa (deskripsi).

    Gambar 4.8: halaman beasiswa (ganti kata sandi).

    Halaman untuk penawar beasiswa dapat dibagi menjadi tiga bagian, yaitu bagian untuk

    penilaian (syarat-syarat, basis aturan, dan penilaian), bagian untuk deskripsi yang berfungsi

    sebagai tempat pengisian informasi yang ditampilkan ke publik, dan bagian untuk mengganti

    kata sandi.

  • 40

    Halaman Peubah Penentu

    Gambar 4.9: halaman peubah penentu.

    Gambar 4.10: halaman tambah/ubah peubah penentu.

    Di halaman inilah seorang penawar beasiswa menentukan syarat-syarat yang digunakan

    sebagai penilaian, misalnya indeks prestasi kumulatif dan penghasilan orang tua, dan hasil,

  • 41

    misalnya kelayakan. Pada halaman ini, penawar beasiswa dapat menambah, mengubah, dan

    menghapus syarat dan hasil yang digunakan untuk penilaian.

    Halaman Fungsi Keanggotaan

    Gambar 4.11: halaman fungsi keanggotaan.

  • 42

    Gambar 4.12: halaman tambah/ubah fungsi keanggotaan.

    Gambar 4.13: halaman fungsi keanggotaan (pemula).

  • 43

    Gambar 4.14: halaman tambah/ubah fungsi keanggotaan (pemula).

    Fungsi keanggotaan berfungsi seperti rentang nilai untuk syarat dan hasil yang ditentukan

    di halaman peubah penentu, misalnya indeks prestasi kumulatif memiliki rentang 0-4. Sama

    seperti halaman peubah penentu, di sini penawar beasiswa dapat menambah, mengubah, dan

    menghapus fungsi keanggotaan.

  • 44

    Halaman Basis Aturan

    Gambar 4.15: halaman basis aturan.

    Gambar 4.16: halaman tambah aturan.

    Setelah menentukan syarat-syarat, hasil, dan rentang nilainya, penawar beasiswa

    diharuskan untuk membuat basis aturan yang digunakan untuk penilaian, misalnya jika indeks

  • 45

    prestasi kumulatif tinggi dan penghasilan orang tua rendah, kelayakan tinggi. Di halaman ini,

    penawar beasiswa hanya dapat menambah dan menghapus aturan, tidak dapat mengubah.

    Halaman Hasil (Beasiswa)

    Gambar 4.17: halaman hasil (beasiswa).

    Di halaman ini, penawar beasiswa mendapatkan hasil penilaian setiap pemohon oleh

    sistem. Selanjutnya, untuk menerima atau menolak seorang pemohon, dilakukan pada tautan

    yang terdapat di kolom aksi. Selain itu, di halaman ini, penawar beasiswa dapat melihat rincian

    informasi setiap pemohon beasiswa.

  • 46

    Halaman Pemohon

    Gambar 4.18: halaman pemohon.

    Gambar 4.19: halaman pemohon (ganti kata sandi).

    Tidak jauh berbeda dengan halaman beasiswa, halaman pemohon dibagi menjadi tiga

    bagian juga, yaitu bagian untuk pengisian nilai yang digunakan sebagai syarat-syarat, bagian

    pengisian rincian informasi, dan bagian ganti kata sandi.

  • 47

    BAB V

    PENGUJIAN SISTEM

    5.1 Pengujian Sistem

    Pengujian sistem dilakukan pada setiap halaman yang dibangun di implementasi.

    Pengujian bertujuan untuk memastikan halaman yang dibangun dapat bekerja dengan baik dan

    sesuai dengan fungsi yang diharapkan.

    Pengujian dimulai dengan melakukan pendaftaran beasiswa ke Portal Beasiswa KPU

    hingga melihat hasil dari penilaian sistem.

  • 48

    Gambar 5.1: pendaftaran beasiswa baru.

    Gambar 5.2: notifikasi jika nama pengguna telah dipakai.

    Pertama-tama, dilakukan pendaftaran beasiswa baru. Pada gambar terlihat notifikasi

    bahwa semua data diperlukan, sehingga harus diisi semuanya. Jika tidak diisi semuanya,

    pendaftaran tidak dapat dilanjutkan. Selain itu, nama pengguna yang dipilih harus berbeda.

    Setelah sukses mendaftar, dicoba login melalui halaman login.

  • 49

    Gambar 5.3: halaman login.

    Gambar 5.4: halaman login jika terjadi kesalahan.

  • 50

    Gambar 5.5: halaman beasiswa.

    Jika login sebagai beasiswa sukses, maka akan terlihat halaman seperti pada gambar 5.

    Selanjutnya, dapat dilihat pada gambar 6 bahwa informasi yang disertakan pada saat pendaftaran

    telah tercatat di basis data sistem.

    Gambar 5.6: halaman beasiswa (deskripsi).

    Selanjutnya, dilakukan penambahan syarat-syarat yang digunakan untuk penilaian. Dapat

    dilihat pada gambar 7 dilakukan pengisian, kemudian pada gambar 8, terlihat peubah penentu

    telah terdaftar. Selain itu, pada gambar 9 dilakukan pengubahan dan pada gambar 10 terlihat

    pengubahan berhasil dilakukan.

    Gambar 5.7: penambahan peubah penentu.

  • 51

    Gambar 5.8: halaman peubah penentu.

    Gambar 5.9: pengubahan peubah penentu.

    Gambar 5.10: halaman peubah penentu.

    Setelah peubah penentu diisi, langkah yang dilakukan adalah menentukan fungsi

    keanggotaan untuk setiap peubah penentu seperti disajikan pada gambar 11. Pada gambar 12,

    terlihat fungsi keanggotaan untuk IPK dengan nama rendah telah berhasil ditentukan.

  • 52

    Gambar 5.11: penambahan fungsi keanggotaan.

    Gambar 5.12: halaman fungsi keanggotaan.

    Setelah fungsi-fungsi keanggotaan ditentukan, selanjutnya adalah menentukan basis

    aturan seperti pada gambar 13 (pada saat melakukan penambahan) dan gambar 14 (setelah

    penambahan).

    Gambar 5.13: penambahan aturan.

  • 53

    Gambar 5.14: penambahan gagal jika aturan telah ada.

    Gambar 5.15: halaman basis aturan.

    Setelah langkah-langkah di atas, dilakukan pendaftaran untuk pemohon agar dapat dilihat

    halaman hasil.

  • 54

    Gambar 5.16: pendaftaran pemohon.

    Jika berkas yang disertakan tidak dalam format *.zip, yang terjadi adalah pesan berupa

    Gagal mengunggah berkas, seperti terlihat pada gambar 17. Jika nama pengguna telah dipakai,

    gambar 18 akan terlihat pada layar.

  • 55

    Gambar 5.17: notifikasi jika berkas tidak berformat *.zip.

  • 56

    Gambar 5.18: notifikasi jika nama pengguna telah dipakai.

    Jika sukses mendaftar, dilakukan login dengan jenis mahasiswa, nama pengguna dan kata

    sandi.

    Gambar 5.19: halaman login.

    Setelah login, pemohon beasiswa akan diminta untuk mengisi data yang diperlukan untuk

    penilaian beasiswa yang diminati. Seperti pada gambar 20, diminta data berupa IPK dan

    Penghasilan orang tua. Selain itu, data yang dimasukkan saat pendaftaran terlihat sudah tercatat

    di basis data sistem.

  • 57

    Gambar 5.20: halaman pemohon.

    Setelah terdapat pemohon, halaman hasil pada penawar beasiswa akan langsung

    melakukan penilaian sesuai dengan data yang diberikan setiap pemohon, seperti pada gambar 21

    dan 22. Untuk menerima seorang pemohon sebagai peraih beasiswa, tinggal memilih diterima.

    Begitu pula untuk menolak, tinggal memilih ditolak. Pada gambar 23, terlihat kidung yang

    sebelumnya (gambar 21) dalam pertimbangan diterima menjadi peraih beasiswa.

    Gambar 5.21: halaman hasil (beasiswa).

  • 58

    Gambar 5.22: halaman rincian hasil.

    Gambar 5.23: halaman hasil (beasiswa) setelah kidung diterima.

    Selain itu, pengunjung dapat melihat hasil penilaian juga, namun bedanya halaman hasil

    untuk pengunjung tidak menyertakan hasil penilaian.

  • 59

    Gambar 5.24: halaman hasil (publik).

    Selain dari aspek rancangan, pengujian juga dilakukan terhadap penilaian. Terlihat pada

    gambar 23, hasil penilaian beberapa pemohon beasiswa dengan masukan sebagai berikut:

    Nama IPK Penghasilan orang tua Kelayakan

    kidung 4 0 10

    uki 1.25 37500000 6.25

    Poerwiyanto 3.75 500000 5

    Tabel 1: Pengujian penilaian.

  • 60

    BAB VI

    KESIMPULAN

    6.1 Kesimpulan

    Berdasarkan penjelasan dalam bab-bab sebelumnya dan hasil implementasi dan pengujian, dapat

    diambil kesimpulan sebagai berikut.

    1. Portal Beasiswa KPU mampu menjadi sebuah tempat untuk menampung informasi

    beasiswa-beasiswa yang ditawarkan berbagai institusi, sehingga memudahkan pemohon

    beasiswa dalam mencari mengenai informasi tentang beasiswa-beasiswa baru yang

    ditawarkan.

    2. Portal Beasiswa KPU juga memudahkan penawar beasiswa yaitu dengan menilai

    pemohon-pemohon beasiswa, sehingga yang perlu dilakukan penawar hanya mengambil

    keputusan.

  • 61

    DAFTAR PUSTAKA

    Anon., n. d., Sistem Pendukung Keputusan, http://id.wikipedia.org/

    wiki/Sistem_pendukung_keputusan.

    Basuki, A. P., 2010, Membangun Web Berbasis PHP dengan Framework Codeigniter, Penerbit

    Lokomedia, Yogyakarta.

    Hidayati, E., 2010, Sistem Pendukung Keputusan Berbasis Logika Fuzzy untuk Analisis

    Kelayakan Kredit, Pendahuluan, Skripsi, Jurusan Matematika, Institut Teknologi Sepuluh

    Nopember.

    Turban, E., Aronson, J. E., dan Bolloju, N., 2001, Decision Support Systems and Intelligent

    Systems, Prentice Hall, Upper Saddle River, New Jersey.

    Wiswakarma, K., 2010, 9 Langkah Menjadi Master Framework Codeigniter, Penerbit

    Lokomedia, Yogyakarta.

  • 62

    LAMPIRAN

    KODE CONTROLLER

    applicant.php

  • 63

    $this->load->view("vB");

    }

    function uApplicant(){

    $this->load->library("form_validation");

    $this->form_validation-

    >set_rules("appBirthdate","appBirthdate","required");

    $this->form_validation-

    >set_rules("appDepartment","appDepartment","required");

    $this->form_validation-

    >set_rules("appEmail","appEmail","required|valid_email");

    $this->form_validation->set_rules("appGuaName","appGuaName","required");

    $this->form_validation->set_rules("appName","appName","required");

    $this->form_validation-

    >set_rules("appUniversity","appUniversity","required");

    $this->form_validation->set_rules("appAddress","appAddress","required");

    $this->form_validation-

    >set_rules("appTelNumber","appTelNumber","required");

    if($this->form_validation->run()==false){

    $e="Semua masukan harus diisi!";

    }

    if(empty($e)){

    $config["upload_path"]="./files/";

    $config["allowed_types"]="zip";

    $this->load->library("upload",$config);

    if(!$this->upload->do_upload("appFile")){

    $file["file_name"]=$this->input->post("appFile1");

    }else{

    $file=$this->upload->data();

    }

    $data=array(

    'appId'=>$this->session->userdata('id'),

    'appBirthdate'=>$this->input->post('appBirthdate'),

    'appDepartment'=>$this->input->post('appDepartment'),

    'appEmail'=>$this->input->post('appEmail'),

  • 64

    'appFile'=>$file["file_name"],

    'appGuaName'=>$this->input->post('appGuaName'),

    'appName'=>$this->input->post('appName'),

    'appUniversity'=>$this->input->post('appUniversity'),

    'appGender'=>$this->input->post('appGender'),

    'appAddress'=>$this->input->post('appAddress'),

    'appTelNumber'=>$this->input->post('appTelNumber')

    );

    $this->load->model("mApplicant");

    $this->mApplicant->update($data);

    header("location:".base_url()."index.php/applicant");

    }else{

    $this->index($e);

    }

    }

    function uPassword(){

    $this->load->library("form_validation");

    $this->form_validation-

    >set_rules("appPwd","appPwd","required|matches[appPwd1]");

    if($this->form_validation->run()==false){

    $e="Kata sandi tidak cocok!";

    }

    $this->load->model("mApplicant");

    if(empty($e)){

    $data=array(

    "appId"=>$this->session->userdata("id"),

    "appPwd"=>$this->input->post("appPwd")

    );

    $this->mApplicant->updatePassword($data);

    header("location:".base_url()."index.php/applicant");

    }else{

    $this->index($e);

  • 65

    }

    }

    function uValue(){

    $linVarId=array_keys($this->input->post("value"));

    $value=array_values($this->input->post("value"));

    for($i=0;$i$this->session->userdata("id"),

    "valLinVarId"=>$linVarId[$i],

    "valValue"=>$value[$i]

    );

    $this->load->model("mValue");

    $this->mValue->update($data);

    }

    header("location:".base_url()."index.php/applicant");

    }

    }

    ?>

    Linguisticvariable.php

  • 66

    if($couApplicant[0]->count>0){

    header("location:".base_url()."index.php/scholarship");

    }

    }

    function index(){

    $this->load->model("mLinguisticVariable");

    $couConsequent=$this->mLinguisticVariable->couConsequent($this->session-

    >userdata("id"));

    $data["e"]="";

    if($couConsequent[0]->count!=1){

    $data["e"]="Belum terdapat hasil!";

    }

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->loadView($data);

    }

    function add($e=""){

    $data["act"]="add";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["couConsequent"]=$this->mLinguisticVariable->couConsequent($this-

    >session->userdata("id"));

    $this->loadView($data);

    }

    function delete($id){

    $this->load->model("mLinguisticVariable");

    $this->mLinguisticVariable->delete($id);

    header("location:".base_url()."index.php/linguisticvariable");

    }

    function edit($id,$e=""){

  • 67

    $data["act"]="edit";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieveById($id);

    $this->loadView($data);

    }

    function iu($id=""){

    $this->load->library("form_validation");

    $this->form_validation->set_rules("name","name","required");

    if($this->form_validation->run()==false){

    if($id==""){

    $this->add("Semua masukan harus diisi!");

    }else{

    $this->edit($id,"Semua masukan harus diisi!");

    }

    }else{

    $data=array(

    "schId"=>$this->session->userdata("id"),

    "name"=>$this->input->post("name"),

    "type"=>$this->input->post("type")

    );

    $this->load->model("mLinguisticVariable");

    if($id==""){

    $this->mLinguisticVariable->insert($data);

    }else{

    $this->mLinguisticVariable->update($data,$id);

    }

    header("location:".base_url()."index.php/linguisticvariable");

    }

    }

  • 68

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vLinguisticVariable",$data);

    $this->load->view("vB");

    }

    }

    ?>

    login.php

  • 69

    $this->index("Login salah, silakan coba lagi!");

    }

    }elseif($this->input->post("type")=="mahasiswa"){

    $this->load->model("mApplicant");

    $applicant=$this->mApplicant->authenticate($data);

    if(sizeof($applicant)==1){

    $this->load->library("session");

    $this->session->set_userdata(array("id"=>$applicant[0]-

    >appId,"type"=>"applicant","username"=>$applicant[0]->appUsername));

    header("location:".base_url()."index.php/applicant");

    }else{

    $this->index("Login salah, silakan coba lagi!");

    }

    }

    }

    /*function forgetPassword(){

    $data["act"]="forgetPassword";

    $this->loadView($data);

    }*/

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vLogin",$data);

    $this->load->view("vB");

    }

    function logout(){

    $this->session-

    >unset_userdata(array("id"=>"","type"=>"","username"=>""));

    header("location:".base_url()."index.php/public1");

    }

  • 70

    /*function sendPassword(){

    $header="From: administrator@portalbeasiswakpu \n";

    $header.="Reply-To: administrator@portalbeasiswakpu \n";

    $header.="Content-Type: text/html \r\n";

    if($this->input->post("type")=="beasiswa"){

    $this->load->model("mScholarship");

    $scholarship=$this->mScholarship->retrieveByUsername($this->input-

    >post("username"));

    mail($scholarship[0]->schEmail,"Portal Beasiswa KPU: lupa kata

    sandi","nama pengguna: ".$scholarship[0]->schUsername.", password: ".$scholarship[0]-

    >schPassword,$header);

    }elseif($this->input->post("type")=="mahasiswa"){

    $this->load->model("mApplicant");

    $applicant=$this->mApplicant->retrieveByUsername($this->input-

    >post("username"));

    mail($applicant[0]->appEmail,"Portal Beasiswa KPU: lupa kata

    sandi","nama pengguna: ".$applicant[0]->appUsername.", password: ".$applicant[0]-

    >appPassword,$header);

    }

    }*/

    }

    ?>

    Membershipfunction.php

  • 71

    }

    function index(){

    $this->load->model('mLinguisticVariable');

    $linVariable=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->load->model("mMembershipFunction");

    $data["e"]="";

    foreach($linVariable as $row){

    $couMemFunction=$this->mMembershipFunction->couMemFunction($row-

    >linVarId);

    if($couMemFunction[0]->count==0){

    $data["e"]="Ada peubah penentu yang belum memiliki fungsi

    keanggotaan!";

    }

    }

    $data["memFunction"]=$this->mMembershipFunction->retrieve($this->session-

    >userdata("id"));

    $this->loadView($data);

    }

    function add($e=""){

    $data["act"]="add";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->loadView($data);

    }

    function delete($id,$schId){

    $this->load->model("mMembershipFunction");

    $this->mMembershipFunction->delete($id,$this->session->userdata("id"));

    header("location:".base_url()."index.php/membershipfunction");

    }

  • 72

    function edit($id,$e=""){

    $data["act"]="edit";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->load->model("mMembershipFunction");

    $data["memFunction"]=$this->mMembershipFunction->retrieveById($id);

    $this->loadView($data);

    }

    function iu($id=""){

    $this->load->library("form_validation");

    $this->form_validation->set_rules("name","name","required");

    $this->form_validation->set_rules("value1","value1","numeric");

    $this->form_validation->set_rules("value2","value2","numeric");

    $this->form_validation->set_rules("value3","value3","numeric");

    $this->form_validation->set_rules("value4","value4","numeric");

    if($this->form_validation->run()==false||

    $this->input->post("value1")>$this->input->post("value2")||

    $this->input->post("value2")>$this->input->post("value3")||

    $this->input->post("value3")>$this->input->post("value4")){

    if($id==""){

    $this->add("Semua masukan harus diisi dan

    nilai1

  • 73

    "name"=>$this->input->post("name"),

    "value1"=>$this->input->post("value1"),

    "value2"=>$this->input->post("value2"),

    "value3"=>$this->input->post("value3"),

    "value4"=>$this->input->post("value4")

    );

    $this->load->model("mMembershipFunction");

    if($id==""){

    $this->mMembershipFunction->insert($data);

    }else{

    $this->mMembershipFunction->update($data,$id);

    }

    header("location:".base_url()."index.php/membershipfunction");

    }

    }

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vMembershipFunction",$data);

    $this->load->view("vB");

    }

    }

    ?>

    membershipfunction1.php

  • 74

    $couConsequent=$this->mLinguisticVariable->couConsequent($this->session-

    >userdata("id"));

    if($couConsequent[0]->count!=1){

    header("location:".base_url()."index.php/scholarship");

    }

    }

    function index(){

    $this->load->model('mLinguisticVariable');

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->load->model("mMembershipFunction");

    $data["e"]="";

    foreach($data["linVariable"] as $row){

    $couMemFunction=$this->mMembershipFunction->couMemFunction($row-

    >linVarId);

    if($couMemFunction[0]->count==0){

    $data["e"]="Ada peubah penentu yang belum memiliki fungsi

    keanggotaan!";

    }

    $data["memFunction"][$row->linVarId]=$this->mMembershipFunction-

    >retrieve1($row->linVarId,$this->session->userdata("id"));

    }

    $this->loadView($data);

    }

    function add($e=""){

    $data["act"]="add";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieve1($this-

    >session->userdata("id"));

    if(sizeof($data["linVariable"])>0){

    $this->loadView($data);

    }else{

  • 75

    header("location:".base_url()."index.php/membershipfunction1");

    }

    }

    function delete($linVarId,$schId){

    $this->load->model("mMembershipFunction");

    $this->mMembershipFunction->deleteByLinVarId($linVarId,$this->session-

    >userdata("id"));

    header("location:".base_url()."index.php/membershipfunction1");

    }

    function edit($linVarId,$memFunId,$e=""){

    $data["act"]="edit";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieveById($linVarId);

    $this->load->model("mMembershipFunction");

    $data["memFunction"]=$this->mMembershipFunction->retrieveById($memFunId);

    $this->loadView($data);

    }

    function iu($memFunId=""){

    $this->load->library("form_validation");

    $this->form_validation->set_rules("value1","value1","numeric");

    $this->form_validation->set_rules("value2","value2","numeric");

    if($this->form_validation->run()==false||

    $this->input->post("value1")>$this->input->post("value2")){

    if($id==""){

    $this->add("Semua masukan harus diisi dan

    nilai1

  • 76

    }else{

    $data[0]=array(

    "linVarId"=>$this->input->post("linVarId"),

    "schId"=>$this->session->userdata("id"),

    "name"=>"tinggi",

    "value1"=>$this->input->post("value1"),

    "value2"=>$this->input->post("value2"),

    "value3"=>$this->input->post("value2"),

    "value4"=>$this->input->post("value2")

    );

    $data[1]=array(

    "linVarId"=>$this->input->post("linVarId"),

    "schId"=>$this->session->userdata("id"),

    "name"=>"rendah",

    "value1"=>$this->input->post("value1"),

    "value2"=>$this->input->post("value1"),

    "value3"=>$this->input->post("value1"),

    "value4"=>$this->input->post("value2")

    );

    $this->load->model("mMembershipFunction");

    if($memFunId==""){

    for($i=0;$imMembershipFunction->insert($data[$i]);

    }

    }else{

    $memFunction=$this->mMembershipFunction->retrieve1($this-

    >input->post("linVarId"),$this->session->userdata("id"));

    for($i=0;$imMembershipFunction-

    >update($data[$i],$memFunction[$i]->memFunId);

    }

    }

    header("location:".base_url()."index.php/membershipfunction1");

  • 77

    }

    }

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vMembershipFunction1",$data);

    $this->load->view("vB");

    }

    }

    ?>

    public1.php

  • 78

    $this->load->view("vB");

    }

    function result($schId){

    $data["act"]="result";

    $this->load->model("mApplicant");

    $data["applicant"]=$this->mApplicant->retrieveBySchId($schId);

    $this->loadView($data);

    }

    }

    ?>

    registration.php

  • 79

    $this->form_validation-

    >set_rules("appPwd","appPwd","required|matches[appPwd1]");

    $this->form_validation-

    >set_rules("appBirthdate","appBirthdate","required");

    $this->form_validation-

    >set_rules("appDepartment","appDepartment","required");

    $this->form_validation-

    >set_rules("appEmail","appEmail","required|valid_email");

    $this->form_validation->set_rules("appGuaName","appGuaName","required");

    $this->form_validation->set_rules("appName","appName","required");

    $this->form_validation-

    >set_rules("appUniversity","appUniversity","required");

    $this->form_validation->set_rules("appAddress","appAddress","required");

    $this->form_validation-

    >set_rules("appTelNumber","appTelNumber","required");

    if($this->form_validation->run()==false){

    $e="Semua masukan harus diisi atau kata sandi tidak cocok!";

    }

    $this->load->model("mApplicant");

    $applicant=$this->mApplicant->retrieve();

    foreach($applicant as $row){

    if($this->input->post("appUsername")==$row->appUsername){

    $e="Nama pengguna telah dipakai!";

    }

    }

    $config["upload_path"]="./files/";

    $config["allowed_types"]="zip";

    $this->load->library("upload",$config);

    if(!$this->upload->do_upload("appFile")){

    $e="Gagal mengunggah berkas!";

    }else{

    $file=$this->upload->data();

    }

    if(empty($e)){

    $data=array(

  • 80

    'appSchId'=>$this->input->post('appSchId'),

    'appUsername'=>$this->input->post('appUsername'),

    'appPwd'=>$this->input->post('appPwd'),

    'appBirthdate'=>$this->input->post('appBirthdate'),

    'appDepartment'=>$this->input->post('appDepartment'),

    'appEmail'=>$this->input->post('appEmail'),

    'appFile'=>$file["file_name"],

    'appGuaName'=>$this->input->post('appGuaName'),

    'appName'=>$this->input->post('appName'),

    'appStatus'=>'belum diketahui',

    'appUniversity'=>$this->input->post('appUniversity'),

    'appGender'=>$this->input->post('appGender'),

    'appAddress'=>$this->input->post('appAddress'),

    'appTelNumber'=>$this->input->post('appTelNumber')

    );

    $this->mApplicant->insert($data);

    $this->load->model("mLinguisticVariable");

    $linVariable=$this->mLinguisticVariable-

    >retrieveBySchIdType($this->input->post('appSchId'));

    foreach($linVariable as $row){

    $this->load->model("mValue");

    $applicant=$this->mApplicant->retrieveByUsername($this-

    >input->post('appUsername'));

    $data=array(

    "valAppId"=>$applicant[0]->appId,

    "valLinVarId"=>$row->linVarId,

    "valSchId"=>$this->input->post('appSchId'),

    "valValue"=>"0"

    );

    $this->mValue->insert($data);

    }

    header("location:".base_url()."index.php/login");

    }else{

  • 81

    $this->applicant($this->input->post("appSchId"),$e);

    }

    }

    function iScholarship(){

    $this->load->library("form_validation");

    $this->form_validation->set_rules("content","content","required");

    $this->form_validation-

    >set_rules("email","email","required|valid_email");

    $this->form_validation->set_rules("expdate","expdate","required");

    $this->form_validation-

    >set_rules("password","password","required|matches[password1]");

    $this->form_validation->set_rules("title","title","required");

    $this->form_validation->set_rules("username","username","required");

    if($this->form_validation->run()==false){

    $e="Semua masukan harus diisi atau kata sandi tidak cocok!";

    }

    $this->load->model("mScholarship");

    $scholarship=$this->mScholarship->retrieve();

    foreach($scholarship as $row){

    if($this->input->post("username")==$row->schUsername){

    $e="Nama pengguna telah dipakai!";

    }

    }

    if(empty($e)){

    $data=array(

    "content"=>$this->input->post("content"),

    "email"=>$this->input->post("email"),

    "expdate"=>$this->input->post("expdate"),

    "password"=>$this->input->post("password"),

    "title"=>$this->input->post("title"),

    "username"=>$this->input->post("username")

    );

  • 82

    $this->mScholarship->insert($data);

    header("location:".base_url()."index.php/login");

    }else{

    $this->scholarship($e);

    }

    }

    function scholarship($e=""){

    $data["e"]=$e;

    $data["type"]="scholarship";

    $this->loadView($data);

    }

    }

    ?>

    result.php

  • 83

    }

    $this->load->model("mRuleBase");

    $rulBase=$this->mRuleBase->retrieve($this->session->userdata("id"));

    if(sizeof($rulBase)!=$couRuleBase){

    header("location:".base_url()."index.php/scholarship");

    }

    }

    function index(){

    $this->load->model("mApplicant");

    $applicant=$this->mApplicant->retrieveBySchId($this->session-

    >userdata("id"));

    $this->load->model("mValue");

    $k=0;

    foreach($applicant as $row1){

    $this->load->model("mRuleBase");

    $rulBase=$this->mRuleBase->retrieve($this->session-

    >userdata("id"));

    $consequent=null;

    $i=0;

    foreach($rulBase as $row2){

    $antecedent=explode(";",$row2->rulBasAntecedent);

    $this->load->model("mMembershipFunction");

    for($j=0;$jmMembershipFunction-

    >retrieveById($antecedent[$j]);

    $value=$this->mValue->retrieveByAppIdLinVarId($row1-

    >appId,$memFunction[0]->memFunLinVarId);

    if($memFunction[0]->memFunValue1==$memFunction[0]-

    >memFunValue2&&$memFunction[0]->memFunValue1==$value[0]->valValue){

    $fuzAntecedent[$j]=1;

    }elseif($memFunction[0]->memFunValue1>=$value[0]-

    >valValue||$memFunction[0]->memFunValue4valValue){

    $fuzAntecedent[$j]=0;

    }elseif($memFunction[0]->memFunValue1valValue&&$memFunction[0]->memFunValue2>=$value[0]->valValue){

  • 84

    $fuzAntecedent[$j]=($value[0]->valValue-

    $memFunction[0]->memFunValue1)/($memFunction[0]->memFunValue2-$memFunction[0]-

    >memFunValue1);

    }elseif($memFunction[0]->memFunValue2valValue&&$memFunction[0]->memFunValue3>=$value[0]->valValue){

    $fuzAntecedent[$j]=1;

    }elseif($memFunction[0]->memFunValue3valValue&&$memFunction[0]->memFunValue4>=$value[0]->valValue){

    $fuzAntecedent[$j]=($memFunction[0]-

    >memFunValue4-$value[0]->valValue)/($memFunction[0]->memFunValue4-$memFunction[0]-

    >memFunValue3);

    }else{

    $fuzAntecedent[$j]=0;

    }

    }

    $memFunction=$this->mMembershipFunction-

    >retrieveById($row2->rulBasConsequent);

    if($memFunction[0]->memFunValue2-$memFunction[0]-

    >memFunValue1!=0){

    $consequent[$i]=array(min($fuzAntecedent),min($fuzAntecedent)*($memFunction[0]-

    >memFunValue2-$memFunction[0]->memFunValue1)+$memFunction[0]->memFunValue1);

    $i++;

    }

    if($memFunction[0]->memFunValue4-$memFunction[0]-

    >memFunValue3!=0){

    $consequent[$i]=array(min($fuzAntecedent),-

    (min($fuzAntecedent)*($memFunction[0]->memFunValue4-$memFunction[0]-

    >memFunValue3))+$memFunction[0]->memFunValue4);

    $i++;

    }

    }

    $a=0;$b=0;

    for($i=0;$iappUsername]=$row1->appId;

    if($b==0){

  • 85

    $data["result"][$row1->appUsername]=0;

    }else{

    $data["result"][$row1->appUsername]=$a/$b;

    }

    $data["status"][$row1->appUsername]=$row1->appStatus;

    $k++;

    }

    $data["accepted"]=$this->mApplicant->couAccepted($this->session-

    >userdata("id"));

    if(!empty($data["result"])){

    arsort($data["result"]);

    $data["username"]=array_keys($data["result"]);

    }else{

    $data["result"]=array();

    $data["username"]=array();

    }

    $this->loadView($data);

    }

    function accept($id){

    $this->load->model("mApplicant");

    $this->mApplicant->accept($id);

    header("location:".base_url()."index.php/result");

    }

    function detail($id){

    $data["act"]="detail";

    $this->load->model("mApplicant");

    $data["applicant"]=$this->mApplicant->retrieveById($id);

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable-

    >retrieveBySchIdType($data["applicant"][0]->appSchId);

    foreach($data["linVariable"] as $row){

  • 86

    $this->load->model("mValue");

    $data["value"][$row->linVarId]=$this->mValue-

    >retrieveByAppIdLinVarId($id,$row->linVarId);

    }

    $this->loadView($data);

    }

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vResult",$data);

    $this->load->view("vB");

    }

    function reject($id=""){

    $this->load->model("mApplicant");

    $this->mApplicant->reject($id);

    header("location:".base_url()."index.php/result");

    }

    }

    ?>

    rulebase.php

  • 87

    header("location:".base_url()."index.php/scholarship");

    }else{

    foreach($linVariable as $row){

    $couMemFunction=$this->mMembershipFunction-

    >couMemFunction($row->linVarId);

    if($couMemFunction[0]->count==0){

    header("location:".base_url()."index.php/scholarship");

    }

    }

    }

    }

    function index(){

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->load->model("mMembershipFunction");

    $couRuleBase=1;

    foreach($data["linVariable"] as $row){

    if($row->linVarType=="anteseden"){

    $couMemFunction=$this->mMembershipFunction-

    >couMemFunction($row->linVarId);

    $couRuleBase*=$couMemFunction[0]->count;

    }

    }

    $this->load->model("mRuleBase");

    $data["rulBase"]=$this->mRuleBase->retrieve($this->session-

    >userdata("id"));

    $data["e"]="";

    if(sizeof($data["rulBase"])!=$couRuleBase){

    $data["e"]="Seharusnya terdapat ".$couRuleBase." aturan!";

    }

    $data["memFunction"]=$this->mMembershipFunction->retrieve($this->session-

    >userdata("id"));

  • 88

    $this->loadView($data);

    }

    function add($e=""){

    $data["act"]="add";

    $data["e"]=$e;

    $this->load->model("mLinguisticVariable");

    $data["linVariable"]=$this->mLinguisticVariable->retrieve($this->session-

    >userdata("id"));

    $this->load->model("mMembershipFunction");

    $data["memFunction"]=$this->mMembershipFunction->retrieve($this->session-

    >userdata("id"));

    $this->loadView($data);

    }

    function delete($id){

    $this->load->model("mRuleBase");

    $this->mRuleBase->delete($id);

    header("location:".base_url()."index.php/rulebase");

    }

    function insert(){

    $s=sizeof($this->input->post("linVarId"));

    $antecedent="";

    for($i=0;$iload->model("mRuleBase");

    $couAntecedent=$this->mRuleBase->couAntecedent($antecedent);

    if($couAntecedent[0]->count==1){

    $this->add("Aturan telah ada!");

    }else{

    $data=array(

  • 89

    "schId"=>$this->session->userdata("id"),

    "antecedent"=>$antecedent,

    "consequent"=>$_POST["linVarId"][$s-1]

    );

    $this->mRuleBase->insert($data);

    header("location:".base_url()."index.php/rulebase");

    }

    }

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vRuleBase",$data);

    $this->load->view("vB");

    }

    }

    ?>

    scholarship.php

  • 90

    $data["scholarship"]=$this->mScholarship->retrieveById($this->session-

    >userdata("id"));

    $data["username"]=$this->session->userdata("username");

    $this->loadView($data);

    }

    function loadView($data){

    $this->load->view("vA");

    $this->load->view("vScholarship",$data);

    $this->load->view("vB");

    }

    function u(){

    $this->load->library("form_validation");

    $this->form_validation->set_rules("content","content","required");

    $this->form_validation-

    >set_rules("email","email","required|valid_email");

    $this->form_validation->set_rules("expdate","expdate","required");

    $this->form_validation->set_rules("title","title","required");

    if($this->form_validation->run()==false){

    $this->index("Semua masukan harus diisi!");

    }else{

    $data=array(

    "schId"=>$this->session->userdata("id"),

    "content"=>$this->input->post("content"),

    "email"=>$this->input->post("email"),

    "expdate"=>$this->input->post("expdate"),

    "title"=>$this->input->post("title")

    );

    $this->load->model("mScholarship");

    $this->mScholarship->update($data);

    header("location:".base_url()."index.php/scholarship");

    }

  • 91

    }

    function uPassword(){

    $this->load->library("form_validation");

    $this->form_validation-

    >set_rules("schPassword","schPassword","required|matches[schPassword1]");

    if($this->form_validation->run()==false){

    $e="Kata sandi tidak cocok!";

    }

    $this->load->model("mScholarship");

    if(empty($e)){

    $data=array(

    "schId"=>$this->session->userdata("id"),

    "schPassword"=>$this->input->post("schPassword")

    );

    $this->mScholarship->updatePassword($data);

    header("location:".base_url()."index.php/scholarship");

    }else{

    $this->index($e);

    }

    }

    }

    ?>

  • 92

    LAMPIRAN

    KODE MODEL

    mApplicant.php

  • 93

    }

    function reject($id){

    if($id==""){

    $this->db->query("update

    applicant set appStatus='ditolak'

    where appStatus='belum diketahui'");

    }else{

    $this->db->query("update

    applicant set appStatus='ditolak'

    where appId='".$id."'");

    }

    return;

    }

    function retrieve(){

    $query=$this->db->query("select * from applicant");

    return $query->result();

    }

    function retrieveById($id){

    $query=$this->db->query("select * from applicant where appId='".$id."'");

    return $query->result();

    }

    function retrieveBySchId($schId){

    $query=$this->db->query("select * from applicant where

    appSchId='".$schId."' order by appUsername");

    return $query->result();

    }

    function retrieveByUsername($username){

  • 94

    $query=$this->db->query("select * from applicant where

    appUsername='".$username."'");

    return $query->result();

    }

    function update($data){

    $this->db->where("appId",$data["appId"]);

    $this->db->update("applicant",$data);

    return;

    }

    function updatePassword($data){

    $this->db->where("appId",$data["appId"]);

    $this->db->update("applicant",$data);

    return;

    }

    }

    ?>

    mLinguisticVariable.php

  • 95

    function couAccepted($schId){

    $query=$this->db->query("select count(*) as count from applicant where

    appSchId='".$schId."' and appStatus='diterima'");

    return $query->result();

    }

    function couApplicant($schId){

    $query=$this->db->query("select count(*) as count from applicant where

    appSchId='".$schId."'");

    return $query->result();

    }

    function insert($data){

    $this->db->insert("applicant",$data);

    return;

    }

    function reject($id){

    if($id==""){

    $this->db->query("update

    applicant set appStatus='ditolak'

    where appStatus='belum diketahui'");

    }else{

    $this->db->query("update

    applicant set appStatus='ditolak'

    where appId='".$id."'");

    }

    return;

    }

    function retrieve(){

    $query=$this->db->query("select * from applicant");

  • 96

    return $query->result();

    }

    function retrieveById($id){

    $query=$this->db->query("select * from applicant where appId='".$id."'");

    return $query->result();

    }

    function retrieveBySchId($schId){

    $query=$this->db->query("select * from applicant where

    appSchId='".$schId."' order by appUsername");

    return $query->result();

    }

    function retrieveByUsername($username){

    $query=$this->db->query("select * from applicant where

    appUsername='".$username."'");

    return $query->result();

    }

    function update($data){

    $this->db->where("appId",$data["appId"]);

    $this->db->update("applicant",$data);

    return;

    }

    function updatePassword($data){

    $this->db->where("appId",$data["appId"]);

    $this->db->update("applicant",$data);

    return;

    }

    }

    ?>

  • 97

    mMembershipFunction.php

  • 98

    $query=$this->db->query("select * from

    linguisticvariable,membershipfunction where linVarId=memFunLinVarId and

    linVarSchId='".$schId."' order by linVarType");

    return $query->result();

    }

    function retrieve1($linVarId,$schId){

    $query=$this->db->query("select * from

    linguisticvariable,membershipfunction where linVarId='".$linVarId."' and

    linVarId=memFunLinVarId and linVarSchId='".$schId."' order by linVarType,memFunId");

    return $query->result();

    }

    function retrieveById($id){

    $query=$this->db->query("select * from membershipfunction where

    memFunId='".$id."'");

    return $query->result();

    }

    function update($data,$id){

    $this->db->query("update

    membershipfunction set

    memFunLinVarId='".$data["linVarId"]."',memFunSchId='".$data["schId"]."',memFunName='".

    $data["name"]."',memFunValue1='".$data["value1"]."',memFunValue2='".$data["value2"]."'

    ,memFunValue3='".$data["value3"]."',memFunValue4='".$data["value4"]."'

    where memFunId='".$id."'");

    return;

    }

    }

    ?>

    mRuleBase.php

  • 99

    }

    function delete($id){

    $this->db->query("delete from rulebase where rulBasId='".$id."'");

    return;

    }

    function insert($data){

    $this->db->query("insert into

    rulebase(rulBasSchId,rulBasAntecedent,rulBasConsequent)

    values('".$data["schId"]."','".$data["antecedent"]."','".$data["consequent"]."'

    )");

    return;

    }

    function retrieve($schId){

    $query=$this->db->query("select * from rulebase where

    rulBasSchId='".$schId."'");

    return $query->result();

    }

    }

    ?>

    mScholarship.php

  • 100

    scholarship(schContent,schEmail,schExpDate,schPassword,schRegDate,schTitle,schU

    sername)

    values('".$data["content"]."','".$data["email"]."','".$data["expdate"]."','".$d

    ata["password"]."',now(),'".$data["title"]."','".$data["username"]."')");

    return;

    }

    function retrieve(){

    $query=$this->db->query("select * from scholarship order by schRegDate

    desc");

    return $query->result();

    }

    function retrieveById($id){

    $query=$this->db->query("select * from scholarship where

    schId='".$id."'");

    return $query->result();

    }

    function retrieveByUsername($username){

    $query=$this->db->query("select * from scholarship where

    schUsername='".$username."'");

    return $query->result();

    }

    function update($data){

    $this->db->query("update

    scholarship set

    schContent='".$data["content"]."',schEmail='".$data["email"]."',schExpDate='".$data["e

    xpdate"]."',schRegDate=now(),schTitle='".$data["title"]."'

    where schId='".$data["schId"]."'");

    return;

    }

    function updatePassword($data){

  • 101