• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
97
0
0

Teks penuh

(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;

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;

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) {

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)

privatevoid ButtonClose_Click(object sender, EventArgs e) {

this.Close(); } } }

3. Listing Program Form Master Kriteria

using System;

(8)

using System.Drawing;

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) {

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)

privatevoid ButtonClose_Click(object sender, EventArgs e) {

this.Close(); } } }

4. Listing Program Form Aspek Dribling

using System;

(9)

using System.ComponentModel;

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)

privatevoid ButtonClose_Click(object sender, EventArgs e) {

(10)

} } }

5. Listing Program Form Aspek Kelincahan

using System;

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);

(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;

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);

privatevoid ButtonClose_Click(object sender, EventArgs e) {

this.Close(); } } }

7. Listing Program Form Aspek Shooting

using System;

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; }

(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)

privatevoid ButtonClose_Click(object sender, EventArgs e) {

this.Close(); }

privatevoid label1_Click(object sender, EventArgs e) {

} } }

8. Listing Program Form Penilaian Kriteria

using System;

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;

(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) {

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)

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;

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) {

(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;

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;

(18)

}

table_consolidated = CalculatePair(table_consolidated);

Control[] ctlconsol = tabData.Controls.Find("dataview_matriks_Consolidated", true); if (ctlconsol.Length > 0)

privateDataTable CalculateData(DataTable data, DataTable dataAdd) {

privateDataTable CalculatePair(DataTable data) {

double dup = (double)data.Rows[j][i + 1] / (double)DistinctSumber.Rows.Count; dup = Math.Exp(dup);

privatevoid GenerateView(DataTable distinctSumber) {

foreach (DataRow rowSumber in distinctSumber.Rows) {

string sumber = rowSumber["Sumber"].ToString();

TabPage new_page = newTabPage(sumber);

TabControl new_tab;

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);

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;

(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;

// 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)

{

(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) {

(22)

new_row["Value"] = lamda;

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++) {

(23)

if (rows.Length == 1)

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;

privatevoid ButtonClose_Click(object sender, EventArgs e) {

this.Close(); }

privatevoid buttonRefresh_Click(object sender, EventArgs e) {

LoadData(); }

privatevoid BSimpan_Click(object sender, EventArgs e) {

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)

bool isSuccess = database.SaveDataTable("table_master_kriteria", Data_kriteria, null, null);

if (isSuccess)

11. Listing Program Form Perhitungan Pemain

using System;

(25)

using System.Drawing;

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) {

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;

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);

(27)

privateDataTable CalculateData(DataTable data, DataTable dataAdd)

privateDataTable CalculatePair(DataTable data, Int32 numberParticipant) {

double dup = (double)data.Rows[j][i + 1] / (double)numberParticipant; dup = Math.Exp(dup);

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;

TabPage new_page2 = newTabPage("Consolidated");

TabControl new_tab2 = GenerateDetail3(kriteria + "Consolidated"); new_page2.Controls.Add(new_tab2);

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);

(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);

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;

// 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)

{

(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) {

(31)

new_row["Desc"] = "Lamda";

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++) {

(32)

{

privatevoid BtnProses_Click(object sender, EventArgs e) {

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)

{

(33)

DataTable data_jumlah_kolom = result["TableJumlahKolom"];

DataTable data_matriks = result["Matriks"];

DataTable data_akhir = result["TableAkhir"]; if (ctl02.Length > 0)

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)

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"]); ;

(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;

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";

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 : ivana.sitepu@gmail.com

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

(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

(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

(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

(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

(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

(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

(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

(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.

(51)

4.1.4 Tampilan Halaman Tentang

Halaman menu tentangmerupakan halaman yang digunakan untuk melihat informasi

tentang program dan programmer, tampilan Menu Tentang dapat dilihat pada Gambar 4.4

di bawah ini:

Gambar 4.4 Halaman FormTentang.

4.2 Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bagaimana kinerja sistem dalam

pengimplementasian Algoritma Analytical Hierarchy Process dan Profile Matchinguntuk

melakukan proses menentukan pemain basket terbaik..

4.2.1 Pengujian Sistem dengan Algoritma Analytical Hierarchy Process

Untuk menentukan pemain basket terbaik dengan Algoritma Analytical Hierarchy

Process tahap awal yang dilakukan adalah memilih submenu Perhitungan AHP pada Tab

File. Setelah tampilan form Perhitungan AHP muncul maka lakukan langkah-langkah

berikut ini untuk melakukan proses pemilihan.

1. Mengisi formdata pemain pada tabel yang telah disediakan.

2. Mengisi form perbandingan berpasangan kriteria pada tabel yang telah disediakan.

3. Setelah mengisi tabel perbandingan berpasangan tekan tombol Proses untuk

mendapatkan bobot dari kriteria berdasarkan perbandingan berpasangan tadi yang

(52)

Gambar 4.5Form Perbandingan Berpasangan Kriteria

Pada gambar 4.5 ini terdapat nama sumber atau pengisi kuisioner yang telah

mengisi nilai dominan dari kriteria yang ditentukan, setelah si pengguna mengisi

tabel tersebut maka sistem akan memproses hasil consistency dari kriteria

tersebut.

4. Selanjutnya pilih submenu perhitungan pemain lalu hasil hitung kemudian pilih

proses untuk mendapatkan nilai setiap pemain sesuai kriteria yang ditentukan.

(53)

Pada form perhitngan pemain yang di ada pada gambar 4.6 untuk mengetahui urutan

kriteria yang lebih prioritas dan menghitung nilai yang di dapat pemain dari setiap

kriteria sehingga di dapat total nilai pemain dari setiap kriteria yang ditentukan

5. Setelah melakukan langkah-langkah terserbut maka untuk mendapatkan ranking

dari pemain basket dapat dilakukan dengan memilih ranking lalu klik tombol

proses.

Gambar 4.7FormRanking Pemain Basket AHP

Pada gambar 4.7 adalah untuk melihat ranking dari pemain basket, pada gambar ini

dapat di lihat siapa pemain basket terbaik dari calon-calon yang telah ditentukan.

4.2.2 Pengujian Sistem dengan Algoritma Profile Matching

Untuk menentukan pemain basket terbaik dengan Algoritma Profile Matching tahap awal

yang dilakukan adalah memilih submenu Perhitungan Profile Matching pada Tab File.

Setelah tampilan form Perhitungan Profile Matching muncul maka lakukan

langkah-langkah berikut ini untuk melakukan proses pemilihan.

Gambar

Gambar 3.1. Diagram Ishikawa analisis masalah sistem pemilihan pemain basket
Gambar 3.3 Flowchart algoritma AHP [NUG14].
Gambar 3.4 FlowchartProfile Matching [RAH14].
Gambar 3.5 Antarmuka Perhitungan dengan Algoritma AHP
+7

Referensi

Dokumen terkait

Dari hasil analisa dapat disimpulkan bahwa Semakin lama benda yang diplating di celup pada larutan plating maka semakin tinggi tingkat ketahanan lapisan tersebut jika di uji

Nilai koefisien jalur dari user satisfaction ke individual impact sebesar 0,980 yang menunjukkan bahwa kualitas system berpengaruh positif terhadap kepuasan

You’ve used aspects to have a nice separation of concerns: one class for reversing a string and one class for logging, but when it comes time to run the unit test,

His mother would have turned and asked the same thing, in fact, out of sheer stubbornness, a refusal to be dismissed, though Ned didn’t actually know that.. The man in the

Sebuah motor listrik dalam industri tentunya memerlukan suatu perawatan dan perbaikan pada mesin-mesinya agar kinerja pada sistem crane dapat berjalan dengan baik

Berdasarkan hasil tes akademik yang dilaksanakan di GOR BULU TANGKIS TABRANI AHMAD pada tanggal 26 Mei 2016, maka berikut ini disampaikan daftar nama peserta yang dinyatakan

Hasil penelitian ini menunjukkan bahwa penghargaan, kompensasi, kepemimpinan, pengembangan karir, pelatihan dan pengembangan, serta kepuasan kerja berpengaruh secara

Menguasai materi, struktur, konsep, dan pola pikir Menganalisis materi, struktur, konsep, dan pola pikir Menerapkan intonasi yang baik pada praktek keilmuan yang mendukung