net/publication/325082090
CITATIONS
READS
0
7,362
2 authors:
Murni Marbun
Hengki Tamando Sihotang
University of Sumatera Utara
STMIK PELITANUSANTARA MEDAN
18 PUBLICATIONS 31 CITATIONS
28 PUBLICATIONS 126 CITATIONS
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Hengki Tamando Sihotang on 11 May 2018.
Murni Marbun
Bosker Sinaga
CV.Rudang Mayang
Penulis:
Murni Marbun
Bosker Sinaga
ISBN: 978-602-51936-1-3
Editor:
Naetty Siahaan
Tince Flora Manurung
Penyunting:
Hengki Tamando Sihotang
Penerbit:
CV.Rudang Mayang
Redaksi:
Jl. Prof. T. Zulkarnain No.3 Medan Sumatera
Utara 20154
Email : hengki_tamando@yahoo.com
Telp/HP : 085297583991
Distributor Tunggal:
CV Rudang Mayang
Jl. Prof. T. Zulkarnain No.3 Medan Sumatera
Utara 20154
Email : hengki_tamando@yahoo.com
Telp/HP : 085297583991
Cetak Pertama:-
Puji syukur ke hadirat Tuhan Yang Maha Kuasa, yang telah memberikan
rahmat-Nya sehingga Buku Ajar Sistem Pendukung Keputusan Penilaian Hasil Belajar
untuk mahasiswa/i Program Studi Teknik Informatika STMIK Pelita Nusantara Medan
dapat diselesaikan dengan sebaik-baiknya.
Buku Ajar ini dibuat sebagai penunjang mata kuliah Fuzzy Logic dan Sistem
Pendukung Keputusan untuk mahasiswa/i Program Studi Teknik Informatika STMIK
Pelita Nusantara Medan. Buku Ajar ini diharapkan dapat membantu mahasiswa/i dalam
memahami penggunaan aplikasi sistem pendukung keputusan dan pemahaman tentang
salah satu metode penyelesaian sistem pendukung keputusan dengan metode TOPSIS.
Penyususun Buku ajar ini masih jauh dari sempurna, oleh karena itu penyusun
mengharapkan kritik dan saran yang membangun guna penyempurnaan Buku ajar ini
dimasa yang akan datang.
Akhir kata, penyusun mengucapkan banyak terima kasih kepada STMIK Pelita
Nusantara Medan dan semua pihak yang telah membantu penyelesaian Buku ajar ini,
baik secara langsung maupun tidak langsung.
BAB I PENDAHULUAN........................................................................... 1
1.1 Sistem Pendukung Keputusan................................................... 1
1.2 Konsep Pengambilan Keputusan .............................................. 1
1.3 Defenisi Keputusan ................................................................... 2
1.4 Karakteristik dan Kemampuan SPK ......................................... 8
1.5 Keuntungan Pengguna SPK ...................................................... 9
1.6 Komponen SPK..............................................................................10
DAFTAR PUSTAKA.........................................................................................118
Fase Desain
Formulasi Sebuah Model Menentukan Kriteria untuk Dipilih
Mencari Alternatif
Fase Pilihan
Solusi untuk Model Analisis Sensitivitas Memilih Alternatif Terbaik Rencana Implementasi
Implementasi Solusi
Gambar 1.1
Fase-Fase Pengambilan Keputusan / Proses Pemodelan SPK
Ada beberapa istilah yang perlu diketahui dalam memahami sistem fuzzy, yaitu:
1) Variabel fuzzy merupakan variabel yang hendak dibahas dalam suatu sistem fuzzy
(Sri Kusuma Dewi dan Hari Purnomo, 2004:6). Contoh: umur, temperatur, tanggungan,
pendapatan, pengeluaran, dsb.
2) Himpunan fuzzy
Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau keadaan
tertentu dalam suatu variabel fuzzy.
3) Semesta pembicaraan adalah keseluruhan nilai yang diperbolehkan untuk
dioperasikan dalam suatu variabel fuzzy.
4) Keseluruhan nilai yang diizinkan dalam semesta pembicaraan dan boleh
dioperasikan dalam suatu himpunan fuzzy.
𝜇 [𝑥]− 0 𝑥−𝑎
= (2.1)
1−0 𝑏−𝑎
c. Selang [b, ∞)
Fungsi keanggotaan himpunan fuzzy pada representasi linear NAIK pada selang
[xmax, ∞) memiliki nilai keanggotaan = 0. Dari uraian di atas, fungsi keanggotaan
himpunan fuzzy pada representasi linear NAIK, dengan domain (-∞, ∞) adalah:
0, 𝑥 ≤𝑎
𝜇[𝑥] = {𝑥−𝑎 , 𝑎 ≤ 𝑥 ≤ (2.3)
𝑏−𝑎
𝑏
1, 𝑥 ≥ 𝑏
Himpunan fuzzy pada representasi linear NAIK direpresentasikan pada Gambar 2.1.
Derajat
Keanggotaan
a domain b x
Sumber : Kusumadewi, Sri., Hartati, S., Harjoko, A., dan Wardoyo, R.2006. “Fuzzy
Multi Attribute Decision Making (FMADM), [9]
Sedangkan pada representasi linear TURUN, garis lurus dimulai dari nilai domain
dengan derajat keanggotaan himpunan fuzzy (μ[x]) tertinggi pada sisi kiri, kemudian
bergerak menurun ke nilai domain yang memiliki derajat keanggotaan himpunan fuzzy
lebih rendah. Fungsi keanggotaan representasi linear TURUN dapat dicari dengan cara
sebagai berikut: Himpunan fuzzy pada representasi linear TURUN memiliki domain (-
∞, ∞) terbagi menjadi tiga selang, yaitu: [0, a] , [a, b], dan [b, ∞).
a. Selang [0, a]
Fungsi keanggotaan himpunan fuzzy pada representasi linear TURUN pada selang
[0, a] memiliki nilai keanggotaan = 0
b. Selang [a, b]
Pada selang [a, b] fungsi keanggotaan himpunan fuzzy pada representasi linear
TURUN direpresentasikan dengan garis lurus yang melalui dua titik, yaitu dengan
koordinat (a, 1) dan (b, 0). Misalkan fungsi keanggotaan fuzzy TURUN dari x
disimbolkan dengan μ[x], maka persamaan garis lurus tersebut adalah:
Karena pada selang [a, b], gradien garis lurus = -1, maka persamaan garis lurus tersebut
menjadi:
𝜇[𝑥] = (−1) (2.6)
𝑥−𝑏
𝑎−𝑏
(2.7)
𝜇[𝑥] = 𝑏−𝑥
𝑏−𝑎
c. Selang [b, ∞)
Fungsi keanggotaan himpunan fuzzy pada representasi linear TURUN pada selang
[b, ∞] memiliki nilai keanggotaan = 0. Dari uraian di atas, fungsi keanggotaan
himpunan fuzzy pada representasi linear TURUN, dengan domain (-∞, ∞) adalah:
1, 𝑥 ≤ 𝑎
𝑏−𝑥
µ[x] = { , 𝑎≤𝑥≤𝑏
𝑏−𝑎 (2.8)
0, 𝑥 ≥ 𝑏
Himpunan fuzzy pada representasi linear turun direpresentasikan pada Gambar 2.2.
µ[x]
a domain b x
Sumber : Kusumadewi, Sri., Hartati, S., Harjoko, A., dan Wardoyo, R.2006. “Fuzzy
Multi Attribute Decision Making (FMADM), [10]
Fungsi keanggotaan segitiga ditandai adanya 3 (tiga) parameter {a, b, c} yang akan
menentukan kordinat x dari tiga sudut, rumus nya sebagai berikut :
𝑥−𝑎 𝑐−𝑥
𝑆𝑒𝑔𝑖𝑡𝑖𝑔𝑎 (𝑥: 𝑎, 𝑏, 𝑐) = max ( ) (2.9)
𝑏−𝑎 𝑐−𝑏
Untuk menentukan fungsi keanggotaan kurva segitiga adalah sebagai berikut :
0;
x a atau x c
x (x
a) /(b axb (2.10)
a);
(b x) /(c bxc
b);
Himpunan fuzzy pada representasi linear turun direpresentasikan pada gambar 2.3.
1.0
a b c x
Sumber : Kusumadewi, Sri., Hartati, S., Harjoko, A., dan Wardoyo, R.2006. “Fuzzy
Multi Attribute Decision Making (FMADM), [11]
dengan i = 1, 2, 3, . . . , m; dan j = 1, 2, 3, . . . , n;
dimana 𝑟𝑖𝑗 adalah elemen dari matriks keputusan yang ternormalisasi R. 𝑥𝑖𝑗 adalah
elemen matriks dari keputusan X.
3. Membuat matriks keputusan yang ternormalisasi terbobot.
dengan i = 1, 2, 3, . . . , m; dan j = 1, 2, 3, . . . , n;
dimana 𝑣𝑖𝑗 adalah elemen dari matriks keputusan yang ternormalisasi terbobot V.
𝑤𝑖𝑗 adalah bobot dari kriteria ke-j
𝑟𝑖𝑗 adalah elemen dari matriks keputusan yang ternormalisasi R.
4. Menentukan matriks solusi ideal positif dan solusi ideal negatif.
Solusi ideal positif dinotasikan 𝐴+ , sedangkan solusi ideal negatif dinotasikan 𝐴−.
Berikut ini adalah persamaan dari 𝐴+ dan 𝐴− :
a. 𝐴+ = {(max 𝑣𝑖𝑗 | 𝑗𝜖 𝐽 ), (min 𝑣𝑖𝑗 | 𝑗 𝜖 𝐽′ ), 𝑖 = 1,2,3, … , 𝑚}
= {𝑣+, 𝑣+, 𝑣+, … , 𝑣+}
1 2 3 𝑛
Dimana :
𝑆+ adalah jarak alternatif ke-i dari solusi ideal positif,
𝑖
dengan i = 1,2,3,..., m
dimana 𝑐+𝑖 adalah kedekatan relatif dari alternatif ke-i terhadap solusi ideal positif,
𝑆+ adalah jarak alternatif ke-i dari solusi ideal positif dan 𝑆− adalah jarak alternatif
𝑖 𝑖
Input Data :
Data Kriteria Penentuan Nilai Hasil Belajar
Nilai Bobot Tiap Kriteria
Pembuatan Matriks Perhitungan (Matriks Awal) Berdasarkan Input Dengan Metode TOPS
𝑋𝑖𝑗
rij =
√∑𝑚 𝑥𝑖𝑗 2
𝑖
A+ = {𝑣+,
123 𝑣+, 𝑣+, …𝑛, 𝑣+}
A− = {v−,
123 v−, v−, …n, v−}
𝑆+ = (∑(𝑣 − 𝑣+)2
𝑖 𝑖𝑗 𝑗
𝑗 =1
𝑆− = (∑(𝑣 − 𝑣−)2
𝑖 𝑖𝑗 𝑗
𝑗 =1
𝑆−
𝑐+ =𝑖
𝑖
(𝑆−
𝑖
+ 𝑆+)
𝑖
SELESAI
UML (Unified Modeling Language) adalah sebuah “bahasa” yang sudah menjadi
standar dalam industri untuk visualisasi, merancang, dan mendokumentasikan sistem
piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem.
Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi
piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi
dan jaringan apapun serta ditulis dalam bahasa pemrograman apapun. Tetapi karena
UML juga mengguanakan class dan operation dalam konsep dasarnya, maka ia lebih
cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++,
Java, C#, atau VB.NET. Walapun demikian, UML tetap dapat digunakan untuk
modeling aplikasi prosedural dalam VB atau C.
Diagram UML dapat dibagi dalam dua kelompok besar yaitu : Behavioral
Diagram dan Structural diagram, Behavioral diagram digunakan untuk
menggambarkan, menunjukan mengembangkan dan mendokumentasikan aspek-
aspek dinamis dari sebuah sistem. Behavioral terdiri dari :
1. Use Case Diagram
2. Sequence Diagram
3. Activity Diagram
4. Class Diagram
Sedangkan Struktural diagram digunakan untuk menggambarkan, menunjukan,
mengembangkan, dan mendokumentasikan aspek-aspek statis suatu sistem. Struktural
diagram terdiri dari :
1. Class diagram dan Object Diagram
2. Component Diagram
3. Deployment Diagram
Actor
2. Deksripsi suatu set aksi yang dikerjakan oleh
sistem.
Use case
3. Penghubung actor dan use case
Transition
4. <............. Relasi use case tambahan
Extend
5. ...........> Relasi use case tambahan ke sebuah use case
Include dimana use case yang ditambahkan memerlukan
use case ini
untuk menjalankan fungsinya
Pengirim
Send
7.
Percabangan
Join
8.
Penggabungan
Fork
Pada bagian paling atas memuat nama kelas, pada bagian tengah mendaftarkan
atribut-atribut yang dimiliki sebuah kelas sedangkan paling bawah mendaftarkan
operasi-operasi yang dimiliki kelas yang bersangkutan.
Class diagram umumnya tersusun dari elemen class, interface, dependency,
Generalization dan Association. Relasi dependency menunjukan bagaimana terjadi
ketergantungan antar class yang ada. Relasi Generalization menunjukan bagaimana
suatu class menjadi superclass dari class lainnya dan class tersebut menjadi subclasss
dari class tersebut. Relasi Association menggambarkan navigasi antar class, berapa
banyak obyek lain bisa berhubungan dengan satu obyek (multiplicity antar class), dan
apakah satu class menjadi bagian dari class lainnya (agregation).
NILAI
NO NIM NAMA
HDR TUGAS UTS UAS
1 130121062 Angelia Mariyani Manurung 13 90 83 70
2 130121008 Ceriah Antriany Siringoringo 14 95 93 70
3 130121028 Dani Demianto Ginting 12 90 73 65
4 130121064 Dennis Werstling Simanjuntak 14 80 100 80
5 130121032 Desi Ulandari Hutasoit 14 90 73 75
Gambar 5.1
Bilangan fuzzy Untuk Kehadiran
Gambar 5.2
Bilangan fuzzy Untuk Kriteria Nilai Tugas
Gambar 5.3
Bilangan fuzzy Untuk Kriteria Nilai UTS
Gambar 5.4
Bilangan fuzzy Untuk Kriteria Nilai UAS
2. Menentukan Bobot Referensi untuk kriteria (C1,C2,C3. dan C4) adalah (1,00 ;1,00
; 1,00 ;1,00)
Maka :
X(1) = √12 + 12 + 12 + 12 + 12
= 2,236068
Maka :
1
R(1, 1) =
2,236068 =0,447214
1
R(2, 1) =
2,236068 =0,447214
1
R(3, 1) =
2,236068 =0,447214
R(4, 1) = 1
2,236068 =0,447214
1
R(5, 1) =
2,236068 =0,447214
Maka :
R(1, 2) = 1
4,5625 = 0,468165
R(2, 2) = 1
4,5625 = 0,468165
1
R(3, 2) =
4,5625 = 0,468165
0,75
R(4, 2) =
4,5625 = 0,351123
R(5, 2) = 1
4,5625 = 0,468165
R(5,4) = 0,75
1,677051 = 0,448965
Dari hasil perhitungan diperoleh matriks keputusan ternormalisasi terbobot seperti pada
tabel berikut :
Tabel 5.14 Matriks Keputusan Ternormalisasi Terbobot
i V (i,1) V (i,2) V (i,3) V (i,4)
1 0,447214 0,468165 0,492366 0,448965
2 0,447214 0,468165 0,492366 0,448965
3 0,447214 0,468165 0,369274 0,448965
4 0,447214 0,351123 0,492366 0,448965
5 0,447214 0,468165 0,369274 0,448965
5. Menentukan matriks solusi ideal positif (A+) dan solusi ideal negatif (A--) dapat
dilihat pada tabel berikut :
Tabel 5.15 Solusi Ideal Positif (A+)
V(i,1) V(i,2) V(i,3) V(i,4)
0,447214 0,468165 0,492366 0,448965
Solusi
6. Menghitung seperasi atau jarak alternatif dari solusi ideal positif (S+) dengan
rumus :
2
𝑆+ = √∑𝑛 (𝑣 − 𝑣+)
𝑖 𝑗 =1 𝑖𝑗 𝑗
Menghitung seperasi atau jarak alternatif dari solusi ideal negatif (S-) :
2
𝑆+ = √∑𝑛 (𝑣 − 𝑣+)
𝑖 𝑗 =1 𝑖𝑗 𝑗
Dari hasil perhitungan didapat seperasi (jarak) solusi ideal positif dan jarak solusi
ideal negatif seperti pada tabel berikut :
Tabel 5.17 Nilai Seperasi (Jarak)
V(i,1) V(i,2) V(i,3) V(i,4) S+ S-
0,447214 0,468165 0,492366 0,448965 0 0,169853
0,447214 0,468165 0,492366 0,448965 0 0,169853
0,447214 0,468165 0,369274 0,448965 0,123091 0,117041
0,447214 0,351123 0,492366 0,448965 0,117041 0,123091
A (V max)
+ 0,447214 0,468165 0,369274 0,448965
A (V min)
-
0,447214 0,468165 0,492366 0,448965
7. Menghitung kedekatan relatif dari setiap alternatif terhadap sulosi ideal positif (ci+)
dengan rumus sebagai berikut :
𝑆−
𝑐+ = (𝑆− +𝑖 𝑆+)
𝑖
𝑖 𝑖
dengan i = 1,2,3,..., m
8. Meranking Alternatif
Pada tabel berikut merupakan hasil proses perhitungan yang sudah terurut dari nilai
yang terbesar sampai nilai yang terkecil. Hasil perangkingan setiap mahasiswa
dapat dilihat pada tabel dibawah ini :
Tabel 5.18 Hasil Proses Perankingan
No. NAMA S+ S- C+
1 Angelia Mariyani Manurung 0 0,169853 1
2 Ceriah Antriany Siringoringo 0 0,169853 1
3 Dennis Werstling Simanjuntak 0,1170411 0,123091 0,5125979
4 Dani Demianto Ginting 0,1230915 0,117041 0,4874021
5 Desi Ulandari Hutasoit 0,1230915 0,117041 0,4874021
C+ NA
NO NIM NAMA
1 130121062 Angelia Mariyani Manurung 1 A
2 130121008 Ceriah Antriany Siringoringo 1 A
3 130121064 Dennis Werstling Simanjuntak 0,5126 A
4 130121028 Dani Demianto Ginting 0,4874 B
5 130121032 Desi Ulandari Hutasoit 0,4874 B
2. Activity Diagram
Pada sistem pendukung keputusan ini, aktifitas diagram dimulai dengan melakukan
penginputan data-data mahasiswa, mata kuliah, semester, program studi dan dosen
yang mengajar, kemudian memeriksa setiap data-data kriteria apakah benar sudah
terisi atau belum, jika belum terisi maka tidak akan dilanjutkan dan kembali ke
penginputan data, dan jika sudah terisi maka akan dilanjutkan dengan penyimpanan
data. Setelah data disimpan, maka akan ada proses-proses selanjutnya yang
dilakukan oleh sistem. Output sistem adalah nilai akhir dari mahasiswa.
Activity Diagram sistem pendukung keputusan ini dapat dilihat seperti gambar
dibawah ini :
Gambar 6.2
Activity Diagram Pada SPK Penilaian Nilai Hasil Belajar
: Do
sen
Gambar 6.3
Sequence Diagram Untuk Login
Seterusnya pada sequence diagram input nilai mahasiswa, setelah user berhasil masuk
ke halaman utama, maka user dapat menemukan form input data dari menu file, maka
akan ditampilkan sub menu input data. Adapun data-data yang akan diinput oleh user
adalah Nama, NIM, Mata Kuliah, Nama Dosen, Semester, Program Studi dan Nilai.
Setelah user menginput data, maka user dapat mengklik tombol simpan untuk
menyimpan data tersebut. Maka data akan disimpan dalam database. Sequence
diagram form input data dapat dilihat pada gambar 6.4 dan gambar 6.14 berikut ini :
: Dosen
1 : Login()
3 : Input Nama, NIM, Kelas, Semester, Program St udi, C1, C2, C3, C4()
,
Gambar 6.4
Sequence Diagram Untuk Data Mahasiswa
: Dosen
1 : Login()
Gambar 6.5
Sequence Diagram Untuk Data Dosen
: Do sen
1 : Login()
Gambar 6.6
Sequence Diagram Untuk Input Mata Kuliah
: Dosen
1 : Login()
3 : Input Nilai()
Gambar 6.7
Sequence Diagram Untuk Input Nilai
: Dosen
1 : Klik Rating Kecocokan()
2 )
: Klik Lanjut Form Nilai X(
Gambar 6.8
Sequence Diagram Untuk Form Rating Kecocokan dan Form Nilai X
Normalisasi Database
: Dosen
1 : Klik Lanjut pada Form Normalisasi()
Gambar 6.9
Sequence Diagram Untuk Form Normalisasi
Normalisasi Database
: Dosen
1 : Klik Lanjut pada Form Normalisasi()
Gambar 6.10
Sequence Diagram Form Normalisasi Bobot
: Dosen
1 : Klik Lanjut dari Form Normal
isasi()
2:
Klik Lanjut untuk Solusi Ideal
()
3 : Nilai Max dan Min()
Gambar 6.11
Sequence Diagram Form Solusi Ideal
: Dosen
1 : Klik lanjut dari Form Solusi Ideal()
Gambar 6.12
Sequence Diagram Form Jarak Pisah
: Dosen
1 : Klik lanjut dari Form Jarak Pisah()
Gambar 6.13
Sequence Diagram Kedekatan
: Dosen
1 : Klik Lanjut dari Form Kedekatan()
Gambar 6.14
Sequence Diagram Hasil Akhir
Gambar 6.5
Class Diagram Sistem Pendukung Keputusan
FORM LOGIN
USER NAME
PASSWORD
BATAL LOGIN
SIMPAN KELUAR
1. Form Login
Tampilan form login adalah tampilan pada saat aplikasi pertama kali dijalankan.
Pada halaman ini user memasukkan username dan password untuk bisa masuk ke
form berikutnya. Dan jika user tidak memasukkan password dan username yang
benar, maka user tidak bisa masuk ke aplikasi tersebut. Dan disediakan juga
registrasi untuk user baru, seandainya jika user berganti. Pada tampilan login, untuk
masuk ke halaman selanjutnya, maka user dapat mengeksekusi tombol login. Dan
kemudian, user akan masuk ke halaman menu utama
Source Code Form Login sebagai berikut :
Public Class frmLogin
Dim OCommand As OdbcCommand
Dim OReader As OdbcDataReader
Pada form ini, akan ditampilkan halaman input data mahasiswa yang terdiri dari
Nim, Nama, Jenjang dan Program Studi. Untuk menambah data baru maka user
mengeksekusi tombol “tambah”, dan kemudian mengisi data sesuai dengan apa
yang diminta oleh aplikasi. Setiap data baru yang diinput, user menyimpan data
yang telah diinput, dengan menekan tombol “simpan”. Pada form ini juga tersedia
menu edit, hapus, batal dan keluar.
Source Code Form Data Mahasiswa sebagai berikut :
Enum state
tambah = 1
simpan = 2
edit = 3
End Enum
Sub isiTabel()
Dim str As String = "select nim as 'NIM', nama as 'Nama Mahasiswa',
jenjang as 'Jenjang Studi', prodi as 'Program Studi' from tbl_mahasiswa"
Dim ds As New DataSet
DAdapter = New OdbcDataAdapter(str, Koneksi)
DAdapter.Fill(ds, "tbl_mahasiswa")
Me.DataGridView1.DataSource = ds.Tables(0)
DataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells
End Sub
Sub hapusInput()
txtNim.Clear()
txtNama.Clear()
cmbProdi.SelectedIndex = 0
cmbJenjang.SelectedIndex = 0
End Sub
Select Case a
Case aksi.tambah
hapusInput()
setState(state.simpan)
txtNim.Focus()
Case aksi.simpan
If cekInput() = True Then
sql = "insert into tbl_mahasiswa values('" & txtNim.Text
& "','" & txtNama.Text & "','" & cmbJenjang.Text & "','" & cmbProdi.Text &
"')"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Inputan Tidak Boleh Kosong!")
End If
Case aksi.edit
If cekInput() = True Then
Sub setDataFromNim()
Dim sql As String = ""
sql = "select * from tbl_mahasiswa where nim='" & txtNim.Text & "'"
OCommand = New OdbcCommand(sql, Koneksi)
DReader = OCommand.ExecuteReader
If DReader.HasRows Then
setState(state.edit)
While DReader.Read
nimParam = DReader(0).ToString
txtNama.Text = DReader(1).ToString
cmbJenjang.Text = DReader(2).ToString
cmbProdi.Text = DReader(3).ToString
End While
Else
setState(state.simpan)
End If
DReader.Close()
End Sub
4. Form Dosen
Pada form ini, akan ditampilkan halaman input data dosen yang terdiri dari NIDN,
Nama dan Pendidikan. Untuk menambah data baru maka user mengeksekusi
tombol “tambah”, dan kemudian mengisi data sesuai dengan apa yang diminta oleh
aplikasi. Setiap data baru yang diinput, user menyimpan data yang telah diinput,
Enum state
tambah = 1
simpan = 2
edit = 3
End Enum
Enum aksi
tambah = 1
simpan = 2
edit = 3
hapus = 4
batal = 5
keluar = 6
End Enum
Sub isiTabel()
Dim str As String = "select nidn as 'NIDN', nama as 'Nama Dosen',
pendidikan as 'Pendidikan Terakhir' from tbl_dosen"
Dim ds As New DataSet
DAdapter = New OdbcDataAdapter(str, Koneksi)
DAdapter.Fill(ds, "tbl_dosen")
Me.DataGridView1.DataSource = ds.Tables(0)
Sub hapusInput()
txtNIDN.Clear()
txtNama.Clear()
cmbPendidikan.SelectedIndex = 0
End Sub
Select Case a
Case aksi.tambah
hapusInput()
setState(state.simpan)
txtNIDN.Focus()
Case aksi.simpan
If cekInput() = True Then
sql = "insert into tbl_dosen values('" & txtNIDN.Text &
"','" & txtNama.Text & "','" & cmbPendidikan.Text & "')"
OCommand = New OdbcCommand(sql, Koneksi)
Sub setDataFromNidn()
Dim sql As String = ""
sql = "select * from tbl_dosen where nidn='" & txtNIDN.Text & "'"
OCommand = New OdbcCommand(sql, Koneksi)
DReader = OCommand.ExecuteReader
If DReader.HasRows Then
setState(state.edit)
While DReader.Read
nidnParam = DReader(0).ToString
txtNama.Text = DReader(1).ToString
cmbPendidikan.Text = DReader(2).ToString
End While
Else
setState(state.simpan)
End If
DReader.Close()
End Sub
Sub End
Class
5. Form Matakuliah
Enum state
tambah = 1
simpan = 2
edit = 3
End Enum
Enum aksi
tambah = 1
simpan = 2
edit = 3
hapus = 4
batal = 5
keluar = 6
End Enum
Sub hapusInput()
txtKode.Clear()
txtNama.Clear()
numSemester.Value = 1
numSks.Value = 2
cmbProdi.SelectedIndex = 0
End Sub
Select Case a
Case aksi.tambah
hapusInput()
setState(state.simpan)
txtKode.Focus()
Case aksi.simpan
If cekInput() = True Then
sql = "insert into tbl_mk values('" & txtKode.Text &
"','" & txtNama.Text & "','" & numSks.Value & "','" & numSemester.Value &
"','" & cmbProdi.Text & "')"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Inputan Tidak Boleh Kosong!")
End If
Case aksi.edit
If cekInput() = True Then
sql = "update tbl_mk set kode='" & txtKode.Text & "',
nama='" & txtNama.Text & "', sks='" & numSks.Value & "', semester='" &
numSemester.Value & "', prodi='" & cmbProdi.Text & "' where kode='" &
kodeParam & "'"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Inputan Tidak Boleh Kosong!")
End If
Case aksi.hapus
sql = "delete from tbl_mk where kode='" & kodeParam & "'"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Case
aksi.batal
hapusInput()
setState(state.tambah)
Case aksi.keluar
Me.Close()
End Select
Sub setDataFromkelas()
Dim sql As String =
""
sql = "select * from tbl_mk where kode='" & txtKode.Text & "'"
OCommand = New OdbcCommand(sql, Koneksi)
DReader = OCommand.ExecuteReader
If DReader.HasRows Then
setState(state.edit)
While DReader.Read
kodeParam = DReader(0).ToString
txtNama.Text = DReader(1).ToString
numSks.Value = Val(DReader(2).ToString)
numSemester.Value = Val(DReader(3).ToString)
cmbProdi.Text = DReader(4).ToString
End While
Sub isiMatakuliah()
Dim sql As String = "select * from tbl_mk order by nama asc"
OCommand = New OdbcCommand(sql, Koneksi)
DReader = OCommand.ExecuteReader
cmbMk.Items.Clear()
If Not DReader.HasRows Then
cmbMk.Text = "Tidak ada matakuliah"
Else
While DReader.Read
Dim strMk As String = String.Format("{0}, {1}",
DReader(0).ToString, DReader(1).ToString)
cmbMk.Items.Add(strMk)
End While
End If
End Sub
Sub isiDosen()
Dim sql As String = "select * from tbl_dosen order by nama asc"
OCommand = New OdbcCommand(sql, Koneksi)
DReader = OCommand.ExecuteReader
cmbDosen.Items.Clear()
If Not DReader.HasRows Then
cmbDosen.Text = "Tidak ada dosen"
Else
While DReader.Read
Dim strMk As String = String.Format("{0}, {1}",
DReader(0).ToString, DReader(1).ToString)
cmbDosen.Items.Add(strMk)
End While
End If
End Sub
Sub tambahMk()
If kelasParam = "" Then
MsgBox("Kelas belum dipilih, atau tidak ada!")
Exit Sub
End If
Sub hapusMK()
If kelasParam = "" Then
MsgBox("Kelas belum dipilih, atau tidak ada!")
Exit Sub
End If
If rowIndex = 0 Then
Dim r As MsgBoxResult = MsgBox("Mungkin data matakuliah yang akan
dihapus belum di pilih, atau anda memilih yang pertama, yakin hapus?",
vbInformation + vbYesNo)
If r = MsgBoxResult.No Then
Exit Sub
End If
End If
Sub tambahMhs()
If kelasParam = "" Then
MsgBox("Kelas belum dipilih, atau tidak ada!")
Exit Sub
End If
If rowIndex = 0 Then
Dim r As MsgBoxResult = MsgBox("Mungkin data mahasiswa belum di
pilih, atau anda memilih yang pertama, yakin untuk ditambah?", vbInformation
+ vbYesNo)
If r = MsgBoxResult.No Then
Exit Sub
End If
End If
Sub hapusMhs()
If kelasParam = "" Then
MsgBox("Kelas belum dipilih, atau tidak ada!")
Exit Sub
If rowIndex = 0 Then
Dim r As MsgBoxResult = MsgBox("Mungkin data mahasiswa yang akan
dihapus belum di pilih, atau anda memilih yang pertama, yakin hapus?",
vbInformation + vbYesNo)
If r = MsgBoxResult.No Then
Exit Sub
End If
End If
End Sub
Pada form ini, akan ditampilkan nilai mahsiswa yang telah diinput untuk setiap
kelas.User dapat menginput ke sistem satu persatu nilai mahasiswa atau diinput
melalui database.
Source Code Form Isi Nilai sebagai berikut :
"nhadir=values(nhadir),ntugas=values(ntugas),nuts=values(nuts),nuas=values(nu
as)", kelasParam, mkparam, nim, nhadir, ntugas, nuts, nuas)
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
Catch ex As Exception
End Sub
End
Sub End
Class
Pada form ini akan ditampilkan nilai persentase dari masing-masing kriteria
penentuan hasil belajar. Persentase di input sesuai dengan buku pedoman akademik
STMIK Pelita Nusantara. Untuk menambah data baru maka user mengeksekusi
tombol “tambah”, dan kemudian mengisi data sesuai dengan apa yang diminta oleh
aplikasi. Setiap data baru yang diinput, user menyimpan data yang telah diinput,
dengan menekan tombol“simpan”
Source Code Form Persentase Nilai sebagai berikut :
Return True
End Function
9. Form Fuzzy
Sub setDefault()
buatDataDefault("kbd1", 8, 1)
buatDataDefault("kbd2", 6, 0.75)
buatDataDefault("kbd3", 4, 0.5)
buatDataDefault("kbd4", 2, 0.25)
buatDataDefault("kl", 0, 0)
buatDataDefault("tbd1", 16, 1)
buatDataDefault("tbd2", 12, 0.75)
buatDataDefault("tbd3", 8, 0.5)
buatDataDefault("tbd4", 4, 0.25)
buatDataDefault("tl", 0, 0)
buatDataDefault("ubd1", 24, 1)
buatDataDefault("ubd2", 18, 0.75)
buatDataDefault("uabd1", 32, 1)
buatDataDefault("uabd2", 24, 0.75)
buatDataDefault("uabd3", 16, 0.5)
buatDataDefault("uabd4", 8, 0.25)
buatDataDefault("ual", 0, 0)
End Sub
Sub bacaSetting()
kbd1.Text = getKey("kbd1")(0)
kn1.Text = getKey("kbd1")(1)
kbd2.Text = getKey("kbd2")(0)
kn2.Text = getKey("kbd2")(1)
kbd3.Text = getKey("kbd3")(0)
kn3.Text = getKey("kbd3")(1)
kbd4.Text = getKey("kbd4")(0)
kn4.Text = getKey("kbd4")(1)
kl.Text = getKey("kl")(0)
tbd1.Text = getKey("tbd1")(0)
tn1.Text = getKey("tbd1")(1)
tbd2.Text = getKey("tbd2")(0)
tn2.Text = getKey("tbd2")(1)
tbd3.Text = getKey("tbd3")(0)
tn3.Text = getKey("tbd3")(1)
tbd4.Text = getKey("tbd4")(0)
tn4.Text = getKey("tbd4")(1)
tl.Text = getKey("tl")(0)
ubd1.Text = getKey("ubd1")(0)
un1.Text = getKey("ubd1")(1)
ubd2.Text = getKey("ubd2")(0)
un2.Text = getKey("ubd2")(1)
ubd3.Text = getKey("ubd3")(0)
un3.Text = getKey("ubd3")(1)
ubd4.Text = getKey("ubd4")(0)
un4.Text = getKey("ubd4")(1)
ul.Text = getKey("ul")(0)
uabd1.Text = getKey("uabd1")(0)
uan1.Text = getKey("uabd1")(1)
uabd2.Text = getKey("uabd2")(0)
uan2.Text = getKey("uabd2")(1)
uabd3.Text = getKey("uabd3")(0)
uan3.Text = getKey("uabd3")(1)
uabd4.Text = getKey("uabd4")(0)
uan4.Text = getKey("uabd4")(1)
ual.Text = getKey("ual")(0)
End Sub
Pada form ini, akan ditampilkan bobot referensi yang telah diinput. Bobot referensi
tiap kriteria ditentukan berdasarkan tingkat prioritas. Setiap data baru yang diinput,
user menyimpan data yang telah diinput, dengan menekan tombol“simpan”.
Source Code Form Bobot Referensi sebagai berikut :
Private W1 As Double =
0 Private W2 As Double
= 0 Private W3 As
Double = 0 Private W4
As Double = 0
Sub buatBobotDefault()
buatDataDefault("W1", 1)
buatDataDefault("W2", 1)
buatDataDefault("W3", 1)
buatDataDefault("W4", 1)
End Sub
Sub End
Class
Pada form ini, akan ditampilkan nilai akhir hasil belajar berdasarkan metode
"nhadir=values(nhadir),ntugas=values(ntugas),nuts=values(nuts),nuas=values(nu
as)", kelasParam, mkparam, nim, nhadir, ntugas, nuts, nuas)
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Return False
End Try
Return
True
End Function
End Try
End Sub
End Try
End Sub
End Try
End Sub
#Region "TOPSIS"
Private dgNilai As New DataGridView
Private dgPersentase As New DataGridView
Private kehadiran As Integer = 0
Private nhadir As Double = 0
Private ntugas As Double = 0
Private nuts As Double = 0
Private nuas As Double = 0
Private sqrtNh As Double = 0
Private sqrtNt As Double = 0
Private sqrtNut As Double = 0
Private sqrtNua As Double = 0
Private W1 As Double = 0
Private W2 As Double = 0
Private W3 As Double = 0
Private W4 As Double = 0
Private APNH As New APlus 'A positif dan negatif criteria kehadiran
Private APNT As New APlus
Private APNUT As New
APlus Private APNUA As
New APlus
Structure dataNilai
Dim nim As String
Dim nama As String
Dim nHadir As Double
Dim nTugas As Double
Dim nUTS As Double
Dim nUAS As Double
Dim SP As Double
Structure APlus
Dim max As Double
Dim min As Double
End Structure
Sub isiDataPersentase()
For i As Integer = 0 To UBound(DaftarDataNilai)
DaftarDataPersentase(i).nHadir =
Math.Round((DaftarDataNilai(i).nHadir / kehadiran) * nhadir, 3)
DaftarDataPersentase(i).nTugas =
Math.Round((DaftarDataNilai(i).nTugas / 100) * ntugas, 3)
DaftarDataPersentase(i).nUTS =
Math.Round((DaftarDataNilai(i).nUTS / 100) * nuts, 3)
DaftarDataPersentase(i).nUAS =
Math.Round((DaftarDataNilai(i).nUAS / 100) * nuas, 3)
Next
End Sub
Sub isiDataCrips()
For i As Integer = 0 To UBound(DaftarDataPersentase)
DaftarDataNilaiCrips(i).nHadir = Math.Round(nilaiFuzzy(fuzzy.h,
DaftarDataPersentase(i).nHadir), 3)
DaftarDataNilaiCrips(i).nTugas = Math.Round(nilaiFuzzy(fuzzy.t,
DaftarDataPersentase(i).nTugas), 3)
DaftarDataNilaiCrips(i).nUTS = Math.Round(nilaiFuzzy(fuzzy.ut,
DaftarDataPersentase(i).nUTS), 3)
DaftarDataNilaiCrips(i).nUAS = Math.Round(nilaiFuzzy(fuzzy.ua,
DaftarDataPersentase(i).nUAS), 3)
Next
End Sub
Sub cariSQRT()
Dim buffer1() As Double = {0, 0, 0, 0}
For i As Integer = 0 To UBound(DaftarDataNilaiCrips)
buffer1(0) += Math.Round(DaftarDataNilaiCrips(i).nHadir ^ 2, 3)
buffer1(1) += Math.Round(DaftarDataNilaiCrips(i).nTugas ^ 2, 3)
buffer1(2) += Math.Round(DaftarDataNilaiCrips(i).nUTS ^ 2, 3)
buffer1(3) += Math.Round(DaftarDataNilaiCrips(i).nUAS ^ 2, 3)
Next
sqrtNh = Math.Sqrt(buffer1(0))
sqrtNt = Math.Sqrt(buffer1(1))
sqrtNut = Math.Sqrt(buffer1(2))
sqrtNua = Math.Sqrt(buffer1(3))
End Sub
Sub IsiNilaiR()
For i As Integer = 0 To UBound(DaftarDataNilaiCrips)
Sub cariW()
W1 = getKey("W1")
W2 = getKey("W2")
W3 = getKey("W3")
W4 = getKey("W4")
End Sub
Sub isiNilaiV()
For i As Integer = 0 To UBound(DaftarDataNIlaiR)
DaftarDataNilaiV(i).nHadir =
Math.Round(DaftarDataNIlaiR(i).nHadir * W1, 3)
DaftarDataNilaiV(i).nTugas =
Math.Round(DaftarDataNIlaiR(i).nTugas * W2, 3)
DaftarDataNilaiV(i).nUTS = Math.Round(DaftarDataNIlaiR(i).nUTS *
W3,
3) DaftarDataNilaiV(i).nUAS = Math.Round(DaftarDataNIlaiR(i).nUAS *
W4, Next
3)
End Sub
Sub cariAPositifDanNegatif()
APNH.max = DaftarDataNilaiV(0).nHadir
APNH.min = DaftarDataNilaiV(0).nHadir
APNT.max = DaftarDataNilaiV(0).nTugas
APNT.min = DaftarDataNilaiV(0).nTugas
APNUT.max = DaftarDataNilaiV(0).nUTS
APNUT.min = DaftarDataNilaiV(0).nUTS
APNUA.max = DaftarDataNilaiV(0).nUAS
APNUA.min = DaftarDataNilaiV(0).nUAS
Sub isiNilaiSeperasi()
For i As Integer = 0 To UBound(DaftarDataNilaiV)
DaftarDataNilaiV(i).SP =
Math.Round(Math.Sqrt((DaftarDataNilaiV(i).nHadir - APNH.max) ^ 2 +
Sub isiNilaiCP()
For i As Integer = 0 To UBound(DaftarDataNilaiV)
DaftarDataNilaiV(i).CP = Math.Round(DaftarDataNilaiV(i).SM /
(DaftarDataNilaiV(i).SP + DaftarDataNilaiV(i).SM), 3)
Next
End Sub
Sub isiNA()
For i As Integer = 0 To UBound(DaftarDataNilaiV)
If (DaftarDataNilaiV(i).CP > 0.5) Then
DaftarDataNilaiV(i).NA = "A"
ElseIf (DaftarDataNilaiV(i).CP > 0.4) Then
DaftarDataNilaiV(i).NA = "B"
ElseIf (DaftarDataNilaiV(i).CP > 0.3) Then
DaftarDataNilaiV(i).NA = "C"
ElseIf (DaftarDataNilaiV(i).CP > 0.2) Then
DaftarDataNilaiV(i).NA = "D"
Else
DaftarDataNilaiV(i).NA = "E"
End If
Next
End Sub
Enum fuzzy
h = 1
t = 2
ut = 3
ua = 4
End Enum
End Sub
Pada form ini, akan ditampilkan “username” untuk menginput user yang baru,
“password” untuk menginput password yang baru dan “ulangi password” untuk
menginput password yang baru tadi. Untuk menambah data baru maka user
mengeksekusi tombol “tambah”, dan kemudian mengisi data sesuai dengan apa
yang diminta oleh aplikasi. Setiap data baru yang diinput, user menyimpan data
yang telah diinput, dengan menekan tombol“simpan”. Pada form ini juga tersedia
menu edit, hapus, batal dan keluar.
Source Code Form Ganti User sebagai berikut :
Enum state
tambah = 1
simpan = 2
edit = 3
End Enum
Enum aksi
tambah = 1
simpan = 2
edit = 3
hapus = 4
batal = 5
keluar = 6
End Enum
Sub isiTabel()
Dim str As String = "select `usr` as `Username` from `tbl_user`"
Dim ds As New DataSet
DAdapter = New OdbcDataAdapter(str, Koneksi)
DAdapter.Fill(ds, "tbl_user")
Me.DataGridView1.DataSource = ds.Tables(0)
DataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells
End Sub
Select Case a
Case aksi.tambah
hapusInput()
setState(state.simpan)
txtUsername.Focus()
Case aksi.simpan
If cekInput() = True Then
sql = "insert into `tbl_user` values('" &
txtUsername.Text & "',PASSWORD('" & txtPassword.Text & "'))"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Inputan Tidak Boleh Kosong dan password dengan
ulangi password harus sama!")
End If
Case
aksi.edit
If cekInput() = True Then
sql = "update `tbl_user` set psw=PASSWORD('" &
txtPassword.Text & "') where `usr`='" & usrParam & "'"
OCommand = New OdbcCommand(sql, Koneksi)
Try
OCommand.ExecuteNonQuery()
isiTabel()
hapusInput()
setState(state.tambah)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Inputan Tidak Boleh Kosong!")
End If
Case aksi.hapus
sql = "delete from `tbl_user` where `usr`='" & usrParam & "'"
Sub setDataFromkelas()
Dim sql As String =
""
"'" sql = "select * from `tbl_user` where `usr`='" & txtUsername.Text &
Adi Nugroho (2010). Rekayasa Perangkat Lunak Berbasis Objek dengan Metode
USDP. Andi. Yogyakarta
Ayu Gusti, Darma Gede, Wira B Putu (2013), Multi-Attribyte Decision making
Scholarship Selection Using A Modified Fuzzy TOPSIS. International Journal
of Computer Science Issues (IJCSI) Vol.10 No.2.
Ding, Ji-Feng (2011). An Integrated Fuzzy Topsis Method For Ranking Alternatives
And Its Application. Journal Of Marine Science and Technology, Vol 19, No 4.
Elissa Nadia Madi, and Abu Osman Md (2011). Fuzzy TOPSIS Method in the election
of Investment Boards by Incorporating Operational Risks. Proceedings of the
World Congress on Engineering 2011 Vol I. WCE 2011, July 6 - 8, 2011,
London, U.K
Hoga Saragih., Murni Marbun., Bobby Reza (2013). Development Of Decision Support
Syatem Determining The Student As Scholarship Recipients bi Fuzzy Multi
Atrribute Decision Making (FMADM). JSI UI, Vol 9, No 2.
Jeffery L. Whitten, Lonnie D. Bentley, Kevin C. Metode desain dan analisis system
ittman; alih bahasa, Tim Penerjemah Andi. - 1. - Yogyakarta : Andi, 2004.
Kamran Shahanaghi, Sayed Ahmad Yazdian (2009). Vendor Using A New Fuzzy
Group TOPSIS Approach. Journal of Uncertain System Vol. 3 No. 3
Kusumadewi, S., Hartati, S., Harjoko, A., Wardoyo, R (2006). Fuzzy Multi Attribute
Decison making (FUZZY MADM), Graha Ilmu, Yogyakarta.
Pragati Jain and Manisha Jain (2011). Fuzzy TOPSIS Method In Job Sequencing
Problems On Machines Of Unegual Efficiencies. Canadian Journal on
Yahia Zare Mehrjerdi (2012). Developing Fuzzy TOPSIS Method Based On Interval
Valued Fuzzy Sets. ICJA, Vol 42 No. 14.
View publication