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.