Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) Dan Profile Matching (Studi Kasus : SMA Santo Thomas 1 Medan )

(1)

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 : Perempuan

Alamat 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


Dokumen yang terkait

Implementasi Metode Profile Matching dan Metode Analytical Hierarchy Process (AHP) pada Perekrutan Tenaga Kurir (Studi Kasus PT. JNE Cabang Medan)

16 91 137

Implementasi Metode K- Means Clustering Dan Metode Analytical Hierarchy Process (AHP) Dalam Penilaian Kedisiplinan Siswa (Studi Kasus : SMP Negeri 21 Medan)

20 99 166

Studi Penerapan Metode Analytical Hierarchy Process (AHP) Dan Metode Technique For Order Preference By Similarity To Ideal Solution (TOPSIS) Untuk Peningkatan Kualitas Layanan Di Rumah Sakit Bina Kasih Medan-Sunggal

4 41 149

Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) Dan Profile Matching (Studi Kasus : SMA Santo Thomas 1 Medan )

25 117 97

Pengembangan sistem pendukung keputusan dalam pemilihan fakultas perkuliahan berbaiss mobile web

3 15 150

Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) Dan Profile Matching (Studi Kasus : SMA Santo Thomas 1 Medan )

0 0 36

BAB 2 TINJAUAN PUSTAKA 2.1 Permainan Bola Basket - Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) Dan Profile Matching (Studi Kasus : SMA Santo Thomas 1 Medan )

0 0 17

SISTEM PENDUKUNG KEPUTUSAN DALAM MENENTUKAN PEMAIN BASKET TERBAIK MENGGUNAKAN ALGORITMA ANALYTICAL

0 0 14

Sistem Pendukung Keputusan Dalam Menentukan Pemain Basket Terbaik Menggunakan Algoritma Analytical Hierarchy Process (AHP) (Study Kasus Klub Angsapura Sania Medan)

0 0 15

Sistem Pendukung Keputusan Menentukan Transfer Pemain Sepak Bola Menggunakan Metode AHP (Analytical Hierarchy Process)

0 1 9