Sistem Pendukung Keputusan Menentukan Antibiotik Menggunakan Algoritma Analytical Hierarchy Process dan Weighted Product

A-1

LISTING PROGRAM

1.

Form Utama

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MenentukanAntibiotik
{
public partial class FormUtama : Form
{
public FormUtama()

{
InitializeComponent();
}
private void aBOUTMEToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutMe aboutme = new AboutMe();
aboutme.ShowDialog();
}
private void mASTERDATAPENYAKITToolStripMenuItem_Click(object
sender, EventArgs e)
{
MasterPenyakit masterpenyakit = new MasterPenyakit();
masterpenyakit.ShowDialog();
}
private void mASTERDATAANTIBIOTIKToolStripMenuItem_Click(object
sender, EventArgs e)
{
MasterAntibiotik masterantibiotik = new MasterAntibiotik();
masterantibiotik.ShowDialog();


Universitas Sumatera Utara

A-2

}
private void mASTERDATAKRITERIAToolStripMenuItem_Click(object
sender, EventArgs e)
{
MasterKriteria masterkriteria = new MasterKriteria();
masterkriteria.ShowDialog();
}
private void FormUtama_Load(object sender, EventArgs e)
{
}
private void eXITToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void pENILAIANKRITERIAToolStripMenuItem_Click(object sender,
EventArgs e)

{
PenilaianKriteria penilaian = new PenilaianKriteria();
penilaian.ShowDialog();
}
private void pENILAIANANTIBIOTIKToolStripMenuItem_Click(object sender,
EventArgs e)
{
PenilaianAntibiotik penilaian = new PenilaianAntibiotik();
penilaian.ShowDialog();
}
private void pENILAIANPRODUKWPToolStripMenuItem_Click(object sender,
EventArgs e)
{
PenilaianProduk penilaian = new PenilaianProduk();
penilaian.ShowDialog();
}
}
}

Universitas Sumatera Utara


A-3

2.

Form Aboutme

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MenentukanAntibiotik
{
public partial class AboutMe : Form
{
public AboutMe()

{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

3.

Hasil AHP antibiotik

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;

using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlServerCe;
using System.Diagnostics;
namespace MenentukanAntibiotik

Universitas Sumatera Utara

A-4

{
public partial class HasilAHPAntibiotik : Form
{
public DataTable TableBeratBadan = new DataTable();
public DataTable TableDosis = new DataTable();
public DataTable TableHarga = new DataTable();
public HasilAHPAntibiotik()
{
InitializeComponent();

}
private void HasilAHPAntibiotik_Load(object sender, EventArgs e)
{
Stopwatch sw = new Stopwatch();
sw.Start();
ProsesAHP(TableBeratBadan, "BeratBadan");
ProsesAHP(TableHarga, "Harga");
ProsesAHP(TableDosis, "Dosis");
HitungTotal();
sw.Stop();
MessageBox.Show(
"Perhitungan selesai\n" +
"Tampilkan hasil perhitungan",
"Perhitungan",
MessageBoxButtons.OK);
DataTable table_ranking = (DataTable)data_ranking.DataSource;
DataView view = new DataView(table_ranking);
view.Sort = "[Eigen Vector] DESC";
table_ranking = view.ToTable();
table_ranking.Columns.Add("Rank No", typeof(double));

table_ranking.Columns.Remove("Deskripsi");
int rankNo = 1;
foreach(DataRow row in table_ranking.Rows)
{
row["Rank No"] = rankNo++;
}
data_ranking.DataSource = table_ranking;

Universitas Sumatera Utara

A-5

}
private Dictionary ProsesAHP(DataTable data, string kriteria)
{
Dictionary result = new Dictionary();
DataTable matriks = GetMatriks(data);
DataTable tableAkhir = new DataTable();
DataTable tableJumlahKolom = new DataTable();
DataTable dataAntibiotik = GetDataAntibiotik();

tableAkhir = matriks.Copy();
double lamda = 0;
double nilaiCI = 0;
double nilaiCR = 0;
double NilaiIR = 1.43;
double JumlahAntibiotik = dataAntibiotik.Rows.Count;
result = Normalisasi(tableAkhir, dataAntibiotik);
tableAkhir = result["MatriksAkhir"];
tableJumlahKolom = result["MatriksJumlahKolom"];
foreach (DataRow row in tableAkhir.Rows)
{
String NamaAntibiotik = row["Antibiotik"].ToString();
if (NamaAntibiotik == "Total Kolom") continue;
lamda += (double)row["Eigen Max"];
}
nilaiCI = ((lamda) - JumlahAntibiotik) / (JumlahAntibiotik - 1);
nilaiCR = nilaiCI / NilaiIR;
Dictionary consistency = new Dictionary();
consistency.Add("JumlahAntibiotik", JumlahAntibiotik);
consistency.Add("CI", nilaiCI);

consistency.Add("CR", nilaiCR);
consistency.Add("IR", NilaiIR);
DataTable data_consistency = new DataTable();
data_consistency.Columns.Add("Variable", typeof(string));
data_consistency.Columns.Add("Nilai", typeof(double));
DataRow newrow = data_consistency.NewRow();
newrow["Variable"] = "Jumlah Antibiotik";
newrow["Nilai"] = JumlahAntibiotik;
data_consistency.Rows.Add(newrow);

Universitas Sumatera Utara

A-6

newrow = data_consistency.NewRow();
newrow["Variable"] = "Nilai IR";
newrow["Nilai"] = NilaiIR;
data_consistency.Rows.Add(newrow);
newrow = data_consistency.NewRow();
newrow["Variable"] = "Nilai CI";

newrow["Nilai"] = nilaiCI;
data_consistency.Rows.Add(newrow);
newrow = data_consistency.NewRow();
newrow["Variable"] = "Nilai CR";
newrow["Nilai"] = nilaiCR;
data_consistency.Rows.Add(newrow);
Control[] matriks_ctl = this.Controls.Find("data_matriks" + kriteria, true);
Control[] data_jumlah_kolom_ctl = this.Controls.Find("data_jumlah_kolom" +
kriteria, true);
Control[] data_akhir_ctl = this.Controls.Find("data_akhir" + kriteria, true);
Control[] data_consistency_ctl = this.Controls.Find("data_consistency" +
kriteria, true);
if (matriks_ctl.Length > 0)
{
((DataGridView)matriks_ctl[0]).DataSource = matriks;
}
if (data_jumlah_kolom_ctl.Length > 0)
{
((DataGridView)data_jumlah_kolom_ctl[0]).DataSource =
tableJumlahKolom;
}
if (data_akhir_ctl.Length > 0)
{
((DataGridView)data_akhir_ctl[0]).DataSource = tableAkhir;
}
if (data_consistency_ctl.Length > 0)
{
((DataGridView)data_consistency_ctl[0]).DataSource = data_consistency;
}

return consistency;
}

Universitas Sumatera Utara

A-7

private DataTable GetDataAntibiotik()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_antibiotik ORDER BY
NamaAntibiotik ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
return data;
}
private DataTable GetDataKriteria()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
return data;
}
private DataTable GetMatriks(DataTable data)
{
DataTable dataAntibiotik = GetDataAntibiotik();
DataTable matriks = new DataTable("Matriks");
matriks.Columns.Add("Antibiotik", typeof(string));
foreach (DataRow row in dataAntibiotik.Rows)
{
matriks.Columns.Add(row["NamaAntibiotik"].ToString(), typeof(double));
}
foreach (DataRow row in dataAntibiotik.Rows)
{
DataRow new_row = matriks.NewRow();
new_row["Antibiotik"] = row["NamaAntibiotik"];
matriks.Rows.Add(new_row);
}

Universitas Sumatera Utara

A-8

for (int i = 0; i < matriks.Rows.Count; i++)
{
for (int j = 1; j < matriks.Columns.Count; j++)
{
string column = matriks.Columns[j].ColumnName;
string row = matriks.Rows[i]["Antibiotik"].ToString();
if (column == row)
{
matriks.Rows[i][j] = 1;
}
else
{
DataRow[] rows = data.Select("(AntibiotikB = '" + column + "' AND
AntibiotikA = '" + row + "')");
double nilai = 0;
string dominan = "";
if (rows.Length == 1)
{
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString();
}
else
{
rows = data.Select("(AntibiotikA = '" + column + "' AND
AntibiotikB = '" + row + "')");
if (rows.Length == 1)
{
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString();
}
else
{
nilai = 0;
}
}
if (row == dominan)
{
matriks.Rows[i][j] = nilai;
}
else if (column == dominan)

Universitas Sumatera Utara

A-9

{
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai;
}
else
{
matriks.Rows[i][j] = 0;
}
}
}
}
return matriks;
}
private Dictionary Normalisasi(DataTable data, DataTable
dataAntibiotik)
{
Dictionary result = new Dictionary();
DataTable matriks = new DataTable("Matriks");
DataTable newMatriks = new DataTable("NewMatriks");
double JumlahAntibiotik = dataAntibiotik.Rows.Count;
Dictionary total_kolom = new Dictionary();
foreach (DataRow antibiotik in dataAntibiotik.Rows)
{
total_kolom.Add(antibiotik["NamaAntibiotik"].ToString(), 0);
}
foreach (DataRow row in data.Rows)
{
foreach (DataRow antibiotik in dataAntibiotik.Rows)
{
String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString();
total_kolom[namaAntibiotik] += (double)row[namaAntibiotik];
}
}
newMatriks = data.Copy();
matriks = data.Copy();
DataRow new_row = newMatriks.NewRow();
new_row["Antibiotik"] = "Total Kolom";
foreach (DataRow antibiotik in dataAntibiotik.Rows)

Universitas Sumatera Utara

A-10

{
String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString();
new_row[namaAntibiotik] = total_kolom[namaAntibiotik];
}
newMatriks.Rows.Add(new_row);
foreach (DataRow row in data.Rows)
{
foreach (DataRow antibiotik in dataAntibiotik.Rows)
{
String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString();
row[namaAntibiotik] = (double)row[namaAntibiotik] /
total_kolom[namaAntibiotik];
}
}
//hitung jumlah baris
Dictionary total_baris = new Dictionary();
foreach (DataRow antibiotik in dataAntibiotik.Rows)
{
total_baris.Add(antibiotik["NamaAntibiotik"].ToString(), 0);
}
foreach (DataRow row in data.Rows)
{
String namaAntibiotik = row["AntiBiotik"].ToString();
if (namaAntibiotik == "Total Kolom") continue;
for (int i = 1; i < data.Columns.Count; i++)
{
total_baris[namaAntibiotik] += (double)row[i];
}
}
data.Columns.Add("Jumlah Baris", typeof(double));
data.Columns.Add("Eigen Vector", typeof(double));
data.Columns.Add("Eigen Max", typeof(double));
Dictionary eigenVectors = new Dictionary();
foreach (DataRow row in data.Rows)
{
String namaAntibiotik = row["AntiBiotik"].ToString();
if (namaAntibiotik == "Total Kolom") continue;

Universitas Sumatera Utara

A-11

row["Jumlah Baris"] = total_baris[namaAntibiotik];
row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik;
row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik *
total_kolom[namaAntibiotik];
}
result.Add("MatriksJumlahKolom", newMatriks);
result.Add("MatriksAkhir", data);
return result;
}
private void HitungTotal()
{
DataTable table_hitung = new DataTable();
DataTable table_ranking = new DataTable();
DataTable Data_kriteria = GetDataKriteria();
DataTable Data_antibiotik = GetDataAntibiotik();
table_hitung.Columns.Add("Kriteria", typeof(string));
table_hitung.Columns.Add("Prioritas", typeof(double));
table_ranking = Data_antibiotik.Copy();
table_ranking.Columns.Add("Eigen Vector", typeof(double));
Dictionary datas = new Dictionary();
foreach (DataRow kriteria in Data_kriteria.Rows)
{
string namakriteria = kriteria["NamaKriteria"].ToString().Replace(" ","");
DataTable table_nilai = new DataTable();
Control[] ctls = this.Controls.Find("data_akhir" + namakriteria, true);
if (ctls.Length > 0)
{
table_nilai = (DataTable)((DataGridView)(ctls[0])).DataSource;
}
datas.Add(namakriteria, table_nilai);
}
foreach (DataRow antibiotik in Data_antibiotik.Rows)
{
string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString();
table_hitung.Columns.Add(nama_antibiotik, typeof(double));
}

Universitas Sumatera Utara

A-12

foreach (DataRow kriteria in Data_kriteria.Rows)
{
string namakriteria = kriteria["NamaKriteria"].ToString();
double eigenvector =
String.IsNullOrEmpty(kriteria["EigenVector"].ToString()) ? 0 :
(double)(kriteria["EigenVector"]);;
DataRow new_row = table_hitung.NewRow();
new_row["Kriteria"] = namakriteria;
new_row["Prioritas"] = eigenvector;
table_hitung.Rows.Add(new_row);
}
DataRow row_total = table_hitung.NewRow();
row_total["Kriteria"] = "Total Eigen";
foreach (DataRow rank in table_hitung.Rows)
{
string namakriteria = rank["Kriteria"].ToString().Replace(" ", "");
double eigenvectorkriteria = (double)rank["Prioritas"];
foreach (DataRow antibiotik in Data_antibiotik.Rows)
{
string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString();
DataRow[] rows = datas[namakriteria].Select("Antibiotik ='" +
nama_antibiotik + "'");
double eigenvectorpemain = rows.Length > 0 ? (double)rows[0]["Eigen
Vector"] : 1;
rank[nama_antibiotik] = eigenvectorkriteria * eigenvectorpemain;
if (String.IsNullOrEmpty(row_total[nama_antibiotik].ToString()))
row_total[nama_antibiotik] = 0;
row_total[nama_antibiotik] = (double)row_total[nama_antibiotik] +
(double)rank[nama_antibiotik];
}
}
table_hitung.Rows.Add(row_total);
foreach(DataRow antibiotik in table_ranking.Rows)
{
string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString();

Universitas Sumatera Utara

A-13

antibiotik["Eigen Vector"] = row_total[nama_antibiotik];
}
data_hitung.DataSource = table_hitung;
data_ranking.DataSource = table_ranking;
}
private void BKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

4.

Hasil AHP Kriteria

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace MenentukanAntibiotik
{
public partial class HasilAHPKriteria : Form
{
public DataTable TableAwal;
public DataTable TableKolom;
public DataTable TableAkhir;
public double CR;
public double IR;
public double CI;
public double perulangan;
public HasilAHPKriteria()
{
InitializeComponent();

Universitas Sumatera Utara

A-14

}
private void HasilAHPKriteria_Load(object sender, EventArgs e)
{
data_awal.DataSource = TableAwal;
data_total_kolom.DataSource = TableKolom;
data_akhir.DataSource = TableAkhir;
txtCI.Text = CI.ToString();
txtCR.Text = CR.ToString();
txtIR.Text = IR.ToString();
}
private void BSimpan_Click(object sender, EventArgs e)
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
foreach(DataRow row in data.Rows)
{
string nama = row["NamaKriteria"].ToString();
DataRow[] rows = TableAkhir.Select("Kriteria = '" + nama + "'");
if (rows.Length > 0)
{
row["EigenVector"] = rows[0]["Eigen Vector"];
}
}
bool isOk = database.SaveDataTable("table_kriteria", data, null, null);
if (isOk)
{
MessageBox.Show("Berhasil Simpan");
}
else
{
MessageBox.Show("Gagal Simpan");
}

Universitas Sumatera Utara

A-15

}
}
}

5.

Hasil WP Antibiotik

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MenentukanAntibiotik
{
public partial class HasilWPAntibiotik : Form
{
public DataTable TableData = new DataTable();
public DataTable TablePembobotan = new DataTable();
public DataTable TableRanking = new DataTable();
public HasilWPAntibiotik()
{
InitializeComponent();
}
private void HasilWPAntibiotik_Load(object sender, EventArgs e)
{
TableData.Columns.Remove("Deskripsi");
TablePembobotan.Columns.Remove("Deskripsi");
TableRanking.Columns.Remove("Deskripsi");
DataView view = new DataView(TableRanking);
view.Sort = "Ranking DESC";
TableRanking = view.ToTable();
DataTable TableRankingNo = TableRanking.Copy();
TableRankingNo.Rows.RemoveAt(TableRankingNo.Rows.Count - 1);
TableRankingNo.Columns.Add("Rank No", typeof(double));
int rankNo = 1;

Universitas Sumatera Utara

A-16

foreach(DataRow row in TableRankingNo.Rows)
{
row["Rank No"] = rankNo++;
}
TableRankingNo.Columns.Remove("Skor");
TableRankingNo.Columns.Remove("Ranking");
data_data.DataSource = TableData;
data_pembobotan.DataSource = TablePembobotan;
data_ranking.DataSource = TableRanking;
dataview_ranking_no.DataSource = TableRankingNo;
}
private void BKeluar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

6.

Master Antibiotik

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace MenentukanAntibiotik
{
public partial class MasterAntibiotik : Form
{
public MasterAntibiotik()
{
InitializeComponent();
}

Universitas Sumatera Utara

A-17

private void MasterAntibiotik_Load(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_antibiotik ORDER BY
NamaPenyakit ASC, NamaAntibiotik ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data);
data_antibiotik.DataSource = data;
}
private void SaveData()
{
Database database = new Database("CEConn");
DataTable data = (DataTable)data_antibiotik.DataSource;
bool isOk = database.SaveDataTable("table_antibiotik", data, null, null);
if (isOk)
{
LoadData();
MessageBox.Show("Berhasil Simpan");
}
else
{
MessageBox.Show("Gagal Simpan");
}
}
private void BSimpan_Click(object sender, EventArgs e)
{
SaveData();
}
}
}

Universitas Sumatera Utara

A-18

7.

Master Kriteria

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace MenentukanAntibiotik
{
public partial class MasterKriteria : Form
{
public MasterKriteria()
{
InitializeComponent();
}
private void MasterKriteria_Load(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data);
data_kriteria.DataSource = data;
}
private void SaveData()
{
Database database = new Database("CEConn");

Universitas Sumatera Utara

A-19

DataTable data = (DataTable)data_kriteria.DataSource;
bool isOk = database.SaveDataTable("table_kriteria", data, null, null);
if (isOk)
{
LoadData();
MessageBox.Show("Berhasil Simpan");
}
else
{
MessageBox.Show("Gagal Simpan");
}
}
private void BSimpan_Click(object sender, EventArgs e)
{
SaveData();
}
}
}

8.

Master Penyakit

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
namespace MenentukanAntibiotik
{
public partial class MasterPenyakit : Form
{
public MasterPenyakit()
{
InitializeComponent();
}

Universitas Sumatera Utara

A-20

private void MasterPenyakit_Load(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_penyakit ORDER BY NamaPenyakit
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data);
data_penyakit.DataSource = data;
}
private void SaveData()
{
Database database = new Database("CEConn");
DataTable data = (DataTable)data_penyakit.DataSource;
bool isOk = database.SaveDataTable("table_penyakit", data, null, null);
if (isOk)
{
LoadData();
MessageBox.Show("Berhasil Simpan");
}
else
{
MessageBox.Show("Gagal Simpan");
}
}
private void BSimpan_Click(object sender, EventArgs e)
{
SaveData();
}
}

Universitas Sumatera Utara

A-21

}
9.

Penilaian Antibiotik

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MenentukanAntibiotik
{
public partial class PenilaianAntibiotik : Form
{
public DataTable tableAntibiotik = new DataTable();
public PenilaianAntibiotik()
{
InitializeComponent();
}
private void PenilaianAntibiotik_Load(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
view_nilai_harga.DataSource = GetData("Harga");
view_nilai_dosis.DataSource = GetData("Dosis");
view_nilai_beratbadan.DataSource = GetData("Berat Badan");
tableAntibiotik = GetDataAntibiotik();
}
private DataTable GetData(String Kriteria)
{
Database database = new Database("CEConn");
DataTable data = new DataTable();

Universitas Sumatera Utara

A-22

List parameters = new List();
String query = "SELECT * FROM table_penilaian_antibiotik WHERE
Kriteria = @Kriteria ORDER BY AntibiotikA ASC, AntibiotikB ASC";
parameters = new List();
parameters.Add(new SqlCeParameter("Kriteria", Kriteria));
data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data);
return data;
}
private void SaveData(DataGridView dataview, String Kriteria)
{
Database database = new Database("CEConn");
DataTable data = (DataTable)dataview.DataSource;
foreach (DataRow row in data.Rows)
{
if (row.RowState == DataRowState.Deleted) continue;
row["Kriteria"] = Kriteria;
}
bool isOk = database.SaveDataTable("table_penilaian_antibiotik", data, null,
null);
if (isOk)
{
LoadData();
MessageBox.Show("Berhasil Simpan");
}
else
{
MessageBox.Show("Gagal Simpan");
}
}
private void BSimpan_Click(object sender, EventArgs e)
{
SaveData(view_nilai_harga, "Harga");
}
private void BSimpanBerat_Click(object sender, EventArgs e)
{

Universitas Sumatera Utara

A-23

SaveData(view_nilai_beratbadan, "Berat Badan");
}
private void BSimpanDosis_Click(object sender, EventArgs e)
{
SaveData(view_nilai_dosis, "Dosis");
}
private void BHitung_Click(object sender, EventArgs e)
{
HasilAHPAntibiotik formhasil = new HasilAHPAntibiotik();
DataTable DataBeratBadan = GetData("Berat Badan");
DataTable DataDosis = GetData("Dosis");
DataTable DataHarga = GetData("Harga");
formhasil.TableBeratBadan = DataBeratBadan;
formhasil.TableDosis = DataDosis;
formhasil.TableHarga = DataHarga;
formhasil.ShowDialog();
}
private bool Hitung(DataTable data, DataTable dataAntibiotik)
{
Dictionary result = new Dictionary();
DataTable matriks = GetMatriks(data, dataAntibiotik);
DataTable tableAkhir = new DataTable();
DataTable tableJumlahKolom = new DataTable();
tableAkhir = matriks.Copy();
double lamda = 0;
double nilaiCI = 0;
double nilaiCR = 0;
double NilaiIR = 1.43;
double JumlahAntibiotik = dataAntibiotik.Rows.Count;
result = Normalisasi(tableAkhir, dataAntibiotik);
tableAkhir = result["MatriksAkhir"];
tableJumlahKolom = result["MatriksJumlahKolom"];
foreach (DataRow row in tableAkhir.Rows)
{
String NamaAntibiotik = row["Antibiotik"].ToString();
if (NamaAntibiotik == "Total Kolom") continue;
lamda += (double)row["Eigen Max"];
}
nilaiCI = ((lamda) - JumlahAntibiotik) / (JumlahAntibiotik - 1);

Universitas Sumatera Utara

A-24

nilaiCR = nilaiCI / NilaiIR;
if (Math.Abs(nilaiCR) jumlah kriteria
NilaiCR = NilaiCI / IR;
// tampilkan hasil perhitungan
HasilAHPKriteria formhasil = new HasilAHPKriteria();
formhasil.TableAwal = matriks;
formhasil.TableKolom = result["MatriksJumlahKolom"];
formhasil.TableAkhir = result["MatriksAkhir"];
formhasil.CI = NilaiCI;
formhasil.CR = NilaiCR;
formhasil.IR = IR;
formhasil.perulangan = counter;
formhasil.ShowDialog();
}

private DataTable GetDataKriteria()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
return data;
}
private DataTable ConvertToMatrix(DataTable data)
{
DataTable matriks = new DataTable("Matriks");
DataTable data_kriteria = GetDataKriteria();
matriks.Columns.Add("Kriteria", typeof(string));
foreach (DataRow row in data_kriteria.Rows)
{

Universitas Sumatera Utara

A-31

matriks.Columns.Add(row["NamaKriteria"].ToString(), typeof(double));
}
DataRow new_row;
foreach (DataRow row in data_kriteria.Rows)
{
new_row = matriks.NewRow();
new_row["Kriteria"] = row["NamaKriteria"];
matriks.Rows.Add(new_row);
}
for (int i = 0; i < matriks.Rows.Count; i++)
{
for (int j = 1; j < matriks.Columns.Count; j++)
{
string column = matriks.Columns[j].ColumnName;
string row = matriks.Rows[i]["Kriteria"].ToString();
if (column == row)
{
matriks.Rows[i][j] = 1;
}
else
{
DataRow[] rows = data.Select("(KriteriaA = '" + column + "' AND
KriteriaB = '" + row + "')");
double nilai = 0;
string dominan = "";
if (rows.Length == 1)
{
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString();
}
else
{
rows = data.Select("(KriteriaB = '" + column + "' AND KriteriaA =
'" + row + "')");
if (rows.Length == 1)
{
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString();

Universitas Sumatera Utara

A-32

}
else
{
nilai = 0;
}
}
if (row == dominan)
{
matriks.Rows[i][j] = nilai;
}
else if (column == dominan)
{
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai;
}
else
{
matriks.Rows[i][j] = 0;
}
}
}
}
return matriks;
}
private Dictionary Normalisasi(DataTable data)
{
Dictionary result = new Dictionary();
DataTable matriks = new DataTable("Matriks");
DataTable data_kriteria = GetDataKriteria();
Dictionary total_kolom = new Dictionary();
foreach (DataRow kriteria in data_kriteria.Rows)
{
total_kolom.Add(kriteria["NamaKriteria"].ToString(), 0);
}
foreach (DataRow row in data.Rows)
{
foreach (DataRow kriteria in data_kriteria.Rows)
{
String NamaKriteria = kriteria["NamaKriteria"].ToString();

Universitas Sumatera Utara

A-33

total_kolom[NamaKriteria] += (double)row[NamaKriteria];
}
}
matriks = data.Copy();
DataRow new_row = matriks.NewRow();
new_row["Kriteria"] = "Total Kolom";
foreach (DataRow kriteria in data_kriteria.Rows)
{
String NamaKriteria = kriteria["NamaKriteria"].ToString();
new_row[NamaKriteria] = total_kolom[NamaKriteria];
}
matriks.Rows.Add(new_row);
foreach (DataRow row in data.Rows)
{
foreach (DataRow kriteria in data_kriteria.Rows)
{
String NamaKriteria = kriteria["NamaKriteria"].ToString();
row[NamaKriteria] = (double)row[NamaKriteria] /
total_kolom[NamaKriteria];
}
}
//hitung jumlah baris
Dictionary total_baris = new Dictionary();
foreach (DataRow kriteria in data_kriteria.Rows)
{
total_baris.Add(kriteria["NamaKriteria"].ToString(), 0);
}
foreach (DataRow row in data.Rows)
{
String NamaKriteria = row["Kriteria"].ToString();
if (NamaKriteria == "Total Kolom") continue;
for (int i = 1; i < data.Columns.Count; i++)
{
total_baris[NamaKriteria] += (double)row[i];
}
}
data.Columns.Add("Jumlah Baris", typeof(double));

Universitas Sumatera Utara

A-34

data.Columns.Add("Eigen Vector", typeof(double));
data.Columns.Add("Eigen Max", typeof(double));
foreach (DataRow row in data.Rows)
{
String NamaKriteria = row["Kriteria"].ToString();
if (NamaKriteria == "Total Kolom") continue;
row["Jumlah Baris"] = total_baris[NamaKriteria];
row["Eigen Vector"] = total_baris[NamaKriteria] /
data_kriteria.Rows.Count;
row["Eigen Max"] = (double)row["Eigen Vector"] *
total_kolom[NamaKriteria];
}
result.Add("MatriksJumlahKolom", matriks);
result.Add("MatriksAkhir", data);
return result;
}
}
}

11.

Penilaian Product

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.Diagnostics;
namespace MenentukanAntibiotik
{
public partial class PenilaianProduk : Form
{
DataTable DataKriteria = new DataTable();
DataTable DataAntibiotik = new DataTable();
DataTable TableData = new DataTable();

Universitas Sumatera Utara

A-35

DataTable TablePembobotan = new DataTable();
DataTable TableRanking = new DataTable();
public PenilaianProduk()
{
InitializeComponent();
}
private void PenilaianProduk_Load(object sender, EventArgs e)
{
DataKriteria = GetTableKriteria();
DataAntibiotik = GetTableAntibiotik();
TableData = GetSample(DataAntibiotik.Copy());
view_produk.DataSource = TableData;
}
private DataTable HitungRanking(DataTable sample)
{
sample.Columns.Add("Skor", typeof(double));
sample.Columns.Add("Ranking", typeof(double));
Dictionary bobot = new Dictionary();
foreach(DataRow rowSample in sample.Rows)
{
if (rowSample["NamaAntibiotik"].ToString() == "Bobot")
{
bobot.Add("Dosis", (double)rowSample["Dosis"]);
bobot.Add("Harga", (double)rowSample["Harga"]);
bobot.Add("Berat Badan", (double)rowSample["Berat Badan"]);
}
}
double totalSkor = 0;
foreach (DataRow rowSample in sample.Rows)
{
double skor = 0;
if (rowSample["NamaAntibiotik"].ToString() != "Bobot")
{
double nilaiDosis = (double)rowSample["Dosis"];
double nilaiHarga = (double)rowSample["Harga"];
double nilaiBeratBadan = (double)rowSample["Berat Badan"];
skor += Math.Pow(nilaiDosis, bobot["Dosis"]);

Universitas Sumatera Utara

A-36

skor += Math.Pow(nilaiHarga, bobot["Harga"]);
skor += Math.Pow(nilaiBeratBadan, bobot["Berat Badan"]);
}
totalSkor += skor;
if (rowSample["NamaAntibiotik"].ToString() == "Bobot")
{
rowSample["Skor"] = totalSkor;
}
else
{
rowSample["Skor"] = skor;
}
}
foreach (DataRow rowSample in sample.Rows)
{
if (rowSample["NamaAntibiotik"].ToString() == "Bobot")
continue;
double skor = (double)rowSample["Skor"] / totalSkor;
rowSample["Ranking"] = skor;
}
return sample;
}
private DataTable FixBobot(DataTable sample, DataTable dataKriteria)
{
double totalBobot = 0;
foreach(DataRow rowKriteria in dataKriteria.Rows)
{
totalBobot += (double)rowKriteria["Bobot"];
}
foreach(DataRow rowSample in sample.Rows)
{
if (rowSample["NamaAntibiotik"].ToString() == "Bobot")
{
rowSample["Dosis"] = (double)rowSample["Dosis"] / totalBobot;
rowSample["Harga"] = (double)rowSample["Harga"] / totalBobot;
rowSample["Berat Badan"] = (double)rowSample["Berat Badan"] /
totalBobot;
}

Universitas Sumatera Utara

A-37

}
return sample;
}
private DataTable GetSample(DataTable dataAntibiotik)
{
dataAntibiotik.Columns.Remove("Id");
dataAntibiotik.Columns.Remove("NamaPenyakit");
return dataAntibiotik;
}
private DataTable GetData(DataTable dataKriteria, DataTable dataAntibiotik)
{
dataAntibiotik.Columns.Remove("Id");
dataAntibiotik.Columns.Remove("NamaPenyakit");
DataRow new_row = dataAntibiotik.NewRow();
new_row["NamaAntibiotik"] = "Bobot";
foreach(DataRow rowKriteria in dataKriteria.Rows)
{
String namaKriteria = rowKriteria["NamaKriteria"].ToString();
double bobot = (double)rowKriteria["Bobot"];
new_row[namaKriteria] = bobot;
}
dataAntibiotik.Rows.Add(new_row);
return dataAntibiotik;
}
private DataTable GetTableKriteria()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria
ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
return data;

Universitas Sumatera Utara

A-38

}
private DataTable GetTableAntibiotik()
{
Database database = new Database("CEConn");
DataTable data = new DataTable();
List parameters = new List();
String query = "SELECT * FROM table_antibiotik ORDER BY
NamaAntibiotik ASC";
parameters = new List();
data = database.GetDataTable(query, parameters);
return data;
}
private void BHitung_Click(object sender, EventArgs e)
{
Stopwatch sw = new Stopwatch();
DataTable dataSample = GetData(DataKriteria.Copy(),
DataAntibiotik.Copy());
sw.Start();
TablePembobotan = FixBobot(dataSample, DataKriteria);
TableRanking = HitungRanking(TablePembobotan.Copy());
sw.Stop();
MessageBox.Show(
"Perhitungan selesai\n" +
"Tampilkan hasil perhitungan",
"Perhitungan",
MessageBoxButtons.OK);
// tampilkan hasil perhitungan
HasilWPAntibiotik formhasil = new HasilWPAntibiotik();
formhasil.TableData = TableData;
formhasil.TablePembobotan = TablePembobotan;
formhasil.TableRanking = TableRanking;
formhasil.ShowDialog();
}
}
}

Universitas Sumatera Utara