(Simple Additive Weighting ) , kalau belum tau apa itu SAW dan langkah penyelesaiannya
silakan kunjungi artikel sebelumnya disini .
Design Tampilan
Untuk Setting koneksi database ke MySQLnya udah saya anggap mahir dan di luar kepala,
oke
3. Buatlah Form
Pada Tab Hitung SAW, penulis menggunakan StringGrid 1, StringGrid2 dan StringGrid3.
Seperti Contoh pada gambar diatas
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;
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;
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;
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;
(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;