• Tidak ada hasil yang ditemukan

Penyusunan Jadwal Praktikum Mahasiswa Menggunakan Metode Best First Search.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Penyusunan Jadwal Praktikum Mahasiswa Menggunakan Metode Best First Search."

Copied!
31
0
0

Teks penuh

(1)

i

Universitas Kristen Maranatha

PENYUSUNAN JADWAL PRAKTIKUM MAHASISWA

MENGGUNAKAN METODE

BEST FIRST SEARCH

Jerry Wiyono (0827003)

Jurusan Sistem Komputer, Fakultas Teknik,

Universitas Kristen Maranatha

Jalan Prof. drg. Suria Sumantri, MPH. No 65

Bandung 40164, Indonesia

ABSTRAK

Dengan semakin berkembangnya dunia Teknologi Informasi maka segala

proses maupun kegiatan dapat dipercepat.

Demikian pula dengan penyusunan

jadwal di suatu jurusan Universitas Kristen Maranatha, salah satunya penyusunan

jadwal praktikum secara manual di jurusan Sistem Komputer yang menghabiskan

banyak waktu dan belum lagi jika terjadi kesalahan karena faktor ketidaktelitian

manusia.

Untuk mengatasi masalah tersebut, maka pada Tugas Akhir ini dibuatlah

suatu

software

berbasis

Artificial Intelligence

dengan metode

Best-First Search

(2)

ii

Universitas Kristen Maranatha

STUDENT LABORATORY CLASS'S SCHEDULING

USING BEST FIRST SEARCH METHOD

Jerry Wiyono / 0827003

Department of Computer Engineering, Faculty of Engineering,

Maranatha Christian University

Prof. drg. Suria Sumantri, MPH. No 65

Bandung 40164, Indonesia

ABSTRACT

With the growth of Information Technology, all processes or activities can

be accelerated. Likewise the scheduling in a department of Maranatha Christian

University, such as the manually student laboratory class's scheduling in

Computer Engineering Department which takes a lot of time and not to mention if

something goes wrong due to human inaccuracy factor.

(3)

iii

Universitas Kristen Maranatha

DAFTAR ISI

ABSTRAK

... i

ABSTRACT ... ii

DAFTAR ISI

... iii

DAFTAR GAMBAR

... v

DAFTAR TABEL

... vii

BAB I

PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Tujuan ... 2

1.4 Pembatasan Masalah ... 3

1.5 Sistematika Penulisan... 4

BAB II

LANDASAN TEORI ... 6

2.1

Database

... 6

2.2 Microsoft Visual Studio ... 7

2.3 Microsoft Visual Basic ... 9

2.4

Structured Query Language

... 9

2.4.1

Data Definition Language

... 10

2.4.2

Data Manipulation Language

... 11

2.5 MySQL ... 13

2.6

Artificial Intelligence

... 17

2.6.1 Definisi

AI

... 18

2.6.2 Perbandingan

AI

dan Program Konvensional ... 20

2.6.3 Pemecahan masalah dengan metode pencarian... 21

BAB III

PERANCANGAN

DATABASE

DAN

SOFTWARE

... 27

3.1 Perancangan Tabel ... 27

(4)

iv

Universitas Kristen Maranatha

3.3 Perancangan

Software

... 30

3.4 Diagram Alir (

Flowchart

) ... 35

BAB IV

HASIL DAN DATA PENGAMATAN ... 38

4.1 Pengujian

Software

Bagian

Form

... 38

4.1.1

Main Menu Form

... 38

4.1.2

Form

Mata Kuliah ... 39

4.1.3

Form

Mata Kuliah Peserta ... 44

4.1.4

Form

Praktikum ... 49

4.1.5

Form

Peserta Praktikum ... 54

4.2 Pengujian

Software

Bagian Proses Jadwal Praktikum .... 59

BAB V

KESIMPULAN DAN SARAN ... 63

5.1 Kesimpulan ... 63

5.2 Saran ... 63

DAFTAR PUSTAKA

... 64

(5)

v

Universitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1

Microsoft Visual Studio ... 8

Gambar 3.1

Relasi Tabel ... 30

Gambar 3.2

Rancangan

Main Menu Form

... 31

Gambar 3.3

Rancangan

Form

Mata Kuliah ... 32

Gambar 3.4

Rancangan

Form

Mata Kuliah Peserta ... 32

Gambar 3.5

Rancangan

Form

Praktikum ... 33

Gambar 3.6

Rancangan

Form

Peserta Praktikum ... 34

Gambar 3.7

Rancangan

Form

Hasil Proses ... 34

Gambar 3.8

Flowchart

Utama ... 36

Gambar 3.9

Flowchart

Proses Jadwal Praktikum ... 37

Gambar 4.1

Main Menu Form

... 38

Gambar 4.2

Form

Mata Kuliah ... 39

Gambar 4.3

Penyimpanan

Form

Mata Kuliah ... 40

Gambar 4.4 Hasil penyimpanan

Form

Mata Kuliah ... 40

Gambar 4.5

Pengubahan

Form

Mata Kuliah (masukkan

ID

) ... 41

Gambar 4.6

Pengubahan

Form

Mata Kuliah (mengubah data) ... 42

Gambar 4.7

Hasil pengubahan

Form

Mata Kuliah ... 42

Gambar 4.8

Penghapusan

Form

Mata Kuliah (masukkan

ID

)... 43

Gambar 4.9

Hasil penghapusan

Form

Mata Kuliah ... 43

Gambar 4.10

Form

Mata Kuliah Peserta ... 44

Gambar 4.11 Penyimpanan

Form

Mata Kuliah Peserta ... 45

Gambar 4.12 Hasil penyimpanan

Form

Mata Kuliah Peserta ... 45

Gambar 4.13 Pengubahan

Form

Mata Kuliah Peserta (masukkan

ID

)... 46

Gambar 4.14 Pengubahan

Form

Mata Kuliah Peserta (mengubah data) ... 47

Gambar 4.15 Hasil pengubahan

Form

Mata Kuliah Peserta ... 47

Gambar 4.16 Penghapusan

Form

Mata Kuliah Peserta (masukkan

ID

) ... 48

Gambar 4.17 Hasil penghapusan

Form

Mata Kuliah Peserta ... 48

Gambar 4.18

Form

Praktikum ... 49

(6)

vi

Universitas Kristen Maranatha

Gambar 4.20 Hasil penyimpanan

Form

Praktikum ... 50

Gambar 4.21 Pengubahan

Form

Praktikum (masukkan

ID

)... 51

Gambar 4.22 Pengubahan

Form

Praktikum (mengubah data) ... 52

Gambar 4.23 Hasil pengubahan

Form

Praktikum ... 52

Gambar 4.24 Penghapusan

Form

Praktikum (masukkan

ID

) ... 53

Gambar 4.25 Hasil penghapusan

Form

Praktikum ... 53

Gambar 4.26

Form

Peserta Praktikum ... 54

Gambar 4.27 Penyimpanan

Form

Peserta Praktikum ... 55

Gambar 4.28 Hasil penyimpanan

Form

Peserta Praktikum ... 55

Gambar 4.29 Pengubahan

Form

Peserta Praktikum (masukkan

ID

) ... 56

Gambar 4.30 Pengubahan

Form

Peserta Praktikum (mengubah data) ... 57

Gambar 4.31 Hasil pengubahan

Form

Peserta Praktikum ... 57

Gambar 4.32 Penghapusan

Form

Peserta Praktikum (masukkan

ID

) ... 58

Gambar 4.33 Hasil penghapusan

Form

Peserta Praktikum ... 58

Gambar 4.34 Pemilihan praktikum yang akan dicari jadwal optimalnya ... 59

Gambar 4.35 Jadwal mata kuliah tambahan pengujian ketiga ... 60

Gambar 4.36 Notice jadwal yang memiliki nilai bentrok 0(nol) ... 60

Gambar 4.37 Jadwal mata kuliah tambahan pengujian keempat ... 61

Gambar 4.38 Notice jadwal yang memiliki nilai bentrok minimum ... 61

Gambar 4.39 Jadwal yang akan disimpan dalam database ... 62

(7)

vii

Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 2.1

Perbandingan

AI

dan Program Konvensional ... 21

Tabel 3.1

Tabel Mata Kuliah... 27

Tabel 3.2

Tabel Mata Kuliah Peserta ... 28

Tabel 3.3

Tabel Praktikum ... 28

Tabel 3.4

Tabel Peserta Praktikum ... 29

(8)

LAMPIRAN A

(9)

A-1

Module ModConnection

Imports MySql.Data.MySqlClient Module ModConnection

Public Function conString() As String

conString = ("server=localhost;user id=root;database=db_jadwalpraktikum;pooling=false;connection timeout=5") ' Setting string buat koneksi ke database

End Function

Public Function testcon() As Boolean Try

Dim Conn As New MySqlConnection Conn.ConnectionString = conString() Conn.Open()

If Conn.State = ConnectionState.Open Then testcon = True

Conn.Close() Else

testcon = False

MsgBox("Tidak Terhubung", MsgBoxStyle.Critical, "Warning!!") End If

Catch ex As Exception testcon = False

MsgBox("Tidak Terhubung", MsgBoxStyle.Critical, "Warning!!") End Try

End Function

Public Function SQLTable(ByVal Source As String) As DataTable 'buat select data2 pada tabel Try

Dim conn As New MySqlConnection

conn.ConnectionString = ("server=localhost;user id=root;database=db_jadwalpraktikum") 'bikin data adapter....

Dim Adapter As New MySqlDataAdapter(Source, conn.connectionString) Dim DT As New DataTable

Adapter.Fill(DT) SQLTable = DT

Catch ex As MySqlException MsgBox(ex.Message) SQLTable = Nothing End Try

End Function

Public Function ExecSQL(ByVal SQLCommand As String) As Boolean 'perintah simpan, ubah, hapus Dim Con As New MySqlConnection

Dim Cmd As New MySqlCommand Try

Con.ConnectionString = ("server=localhost;user id=root;database=db_jadwalpraktikum") Con.Open()

Cmd.CommandText = SQLCommand Cmd.Connection = Con

Cmd.ExecuteNonQuery() Con.Close()

ExecSQL = True

Catch ex As MySqlException MsgBox(ex.Message) ExecSQL = False

If Con.State = ConnectionState.Open Then Con.Close() End Try

(10)

A-2

Form Main Menu

Public Class frmMainMenu

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click frmMataKuliah.Show()

End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click frmMataKuliahPeserta.Show()

End Sub

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click frmPraktikum.Show()

End Sub

Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click frmPesertaPraktikum.Show()

End Sub

Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click frmHasilProses.Show()

End Sub End Class

Form

Mata Kuliah

Public Class frmMataKuliah

Dim kodemk, matakuliah, kelas, hari, jammasuk, jamkeluar As String Dim masukkanID As Integer

Private Sub frmMataKuliah_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") End Sub

Private Sub btSimpan_Click(sender As System.Object, e As System.EventArgs) Handles btSimpan.Click

kodemk = txtKodeMataKuliah.Text matakuliah = txtNamaMataKuliah.Text hari = cmbHari.SelectedItem

kelas = txtKelas.Text

jammasuk = cmbJamMasuk.SelectedItem jamkeluar = cmbJamKeluar.SelectedItem Try

If String.IsNullOrEmpty(kodemk) Then

MsgBox("Anda Belum Mengisi Kode Mata Kuliah!!") Else

ExecSQL("Insert Into `mata kuliah` Values('" & "','" & kodemk & "','" & matakuliah & "', '" & hari & "','" & kelas & "','" & jammasuk & "','" & jamkeluar & "')")

gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") txtKodeMataKuliah.Text = Nothing

txtNamaMataKuliah.Text = Nothing cmbHari.Text = Nothing

txtKelas.Text = Nothing

cmbJamMasuk.SelectedItem = Nothing cmbJamKeluar.SelectedItem = Nothing End If

(11)

A-3

End Try

End Sub

Private Sub btUbah_Click(sender As System.Object, e As System.EventArgs) Handles btUbah.Click If btUbah.Text = "&Ubah" Then 'Proses pemanggilan data (ubah)

Dim i As Integer

masukkanID = InputBox("Masukkan ID Mata Kuliah", "Ubah Data", "") masukkanID = masukkanID - 1 'Decrement

txtKodeMataKuliah.Text = gridMataKuliah.Item(1, masukkanID).Value txtNamaMataKuliah.Text = gridMataKuliah.Item(2, masukkanID).Value txtKelas.Text = gridMataKuliah.Item(4, masukkanID).Value

'loop untuk penyamaan pilihan hari, jam masuk, dan jam keluar For i = 0 To (cmbHari.Items.Count - 1)

If gridMataKuliah.Item(3, masukkanID).Value = cmbHari.Items(i).ToString Then cmbHari.SelectedIndex = i

End If Next i

For i = 0 To (cmbJamMasuk.Items.Count - 1)

If (gridMataKuliah.Item(5, masukkanID).Value.ToString) = cmbJamMasuk.Items(i).ToString Then

cmbJamMasuk.SelectedIndex = i End If

Next i

For i = 0 To (cmbJamKeluar.Items.Count - 1)

If (gridMataKuliah.Item(6, masukkanID).Value.ToString) = cmbJamKeluar.Items(i).ToString Then

cmbJamKeluar.SelectedIndex = i End If

Next i

btSimpan.Enabled = False btHapus.Enabled = False btUbah.Text = "Simpan" Else

'proses simpan

kodemk = txtKodeMataKuliah.Text matakuliah = txtNamaMataKuliah.Text hari = cmbHari.SelectedItem

kelas = txtKelas.Text

jammasuk = cmbJamMasuk.SelectedItem jamkeluar = cmbJamKeluar.SelectedItem Try

If String.IsNullOrEmpty(kodemk) Then

MsgBox("Anda Belum Mengisi Kode Mata Kuliah!!") Else

ExecSQL("Update `mata kuliah` SET `Nama Mata Kuliah`= '" & matakuliah & "', `Hari`= '" & hari & "', `Kelas`= '" & kelas _

& "', `Jam Masuk`= '" & jammasuk & "', `Jam Keluar`= '" & jamkeluar & "' WHERE `ID` = '" & (masukkanID + 1) & "'")

gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") txtKodeMataKuliah.Text = Nothing

txtNamaMataKuliah.Text = Nothing cmbHari.Text = Nothing

txtKelas.Text = Nothing

cmbJamMasuk.SelectedItem = Nothing cmbJamKeluar.SelectedItem = Nothing btSimpan.Enabled = True

btHapus.Enabled = True btUbah.Text = "&Ubah" End If

(12)

A-4

MsgBox(ex.Message)

End Try End If End Sub

Private Sub btHapus_Click(sender As System.Object, e As System.EventArgs) Handles btHapus.Click Try

masukkanID = InputBox("Masukkan ID Mata Kuliah", "Hapus Data", "") ExecSQL("Delete FROM `mata kuliah` WHERE `ID` = '" & masukkanID & "'") gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") Dim i As Integer

For i = 0 To (gridMataKuliah.RowCount - 1)

ExecSQL("UPDATE `mata kuliah` SET `ID` = '" & (i + 1) & "' WHERE `Kode Mata Kuliah` = '" & (gridMataKuliah.Item(1, i).Value) & "' and `Kelas` = '" & (gridMataKuliah.Item(4, i).Value) & "'") gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`")

Next i

'Update Auto Increment untuk kolom ID

ExecSQL("ALTER TABLE `mata kuliah` AUTO_INCREMENT = " & (gridMataKuliah.RowCount))

gridMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") Catch ex As Exception

MsgBox(ex.Message) End Try

End Sub End Class

Form

Mata Kuliah Peserta

Public Class frmMataKuliahPeserta Dim masukkanID, IDmk As Integer Dim NRP, Kode, Nama, Kelas As String

Private Sub frmMataKuliahPeserta_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`")

gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID` ")

gridBaca.DataSource = SQLTable("Select * FROM `mata kuliah`") Dim i, j As Integer

Dim Ada As Boolean

For i = 0 To (gridBaca.RowCount - 2) Kode = gridBaca.Item(1, i).Value

'Mengecek apakah kode mata kuliah sudah ada atau belum di cmbKodeMataKuliah (jangan sampai ada pengulangan)

Ada = False

For j = 0 To cmbKodeMataKuliah.Items.Count - 1 If Kode = cmbKodeMataKuliah.Items(j).ToString Then Ada = True

End If Next j

If Ada = False Then

cmbKodeMataKuliah.Items.Add(Kode) End If

Next i End Sub

Private Sub cmbKodeMataKuliah_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbKodeMataKuliah.SelectedIndexChanged

(13)

A-5

Dim i As Integer

If cmbKodeMataKuliah.SelectedIndex = -1 Then cmbKelas.SelectedIndex = -1

Label4.Text = "Tampilan Nama Mata Kuliah" Else

cmbKelas.Items.Clear()

For i = 0 To (gridBaca.RowCount - 2) Kode = gridBaca.Item(1, i).Value

If Kode = cmbKodeMataKuliah.SelectedItem.ToString Then

Label4.Text = gridBaca.Item(2, i).Value 'menampilkan nama mata kuliah dari kode mata kuliah yang dipilih

cmbKelas.Items.Add(gridBaca.Item(4, i).Value) End If Next i End If End Sub

Private Sub btSimpan_Click(sender As System.Object, e As System.EventArgs) Handles btSimpan.Click

Dim i As Integer

If cmbKodeMataKuliah.SelectedIndex > -1 Then 'mengecek apakah cmbkodematakuliah sudah dipilih atau belum

For i = 0 To (gridBaca.RowCount - 2) Kode = gridBaca.Item(1, i).Value Kelas = gridBaca.Item(4, i).Value

If cmbKodeMataKuliah.SelectedItem.ToString = Kode And cmbKelas.SelectedItem.ToString = Kelas Then

IDmk = i + 1 End If Next i

NRP = txtNRP.Text Try

If String.IsNullOrEmpty(NRP) Then MsgBox("Anda Belum Mengisi NRP!!") Else

ExecSQL("Insert Into `peserta_mk` Values('" & "','" & NRP & "','" & IDmk & "')") 'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`") gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata

kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID`")

txtNRP.Text = Nothing

cmbKodeMataKuliah.SelectedIndex = -1 'cmbKelas.SelectedIndex = 0

End If

Catch ex As Exception MsgBox(ex.Message) End Try

Else

MsgBox("Kode Mata Kuliah Belum Terpilih") End If

End Sub

Private Sub btUbah_Click(sender As System.Object, e As System.EventArgs) Handles btUbah.Click If btUbah.Text = "&Ubah" Then 'Proses pemanggilan data (ubah)

Dim i As Integer

masukkanID = InputBox("Masukkan ID Mata Kuliah", "Ubah Data", "") masukkanID = masukkanID - 1 'Decrement

txtNRP.Text = gridMataKuliahPeserta.Item(1, masukkanID).Value IDmk = gridMataKuliahPeserta.Item(2, masukkanID).Value IDmk = IDmk - 1

(14)

A-6

Nama = gridBaca.Item(2, IDmk).Value Kelas = gridBaca.Item(4, IDmk).Value Label4.Text = Nama

For i = 0 To (cmbKodeMataKuliah.Items.Count - 1) 'loop untuk penyamaan Kode Mata Kuliah If Kode = cmbKodeMataKuliah.Items(i).ToString Then

cmbKodeMataKuliah.SelectedIndex = i End If

Next i

For i = 0 To (cmbKelas.Items.Count - 1) 'loop untuk penyamaan Kode Mata Kuliah If Kelas = cmbKelas.Items(i).ToString Then

cmbKelas.SelectedIndex = i End If

Next i

btSimpan.Enabled = False btHapus.Enabled = False btUbah.Text = "Simpan" Else

' Proses Simpan (Update)

For i = 0 To (gridBaca.RowCount - 2) Kode = gridBaca.Item(1, i).Value Kelas = gridBaca.Item(4, i).Value

If cmbKodeMataKuliah.SelectedItem.ToString = Kode And cmbKelas.SelectedItem.ToString = Kelas Then

IDmk = i + 1 End If Next i

NRP = txtNRP.Text Try

If String.IsNullOrEmpty(NRP) Then MsgBox("Anda Belum Mengisi NRP!!") Else

ExecSQL("Update `peserta_mk` SET `NRP`= '" & NRP & "', `ID_MK`= '" & IDmk & "' WHERE `ID` = '" & (masukkanID + 1) & "'")

'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`") gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata

kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID`")

txtNRP.Text = Nothing

cmbKodeMataKuliah.SelectedIndex = 0 cmbKelas.SelectedIndex = 0

btSimpan.Enabled = True btHapus.Enabled = True btUbah.Text = "&Ubah" End If

Catch ex As Exception MsgBox(ex.Message) End Try

End If End Sub

Private Sub btHapus_Click(sender As System.Object, e As System.EventArgs) Handles btHapus.Click Try

masukkanID = InputBox("Masukkan ID Peserta", "Hapus Data", "")

ExecSQL("Delete FROM `peserta_mk` WHERE `ID` = '" & masukkanID & "'") 'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`")

gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID`")

Dim i As Integer 'Memperbaiki urutan ID

(15)

A-7

ExecSQL("UPDATE `peserta_mk` SET `ID` = '" & (i + 1) & "' WHERE `NRP` = '" & (gridMataKuliahPeserta.Item(1, i).Value) & "' and `ID_MK` = '" & (gridMataKuliahPeserta.Item(2, i).Value) & "'")

'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`") gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata

kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID`")

Next i

'Update Auto Increment untuk kolom ID

ExecSQL("ALTER TABLE `peserta_mk` AUTO_INCREMENT = " & (gridMataKuliahPeserta.RowCount))

'gridMataKuliahPeserta.DataSource = SQLTable("SELECT * FROM `peserta_mk`")

gridMataKuliahPeserta.DataSource = SQLTable("SELECT `peserta_mk`.*, `mata kuliah`.`Kode Mata Kuliah`, `mata kuliah`.`Nama Mata Kuliah` FROM `peserta_mk` INNER JOIN `mata kuliah` ON `mata kuliah`.ID = `peserta_mk`.ID_MK ORDER BY `ID`")

Catch ex As Exception MsgBox(ex.Message) End Try

End Sub End Class

Form

Praktikum

Public Class frmPraktikum Dim namaprak As String Dim masukkanID As Integer

Private Sub frmPraktikum_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`")

End Sub

Private Sub btSimpan_Click(sender As System.Object, e As System.EventArgs) Handles btSimpan.Click

namaprak = txtNamaPraktikum.Text Try

If String.IsNullOrEmpty(namaprak) Then

MsgBox("Anda Belum Mengisi Nama Praktikum!!") Else

ExecSQL("Insert Into `praktikum` Values('" & "','" & namaprak & "','" & "','" & "','" & "')") gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`")

txtNamaPraktikum.Text = Nothing End If

Catch ex As Exception MsgBox(ex.Message) End Try

End Sub

Private Sub btUbah_Click(sender As System.Object, e As System.EventArgs) Handles btUbah.Click If btUbah.Text = "&Ubah" Then 'Proses pemanggilan data (ubah)

masukkanID = InputBox("Masukkan ID Mata Kuliah", "Ubah Data", "") masukkanID = masukkanID - 1 'Decrement

txtNamaPraktikum.Text = gridPraktikum.Item(1, masukkanID).Value btSimpan.Enabled = False

btHapus.Enabled = False btUbah.Text = "Simpan" Else

(16)

A-8

namaprak = txtNamaPraktikum.Text Try

If String.IsNullOrEmpty(namaprak) Then

MsgBox("Anda Belum Mengisi Nama Praktikum!!") Else

ExecSQL("Update `praktikum` SET `Nama Praktikum`= '" & namaprak & "' WHERE `ID` = '" & (masukkanID + 1) & "'")

gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`")

txtNamaPraktikum.Text = Nothing btSimpan.Enabled = True

btHapus.Enabled = True btUbah.Text = "&Ubah" End If

Catch ex As Exception MsgBox(ex.Message) End Try

End If End Sub

Private Sub btHapus_Click(sender As System.Object, e As System.EventArgs) Handles btHapus.Click Try

masukkanID = InputBox("Masukkan ID Praktikum", "Hapus Data", "") ExecSQL("Delete FROM `praktikum` WHERE `ID` = '" & masukkanID & "'") gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`")

Dim i As Integer

For i = 0 To (gridPraktikum.RowCount - 1)

ExecSQL("UPDATE `praktikum` SET `ID` = '" & (i + 1) & "' WHERE `Nama Praktikum` = '" & (gridPraktikum.Item(1, i).Value) & "' ")

gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`")

Next i

'Update Auto Increment untuk kolom ID

ExecSQL("ALTER TABLE `praktikum` AUTO_INCREMENT = " & (gridPraktikum.RowCount))

gridPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM`FROM `praktikum`")

Catch ex As Exception MsgBox(ex.Message) End Try

End Sub End Class

Form

Peserta Praktikum

Public Class frmPesertaPraktikum Dim masukkanID, IDPrak As Integer Dim NRP, Prak As String

Dim Namaprak As String

Private Sub frmPesertaPraktikum_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`") gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*, `praktikum`.`Nama Praktikum` FROM `peserta_prak` INNER JOIN `praktikum` ON `praktikum`.`ID` =

`peserta_prak`.`ID_Prak` ORDER BY `ID`")

gridBaca.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum`") Dim i, j As Integer

(17)

A-9

For i = 0 To (gridBaca.RowCount - 2)

Namaprak = gridBaca.Item(1, i).Value

'Mengecek apakah nama praktikum sudah ada atau belum di cmbPraktkikum (jangan sampai ada pengulangan)

Ada = False

For j = 0 To (cmbPraktikum.Items.Count - 1)

If Namaprak = cmbPraktikum.Items(j).ToString Then Ada = True

End If Next j

If Ada = False Then

cmbPraktikum.Items.Add(Namaprak) End If

Next i End Sub

Private Sub btSimpan_Click(sender As System.Object, e As System.EventArgs) Handles btSimpan.Click

Dim i As Integer

For i = 0 To (gridBaca.RowCount - 2) prak = gridBaca.Item(1, i).Value

If cmbPraktikum.SelectedItem.ToString = prak Then IDPrak = i + 1

End If Next i

NRP = txtNRP.Text Try

If String.IsNullOrEmpty(NRP) Then MsgBox("Anda Belum Mengisi NRP!!") Else

ExecSQL("Insert Into `peserta_prak` Values('" & "','" & NRP & "','" & IDPrak & "')") 'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`")

gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*, `praktikum`.`Nama Praktikum` FROM peserta_prak INNER JOIN praktikum ON praktikum.ID = peserta_prak.ID_Prak ORDER BY `ID`")

txtNRP.Text = Nothing

cmbPraktikum.SelectedItem = Nothing End If

Catch ex As Exception MsgBox(ex.Message) End Try

End Sub

Private Sub btUbah_Click(sender As System.Object, e As System.EventArgs) Handles btUbah.Click If btUbah.Text = "&Ubah" Then 'Proses pemanggilan data (ubah)

Dim i As Integer

masukkanID = InputBox("Masukkan ID Praktikum", "Ubah Data", "") masukkanID = masukkanID - 1 'Decrement

txtNRP.Text = gridPesertaPraktikum.Item(1, masukkanID).Value IDPrak = gridPesertaPraktikum.Item(2, masukkanID).Value IDPrak = IDPrak - 1

Namaprak = gridBaca.Item(1, IDPrak).Value

For i = 0 To (cmbPraktikum.Items.Count - 1) 'loop untuk penyamaan nama praktikum If Namaprak = cmbPraktikum.Items(i).ToString Then

cmbPraktikum.SelectedIndex = i End If

Next i

btSimpan.Enabled = False btHapus.Enabled = False btUbah.Text = "Simpan" Else

(18)

A-10

For i = 0 To (gridBaca.RowCount - 2) Prak = gridBaca.Item(1, i).Value

If cmbPraktikum.SelectedItem.ToString = Prak Then IDPrak = i + 1

End If Next i

NRP = txtNRP.Text Try

If String.IsNullOrEmpty(NRP) Then MsgBox("Anda Belum Mengisi NRP!!") Else

ExecSQL("Update `peserta_prak` SET `NRP`= '" & NRP & "', `ID_Prak`= '" & IDPrak & "' WHERE `ID` = '" & (masukkanID + 1) & "'")

'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`") gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*,

`praktikum`.`Nama Praktikum` FROM peserta_prak INNER JOIN praktikum ON praktikum.ID = peserta_prak.ID_Prak ORDER BY `ID`")

txtNRP.Text = Nothing

cmbPraktikum.SelectedItem = Nothing btSimpan.Enabled = True

btHapus.Enabled = True btUbah.Text = "&Ubah" End If

Catch ex As Exception MsgBox(ex.Message) End Try

End If End Sub

Private Sub btHapus_Click(sender As System.Object, e As System.EventArgs) Handles btHapus.Click Try

masukkanID = InputBox("Masukkan ID Peserta Praktikum", "Hapus Data", "") ExecSQL("Delete FROM `peserta_prak` WHERE `ID` = '" & masukkanID & "'") 'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`")

gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*, `praktikum`.`Nama Praktikum` FROM `peserta_prak` INNER JOIN `praktikum` ON `praktikum`.ID =

`peserta_prak`.ID_Prak ORDER BY `ID`") Dim i As Integer

' Memperbaiki Urutan ID

For i = 0 To (gridPesertaPraktikum.RowCount - 1)

ExecSQL("UPDATE `peserta_prak` SET `ID` = '" & (i + 1) & "' WHERE `NRP` = '" & (gridPesertaPraktikum.Item(1, i).Value) & "' and `ID_Prak` = '" & (gridPesertaPraktikum.Item(2, i).Value) & "'")

'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`") gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*, `praktikum`.`Nama Praktikum` FROM peserta_prak INNER JOIN praktikum ON praktikum.ID = peserta_prak.ID_Prak ORDER BY `ID`")

Next i

'Update Auto Increment untuk kolom ID

ExecSQL("ALTER TABLE `peserta_prak` AUTO_INCREMENT = " & (gridPesertaPraktikum.RowCount))

'gridPesertaPraktikum.DataSource = SQLTable("SELECT * FROM `peserta_prak`")

gridPesertaPraktikum.DataSource = SQLTable("SELECT peserta_prak.*, `praktikum`.`Nama Praktikum` FROM `peserta_prak` INNER JOIN `praktikum` ON `praktikum`.ID =

`peserta_prak`.ID_Prak ORDER BY `ID`") Catch ex As Exception

MsgBox(ex.Message) End Try

(19)

A-11

Form

Hasil Proses

Public Class frmHasilProses

Const Max_Possibility = 101 Const Max_Child = 101

Dim arr_bentrok(Max_Child) As Integer

Dim arr_hari(Max_Child), arr_jammasuk(Max_Child), arr_jamkeluar(Max_Child) As String Dim arr_table_hari(Max_Possibility), arr_table_jammasuk(Max_Possibility),

arr_table_jamkeluar(Max_Possibility) As String

Dim arr_open_indeks(Max_Possibility), arr_close_indeks(Max_Possibility) As Integer Dim tmp As Integer 'sebagai tempat penyimpanan sementara (TEMPORARY)

Private Function CekBentrok(IDprak As String, hari_prak As String, strjammasuk_prak As String, strjamkeluar_prak As String) As Integer

Dim i, j, k, total_bentrok As Integer

Dim IDCek, IDPrakCek, hari_mk, strjammasuk_mk, strjamkeluar_mk As String 'hasil pembacaan databse

Dim wktjammasuk_mk, wktjamkeluar_mk, wktjammasuk_prak, wktjamkeluar_prak As Date 'Hasil Konversi ke waktu

Dim dtkjammasuk_mk, dtkjamkeluar_mk, dtkjammasuk_prak, dtkjamkeluar_prak As Long ' sebagai satuan detik

Dim bentrok As Boolean Dim debug1, debug2 As String

debug2 = "" 'inisialisasi hari_mk = ""

strjamkeluar_mk = "" strjammasuk_mk = ""

'ambil ID_Prak

For i = 0 To gridBacaPraktikum.RowCount - 1

If cmbNamaPraktikum.SelectedItem = gridBacaPraktikum.Item(1, i).Value Then IDprak = gridBacaPraktikum.Item(0, i).Value

End If Next i

'MsgBox("ID Prak adalah : " & IDprak) tmp = IDprak

'proses jadwal

gridBacaPesertaPrak.DataSource = SQLTable("SELECT * FROM `peserta_prak`") gridBacaPesertaMK.DataSource = SQLTable("SELECT * FROM `peserta_mk`") gridBacaMataKuliah.DataSource = SQLTable("SELECT * FROM `mata kuliah`") For i = 0 To (gridBacaPesertaPrak.RowCount - 2) ' for NRP

If IDprak = gridBacaPesertaPrak.Item(2, i).Value Then bentrok = False

'ListBox1.Items.Add(gridBacaPesertaPrak.Item(1, i).Value) debug1 = gridBacaPesertaPrak.Item(1, i).Value

For j = 0 To (gridBacaPesertaMK.RowCount - 2) 'For ID_MK

If gridBacaPesertaPrak.Item(1, i).Value = gridBacaPesertaMK.Item(1, j).Value Then 'ListBox2.Items.Add(gridBacaPesertaMK.Item(2, j).Value)

IDCek = gridBacaPesertaMK.Item(2, j).Value

For k = 0 To (gridBacaMataKuliah.RowCount - 2) 'For mata kuliah If IDCek = gridBacaMataKuliah.Item(0, k).Value Then

hari_mk = gridBacaMataKuliah.Item(3, k).Value.ToString strjammasuk_mk = gridBacaMataKuliah.Item(5, k).Value.ToString strjamkeluar_mk = gridBacaMataKuliah.Item(6, k).Value.ToString

(20)

A-12

wktjammasuk_prak = CDate(strjammasuk_prak) wktjamkeluar_prak = CDate(strjamkeluar_prak)

dtkjammasuk_mk = (Hour(wktjammasuk_mk) * 3600 + Minute(wktjammasuk_mk) * 60 + Second(wktjammasuk_mk)) 'mengubah semuanya ke detik

dtkjamkeluar_mk = (Hour(wktjamkeluar_mk) * 3600 + Minute(wktjamkeluar_mk) * 60 + Second(wktjamkeluar_mk))

dtkjammasuk_prak = (Hour(wktjammasuk_prak) * 3600 + Minute(wktjammasuk_prak) * 60 + Second(wktjammasuk_prak))

dtkjamkeluar_prak = (Hour(wktjamkeluar_prak) * 3600 + Minute(wktjamkeluar_prak) * 60 + Second(wktjamkeluar_prak))

End If Next k

If hari_mk = hari_prak Then ' pengecekkan bentrok atau tidak pada harinya terlebih dahulu, jika bentrok dilanjutkan pengecekkan jam masuk dan jam keluar

If ((dtkjammasuk_mk <= dtkjammasuk_prak) And (dtkjamkeluar_mk > dtkjammasuk_prak)) Or ((dtkjammasuk_mk > dtkjammasuk_prak) And (dtkjamkeluar_prak > dtkjammasuk_mk)) Then

bentrok = True debug2 = IDCek End If

End If End If Next j

'---mengecek tabel praktikum dan mana yang diambil oleh peserta (jika dia ada 2 praktikum)---

For j = 0 To gridBacaPesertaPrak.RowCount - 1 ' Cari praktikum lainnya yang dia ambil

If (gridBacaPesertaPrak.Item(1, j).Value = gridBacaPesertaPrak.Item(1, i).Value) And (gridBacaPesertaPrak.Item(2, j).Value <> IDprak) Then ' NRP sama dan ID_PRAK tidak boleh sama dengan yg diproses!

' Benar, ini adalah praktikum lainnya yang dia ambil IDPrakCek = gridBacaPesertaPrak.Item(2, j).Value

For k = 0 To gridBacaPraktikum.RowCount - 1

' Ambil jadwalnya, apabila ID_PRAKnya = yg_dicek If gridBacaPraktikum.Item(0, k).Value = IDPrakCek Then

hari_mk = gridBacaPraktikum.Item(2, k).Value strjammasuk_mk = gridBacaPraktikum.Item(3, k).Value strjamkeluar_mk = gridBacaPraktikum.Item(4, k).Value

wktjammasuk_mk = CDate(strjammasuk_mk) wktjamkeluar_mk = CDate(strjamkeluar_mk) wktjammasuk_prak = CDate(strjammasuk_prak) wktjamkeluar_prak = CDate(strjamkeluar_prak)

dtkjammasuk_mk = (Hour(wktjammasuk_mk) * 3600 + Minute(wktjammasuk_mk) * 60 + Second(wktjammasuk_mk))

dtkjamkeluar_mk = (Hour(wktjamkeluar_mk) * 3600 + Minute(wktjamkeluar_mk) * 60 + Second(wktjamkeluar_mk))

dtkjammasuk_prak = (Hour(wktjammasuk_prak) * 3600 + Minute(wktjammasuk_prak) * 60 + Second(wktjammasuk_prak))

dtkjamkeluar_prak = (Hour(wktjamkeluar_prak) * 3600 + Minute(wktjamkeluar_prak) * 60 + Second(wktjamkeluar_prak))

(21)

A-13

Next k

If hari_mk = hari_prak Then ' pengecekkan bentrok atau tidak pada harinya terlebih dahulu, jika bentrok dilanjutkan pengecekkan jam masuk dan jam keluar

If ((dtkjammasuk_mk <= dtkjammasuk_prak) And (dtkjamkeluar_mk > dtkjammasuk_prak)) Or ((dtkjammasuk_mk > dtkjammasuk_prak) And (dtkjamkeluar_prak > dtkjammasuk_mk)) Then

bentrok = True debug2 = IDPrakCek End If

End If End If Next j

'---

'jika NRP ini memiliki Mata Kuliah yang bentrok, maka terhitung bentrok If bentrok = True Then

total_bentrok = total_bentrok + 1

ListBox1.Items.Add(debug1 & " : " & debug2) End If

End If Next i

Return total_bentrok End Function

Private Function ubahkehari(indeks As Integer) As String Dim hasil As String

hasil = ""

Select Case indeks Case 0

hasil = "Senin" Case 1

hasil = "Selasa" Case 2

hasil = "Rabu" Case 3

hasil = "Kamis" Case 4

hasil = "Jumat" Case 5

hasil = "Sabtu" End Select Return hasil End Function

Private Function ubahkejam(nilai As Double) As String Dim jam, menit, detik As Integer

Dim hasil As String

hasil = ""

jam = Int(nilai) 'pembulatan nilai

menit = Int((nilai - jam) * 60) ' hitung sisa koma, 1 jam = 60 mnt detik = 0

hasil = Format(jam, "00") & ":" & Format(menit, "00") & ":" & Format(detik, "00")

Return hasil End Function

(22)

A-14

For i = 0 To Max_Possibility

arr_table_hari(i) = "" arr_table_jammasuk(i) = "" arr_table_jamkeluar(i) = "" Next i

For i = 0 To Max_Child arr_bentrok(1) = 0

arr_hari(i) = "" arr_jammasuk(i) = "" arr_jamkeluar(i) = ""

arr_open_indeks(i) = 0 arr_close_indeks(i) = 0 Next i

End Sub

Private Sub Isiopenlist() Dim i, j, indeks As Integer

Dim offset, durasi, periode As Double

For i = 0 To 5 'Untuk hari

For j = 0 To 16 'Untuk jam, tiap j mewakili 1/2 jam indeks = (i * 17) + j

offset = 7 periode = (j / 2) durasi = 2.5

arr_open_indeks(indeks) = indeks

arr_table_hari(indeks) = ubahkehari(i)

arr_table_jammasuk(indeks) = ubahkejam(offset + periode) arr_table_jamkeluar(indeks) = ubahkejam(offset + periode + durasi)

Next j Next i 'Clear List Box lbOpen.Items.Clear() lbClose.Items.Clear()

'isi listbox open list For i = 0 To Max_Child lbOpen.Items.Add(i) Next

End Sub

Private Sub btProses_Click(sender As System.Object, e As System.EventArgs) Handles btProses.Click Dim i As Integer

Dim acakindeks As Integer Dim Sudahada As Boolean Dim hariBaca As String Dim jammasukBaca As String Dim jamkeluarBaca As String Dim bentrok As Integer Dim goal As Boolean

Dim indeksgoal As Integer 'penyimpan nilai indeks yg ditemukan goal

(23)

A-15

'---ALGORITMA BEST FIRST SEARCH--- While ((lbOpen.Items.Count > 0) And (goal = False)) 'Selama OPEN masih ada peluang DAN Goal masih false

acakkembali:

'Bangkitkan Nilai Acak untuk memilih jadwal Randomize()

acakindeks = Int(Rnd() * 102) ' 0-101

'Check di dalam close list, apakah sudah ada? Sudahada = False ' asumsi awal

For i = 0 To lbClose.Items.Count - 1

If lbClose.Items(i) = CStr(acakindeks) Then Sudahada = True

End If Next i

'Jika masih ada, ulangi, acak lagi If Sudahada = True Then GoTo acakkembali End If

'Tambahkan kedalam Close List lbClose.Items.Add(CStr(acakindeks))

'Buang dari open list

lbOpen.Items.Remove(acakindeks)

'ambil hari dan jam dari tabel open kemungkinan berdasarkan indeks yg telah diacak hariBaca = arr_table_hari(acakindeks)

jammasukBaca = arr_table_jammasuk(acakindeks) jamkeluarBaca = arr_table_jamkeluar(acakindeks)

'Kalkulasi dan hitung nilai bentrok

bentrok = CekBentrok(cmbIDPrak.Items(cmbNamaPraktikum.SelectedIndex).ToString, hariBaca, jammasukBaca, jamkeluarBaca)

'Masukkan ke dalam array asli

'Indeks diset menggunakan lbClose.Items.Count arr_hari(lbClose.Items.Count - 1) = hariBaca

arr_jammasuk(lbClose.Items.Count - 1) = jammasukBaca arr_jamkeluar(lbClose.Items.Count - 1) = jamkeluarBaca arr_bentrok(lbClose.Items.Count - 1) = bentrok

'Tentukan GOAL If bentrok = 0 Then goal = True

indeksgoal = lbClose.Items.Count - 1 End If

End While If goal = True Then

'Jadwal optimal telah ditemukan

MsgBox("Jadwal Optimal telah ditemukan", vbInformation)

'Me.Text = arr_hari(lbClose.Items.Count - 1) & " , " & arr_jammasuk(lbClose.Items.Count - 1) & " ~ " & arr_jamkeluar(lbClose.Items.Count - 1)

txtHariPraktikum.Text = arr_hari(lbClose.Items.Count - 1) txtJamMasuk.Text = arr_jammasuk(lbClose.Items.Count - 1) txtJamkeluar.Text = arr_jamkeluar(lbClose.Items.Count - 1) Else

'Gunakan Best First Search untuk mencari suksesor, nilai bentrok terendah Dim record_bentrok As Integer 'sebagai acuan

(24)

A-16

Dim succesor As Integer 'sebagai penyimpan indeks record_bentrok = 10000

For i = 0 To Max_Child baca_bentrok = arr_bentrok(i) If baca_bentrok < record_bentrok Then 'update record

record_bentrok = baca_bentrok 'simpan indeksnya

succesor = i End If Next i

MsgBox("Jadwal telah ditemukan dengan nilai bentrok minimum", vbInformation) 'Me.Text = arr_hari(succesor) & " , " & arr_jammasuk(succesor) & " ~ " & arr_jamkeluar(succesor)

txtHariPraktikum.Text = arr_hari(succesor) txtJamMasuk.Text = arr_jammasuk(succesor) txtJamkeluar.Text = arr_jamkeluar(succesor) End If

btSimpan.Enabled = True btProses.Enabled = False End Sub

Private Sub frmHasil_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim i As Integer

Dim combonamapraktikum, comboidprak As String

btSimpan.Enabled = False

gridBacaPraktikum.DataSource = SQLTable("SELECT `ID`,`NAMA PRAKTIKUM` FROM `praktikum` WHERE `JAM MASUK` = '00:00:00' ")

For i = 0 To (gridBacaPraktikum.RowCount - 2)

combonamapraktikum = gridBacaPraktikum.Item(1, i).Value comboidprak = gridBacaPraktikum.Item(0, i).Value

cmbNamaPraktikum.Items.Add(combonamapraktikum) cmbIDPrak.Items.Add(comboidprak)

Next i End Sub

Private Sub btSimpan_Click(sender As System.Object, e As System.EventArgs) Handles btSimpan.Click

Dim hasilhari, hasiljammasuk, hasiljamkeluar As String hasilhari = txtHariPraktikum.Text

hasiljammasuk = txtJamMasuk.Text hasiljamkeluar = txtJamkeluar.Text

ExecSQL("Update `praktikum` SET `Hari`= '" & hasilhari & "', `Jam Masuk`= '" & hasiljammasuk & "', `Jam Keluar`= '" & hasiljamkeluar & "' WHERE `ID` = '" & tmp & "'")

btSimpan.Enabled = False End Sub

(25)

1

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1

Latar Belakang

Dengan semakin berkembangnya dunia Teknologi Informasi atau

yang dikenal dengan sebutan dunia

IT

, maka segala proses maupun

kegiatan dapat dipercepat dengan bantuan teknologi tersebut. Contoh,

adanya suatu perangkat lunak (

software

) pada komputer yang dapat dibuat

oleh seorang

programmer

yang dapat berguna untuk suatu aktivitas seperti

Faktur Penjualan Toko, Stok Barang, dan lainnya.

Dalam dunia pendidikan, penyusunan suatu jadwal merupakan

salah satu masalah yang sangat penting untuk diperhatikan, karena jika

terjadi kesalahan dalam penyusunannya, maka seluruh proses

belajar-mengajar akan tidak berjalan dengan lancar. Demikian pula dengan

penyusunan jadwal di suatu jurusan Universitas Kristen Maranatha, salah

satunya penyusunan jadwal praktikum di jurusan Sistem Komputer.

Penyusunan jadwal praktikum yang biasanya dilakukan secara manual,

yaitu dengan mempertimbangkan bentrok tidaknya jadwal mata kuliah

yang diambil peserta praktikum dengan jadwal praktikum yang diambil

(26)

2

Universitas Kristen Maranatha

responsi dan jadwal praktikum lainnya juga termasuk dalam pertimbangan.

Dengan cara manual seperti ini, maka akan menghabiskan banyak waktu

dan belum lagi jika terjadi kesalahan karena faktor ketidaktelitian manusia.

Untuk mengatasi masalah tersebut, maka dirancang suatu

software

yang dapat menganalisa jadwal-jadwal kuliah mahasiswa dan mengambil

suatu hasil yang paling terbaik dalam menentukan jadwal praktikum

dengan waktu yang lebih singkat.

Software

tersebut berbasis

Artificial

Intelligence

dengan metode pencarian yang bernama

Best-First Search

.

1.2

Rumusan masalah

Beberapa masalah yang akan dibahas pada Tugas Akhir ini adalah:

1.

Bagaimana membuat

input

berupa

database

jadwal mahasiswa yang

mengambil praktikum pada semester yang dijalankan?

2.

Bagaimana membuat program untuk mengolah

input

tersebut menjadi

output

berupa jadwal praktikum dengan metode

Best First Search

?

1.3

Tujuan

Tujuan dari Tugas Akhir ini adalah :

1.

Membuat

input

berupa

database

jadwal mahasiswa yang mengambil

praktikum pada semester yang dijalankan.

2.

Membuat program untuk mengolah

input

tersebut menjadi

output

(27)

3

Universitas Kristen Maranatha

1.4

Pembatasan Masalah

Beberapa pembatasan masalah pada Tugas Akhir ini adalah :

1.

Software

yang digunakan adalah Visual Studio 2010.

2.

Database

yang digunakan adalah MySQL.

3.

Tidak terhubung dengan S.A.T. Maranatha.

4.

Durasi praktikum diasumsikan 2 jam 30 menit.

5.

Periode jadwal adalah 30 menit.

6.

Jadwal ujian praktikum harus sama dengan jadwal praktikum.

7.

Tidak ada jadwal kuliah tambahan atau pengganti.

8.

Jadwal mata kuliah tidak boleh ada perubahan setelah jadwal

dikeluarkan.

9.

Ketersediaan ruangan praktikum, dosen pengawas, dan asisten

praktikum diabaikan.

10.

Parameter - parameter

Heuristic

yang digunakan adalah:

a.

Jadwal suatu praktikum tidak boleh sama dengan jadwal praktikum

lainnya yang diambil oleh peserta praktikum tersebut.

b.

Jadwal suatu praktikum tidak boleh sama dengan jadwal kuliah

(28)

4

Universitas Kristen Maranatha

1.5

Sistematika Penulisan

BAB I

PENDAHULUAN

Bab ini membahas mengenai latar belakang, rumusan

masalah, tujuan, pembatasan masalah, dan sistematika

penulisan.

BAB II

LANDASAN TEORI

Bab ini membahas mengenai teori - teori yang

menunjang Tugas Akhir ini. Dimulai dari

Database

,

Microsoft Visual Studio, Microsoft Visual Basic, SQL,

MySQL, dan inti dari Tugas Akhir ini, yaitu

Artificial

Intelligence

.

BAB III

PERANCANGAN

Bab ini membahas mengenai perancangan dari

perangkat lunak berbasis

Artificial Intelligence

. Dimulai

dari pembuatan

database

,

form

, dan lainnya.

BAB IV PENGAMATAN DATA DAN ANALISA

Bab ini membahas mengenai hasil-hasil analisa dan

(29)

5

Universitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

Bab ini membahas mengenai kesimpulan dan saran dari

(30)

63

Universitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

5.1

Kesimpulan

Dengan pengujian yang sudah dilakukan, maka kesimpulan dari

Tugas Akhir ini adalah :

1.

Program untuk

input

berupa

database

jadwal mahasiswa yang

mengambil praktikum pada semester yang dijalankan telah berhasil

dibuat.

2.

Program untuk mengolah

input

tersebut menjadi

output

berupa jadwal

praktikum dengan metode

Best First Search

telah berhasil dibuat.

5.2

Saran

Software

ini dapat ditambah dengan informasi jadwal pemakaian

ruangan praktikum dan juga jadwal dosen dan jadwal asisten. Dan juga

untuk ke depannya,

Software

ini dapat dihubungkan dengan S.A.T.

(31)

64

Universitas Kristen Maranatha

DAFTAR PUSTAKA

Darmawan, Aan dan Novie Theresia. 2009.

Diktat Kuliah Pengantar Sistem

Cerdas

. Bandung: Fakultas Teknik Universitas Kristen Maranatha.

KOMPUTER, WAHANA. 2011.

Microsoft

VISUAL BASIC 2010 & MySQL untuk

Aplikasi Point of Sales

. Yogyakarta: ANDI.

Kurniawan, Erick. 2011.

Cepat Mahir Visual Basic 2010

. Yogyakarta: ANDI.

Sadeli, Muhammad. 2011.

VISUAL BASIC 2010 untuk Orang Awam

. Palembang:

Maxikom.

Suprianto, Dodit. 2010.

Membuat Aplikasi Desktop Menggunakan MySQL &

VB.NET Secara Profesional

. Jakarta: mediakita.

Suyanto. 2011.

Artificial Intelligence Searching, Reasoning, Planning, dan

Learning

. Bandung: INFORMATIKA.

http://en.wikipedia.org/wiki/SQL, 2 Januari 2012

http://en.wikipedia.org/wiki/Unique_key, 4 Februari 2012

http://id.wikipedia.org/wiki/Basis_data, 1 Januari 2012

http://id.wikipedia.org/wiki/Microsoft_Visual_Studio, 1 Januari 2012.

http://id.wikipedia.org/wiki/MySQL, 2 Januari 2012

http://id.wikipedia.org/wiki/SQL, 2 Januari 2012

http://id.wikipedia.org/wiki/Visual_Basic, 1 Januari 2012

http://ijongblue.blogspot.com/2009/10/pengertian-primary-key-dan-foreign-key.html, 4 Februari 2012

Referensi

Dokumen terkait

Hasil kuisioner responden yang belum mengambil mata kuliah Pengolahan Citra Digital Pedoman Praktikum Topik VI.. Citra Digital Pedoman Praktikum

Silakan mahasiswa menkan tombol , maka akan muncul dropdown box yang berisi jadwal-jadwal kelas untuk mata kuliah tersebut, pilih salah satu yang paling sesuai

1. Menentukan ahli waris yang terhalang. Untuk menentukan ahliwaris yang terhalang yaitu menelusuri aturan-aturan yang menjadi sebab penghalang hingga mendapatkan

2' * : Mahasiswa dapat mengambil mata kuliah pilihan sesuai peminatan minimal B0% dari 30 SkS pilihan, mata kuliah pilihan yang terdiri dari ieori dan praktikum

Data jadwal kuliah praktikum yang terdiri dari data dosen, matakuliah, hari, jam, ruang dan pengampu dapat direpresentasikan ke dalam kromosom-kromosom untuk menghasilkan

Tiap kelompok melakukan praktikum yang berbeda, Tugas pendahuluan diberikan untuk dikerjakan dalam waktu 1 minggu pada tiap mahasiswa dan harus dikumpulkan

Setelah mengikuti kuliah ini mahasiswa Mengetahui tata aturan yang harus diikuti dan ditaati bersama selama perkuliahan, Mengetahui tentang manajemen lingkungan : jadwal perkuliahan;

Setelah mengikuti kuliah ini mahasiswa akan dapat membuat perencanaan bisnis yang merupakan dokumen untuk membantu entrepreneur dalam menganalisa pasar dan mengembangkan strategi bisnis