Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) Dan Profile Matching (Studi Kasus : SMA Santo Thomas 1 Medan )
Survei Penentuan Urutan Prioritas Kriteria Dalam
Menentukan Pemain Basket Terbaik
Oleh : Ivana Lisa br Sitepu
Mahasiswa S-1 Ilmu Komputer
Universitas Sumatera Utara
Identitas Responden
Nama
tanda tangan
NIM Fakultas :
Jenis Kelamin Laki-laki Perempuan
Petunjuk Pengisian
Berilah ta da eklish √ pada kolo skala ya g sesuai de ga pe dapat a da
Definisi Kode
1 Kedua kriteria yang sama penting (equal)
3 kriteria sedikit lebih penting (slightly) dari kriteria pembandingnya
5 kriteria yang lebih penting (strongly) dari kriteria pembandignya
7 kriteria yang sangat lebih penting (very strong) dari kriteria pembandingnya
9 kriteria yang mutlak lebih penting (extreme) dari kriteria pembandingnya
(2)
Contoh
Dalam memilih pemain basket, seberapa pentingkah :
Jika menurut Anda dribling lebih penting dibanding shooti g, aka A da dapat e eri ta da eklish √ pada kolo Skala 5 se elah kiri.
No
Kriteria Skala Kriteria Kriteria
A 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 B
1 Dribling shooting
atau sebaliknya ...
Jika menurut Anda shooting lebih penting di a di g dri li g, aka A da dapat e eri ta da eklish √
pada kolom Skala 5 sebelah kanan.
No
Kriteria Skala Kriteria Kriteria
A 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 B
(3)
Pertanyaan :
Dalam memilih sebuah pemain basket, menurut Anda seberapa pentingkah :
No
Kriteria Skala Kriteria Kriteria
A 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 B
1 Dribling Shooting
2 Dribling Passing
3 Dribling Kelincahan
No
Kriteria Skala Kriteria Kriteria
A 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 B
1 Shooting Passing
2 Shooting kelincahan
No
Kriteria Skala Kriteria Kriteria
A 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 B
(4)
LISTING PROGRAM 1. Listing Program 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 AHPPM {
publicpartialclassFormUtama : Form
{
public FormUtama() {
InitializeComponent(); }
privatevoid exitToolStripMenuItem_Click(object sender, EventArgs e) {
Application.Exit(); }
privatevoid FormUtama_Load(object sender, EventArgs e) {
profileMatchingToolStripMenuItem.Visible = false; aHPToolStripMenuItem.Visible = false;
}
privatevoid algoritmaProfileMatchingToolStripMenuItem_Click(object sender, EventArgs e) {
profileMatchingToolStripMenuItem.Visible = true; aHPToolStripMenuItem.Visible = false;
}
privatevoid algoritmaAHPToolStripMenuItem_Click(object sender, EventArgs e) {
profileMatchingToolStripMenuItem.Visible = false; aHPToolStripMenuItem.Visible = true;
}
privatevoid dataPemainToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_pemain == null || Program.form_pemain.IsDisposed) {
Program.form_pemain = newFormPemain(); }
Program.form_pemain.MdiParent = this;
Program.form_pemain.Show(); }
privatevoid kriteriaDribbleToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_aspek_dribbling == null || Program.form_aspek_dribbling.IsDisposed) {
Program.form_aspek_dribbling = newFormAspekDribbling(); }
Program.form_aspek_dribbling.MdiParent = this;
Program.form_aspek_dribbling.Show(); }
(5)
{
if (Program.form_aspek_shooting == null || Program.form_aspek_shooting.IsDisposed) {
Program.form_aspek_shooting = newFormAspekShooting(); }
Program.form_aspek_shooting.MdiParent = this;
Program.form_aspek_shooting.Show(); }
privatevoid kriteriaPassingToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_aspek_passing == null || Program.form_aspek_passing.IsDisposed) {
Program.form_aspek_passing = newFormAspekPassing(); }
Program.form_aspek_passing.MdiParent = this;
Program.form_aspek_passing.Show(); }
privatevoid aspekKelincahanToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_aspek_kelincahan == null || Program.form_aspek_kelincahan.IsDisposed) {
Program.form_aspek_kelincahan = newFormAspekKelincahan(); }
Program.form_aspek_kelincahan.MdiParent = this;
Program.form_aspek_kelincahan.Show(); }
privatevoid penilaianToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_penilaian == null || Program.form_penilaian.IsDisposed) {
Program.form_penilaian = newFormPenilaian(); }
Program.form_penilaian.MdiParent = this;
Program.form_penilaian.Show(); }
privatevoid perhitunganToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_perhitungan == null || Program.form_perhitungan.IsDisposed) {
Program.form_perhitungan = newFormPerhitungan(); }
Program.form_perhitungan.MdiParent = this;
Program.form_perhitungan.Show(); }
privatevoid toolStripMenuItem1_Click(object sender, EventArgs e) {
if (Program.form_master_kriteria == null || Program.form_master_kriteria.IsDisposed) {
Program.form_master_kriteria = newFormMasterKriteria(); }
Program.form_master_kriteria.MdiParent = this;
Program.form_master_kriteria.Show(); }
privatevoid dataPemainToolStripMenuItem1_Click(object sender, EventArgs e) {
if (Program.form_pemain == null || Program.form_pemain.IsDisposed) {
Program.form_pemain = newFormPemain(); }
(6)
Program.form_pemain.Show(); }
privatevoid dataKriteriaToolStripMenuItem1_Click(object sender, EventArgs e) {
if (Program.form_master_kriteria == null || Program.form_master_kriteria.IsDisposed) {
Program.form_master_kriteria = newFormMasterKriteria(); }
Program.form_master_kriteria.MdiParent = this;
Program.form_master_kriteria.Show(); }
privatevoid perhitunganKriteriaToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_perhitungan_kriteria == null || Program.form_perhitungan_kriteria.IsDisposed) {
Program.form_perhitungan_kriteria = newFormPerhitunganKriteria(); }
Program.form_perhitungan_kriteria.MdiParent = this;
Program.form_perhitungan_kriteria.Show(); }
privatevoid penilaianKriteriaToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_penilaian_kriteria == null || Program.form_penilaian_kriteria.IsDisposed) {
Program.form_penilaian_kriteria = newFormPenilaianKriteria(); }
Program.form_penilaian_kriteria.MdiParent = this;
Program.form_penilaian_kriteria.Show(); }
privatevoid penilaianPemainToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_penilaain_pemain == null || Program.form_penilaain_pemain.IsDisposed) {
Program.form_penilaain_pemain = newFormPenilaianPemain(); }
Program.form_penilaain_pemain.MdiParent = this;
Program.form_penilaain_pemain.Show(); }
privatevoid perhitunganPemainToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_perhitungan_pemain == null || Program.form_perhitungan_pemain.IsDisposed) {
Program.form_perhitungan_pemain = newFormPerhitunganPemain(); }
Program.form_perhitungan_pemain.MdiParent = this;
Program.form_perhitungan_pemain.Show(); }
privatevoid tentangToolStripMenuItem_Click(object sender, EventArgs e) {
if (Program.form_tentang == null || Program.form_tentang.IsDisposed) {
Program.form_tentang = newFormAbout(); }
Program.form_tentang.ShowDialog(); }
} }
(7)
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 AHPPM {
publicpartialclassFormPemain : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormPemain() {
InitializeComponent(); }
privatevoid FormPemain_Load(object sender, EventArgs e) {
query = "select * from table_pemain order by nama ASC"; data = database.GetDataTable(query, null);
data = Utility.AutoNumberedTable(data); dataview_pemain.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
data = (DataTable)dataview_pemain.DataSource;
bool isSuccess = database.SaveDataTable("table_pemain", data, null, null); if (isSuccess)
{
query = "select * from table_pemain order by nama ASC"; data = database.GetDataTable(query, null);
data = Utility.AutoNumberedTable(data); dataview_pemain.DataSource = data;
MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); } } }
3. Listing Program Form Master Kriteria using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
(8)
using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlServerCe; namespace AHPPM {
publicpartialclassFormMasterKriteria : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormMasterKriteria() {
InitializeComponent(); }
privatevoid FormMasterKriteria_Load(object sender, EventArgs e) {
query = "select * from table_master_kriteria order by kriteria ASC"; parameters = newList<SqlCeParameter>();
data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
data = (DataTable)dataview_kriteria.DataSource;
bool isSuccess = database.SaveDataTable("table_master_kriteria", data, null, null); if (isSuccess)
{
query = "select * from table_master_kriteria order by kriteria ASC"; parameters = newList<SqlCeParameter>();
data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data;
MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); } } }
4. Listing Program Form Aspek Dribling using System;
(9)
using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlServerCe; namespace AHPPM {
publicpartialclassFormAspekDribbling : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormAspekDribbling() {
InitializeComponent(); }
privatevoid FormAspekDribbling_Load(object sender, EventArgs e) {
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Dribble")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
data = (DataTable)dataview_kriteria.DataSource; foreach(DataRow row in data.Rows)
{
if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = "Dribble";
}
bool isSuccess = database.SaveDataTable("table_kriteria", data, null, null); if (isSuccess)
{
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Dribble")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data;
MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
(10)
} } }
5. Listing Program Form Aspek Kelincahan 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 AHPPM {
publicpartialclassFormAspekKelincahan : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormAspekKelincahan() {
InitializeComponent(); }
privatevoid FormAspekKelincahan_Load(object sender, EventArgs e) {
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Kelincahan")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
data = (DataTable)dataview_kriteria.DataSource; foreach (DataRow row in data.Rows)
{
if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = "Kelincahan";
}
bool isSuccess = database.SaveDataTable("table_kriteria", data, null, null); if (isSuccess)
{
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Kelincahan")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data;
MessageBox.Show("Success"); }
(11)
else {
MessageBox.Show("Failed"); }
}
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); }
privatevoid dataview_kriteria_CellContentClick(object sender, DataGridViewCellEventArgs e) {
} } }
6. Listing Program Form Aspek Passing 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 AHPPM {
publicpartialclassFormAspekPassing : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormAspekPassing() {
InitializeComponent(); }
privatevoid FormAspekPassing_Load(object sender, EventArgs e) {
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Passing")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
data = (DataTable)dataview_kriteria.DataSource; foreach (DataRow row in data.Rows)
{
if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = "Passing";
(12)
bool isSuccess = database.SaveDataTable("table_kriteria", data, null, null); if (isSuccess)
{
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Passing")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data;
MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); } } }
7. Listing Program Form Aspek Shooting 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 AHPPM {
publicpartialclassFormAspekShooting : Form
{
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormAspekShooting() {
InitializeComponent(); }
privatevoid FormAspekShooting_Load(object sender, EventArgs e) {
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Shooting")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
(13)
database = newDatabase("CEConn");
data = (DataTable)dataview_kriteria.DataSource; foreach (DataRow row in data.Rows)
{
if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = "Shooting";
}
bool isSuccess = database.SaveDataTable("table_kriteria", data, null, null); if (isSuccess)
{
query = "select * from table_kriteria where Kriteria = @Kriteria order by kriteria ASC, subkriteriaID ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("Kriteria", "Shooting")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kriteria.DataSource = data;
MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); }
privatevoid label1_Click(object sender, EventArgs e) {
} } }
8. Listing Program Form 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 AHPPM {
publicpartialclassFormPenilaianKriteria : Form
{
conststring JenisPenilaian = "Kriteria";
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormPenilaianKriteria() {
(14)
}
privatevoid FormPenilaianKriteria_Load(object sender, EventArgs e) {
//loading data penilaian
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY Sumber ASC, BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian)); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_nilai.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) {
database = newDatabase("CEConn");
DataTable data_penilaian = (DataTable)dataview_nilai.DataSource; foreach (DataRow row in data_penilaian.Rows)
{
if (row.RowState == DataRowState.Deleted) continue; row["JenisPenilaian"] = JenisPenilaian; }
bool isSuccess = database.SaveDataTable("table_penilaian_ahp", data_penilaian, null, null); if (isSuccess)
{
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY Sumber ASC, BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian)); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_nilai.DataSource = data;
MessageBox.Show("Success Saving table Penilaian"); }
else {
MessageBox.Show("Failed Saving table Penilaian"); }
}
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); } } }
9. Listing Program Form Penilaian Pemain 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 AHPPM {
(15)
{
conststring JenisPenilaian = "Pemain";
Database database = newDatabase("CEConn");
DataTable data = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>(); string query = "";
public FormPenilaianPemain() {
InitializeComponent(); }
privatevoid FormPenilaianPemain_Load(object sender, EventArgs e) {
//loading data penilaian dribble
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian + "Dribble")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_dribble.DataSource = data;
//loading data penilaian passing
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian + "Passing")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_passing.DataSource = data;
//loading data penilaian shooting
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian + "Shooting")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_shooting.DataSource = data;
//loading data penilaian kelincahan
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian + "Kelincahan")); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview_kelincahan.DataSource = data; }
privatevoid BtnSave_Click(object sender, EventArgs e) { SaveDribble("Dribble", dataview_dribble); SaveDribble("Passing", dataview_passing); SaveDribble("Shooting", dataview_shooting); SaveDribble("Kelincahan", dataview_kelincahan); }
privatevoid SaveDribble(string penilaian, DataGridView dataview) {
database = newDatabase("CEConn");
DataTable data_penilaian = (DataTable)dataview.DataSource; foreach (DataRow row in data_penilaian.Rows)
(16)
if (row.RowState == DataRowState.Deleted) continue; row["JenisPenilaian"] = "Pemain" + penilaian; }
bool isSuccess = database.SaveDataTable("table_penilaian_ahp", data_penilaian, null, null); if (isSuccess)
{
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", "Pemain" + penilaian)); data = database.GetDataTable(query, parameters);
data = Utility.AutoNumberedTable(data); dataview.DataSource = data;
MessageBox.Show("Success Saving table Penilaian " + penilaian); }
else {
MessageBox.Show("Failed Saving table Penilaian " + penilaian); }
}
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); } } }
10. Listing Program Form Perhitungan 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; using System.Diagnostics; namespace AHPPM {
publicpartialclassFormPerhitunganKriteria : Form
{
conststring JenisPenilaian = "Kriteria"; constdouble IRValue = 0.9; // 4 kriteria Database database = newDatabase("CEConn");
DataTable Data = newDataTable();
DataTable Data_kriteria = newDataTable();
DataTable DistinctSumber = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>();
Stopwatch stopwatch = newStopwatch(); string query = "";
public FormPerhitunganKriteria() {
InitializeComponent(); }
privatevoid FormPerhitunganKriteria_Load(object sender, EventArgs e) {
LoadData(); }
(17)
privatevoid LoadData() {
//loading data penilaian
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY Sumber ASC, BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian)); Data = database.GetDataTable(query, parameters);
//loading data kriteria
query = "select * from table_master_kriteria ORDER BY Kriteria ASC"; parameters = newList<SqlCeParameter>();
Data_kriteria = database.GetDataTable(query, parameters);
DataView dataview = newDataView(Data);
DistinctSumber = dataview.ToTable(true, "Sumber"); GenerateView(DistinctSumber);
DataTable table_consolidated = newDataTable(); foreach (DataRow rowSumber in DistinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
Control[] ctls = tabData.Controls.Find("dataview_data_" + sumber, true); if (ctls.Length > 0)
{
dataview = newDataView(Data);
dataview.RowFilter = "Sumber = '" + sumber + "'";
DataTable table = dataview.ToTable(); table.Columns.Remove("Id");
((DataGridView)ctls[0]).DataSource = table;
ctls = tabData.Controls.Find("dataview_matriks_" + sumber, true); if (ctls.Length > 0)
{
DataTable table_matriks = ConvertToMatriks(table, Data_kriteria); ((DataGridView)ctls[0]).DataSource = table_matriks; if (table_consolidated.Rows.Count <= 0)
{
table_consolidated = table_matriks.Copy(); }
} } }
if (DistinctSumber.Rows.Count > 1) {
// init table consolidated
for (int i = 0; i < table_consolidated.Rows.Count; i++) {
for (int j = 1; j < table_consolidated.Columns.Count; j++) {
table_consolidated.Rows[i][j] = i + 1 == j ? 1 : 0; }
}
// hitung consolidated matriks
foreach (DataRow rowSumber in DistinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
Control[] ctls = tabData.Controls.Find("dataview_matriks_" + sumber, true); if (ctls.Length > 0)
{
DataTable table = (DataTable)((DataGridView)ctls[0]).DataSource;
table_consolidated = CalculateData(table_consolidated, table); }
(18)
}
table_consolidated = CalculatePair(table_consolidated);
Control[] ctlconsol = tabData.Controls.Find("dataview_matriks_Consolidated", true); if (ctlconsol.Length > 0)
{
((DataGridView)ctlconsol[0]).DataSource = table_consolidated; }
} }
privateDataTable CalculateData(DataTable data, DataTable dataAdd) {
for (int i = 0; i < data.Rows.Count; i++) {
for (int j = i + 1; j < data.Columns.Count ; j++) {
double d = (double)dataAdd.Rows[i][j];
data.Rows[i][j] = (double)data.Rows[i][j] + ( d == 0 ? 0 : Math.Log(d)); }
} return data; }
privateDataTable CalculatePair(DataTable data) {
for (int i = 0; i < data.Rows.Count; i++) {
for (int j = 0; j <= i; j++) {
if (i == j) continue;
double dup = (double)data.Rows[j][i + 1] / (double)DistinctSumber.Rows.Count; dup = Math.Exp(dup);
data.Rows[j][i + 1] = dup; data.Rows[i][j+1] = 1 / dup; }
} return data; }
privatevoid GenerateView(DataTable distinctSumber) {
foreach (DataRow rowSumber in distinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
TabPage new_page = newTabPage(sumber);
TabControl new_tab;
if (distinctSumber.Rows.Count > 1)
new_tab = GenerateDetail2(sumber); else
new_tab = GenerateDetail(sumber); new_page.Controls.Add(new_tab); tabData.Controls.Add(new_page); }
if (distinctSumber.Rows.Count > 1) {
TabPage new_page2 = newTabPage("Consolidated");
TabControl new_tab2 = GenerateDetail3("Consolidated"); new_page2.Controls.Add(new_tab2);
tabData.Controls.Add(new_page2); }
}
(19)
{
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_data = newTabPage("Data");
TabPage new_page_matriks = newTabPage("Matriks");
TabPage new_page_hasil = newTabPage("Hasil");
TabPage new_page_consistency = newTabPage("Consistency");
DataGridView new_view_data = newDataGridView();
DataGridView new_view_matriks = newDataGridView();
DataGridView new_view_hasil = newDataGridView();
DataGridView new_view_consistency = newDataGridView(); new_view_data.Dock = DockStyle.Fill;
new_view_matriks.Dock = DockStyle.Fill; new_view_hasil.Dock = DockStyle.Fill; new_view_consistency.Dock = DockStyle.Fill;
new_view_data.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_hasil.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_consistency.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_data.Name = "dataview_data_" + name;
new_view_matriks.Name = "dataview_matriks_" + name; new_view_hasil.Name = "dataview_hasil_" + name;
new_view_consistency.Name = "dataview_consistency_" + name; new_page_data.Controls.Add(new_view_data); new_page_matriks.Controls.Add(new_view_matriks); new_page_hasil.Controls.Add(new_view_hasil); new_page_consistency.Controls.Add(new_view_consistency); new_tab.Controls.Add(new_page_data); new_tab.Controls.Add(new_page_matriks); new_tab.Controls.Add(new_page_hasil); new_tab.Controls.Add(new_page_consistency); return new_tab; }
privateTabControl GenerateDetail2(string name) {
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_data = newTabPage("Data");
TabPage new_page_matriks = newTabPage("Matriks");
DataGridView new_view_data = newDataGridView();
DataGridView new_view_matriks = newDataGridView(); new_view_data.Dock = DockStyle.Fill;
new_view_matriks.Dock = DockStyle.Fill;
new_view_data.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_data.Name = "dataview_data_" + name;
new_view_matriks.Name = "dataview_matriks_" + name; new_page_data.Controls.Add(new_view_data);
(20)
new_tab.Controls.Add(new_page_data); new_tab.Controls.Add(new_page_matriks); return new_tab;
}
privateTabControl GenerateDetail3(string name) {
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_matriks = newTabPage("Matriks");
TabPage new_page_hasil = newTabPage("Hasil");
TabPage new_page_consistency = newTabPage("Consistency");
DataGridView new_view_matriks = newDataGridView();
DataGridView new_view_hasil = newDataGridView();
DataGridView new_view_consistency = newDataGridView(); new_view_matriks.Dock = DockStyle.Fill;
new_view_hasil.Dock = DockStyle.Fill; new_view_consistency.Dock = DockStyle.Fill;
new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_hasil.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_consistency.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.Name = "dataview_matriks_" + name;
new_view_hasil.Name = "dataview_hasil_" + name;
new_view_consistency.Name = "dataview_consistency_" + name; new_page_matriks.Controls.Add(new_view_matriks); new_page_hasil.Controls.Add(new_view_hasil); new_page_consistency.Controls.Add(new_view_consistency); new_tab.Controls.Add(new_page_matriks); new_tab.Controls.Add(new_page_hasil); new_tab.Controls.Add(new_page_consistency); return new_tab; }
privateDictionary<string, DataTable> HitungAHP(DataTable data_nilai_matriks, DataTable data_kriteria) {
Dictionary<string, DataTable> hasil_hitung = newDictionary<string, DataTable>();
DataTable data_matriks = newDataTable("Matriks");
DataTable data_jumlah_kolom = newDataTable("TableJumlahKolom");
DataTable data_akhir = newDataTable("TableAkhir"); double lamda = 0;
double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = IRValue;
double JumlahKriteria = data_kriteria.Rows.Count; data_jumlah_kolom = data_nilai_matriks.Copy(); data_matriks = data_nilai_matriks.Copy();
// hitung total kolom dan baris
Dictionary<string, double> total_kolom = newDictionary<string, double>();
Dictionary<string, double> total_baris = newDictionary<string, double>(); foreach (DataRow kriteria in data_kriteria.Rows)
{
total_kolom.Add(kriteria["Kriteria"].ToString(), 0); total_baris.Add(kriteria["Kriteria"].ToString(), 0); }
(21)
foreach (DataRow row in data_matriks.Rows) {
foreach (DataRow kriteria in data_kriteria.Rows) {
String namakriteria = kriteria["Kriteria"].ToString();
total_kolom[namakriteria] += (double)row[namakriteria]; }
}
DataRow new_row = data_jumlah_kolom.NewRow(); new_row["Kriteria"] = "Total Kolom"; foreach (DataRow kriteria in data_kriteria.Rows) {
String namakriteria = kriteria["Kriteria"].ToString();
new_row[namakriteria] = total_kolom[namakriteria]; }
data_jumlah_kolom.Rows.Add(new_row); foreach (DataRow row in data_matriks.Rows) {
foreach (DataRow kriteria in data_kriteria.Rows) {
String namakriteria = kriteria["Kriteria"].ToString();
row[namakriteria] = (double)row[namakriteria] / total_kolom[namakriteria]; }
}
foreach (DataRow row in data_matriks.Rows) {
String namakriteria = row["Kriteria"].ToString(); if (namakriteria == "Total Kolom") continue; for (int i = 1; i < data_matriks.Columns.Count; i++) {
total_baris[namakriteria] += (double)row[i]; }
}
data_matriks.Columns.Add("Total Baris", typeof(double)); data_matriks.Columns.Add("Eigen Vector", typeof(double)); data_matriks.Columns.Add("Eigen Max", typeof(double));
Dictionary<string, double> eigenVector = newDictionary<string, double>(); foreach (DataRow row in data_matriks.Rows)
{
String namakriteria = row["Kriteria"].ToString(); if (namakriteria == "Total Kolom") continue;
row["Total Baris"] = total_baris[namakriteria];
row["Eigen Vector"] = total_baris[namakriteria] / JumlahKriteria;
row["Eigen Max"] = total_baris[namakriteria] / JumlahKriteria * total_kolom[namakriteria]; }
foreach (DataRow row in data_matriks.Rows) {
String namakriteria = row["Kriteria"].ToString(); if (namakriteria == "Total Kolom") continue; lamda += (double)row["Eigen Max"]; }
nilaiCI = ((lamda) - JumlahKriteria) / (JumlahKriteria - 1); nilaiCR = nilaiCI / NilaiIR;
data_akhir.Columns.Add("Desc", typeof(string)); data_akhir.Columns.Add("Value", typeof(double)); new_row = data_akhir.NewRow();
(22)
new_row["Value"] = lamda; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai CI"; new_row["Value"] = nilaiCI; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai IR"; new_row["Value"] = NilaiIR; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai CR (CI/IR)"; new_row["Value"] = nilaiCR;
data_akhir.Rows.Add(new_row); hasil_hitung.Add("TableJumlahKolom", data_jumlah_kolom); hasil_hitung.Add("Matriks", data_matriks); hasil_hitung.Add("TableAkhir", data_akhir); return hasil_hitung; }
privateDataTable ConvertToMatriks(DataTable data_nilai, DataTable data_kriteria) {
DataTable matriks = newDataTable("Matriks"); matriks.Columns.Add("Kriteria", typeof(string)); foreach (DataRow row in data_kriteria.Rows)
{
matriks.Columns.Add(row["Kriteria"].ToString(), typeof(double)); }
foreach (DataRow row in data_kriteria.Rows) {
DataRow new_row = matriks.NewRow(); new_row["Kriteria"] = row["Kriteria"]; 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_nilai.Select("(BandingA = '" + column + "' AND BandingB = '" + row + "')"); double nilai = 0;
string dominan = ""; if (rows.Length == 1) {
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString(); }
else
{
(23)
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; }
elseif (column == dominan) {
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }
else
{
matriks.Rows[i][j] = 0; } } } } return matriks; }
privatevoid BtnProses_Click(object sender, EventArgs e) {
stopwatch = newStopwatch(); stopwatch.Start();
Hitung(); stopwatch.Stop();
MessageBox.Show("Calculating is Finish. (elapsed time : " + stopwatch.ElapsedMilliseconds + " ms)"); }
privatevoid Hitung() {
DataView dataview = newDataView(Data);
DataTable distinctSumber = dataview.ToTable(true, "Sumber");
Dictionary<string, DataTable> result = newDictionary<string, DataTable>(); string sumber = "Consolidated";
if (distinctSumber.Rows.Count <= 1) {
sumber = distinctSumber.Rows[0]["Sumber"].ToString(); }
Control[] ctl02 = tabData.Controls.Find("dataview_matriks_" + sumber, true);
Control[] ctl03 = tabData.Controls.Find("dataview_hasil_" + sumber, true);
Control[] ctl04 = tabData.Controls.Find("dataview_consistency_" + sumber, true); if (ctl02.Length > 0)
{
DataTable table = (DataTable)((DataGridView)ctl02[0]).DataSource; result = HitungAHP(table, Data_kriteria);
DataTable data_jumlah_kolom = result["TableJumlahKolom"];
DataTable data_matriks = result["Matriks"];
DataTable data_akhir = result["TableAkhir"]; if (ctl02.Length > 0)
(24)
((DataGridView)ctl02[0]).DataSource = data_jumlah_kolom; }
if (ctl03.Length > 0) {
((DataGridView)ctl03[0]).DataSource = data_matriks; }
if (ctl04.Length > 0) {
((DataGridView)ctl04[0]).DataSource = data_akhir; }
} }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); }
privatevoid buttonRefresh_Click(object sender, EventArgs e) {
LoadData(); }
privatevoid BSimpan_Click(object sender, EventArgs e) {
string sumber = "Consolidated"; if (DistinctSumber.Rows.Count <= 1) {
sumber = DistinctSumber.Rows[0]["Sumber"].ToString(); }
Control[] ctl03 = tabData.Controls.Find("dataview_hasil_" + sumber, true); foreach(DataRow kriteria in Data_kriteria.Rows)
{
if (ctl03.Length > 0) {
DataTable table = (DataTable)((DataGridView)ctl03[0]).DataSource; string namakriteria = kriteria["Kriteria"].ToString();
DataRow[] rows = table.Select("Kriteria = '" + namakriteria +"'"); if (rows.Length > 0)
{
kriteria["EigenVector"] = rows[0]["Eigen Vector"]; }
} }
bool isSuccess = database.SaveDataTable("table_master_kriteria", Data_kriteria, null, null); if (isSuccess) { MessageBox.Show("Success"); } else { MessageBox.Show("Failed"); } } } }
11. Listing Program Form Perhitungan Pemain using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
(25)
using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlServerCe; using System.Diagnostics; namespace AHPPM {
publicpartialclassFormPerhitunganPemain : Form
{
conststring JenisPenilaian = "Pemain"; constdouble IRValue = 0.9; // 4 kriteria Database database = newDatabase("CEConn");
DataTable Data_pemain = newDataTable();
DataTable Data_kriteria = newDataTable();
List<SqlCeParameter> parameters = newList<SqlCeParameter>();
Stopwatch stopwatch = newStopwatch(); string query = "";
public FormPerhitunganPemain() {
InitializeComponent(); }
privatevoid ButtonClose_Click(object sender, EventArgs e) {
this.Close(); }
privatevoid FormPerhitunganPemain_Load(object sender, EventArgs e) {
LoadData("Dribble"); LoadData("Passing"); LoadData("Shooting"); LoadData("Kelincahan");
//loading data kriteria
query = "select * from table_master_kriteria ORDER BY Kriteria ASC"; parameters = newList<SqlCeParameter>();
Data_kriteria = database.GetDataTable(query, parameters); }
privateDataTable GetDataPenilaian(string kriteria) {
//loading data penilaian
query = "select * from table_penilaian_ahp where JenisPenilaian = @JenisPenilaian ORDER BY Sumber ASC, BandingA ASC, BandingB ASC";
parameters = newList<SqlCeParameter>();
parameters.Add(newSqlCeParameter("JenisPenilaian", JenisPenilaian + kriteria));
DataTable Data = database.GetDataTable(query, parameters); return Data;
}
privatevoid LoadData(string kriteria) {
DataTable Data = GetDataPenilaian(kriteria);
//loading data pemain
query = "select * from table_pemain ORDER BY Nama ASC"; parameters = newList<SqlCeParameter>();
Data_pemain = database.GetDataTable(query, parameters);
DataView dataview = newDataView(Data);
(26)
Control[] tabs = tabData.Controls.Find("tab" + kriteria, true); if (tabs.Length > 0)
{
tabs[0].Controls.Add(GenerateView(DistinctSumber, kriteria)); }
DataTable table_consolidated = newDataTable(); foreach (DataRow rowSumber in DistinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
Control[] ctls = tabData.Controls.Find("dataview_data_" + kriteria + sumber, true); if (ctls.Length > 0)
{
dataview = newDataView(Data);
dataview.RowFilter = "Sumber = '" + sumber + "'";
DataTable table = dataview.ToTable(); table.Columns.Remove("Id");
((DataGridView)ctls[0]).DataSource = table;
ctls = tabData.Controls.Find("dataview_matriks_" + kriteria + sumber, true); if (ctls.Length > 0)
{
DataTable table_matriks = ConvertToMatriks(table, Data_pemain); ((DataGridView)ctls[0]).DataSource = table_matriks; if (table_consolidated.Rows.Count <= 0)
{
table_consolidated = table_matriks.Copy(); }
} } }
if (DistinctSumber.Rows.Count > 1) {
// init table consolidated
for (int i = 0; i < table_consolidated.Rows.Count; i++) {
for (int j = 1; j < table_consolidated.Columns.Count; j++) {
table_consolidated.Rows[i][j] = i + 1 == j ? 1 : 0; }
}
// hitung consolidated matriks
foreach (DataRow rowSumber in DistinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
Control[] ctls = tabData.Controls.Find("dataview_matriks_" + kriteria + sumber, true); if (ctls.Length > 0)
{
DataTable table = (DataTable)((DataGridView)ctls[0]).DataSource;
table_consolidated = CalculateData(table_consolidated, table); }
}
table_consolidated = CalculatePair(table_consolidated, DistinctSumber.Rows.Count);
Control[] ctlconsol = tabData.Controls.Find("dataview_matriks_" + kriteria + "Consolidated", true); if (ctlconsol.Length > 0)
{
((DataGridView)ctlconsol[0]).DataSource = table_consolidated; }
} }
(27)
privateDataTable CalculateData(DataTable data, DataTable dataAdd) {
for (int i = 0; i < data.Rows.Count; i++) {
for (int j = i + 1; j < data.Columns.Count; j++) {
double d = (double)dataAdd.Rows[i][j];
data.Rows[i][j] = (double)data.Rows[i][j] + (d == 0 ? 0 : Math.Log(d)); }
} return data; }
privateDataTable CalculatePair(DataTable data, Int32 numberParticipant) {
for (int i = 0; i < data.Rows.Count; i++) {
for (int j = 0; j <= i; j++) {
if (i == j) continue;
double dup = (double)data.Rows[j][i + 1] / (double)numberParticipant; dup = Math.Exp(dup);
data.Rows[j][i + 1] = dup; data.Rows[i][j + 1] = 1 / dup; }
} return data; }
privateControl GenerateView(DataTable distinctSumber, string kriteria) {
TabControl newTab = newTabControl();
foreach (DataRow rowSumber in distinctSumber.Rows) {
string sumber = rowSumber["Sumber"].ToString();
TabPage new_page = newTabPage(sumber);
TabControl new_tab;
if (distinctSumber.Rows.Count > 1)
new_tab = GenerateDetail2(kriteria + sumber); else
new_tab = GenerateDetail(kriteria + sumber); new_page.Controls.Add(new_tab);
newTab.Controls.Add(new_page); }
if (distinctSumber.Rows.Count > 1) {
TabPage new_page2 = newTabPage("Consolidated");
TabControl new_tab2 = GenerateDetail3(kriteria + "Consolidated"); new_page2.Controls.Add(new_tab2);
newTab.Controls.Add(new_page2); }
newTab.Dock = DockStyle.Fill; return newTab;
}
privateTabControl GenerateDetail2(string name) {
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_data = newTabPage("Data");
(28)
DataGridView new_view_data = newDataGridView();
DataGridView new_view_matriks = newDataGridView(); new_view_data.Dock = DockStyle.Fill;
new_view_matriks.Dock = DockStyle.Fill;
new_view_data.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_data.Name = "dataview_data_" + name;
new_view_matriks.Name = "dataview_matriks_" + name; new_page_data.Controls.Add(new_view_data); new_page_matriks.Controls.Add(new_view_matriks); new_tab.Controls.Add(new_page_data); new_tab.Controls.Add(new_page_matriks); return new_tab; }
privateTabControl GenerateDetail3(string name) {
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_matriks = newTabPage("Matriks");
TabPage new_page_hasil = newTabPage("Hasil");
TabPage new_page_ranking = newTabPage("Ranking");
TabPage new_page_consistency = newTabPage("Consistency");
DataGridView new_view_matriks = newDataGridView();
DataGridView new_view_hasil = newDataGridView();
DataGridView new_view_page_ranking = newDataGridView();
DataGridView new_view_consistency = newDataGridView(); new_view_matriks.Dock = DockStyle.Fill;
new_view_hasil.Dock = DockStyle.Fill; new_view_page_ranking.Dock = DockStyle.Fill; new_view_consistency.Dock = DockStyle.Fill;
new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_hasil.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_page_ranking.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_consistency.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.Name = "dataview_matriks_" + name;
new_view_hasil.Name = "dataview_hasil_" + name; new_view_page_ranking.Name = "dataview_hasil_" + name; new_view_consistency.Name = "dataview_consistency_" + name; new_page_matriks.Controls.Add(new_view_matriks); new_page_hasil.Controls.Add(new_view_hasil); new_page_ranking.Controls.Add(new_view_hasil); new_page_consistency.Controls.Add(new_view_consistency); new_tab.Controls.Add(new_page_matriks); new_tab.Controls.Add(new_page_hasil); new_tab.Controls.Add(new_page_ranking); new_tab.Controls.Add(new_page_consistency); return new_tab; }
(29)
privateTabControl GenerateDetail(string name) {
TabControl new_tab = newTabControl(); new_tab.Name = "Tab" + name; new_tab.Dock = DockStyle.Fill;
TabPage new_page_data = newTabPage("Data");
TabPage new_page_matriks = newTabPage("Matriks");
TabPage new_page_hasil = newTabPage("Hasil");
TabPage new_page_consistency = newTabPage("Consistency");
DataGridView new_view_data = newDataGridView();
DataGridView new_view_matriks = newDataGridView();
DataGridView new_view_hasil = newDataGridView();
DataGridView new_view_consistency = newDataGridView(); new_view_data.Dock = DockStyle.Fill;
new_view_matriks.Dock = DockStyle.Fill; new_view_hasil.Dock = DockStyle.Fill; new_view_consistency.Dock = DockStyle.Fill;
new_view_data.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_matriks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_hasil.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_consistency.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; new_view_data.Name = "dataview_data_" + name;
new_view_matriks.Name = "dataview_matriks_" + name; new_view_hasil.Name = "dataview_hasil_" + name;
new_view_consistency.Name = "dataview_consistency_" + name; new_page_data.Controls.Add(new_view_data); new_page_matriks.Controls.Add(new_view_matriks); new_page_hasil.Controls.Add(new_view_hasil); new_page_consistency.Controls.Add(new_view_consistency); new_tab.Controls.Add(new_page_data); new_tab.Controls.Add(new_page_matriks); new_tab.Controls.Add(new_page_hasil); new_tab.Controls.Add(new_page_consistency); return new_tab; }
privateDictionary<string, DataTable> HitungAHP(DataTable data_nilai_matriks, DataTable data_pemain) {
Dictionary<string, DataTable> hasil_hitung = newDictionary<string, DataTable>();
DataTable data_matriks = newDataTable("Matriks");
DataTable data_jumlah_kolom = newDataTable("TableJumlahKolom");
DataTable data_akhir = newDataTable("TableAkhir"); double lamda = 0;
double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = IRValue;
double JumlahPemain = data_pemain.Rows.Count; data_jumlah_kolom = data_nilai_matriks.Copy(); data_matriks = data_nilai_matriks.Copy();
// hitung total kolom dan baris
Dictionary<string, double> total_kolom = newDictionary<string, double>();
Dictionary<string, double> total_baris = newDictionary<string, double>(); foreach (DataRow pemain in data_pemain.Rows)
{
total_kolom.Add(pemain["Nama"].ToString(), 0); total_baris.Add(pemain["Nama"].ToString(), 0);
(30)
}
foreach (DataRow row in data_matriks.Rows) {
foreach (DataRow pemain in data_pemain.Rows) {
String namapemain = pemain["Nama"].ToString();
total_kolom[namapemain] += (double)row[namapemain]; }
}
DataRow new_row = data_jumlah_kolom.NewRow(); new_row["Nama"] = "Total Kolom";
foreach (DataRow pemain in data_pemain.Rows) {
String namapemain = pemain["Nama"].ToString();
new_row[namapemain] = total_kolom[namapemain]; }
data_jumlah_kolom.Rows.Add(new_row); foreach (DataRow row in data_matriks.Rows) {
foreach (DataRow pemain in data_pemain.Rows) {
String namapemain = pemain["Nama"].ToString();
row[namapemain] = (double)row[namapemain] / total_kolom[namapemain]; }
}
foreach (DataRow row in data_matriks.Rows) {
String namapemain = row["Nama"].ToString(); if (namapemain == "Total Kolom") continue; for (int i = 1; i < data_matriks.Columns.Count; i++) {
total_baris[namapemain] += (double)row[i]; }
}
data_matriks.Columns.Add("Total Baris", typeof(double)); data_matriks.Columns.Add("Eigen Vector", typeof(double)); data_matriks.Columns.Add("Eigen Max", typeof(double));
Dictionary<string, double> eigenVector = newDictionary<string, double>(); foreach (DataRow row in data_matriks.Rows)
{
String namapemain = row["Nama"].ToString(); if (namapemain == "Total Kolom") continue;
row["Total Baris"] = total_baris[namapemain];
row["Eigen Vector"] = total_baris[namapemain] / JumlahPemain;
row["Eigen Max"] = total_baris[namapemain] / JumlahPemain * total_kolom[namapemain]; }
foreach (DataRow row in data_matriks.Rows) {
String namapemain = row["Nama"].ToString(); if (namapemain == "Total Kolom") continue; lamda += (double)row["Eigen Max"]; }
nilaiCI = ((lamda) - JumlahPemain) / (JumlahPemain - 1); nilaiCR = nilaiCI / NilaiIR;
data_akhir.Columns.Add("Desc", typeof(string)); data_akhir.Columns.Add("Value", typeof(double)); new_row = data_akhir.NewRow();
(31)
new_row["Desc"] = "Lamda"; new_row["Value"] = lamda; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai CI"; new_row["Value"] = nilaiCI; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai IR"; new_row["Value"] = NilaiIR; data_akhir.Rows.Add(new_row); new_row = data_akhir.NewRow(); new_row["Desc"] = "Nilai CR (CI/IR)"; new_row["Value"] = nilaiCR;
data_akhir.Rows.Add(new_row); hasil_hitung.Add("TableJumlahKolom", data_jumlah_kolom); hasil_hitung.Add("Matriks", data_matriks); hasil_hitung.Add("TableAkhir", data_akhir); return hasil_hitung; }
privateDataTable ConvertToMatriks(DataTable data_nilai, DataTable data_pemain) {
DataTable matriks = newDataTable("Matriks"); matriks.Columns.Add("Nama", typeof(string)); foreach (DataRow row in data_pemain.Rows) {
matriks.Columns.Add(row["Nama"].ToString(), typeof(double)); }
foreach (DataRow row in data_pemain.Rows) {
DataRow new_row = matriks.NewRow(); new_row["Nama"] = row["Nama"]; 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]["Nama"].ToString(); if (column == row)
{
matriks.Rows[i][j] = 1; }
else
{
DataRow[] rows = data_nilai.Select("(BandingA = '" + column + "' AND BandingB = '" + row + "')"); double nilai = 0;
string dominan = ""; if (rows.Length == 1) {
nilai = (double)rows[0]["Nilai"];
dominan = rows[0]["Dominan"].ToString(); }
(32)
{
rows = data_nilai.Select("(BandingB = '" + column + "' AND BandingA = '" + 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; }
elseif (column == dominan) {
matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }
else
{
matriks.Rows[i][j] = 0; } } } } return matriks; }
privatevoid BtnProses_Click(object sender, EventArgs e) {
stopwatch = newStopwatch(); stopwatch.Start(); Proses("Dribble"); Proses("Shooting"); Proses("Passing"); Proses("Kelincahan"); Perangkingan(); stopwatch.Stop();
MessageBox.Show("Calculating is Finish. (elapsed time : " + stopwatch.ElapsedMilliseconds + " ms)"); }
privatevoid Proses(string kriteria) {
DataTable Data = GetDataPenilaian(kriteria);
DataView dataview = newDataView(Data);
DataTable distinctSumber = dataview.ToTable(true, "Sumber");
Dictionary<string, DataTable> result = newDictionary<string, DataTable>(); string sumber = kriteria + "Consolidated";
if (distinctSumber.Rows.Count <= 1) {
sumber = kriteria + distinctSumber.Rows[0]["Sumber"].ToString(); }
Control[] ctl02 = tabData.Controls.Find("dataview_matriks_" + sumber, true);
Control[] ctl03 = tabData.Controls.Find("dataview_hasil_" + sumber, true);
Control[] ctl04 = tabData.Controls.Find("dataview_consistency_" + sumber, true); if (ctl02.Length > 0)
{
DataTable table = (DataTable)((DataGridView)ctl02[0]).DataSource; result = HitungAHP(table, Data_pemain);
(33)
DataTable data_jumlah_kolom = result["TableJumlahKolom"];
DataTable data_matriks = result["Matriks"];
DataTable data_akhir = result["TableAkhir"]; if (ctl02.Length > 0)
{
((DataGridView)ctl02[0]).DataSource = data_jumlah_kolom; }
if (ctl03.Length > 0) {
((DataGridView)ctl03[0]).DataSource = data_matriks; }
if (ctl04.Length > 0) {
((DataGridView)ctl04[0]).DataSource = data_akhir; }
} }
privatevoid Perangkingan() {
DataTable table_rangking = newDataTable();
table_rangking.Columns.Add("Kriteria", typeof(string)); table_rangking.Columns.Add("Prioritas", typeof(double));
Dictionary<String, DataTable> datas = newDictionary<string, DataTable>(); foreach (DataRow kriteria in Data_kriteria.Rows)
{
string namakriteria = kriteria["Kriteria"].ToString();
DataTable table_nilai = GetDataPenilaian(namakriteria);
Control[] ctls = tabData.Controls.Find("dataview_hasil_" + namakriteria + "Consolidated", true); if (ctls.Length > 0)
{
table_nilai = (DataTable)((DataGridView)(ctls[0])).DataSource; }
else {
ctls = tabData.Controls.Find("dataview_hasil_" + namakriteria + table_nilai.Rows[0]["Sumber"].ToString(), true);
if (ctls.Length > 0) {
table_nilai = (DataTable)((DataGridView)(ctls[0])).DataSource; }
}
datas.Add(namakriteria, table_nilai); }
foreach (DataRow pemain in Data_pemain.Rows) {
string namapemain = pemain["Nama"].ToString();
table_rangking.Columns.Add(namapemain, typeof(double)); }
foreach (DataRow kriteria in Data_kriteria.Rows) {
string namakriteria = kriteria["Kriteria"].ToString();
double eigenvector = String.IsNullOrEmpty(kriteria["EigenVector"].ToString()) ? 0 : (double)(kriteria["EigenVector"]); ;
DataRow new_row = table_rangking.NewRow(); new_row["Kriteria"] = namakriteria; new_row["Prioritas"] = eigenvector; table_rangking.Rows.Add(new_row); }
(34)
DataRow row_total = table_rangking.NewRow(); row_total["Kriteria"] = "Total";
foreach (DataRow rank in table_rangking.Rows) {
string namakriteria = rank["Kriteria"].ToString(); double eigenvectorkriteria = (double)rank["Prioritas"]; foreach (DataRow pemain in Data_pemain.Rows) {
string namapemain = pemain["Nama"].ToString();
DataRow[] rows = datas[namakriteria].Select("Nama ='" + namapemain + "'"); double eigenvectorpemain = rows.Length > 0 ? (double)rows[0]["Eigen Vector"] : 1; rank[namapemain] = eigenvectorkriteria * eigenvectorpemain;
if (String.IsNullOrEmpty(row_total[namapemain].ToString())) row_total[namapemain] = 0;
row_total[namapemain] = (double)row_total[namapemain] + (double)rank[namapemain]; }
}
table_rangking.Rows.Add(row_total);
DataGridView dataview_hasilhitung = newDataGridView(); dataview_hasilhitung.DataSource = table_rangking; dataview_hasilhitung.Dock = DockStyle.Fill; tabHasilHitung.Controls.Add(dataview_hasilhitung);
// data ranking
DataTable ranking = newDataTable(); ranking = Data_pemain.Copy(); ranking.Columns.Remove("Id");
ranking.Columns.Add("Rank", typeof(double)); foreach (DataRow pemain in ranking.Rows)
{
pemain["Rank"] = row_total[pemain["Nama"].ToString()]; }
DataView dv = newDataView(ranking); dv.Sort = "Rank DESC"; ranking = dv.ToTable();
for (int i = 0; i < ranking.Rows.Count; i++) {
ranking.Rows[i]["Rank"] = i + 1; }
DataGridView dataview_ranking = newDataGridView(); dataview_ranking.DataSource = ranking; dataview_ranking.Dock = DockStyle.Fill; tabRanking.Controls.Add(dataview_ranking); }
privatevoid buttonRefresh_Click(object sender, EventArgs e) {
LoadData("Dribble"); }
} }
(35)
12. Listing Program Form About 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 AHPPM
{
publicpartialclassFormAbout : Form
{
public FormAbout() {
InitializeComponent(); }
privatevoid button1_Click(object sender, EventArgs e) {
this.Close(); }
privatevoid label1_Click(object sender, EventArgs e) {
} } }
(36)
Curriculum Vitae
Nama : Ivana Lisa Br Sitepu Tanggal Lahir : 27 Oktober 1993 Jenis Kelamin : PerempuanAlamat Sekarang : Jl. Prof.HM.Yamin.SH No 151c Medan Alamat Orang Tua : Jl. Prof.HM.Yamin.SH No 151c Medan
Hp : 081362924727
Email : [email protected]
Riwayat Pendidikan
2011-2015 : S1 Ilmu Komputer Universitas Sumatera Utara 2008-2011 : SMA Santo Thomas 1 Medan
2005-2008 : SMP Sutomo 1 Medan 1999-2005 : SD Methodist 7 Medan 1998-1999 : TK Methodist 7 Medan
(37)
DAFTAR PUSTAKA
[ARD13] Ardianto, S. 2013. Hubungan antar autropometri tubuh dengan kelincahan (Agility) dan daya tahan kardiovaskulas (Vo2max) pada olahraga bola basket. Skripsi. Universitas Pendidikan Indonesia.
[DAR12] Darmawan, A. S. 2012. Pemilihan beasiswa bagi mahasiswa Stmik widya pratama dengan metode profile matching. Jurnal Ilmiah ICTech Vol X,No.1 ; 2-4.
[DEV13] Devita, A. 2013. Survey tes tingkat kemampuan teknik dasar bermain bola basket (passing, dribbling, dan shooting) pada tim bola basket putra kelompok umur 18 tahun Klub sahabat Semarang tahun 2012. Skripsi. Universitas Negri Semarang.
[DWI15] Dwi. 2015. Perbandingan metode analytical hierarchy process dan weighted sum model pada sistem pendukung keputusan. Skripsi. Universitas Sumatera Utara.
[SIA14] Sianturi, J. 2014. Perancangan sistem pendukung keputusan dengan menggabungkan metode SAW dan AHP untuk pemilihan bedah rumah (studi kasus dinas pekerjaan umum cipta karya dan tata ruang Kabupaten Dairi). Skripsi. Universitas Sumatera Utara.
[FAI14] Faisol A., Muhammad A. M. & Hadi S. 2014. Komparasi Fuzzy AHP dengan AHP pada Sistem Pendukung Keputusan Investasi Properti. Jurnal EECCIS Vol.8, No. 2 : 124-125, Desember 2014. (22 Januari 2015).
(38)
[HAP13] Hapsari, A., T. 2013. Status Keterampilan Bermain Bola Basket Pada club NBC (Ngaliyan Basketball Center) Kota Semarang. Skripsi. Universitas Negeri Semarang.
[HAP14] Harahap, I. A. 2014. Implementasi Perbandingan metode Profile Matching dan Simple Additive Weighting (SAW) dalam penilaian kinerja karyawan (studi kasus dinas kebudayaan dan pariwisata Provinsi Sumatera Utara). Skripsi. Universitas Sumatera Utara.
[IQB11] Iqbal & Hartati S. 2011. Aplikasi Sistem Pendukung Keputusan Penempatan
Bidan PTT (Pegawai Tidak Tetap) pada Kabupaten Bireuen. Prosiding –
Seminar Nasional Ilmu Komputer GAMA 2011.
[MAN10] Manurung, P. 2010. Sistem pendukung keputusan seleksi penerima beasiswa dengan metode AHP dan Topsis (Stusi kasus: FMIPA USU). Skripsi. Universitas Sumatera Utara.
[MIL14] Milala, 0. S. M. 2014. Implementasi color constancy pada citra digital menggunakan logarithmic image processing. Skripsi. Universitas Sumatera Utara.
[NAS09] Nasibu, I. Z. 2009. Penerapan metode AHP dalam sistem pendukung keputusan penempatan karyawan menggunakan aplikasi Expert Choice . Jurnal Pelangi Ilmu Vol 2 , No.5 : 185-187.
[NOV14] Novembri, F. 2014. Implementasi metode profile matching dan metode Analytical Hierarchy Process (AHP) pada perekrutan tenaga kurir (studi kasus PT.JNE cabang Medan). Skripsi. Universitas Sumatera Utara.
[NUG14] Nugraha, M. R. 2014. Implementasi sistem pendukung keputusan seleksi sertifikasi guru sma menggunakan metode Analytical Hierarchy Process dan Weighted Product. Skripsi. Universitas Sumatera Utara.
(39)
[RAH14] Rahman, A. 2014. Implementasi metode Simple Additive Weighting (SAW) dan Profile Matching dalam menentukan pejabat struktural pada pemerintah kota tebing tinggi. Skripsi. Universitas Sumatera Utara.
[RAN15] Rangkuti, S. H. 2015. Implemetasi metode Simple Additive Weighting (SAW) dan Analytical Hierarchy Process (AHP) untuk pemilihan sistem operasi pada komputer. Skripsi. Universitas Sumatera Utara.
[SIA14] Sianturi, J. 2014. Perancangan sistem pendukung keputusan dengan menggabungkan metode SAW dan AHP untuk pemilihan bedah rumah (studi kasus dinas pekerjaan umum cipta karya dan tata ruang Kabupaten Dairi). Skripsi. Universitas Sumatera Utara.
[SIA15] Siambaton, A. H. 2015. Sistem pendukung keputusan pemilihan gitar berbasis android menggunakan metode weighted sum model. Skripsi. Universitas Sumatera Utara.
[TOM12] Tominanto. 2012. Sistem Pendukung keputusan dengan metode Analytical Hierarchy Process (AHP) untuk penentuan prestasi kinerja dokter pada RSUD Sukoharjo. Infokes Vol.2, No.2 : 2-4.
(40)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem (system analysis) dapat didefinisikan sebagai penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya danganmaksud untuk mengidentifikasikan dan mengevaluasikan permasalah-permasalahan, kesempatan-kesempatan, hambatan-hambatan yang terjadi dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikan.
Analisis sistem merupakan istilah yang secara kolektif mendeskripsikan fase-fase awal pengembangan sistem. Tahapan yang dilakukan untuk menghasilkan pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh tugas-tugas yang akan dikerjakan sistem disebut analisis system.
3.2Analisis Masalah
Analisis masalah adalah proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana mestinya sesuai dengan tujuan dari sistem itu. Masalah utama yang diangkat adalah pemilihan pemain basket terbaik pada sistem pengambilan keputusan. Sistem pengambilan keputusan ini menggunakan Algoritma Analytical Hierarchy Process
dan Profile Matching.
DiagramIshikawa adalah diagram yang menunjukkan penyebab-penyebab dari sebuah event yang spesifik. Diagram ini juga disebut dengan diagram tulang ikan atau cause-and-effect diagram. Pemakaian diagramIshikawa yang paling umum adalah untuk mencegah efek serta mengembangkan kualitas produk. Analisa masalah lebih jelas melalui diagram Ishikawa yang dapat dilihat pada Gambar 3.1.
(41)
Gambar 3.1. Diagram Ishikawa analisis masalah sistem pemilihan pemain basket
3.3 Analisis Kebutuhan Sistem
Analisis Kebutuhan Sistem meliputi Kebutuhan Fungsional Sistem dan Kebutuhan Non-Fungsional Sistem.
3.3.1 Kebutuhan Fungsional Sistem
Kebutuhan fungsional yang harus dimiliki oleh sistem pemilihan pemain basket adalah sebagai berikut:
1. Sistem dapat menentukan prioritas setiap kriteria
2. Sistem dapat memberikan penilaian secara objektif setiap alternatif
3. Sistem dapat memilih 1 orang pemain basket terbaik dari 5 orang calon pemain basket
3.3.2 Kebutuhan Non-Fungsional Sistem
Untuk mendukung kinerja sistem, sistem sebaiknya dapat berfungsi sebagai berikut: 1. Sistem harus dapat melakukan perhitungan untuk menentukan pemain, sesuai
dengan kriteria dari user dengan kecepatan komputasi yang tinggi.
2. Interface sistem mudah dipahami oleh user.
(42)
3.3Flowchart Sistem
3.4.1 Flowchart Sistem secara umum
(43)
3.4.2 Flowchart Algoritma AHP
(44)
3.4.3 Flowchart Algoritma Profile Matching
(45)
3.5 Perancangan Sistem
Proses perancangan antarmuka (interface) sebuah sistem adalah proses yang cukup penting dalam perancangan sebuah sistem. Merancang antarmuka merupakan bagian yang paling penting dari merancang sebuah sistem. Sebuah antarmuka harus dirancang dengan memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk digunakan oleh pengguna.
3.5.1 Antarmuka Perhitungan dengan Algoritma AHP
Pada tampilan perhitungan dengan metode AHP, akan ditampilkan form untuk mengisi perbandingan berpasangan berdasarkan kriteria, kemudian dari perhitungan perbandingan berpasangan akan ditampilkan bobot kriteria dan nilai kekonsistenan dari bobot tersebut, seperti pada gambar 3.5 berikut.
Gambar 3.5 Antarmuka Perhitungan dengan Algoritma AHP
Keterangan :
1. Data Grid Kriteria
berfungsi untuk input perbandingan berpasangan antar kriteria.
2. Data Grid Ranking
Berfungsi untuk menampilkan ranking pemain basket.
3. Data Grid Nama pengisi kuesioner
Berfungsi untuk menampilkan data kriteria yang paling dominan sesuai hasil kuisioner.
(46)
4. Data Grid Cinsolidated
Berfungsi untuk menampilkan total data yang telah di dapat dari hasil kuesioner .
5. Data Grid Data
Berfungsi untuk menampilkan data kriteria sesuai nama pengisi kuesioner yang diinginkan.
6. Data Grid Matriks
Berfungsi untuk menampilkan nilai matriks.
7. Data Grid Hasil
Berfungsi untuk menampilkanEigen Vector.
8. Data Grid Consitency
Berfungsi untuk menampilkan nilai CR. 9. Tabel Perbanding
Berfungsi untuk menampilkan data perbandingan yang diinginkan. 10. Tombol Close
Berfungsi untuk menutup form Perhitungan AHP. 11. Tombol Proses
Berfungsi untuk memproses data yang yang diinginkan.
3.5.2 Antarmuka Perhitungan dengan Algoritma Profile Matching
(47)
Keterangan : 1. Data Grid Data
Berfungsi untuk menampilkan data subkriteria setiap pemain. 2. Data Grid Gap Nilai
Berfungsi untuk menampilkan nilai Gap subkriteria setiap pemain. 3. Data Grid Pembobotan
Berfungsi untuk menampilkan bobot nilai. 4. Data Grid Perhitungan NCF/NSF
Berfungsi untuk menampilkan nilai NCF dan NSF. 5. Data Grid Ranking
Berfungsi untuk menampilkan ranking pemain basket. 6. Tabel Perbanding
Berfungsi untuk menampilkan data perbandingan yang diinginkan. 7. Tombol Refresh Data
Berfungsi untuk reset data. 8. Tombol Proses
Berfungsi untuk menproses data yang diinginkan. 9. Tombol Close
(48)
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Sistem
Tahap implementasi sistem merupakan lanjutan dari tahap perancangan sistem. Pada tahap ini dilakukan implementasi sistem ke dalam bahasa pemrograman berdasarkan hasil analisis dan perancangan sistem. Pada tahap implementasi ini digunakan perangkat lunak dan perangkat keras, sehingga sistem yang dibangun dapat diselesaikan dengan baik.
Sistem ini dibangun dengan menggunakan Software Microsoft Visual Studio 2010 Version 10.0.030319.1 RTMRel. Pada sistem terdapat 3 halaman utama yang digunakan, terdiri dari:
1. Home
2. Perhitungan AHP
3. Perhitungan Profile Matching 4. Tentang
4.1.1 Tampilan Home
Home merupakan form yang pertama kali muncul pada saat aplikasi dijalankan. Form ini terdiri dari dua TabMenu, yaitu Tab File dan Tentang. Halaman utama pada aplikasi dapat dilihat pada Gambar 4.1.
(49)
Gambar 4.1 FormHome
Tab File terdiri dari beberapa submenu yaitu Perhitungan AHP, Perhitungan Profile Matching dan menu Keluar.Tab tentangmerupakan halaman yang digunakan untuk melihat informasi tentang program dan programmer.
4.1.2 Perhitungan AHP
Perhitungan AHP merupakan submenu pada Tab File yang merupakan interface untuk melakukan perhitungan dengan menggunakan Metode Analytical Hierarchy Proces, dimana disediakan tabel untuk perbandingan berpasangan kriteria. Tampilan untuk form ini dapat dilihat pada Gambar 4.2 .
(50)
Gambar 4.2 Form Perhitungan AHP
4.1.3 Perhitungan Profile Matching
Perhitungan Profile Matching merupakan submenu pada tab File yang merupakan interface untuk melakukan perhitungan dengan menggunakan Profile Matching. Tampilan untuk form ini dapat dilihat pada Gambar 4.3.
(1)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Daftar Lampiran xii
Bab I Pendahuluan 1
1.1. Lat
ar Belakang 1
1.2. Ru
musan Masalah 2
1.3. Bat
asan Masalah 2
1.4. Tuj
uan Penelitian 2
1.5. Ma
nfaat Penelitian 2
1.6. Met
odologi Penelitian 3
1.7. Sist
ematika Penelitian 3
Bab II Tinjauan Pustaka 5
2.1. Permainan Bola Basket 5
2.2. Sistem Pendukung Keputusan 6
2.3. Metode Analytical Hierarchy Process (AHP) 7
2.4. Metode Profile Matching 20
Bab III Analisis dan Perancangan Sistem 22
3.1. Analisis Sistem 22
3.2. Analisis Masalah 22
3.3. Analisis Kebutuhan Sistem 23
3.3.1.Kebutuhan Fungsional Sistem 23
3.3.2.Kebutuhan Non-Fungsional Sistem 23
3.4. Flowchart Sistem 24
(2)
4.1.2. Perhitungan AHP 31
4.1.3. Perhitungan Profile Matching 32
4.1.4. Tampilan Halaman Tentang 33
4.2. Pengujian Sistem 33
4.2.1. Pengujian Sistem Dengan Algoritma Analytical
Hierarchy Process 33
4.2.2. Pengujian Sistem Dengan Algoritma Profile
Matchinng 35
4.3. Database Sistem 38
Bab 5 Kesimpulan dan Saran 41
5.1. Kesimpulaan 41
5.2. Saran 41
(3)
DAFTAR TABEL
Halaman
Tabel 1. Skala Penilaian Perbandingan Pasangan 8
Tabel 2. Daftar Indeks Random Konsistensi (IR) 10
Tabel 3. Random Index 12
Tabel 4. Matriks Faktor Pembobotan Hirarki untuk Semua Kriteria 14 Tabel 5. Matriks Faktor Pembobotan Hirarki untuk Semua Kriteria yang
Disederhanakan 14
Tabel 6. Matriks Faktor Pembobotan Hirarki untuk Semua Kriteria yang
Dinormalkan 14
Tabel 7. Matriks Faktor Evaluasi untuk Kriteria Dribling 15 Tabel 8. Matriks Faktor Evaluasi untuk Kriteria Dribling yang
Disederhanakan 15
Tabel 9. Matriks Faktor Evaluasi untuk Kriteria Dribling yang
Dinormalkan 16
Tabel 10. Matriks Faktor Evaluasi untuk Kriteria Shooting 17 Tabel 11. Matriks Faktor Evaluasi untuk Kriteria yang Shooting
Disederhanakan 17
Tabel 12. Matriks Faktor Evaluasi untuk Kriteria Shooting yang
Dinormalkan 17
Tabel 13. Matriks Faktor Evaluasi untuk Kriteria Passing 18 Tabel 14. Matriks Faktor Evaluasi untuk Kriteria Passing yang
Disederhanakan 18
Tabel 15. Matriks Faktor Evaluasi untuk Kriteria Passing yang
(4)
DAFTAR GAMBAR
Halaman
Gambar 1. Langkah-langkah dalam Metode AHP 13
Gambar 3.1. Diagram Ishikawa Analisis Masalah Sistem Pemilihan Pemain
Basket 23
Gambar 3.2. Flowchart Sistem Secara Umum 24
Gambar 3.3. Flowchart algoritma AHP [NUG14] 25
Gambar 3.4. FlowchartProfile Matching [RAH14] 26
Gambar 3.5. Antarmuka Perhitungan dengan Algoritma AHP 27 Gambar 3.6. Antarmuka Perhitungan dengan AlgoritmaProfile Matching 28
Gambar 4.1. FormHome 31
Gambar 4.2. Form Perhitungan AHP 32
Gambar 4.3. Form Perhitungan Profile Matching 32
Gambar 4.4. Halaman FormTentang 33
Gambar 4.5. Form Perbandingan Berpasangan Kriteria 34
Gambar 4.6. Form Perhitungan Pemain 39
Gambar 4.7. Form Ranking Pemain Basket AHP 34
Gambar 4.8 Form Data Kriteria 35
Gambar 4.9. Form Perhitungan NCF dan NSF 36
Gambar 4.10. Form Ranking Pemain Basket Profile Matching 38
Gambar 4.11. Database Pemain 39
Gambar 4.12. Database Kriteria 39
Gambar 4.13. Database Perhitungan AHP 39
(5)
(6)
Listing Program 49