Implementasi Manajemen Model Sistem pengambilan keputusan pembelian tanah menggunakan metode Analytical Hierarchy Process (AHP).

Harga: Rp ?php echo number_formatrow[harga], 2, ,, .; ?br Luas: ?php echo number_formatrow[luas], 0, ,, .; ? m2br Alamat: ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[alamat], 0, 120; ? ... br br p p class=information ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[keterangan], 0, 300; ? ... br br p div div Kode Program Menampilkan Informasi Alternatif Informasi yang ditampilkan pada langkah ini berupa foto, harga, luas, alamat dan keterangan. Pengguna dapat memilih alternatif dengan mencontreng kotak yang telah disediakan. Untuk melanjutkan ke langkah berikutnya pengguna dapat mengklik ikon berikutnya. Berikut ini adalah screenshot langkah 1: pemilihan alternatif Gambar 4.1 Screenshot Langkah 1 : Pemilihan Alternatif 4.3.2 Pemilihan Kriteria Pada langkah 2, sistem menampilkan kriteria yang dapat dipilih pengguna. Fungsi yang dipanggil sama dengan fungsi pada pemilihan alternatif, yaitu prepare, execute dan fetch. Berikut ini adalah kode program inti untuk membaca data kriteria dari basis data. for counter = 0; counter sizeofcriterianame; counter++ { statement = database-prepareselect from kriteria where kriteria=:kriteria_; statement-executearray:kriteria_ = criterianame[counter]; row = statement-fetchPDO::FETCH_ASSOC; … criteriacount = counter; } Kode Program Membaca Data Kriteria Dari Basis Data Sistem selanjutnya menampilkan data yang telah berhasil diambil. Tag HTML yang digunakan sama dengan tag pada langkah pemilihan alternatif, yaitu img, checkbox dan p. Berikut ini adalah kode program inti untuk menampilkan informasi mengenai kriteria pada langkah 2. div class=item div class=image ?php imagefile = uploadkriteria . row[idkriteria] . .jpg; noimagefile = sharedimagenophoto.jpg; if file_existsimagefile { ? img class=photo src=?php echo BASEURL . imagefile . ? . rand1, 32000; ? alt=No photo ?php } else { ? img class=photo src=?php echo BASEURL . noimagefile; ? alt=No photo ?php } ? div div class=text p class=checkbox input type=checkbox id=criteriacb?php echo counter; ? value=?php echo counter; ? … p p class=criteria strong?php echo row[kriteria]; ?strongbr ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[keterangan], 0, 500; ? ... br p PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI div div Kode Program Menampilkan Informasi Kriteria Informasi yang ditampilkan pada langkah ini berupa foto, nama kriteria dan keterangan. Pengguna dapat memilih kriteria dengan mencontreng kotak yang telah disediakan. Untuk melanjutkan ke langkah berikutnya pengguna dapat mengklik ikon berikutnya. Untuk kembali ke langkah sebelumnya pengguna dapat mengklik ikon sebelumnya. Berikut ini adalah screenshot langkah 2 : pemilihan kriteria. Gambar 4.2 Screenshot Langkah 2: Pemilihan Kriteria 4.3.3 Perbandingan Kriteria Tahap perbandingan kriteria adalah tahap dimana pengguna dapat membandingkan kriteria yang telah dipilih. Penentuan nilai perbandingan kriteria menggunakan seekbar. Berkas seekbar.js merupakan pustaka untuk membuat seekbar. Berikut ini adalah kode program inti untuk menampilkan antarmuka untuk perbandingan kriteria. for vscounter = 0; vscounter sizeofcriteriasbvs; vscounter++ { vsid = explodex, criteriasbvs[vscounter]; ? div class=pairwisecomparison label class=left?php echo criterianame[vsid[0]]; ?label div class=seekbar id=criteriasb?php echo criteriasbvs[vscounter]; ?div label class=right?php echo criterianame[vsid[1]]; ?label div script type=textjavascript var ?php echo criteriasb . criteriasbvs[vscounter]; ? = new Seekbar.Seekbar{ renderTo: criteriasb?php echo criteriasbvs[vscounter]; ?, minValue: 0, maxValue: 16, valueListener: function value { this.value = Math.roundvalue; }, value: ?php if issetcriteriapcpaircookie[criteriasbvs[vscounter]] { if criteriapcpaircookie[criteriasbvs[vscounter]] = { echo criteriapcpaircookie[criteriasbvs[vscounter]]; } else { echo 8; } } else { echo 8; } ? }; script ?php PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI } Kode Program Menampilkan Antarmuka Perbandingan Kriteria Seekbar memungkinkan pengguna dapat dengan mudah menentukan nilai perbandingan. Pengguna hanya menggeser bulatan pada seekbar untuk menentukan nilai perbandingan. Kriteria yang dibandingan ditampilkan di sebelah kiri dan kanan seekbar. Nilai dan keterangan perbandingan ditampilkan tepat di bawah seekbar. Untuk melanjutkan ke langkah berikutnya pengguna dapat mengklik ikon berikutnya. Untuk kembali ke langkah pertama pengguna dapat menklik ikon pertama. Untuk kembali ke langkah sebelumnya pengguna dapat mengklik ikon sebelumnya. Berikut ini adalah screenshot langkah 3 : perbandingan kriteria. Gambar 4.3 Screenshot Langkah 3: Perbandingan Kriteria Fungsi-fungsi untuk menghitung konsistensi kriteria dipanggil pada fungsi checkcriteria. Fungsi yang berperan dalam perhitungan konsistensi adalah getcriteriascore, sumcriteriascore, calculatecriteriavalue, sumcriteriavalue, calculatecriteriapriority dan calculatecriteriaconsistency. Jika perbandingan konsisten maka fungsi mengembalikan nilai true. Jika perbandingan tidak konsisten maka fungsi mengmbalikan nilai false. Berikut ini adalah kode program yang digunakan untuk memanggil fungsi-fungsi perhitungan konsistensi kriteria. function checkcriteria { state = false; getcriteriascore; sumcriteriascore; calculatecriteriavalue; sumcriteriavalue; calculatecriteriapriority; calculatecriteriaconsistency; if criteriacr = 0.10 { state = true; } return state; } Kode Program Memanggil Fungsi Perhitungan Konsistensi Fungsi getcriteriascore dipanggil untuk membaca perbandingan yang telah dipilih pengguna. Pasangan perbandingan id kriteria dibuat pada kalang variabel i dan j. Jika nilai i dan j sama maka perbandingan diberi nilai 8. Selain itu sistem akan memberi nilai perbandingan sesuai dengan senarai nilai AHP. Nilai disimpan ke dalam senarai criteriascore. Berikut ini adalah kode program fungsi getcriteriascore. function getcriteriascore { for i = 0; i criteriasn; i++ { for j = 0; j criteriasn; j++ { pcid1 = criterialist[i].toString + x + criterialist[j].toString; pcid2 = criterialist[j].toString + x + criterialist[i].toString; if i == j { criteriainput[i][j] = 8; criteriascore[i][j] = ahpvalue[8]; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI } else if i j { evalpcinput1=criteriasb + pcid1 + .value; evalpcinput2=16-criteriasb + pcid1 + .value; criteriainput[i][j] = pcinput1; criteriainput[j][i] = pcinput2; criteriascore[i][j] = ahpvalue[pcinput1]; criteriascore[j][i] = ahpvalue[pcinput2]; } … Kode Program Fungsi GetCriteriaScore Sumcriteriascore merupakan fungsi untuk menjumlah nilai perbandingan secara vertikal pada semua kriteria. Kalang j merupakan perulangan kriteria. Kalang i merupakan penjumlahan vertikal nilai perbandingan. Hasil penjumlahan disimpan ke dalam senarai criteriascoresum. Berikut ini adalah kode program fungsi sumcriteriascore. function sumcriteriascore { var vsum; for j = 0; j criteriasn; j++ { vsum = 0; for i = 0; i criteriasn; i++ { vsum = vsum + criteriascore[i][j]; } criteriascoresum[j] = vsum; } … } Kode Program Fungsi SumCriteriaScore Untuk menormalisasi semua nilai perbandingan kriteria, sistem memanggil fungsi calculatecriteriavalue. Kalang j digunakan untuk mengambil nilai pembagi dari senarai criteriascoresum untuk normalisasi. Kalang i merupakan pembagian nilai kriteria dengan nilai pembagi. Hasil pembagian disimpan ke dalam senarai criteriavalue. Berikut ini adalah kode program fungsi calculatecriteriavalue. function calculatecriteriavalue { var vsum; for j = 0; j criteriasn; j++ { norm = criteriascoresum[j]; for i = 0; i criteriasn; i++ { criteriavalue[i][j] = criteriascore[i][j] norm; } } … } Kode Program Fungsi CalculateCriteriaValue Fungsi sumcriteriavalue dipanggil untuk menjumlah nilai yang sudah dinormalisasi secara horizontal. Kalang i merupakan perulangan kriteria secara horizontal. Kalang j merupakan penjumlahan secara horizontal. Hasil penjumlahan disimpan ke dalam senarai criteriavaluesum. Berikut ini adalah kode program fungsi sumcriteriavalue. function sumcriteriavalue { var vsum; for i = 0; i criteriasn; i++ { hsum = 0; for j = 0; j criteriasn; j++ { PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI hsum = hsum + criteriavalue[i][j]; } criteriavaluesum[i] = hsum; } … } Kode Program Fungsi SumCriteriaValue Perhitungan prioritas kriteria dilakukan oleh fungsi calculatecriteriapriority. Kalang i merupakan perulangan untuk membagi hasil penjumlahan horizontal dengan banyak kriteria yang dipilih. Hasil pembagian disimpan ke dalam senarai criteriapriority. Berikut ini adalah kode program fungsi calculatecriteriapriority. function calculatecriteriapriority { for i = 0; i criteriasn; i++ { criteriapriority[i] = criteriavaluesum[i] criteriasn; } … } Kode Program Fungsi CalculateCriteriaPriority Konsistensi perbandingan kriteria ditentukan oleh fungsi calculatecriteria-consistency. Kalang i merupakan perulangan untuk menghitung nilai lambdamax. Selanjutnya dilakukan perhitungan nilai CI, IR dan CR. Jika nilai CR kurang dari atau sama dengan 0,1 maka perbandingan konsisten. Jika nilai CR lebih dari 0,1 maka perbandingan kriteria tidak konsisten. Berikut ini adalah kode program untuk menentukan konsistensi perbandingan kriteria. function calculatecriteriaconsistency { criterialambdamax = 0; for i = 0; i criteriasn; i++ { criterialambdamax = criterialambdamax + criteriascoresum[i] criteriapriority[i]; } criteriaci = criterialambdamax - criteriasn criteriasn - 1; criteriair = rivalue[criteriasn]; criteriacr = criteriaci criteriair; … } Kode Program Fungsi CalculateCriteriaConsistency 4.3.4 Perbandingan Alternatif Tahap perbandingan alternatif merupakan tahap dimana pengguna dapat membandingkan alternatif yang telah dipilih berdasarkan kriteria yang sudah dipilih. Seperti pada perbandingan kriteria, penentuan nilai perbandingan kriteria juga menggunakan seekbar. Setiap nilai kriteria alternatif yang ditampilkan diambil dari basisdata. Berikut ini adalah kode program inti untuk membaca nilai kriteria alternatif dari basis data. statement = database-prepareselect from tanah where idtanah=:nomorrekam_; statement-executearray:nomorrekam_ = vsid[0]; row = statement-fetchPDO::FETCH_ASSOC; Kode Program Untuk Membaca Nilai Kriteria Alternatif Nilai kriteria alternatif telah dibaca kemudian ditampilkan sesuai dengan jenis kriterianya. Jika kriteria berupa uang, luas dan lebar maka dilakukan formating menggunakan fungsi number_format. Jika kriteria berupa jenis lahan, jenis jalan, kelas jalan dan permukaan jalan maka sistem akan memanggil fungsi yang sesuai untuk kriteria PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI tersebut. Untuk tulisan biasa sistem akan langsung menampilkan data. Berikut ini adalah kode program untuk menampilkan nilai kriteria alternatif. if in_arraycriteriafb[criteriacounter], arrayharga, hargam2 { echo Rp . number_formatrow[criteriafb[criteriacounter]], 2, ,, .; } else if in_arraycriteriafb[criteriacounter], arrayluas, lebardepan { echo number_formatrow[criteriafb[criteriacounter]], 0, ,, .; if criteriafb[criteriacounter] == luas { echo m2; } else if criteriafb[criteriacounter] == lebardepan { echo m; } } else if criteriafb[criteriacounter] == jenislahan { echo getLandtyperow[criteriafb[criteriacounter]]; } else if criteriafb[criteriacounter] == jenisjalan { echo getStreettyperow[criteriafb[criteriacounter]]; } else if criteriafb[criteriacounter] == kelasjalan { echo getStreetclassrow[criteriafb[criteriacounter]]; } else if criteriafb[criteriacounter] == permukaanjalan { echo getStreetsurfacerow[criteriafb[criteriacounter]]; } else { echo row[criteriafb[criteriacounter]]; } Kode Program Untuk Menampilkan Nilai Kriteria Alternatif Pada saat menampilkan perbandingan alternatif, tag label digunakan untuk menampilkan nilai kriteria alternatif. Berikut ini adalah kode program inti untuk menampilkan antarmuka untuk perbandingan alternatif. for vscounter = 0; vscounter sizeofalternativesbvs; vscounter++ { vsid = explodex, alternativesbvs[vscounter]; ? div class=pairwisecomparison label class=left?php … ?label div class=seekbar id=alternativesb?php echo criterialist[criteriacounter] . x . alternativesbvs[vscounter]; ?div label class=right?php … ?label div script type=textjavascript var ?php echo alternativesb . criterialist[criteriacounter] . x . alternativesbvs[vscounter]; ? = new Seekbar.Seekbar{ alternativesbvs[vscounter]; ?, renderTo: alternativesb?php echo criterialist[criteriacounter] . x . minValue: 0, maxValue: 16, valueListener: function value { this.value = Math.roundvalue; }, value: ?php if issetalternativepcpaircookie[criterialist[criteriacounter] . x . alternativesbvs[vscounter]] { if alternativepcpaircookie[criterialist[criteriacounter] . x . alternativesbvs[vscounter]] = { PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI echo alternativepcpaircookie[criterialist[criteriacounter] . x . alternativesbvs[vscounter]]; } else { echo 8; } } else { echo 8; } ? }; script ?php } ? ?php } Kode Program Menampilkan Antarmuka Perbandingan Alternatif Seperti perbandingan kriteria, perbandingan alternatif menggunakan seekbar untuk menentukan nilai perbandingan. Pengguna dapat menggeser bulatan seekbar untuk menentukan nilai perbandingan alternatif. Perbandingan dikelompokkan berdasarkan kriteria yang dibandingkan. Nilai kriteria alternatif yang dibandingan ditampilkan di sebelah kiri dan kanan seekbar. Nilai dan keterangan perbandingan ditampilkan tepat di bawah seekbar. Untuk melanjutkan ke langkah berikutnya pengguna dapat mengklik ikon berikutnya. Untuk kembali ke langkah pertama pengguna dapat menklik ikon pertama. Untuk kembali ke langkah sebelumnya pengguna dapat mengklik ikon sebelumnya. Berikut ini adalah screenshot langkah 4 : perbandingan alternatif. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Gambar 4.4 Screenshot Langkah 4: Perbandingan Alternatif Terdapat banyak fungsi untuk memanggil perhitungan prioritas kriteria yang sesuai pada perbandingan alternatif. Fungsi tersebut adalah checkprice untuk perhitungan prioritas kriteria harga, checkpricem2 untuk harga per meter persegi, checkwide untuk luas, checkwidth untuk lebar depan, checkaddress untuk alamat, checklandtype untuk jenis lahan, checkstreettype untuk jenis jalan, checkstreetclass untuk kelas jalan, checkstreetsurface untuk permukaan jalan dan checkinformation untuk keterangan. Berikut ini adalah kode program untuk memanggil fungsi perhitungan prioritas kriteria tiap alternative if criterialist.indexOf0 -1 { checkprice; } if criterialist.indexOf1 -1 { checkpricem2; } if criterialist.indexOf2 -1 { checkwide; } if criterialist.indexOf3 -1 { checkwidth; } if criterialist.indexOf4 -1 { checkaddress; } if criterialist.indexOf5 -1 { checklandtype; } if criterialist.indexOf6 -1 { checkstreettype; } if criterialist.indexOf7 -1 { checkstreetclass; } if criterialist.indexOf8 -1 { checkstreetsurface; } if criterialist.indexOf9 -1 { checkinformation; } Kode Program Pemanggilan Fungsi Perhitungan Prioritas Kriteria Tiap Alternatif Fungsi-fungsi perhitungan prioritas kriteria tiap alternatif pada dasarnya sama. Perbedaannya adalah kriteria yang dihitung. Tiap fungsi menghitung kriteria yang berbeda. Pada pembahasan ini PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI hanya menguraikan kriteria harga sebagai contoh. Fungsi-fungsi untuk menghitung prioritas kriteria harga dipanggil pada fungsi checkprice. Fungsi yang berperan dalam perhitungan prioritas adalah getpricescore, sumpricescore, calculatepricevalue, sumpricevalue dan calculatepricepriority. Berikut ini adalah kode program yang digunakan untuk memanggil fungsi-fungsi perhitungan prioritas kriteria harga. function checkprice { getpricescore; sumpricescore; calculatepricevalue; sumpricevalue; calculatepricepriority; } Kode Program Fungsi CheckPrice Fungsi getpricescore dipanggil untuk membaca perbandingan harga alternatif yang telah dipilih pengguna. Pasangan perbandingan id alternatif dibuat pada kalang variabel i dan j. Jika nilai i dan j sama maka perbandingan diberi nilai 8. Selain itu sistem akan memberi nilai perbandingan sesuai dengan senarai nilai AHP. Nilai disimpan ke dalam senarai pricescore. Berikut ini adalah kode program fungsi getpricescore. function getpricescore { for i = 0; i alternativesn; i++ { for j = 0; j alternativesn; j++ { pcid1 = alternativelist[i].toString + x + alternativelist[j].toString; pcid2 = alternativelist[j].toString + x + alternativelist[i].toString; if i == j { priceinput[i][j] = 8; pricescore[i][j] = ahpvalue[8]; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI } else if i j { evalpcinput1=alternativesb0x + pcid1 + .value; evalpcinput2=16-alternativesb0x + pcid1 + .value; priceinput[i][j] = pcinput1; priceinput[j][i] = pcinput2; pricescore[i][j] = ahpvalue[pcinput1]; pricescore[j][i] = ahpvalue[pcinput2]; } } } … } Kode Program Fungsi GetPriceScore Sumpricescore merupakan fungsi untuk menjumlah nilai perbandingan secara vertikal pada semua alternatif. Kalang j merupakan perulangan alternatif. Kalang i merupakan penjumlahan vertikal nilai perbandingan. Hasil penjumlahan disimpan ke dalam senarai pricescoresum. Berikut ini adalah kode program fungsi sumpricescore. function sumpricescore { var vsum; for j = 0; j alternativesn; j++ { vsum = 0; for i = 0; i alternativesn; i++ { vsum = vsum + pricescore[i][j]; } pricescoresum[j] = vsum; } PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI … } Kode Program Fungsi SumPriceScore Untuk menormalisasi semua nilai perbandingan alternatif, sistem memanggil fungsi calculatepricevalue. Kalang j digunakan untuk mengambil nilai pembagi dari senarai pricescoresum untuk normalisasi. Kalang i merupakan pembagian nilai alternatif dengan nilai pembagi. Hasil pembagian disimpan ke dalam senarai pricevalue. Berikut ini adalah kode program fungsi calculatepricevalue. function calculatepricevalue { var vsum; for j = 0; j alternativesn; j++ { norm = pricescoresum[j]; for i = 0; i alternativesn; i++ { pricevalue[i][j] = pricescore[i][j] norm; } } … } Kode Program Fungsi CalculatePriceValue Fungsi sumpricevalue dipanggil untuk menjumlah nilai yang sudah dinormalisasi secara horizontal. Kalang i merupakan perulangan kriteria secara horizontal. Kalang j merupakan penjumlahan secara horizontal. Hasil penjumlahan disimpan ke dalam senarai pricevaluesum. Berikut ini adalah kode program fungsi sumpricevalue. function sumpricevalue { var vsum; for i = 0; i alternativesn; i++ { hsum = 0; for j = 0; j alternativesn; j++ { hsum = hsum + pricevalue[i][j]; } pricevaluesum[i] = hsum; } … } Kode Program Fungsi SumpriceValue Perhitungan prioritas alternatif dilakukan oleh fungsi calculatepricepriority. Kalang i merupakan perulangan untuk membagi hasil penjumlahan horizontal dengan banyak alternatif yang dipilih. Hasil pembagian disimpan ke dalam senarai pricepriority. Berikut ini adalah kode program fungsi calculatepricepriority. function calculatepricepriority { for i = 0; i alternativesn; i++ { pricepriority[i] = pricevaluesum[i] alternativesn; } … } Kode Program Fungsi CalculatePricepriority 4.3.5 Saran Keputusan Fungsi utama yang menangani pembuatan saran keputusan adalah calculatesupport. Fungsi ini akan memanggil fungsi lain untuk menghitus saran keputusan per langkah. Fungsi yang dipanggil adalah getalternativescore, sumalternativescore dan sortalternativescore. Berikut ini adalah kode program yang digunakan untuk memanggil fungsi-fungsi pembuatan saran keputusan. function calculatesupport { PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI getalternativescore; sumalternativescore; sortalternativescore; } Kode Program Fungsi CalculateSupport Fungsi getalternativescore dipanggil untuk membaca nilai prioritas masing alternatif yang telah pengguna. Indeks senarai dibuat pada kalang variabel i dan j. Nilai diambil dari senarai prioritas masing-masing alterantif terpilih kemudian dikalikan dengan nilai prioritas masing-masing kriteria terpilih. Hasil perhitungan dimasukkan ke dalam senarai alternativescore. Berikut ini adalah kode program fungsi getalternativescore. function getalternativescore { for i = 0; i criteriasn; i++ { for j = 0; j alternativesn; j++ { switch criterialist[i] { case 0: alternativeinput[i][j] = pricepriority[j]; break; case 1: alternativeinput[i][j] = pricem2priority[j]; break; case 2: alternativeinput[i][j] = widepriority[j]; break; case 3: alternativeinput[i][j] = widthpriority[j]; break; case 4: alternativeinput[i][j] = addresspriority[j]; break; case 5: alternativeinput[i][j] = landtypepriority[j]; break; case 6: alternativeinput[i][j] = streettypepriority[j]; break; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI case 7: alternativeinput[i][j] = streetclasspriority[j]; break; case 8: alternativeinput[i][j] = streetsurfacepriority[j]; break; case 9: alternativeinput[i][j] = informationpriority[j]; break; } alternativescore[i][j] = parseFloatcriteriapriorityvaluelist[i] alternativeinput[i][j]; } } … } Kode Program Fungsi GetAlternativeScore Fungsi sumalternativescore dipanggil untuk menjumlah nilai masing-masing alternatif. Kalang i merupakan perulangan alternatif secara vertikal. Kalang j merupakan penjumlahan nilai alternatif secara horizontal. Hasil penjumlahan disimpan ke dalam senarai alternativescoresum. Berikut ini adalah kode program fungsi sumalternativescore. function sumalternativescore { var hsum; for i = 0; i alternativesn; i++ { hsum = 0; for j = 0; j criteriasn; j++ { hsum = hsum + alternativescore[j][i]; } alternativescoresum[i] = Numberhsum.toFixed2; } PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI … } Kode Program Fungsi SumAlternativeScore Langkah selanjutnya adalah mengurutkan nilai total masing- masing alternatif. Pembuatan senarai id alternatif yang berkaitan dengan nilai total diperlukan agar proses pengurutan menghasilkan id alternatif dan nilai total yang sesuai. Proses pengurutan menggunakan fungsi array_sort. Hasil pengurutan disimpan ke dalam senarai alternativeassociated. Berikut ini adalah kode program fungsi sortalternativescore. function sortalternativescore { for i = 0; i alternativesn; i++ { alternativeassociated[alternativelist[i] + ] = alternativescoresum[i]; } alternativeassociated = array_sortalternativeassociated; … } Kode Program Fungsi SortAlternativeScore Proses berikutnya adalah pembacaan data alternatif dari basis data. Id alternatif hasil pengurutan dijadikan katakunci pembacaan data alternatif. Berikut ini adalah kode program untuk membaca data alternatif dari basis data statement = database-prepare select tanah.idtanah, tanah.harga, tanah.hargam2, tanah.luas, tanah.lebardepan, tanah.alamat as alamattanah, tanah.keterangan, penjual.namalengkap, penjual.alamat as alamatpenjual, penjual.telepon from tanah left join penjual on tanah.idpenjual=penjual.idpenjual where idtanah=:nomorrekam_ ; statement-executearray:nomorrekam_ = trimidlist[counter]; row = statement-fetchPDO::FETCH_ASSOC; Kode Program Pembacaan Data Alternatif Data yang telah berhasil diambil kemudian ditampilkan. Tag HTML img merupakan tag untuk menampilkan foto tanah. Data yang berupa tulisan biasa ditampilkan menggunakan tag p. Data yang berupa uang, luas dan lebar maka dilakukan formating menggunakan fungsi number_format. Untuk tulisan biasa sistem akan langsung menampilkan data. Berikut ini adalah kode program untuk menampilkan saran yang beruta informasi alternatif. div class=item supportitem div class=image ?php imagefile = uploadtanah . row[idtanah] . .jpg; noimagefile = sharedimagenophoto.jpg; if file_existsimagefile { ? img class=photo src=?php echo BASEURL . imagefile . ? . rand1, 32000; ? alt=No photo ?php } else { ? img class=photo src=?php echo BASEURL . noimagefile; ? alt=No photo ?php } ? div span?php echo openaview . Detail . closea; ?span PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI div class=text p class=detail supportdetail strong?php echo counter + 1 . . Skor : . number_format scorelist[counter], 4, ,, . . br br ; ?strong Harga: Rp ?php echo number_formatrow[harga], 2, ,, .; ?br Hargam2: Rp ?php echo number_formatrow[hargam2], 2, ,, .; ?br Luas: ?php echo number_formatrow[luas], 0, ,, .; ? m2br Lebar depan: ?php echo number_formatrow[lebardepan], 0, ,, .; ? mbr Alamat: ?php echo strip_tagshtml_entity_decode html_entity_decoderow[alamattanah]; ?br br strongPenjualstrongbr Nama: ?php echo strip_tagshtml_entity_decode html_entity_decoderow[namalengkap]; ?br Alamat: ?php echo strip_tagshtml_entity_decode html_entity_decoderow[alamatpenjual]; ?br Telepon: ?php echo strip_tagshtml_entity_decode html_entity_decoderow[telepon]; ?br br p div Kode Program Untuk Menampilkan Saran Informasi yang ditampilkan pada langkah ini berupa foto, harga, harga per meter persedi, luas, lebar depan dan alamat tanah. Informasi mengenai penjual tanah juga ditampilkan. Informasi penjual yang ditampilkan adalah nama, alamat dan telepon. Tahap ini adalah taha paling dari sistem pendukung keputusan pembelitan tanah. Untuk kembali ke langkah pertama pengguna dapat menklik ikon pertama. Untuk kembali ke langkah sebelumnya pengguna dapat mengklik ikon sebelumnya. Berikut ini adalah screenshot langkah 5: saran keputusan. Gambar 4.5 Screenshot Langkah 5: Saran Keputusan Jika pengguna mengklik tombol maka sistem akan menampilkan informasi rinci mengenai alternatif yang diklik. Proses ini diawali dengan membaca data alternatif dari basis data berdasarkan id tanah yang diklik. Berikut ini adalah kode program untuk membaca data tanah dari basis data. statement = database-prepareselect from tanah where idtanah=:nomorrekam_; statement-executearray:nomorrekam_ = model- nomorrekam; row = statement-fetchPDO::FETCH_ASSOC; Kode Program Membaca Data Tanah Data yang sudah dibaca kemudian disimpan ke dalam variabel pada kelas model. Berikut ini adalah kode program untuk menyimpan data ke dalam variabel kelas model. model-nomorrekam = row[idtanah]; model-idtanah = row[idtanah]; model-idpenjual = row[idpenjual]; model-harga = row[harga]; model-hargam2 = row[hargam2]; model-luas = row[luas]; model-lebardepan = row[lebardepan]; model-alamat = row[alamat]; model-jenislahan = row[jenislahan]; model-jenisjalan = row[jenisjalan]; model-kelasjalan = row[kelasjalan]; model-permukaanjalan = row[permukaanjalan]; model-keterangan = row[keterangan]; model-tanggal = row[tanggal]; Kode Program Menyimpan Data Ke Variabel Kelas Model Proses berikutnya menampilkan data kepada pengguna. Kriteria ditampilkan dengan tag label. Citra ditampilkan dengan tag img. Tanggal, harga, harga per meter persegi, luas dan lebar depan ditampilkan menggunakan input. Keterangan ditampilkan menggunakan textarea. Jenis lahan, jenis jalan, kelas jalan dan permukaan jalan ditampilkan menggunakan selectbox. Penjual, alamat, telepon dan email ditampilkan menggunakan input. Berikut ini adalah kode program untuk menampilkan informasi rinci mengenai tanah. label style=width:455px;nbsp;label img class=photo src=?php ifmodel-nomorrekam= { echo uploadtanah.model-nomorrekam..jpg?.rand1,32000; } ? alt=Tidak ada foto style=position:absolute;width:450px;margin- bottom:5px; br ?php } ? labelTanggal Iklanlabel input id=tanggal name=tanggal class=half type=text value=?php echo model-tanggal; ? disabled br labelHarga Rplabel input id=harga name=harga class=half type=text value=?php echo model-harga; ? disabled br labelHarga M2 Rplabel input id=hargam2 name=hargam2 class=half type=text value=?php echo model-hargam2; ? disabled br labelLuas m2label input id=luas name=luas class=half type=text value=?php echo model-luas; ? disabled br PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI labelLebar Depan mlabel input id=lebardepan name=lebardepan class=half type=text value=?php echo model-lebardepan; ? disabled br labelKeteranganlabel textarea id=keterangan name=keterangan class=full disabled ?php echo model-keterangan; ?textarea Kode Program Menampilkan Informasi Rinci Tanah Informasi yang ditampilkan pada halaman informasi rinci tanah adalah citra tanah, tanggal iklan, harga, harga per meter persegi, luas, lebar depan, jenis lahan, jenis jalan, kelas jalan, permukaan jalan dan keterangan. Disamping itu sistem juga menampilkan informasi mengenai penjualnya. Informasi penjual berupa nama, alamat, telepon dan email. Berikut ini adalah screenshot halaman informasi rinci tanah. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Gambar 4.6 Screenshot Halaman Informasi Rinci Tanah 4.4 Implementasi Manajemen Dialog Antarmuka aplikasi teridiri 3 jenis antarmuka, yaitu antarmuka untuk tamu, penjual dan admin. Masing-masing antarmuka memiliki header, menu dan footer. Header dan footer untuk setiap pengguna sama. Menu untuk masing-masing pengguna tidak sama. Citra pada header dibuat menggunakan tag img. Nama aplikasi ditampilkan memakai tag H1 dan H2. Deskripsi aplikasi ditampilkan memakai tag H3. Berikut ini adalah kode program untuk menampilkan bagian header. div id=headerdiv class=wrapper img src=?php echo INTITUTION_LOGO; ? height=90 width=90 h1?php echo APP_NAME; ?h1 h2?php echo APP_OWNER; ?h2 h3?php echo APP_DESC; ?h3 divdiv Kode Program Menampilkan Bagian Header Bagian header menampilkan logo universitas, nama aplikasi dan deskripsi aplikasi. Berikut ini adalah screenshot bagian header. Gambar 4.7 Screenshot Bagian Header Citra pada footer dibuat menggunakan tag img. Nama pembuat, nomor induk, nama fakultas, nama universitas, kota dan tahun pembuatan ditampilkan memakai tag p. Berikut ini adalah kode program untuk menampilkan bagian fooer. div id=footerdiv class=wrapper img src=?php echo UNIVERSITY_LOGO; ? height=50 width=50 p?php echo APP_DEVELOPER; ?p divdiv Kode Program Menampilkan Bagian Footer Bagian footer menampilkan logo universitas, nama pembuat, nomor induk, nama fakultas, nama universitas, kota dan tahun pembuatan. Berikut ini adalah screenshot bagian footer. Gambar 4.8 Screenshot Bagian Footer 4.4.1 Antarmuka Untuk Tamu 1. Menu Data menu untuk tamu disimpan di dalam senarai arrUserpage. Senarai ini menyimpan data berupa nama menu, tautan jenis menu. Berikut ini adalah kode program untuk menyimpan data menu. arrUserpage=array arrayname=Beranda,link=beranda,type=link, arrayname=SPK,link=spk,type=link, arrayname=Kriteria,link=kriteria,type=link, arrayname=Berita,link=berita,type=link, arrayname=Buku Tamu,link=bukutamu,type=link, arrayname=Daftar,link=penjual,type=link ; Kode Program Data Menu Tamu Menu ditampilkan berdasarkan data yang dimasukkan ke dalam senarai arrUserpage. Tag yang digunakan untuk menampilkan menu adalah ul, li dan a. Jika ada sesi administrator maka sistem menampilkan menu logout. Jika tidak ada sesi administrator maka sistem menampilkan menu login. Berikut ini adalah kode program untuk menampilkan menu. div id=menu PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI ul ?php if issetarrUserpage { if sizeofarrUserpage 0 { foreach arrUserpage as varPagenumber = varPagedata { if varPagedata[type] == link { echo lia ; if PAGE == varPagedata[link] {echo class=active ;} echo href= . varPagedata[link] . . ucwordsvarPagedata[name] . ali . \n; } elseif varPagedata[type] == title { echo lispan . ucwordsvarPagedata[name] . spanli . \n; } } } } if readSESSIONadministrator, FILTER_SANITIZE_SPECIAL_CHARS = {echo lia href=logoutLogouta; } else {echo lia href=loginLogina;} ? ul div Kode Program Menampilkan Menu Menu untuk tamu memiliki item beranda, SPK, kriteria, berita, buku tamu, daftar dan login. Jika item menu tersebut diklik maka sistem akan menampilkan halaman yang sesuai. Berikut ini adalah screenshot bagian menu untuk tamu. Gambar 4.9 Screenshot Bagian Menu Untuk Tamu 2. Halaman Beranda Pengambilan data tanah pada halaman beranda melibatkan banyak kata kunci. Kata kunci dapat berupa rentang harga, harga per meter persegi, luas, delbar depan. Kata kunci dapat berupa alamat, keterangan. Kata kunci juga dapat berupa pilihan jenis lahan, jenis jalan, kelas jalan dan permukaan jalan. Kueri disiapkan menggunakan fungsi prepare pada kelas PDO. Selanjutnya kueri dieksekusi menggunakan parameter kata-kata kunci yang telah dimasukkan oleh pengguna. Berikut ini adalah kode program untuk membaca data tanah. statement = database-prepare select idtanah,harga,hargam2,luas,alamat,keterangan from tanah where harga between :hargaa_ and :hargab_ and hargam2 between :hargam2a_ and :hargam2b_ and luas between :luasa_ and :luasb_ and lebardepan between :lebardepana_ and :lebardepanb_ and alamat like :alamat_ and jenislahan in .jenislahan. and jenisjalan in .jenisjalan. and kelasjalan in .kelasjalan. and permukaanjalan in .permukaanjalan. and keterangan like :keterangan_ order by idtanah desc PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI limit :rekamanawal_,:banyakrekaman_ ; statement-executearray :hargaa_ = model-hargaa, :hargab_ = model-hargab, :hargam2a_ = model-hargam2a, :hargam2b_ = model-hargam2b, :luasa_ = model-luasa, :luasb_ = model-luasb, :lebardepana_ = model-lebardepana, :lebardepanb_ = model-lebardepanb, :alamat_ = model-alamat, :keterangan_ = model-keterangan, :rekamanawal_ = halamansekarang banyakbaris, :banyakrekaman_ = banyakbaris ; Kode Program Membaca Data Tanah Kata kunci yang dimasukkan oleh pengguna dibaca mengguna fungsi readPOST pada model. Berikut ini adalah kode program untuk membaca kata kunci. public function readPOST { this-nomorrekam = readPOSTnomorrekam, this- nomorrekam_filter; this-idtanah = readPOSTidtanah, this-idtanah_filter; this-idpenjual = readPOSTidpenjual, this-idpenjual_filter; this-hargaa = readPOSThargaa, this-hargaa_filter; this-hargab = readPOSThargab, this-hargab_filter; this-hargam2a = readPOSThargam2a, this-hargam2a_filter; this-hargam2b = readPOSThargam2b, this-hargam2b_filter; this-luasa = readPOSTluasa, this-luasa_filter; this-luasb = readPOSTluasb, this-luasb_filter; this-lebardepana = readPOSTlebardepana, this- lebardepana_filter; this-lebardepanb = readPOSTlebardepanb, this- lebardepanb_filter; this-alamat = readPOSTalamat, this-alamat_filter; this-jenislahan = readSELECTjenislahan, this- jenislahan_filter; this-jenisjalan = readSELECTjenisjalan, this- jenisjalan_filter; this-kelasjalan = readSELECTkelasjalan, this- kelasjalan_filter; this-permukaanjalan = readSELECTpermukaanjalan, this- permukaanjalan_filter; this-keterangan = readPOSTketerangan, this- keterangan_filter; this-status = readPOSTstatus, this-status_filter; this-tanggal = readPOSTtanggal, this-tanggal_filter; this-import = readPOSTimport, this-import_filter; } Kode Program Membaca Kata Kunci Sistem menyedian tempat untuk memasukkan kata kunci. Nama kriteria ditampilkan menggunakan tag label. Tempat mengetik dan memilih kata kunci menggunakan tag input. Berikut ini adalah kode program untuk menampilkan tempat untuk memasukkan kata kunci. label class=leftblockHarga Rplabel input class=quarter id=hargaa name=hargaa type=text value=?php echo model-hargaa; ? - input class=quarter id=hargab name=hargab type=text value=?php echo model-hargab; ? label class=columnspacernbsp;label label class=leftblockHargam2 Rplabel input class=quarter id=hargam2a name=hargam2a type=text value=?php echo model-hargam2a; ? - input class=quarter id=hargam2b name=hargam2b type=text value=?php echo model-hargam2b; ? br … label class=leftblockKeteranganlabel input class=full id=keterangan name=keterangan type=text value=?php echo model-keterangan; ? br Kode Program Menampilkan Input Kata Kunci Sistem menyediakan navigasi halaman tanah. Ikon navigasi ditampilkan menggunakan tag img. Jika ikon diklik maka sistem akan berpindah halaman sesuai dengan navigasi yang diberikan. Berikut ini adalah kode program untuk menampilkan bagian navigasi halaman. label class=leftblocknbsp;label img src=sharediconsearch.png title=Cari class=leftblock onclick=listcommandhalamanpertama; return false; img src=sharediconfirst.png title=Pertama class=leftblock onclick=listcommandhalamanpertama; return false; img src=sharediconprevious.png title=Sebelumnya class=leftblock onclick=listcommandhalamansebelumnya; return false; img src=sharediconnext.png title=Berikutnya class=leftblock onclick=listcommandhalamanberikutnya; return false; img src=sharediconlast.png title=Terakhir class=leftblock onclick=listcommandhalamanterakhir; return false; Kode Program Menampilkan Navigasi Halaman Data yang telah berhasil diambil kemudian ditampilkan. Tag HTML img merupakan tag untuk menampilkan foto tanah. Data yang berupa tulisan biasa ditampilkan menggunakan tag p. Data yang berupa angka diformat terlebih dahulu menggunakan fungsi number_format . Berikut ini adalah kode program inti untuk menampilkan daftar tanah. div class=item ?php imagefile = uploadtanah . row[idtanah] . .jpg; noimagefile = sharedimagenophoto.jpg; if file_existsimagefile { ? img class=photo src=?php echo BASEURL . imagefile . ? . rand1, 32000; ? alt=No photo ?php } else { ? img class=photo src=?php echo BASEURL . noimagefile; ? alt=No photo ?php } ? div class=tool span?php echo openaview . Detail . closea; ?span ?php selecetedflag = 0; if in_arrayrow[idtanah], selectedalternativearray { selecetedflag = 1; } if selecetedflag == 0 { ? span?php echo openaselect . Pilih . closea; ?span ?php } else { ? span?php echo openacancel . Batal . closea; ?span ?php } ? div p Harga: Rp ?php echo number_formatrow[harga], 2, ,, .; ?br Harga Meter2 : Rp ?php echo number_formatrow[hargam2], 2, ,, .; ?br Luas: ?php echo number_formatrow[luas], 0, ,, .; ? m2br Alamat: ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[alamat], 0, 120; ? ... br br ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[keterangan], 0, 300; ? ...br pdiv Kode Program Menampilkan Daftar Tanah Halaman beranda menampilkan bagian input kata kunci, navigasi halaman dan daftar tanah. Pada bagian input kata kunci, pengguna dapat memasukkan rentang harga, harga per meter persegi, luas dan lebar dapat. Pengguna dapat memasukkan alamat dan keterangan. Pengguna juga dapat memilih jenis lahan, jenis jalan, kelas jalan dan PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI permukaan jalan. Navigasi halaman yang tersedia adalah pencarian, menuju ke halaman pertama, sebelumnya, berikutnya dan terakhir. Informasi yang ditampilkan pada langkah ini berupa foto, harga, harga per meter persegi, luas, alamat dan keterangan. Untuk melihat informasi rinci tanah, pengguna dapat mengklik tombol detail. Pengguna dapat memilih tanah dengan mengklik tombol pilih, membatalkan pilihan dengan mengklik tombol batal. Berikut ini adalah screenshot halaman daftar tanah. Gambar 4.10 Screenshot Halaman Daftar Tanah Halaman informasi rinci tanah tidak dibahas dalam uraian ini. Halaman ini memiliki kode program dan tampilan yang mirip dengan halaman informasi rinci tanah pada langkah 1 sistem pendukung keputusan.

3. Halaman Kriteria

Proses pada halaman kriteria diawali dengan pembacaan katakunci. Sanitasi input yang dimasukkan oleh pengguna diperlukan agar sistem aman dari serangan injeksi SQL. Pembacaan data dilakukan dengan PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI memanggil fungsi readPOST. Berikut ini adalah kode program untuk membaca kata kunci. katakunci = readPOSTkatakunci, FILTER_SANITIZE_SPECIAL_CHARS; halamansekarang = readPOSThalaman, FILTER_SANITIZE_SPECIAL_CHARS; Kode Program Membaca Kata Kunci Proses selanjutnya adalah pemilihan perintah navigasi yang dipilih pengguna. Jika pengguna memilih halaman pertama maka halaman akan diberi nilai 0. Jika yang terpilih adalah halaman sebelumnya maka nilai halaman dikurangi 1. Sebaliknya, jika pengguna memilih halaman berikutnya maka nilai halaman ditambah 1. Pemberian nilai halaman terakhir dilakukan jika pengguna memilih halaman terakhir. Berikut ini adalah kode program navigasi halaman. switch uri-commandfolder { case halamanpertama: { halamansekarang = 0; }break; case halamansebelumnya: { halamansekarang = halamansekarang - 1; if halamansekarang = 0 { halamansekarang = 0; } }break; case halamanberikutnya: { halamansekarang = halamansekarang + 1; if halamansekarang = halamanterakhir { halamansekarang = halamanterakhir; } }break; case halamanterakhir: { halamansekarang = halamanterakhir; }break; } Kode Program Memilih Perintah Navigasi Halaman Untuk jenis pengguna tamu, bagian navigasi halaman tidak memiliki ikon tambah. Tulisan kata kunci ditampilkan menggunakan tag label, sedangkan input kata kunci ditampilkan menggunakan tag input jenis text. Ikon ditampilkan menggunakan tag img. Ikon yang ditampilkan adalah ikon pencarian, halaman pertama, sebelumnya, berikutnya dan terakhir. Berikut ini adalah kode program untuk menampilkan bagian navigasi halaman. function echoPagingbuttonNoAddkatakunci { echo div class=leftpaging label class=leftblockKata Kuncilabel input class=leftblock name=katakunci type=text value= . katakunci . img src=sharediconsearch.png title=Cari class=leftblock onclick=listcommand\halamanpertama\;return false; img src=sharediconfirst.png title=Pertama class=leftblock onclick=listcommand\halamanpertama\;return false; img src=sharediconprevious.png title=Sebelumnya class=leftblock PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI onclick=listcommand\halamansebelumnya\;return false; img src=sharediconnext.png title=Berikutnya class=leftblock onclick=listcommand\halamanberikutnya\;return false; img src=sharediconlast.png title=Terakhir class=leftblock onclick=listcommand\halamanterakhir\;return false; div ; } Kode Program Menampilkan Navigasi Halaman Data kriteria diambil dari basis data. Kueri disiapkan oleh fungsi prepare. Selanjutnya, sistem akan mengeksekusi kueri dengan parameter katakunci, rekaman awal dan banyak rekaman. Berikut ini adalah kode program untuk membaca data kriteria. statement = database-prepare select idkriteria,kriteria,keterangan from kriteria where kriteria like :katakunci1_ or keterangan like :katakunci2_ order by idkriteria asc limit :rekamanawal_,:banyakrekaman_ ; statement-executearray:katakunci1_ = katakunci, :katakunci2_ = katakunci, :rekamanawal_ = halamansekarang banyakbaris, :banyakrekaman_ = banyakbaris; Kode Program Membaca Data Kriteria PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Data kriteria yang telah berhasil dibaca selanjutnya ditampilkan. Tag img digunakan untuk menampilkan foto tanah. Data yang berupa tulisan biasa ditampilkan menggunakan tag p. Berikut ini adalah kode program inti untuk menampilkan daftar kriteria. div class=item div class=image ?php imagefile=uploadkriteria.row[idkriteria]..jpg; noimagefile=sharedimagenophoto.jpg; iffile_existsimagefile { ? img class=photo src=?php echo BASEURL.imagefile.?. rand1,32000; ? alt=No photo ?php } else { ? img class=photo src=?php echo BASEURL.noimagefile; ? alt=No photo ?php } ? div div class=text p strong?php echo opena.row[kriteria].closea; ?strong br br ?php echo substrstrip_tagshtml_entity_decode html_entity_decoderow[keterangan],0,900; ? ... br p divdiv Kode Program Menampilkan Daftar Kriteria PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Halaman kriteria memiliki bagian navigasi halaman dan daftar kriteria. Pada bagian navigasi halaman pengguna dapat memasukkan kata kunci pencarian dan melakukan navigasi halaman. Informasi yang ditampilkan pada halaman ini adalah nama dan keterangan kriteriea. Untuk melihat keterangan yang lebih lengkap, pengguna dapat mengklik nama kriteria. Berikut ini adalah screenshot halaman daftar kriteria. Gambar 4.11 Screenshot Halaman Daftar Kriteria Halaman yang menampilkan keterangan kriteria secara lengkap akan muncul setelah pengguna mengklik nama kriteria. Berikut ini adalah screenshot halaman detail kriteria. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Gambar 4.12 Screenshot Halaman Detail Kriteria 4. Halaman Berita Sistem menampilkan 50 berita per halaman. Banyak halaman merupakan banyak berita dibagi berita per halaman. Banyak berita dihitung memakai perintah SQL. Banyak halaman disimpan pada variabel banyakrekaman. Banyak halaman disimpan pada variabel halamanterakhir . Jika variabel halamansekarang tidak berisi maka halamansekarang diisi dengan nilai 0. Berikut ini adalah kode program untuk menghitung banyak berita dan halaman. banyakbaris=51; … statement=database-prepare select countidberita as banyak from berita where judul like :katakunci1_ or isi like :katakunci2_ ; statement-executearray:katakunci1_=katakunci, :katakunci2_=katakunci; row=statement-fetchPDO::FETCH_ASSOC; banyakrekaman=row[banyak]; halamanterakhir=floorbanyakrekamanbanyakbaris; ifhalamansekarang=={halamansekarang=0;} Kode Program Menghitung Banyak Berita dan Halaman Pada bagian ini tidak menguraikan kode program dan tampilan halaman berita. Pada dasarnya, halaman berita memiliki kode program dan tampilan yang hampir sama dengan halaman kriteria. Halaman berita memiliki bagian navigasi halaman dan daftar berita. Pada bagian navigasi halaman pengguna dapat memasukkan kata kunci pencarian dan melakukan navigasi halaman. Informasi yang ditampilkan pada halaman ini adalah foto, judul, tanggal dan. Untuk melihat berita yang lengkap, pengguna dapat mengklik judul berita. Berikut ini adalah screenshot halaman daftar berita. Gambar 4.13 Screenshot Halaman Daftar Berita Halaman yang menampilkan berita secara lengkap akan muncul setelah pengguna mengklik judul berita. Berikut ini adalah screenshot halaman berita lengkap. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Gambar 4.14 Screenshot Halaman Berita Lengkap 5. Halaman Pendaftaran Nama lengkap, email, password, telepon dimasukkan melalui elemen input jenis text. Alamat dimasukkan melalui elemen textarea. Untuk tombol menggunakan input jenis button. Berikut ini adalah kode program untuk menampilkan halaman daftar. labelNama Lengkaplabel input id=namalengkap name=namalengkap class=half type=text value=?php echo model-namalengkap; ? br labelEmaillabel input id=email name=email class=half type=text value=?php echo model-email; ? label class=columnspacernbsp;label labelPasswordlabel input id=password name=password class=half type=text value=?php echo model-password; ? br labelAlamatlabel textarea id=alamat name=alamat class=full ?php echo model-alamat; ?textareabr labelTeleponlabel input id=telepon name=telepon class=half type=text value=?php echo model-telepon; ? label class=columnspacernbsp;labelbr p class=error id=error-messagep labelnbsp;label input type=button value=Daftar onclick=checkinput;return false; Kode Program Menghitung Banyak Berita dan Halaman Halaman pendaftaran memiliki elemen untuk memasukkan nama lengkap, email, password, alamat dan telepon serta tombol daftar. Berikut ini adalah screenshot halaman pendaftaran. Gambar 4.15 Screenshot Halaman Pendaftaran. Proses setelah pengguna mengklik tombol daftar adalah memerika isian pengguna. Pengguna harus mengisi nama lengkap, email, password, alamat dan nomor telepon untuk mendaftar. Jika pengguna tidak mengisi semua maka sistem menampilkan pesan kesalahan. Berikut ini adalah kode program untuk memeriksa isian pengguna. function checkinput { if namalengkap.val = email.val = PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI password.val = alamat.val = telepon.val = { formcommandsimpanrekaman; } else { error-message.htmlspanTidak dapat menyimpan rekaman. Masih ada yang kosong. Silahkan isi semua.span; error-message.show; } } Kode Program Memeriksa Isian Pengguna Setelah pengguna mengklik tombol daftar, sistem akan membaca isian pengguna. Variabel yang dibaca adalah, nama, email, password, alamat dan telepon. Berikut ini adalah kode program untuk membaca isian pengguna. public function readPOST { this-namalengkap=readPOSTnamalengkap, this-namalengkap_filter; this-email=readPOSTemail,this-email_filter; this-password=readPOSTpassword,this-password_filter; this-alamat=readPOSTalamat,this-alamat_filter; this-telepon=readPOSTtelepon,this-telepon_filter; } Kode Program Membaca Isian Pengguna Proses selanjutnya adalah memeriksa apakah email sudah ada pada basis data. Jika email sudah ada maka sistem tidak menyimpan data pendaftaran. Berikut ini adalah kode program untuk memeriksa ada tidaknya email. userexist = true; statement = database-prepareselect from penjual where email=:email_; statement-executearray:email_ = model-email; userexist = false; if statement-rowCount 0 { userexist = true; } Kode Program Memeriksa Ada Tidaknya Email Sistem akan menyimpan data pendaftaran jika email tidak ada di basis data. Data yang disimpan adalah nama lengkap, email, password, alamat, telepon dan tanggal. Berikut ini adalah kode program untuk menyimpan data pendaftaran. statement = database-prepare insert into penjual namalengkap, email, password, alamat, telepon, tanggal values :namalengkap_, :email_, :password_, :alamat_, :telepon_, :tanggal_ ; statement-executearray:namalengkap_ = model- namalengkap, :email_ = model-email, :password_ = model-password, :alamat_ = model-alamat, :telepon_ = model-telepon, :tanggal_ = dateY-m-d ; Kode Program Menyimpan Data Pendaftaran Sistem menampilkan pesan sesudah proses penyimpanan selesai. Pesan dapat berupa pesan berhasil ataupun gagal. Berikut ini adalah kode program untuk menampilkan pesan sesudah proses penyimpanan. if result { viewdata[actionmessage] = p class=successstrongAnda berhasil mendaftarstrongp; } else { viewdata[actionmessage] = p class=errorstrongGagal mendaftarstrongpp; if userexist { viewdata[actionmessage] = p class=errorstrongGagal mendaftar. Email sudah digunakan.strongp; } } Kode Program Menampilkan Pesan Penyimpanan

4.4.2 Antarmuka Untuk Penjal

1. Halaman Login

Untuk mengakses halaman untuk penjual, pengguna harus melakukan login sebagai penjual terlebih dahulu. Judul halaman ditampilkan menggunakan tag h1. Pesan kesalahan login ditampilkan menggunakan tag p. Pengguna dapat memasukkan email pada tag input jenis text, sedangkan password pada tag input jenis password. Proses login berlangsung setelah input jenis submit diklik. Berikut ini adalah kode program untuk menampilkan halaman login. h1Login Penjualh1 div id=loginform ?php ifreadPOSTuserlog,FILTER_SANITIZE_SPECIAL_CHARS { ? p class=error strongLogin gagalstrongbr Username atau password tidak sesuai.br Silahkan coba lagi.br br p ?php } ? form method=post action=login autocomplete=off br labelEmaillabelinput class=half id=email name=email type=text br labelPasswordlabelinput class=half id=password name=password type=password br input name=userlog type=hidden value=seller labelnbsp;labelinput type=submit value=Login form div Kode Program Menampilkan Halaman Login Halaman login berisi judul halaman, input untuk memasukkan email dan password serta tombol login. Jika login mengalami kegagalan sistem akan menampilkan pesan kegagalan. Berikut ini adalah screenshot halaman login. Gambar 4.16 Screenshot Halaman Login Penjual. Sistem selanjutnya memeriksa membaca email dan password yang dimasukkan pengguna. Sistem membaca rekaman yang memiliki email dan password tersebut. Jika jumlah rekaman ada satu maka PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI proses login berhasil. Jika jumlah rekaman tidak sama dengan 1 maka proses login gagal. Jika proses login berhasil selanjutnya mengambil data penjual dan menyimpannya ke dalam sesi. Data yang disimpan adalah id penjual, nama lengkap dan jenis pengguna. Selanjutnya sistem mengarahkan halaman ke beranda. Berikut ini adalah kode program untuk login penjual. if userlog == seller { email = _POST[email]; password = _POST[password]; statement = database-prepareselect from penjual where email=:email_ and password=:password_; statement-executearray:email_ = email, :password_ = password; usercount = 0; usercount = statement-rowCount; if usercount == 1 { rows = statement-fetchAllPDO::FETCH_ASSOC; row = rows[0]; _SESSION[idpenjual] = row[idpenjual]; _SESSION[namalengkap] = row[namalengkap]; _SESSION[administrator] = seller; uri-pagefolder = beranda; } } Kode Program Login Penjual

2. Menu

Data menu untuk penjual disimpan di dalam senarai arrUserpage. Senarai ini menyimpan data berupa nama menu, tautan jenis menu. Berikut ini adalah kode program untuk menyimpan data menu untuk penjual. arrUserpage=array arrayname = Beranda, link = beranda, type = link, arrayname = SPK, link = spk, type = link, arrayname = Tanah, link = tanah, type = link, arrayname = Penjual, link = penjual, type = link, arrayname = Kriteria, link = kriteria, type = link, arrayname = Berita, link = berita, type = link, arrayname = Buku Tamu, link = bukutamu, type = link ; Kode Program Data Menu Penjual Kode program untuk menampilkan menu penjual sama dengan menu tamu. Menu untuk tamu memiliki item beranda, SPK, tanah, penjual, kriteria, berita, buku tamu dan logout. Jika item menu tersebut diklik maka sistem akan menampilkan halaman yang sesuai. Berikut ini adalah screenshot bagian menu untuk penjual. Gambar 4.17 Screenshot Bagian Menu Untuk Penjual Proses logout terjadi jika pengguna mengklik item logout. Sistem akan menghapus data id pengguna, nama lengkap dan jenis pengguna. Selanjutnya mengarahkan halaman ke halaman login. Berikut ini adalah kode program proses logout. if uri-pagefolder == logout { _SESSION[idpengguna] = ; _SESSION[namalengkap] = ; _SESSION[administrator] = ; session_destroy; uri-pagefolder == login; } Kode Program Proses Logout

3. Halaman Pengelolaan Tanah

Halaman pengelolaan tanah terdiri atas halaman daftar tanah dan halaman formulir tanah. Halaman daftar tanah meliputi bagian navigasi halaman dan daftar halaman. Bagian navigasi memiliki elemen untuk memasukkan kata kunci, mencari, menuju halaman pertama, sebelumnya, berikutnya dan terakhir, serta menambah rekaman. Bagian daftar tanah menampilkan informasi tanah yang berupa harga, luas dan alamat. Jika pengguna mengklik ikon tambah atau item pada daftar tanah maka sistem akan menampilkan formulir tanah. Berikut ini adalah screenshot halaman daftar tanah. Gambar 4.18 Screenshot Halaman Daftar Tanah Halaman formulir tanah tampilannya mirip dengan halaman informasi rinci tanah. Perbedaanya adalah halaman formulir tanah memiliki elemen yang tidak dimiliki halaman informasi rinci tanah. Halaman formulir tanah memiliki elemen untuk mengunggah citra. Halaman ini memiliki elemen untuk memasukkan atau mengubah data tanah. Halaman ini juga memiliki elemen untuk menambah, menyimpan dan menghapus rekaman. Berikut ini adalah screenshot halaman formulir tanah. Gambar 4.19 Screenshot Halaman Formulir Tanah Perintah kepada basis data sesuai dengan perintah rekaman yang diberikan pengguna. Jika pengguna mengklik tombol rekaman pertama, maka sistem akan menjalankan perintah untuk membaca rekaman pertama. Berikut ini adalah kode program untuk membaca rekaman pertama. Jika pengguna mengklik ikon rekaman sebelumnya, berikutnya dan terakhir maka sistem akan menjalankan perintah SQL yang sesuai. Berikut ini adalah kode program untuk navigasi rekaman. case rekamanpertama: { statement=database-prepareselect from tanah where idpenjual=:idpenjual_ order by idtanah asc limit 1; statement-executearray:idpenjual_=model-idpenjual; }break; case rekamansebelumnya: { statement=database-prepareselect from tanah where idtanah=:nomorrekam_ and idpenjual:idpenjual_ order by idtanah desc limit 1; statement-executearray:nomorrekam_=model- nomorrekam, PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI :idpenjual_=model-idpenjual; }break; case rekamanberikutnya: { statement=database-prepareselect from tanah where idtanah=:nomorrekam_ and and idpenjual:idpenjual_ order by idtanah asc limit 1; statement-executearray:nomorrekam_=model- nomorrekam, :idpenjual_=model-idpenjual; }break; case rekamanterakhir: { statement=database-prepareselect from tanah where idpenjual=:idpenjual_ order by idtanah desc limit 1; statement-executearray:idpenjual_=model-idpenjual; }break; Kode Program Navigasi Rekaman

4. Halaman Pengubahan Data Penjual

Kode program dan stuktur halaman pengubahan data penjual mirip dengan halaman pendaftaran. Halaman ini memiliki elemen untuk memasukkan nama lengkap, email, password, alamat dan telepon. Perbedaanya halaman pengubahan data penjual memiliki elemen untuk menyimpan data memuat ulang rekaman. Berikut ini adalah screenshot halaman pengubahan data penjual. Gambar 4.20 Screenshot Halaman Pengubahan Data Penjual Sistem akan memperbaharui data penjual setelah pengguna mengklik ikon simpan. Data yang diperbaharui adalah data yang diubah oleh pengguna. Data ini dapat berupa nama lengkap, email, password, alamat dan nomor telepon. Berikut ini adalah kode program untuk memperbaharui data penjual. statement=database-prepare update penjual set namalengkap=:namalengkap_, email=:email_, password=:password_, alamat=:alamat_, telepon=:telepon_ where idpenjual=:nomorrekam_ ; statement-executearray :namalengkap_=model-namalengkap, :email_=model- email, :password_=model-password, :alamat_=model-alamat, :telepon_=model-telepon,:nomorrekam_=model- nomorrekam ; Kode Program Memperbaharui Data Penjual

4.4.3 Antarmuka Untuk Admin

1. Halaman Login

Kode program dan stuktur halaman login untuk admin mirip dengan halaman login untuk penjual. Perbedaanya halaman login admin menggunakan username sedangkan halaman login penjual menggunakan email. Berikut ini adalah screenshot halaman login untuk admin. Gambar 4.21 Screenshot Halaman Login Untuk Admin Sistem selanjutnya mengeksekusi perintah untuk login bagi admin. Tabel yang dibaca adalah tabel pengguna. Kode program logout admin sama dengan logout pengguna. Berikut ini adalah kode program login admin. if userlog == admin { username = _POST[username]; password = _POST[password]; statement = database-prepareselect from pengguna where username=:username_ and password=:password_; statement-executearray:username_ = username, :password_ = password; usercount = 0; usercount = statement-rowCount; if usercount == 1 { rows = statement-fetchAllPDO::FETCH_ASSOC; row = rows[0]; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI _SESSION[idpengguna] = row[idpengguna]; _SESSION[namalengkap] = row[namalengkap]; uri-pagefolder = beranda; _SESSION[administrator] = administrator; }} Kode Program Login Admin

2. Menu

Data menu untuk admin disimpan di dalam senarai arrUserpage. Senarai ini menyimpan data berupa nama menu, tautan jenis menu. Berikut ini adalah kode program untuk menyimpan data menu untuk admin. arrUserpage=array arrayname=Beranda,link=beranda,type=link, arrayname=SPK,link=spk,type=link, arrayname=Tanah,link=tanah,type=link, arrayname=Penjual,link=penjual,type=link, arrayname=Kriteria,link=kriteria,type=link, arrayname=Berita,link=berita,type=link, arrayname=Buku Tamu,link=bukutamu,type=link, arrayname=Pengguna,link=pengguna,type=link ; Kode Program Data Menu Admin Kode program untuk menampilkan menu admin sama dengan menu tamu dan penjual. Menu untuk admin memiliki item beranda, SPK, tanah, penjual, kriteria, berita, buku tamu, pengguna dan logout. Berikut ini adalah screenshot bagian menu untuk penjual. Gambar 4.22 Screenshot Bagian Menu Untuk Admin

3. Halaman Pengelolaan Tanah

Halaman pengelolaan tanah untuk admin terdiri atas halaman daftar tanah dan halaman formulir tanah. Halaman daftar tanah untuk admin memiliki kode program dan struktur halaman yang mirip dengan daftar tanah untuk penjual. Perbedaannya adalah pada halaman admin tidak ada ikon tambah rekaman. Berikut ini adalah screenshot halaman daftar tanah untuk admin. Gambar 4.23 Screenshot Halaman Daftar Tanah Untuk Admin Kode program dan struktur halaman formulir tanah untuk admin mirip dengan halaman formulit tanah untuk penjual. Perbedaanya adalah halaman formulir tanah admin tidak dapat untuk mengunggah citra, memasukkan data, menambah rekaman dan menghapus rekaman. Berikut ini adalah screenshot halaman formulir tanah untuk admin. Gambar 4.24 Screenshot Halaman Formulir Tanah Untuk Admin

4. Halaman Pengelolaan Penjual

Halaman pengelolaan penjual terdiri atas halaman daftar penjual dan formulir penjual. Halaman daftar penjual meliputi bagian navigasi halaman dan daftar penjual. Bagian navigasi memiliki elemen untuk memasukkan kata kunci, mencari, menuju halaman pertama, sebelumnya, berikutnya dan terakhir. Bagian daftar penjual menampilkan informasi penjual yang berupa nama lengkap dan email. Berikut ini adalah screenshot halaman daftar penjual. Gambar 4.25 Screenshot Halaman Daftar Penjual Kode program dan stuktur halaman untuk menampilkan formulir penjual mirip dengan halaman pendaftaran. Halaman ini tidak memiliki elemen untuk menyimpan, tetapi memiliki elemen untuk menghapus rekaman. Berikut ini adalah screenshot halaman pengubahan data penjual. Gambar 4.26 Screenshot Halaman Formulir Penjual Sistem akan mengeksekusi perintah untuk menghapus rekaman setelah pengguna mengklik ikon hapus rekaman. Berikut ini adalah kode program untuk menghapus data penjual di basis data. statement=database-preparedelete from penjual where idpenjual=:nomorrekam_; statement-executearray:nomorrekam_=model- nomorrekam; model-nomorrekam=; Kode Program Menghapus Data Penjual

5. Halaman Pengelolaan Kriteria

Halaman pengelolaan kriteria terdiri atas halaman daftar kriteria dan formulir kriteria. Halaman daftar kriteria memiliki bagian navigasi halaman dan formulir kriteria. Bagian navigasi memiliki elemen untuk memasukkan kata kunci, mencari, menuju halaman pertama, sebelumnya, berikutnya dan terakhir. Bagian daftar penjual PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI menampilkan informasi penjual yang berupa nama kriteria. Berikut ini adalah screenshot halaman daftar kriteria. Gambar 4.27 Screenshot Halaman Daftar Kriteria Halaman formulir kriteria memiliki elemen untuk memasukkan data dan keterangan kriteria. Halaman ini juga memiliki elemen untuk mengunggah citra kriteria. Berikut ini adalah screenshot halaman formulir kriteria. Gambar 4.28 Screenshot Halaman Formulir Kriteria Untuk mengunggah citra pengguna harus memilih citra dengan mengklik tombol browse kemudian mengklik ikon unggah. Sistem akan memeriksa apakah jenis dan ukuran berkas sesuai. Sistem selanjutnya memeriksa apakah ada galat. Nama berkas dibuat berdasarkan id kriteria yang sedang aktif. Jika berkas sudah ada sistem akan menghapus berkas yang ada. Proses selanjutnya adalah pemindahan berkas sementara ke folder pengunggahan. Sistem akan menampilkan pesan berhasil atau tidaknya proses pengunggahan citra. Berikut ini adalah kode program pengunggahan citra kriteria. filetype=imagejpeg; filesize=210241024; folderpath=uploadkriteria; if _FILES[file][type]==filetype_FILES[file][size] filesize { if _FILES[file][error] 0 { viewdata[actionmessage]=p class=errorstrongCitra gagal diunggahstrongp; } else { filepath=folderpath.model-idkriteria..jpg; if file_existsfilepath { unlinkfilepath; } ifmove_uploaded_file_FILES[file][tmp_name],filepath { viewdata[actionmessage]=p class=successstrongCitra berhasil diunggahstrongp; } PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI else{viewdata[actionmessage]=p class=errorstrongCitra gagal diunggahstrongp;} } } Else { viewdata[actionmessage]=p class=errorstrongCitra gagal diunggahstrongbr Citra tidak sesuai. br Citra harus JPEG dengan ukuran kurang dari 2 MBbr br p; } Kode Program Mengunggah Citra Kriteria

6. Halaman Pengelolaan Berita

Halaman pengelolaan berita untuk admin terdiri atas halaman daftar berita dan halaman formulir berita. Halaman daftar berita untuk admin memiliki kode program dan struktur halaman yang mirip dengan daftar tanah untuk kriteria. Perbedaannya adalah pada halaman berita memiliki ikon tambah rekaman. Berikut ini adalah screenshot halaman daftar berita untuk admin. Gambar 4.29 Screenshot Halaman Daftar Berita Sistem akan mengosong variabel untuk berita setelah pengguna mengklik ikon tambah rekaman. Selanjutnya formulir kosong ditampilkan. Berikut ini adalah kode program untuk mengosong variabel berita. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI model-nomorrekam=; model-idberita=; model-judul=; model-isi=; model-tanggal=; Kode Program Mengosong Varibel Berita Untuk mempermudah input tanggal sistem menyediakan elemen datepicker. Elemen ini dibuat menggunakan pustaka datepicker dari jquery. Berikut ini adalah kode program untuk membuat datepicker. script function { tanggal .datepicker{ changeMonth:true,changeYear:true,dateFormat: yy-mm-dd}; }; script Kode Program Membuat DatePicker Kode program dan struktur halaman formulir berita untuk admin mirip dengan halaman formulir kriteria. Perbedaanya adalah halaman formulir berita memiliki elemen untuk menambah rekaman baru. Berikut ini adalah screenshot halaman formulir berita untuk admin. Gambar 4.30 Halaman Formulir Berita 7. Halaman Pengelolaan Komentar Halaman pengelolaan komentar terdiri atas bagian navigasi dan bagian daftar komentar. Bagian komentar menampilkan informasi mengenai nama, email, tanggal dan komentar. Pada bagian daftar komentar terdapat elemen untuk menampilkan, menyembunyikan dan menghapus komentar. Berikut ini adalah screenshot halaman pengelolaan komentar. Gambar 4.31 Screenshot Halaman Pengelolaan Buku Tamu Komentar dapat ditampilkan, disembunyikan sesuai keinginan administrator. Berikut ini adalah kode program untuk mengelola buku tamu. case tampilkan: { statement=database-prepareupdate bukutamu set status=2 where idbukutamu=:nomorrekam_; statement-executearray:nomorrekam_=nomorrekam; … }break; case sembunyikan: { statement=database-prepareupdate bukutamu set status=1 where idbukutamu=:nomorrekam_; statement-executearray:nomorrekam_=nomorrekam; … }break; case hapusrekaman:{ statement=database-preparedelete from bukutamu where idbukutamu=:nomorrekam_; statement-executearray:nomorrekam_=nomorrekam; … }break; Kode Program Mengelola Buku Tamu

8. Halaman Pengelolaan Pengguna

Halaman pengelolaan pengguna tediri atas halaman daftar dan formulir pengguna. Halaman daftar pengguna memiliki elemen untuk navigasi halaman dan daftar pengguna. Halaman formulir pengguna memiliki elemen untuk memasukkan data pengguna, navigasi rekaman dan pengelolaan rekaman. Berikut ini adalah screenshot halaman daftar dan formulir pengguna. Gambar 4.32 Screenshot Halaman Formulir Pengguna 4.5 Pengujian Perhitungan 4.5.1 Pemilihan Alternatif Langkah pertama pengujian perhitungan adalah pemilihan alternatif. Alternatif yang dipilih adalah Tanah 1, Tanah 2 dan Tanah 3. Berikut ini adalah tabel yang menjeaskan data masing-masing alternatif. Tabel 4.3 Daftar Alternatif Terpilih Nomor Nama Harga m2 Luas Lebar Depan Rp m2 m 1 Tanah 1 500000 300 20 2 Tanah 2 600000 290 19 3 Tanah 3 700000 280 18

4.5.2 Membandingkan Kriteria

Langkah berikutnya adalah membandingkan kriteria. Kriteria yang dipilih adalah harga per meter persegi, luas dan lebar depan. Masing- masing kriteria dibandingkan dan diberi nilai sesuai dengan skala AHP. Berikut ini adalah tabel yang menggambarkan pemberian nilai pada masing-masing pasangan kriteria. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI Tabel 4.4 Perbandingan Kriteria Kriteria Harga m2 Luas Lebar Depan Harga m2 1.00 0.50 0.50 Luas 2.00 1.00 1.00 Lebar Depan 2.00 1.00 1.00 Jumlah 5.00 2.50 2.50 Setiap kolom kriteria dijumlah secara vertikal. Penjumlahan nilai perbandingan kriteria secara verikal adalah sebagai berikut. Jumlah nilai perbandingan harga m2 = Perbandingan harga m2 dengan harga m2 + Perbandingan harga m2 dengan luas + Perbandingan harga m2 dengan lebar depan = 1.00 + 2.00 + 2.00 = 5.00 Jumlah nilai perbandingan luas = 0.50 + 1.00 + 1.00 = 2.50 Jumlah nilai perbandingan lebar depan = 0.50 + 1.00 + 1.00 = 2.50 Penjumlahan Vertikal Nilai Perbandingan Kriteria Normalisasi dilakukan dengan membagi setiap perbandingan kriteria dengan masing-masing jumlah kolom kriteria. Berikut ini adalah tabel yang menunjukkan hasil nomalisasi nilai perbandingan kriteria. Tabel 4.5 Normalisasi Perbandingan Kriteria Kriteria Harga m2 Luas Lebar Depan Harga m2 0.20 0.20 0.20 Luas 0.40 0.40 0.40 Lebar Depan 0.40 0.40 0.40 Jumlah 1.00 1.00 1.00 Sebagai contoh perhitungan adalah kolom harga per meter persegi. Jumlah kolom perbandingan harga per meter persegi adalah adalah 5. Setiap baris pada kolom harga per meter persegi di bagi dengan 5. Perhitungan normalisasi pebandingan kriteria adalah sebagai berikut. Kolom harga m2 : Normalisasi baris harga m2 = 1 : 5 = 0.20 Normalisasi baris luas = 2 : 5 = 0.40 Normalisasi baris lebar depan = 2 : 5 = 0.40 Kolom luas : Normalisasi baris harga m2 = 0.5 : 2.5 = 0.20 Normalisasi baris luas = 1 : 2.5 = 0.40 Normalisasi baris lebar depan = 1 : 2.5 = 0.40 Kolom lebar depan : Normalisasi baris harga m2 = 0.5 : 2.5 = 0.20 Normalisasi baris luas = 1 : 2.5 = 0.40 Normalisasi baris lebar depan = 1 : 2.5 = 0.40 Perhitungan Normalisasi Perbandingan Kriteria Langkah selanjutnya adalah menjumlah secara horizontal setiap baris hasil normalisasi. Jumlah setiap baris kemudian dijumlah untuk mendapatkan nilai pembagi perhitungan nilai eigen. Nilai eigen merupakan pembagian jumlah horizontal masing-masing baris dengan jumlah dari jumlah setiap baris. Nilai prioritas setiap kriteria adalah hasil kali nilai eigen dengan 100. Berikut ini adalah tabel yang menunjukkan hasil jumlah setiap baris normalisasi, perhitungan nilai eigen dan prioritas. Tabel 4.6 Prioritas Kriteria Jumlah Eigen Harga m2 0.60 0.20 20.00 Luas 1.20 0.40

40.00 Lebar Depan

1.20 0.40

40.00 Jumlah

3.00 1.00

100.00 Perhitungan penjumlahan horizontal hasil normalisasi adalah sebagai berikut: Jumlah horizontal nilai normalisasi kriteria harga m2 = Normalisasi harga m2 + luas + lebar depan = 0.20 + 0.20 + 0.20 = 0.60 Jumlah horizontal nilai normalisasi kriteria luas = 0.40 + 0.40 + 0.40 = 1.20 Jumlah horizontal nilai normalisasi kriteria lebar depan = 0.40 + 0.40 + 0.40 = 1.20 Perhitungan Jumlah Horizontal Hasil Normalisasi Perhitungan jumlah vertikal dari jumlah horizontal normalisasi kriteria adalah sebagai berikut: Jumlah vertikal = Jumlah horizontal harga m2 + luas + lebar depan = 0.60 + 1.20 + 1.20 Perhitungan Jumlah Vertikal dari Jumlah Horizontal Perhitungan nilai eigen setiap kriteria adalah sebagai berikut: Nilai eigen kriteria harga m2 = Jumlah horizontal kriteria harga m2 : jumlah vertikal = 0.6 : 3 = 0.2 Nilai eigen kriteria luas = 1.2 : 3 = 0.4 Nilai eigen kriteria lebar depan = 1.2 : 3 = 0.4 Perhitungan Nilai Eigen Kriteria Perhitungan nilai prioritas setiap kriteria adalah sebagai berikut: Nilai prioritas harga m2 = Nilai eigen kriteria harga m2 x 100 = 0.20 x 100 = 20.00 Nilai prioritas luas = 0.40 x 100 = 40.00 Nilai prioritas lebar depan = 0.40 x 100 = 40.00 Perhitungan Nilai Prioritas Kriteria Penentuan konsistensi terdiri atas beberapa langkah, yaitu penentuan n, perhitungan Λ maks, perhitungan CI, penentuan RI dan perhitungan CR. Setelah itu baru dapat ditentukan perbandingan konsisten atau tidak berdasarkan nilai CR. Berikut ini adalah tabel hasil penentuan konsistensi perbandingan kriteria. Tabel 4.7 . Penentuan Konsistensi n 3.00 Λ maksimal 3.00 CI 0.00 RI 0.58 CR 0.00 Konsistensi Konsisten Nilai n merupakan banyak kriteria yang dibandingkan. Nilai Λ maksimal adalah penjumlahan dari perkalian nilai eigen dengan jumlah nilai perbandingan kriteria. Berikut ini adalah perhitungan nilai Λ maksimal. Λ maksimal = Nilai eigen harga m2 x jumlah nilai perbandingan harga m2 + Nilai eigen luas x jumlah nilai perbandingan luas + Nilai eigen lebar depan x jumlah nilai perbandingan lebar depan = 0.20 x 5.00 + 0.40 x 2.50 + 0.40 x 2.50 = 1 + 1 + 1 = 3 Perhitungan Λ Maksimal PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Dokumen yang terkait

Analisis Metode Fuzzy Analytic Hierarchy Process (Fahp) Dalam Menentukan Posisi Jabatan

12 131 82

Perbandingan Metode Analytical Hierarchy Process (AHP) dan Metode Preference Ranking Organization Method For Enrichment Evaluation (PROMETHEE) untuk Pemilihan Hardisk Eksternal

19 131 147

Implementasi Metode Profile Matching dan Metode Analytical Hierarchy Process (AHP) pada Perekrutan Tenaga Kurir (Studi Kasus PT. JNE Cabang Medan)

16 91 137

Analisis Metode AHP (Analytical Hierarchy Process) Berdasarkan Nilai Consistency Ratio

2 46 123

Penentuan Komoditas Unggulan Pertanian Dengan Metode Analytical Hierarchy Process (AHP) (Studi Kasus: Pertanian Kecamatan Parbuluan, Kabupaten Dairi)

18 117 72

Implementasi Metode Analytical Hierarchy Process (AHP) dan Fuzzy Multi-Attribute Decision Making (Fuzzy MADM) dalam Penentuan Prioritas Pengerjaan Order di PT. Sumatera Wood Industry

6 138 175

Analisis Pemilihan Supplier Dengan Metode Analytical Hierarchy Process (AHP) dan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) di PT. Indo CafCo

12 57 78

Studi Penerapan Metode Analytical Hierarchy Process (AHP) Dan Metode Technique For Order Preference By Similarity To Ideal Solution (TOPSIS) Untuk Peningkatan Kualitas Layanan Di Rumah Sakit Bina Kasih Medan-Sunggal

4 41 149

Pendekatan Analytic Hierarchy Process (AHP) Dalam Pemilihan Supplier (Pemasok)

0 35 51

Sistem pengambilan keputusan pembelian tanah menggunakan metode Analytical Hierarchy Process (AHP)

1 1 181