Anda di halaman 1dari 7

Sesuai dengan Judul artikel ini, penulis mencoba mengimplementasikan metode SAW

(Simple Additive Weighting ) , kalau belum tau apa itu SAW dan langkah penyelesaiannya
silakan kunjungi artikel sebelumnya disini .

Dalam mengimplementasikan metode ini, silahkan terlebih dahulu membuat databasenya


pada tutorial ini penulis menggunakan MySQL.
Silahkan buat databasenya seperti pada gambar berikut :

Buat Database SPK

Design Tampilan

1.Silahkan Buka Project Baru pada delphi ..


2. Koneksikan Ke Database

Untuk Setting koneksi database ke MySQLnya udah saya anggap mahir dan di luar kepala,
oke
3. Buatlah Form

1. Tab Input Data Siswa

2. Tab Input Data Bobot

3. Tab Input Data Nilai


4. Tab Hitung SAW

Pada Tab Hitung SAW, penulis menggunakan StringGrid 1, StringGrid2 dan StringGrid3.
Seperti Contoh pada gambar diatas

Coding dan Penerapan Algoritma SAW


Kemudian Untuk Coding Pada Tab Input Siswa, Input Bobot dan Input Nilai tidak saya bahas
karena untuk coding tersebut untuk menginputkan data dan menghapus data saja, jadi saya
anggap diluar kepala,, heeeee

Jadi Langsung kita akan bahas ke Source Code Implementasi Algoritmanya pada Tab Hitung
SAW.
==================================================================
=====
Klik 2 X pada form / OnCreate
Tambahkan Code untuk menampilkan Field pada stringgrid saat di jalankan

StringGrid1.ColCount := 5 ;StringGrid1.RowCount := 1
;StringGrid1.Cells[0,0]:='Alternatif';StringGrid1.Cells[1,0]:='UAN';StringG
rid1.Cells[2,0]:='UAS';StringGrid1.Cells[3,0]:='Raport';StringGrid1.Cells[4
,0]:='Test
Masuk';StringGrid1.ColWidths[0]:=100;StringGrid1.ColWidths[1]:=60;StringGri
d1.ColWidths[2]:=60;StringGrid1.ColWidths[3]:=60;StringGrid1.ColWidths[4]:=
60;StringGrid2.ColCount := 5 ;StringGrid2.RowCount := 1
;StringGrid2.Cells[0,0]:='Alternatif';StringGrid2.Cells[1,0]:='UAN';StringG
rid2.Cells[2,0]:='UAS';StringGrid2.Cells[3,0]:='Raport';StringGrid2.Cells[4
,0]:='Test
Masuk';StringGrid2.ColWidths[0]:=100;StringGrid2.ColWidths[1]:=60;StringGri
d2.ColWidths[2]:=60;StringGrid2.ColWidths[3]:=60;StringGrid2.ColWidths[4]:=
60;StringGrid3.ColCount := 2 ;StringGrid3.RowCount := 1
;StringGrid3.Cells[0,0]:='Alternatif';StringGrid3.Cells[1,0]:='Nilai';Strin
gGrid3.ColWidths[0]:=100;StringGrid3.ColWidths[1]:=80;

Pada Button Show Matrik Tambahkan Code, untuk menampilkan matrik X

var
b : Integer;
begin
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:='Select * from tb_penilaian ';
DataModule2.Qnilai.Open;

StringGrid2.RowCount := DataModule2.Qnilai.RecordCount;

if DataModule2.Qnilai.RecordCount<>0 then
begin
StringGrid2.RowCount := StringGrid2.RowCount+1;

for b:=0 to DataModule2.Qnilai.RecordCount-1


do
begin
StringGrid2.Cells[0,b+1] :=
DataModule2.Qnilai.FieldByName('Nama').AsString ;
StringGrid2.Cells[1,b+1] :=
DataModule2.Qnilai.FieldByName('UAN').AsString ;
StringGrid2.Cells[2,b+1] :=
DataModule2.Qnilai.FieldByName('UAS').AsString ;
StringGrid2.Cells[3,b+1] :=
DataModule2.Qnilai.FieldByName('N_RAport').AsString ;
StringGrid2.Cells[4,b+1] :=
DataModule2.Qnilai.FieldByName('N_Test_Masuk').AsString ;
DataModule2.Qnilai.Next;

end;
end;

Pada Button Matrik Ternormalisasi silahkan tambahkan Code, Code ini untuk menghitung
Rij dan membentuk Matrik R ternormalisasi.

var i : Integer;
begin

////////
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:= 'Select * from tb_penilaian order by Uan
desc';
DataModule2.Qnilai.Open;
C1 := DataModule2.Qnilai.FieldByName('UAN').AsString;

DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:= 'Select * from tb_penilaian order by UAS
desc';
DataModule2.Qnilai.Open;
C2 := DataModule2.Qnilai.FieldByName('UAS').AsString;
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:= 'Select * from tb_penilaian order by N_Raport
desc';
DataModule2.Qnilai.Open;
C3 := DataModule2.Qnilai.FieldByName('N_Raport').AsString;
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:= 'Select * from tb_penilaian order by
N_Test_Masuk desc';
DataModule2.Qnilai.Open;
C4 := DataModule2.Qnilai.FieldByName('N_Test_Masuk').AsString;

///////
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:='Select * from tb_penilaian ';
DataModule2.Qnilai.Open;

StringGrid1.RowCount := DataModule2.Qnilai.RecordCount;

if DataModule2.Qnilai.RecordCount<>0 then
begin
StringGrid1.RowCount := StringGrid1.RowCount+1;

for i:=0 to DataModule2.Qnilai.RecordCount-1 do


begin
StringGrid1.Cells[0,i+1] :=
DataModule2.Qnilai.FieldByName('Nama').AsString ;
StringGrid1.Cells[1,i+1] := FloatToStr
(StrToFloat(DataModule2.Qnilai.FieldByName('UAN').AsString) /
StrToFloat(C1)) ;
StringGrid1.Cells[2,i+1] := FloatToStr
(StrToFloat(DataModule2.Qnilai.FieldByName('UAS').AsString) /
StrToFloat(C2)) ; //(bing / StrToFloat(Label20.Caption) ) ;
StringGrid1.Cells[3,i+1]:= FloatToStr
(StrToFloat(DataModule2.Qnilai.FieldByName ('N_Raport').AsString) /
StrToFloat(C3)) ;//FloatToStr (bio / StrToFloat(Label21.Caption)) ;
StringGrid1.Cells[4,i+1] :=
FloatToStr(StrToFloat(DataModule2.Qnilai.FieldByName('N_Test_Masuk').AsStri
ng) / StrToFloat(C4)) ;//FloatToStr (Kimia / StrToFloat(Label22.Caption)) ;
DataModule2.Qnilai.Next;
end;

end;

Kemudian pada button Hitung SAW silahkan tambahkan code, untuk proses perhitungan.

var i : Integer;
begin
DataModule2.Qnilai.SQL.Clear;
DataModule2.Qnilai.SQL.Text:='Select * from tb_penilaian ';
DataModule2.Qnilai.Open;

StringGrid3.RowCount := DataModule2.Qnilai.RecordCount;

if DataModule2.Qnilai.RecordCount<>0 then
begin
StringGrid3.RowCount := StringGrid3.RowCount+1;

for i:=0 to DataModule2.Qnilai.RecordCount-1


do
begin
StringGrid3.Cells[0,i+1] :=
DataModule2.Qnilai.FieldByName('Nama').AsString ;
StringGrid3.Cells[1,i+1] := FloatToStr
(StrToFloat(StringGrid1.Cells[1,i+1])*StrToFloat(DataModule2.ZQBobotSaw.Fie
ldByName('UAN').AsString) +

(StrToFloat(StringGrid1.Cells[2,i+1])*StrToFloat(DataModule2.ZQBobotSaw.Fie
ldByName('UAS').AsString) +

(StrToFloat(StringGrid1.Cells[3,i+1])*StrToFloat(DataModule2.ZQbobotSaw.Fie
ldByName('N_Raport').AsString) +

(StrToFloat(StringGrid1.Cells[4,i+1])*StrToFloat(DataModule2.ZQBobotSaw.Fie
ldByName('N_Test_Masuk').AsString) ))));
DataModule2.Qnilai.Next;
end;

end;

Kemudian Terakhir pada button perangkian silahkan tambahkan code, untuk menyimpan
hasil perhitungan dan penseleksian sesuai dari hasil nilai terbesar .

var i : Integer;
begin
DataModule2.QJuara.SQL.Clear;
DataModule2.QJuara.SQL.Text:= ' Truncate Table tb_ranking ';
DataModule2.QJuara.ExecSQL;

DataModule2.QJuara.SQL.Clear;
DataModule2.QJuara.SQL.Text:= ' Select * from tb_ranking ';
DataModule2.QJuara.Open;

for i := 1 to StringGrid3.RowCount-1 do
begin
with DataModule2.QJuara do
begin
DataModule2.QJuara.Append;
DataModule2.QJuara.FieldByName('Nama').AsString:=StringGrid3.Cells[0,i];
DataModule2.QJuara.FieldByName('Nilai_Akhir').AsFloat:=StrToFloat(StringGri
d3.Cells[1,i]);
DataModule2.QJuara.Post;
DataModule2.QJuara.SQL.Clear;
DataModule2.QJuara.SQL.Text :='select * from tb_ranking order by
nilai_akhir desc ' ;
DataModule2.QJuara.Open;

end;

Project Jadinya sudah ada disini


Yaa Mungkin itu saja yang bisa saya sampaikan.. salah khilaf mohon ma'af

Anda mungkin juga menyukai