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)
{
}
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();
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;
{
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++; }
}
private Dictionary<string, double> ProsesAHP(DataTable data, string kriteria) {
Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); 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<string, double> consistency = new Dictionary<string, double>(); 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));
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; }
private DataTable GetDataAntibiotik() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";
parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;
}
private DataTable GetDataKriteria() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";
parameters = new List<SqlCeParameter>(); 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);
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; }
{
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }
else {
matriks.Rows[i][j] = 0; }
} } }
return matriks; }
private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)
{
Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");
DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;
Dictionary<string, double> total_kolom = new Dictionary<string, double>(); 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";
{
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<string, double> total_baris = new Dictionary<string, double>(); 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<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)
{
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<String, DataTable> datas = new Dictionary<string, DataTable>(); 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) {
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) {
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() {
}
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<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";
parameters = new List<SqlCeParameter>(); 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 {
} } }
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));
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() {
private void MasterAntibiotik_Load(object sender, EventArgs e) {
LoadData(); }
private void LoadData() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_antibiotik ORDER BY NamaPenyakit ASC, NamaAntibiotik ASC";
parameters = new List<SqlCeParameter>(); 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(); }
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<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";
parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);
data_kriteria.DataSource = data; }
private void SaveData() {
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() {
private void MasterPenyakit_Load(object sender, EventArgs e) {
LoadData(); }
private void LoadData() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_penyakit ORDER BY NamaPenyakit ASC";
parameters = new List<SqlCeParameter>(); 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(); }
}
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) {
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_penilaian_antibiotik WHERE Kriteria = @Kriteria ORDER BY AntibiotikA ASC, AntibiotikB ASC"; parameters = new List<SqlCeParameter>();
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"); }
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<string, DataTable> result = new Dictionary<string, DataTable>(); 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"];
}
nilaiCR = nilaiCI / NilaiIR; if (Math.Abs(nilaiCR) <= 0.1) return false;
return true; }
private DataTable GetDataAntibiotik() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";
parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;
}
private DataTable GetMatriks(DataTable data, DataTable dataAntibiotik) {
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);
}
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();
{
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) {
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }
else {
matriks.Rows[i][j] = 0; }
} }
return matriks; }
private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)
{
Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");
DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;
Dictionary<string, double> total_kolom = new Dictionary<string, double>(); 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) {
String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); new_row[namaAntibiotik] = total_kolom[namaAntibiotik]; }
newMatriks.Rows.Add(new_row);
foreach (DataRow antibiotik in dataAntibiotik.Rows) {
String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); row[namaAntibiotik] = (double)row[namaAntibiotik] /
total_kolom[namaAntibiotik]; }
}
//hitung jumlah baris
Dictionary<string, double> total_baris = new Dictionary<string, double>(); 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<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)
{
String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; row["Jumlah Baris"] = total_baris[namaAntibiotik];
row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik; row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik * total_kolom[namaAntibiotik];
}
return result; }
} }
10. Penilaian 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 PenilaianKriteria : Form {
public PenilaianKriteria() {
InitializeComponent(); }
private void PenilaianKriteria_Load(object sender, EventArgs e) {
LoadData(); }
private void LoadData() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_penilaian_kriteria ORDER BY KriteriaA ASC, KriteriaB ASC";
data = Utility.AutoNumberedTable(data); data_nilai.DataSource = data;
}
private void SaveData() {
Database database = new Database("CEConn"); DataTable data = (DataTable)data_nilai.DataSource;
bool isOk = database.SaveDataTable("table_penilaian_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(); }
private void BHitung_Click(object sender, EventArgs e) {
DataTable data = (DataTable)data_nilai.DataSource; DataTable matriks = ConvertToMatrix(data);
Dictionary<string, DataTable> result = new Dictionary<string,DataTable>(); DataTable TableAkhir = new DataTable();
TableAkhir = matriks.Copy();
double TotalEigen = 0; double NilaiCI = 0; double NilaiCR = 0; double IR = 0.58; Int32 counter = 0;
foreach (DataRow row in TableAkhir.Rows) {
String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; TotalEigen += (double)row["Eigen Max"]; }
NilaiCI = (TotalEigen - 3)/(3-1); // 3 ---> 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<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";
parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);
return data; }
private DataTable ConvertToMatrix(DataTable data) {
DataTable matriks = new DataTable("Matriks"); DataTable data_kriteria = GetDataKriteria();
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"];
} 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<string, DataTable> Normalisasi(DataTable data) {
Dictionary<string, DataTable> result = new Dictionary<string, DataTable>();
DataTable matriks = new DataTable("Matriks"); DataTable data_kriteria = GetDataKriteria();
Dictionary<string, double> total_kolom = new Dictionary<string, double>(); 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) {
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<string, double> total_baris = new Dictionary<string, double>(); 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("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 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<string, double> bobot = new Dictionary<string, double>(); 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(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;
}
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<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";
parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);
}
private DataTable GetTableAntibiotik() {
Database database = new Database("CEConn"); DataTable data = new DataTable();
List<SqlCeParameter> parameters = new List<SqlCeParameter>();
String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";
parameters = new List<SqlCeParameter>(); 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(); }