Setelah beberapa minggu belum ada tulisan, kali ini saya akan membagikan tulisan saya mengenai sistem pendukung keputusan. Jika tulisan ini bermanfaat berarti banyak pembacanya dan menjadi motivasi saya untuk terus menulis di blog ini.
Kali ini saya akan membahas mengenai sistem pendukung keputusan untuk memilih kepala bagian sistem informasi pada suatu perusahaan.
Selanjutnya kita akan merancang sistem pendukung keputusannya. Rangcangan ini adalah rancangan saya pribadi yang dikembangkan dari artikel di atas.
Pada sistem yang di buat pertama adalah login, kemudian input data alternatif, kemudian input bobot, proses SAW dan tampilkan hasil dan terakhir adalah logout yang semua di kerjakan oleh admin.
Baik setelah desain proses nya kira-kira sudah cukup maka kita coba untuk desain database.
Nama database : db_spk
Tabel Admin
Tabel Alternatif
Tabel Bobot
Tabel Nilai
Untuk memudahkan membuat database di atas saya akan bagikan SQL nya.
/* MySQL Data Transfer Source Host: localhost Source Database: db_spk Target Host: localhost Target Database: db_spk Date: 09/03/2020 11.45.06 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for tbl_admin -- ---------------------------- CREATE TABLE `tbl_admin` ( `id_admin` int(11) NOT NULL AUTO_INCREMENT, `nama` varchar(30) NOT NULL, `username` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, PRIMARY KEY (`id_admin`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for tbl_alternatif -- ---------------------------- CREATE TABLE `tbl_alternatif` ( `id_alternatif` int(11) NOT NULL AUTO_INCREMENT, `nama` varchar(30) NOT NULL, `alamat` varchar(60) NOT NULL, `no_telp` varchar(14) NOT NULL, PRIMARY KEY (`id_alternatif`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for tbl_bobot -- ---------------------------- CREATE TABLE `tbl_bobot` ( `id_bobot` int(11) NOT NULL AUTO_INCREMENT, `w1` double NOT NULL, `w2` double NOT NULL, `w3` double NOT NULL, `w4` double NOT NULL, PRIMARY KEY (`id_bobot`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for tbl_nilai -- ---------------------------- CREATE TABLE `tbl_nilai` ( `id_nilai` int(11) NOT NULL AUTO_INCREMENT, `id_alternatif` int(11) NOT NULL, `c1` int(11) NOT NULL, `c2` int(11) NOT NULL, `c3` int(11) NOT NULL, `c4` int(11) NOT NULL,
Oke kita sudah membuat database nya. sekarang kita akan membuat tampilan antarmuka untuk login. sebelumnya buat folder dengan nama spk di dalam htdocs. Kita menggunakan bootstrap untuk desain web yang bisa di dapatkan di sini.
Disini kita menambahkan jquery, buka link tersebut dan copy isi nya kemudian silahkan tambahkan file jquery.js di lamam folder js dan paste kan.
Di dalam file di atas kita ada menginclude file konten.php yang akan kita buat.
nama file konten.php berikut kodenya:
<?php if (isset($_GET['halaman'])) { if ($_GET['halaman']=='home') { include "home.php"; }else{ echo "Halaman tidak ditemukan!"; } }else{ include "home.php"; } ?>
Di dalam file konten.php kita ada menginclude file home.php yang belum kita buat.
Sekarang kita telah menyelesaikan index.php Login Index
Selanjutnya kita akan menyelesaikan create, read, update, delete (CRUD) data alternatif. buat lah sebuah folder di dalam folder spk bernapa alternatif dan buat beberapa file seperi dibawah. Sampai disini projek yang kita punya seperti ini.
Untuk mempersingkat waktu, saya akan membagikan kode CRUD data alaternatif di atas.
nama file : aksi_edit_alternatif.php
berikut kodenya:
<?php $id_alternatif=$_POST['id_alternatif']; $nama =$_POST['nama']; $alamat =$_POST['alamat']; $no_telp =$_POST['no_telp']; include "../koneksi.php"; $sql="update tbl_alternatif set nama = '$nama', alamat='$alamat', no_telp='$no_telp' where id_alternatif='$id_alternatif'"; $hasil=mysqli_query($koneksi,$sql); //echo "$sql"; if ($hasil) { header("location:../index.php?halaman=data&pesan=edit_sukses"); }else { header("location:../index.php?halaman=data&pesan=edit_gagal"); } ?>
nama file: aksi_hapus_alternatif.php
berikut kodenya:
<?php include "../koneksi.php"; $sql="delete from tbl_alternatif where id_alternatif='$_GET[id_alternatif]'"; mysqli_query($koneksi,$sql); //echo "$sql"; header("location:../index.php?halaman=data"); ?>
nama file: aksi_tambah_alternatif.php
berikut kodenya:
<?php $nama =$_POST['nama']; $alamat =$_POST['alamat']; $no_telp =$_POST['no_telp']; include "../koneksi.php"; $sql="insert into tbl_alternatif (nama, alamat, no_telp) values ('$nama','$alamat','$no_telp')"; $hasil=mysqli_query($koneksi,$sql); //echo "$sql"; if ($hasil) { header("location:../index.php?halaman=data&pesan=tambah_sukses"); }else { header("location:../index.php?halaman=data&pesan=tambah_gagal"); } ?>
Jangan lupa ubah isi file konten.php seperti berikut:
<?php if (isset($_GET['halaman'])) { if ($_GET['halaman']=='home') { include "home.php"; } elseif ($_GET['halaman']=='data') { include "alternatif/alternatif.php"; } elseif ($_GET['halaman']=='tambah_data') { include "alternatif/tambah_alternatif.php"; } elseif ($_GET['halaman']=='edit_data') { include "alternatif/edit_alternatif.php"; }else{ echo "Halaman tidak ditemukan!"; } }else{ include "home.php"; } ?>
Sekarang kita telah menyelesaikan index.php Login Index Data Alternatif
Sekarang kita lanjut untuk menu penilaian. Berikut struktur projek yang terbaru:
<?php if (isset($_POST['simpan'])) { include "../koneksi.php"; $jumlah=$_POST['jumlah']; for ($i=0; $i <$jumlah ; $i++) { $temp_id_alternatif="id_alternatif".$i; $temp_id_nilai="id_nilai".$i; $temp_c1="c1".$i; $temp_c2="c2".$i; $temp_c3="c3".$i; $temp_c4="c4".$i; $fix_id_alternatif= $_POST[$temp_id_alternatif]; $fix_id_nilai= $_POST[$temp_id_nilai]; $fix_c1= $_POST[$temp_c1]; $fix_c2= $_POST[$temp_c2]; $fix_c3= $_POST[$temp_c3]; $fix_c4= $_POST[$temp_c4]; $sql="select * from tbl_nilai where id_nilai='$fix_id_nilai'"; //echo "$sql"; $hasil=mysqli_query($koneksi,$sql); if (mysqli_num_rows($hasil)<=0) { $sql="insert into tbl_nilai(id_alternatif,c1,c2,c3,c4) values('$fix_id_alternatif','$fix_c1','$fix_c2','$fix_c3','$fix_c4')"; mysqli_query($koneksi,$sql); //echo "$sql"; }else{ $sql="update tbl_nilai set c1='$fix_c1', c2='$fix_c2', c3='$fix_c3', c4='$fix_c4' where id_nilai='$fix_id_nilai'"; //echo "$sql"; mysqli_query($koneksi,$sql); } } } header("location:../index.php?halaman=penilaian&pesan=1"); ?>
Jangan lupa update file konten.php seperti ini:
<?php if (isset($_GET['halaman'])) { if ($_GET['halaman']=='home') { include "home.php"; } elseif ($_GET['halaman']=='data') { include "alternatif/alternatif.php"; } elseif ($_GET['halaman']=='tambah_data') { include "alternatif/tambah_alternatif.php"; } elseif ($_GET['halaman']=='edit_data') { include "alternatif/edit_alternatif.php"; } elseif ($_GET['halaman']=='penilaian') { include "penilaian/penilaian.php"; } else{ echo "Halaman tidak ditemukan!"; } }else{ include "home.php"; } ?>
Sampai disini progres yang kita kerjakan sekarang. Login Index Data Alternatif Penilaian
<div class="col-10"> <?php include "koneksi.php"; $sql="select * from tbl_nilai where skor IS NULL"; $hasil=mysqli_query($koneksi,$sql); if (mysqli_num_rows($hasil)>0) { ?> <div class="alert alert-danger alert-dismissible fade show" role="alert"> <strong>Pesan : </strong> Rangking Perlu diperbarui. <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <a href="rangking/aksi_rangking.php"><input style="margin-bottom:5px " class="btn btn-primary" type="button" name="" value="Mulai"></a> <?php }else{ ?> <a href="rangking/aksi_rangking.php"><input style="margin-bottom:5px " class="btn btn-primary" type="button" name="" value="Perbarui!"></a> <?php } $sql="select `db_spk`.`tbl_alternatif`.`id_alternatif` AS `id_alternatif`,`db_spk`.`tbl_alternatif`.`nama` AS `nama`,`db_spk`.`tbl_nilai`.`id_nilai` AS `id_nilai`,`db_spk`.`tbl_nilai`.`skor` AS `skor` from (`db_spk`.`tbl_alternatif` left join `db_spk`.`tbl_nilai` on((`db_spk`.`tbl_alternatif`.`id_alternatif` = `db_spk`.`tbl_nilai`.`id_alternatif`))) order by skor desc"; $hasil=mysqli_query($koneksi,$sql); ?> <table class="table table-bordered"> <thead> <tr style="font-weight: bold"> <td width="5%">No.</td> <td width="45%">Nama</td> <td width="50%">Skor</td> </tr> </thead> <tbody> <?php $no=1; $i=0; while ($row=mysqli_fetch_array($hasil)) { ?> <tr> <td><?php echo $no++?></td> <td><?php echo $row['nama']?></td> <form action="rangking/aksi_rangking.php" method="POST"> <td> <?php echo $row['skor']?> </td> </tr> <?php $i++; } ?> </form> </tbody> </table> </div>
nama file: aksi_rangking.php berikut kodenya:
<?php include "../koneksi.php"; $sql="select max(c1) as max_c1, max(c2) as max_c2, max(c3) as max_c3,max(c4) as max_c4 from tbl_nilai"; $hasil=mysqli_query($koneksi,$sql); $row=mysqli_fetch_array($hasil); $max_c1=$row['max_c1']; $max_c2=$row['max_c2']; $max_c3=$row['max_c3']; $max_c4=$row['max_c4']; $sql=" select * from tbl_bobot"; $hasil=mysqli_query($koneksi,$sql); $row=mysqli_fetch_array($hasil); $w1=$row['w1']; $w2=$row['w2']; $w3=$row['w3']; $w4=$row['w4']; $sql="select * from tbl_nilai"; $hasil=mysqli_query($koneksi,$sql); $i=0; while ($row=mysqli_fetch_array($hasil)) { $id_nilai[$i]=$row['id_nilai']; $c1_normalisasi=round(($row['c1']/$max_c1),2); $c2_normalisasi=round(($row['c2']/$max_c2),2); $c3_normalisasi=round(($row['c3']/$max_c3),2); $c4_normalisasi=round(($row['c4']/$max_c4),2); $skor[$i]=round((($w1*$c1_normalisasi)+($w2*$c2_normalisasi)+($w3*$c3_normalisasi)+($w4*$c4_normalisasi)),3); $i++; } $x=0; foreach ($skor as $key => $value) { $sql="update tbl_nilai set skor='$value' where id_nilai='$id_nilai[$x]'"; mysqli_query($koneksi,$sql); $x++; echo "$sql"; echo "<br>"; } header("location:../index.php?halaman=rangking"); ?>
Baik sekarang kita telah menyelesaikan perangkingan dengan metode SAW, mari lihat hasilnya:
Untuk pengujian pertama cukup bandingkan dengan hasil perhitungan manual. Untuk tes kedua silahkan tambah sebuah data dan hitung manual terlebih dahulu.
Kita sudah menyelesaikan semuanya. Login Index Data Alternatif Penilaian Bobot Rangking Logout Terimakasih telah membaca.
Kami ucapkan terima kasih untuk pertanyaan dan koreksi atas postingan ini. Untuk kesalahan tutorial ini sudah di perbaiki pada bagian kode SQL yang berwarna merah.
إرسال تعليق