• Tidak ada hasil yang ditemukan

A-1. Listing Program. Universitas Sumatera Utara

N/A
N/A
Protected

Academic year: 2021

Membagikan "A-1. Listing Program. Universitas Sumatera Utara"

Copied!
22
0
0

Teks penuh

(1)

Listing Program

1. Mainform.cs

/* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 4:51 PM *

* To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace AHPTest { /// <summary> /// Description of MainForm. /// </summary>

public partial class MainForm : Form {

string [] kriteria = new string[] {"IMK","Usia Mentoring","Training Pengurus","Hafalan Al-Qur'an","Jumlah Kelompok Mentoring"};//poin-poin kriteria

string [] alternatif = new string[] {"Amat

Baik","Baik","Cukup","Kurang"};//poin-poin alternatif setiap kriteria

AHPTest.Data m_kriteria;//variabel yang menyimpan nilai matriks dan eigen vektor dari kriteria

List<Data> m_alternatif;//variabel yang menyimpan nilai matriks dan eigen vektor dari alternatif

float [][] matriks;//matriks sementara untuk menampung nilai yang diinput user

data_pen [][] data_sat; string [] bidang;

(2)

pengumpulan.hasil [] data_hasil; Nilai y;

public MainForm() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

inisialisasi_tabel();//memulai membuat tabel sebagai tempat input nilai perbandingan

m_alternatif = new List<Data>();

data_sat = new MainForm.data_pen[2][]; bidang = new string[]{"Kaderisasi,",

"Syiar", "KW", "Akkom", "LSO-IT"}; //

// TODO: Add constructor code after the InitializeComponent() call. // } void inisialisasi_tabel() {

if (button1.Text == "Simpan Kriteria")//jika teks tombol seperti kondisi ini

{

dg.Columns.Add("C0","");//menambah 1 kolompada tabel,ada 2 parameter,nilai CO sebagai nama kolom, nilai "" sebagai headertext

dg.Rows.Insert(0,"");//menambah 1 baris pada tabel,ada 2 parameter, satu index baris, satu lagi nilai isi sel di kolom pertama di baris tersebut

dg[0,0].Value = "";//nilai dari sel [kolom ke-,baris ke-]

(3)

= 1;i<kriteria.Length+1;i++)//membuat tabel matriks dengan ukuran = jumlah kriteria

{

dg.Columns.Add("C"+i.ToString(),""); dg.Rows.Insert(i,kriteria[i-1]); dg[i,0].Value = kriteria[i-1]; dg[i,i].Value = "1"; } } else { dg.Columns.Add("C0",""); dg.Rows.Insert(0,""); dg[0,0].Value = ""; for (int i

= 1;i<alternatif.Length+1;i++)//membuat tabel matriks dengan ukuran = jumlah poin alternatif

{

dg.Columns.Add("C"+i.ToString(),""); dg.Rows.Insert(i,alternatif[i-1]); dg[i,0].Value = alternatif[i-1]; dg[i,i].Value = "1";

} } }

void DgCellValidated(object sender, DataGridViewCellEv entArgs e)//ketika suatu user mengisi suatu sel, maka sel yang merupakan perbandingan terbalik dari sel tsb akan otomatis terisi dgn nilai 1/sel

{ try{ dg[e.RowIndex,e.ColumnIndex].Value = (1/float.Parse(dg[e.ColumnIndex,e.RowIndex].Value.ToString() )).ToString(); } catch{ }

(4)

}

void Button1Click(object sender, EventArgs e) {

if (button1.Text == "Simpan Kriteria") {

matriks

= new float[kriteria.Length][];//membuat ukuran matriks for (int i = 0;i<kriteria.Length;i++) {

matriks[i] = new float[kriteria.Length];// membuat ukuran sub matriks

for (int j = 0;j<kriteria.Length;j++) {

matriks[i][j] = float.Parse(dg[j+1,i+1

].Value.ToString());//memindahkan nilai dari tabel ke matriks dengan iterasi sebanyak poin poin yang dibandingkan

} }

m_kriteria

= new Data(kriteria,matriks);//membuat tempat baru bagi variable m_kriteria untuk menyimpan nilai matriks dan poin poin kriteria

dg.Rows.Clear();//membersihkan baris, agar bisa digunakan oleh alternatif

dg.Columns.Clear();//membersihkan kolom button1.Text = "Simpan Alternatif";//teks berganti

inisialisasi_tabel();//lakukan kembali inisialisasi

}

else if (button1.Text == "Simpan Alternatif") {

matriks

= new float[alternatif.Length][];//hampir sama, yang ini untuk menyimapn alternatif

for (int i = 0;i<alternatif.Length;i++) {

(5)

for (int j = 0;j<alternatif.Length;j++) {

matriks[i][j] = float.Parse(dg[j+1,i+1

].Value.ToString()); } }

for (int i = 0;i<kriteria.Length;i++) { m_alternatif.Add(new Data(alternatif,matri ks)); } button1.Text = "Selesai"; }

else if (button1.Text == "Selesai") {

pengumpulan x

= new pengumpulan(m_kriteria,m_alternatif);//membuat form untuk mengumpulkan data

x.ShowDialog();//menampilkannya

data_hasil = x.da;//variabel yang menyimpan data data calon

y

= new Nilai(data_hasil,m_kriteria,m_alternatif);//membuat form hasil menampilkan hasil dari peritungan AHP

y.ShowDialog();//menampilkannya. dg.Rows.Clear();

dg.Columns.Clear(); //dg.Rows.Add();

dg.Columns.Add("C","Nama/Bidang"); for (int i = 0;i<5;i++)

{

dg.Rows.Insert(i,data_hasil[(y.kandidat[i] .index/2)-1].nama);

dg.Columns.Add("C",bidang[i]); }

data_sat[0] = new data_pen[5]; button1.Text = "Tahap 2";

dg.CellValidated -= DgCellValidated; }

(6)

else if (button1.Text == "Tahap 2") {

for (int i = 0;i<5;i++) {

data_sat[0][i].nama = dg[0,i].Value.ToString();

data_sat[0][i].index = 0; data_sat[0][i].free = true;

data_sat[0][i].prio = new List<sbyte>(); int max; for (int j = 0;j<5;j++) { max = 4-j; for (int k = 0;k<5;k++) { if (sbyte.Parse(dg[k+1,i].Value.To String()) == (sbyte)max) { data_sat[0][i].prio.Add((sbyte )k); break; } } } } dg.Rows.Clear(); dg.Columns.Clear(); dg.Columns.Add("C","Bidang/Nama"); for (int i = 0;i<5;i++)

{

dg.Columns.Add("C",data_hasil[(y.kandidat[ i].index/2)-1].nama);

dg.Rows.Insert(i,bidang[i]); }

data_sat[1] = new data_pen[5]; button1.Text = "Proses..."; }

(7)

{

for (int i = 0;i<5;i++) {

data_sat[1][i].nama = dg[0,i].Value.ToString();

data_sat[1][i].index = 0; data_sat[1][i].free = true;

data_sat[1][i].prio = new List<sbyte>(); int max; for (int j = 0;j<5;j++) { max = 5-j; for (int k = 0;k<5;k++) { if (sbyte.Parse(dg[k+1,i].Value.To String()) == (sbyte)max) { data_sat[1][i].prio.Add((sbyte )k); break; } } } } gale_shapley(); } }

public struct data_pen {

public string nama { get; set; } public List<sbyte> prio { get; set; } public sbyte index { get; set; } public bool free { get; set; } }

sbyte ind = 0; void gale_shapley() {

(8)

{

if (data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].free)

{

data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].index = ind;

data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].free = false;

data_sat[0][ind].free = false;

} else {

for (int i = 0;i<5;i++) {

if (data_sat[1][data_sat[0][ind].prio[ data_sat[0][ind].index]].prio[i] == ind)

{

data_sat[1][data_sat[0][ind].prio[ data_sat[0][ind].index]].index = ind;

data_sat[0][ind].free = false; break;

}

else if (data_sat[1][data_sat[0][ind]. prio[data_sat[0][ind].index]].prio[i] ==

data_sat[1][data_sat[0][ind].prio[data_sat[0][ind].index]].ind ex)

break; }

}

data_sat[0][ind].index++;

MessageBox.Show(data_sat[1][data_sat[0][ind].p rio[data_sat[0][ind].index]].index.ToString()+" :

"+data_sat[0][data_sat[1][data_sat[0][ind].prio[data_sat[0][in d].index]].index].nama);

}

dg.Columns.Clear(); dg.Rows.Clear();

(9)

dg.Columns.Add("C","Kandidat"); for (int i = 0;i<5;i++)

{

dg.Rows.Add();

dg[0,i].Value = data_sat[1][i].nama; dg[1,i].Value =

data_sat[0][data_sat[1][i].index].nama; }

}

bool t_hab() {

for (int i = 0;i<5;i++) {

if (data_sat[0][i].free == true) { ind = (sbyte)i; return true; } } return false; } } }

2. Pengumpulan.cs

/* * Created by SharpDevelop. * User: asus * Date: 7/21/2014 * Time: 6:10 PM *

* To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Drawing; using System.Collections.Generic; using System.Windows.Forms;

(10)

using System.Threading; namespace AHPTest { /// <summary> /// Description of pengumpulan. /// </summary>

public partial class pengumpulan : Form {

Data krit;

List<Data>alternatif; int count = 1;

public hasil [] da;

public pengumpulan(Data krit,List<Data>alternatif) {

//

// The InitializeComponent() call is required for Windows Forms designer support.

// InitializeComponent(); this.krit = krit; this.alternatif = alternatif; generate(); //

// TODO: Add constructor code after the InitializeComponent() call. // } void generate() { DataGridViewComboBoxColumn x1;

dg.Columns.Insert(0,new DataGridViewTextBoxColumn( ));

dg.Columns[0].HeaderText = "No.";

dg.Columns.Insert(1,new DataGridViewTextBoxColumn( ));

dg.Columns[1].HeaderText = "Nama Kandidat"; for (int i = 2;i<alternatif.Count+2;i++) {

(11)

x1 = new DataGridViewComboBoxColumn(); x1.DataSource = alternatif[i-2].keterangan; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = krit.keterangan[i-2]; dg.Columns.Insert(i,x1); //dg.Rows.Add(); } /*x1 = new DataGridViewComboBoxColumn(); x1.DataSource = alternatif[alternatif.Count-1].keterangan; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = krit[0].keterangan[krit[0].keterangan.Length-1]; dg.Columns.Insert(alternatif.Count+1,x1);*/ /*string [] bidang = new

string[]{"Kaderisasi","Syiar","Kewirausahaan","Akkom","LSO-IT"};

string [] nomor = new string[]{"1","2","3","4","5"}; for (int i = 1;i<6;i++) { x1 = new DataGridViewComboBoxColumn(); x1.DataSource = nomor; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = bidang[i-1]; dg.Columns.Insert(alternatif.Count+i+1,x1); }*/

/*for (int i = 2;i<alternatif.Count+7;i++) { dg.Columns[i].Width = 1107/(alternatif.Count+6); } dg.Columns[0].Width = 40; dg.Columns[1].Width = (2*(1107/(alternatif.Count+6)))-40;*/ dg.Rows.Add();

dg.Rows[0].Cells[0].Value = "1";

(12)

void Button1Click(object sender, EventArgs e) {

count++;

dg.Rows.Add();

dg.Rows[count-1].Cells[0].Value = count.ToString();

}

public struct hasil {

public string nama { get; set; } public int [] nilai_p { get; set; } /*public string [] minat { get; set; } public bool habis { get; set; }

public bool free { get; set; } public int index { get; set; }*/ }

void Button2Click(object sender, EventArgs e) {

DataGridViewComboBoxCell x1; //float jumlah = 0f;

da = new hasil[count];

for (int i = 0;i<count;i++) {

da[i].nilai_p = new int[krit.keterangan.Length]; da[i].nama =

dg.Rows[i].Cells[1].Value.ToString();

for (int j = 2;j<alternatif.Count+2;j++) { x1 = (DataGridViewComboBoxCell)dg[j,i]; da[i].nilai_p[j-2] = x1.Items.IndexOf(dg[j,i].Value.ToString()); //MessageBox.Show(j.ToString()); //MessageBox.Show((alternatif[i].prioritas [x1.Items.IndexOf(dg[j,i].Value.ToString())]).ToString());

(13)

}

/*da[i].minat = new string [] {dg[alternatif.Count+2,i].Value.ToString(), dg[alternatif. Count+3,i].Value.ToString(), dg[alternatif. Count+4,i].Value.ToString(), dg[alternatif. Count+5,i].Value.ToString(), dg[alternatif. Count+6,i].Value.ToString()}; //MessageBox.Show(i.ToString()); da[i].index = 0; da[i].free = true; da[i].habis = false; pb1.Value = (100*(i+1))/count; Thread.Sleep(300);*/ } } } }

3. Nilai.cs

/* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 6:04 PM *

* To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; namespace AHPTest {

(14)

/// <summary>

/// Description of Nilai. /// </summary>

public partial class Nilai : Form {

pengumpulan.hasil [] data_hasil; Data m_krit;

List<Data> m_altern; public juara [] kandidat;

public Nilai(pengumpulan.hasil [] data_hasil,Data m_krit,List<Data> m_altern)

{ //

// The InitializeComponent() call is required for Windows Forms designer support.

// InitializeComponent(); this.data_hasil = data_hasil; this.m_krit = m_krit; this.m_altern = m_altern; inisialisasi_tabel2(); //

// TODO: Add constructor code after the InitializeComponent() call. // } void inisialisasi_tabel() { dg.Columns.Add("C0","Nama Kandidat"); int hitung = 0;

while (hitung < m_krit.keterangan.Length) { dg.Columns.Add("C"+(hitung+1).ToString(),"Nila i Alt"/*m_krit.keterangan[hitung]*/); dg.Columns.Add("C"+(hitung+2).ToString(),"Nila i Alt"); hitung++; } dg.Columns.Add("C"+hitung.ToString(),"Total");

(15)

int hitung1; int bantu ;

for (int i = 0;i<data_hasil.Length;i++) {

dg.Rows.Add();

dg[0,i].Value = data_hasil[i].nama; hitung1 = 0;

bantu = 1;

while (hitung1 < hitung) { dg[bantu++,i].Value = m_krit.prioritas[hitung1].ToString("N4"); dg[bantu++,i].Value = m_altern[hitung1].prioritas[data_hasil[i].nilai_p[hitung1]].To String("N4"); //MessageBox.Show(bantu.ToString()); hitung1++; } } } void inisialisasi_tabel2() { dg.Columns.Add("C0","Peserta"); dg.Columns[0].Width = 120; dg.Columns.Add("C1",""); dg.Rows.Insert(0,""); dg[0,0].Value = "Kriteria";

dg[1,0].Value = "Eigen Vector(e)";

for (int i =1;i<m_krit.keterangan.Length+1;i++) { dg.Rows.Insert(i,m_krit.keterangan[i-1]); dg[1,i].Value = (m_krit.prioritas[i-1]*100f).ToString("N4"); } dg.Rows.Insert(m_krit.keterangan.Length+1, "Total" ); int k = 0; int bantu = 1;

(16)

float jlh; while (k<data_hasil.Length) { jlh = 0; dg.Columns.Add("C",data_hasil[k].nama); dg.Columns.Add("C",""); bantu+=2;

dg[bantu-1,0].Value = "Nilai Peserta(n)"; dg[bantu,0].Value = "e x n";

dg.Columns[bantu].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; dg.Columns[bantu].Width = 50; for (int j = 1;j<m_krit.keterangan.Length+1;j++) {

dg[bantu-1,j].Value =

(m_altern[j-1].prioritas[data_hasil[k].nilai_p[j-1

]]/m_altern[j-1].prioritas[0]).ToString("N4");

dg[bantu,j].Value =

((m_altern[j-1].prioritas[data_hasil[k].nilai_p[j-1

]]/m_altern[j-1].prioritas[0])*m_krit.prioritas[j-1]*100f).ToString("N2"); jlh += float.Parse(dg[bantu,j].Value.ToStr ing()); } if (k%2 == 0) { dg.Columns[bantu-1].DefaultCellStyle.BackColor = Color.Gray; dg.Columns[bantu].DefaultCellStyle.BackCol or = Color.Gray; } else { dg.Columns[bantu-1].DefaultCellStyle.BackColor = Color.White; dg.Columns[bantu].DefaultCellStyle.BackCol or = Color.White; }

(17)

dg[bantu,6].Value = jlh.ToString(); k++;

}

kandidat = new juara[5]; for (int i =0;i<5;i++) {

kandidat[i].index = 0; kandidat[i].jumlah = 0f;

for (int j = 3;j<bantu+2;j+=2) if (i == 0) { if (float.Parse(dg[j,6].Value.ToString()) > kandidat[i].jumlah) { kandidat[i].jumlah = float.Parse(dg[j,6].Value.ToString()); kandidat[i].index = (sbyte)j; } } else { if ((float.Parse(dg[j,6].Value.ToString()) > kandidat[i].jumlah) && (float.Parse(dg[j,6].Value.ToString() ) <= kandidat[i-1].jumlah) && (sbyte)j !=

kandidat[i-1].index ) { kandidat[i].jumlah = float.Parse(dg[j,6].Value.ToString()); kandidat[i].index = (sbyte)j; } } } //MessageBox.Show(juara[4].ToString()); dg.Columns[kandidat[0].index].DefaultCellStyle.Bac kColor = Color.DarkOrange; dg.Columns[kandidat[0

(18)

].index-1].DefaultCellStyle.BackColor = Color.DarkOrange; dg.Columns[kandidat[1].index].DefaultCellStyle.Bac kColor = Color.DodgerBlue; dg.Columns[kandidat[1 ].index-1].DefaultCellStyle.BackColor = Color.DodgerBlue; dg.Columns[kandidat[2].index].DefaultCellStyle.Bac kColor = Color.DarkGray; dg.Columns[kandidat[2 ].index-1].DefaultCellStyle.BackColor = Color.DarkGray; dg.Columns[kandidat[3].index].DefaultCellStyle.Bac kColor = Color.DarkOrchid; dg.Columns[kandidat[3 ].index-1].DefaultCellStyle.BackColor = Color.DarkOrchid; dg.Columns[kandidat[4].index].DefaultCellStyle.Bac kColor = Color.DarkOliveGreen; dg.Columns[kandidat[4 ].index-1].DefaultCellStyle.BackColor = Color.DarkOliveGreen; }

public struct juara {

public sbyte index; public float jumlah; } } }

4. Data.cs

/* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 5:39 PM *

* To change this template use Tools | Options | Coding | Edit Standard Headers.

*/

(19)

namespace AHPTest {

/// <summary>

/// Inilah variabel yang menyimpan nilai matriks, serta memunyai fungsi untuk memrosesnya dengan algoritma AHP. /// </summary>

public class Data {

public string [] keterangan;//variabel penyimpan bacaan keterangan

float [][] matriks;//variabel penympan matriks float [] kolom;//untuk menyimpan nilai setiap kolom public float [] prioritas;//menyiman nilai eigenvektor yang merupakan nilai prioritas

float [][] temp;//matriks pembantu mencari nilai cr public float CR;//variabel nilai inkonsistensi

public Data(string [] keterangan, float [][] matriks) {

this.keterangan = keterangan;//memindahkan nilai yang ada di parameter keterangan ke variabel keterangan form ini (nilai parameter ini adalah nilai dari form sebelumnya) this.matriks = matriks;//memindahkan nilai yang ada di parameter matriks ke matriks keterangan form ini kolom = new float[keterangan.Length];//membuat tempat nilai yang bisa ditampung kolom sepanjang jumlah poin-poin

prioritas = new float[keterangan.Length];//membuat tempat nilai bagi eigen vektor

temp = new float[keterangan.Length][]; for (int i= 0;i<keterangan.Length;i++) {

temp[i] = new float[keterangan.Length]; } proses(); }

(20)

void proses()//algoritma AHP {

float jlh = 0f,eigen = 0f;//jlh sebagai penampung nilai setiap baris, eigen disini bukan eigen vektor, tapi eigen value

for (int i = 0;i<kolom.Length;i++)//proses untuk mencari jumlah nilai setiap kolom

{

for (int j =0;j<kolom.Length;j++) { kolom[i] += float.Parse(matriks[j][i].ToSt ring("N4")); } }

for (int i = 0;i<kolom.Length;i++)//proses membagi nilai setiap sel dengan jumlah nilai kolom yang bersesuaian {

for (int j =0;j<kolom.Length;j++) { temp[j][i] = float.Parse((float.Parse((mat riks[j][i]).ToString("N4")) / kolom[i]).ToString("N4")); } }

for (int i = 0;i<kolom.Length;i++)//proses untuk mencari jumlah nilai setiap baris

{

for (int j =0;j<kolom.Length;j++) {

jlh += temp[i][j]; }

prioritas[i] = float.Parse((jlh/(float)kolom.L ength).ToString("N4"));//Nilai eigen vektor dari suatu poin = nilai jumlah baris dari poin yang bersangkutan/banyaknya poin-poin

(21)

kolom[i] = 0f; }

for (int i = 0;i<kolom.Length;i++) {

for (int j =0;j<kolom.Length;j++) {

temp[j][i] = float.Parse ((matriks[j][i] * prioritas[i]).ToString("N4"));

} }

for (int i = 0;i<kolom.Length;i++) {

for (int j =0;j<kolom.Length;j++) { kolom[i] += temp[i][j]; } kolom[i] /= prioritas[i]; }

for (int i = 0;i<kolom.Length;i++) { jlh += kolom[i]; } eigen = jlh/(float)kolom.Length; float CI = (eigen-(float)kolom.Length)/(float)kolom.Length; float RC = 0f; if ((float)kolom.Length == 4f) RC = 0.9f; else RC = 1.12f;

(22)

CR = (CI/RC)*100f; //MessageBox.Show("CR = "+CR.ToString()+"%",prioritas[0].ToString("N4")); //MessageBox.Show((prioritas[0]).ToString("N4")+": "+(prioritas[1]).ToString("N4")+":"+(prioritas[2]).ToString("N 4")+":"+(prioritas[3]).ToString("N4")); } } }

Referensi

Dokumen terkait

Penelitian yang menguji pengaruh aktivitas lindung nilai terhadap agresivitas pajak dimulai oleh Graham dan Smith (1999) yang menemukan bahwa perusahaan yang

Salah satu upaya yang dapat dilakukan oleh dunia pendidikan untuk mampu berkompetisi di era globalisasi adalah dengan mengintegrasikan TIK ke dalam proses belajar.Salah satu

It is concluded that teaching writing by using Transition Action Details Strategy in writing recount text gives significant effect on students’ writing skill at class X

Berdasarkan adanya faktor yang mendukung dan faktor yang menghambat, maka peran perawat dalam pelaksanaan Patient Safety dan perlindungan hak pasien di Rumah

Scanned by CamScanner... Scanned

5.The mean scores of post-test cycle 2 were 84 for meaning, 76 for pronunciation, 80 for spelling, and 73 for using words Students’ improvement in teaching and learning

Secara fisik karena melakukan aktivitas berproduksi, secara fikiran karena mereka dilatih untuk kreatif dan menggunakan hitung hitungan biaya produksi, penjualan

Guru yang mengampu pada jam terakhir menutup kegiatan belajar dengan berdoa 5.. Guru menutup