Aplikasi Penjadwalan Laboratorium D3 Teknik Informatika Univeritas Sumatera Utara
A. Forms
1. frmCetakJadwal
Private Sub cmbPilihan_Click()
If cmbPilihan.Text = "PerKelas" Then frKelas.Visible = True
muatKelas
frMK.Visible = False
ElseIf cmbPilihan.Text = "PerMata Kuliah" Then frKelas.Visible = False
frMK.Visible = True muatMK
Else
frKelas.Visible = False frMK.Visible = False End If
End Sub
Private Sub Command1_Click() End Sub
Private Sub cmdCetak_Click()
If cmbPilihan.Text = "PerKelas" Then
sql = "SELECT * FROM jadwal where kelas='" & cmbKls.Text & "'" Set rptKelas.DataSource = Adodc1
'Set rptKelas.DataMember = ""
rptKelas.Sections(1).Controls.Item(1).Caption = cmbKls.Text Adodc1.RecordSource = sql
Adodc1.Refresh rptKelas.Refresh rptKelas.Show
ElseIf cmbPilihan.Text = "PerMata Kuliah" Then
sql = "SELECT * FROM jadwal where mata_kuliah='" & cmbMK.Text & "' ORDER BY kelas"
Set rptMK.DataSource = Adodc1
rptMK.Sections(1).Controls.Item(1).Caption = cmbMK.Text Adodc1.RecordSource = sql
(2)
rptMK.Refresh rptMK.Show Else
MsgBox "Tidak Ada Data yg akan ditampilkan" End If
End Sub
Private Sub Form_Load() Call koneksi
Adodc1.ConnectionString = "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
Adodc1.RecordSource = "jadwal" Adodc1.Refresh
'Set DataGrid1.DataSource = Adodc1 'DataGrid1.AllowUpdate = False 'DataGrid1.TabStop = False 'DataGrid1.Refresh
End Sub
Sub muatMK()
Dim rsMK As New ADODB.Recordset
rsMK.Open "Select * FROM mata_kuliah ", CN, , , adCmdText jlh = 0
Do While Not rsMK.EOF
cmbMK.AddItem rsMK!nama_mk rsMK.MoveNext
Loop
rsMK.Close End Sub
Sub muatKelas()
Dim rsKelas As New ADODB.Recordset
rsKelas.Open "Select * FROM kelas ", CN, , , adCmdText jlh = 0
Do While Not rsKelas.EOF
cmbKls.AddItem rsKelas!nama rsKelas.MoveNext
(3)
Loop
rsKelas.Close End Sub
Private Sub Image1_Click() End Sub
1. frmJadwal
Private DbFile As String
Private CN As New ADODB.Connection Private rs As New ADODB.Recordset
Private rsJadwal As New ADODB.Recordset Private SQLstmt As String
Private RetVal As Variant
Dim tempID As Variant Dim tempWkt As Variant Dim tempMK As Variant Dim tempKelas As Variant Dim tempRuang As Variant
Private Sub cmbKelas_Click() cmbWaktu.Clear
Dim rsWaktu As New ADODB.Recordset
rsWaktu.Open "select hari, jam_mulai, jam_selesai from waktu where not
exists(select waktu from jadwal where left(waktu.hari,3)=left(jadwal.waktu,3) and waktu.jam_mulai=mid(jadwal.waktu,5,5) and
waktu.jam_selesai=right(jadwal.waktu,5))", CN, , , adCmdText
jlh = 0
Do While Not rsWaktu.EOF
cmbWaktu.AddItem Left(rsWaktu!Hari, 3) & "-" & rsWaktu!jam_mulai & "-" & rsWaktu!jam_selesai
rsWaktu.MoveNext Loop
rsWaktu.Close End Sub
(4)
Private Sub cmbMk_Click() cmbKelas.Clear
Dim rsKelas As New ADODB.Recordset
rsKelas.Open "select nama from kelas where not exists(select kelas,
mata_kuliah from jadwal where kelas.nama=jadwal.kelas and jadwal.mata_kuliah ='" & cmbMK.Text & "')", CN, , , adCmdText
jlh = 0
Do While Not rsKelas.EOF
cmbKelas.AddItem rsKelas!nama rsKelas.MoveNext
Loop
rsKelas.Close End Sub
Private Sub cmbSemester_Click() cmbMK.Clear
If cmbSemester.Text = "Semua" Then 'muatMK
Else
Dim rsMK As New ADODB.Recordset
rsMK.Open "Select * FROM mata_kuliah WHERE semester ='" & cmbSemester.Text & "'", CN, , , adCmdText
jlh = 0
Do While Not rsMK.EOF
cmbMK.AddItem rsMK!nama_mk rsMK.MoveNext
Loop
rsMK.Close End If End Sub
Private Sub cmdBatal_Click() Adodc1.Refresh
'Form_Load End Sub
Private Sub cmdHapus_Click() If Len(tempID) <> 1 Then
(5)
MsgBox "Tidak ada Item yg terpilih" Else
tanya = MsgBox("Yakin akan menghapus Jadwal Kelas" & tempKelas & " ", vbYesNo, "Hapus Jadwal")
If tanya = vbYes Then 'hapus
prosedur_hapus cmdBatal_Click End If
End If End Sub
Private Sub cmdKeluar_Click() Unload Me
End Sub
Private Sub cmdSimpan_Click() 'Panggil prosedur simpan SimpanJadwal
MsgBox "Berhasil disimpan" Adodc1.Refresh
End Sub
Private Sub DataGrid1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next With rs
tempID = !id
tempWaktu.Text = !waktu tempWkt = !waktu
tempRuang = !ruang tempKelas = !kelas End With
End Sub
Private Sub Form_Load() Call koneksi
(6)
Open_cn
Set DataGrid1.DataSource = rs aturTataLetakDgrid
End Sub
Private Sub Open_cn()
Set CN = New ADODB.Connection CN.CursorLocation = adUseClient
CN.ConnectionString = "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
CN.Open
'Once this Connection is opened, it can 'be used throughout the application SQLstmt = "SELECT * FROM jadwal" 'Get the Records
Set rs = New ADODB.Recordset
rs.Open SQLstmt, CN, adLockOptimistic, , adCmdText End Sub
Sub muatWaktu()
Dim rsWaktu As New ADODB.Recordset
rsWaktu.Open "Select * FROM waktu ", CN, , , adCmdText jlh = 0
Do While Not rsWaktu.EOF
cmbWaktu.AddItem Left(rsWaktu!Hari, 3) & "-" & rsWaktu!jam_mulai & "-" & rsWaktu!jam_selesai
rsWaktu.MoveNext Loop
rsWaktu.Close End Sub
Sub muatKelas()
Dim rsKelas As New ADODB.Recordset
rsKelas.Open "Select * FROM kelas ", CN, , , adCmdText jlh = 0
Do While Not rsKelas.EOF
(7)
rsKelas.MoveNext Loop
rsKelas.Close End Sub
Sub muatRuang()
Dim rsRuang As New ADODB.Recordset
rsRuang.Open "Select * FROM ruang ", CN, , , adCmdText jlh = 0
Do While Not rsRuang.EOF
cmbRuang.AddItem rsRuang!nama rsRuang.MoveNext Loop rsRuang.Close End Sub Sub SimpanJadwal()
Set rsJadwal = New ADODB.Recordset
rsJadwal.LockType = adLockOptimistic rsJadwal.CursorType = adOpenDynamic
rsJadwal.Open "SELECT * FROM jadwal", CN, , , adCmdText With rsJadwal
.AddNew !id = Null
!waktu = cmbWaktu.Text !kelas = cmbKelas.Text !ruang = cmbRuang.Text !mata_kuliah = cmbMK.Text .Update
End With End Sub
Sub isiListview()
Dim lstItem As ListItem, A As Integer Set rsJadwal = New ADODB.Recordset
rsJadwal.LockType = adLockOptimistic rsJadwal.CursorType = adOpenDynamic
rsJadwal.Open "SELECT * FROM jadwal", CN, , , adCmdText lstJadwal.ListItems.Clear
(8)
Do While Not rsJadwal.EOF A = A + 1
Set lstItem = lstJadwal.ListItems.Add(, , A) lstItem.SubItems(1) = "text"
rsJadwal.MoveNext Loop
End Sub
Sub aturTataLetakDgrid()
DataGrid1.Columns(0).Width = 0
DataGrid1.Columns(1).Caption = " Waktu" DataGrid1.Columns(1).Alignment = dbgCenter DataGrid1.Columns(2).Caption = " Kelas" DataGrid1.Columns(2).Alignment = dbgCenter DataGrid1.Columns(3).Caption = " Mata Kuliah" DataGrid1.Columns(3).Alignment = dbgCenter DataGrid1.Columns(4).Caption = " Ruang" DataGrid1.Columns(4).Alignment = dbgCenter End Sub
Sub prosedur_hapus()
Set rsJadwal = New ADODB.Recordset
rsJadwal.LockType = adLockOptimistic rsJadwal.CursorType = adOpenDynamic
rsJadwal.Open "DELETE FROM jadwal WHERE id='" & tempID & "'", CN, , , adCmdText
End Sub
2. frmKelas
Private Sub cmdBatal_Click() txtKls.Text = ""
txtJmhs.Text = "" txtKls.SetFocus End Sub
Private Sub cmdKeluar_Click() Unload Me
(9)
Private Sub cmdSimpan_Click() SimpanKls
MsgBox "Sukses" cmdBatal_Click End Sub
Sub SimpanKls()
Set rsKls = New ADODB.Recordset
rsKls.LockType = adLockOptimistic rsKls.CursorType = adOpenDynamic
rsKls.Open "SELECT * FROM kelas", CN, , , adCmdText With rsKls
.AddNew !id = Null
!nama = txtKls.Text !jlh_mhs = txtJmhs.Text .Update
End With End Sub
Private Sub Form_Load() Call koneksi
End Sub
3. frmMK
Private Sub cmdBatal_Click() txtMK.Text = ""
cmbSemester.Text = "" cmbSks.Text = "" txtDP.Text = "" End Sub
Private Sub cmdKeluar_Click() Unload Me
(10)
Private Sub cmdSimpan_Click() simpanMK
MsgBox "Sukses" cmdBatal_Click Adodc1.Refresh End Sub
Private Sub Form_Load() Call koneksi
End Sub
Sub simpanMK()
Set rsMK = New ADODB.Recordset
rsMK.LockType = adLockOptimistic rsMK.CursorType = adOpenDynamic
rsMK.Open "SELECT * FROM mata_kuliah", CN, , , adCmdText With rsMK
.AddNew !id = Null
!nama_mk = txtMK.Text
!semester = cmbSemester.Text !sks = cmbSks.Text
!dosen = txtDP.Text .Update
End With End Sub
4. frmWaktu
Dim indeks As Integer Dim A As Boolean
Dim arrHari(5) As String Dim arrHari2(5) As String Dim indeks2 As Integer
Private Sub chkJum_Click() If chkJum.Value = 1 Then arrHari2(4) = "Jumat"
(11)
arrHari2(4) = ""
End If End Sub
Private Sub chkKam_Click() If chkKam.Value = 1 Then arrHari2(3) = "Kamis" Else
arrHari2(3) = "" End If
End Sub
Private Sub chkRab_Click() If chkRab.Value = 1 Then arrHari2(2) = "Rabu" Else
arrHari2(2) = "" End If
End Sub
Private Sub chkSab_Click() If chkSab.Value = 1 Then arrHari2(5) = "Sabtu" Else
arrHari2(5) = "" End If
End Sub
Private Sub chkSel_Click() If chkSel.Value = 1 Then arrHari2(1) = "Selasa" Else
arrHari2(1) = "" End If
End Sub
(12)
If chkSemua.Value = 1 Then chkSen.Value = 1
chkSel.Value = 1 chkRab.Value = 1 chkKam.Value = 1 chkJum.Value = 1 chkSab.Value = 1
chkSemua.Caption = "Lepas semua" Else
chkSen.Value = 0 chkSel.Value = 0 chkRab.Value = 0 chkKam.Value = 0 chkJum.Value = 0 chkSab.Value = 0
chkSemua.Caption = "Semua" End If
End Sub
Private Sub chkSen_Click() If chkSen.Value = 1 Then arrHari2(0) = "senin" Else
arrHari2(0) = "" End If
End Sub
Private Sub chkSen_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
chkSen.Top = Me.Top chkSen.Left = Me.Left End Sub
Private Sub cmbJAM_Change() If Len(cmbJAM.Text) > 2 Then
cmbJAM.Text = Left((cmbJAM.Text), 2) cmbJAM.SelStart = 2
(13)
cmbJAM.Text = 23 cmbJAM.SelStart = 2 End If
jam = Val(cmbJAM.Text) + 1 cmbMnt.Text = "00"
If Len(jam) < 2 Then
cmbjam2.Text = "0" & jam Else
cmbjam2.Text = jam End If
End Sub
Private Sub cmbJAM_Click() If Len(cmbJAM.Text) > 2 Then
cmbJAM.Text = Left((cmbJAM.Text), 2) cmbJAM.SelStart = 2
ElseIf Val(cmbJAM.Text) > 23 Then cmbJAM.Text = 23
cmbJAM.SelStart = 2 End If
jam = Val(cmbJAM.Text) + 1 cmbMnt.Text = "00"
If Len(jam) < 2 Then
cmbjam2.Text = "0" & jam Else
cmbjam2.Text = jam End If
End Sub
Private Sub cmbMnt_Change() If Len(cmbMnt.Text) > 2 Then
cmbMnt.Text = Left((cmbMnt.Text), 2) cmbMnt.SelStart = 2
ElseIf Val(cmbMnt.Text) > 59 Then cmbMnt.Text = 59
cmbMnt.SelStart = 2 End If
(14)
If Len(jam) < 2 Then
cmbmnt2.Text = "0" & jam Else
cmbmnt2.Text = jam End If
End Sub
Private Sub cmbMnt_Click() jam = Val(cmbMnt.Text) If Len(jam) < 2 Then
cmbmnt2.Text = "0" & jam Else
cmbmnt2.Text = jam End If
End Sub
Private Sub cmbpil_Click() If cmbpil.Text = "Hari" Then pil1.Visible = True pil2.Visible = False pil1.Clear
pil1.AddItem "Senin" pil1.AddItem "Selasa" pil1.AddItem "Rabu" pil1.AddItem "Kamis" pil1.AddItem "Jumat" pil1.AddItem "Sabtu"
ElseIf cmbpil.Text = "Jam" Then pil1.Visible = True
pil2.Visible = True pil1.Clear
pil2.Clear Setjam2
ElseIf cmbpil.Text = "Hari dan Jam" Then End If
End Sub
(15)
On Error Resume Next
LV.ListItems.Remove LV.SelectedItem.Index Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset Set conn = New ADODB.Connection Set rs = New ADODB.Recordset
conn.Open "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
conn.Execute "DELETE FROM waktu where hari='" & Hari & "' AND jam_mulai='" & jam_mulai & "' "
End Sub
Private Sub cmdTambah_Click() If Len(cmbJAM.Text) > 0 Then Dim lst As ListItem
Dim Dup(5) As String 'variabel array yg digunakan untuk mengecek duplikasi data
jam_m = cmbJAM.Text & ":" & cmbMnt.Text jam_m2 = cmbjam2.Text & ":" & cmbmnt2.Text 'MsgBox jam_m
For hh = 0 To 5
If Len(arrHari2(hh)) <> 0 Then
Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Set conn = New ADODB.Connection Set rs = New ADODB.Recordset
conn.Open "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
rs.Open "SELECT * FROM waktu WHERE hari='" & arrHari2(hh) & "' AND jam_mulai='" & jam_m & "'", conn
If rs.EOF Then
'MsgBox "data ditemukan"
conn.Execute "INSERT INTO waktu (id, hari, jam_mulai,
jam_selesai, ket) VALUES ('','" & arrHari2(hh) & "','" & cmbJAM.Text & ":" & cmbMnt.Text & "', '" & cmbjam2.Text & ":" & cmbmnt2.Text & "', '" &
(16)
'Dim lst As ListItem
'Set lst = LV.ListItems.Add Set lst = LV.ListItems.Add lst.SubItems(1) = arrHari2(hh)
lst.SubItems(2) = cmbJAM.Text & ":" & cmbMnt.Text lst.SubItems(3) = cmbjam2.Text & ":" & cmbmnt2.Text lst.SubItems(4) = txtKet.Text
Else
'redundant data
Dup(hh) = arrHari2(hh) & " " & jam_m & "-" & jam_m2
'MsgBox "Anda menggunakan waktu yg sama, yaitu : " & arrHari2(hh) & " " & jam_m & "-" & jam_m2 & " sistem secara otomatis hanya menyimpan 1 waktu yg sama", vbInformation, "Duplikasi waktu"
End If End If Next hh End If
gabung = vbNewLine & "" No = 1
For R = 0 To 5
If Len(Dup(R)) <> 0 Then
gabung = gabung & No & ". " & Dup(R) & vbNewLine No = No + 1
End If Next R
If UBound(Dup) > 1 Then If Len(gabung) <> 0 Then
'MsgBox "Duplikasi data =>" & gabung + vbNewLine & "Data diatas sudah pernah disimpan sebelumnya", vbInformation, "Duplikasi Data"
End If End If End Sub
Private Sub Command1_Click() LV.ListItems.Clear
End Sub
(17)
Index = 0 setLV IsiLV setJam
Shape3.Top = LV.Top Shape3.Left = LV.Left Shape3.Width = LV.Width Shape3.Height = LV.Height
arrHari(0) = "" arrHari(1) = "" arrHari(2) = "" arrHari(3) = "" arrHari(4) = "" arrHari(5) = "" End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False Shape2.Visible = False End Sub
Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Text1.Text = Frame1.Name Shape1.Visible = True Shape1.Top = Frame1.Top Shape1.Left = Frame1.Left Shape1.Width = Frame1.Width Shape1.Height = Frame1.Height End Sub
Function anim(ctr As Frame) End Function
Private Sub Frame2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
(18)
Shape1.Visible = True Shape1.Top = Frame2.Top Shape1.Left = Frame2.Left Shape1.Width = Frame2.Width Shape1.Height = Frame2.Height End Sub
Private Sub chksen_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkSen.Top Shape2.Left = chkSen.Left Shape2.Width = chkSen.Width Shape2.Height = chkSen.Height End Sub
Private Sub chksel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkSel.Top Shape2.Left = chkSel.Left Shape2.Width = chkSel.Width Shape2.Height = chkSel.Height End Sub
Private Sub chksab_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkSab.Top Shape2.Left = chkSab.Left Shape2.Width = chkSab.Width Shape2.Height = chkSab.Height End Sub
Private Sub chkkam_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkKam.Top
(19)
Shape2.Left = chkKam.Left Shape2.Width = chkKam.Width Shape2.Height = chkKam.Height End Sub
Private Sub chkjum_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkJum.Top Shape2.Left = chkJum.Left Shape2.Width = chkJum.Width Shape2.Height = chkJum.Height End Sub
Private Sub chkrab_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True Shape2.Top = chkRab.Top Shape2.Left = chkRab.Left Shape2.Width = chkRab.Width Shape2.Height = chkRab.Height End Sub
Private Sub chksenin_Click() End Sub
Sub setLV() With LV
.View = lvwReport .GridLines = True .MultiSelect = True .FullRowSelect = True .HotTracking = True .HoverSelection = True
' tambahkan kolom2 ke, , Judul,lebar,aligment .ColumnHeaders.Add 1, , "No", 0
.ColumnHeaders.Add 2, , "Hari", 1250 .ColumnHeaders.Add 3, , "Mulai", 1250 .ColumnHeaders.Add 4, , "Selesai", 1000, 0
(20)
.ColumnHeaders.Add 5, , "Keterangan", 3500
.Width = 7000 End With
End Sub
Sub setJam() For jam = 0 To 23
If Len(jam) < 2 Then
cmbJAM.AddItem "0" & jam cmbjam2.AddItem "0" & jam Else
cmbJAM.AddItem jam cmbjam2.AddItem jam End If
Next jam
For menit = 0 To 59
If Len(menit) < 2 Then
cmbMnt.AddItem "0" & menit cmbmnt2.AddItem "0" & menit Else
cmbMnt.AddItem menit cmbmnt2.AddItem menit End If
Next menit End Sub
Sub Setjam2() For jam = 0 To 23
If Len(jam) < 2 Then
pil1.AddItem "0" & jam pil2.AddItem "0" & jam Else
pil1.AddItem jam pil2.AddItem jam End If
Next jam
(21)
If Len(menit) < 2 Then
pil1.AddItem "0" & menit pil2.AddItem "0" & menit Else
pil1.AddItem menit pil2.AddItem menit End If
Next menit End Sub
Private Sub LV_Click() On Error Resume Next cmdHapus.Enabled = True
Text1.Text = LV.ListItems(LV.SelectedItem.Index).ListSubItems(1).Text End Sub
Private Sub txtKet_Change() lblket.Visible = True
End Sub
Private Sub txtKet_LostFocus() lblket.Visible = False
End Sub
Sub IsiLV()
LV.ListItems.Clear On Error Resume Next
Set conn = New ADODB.Connection Set rs = New ADODB.Recordset
conn.Open "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
kueri = "SELECT * FROM waktu order by id" rs.Open kueri, conn
Dim lst As ListItem, NMR As Integer With rs
LV.ListItems.Clear 'Bersihkan Listview Do While Not rs.EOF
(22)
Set lst = LV.ListItems.Add lst.SubItems(1) = rs!Hari lst.SubItems(2) = rs!jam_mulai lst.SubItems(3) = rs!jam_selesai lst.SubItems(4) = rs!ket
rs.MoveNext Loop
End With
Set rs = Nothing End Sub
5. menu_utama
Private Sub bg_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False End Sub
Private Sub btnAdmin_Click() End
End Sub
Private Sub btnAdmin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnAdmin.Top .Left = btnAdmin.Left .Width = btnAdmin.Width .Height = btnAdmin.Height End With
End Sub
Private Sub btnCetakJdl_Click() frmCetakJadwal.Show
(23)
Private Sub btnCetakJdl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True
.Top = btnCetakJdl.Top .Left = btnCetakJdl.Left .Width = btnCetakJdl.Width .Height = btnCetakJdl.Height End With
End Sub
Private Sub btnJdl_Click() frmJadwal.Show
End Sub
Private Sub btnJdl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnJdl.Top .Left = btnJdl.Left .Width = btnJdl.Width .Height = btnJdl.Height End With
End Sub
Private Sub btnKelas_Click() frmKelas.Show
End Sub
Private Sub btnKelas_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnKelas.Top
(24)
.Left = btnKelas.Left .Width = btnKelas.Width .Height = btnKelas.Height End With
End Sub
Private Sub btnLihJdl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnLihJdl.Top .Left = btnLihJdl.Left .Width = btnLihJdl.Width .Height = btnLihJdl.Height End With
End Sub
Private Sub btnMK_Click() frmMK.Show
End Sub
Private Sub btnMK_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnMK.Top .Left = btnMK.Left .Width = btnMK.Width .Height = btnMK.Height End With
End Sub
Private Sub btnRuangan_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
(25)
.Visible = True
.Top = btnRuangan.Top .Left = btnRuangan.Left .Width = btnRuangan.Width .Height = btnRuangan.Height End With
End Sub
Private Sub btnTentang_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True
.Top = btnTentang.Top .Left = btnTentang.Left .Width = btnTentang.Width .Height = btnTentang.Height End With
End Sub
Private Sub btnwaktu_Click() frmWaktu.Show
End Sub
Private Sub btnwaktu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False With Shape1
.Visible = True .Top = btnwaktu.Top .Left = btnwaktu.Left .Width = btnwaktu.Width .Height = btnwaktu.Height End With
End Sub
Private Sub Image5_Click() End Sub
(26)
Private Sub Form_Load()
lblTime.Caption = Hari(DateValue(Now)) & ", " & Format(Now, "dd/MM/yyyy") Label3.Caption = TimeValue(Now)
End Sub
Private Sub imgCetakJdl_Click() frmCetakJadwal.Show
End Sub
Private Sub imgjdl_Click() frmJadwal.Show
End Sub
Private Sub imgkelas_Click() frmKelas.Show
End Sub
Private Sub imgMK_Click() frmMK.Show
End Sub
Private Sub imgwaktu_Click() frmWaktu.Show
End Sub
Private Sub lblCetakJdl_Click() frmCetakJadwal.Show
End Sub
Private Sub lblJdl_Click() frmJadwal.Show
End Sub
Private Sub lblKelas_Click() frmKelas.Show
(27)
Private Sub lblMK_Click() frmMK.Show
End Sub
Private Sub lblwaktu_Click() frmWaktu.Show
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Hari(DateValue(Now)) & ", " & Format(Now, "dd/MM/yyyy") Label3.Caption = TimeValue(Now)
End Sub
Public Function Hari(ByVal Tanggal As Date) As String Select Case Weekday(Tanggal)
Case 1: Hari = "Minggu" Case 2: Hari = "Senin" Case 3: Hari = "Selasa" Case 4: Hari = "Rabu" Case 5: Hari = "Kamis" Case 6: Hari = "Jum'at" Case 7: Hari = "Sabtu" End Select
End Function
Public Function bulan(ByVal bln As Date) As String Select Case MonthName(bln)
Case 1: bulan = "Januari" Case 2: bulan = "Februari" Case 3: bulan = "Maret" Case 4: bulan = "April" Case 5: bulan = "Mei" Case 6: bulan = "Juni" Case 7: bulan = "Juli" Case 8: bulan = "Agustus" Case 9: bulan = "September" Case 10: bulan = "Oktober" Case 11: bulan = "November" Case 12: bulan = "Desember"
(28)
End Select End Function
B. Modules
1. Koneksi Database
Option Explicit
Public CN As New ADODB.Connection Public CN2 As New ADODB.Connection Dim rsJadwal As ADODB.Recordset Dim rsWaktu As ADODB.Recordset Dim rsMK As ADODB.Recordset Public ID_global As Variant
Sub koneksi()
Dim Reply As VbMsgBoxResult On Error GoTo ERR_CONNECTION Set CN = New ADODB.Connection CN.CursorLocation = adUseClient
CN.ConnectionString = "Driver={MySQL ODBC 5.2w
Driver};SERVER=localhost;PWD=;UID=root;PORT=3306;DATABASE=db_penjadwalan_lab; "
CN.Open Exit Sub
ERR_CONNECTION:
Reply = MsgBox("Error Number:" & Err.Number & vbNewLine & "Description:" & Err.Description, vbExclamation + vbRetryCancel, "Connection Failure") End Sub
Sub ClosemySQL() CN.Close
Set CN = Nothing End Sub
2. Interface
Option Explicit
'*************************************************************** '*** This module allows usage of the Mouse Scroll Wheel. *** '*** NB! The DataGrid Control can't be in the Edit Mode and ***
(29)
'*** the a DataGrid Item must have the Focus. *** '*** This is achieved by Highlighting the left most column *** '*** of the DataGrid Control i.e, where the arrow is on *** '*** program startup. *** '***************************************************************
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Const GWL_WNDPROC = (-4) Public lpPrevWndProc As Long Const WM_MOUSEWHEEL = &H20A Const WHEEL_DELTA = 120 Dim Count As Integer
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_MOUSEWHEEL Then Dim Delta As Long
Static Travel As Long Delta = HiWord(wParam) Travel = Travel + Delta
MouseWheel Travel \ WHEEL_DELTA, LoWord(lParam), HiWord(lParam) Travel = Travel Mod WHEEL_DELTA
End If
WndProc = CallWindowProc(lpPrevWndProc, hwnd, Msg, wParam, lParam) End Function
Function HiWord(DWord As Long) As Integer
CopyMemory HiWord, ByVal VarPtr(DWord) + 2, 2 End Function
(30)
Function LoWord(DWord As Long) As Integer CopyMemory LoWord, DWord, 2
End Function
Sub MouseWheel(Travel As Integer, X As Long, Y As Long) 'Scroll one row per wheel step.
'To scroll more than 1 row per step change the next 'line to:
'YourFormsName.DataGrid1.Scroll 0, -Travel * NumberOfRowsDesired frmPenjadwalan.DataGrid1.Scroll 0, -Travel * 1
End Sub
C. User Controls 1. UcProgresCircular
Option Explicit
'--- 'Autor: Leandro Ascierto
'Web: www.leandroascierto.com.ar 'Date: 23/11/2010
'---
Private Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal hdc As Long, ByRef graphics As Long) As Long
Private Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As Long
Private Declare Function GdiplusStartup Lib "gdiplus" (Token As Long, inputbuf As GDIPlusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Function GdiplusShutdown Lib "gdiplus" (ByVal Token As Long) As Long
Private Declare Function GdipSetSmoothingMode Lib "GdiPlus.dll" (ByVal mGraphics As Long, ByVal mSmoothingMode As Long) As Long
Private Declare Function GdipDrawLine Lib "GdiPlus.dll" (ByVal mGraphics As Long, ByVal mPen As Long, ByVal mX1 As Single, ByVal mY1 As Single, ByVal mX2 As Single, ByVal mY2 As Single) As Long
Private Declare Function GdipCreatePen1 Lib "GdiPlus.dll" (ByVal mColor As Long, ByVal mWidth As Single, ByVal mUnit As Long, ByRef mPen As Long) As Long
(31)
Private Declare Function GdipDeletePen Lib "GdiPlus.dll" (ByVal mPen As Long) As Long
Private Declare Function GdipSetPenStartCap Lib "gdiplus" (ByVal pen As Long, ByVal startCap As LineCap) As Long
Private Declare Function GdipSetPenEndCap Lib "gdiplus" (ByVal pen As Long, ByVal endCap As LineCap) As Long
Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal
lOleColor As Long, ByVal lHPalette As Long, ByVal lColorRef As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(Destination As Any, Source As Any, ByVal Length As Long)
'---GDI PLUS SAFE MODE (By LaVolpe)
Private Declare Function CreateWindowExA Lib "user32.dll" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal
dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, ByRef lpParam As Any) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
Private Declare Function VirtualAlloc Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFree Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetParent Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
(32)
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
Private Const GWL_WNDPROC As Long = -4 Private Const GW_OWNER As Long = 4
Private Const WS_CHILD As Long = &H40000000
'---
Private Type GDIPlusStartupInput
GdiPlusVersion As Long DebugEventCallback As Long SuppressBackgroundThread As Long SuppressExternalCodecs As Long End Type
Public Enum LineCap LineCapFlat = &H0 LineCapSquare = &H1 LineCapRound = &H2 LineCapTriangle = &H3 LineCapNoAnchor = &H10 LineCapSquareAnchor = &H11 LineCapRoundAnchor = &H12 LineCapDiamondAnchor = &H13 LineCapArrowAnchor = &H14 End Enum
Public Enum enuNumberOfLines FortyEightLines = &H0 TwentyFourLines = &H1 TwelveLines = &H2 EightLine = &H3 SixtLine = &H4 FourLine = &H5 End Enum
(33)
Private Const SmoothingModeAntiAlias As Long = &H4 Private Const UnitPixel As Long = &H2
Private Const PI180 = 3.14159 / 180
'Private GdipToken As Long Private CurrentPos As Long Private mDrawWidth As Long Private mBackColor As OLE_COLOR Private mForeColor As OLE_COLOR Private mLineStart As LineCap Private mLineEnd As LineCap Private mTotalLines As Long
Private mNumberOfLines As enuNumberOfLines Private mInterval As Long
Public Property Get NumberOfLines() As enuNumberOfLines NumberOfLines = mNumberOfLines
End Property
Public Property Let NumberOfLines(ByVal lngNumber As enuNumberOfLines) Select Case lngNumber
Case FortyEightLines: mTotalLines = 7.5 Case TwentyFourLines: mTotalLines = 15 Case TwelveLines: mTotalLines = 30 Case EightLine: mTotalLines = 45 Case SixtLine: mTotalLines = 60 Case FourLine: mTotalLines = 90 Case Else
lngNumber = TwelveLines mTotalLines = 12
End Select
mNumberOfLines = lngNumber PropertyChanged "NumberOfLines" Call Draw
(34)
Public Property Get Interval() As Long Interval = mInterval
End Property
Public Property Let Interval(ByVal lngValue As Long) mInterval = lngValue
PropertyChanged "Interval" If Ambient.UserMode Then
Timer1.Interval = lngValue End If
End Property
Public Property Get ForeColor() As OLE_COLOR ForeColor = mForeColor
End Property
Public Property Let ForeColor(ByVal lngForeColor As OLE_COLOR) mForeColor = lngForeColor
PropertyChanged "ForeColor" Call Draw
End Property
Public Property Get BackColor() As OLE_COLOR BackColor = mBackColor
End Property
Public Property Let BackColor(ByVal lngBackColor As OLE_COLOR) mBackColor = lngBackColor
UserControl.BackColor = mBackColor PropertyChanged "BackColor"
Call Draw End Property
Public Property Get LineStart() As LineCap LineStart = mLineStart
(35)
Public Property Let LineStart(ByVal enuLineStart As LineCap) mLineStart = enuLineStart
PropertyChanged "LineStart" Call Draw
End Property
Public Property Get LineEnd() As LineCap LineEnd = mLineEnd
End Property
Public Property Let LineEnd(ByVal enuLineEnd As LineCap) mLineEnd = enuLineEnd
PropertyChanged "LineEnd" Call Draw
End Property
Public Property Get DrawWidth() As Long DrawWidth = mDrawWidth
End Property
Public Property Let DrawWidth(ByVal lDrawWidth As Long) mDrawWidth = lDrawWidth
PropertyChanged "DrawWidth" Call Draw
End Property
Private Sub UserControl_Initialize() 'InitGDI
CurrentPos = 360
UserControl.ScaleMode = vbPixels UserControl.AutoRedraw = True End Sub
Private Sub UserControl_InitProperties() mLineStart = LineCapRound
mLineEnd = LineCapRound
mBackColor = Ambient.BackColor UserControl.BackColor = mBackColor
(36)
mForeColor = Ambient.ForeColor mInterval = 100
mDrawWidth = 6
Me.NumberOfLines = TwelveLines
Call ManageGDIToken(UserControl.ContainerHwnd) End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) Call ManageGDIToken(UserControl.ContainerHwnd)
With PropBag
mForeColor = .ReadProperty("ForeColor", vbWindowText) mBackColor = .ReadProperty("BackColor", vbButtonFace) mLineStart = .ReadProperty("LineStart", LineCapRound) mLineEnd = .ReadProperty("Lineend", LineCapRound) mDrawWidth = .ReadProperty("DrawWidth", 6)
mInterval = .ReadProperty("Interval", 100) UserControl.BackColor = mBackColor
Me.NumberOfLines = .ReadProperty("NumberOfLines", TwelveLines) 'And call Draw
End With
If Ambient.UserMode Then
Timer1.Interval = mInterval End If
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag) With PropBag
.WriteProperty "BackColor", mBackColor, vbButtonFace .WriteProperty "ForeColor", mForeColor, vbWindowText .WriteProperty "LineStart", mLineStart, LineCapRound .WriteProperty "LineEnd", mLineEnd, LineCapRound .WriteProperty "DrawWidth", mDrawWidth, 6
.WriteProperty "NumberOfLines", mNumberOfLines, TwelveLines .WriteProperty "Interval", mInterval, 100
End With End Sub
(37)
Private Sub UserControl_Resize()
If UserControl.ScaleWidth > UserControl.ScaleHeight Then UserControl.Height = UserControl.Width
Else
UserControl.Width = UserControl.Height End If
Draw End Sub
Private Sub UserControl_Terminate() 'TerminateGDI
End Sub
Private Sub Draw()
Dim lPercent As Long Dim hGraphics As Long Dim hPen As Long Dim i As Long
Dim SL As Single, ST As Single Dim S As Single, C As Single
Dim MidSize As Single, Size As Single UserControl.Cls
If GdipCreateFromHDC(UserControl.hdc, hGraphics) = 0 Then
Call GdipSetSmoothingMode(hGraphics, SmoothingModeAntiAlias)
If mLineEnd = LineCapDiamondAnchor Or mLineEnd = LineCapRoundAnchor Then
MidSize = mDrawWidth Else
MidSize = (mDrawWidth / 2) End If
Size = (UserControl.ScaleWidth / 2) - MidSize - 1 SL = Size + MidSize
ST = Size + MidSize
(38)
For i = 360 To mTotalLines Step -mTotalLines S = Sin(i * PI180)
C = Cos(i * PI180)
lPercent = ((CurrentPos + i + 20) Mod 360) * 100 / 360 lPercent = lPercent * 255 / 100
GdipCreatePen1 CombineColors(mForeColor, mBackColor, lPercent), mDrawWidth, UnitPixel, hPen
GdipSetPenStartCap hPen, mLineStart GdipSetPenEndCap hPen, mLineEnd
Call GdipDrawLine(hGraphics, hPen, SL + (S * MidSize), ST - (C * MidSize), S * Size + SL, -C * Size + ST)
GdipDeletePen hPen Next i GdipDeleteGraphics hGraphics End If UserControl.Refresh End Sub
'Función para combinar dos colores y asignar el color alpha.
Private Function CombineColors(ByVal clrFirst As Long, ByVal clrSecond As Long, ByVal lPercent As Long, Optional ByVal lAlpha As Long = 255) As Long Dim clrFore(3) As Byte
Dim clrBack(3) As Byte Dim clrFinal(3) As Byte
OleTranslateColor clrFirst, 0, VarPtr(clrFore(0)) OleTranslateColor clrSecond, 0, VarPtr(clrBack(0))
clrFinal(0) = (clrFore(2) * lPercent + clrBack(2) * (255 - lPercent)) / 255
clrFinal(1) = (clrFore(1) * lPercent + clrBack(1) * (255 - lPercent)) / 255
clrFinal(2) = (clrFore(0) * lPercent + clrBack(0) * (255 - lPercent)) / 255
clrFinal(3) = lAlpha
CopyMemory CombineColors, clrFinal(0), 4 End Function
(39)
Private Sub Timer1_Timer()
CurrentPos = CurrentPos - 30
If CurrentPos <= 0 Then CurrentPos = 360 Draw
End Sub
'Private Sub InitGDI()
' Dim GdipStartupInput As GDIPlusStartupInput ' GdipStartupInput.GdiPlusVersion = 1&
' Call GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0) 'End Sub
'---
'Private Sub TerminateGDI()
' If GdipToken Then Call GdiplusShutdown(GdipToken) 'End Sub
'---
'GDI Plus Safe Mode (By LaVolpe)
'Avira Antivir detecta este codigo como malicioso, asi que no preocuparse porque es inofencivo.
'puede ser subplantado por las funciones InitGDI y TerminateGDI pero es recomendable avilitarlas solo cuando se compile el proyecto.
Private Function ManageGDIToken(ByVal projectHwnd As Long) As Long If projectHwnd = 0& Then Exit Function
Dim hwndGDIsafe As Long 'API window to monitor IDE shutdown
Do
hwndGDIsafe = GetParent(projectHwnd)
If Not hwndGDIsafe = 0& Then projectHwnd = hwndGDIsafe Loop Until hwndGDIsafe = 0&
' ok, got the highest level parent, now find highest level owner Do
hwndGDIsafe = GetWindow(projectHwnd, GW_OWNER)
(40)
Loop Until hwndGDIsafe = 0&
hwndGDIsafe = FindWindowEx(projectHwnd, 0&, "Static", "GDI+Safe Patch") If hwndGDIsafe Then
ManageGDIToken = hwndGDIsafe ' we already have a manager running for this VB instance
Exit Function ' can abort End If
Dim gdiSI As GDIPlusStartupInput 'GDI+ startup info Dim gToken As Long 'GDI+ instance token
On Error Resume Next
gdiSI.GdiPlusVersion = 1 ' attempt to start GDI+ GdiplusStartup gToken, gdiSI
If gToken = 0& Then ' failed to start If Err Then Err.Clear
Exit Function End If
On Error GoTo 0
Dim z_ScMem As Long 'Thunk base address Dim z_Code() As Long 'Thunk machine-code initialised here
Dim nAddr As Long 'hwndGDIsafe prev window procedure
Const WNDPROC_OFF As Long = &H30 'Offset where window proc starts from z_ScMem
Const PAGE_RWX As Long = &H40& 'Allocate executable memory Const MEM_COMMIT As Long = &H1000& 'Commit allocated memory Const MEM_RELEASE As Long = &H8000& 'Release allocated memory flag
Const MEM_LEN As Long = &HD4 'Byte length of thunk
z_ScMem = VirtualAlloc(0, MEM_LEN, MEM_COMMIT, PAGE_RWX) 'Allocate executable memory
(41)
If z_ScMem <> 0 Then 'Ensure the allocation succeeded
' we make the api window a child so we can use FindWindowEx to locate it easily
hwndGDIsafe = CreateWindowExA(0&, "Static", "GDI+Safe Patch", WS_CHILD, 0&, 0&, 0&, 0&, projectHwnd, 0&, App.hInstance, ByVal 0&) If hwndGDIsafe <> 0 Then
ReDim z_Code(0 To MEM_LEN \ 4 - 1)
z_Code(12) = &HD231C031: z_Code(13) = &HBBE58960: z_Code(14) = &H12345678: z_Code(15) = &H3FFF631: z_Code(16) = &H74247539: z_Code(17) = &H3075FF5B: z_Code(18) = &HFF2C75FF: z_Code(19) = &H75FF2875
z_Code(20) = &H2C73FF24: z_Code(21) = &H890853FF: z_Code(22) = &HBFF1C45: z_Code(23) = &H2287D81: z_Code(24) = &H75000000: z_Code(25) = &H443C707: z_Code(26) = &H2&: z_Code(27) = &H2C753339: z_Code(28) = &H2047B81: z_Code(29) = &H75000000
z_Code(30) = &H2C73FF23: z_Code(31) = &HFFFFFC68: z_Code(32) = &H2475FFFF: z_Code(33) = &H681C53FF: z_Code(34) = &H12345678: z_Code(35) = &H3268&: z_Code(36) = &HFF565600: z_Code(37) = &H43892053: z_Code(38) = &H90909020: z_Code(39) = &H10C261
z_Code(40) = &H562073FF: z_Code(41) = &HFF2453FF: z_Code(42) = &H53FF1473: z_Code(43) = &H2873FF18: z_Code(44) = &H581053FF: z_Code(45) = &H89285D89: z_Code(46) = &H45C72C75: z_Code(47) = &H800030: z_Code(48) = &H20458B00: z_Code(49) = &H89145D89
z_Code(50) = &H81612445: z_Code(51) = &H4C4&: z_Code(52) = &HC63FF00
z_Code(1) = 0 ' shutDown mode; used internally by ASM
z_Code(2) = zFnAddr("user32", "CallWindowProcA") ' function pointer CallWindowProc
z_Code(3) = zFnAddr("kernel32", "VirtualFree") ' function pointer VirtualFree
z_Code(4) = zFnAddr("kernel32", "FreeLibrary") ' function pointer FreeLibrary
(42)
z_Code(5) = gToken ' Gdi+ token
z_Code(10) = LoadLibrary("gdiplus") ' library pointer (add reference)
z_Code(6) = GetProcAddress(z_Code(10), "GdiplusShutdown") ' function pointer GdiplusShutdown
z_Code(7) = zFnAddr("user32", "SetWindowLongA") ' function pointer SetWindowLong
z_Code(8) = zFnAddr("user32", "SetTimer") ' function pointer SetTimer
z_Code(9) = zFnAddr("user32", "KillTimer") ' function pointer KillTimer
z_Code(14) = z_ScMem ' ASM ebx start point
z_Code(34) = z_ScMem + WNDPROC_OFF ' subclass window procedure location
RtlMoveMemory z_ScMem, VarPtr(z_Code(0)), MEM_LEN 'Copy the thunk code/data to the allocated memory
nAddr = SetWindowLong(hwndGDIsafe, GWL_WNDPROC, z_ScMem + WNDPROC_OFF) 'Subclass our API window
RtlMoveMemory z_ScMem + 44, VarPtr(nAddr), 4& ' Add prev window procedure to the thunk
gToken = 0& ' zeroize so final check below does not release it
ManageGDIToken = hwndGDIsafe ' return handle of our GDI+ manager
Else
VirtualFree z_ScMem, 0, MEM_RELEASE ' failure - release memory
z_ScMem = 0& End If
Else
VirtualFree z_ScMem, 0, MEM_RELEASE ' failure - release memory
(43)
End If
If gToken Then GdiplusShutdown gToken ' release token if error occurred
End Function
Private Function zFnAddr(ByVal sDLL As String, ByVal sProc As String) As Long zFnAddr = GetProcAddress(GetModuleHandleA(sDLL), sProc) 'Get the
specified procedure address End Function
(44)
DAFTAR PUSTAKA
Foxall, James.2006. Visual Basic 2005. USA: Sams Publishing.
qIrvine, Kip.2009. Visual Basic 2008. USA: Pearson Education.
Nazir, Moh, PhD.1999. Metode Penelitian. Jakarta: Ghalia Indonesia.
Pandia, Henry.2002. Visual Basic 6 Tingkat Lanjut. Yogyakarta: Andi.
Siagian, Sondang P.2000. Pengantar Sistem Informasi Manajemen. Bumi Aksara.
Schneider, David.2006. Visual Basic 2005. USA: Pearson Education.
Sihombing, Poltak.2011. Pemrograman Visual Basic 6.0. Medan: Usu Press
Singarimbun, Masri.2002. Metode Penelitian Survei. Jakarta: LP3S.
Sugiri. 2007. Pengelolaan Database MySQL dengan PhpMyAdmin. Yogyakarta:
Graha Ilmu.
Madcoms, 2002. Database Visual Basic 6.0 dengan Crystal Reports. Yogyakarta:
Andi.
Kadir, Abdul, 2008. Dasar Perancangan & Implementasi Database Relasional.
(45)
Kroenke, David M, 2003. Database Processing. Erlangga.
(46)
BAB 3
GAMBARAN UMUM
LABORATORIUM D3 TEKNIK INFORMATIKA UNIVERSITAS
SUMATERA UTARA
3.1 Sejarah Berdirinya Laboratorium Teknik Informatika USU
Setelah MIPA berdiri pada tanggal 25 Agustus 1965 dengan nama FAPIA USU yang
dipimpin oleh rector USU Bpk.drg. Nazir Alwi, dan ketua jurusan matematika
Bpk.drs.P.Siagian. Teknik Komputer sekarang dulunya bernama Ilmu Komputer yang
dibuka secara resmi pada 1969 secara resmi setelah jurusan Farmasi, berdiri diwawah
Departemen matematika sampai sekarang.
Dibukanya jurusan Ilmu Komputer USU bertujuan untuk :
1.
Menyelenggarakan proses belajar mengajar dalam bidang ilmu-ilmu dasar
untuk menghasilkan anggota masyarakat yang memiliki kemampuan akademik
atau profesionalisme tinggi dan bertanggung jawab di dalam menerapkan,
(47)
35
2.
Menyelenggarakan praktek laboratorium dalam bidang ilmu - ilmu dasar untuk
menghasilkan dan mewujudkan ilmu pengetahuan dan teknologi yang
bermanfaat bagi kemajuan serta kesejahteraan masyarakat
3.
Meningkatkan mutu proses penyelenggaraan pendidikan dan praktek
laboratorium secara berkelanjutan melalui peningkatan kualitas sumber daya
manusia, sarana dan prasarana, sumber daya informasi, organisasi dan
manajemen
4.
Meletakkan
dasar-dasar
profesionalisme
penyelenggaraan
pendidikan,
penelitian dan pengabdian pada masyarakat untuk mewujudkan Fakultas MIPA
Universitas Sumatera Utara sebagai suatu unsur penunjang akademik dengan
akuntabilitas tinggi.
Dengan demikian untuk mencapai tujuan tersebut, jurusan Teknik Komputer
membutuhkan beberapa sarana untuk meningkatkan dan menunjang mutu pendidikan.
Untuk mencapai tujuan tersebut salah satu penunjang mutu pendidikan yang
disediakan adalah Laboratotium Komputer. Ini lah yang akan penulis bahas dalam
Laporan Pelaksanaan Praktek Kerja Lapangan.
3.2 Fungsi Laboratorium
Laboratorium Komputer sebagai salah satu unit penunjang yang melaksanakan tugas
pokoknya melayani mahasiswa dalam melaksanakan praktikum yang menunjang
(48)
36
dalam menyelesaikan Tugas Akhir, serta para dosen dalam pelaksanaan Penelitian dan
Pengabdian Kepada Masyarakat.
Fasilitas yang dimiliki Laboratorium Komputer terbagi dalam 2 ruang
praktikum yang terdiri dari 30 unit computer dalam satu ruangan yang saling
terhubung dengan menggunakan jaringan Local Area Network (LAN), serta
menggunakan LCD-Projector.
Software yang dipakai untuk perkuliahan di sesuaikan dengan kebutuhan
program studi yang memerlukan adanya antara lain ; Microsoft Windows Server,
Microsoft Office, Adobe Acrobat, Adobe Illustrator, Adobe PageMaker, Adobe
Photoshop, Adobe Premier, CorelDraw, Dreamweaver, Macromedia Director, Flash,
Macromedia Freehand, Autodesk/Ardes/Ars/Abs, 3D Studio Max, Symantec
Antivirus dan lain-lain.
Laboratorium Komputer dibuka pada setiap hari kerja pukul 08.00 s/d 16.00
WIB, setiap pengguna diharapkan dapat mematuhi tata tertib penggunaan
Laboratorium Komputer.
3.3 Struktur Organisasi Laboratorium D3 Teknik Informatika USU
Srtuktur organisasi merupakan rangka dan pola hubungan yang sistematis merupakan
bagian-bagian yang saling berkaitan untuk membentuk suatu kesatuan dalam usaha
(49)
37
Dalam mencapai tujuan tersebut setiap manajemen Perusahaan atau Dinas
dituntut untuk membentuk suatu struktur organisasi yang dapat menempatkan seluruh
tugas dan kegiatan perusahaan secara efesien sehingga produktifitasnya dapat efektif.
Struktur organisasi yang tegas mencerminkan adanya pembagian tugas dan tanggung
jawab yang tegas pula.
Sama halnya dengan Laboratorium Komputer USU juga memiliki struktur
organisasi, dari struktur organisasi ini kita juga dapat mengetahui bahwa setiap bagian
atau seksi mempunyai tugas dan wewenang masing-masing yang harus dipertanggung
jawabkan.
Struktur yang terdapat pada setiap organisasi pada dasarnya merupakan
kerangka pembagian tugas, wewenang dan tanggung jawab dari pegawai yang
melaksanakan pekerjaannya. Setiap unsure-unsur harus dirancang dan ditaati
sebaik-baiknya, sebagai pertimbangan tujuan yang akan dicapai oleh perusahaan atau Dinas.
Kejelasan dari struktur ini didapat dalam satu organisasi, dan dapat diketahui
hubungan kerjanya secara fungsional antara satu bagian dengan bagian lainnya.
Struktur organisasi Laboratorium Komputer D3 USU Medan adalah sebagai
berikut :
1.
Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam (Dr. Sutarman, M.Sc
(50)
38
2.
Ketua Departemen Fakultas Matematika Dan Ilmu Pengetahuan Alam (Prof.
Drs. Tulus Vordipl. Math., M.Si., Ph.D).
3.
Dosen atau pegawai yang bersangkutan yang mengelola Laboratorium
Komputer
D3 USU.
4.
Kepala Laboratorium Komputer D3 USU (Drs.Suyanto, M.KOM)
5.
Pegawai yang Mengelola Laboratorium Komputer D3 USU (Sutrisno)
6.
Asisten Laboratorium Komputer D3 USU yang menjalankan proses belajar
dan mengajar mewakili tugas para Dosen yang bersangkutan.
Tugas dan tanggung jawab setiap bidang yang ada pada Laboratorium Komputer D3
USU dapat diuraikan sebagai berikut :
1.
Kepala Lab
Tugas Pokok dan Fungsi Kepala Laboratorium Komputer D3 USU adalah mengelola
laboratorium dengan mendayagunakan seluruh sumber daya secara terencana,
terawasi, dan terevaluasi. Karena itu secara manajerial dan organisasi seorang Kepala
Laboratorium mempunyai tugas antara lain sebagai berikut:
1.
Merancang sistem mutu prosedur tata kelola Laboratorium Komputer.
2.
Menetapkan visi, misi, tujuan, serta kebijakan dan tujuan mutu Laboratorium
Komputer.
3.
Menetapkan sistem pemantauan, evaluasi, dan peningkatan tata atau kegiatan
(51)
39
4.
Merencanakan kegiatan pendidikan penelitian dan pengabdian pada
masyarakat di Laboratorium Komputer Dasar.
5.
Memberikan sarana bagi civitas akademika untuk melakukan pengembangan
ilmu pengetahuan dan teknologi.
6.
Menyiapkan jadwal kegiatan Laboratorium Komputer.
7.
Mengkoordinasikan segala kegiatan yang dilaksanakan dalam Laboratorium
Komputer.
8.
Menjalin kerjasama dengan pihak luar dalam rangka resource sharing dan
pemberdayaan Laboratorium Komputer.
9.
Melakukan kebutuhan sumber daya, pemantauan dan evaluasi atas
ketersediaan sarana prasarana dan kegiatan dalam Laboratorium Komputer.
10.
Selain itu, seorang Kepala Laboratorium dalam pelaksanaan tugas sebagai
pengelola laboratorium dapat dibantu oleh teknisi dan laboran yang secara
langsung bertanggung jawab terhadapnya.
11.
Memilih personil laboratorium, dan mengusulkannya kepada Ketua jurusan
untuk mengangkat personil atau pegawai Laboratorium Komputer.
12.
Menetapkan tanggung jawab, wewenang, dan uraian tugas semua personil
laboratorium, beserta hirarki tugasnya.
13.
Bertanggung jawab kepada Ketua Laboratorium Komputer.
2.
Petugas atau Pegawai Laboratorium
Adapun tugas yang harus diemban oleh seorang petugas atau pegawai laboratorium
(52)
40
laboratorium hanya digunakan oleh mahasiswa saat ini, staf pengajar dan staf.
Laporan dan komputer membutuhkan perbaikan ke Koordinator Lab Komputer.
Mengawasi evakuasi pusat selama kebakaran atau cuaca buruk. Pastikan laboratorium
dijamin pada penutupan. Menjaga keamanan umum peralatan laboratorium dan
lingkungan di laboratorium, termasuk penegakan kebijakan dan prosedur. Melakukan
tugas pekerjaan lain yang terkait sebagaimana ditugaskan.
Kemampuan untuk memberikan dukungan teknis dasar untuk pengguna lab.
Kemampuan untuk berkomunikasi secara efektif dengan staf, mahasiswa dan tamu
dari universitas. Kemampuan untuk membuat keputusan dan bekerja secara
independen. Kemampuan untuk memastikan kebijakan dan prosedur yang diikuti
dalam semua keputusan. Kemampuan untuk memanfaatkan teknik-teknik perencanaan
lanjutan dan manajemen waktu untuk memastikan catatan kehadiran yang baik dan
atau memperoleh subs baik dalam lanjutan.
Tugas lain dari petugas atau pegawai laboratorium adalah :
1
Menyusun rencana operasional Unit Laboratorium dan Komputer
2
Menyusun rencana kegiatan dan anggaran unit Laboratorium dan
Komputer
3
menyusun rencana kebutuhan unit Laboratorium dan Komputer
4
Memfasilitasi penyelenggaraan praktikum
(53)
41
6
Melaksanakan tugas-tugas dan tanggung jawab sebagai petugas
Laboratorium.
3.
Dosen
Sebagai seorang dosen tentu punya tugas dan tanggung jawab. Dosen sebagai pengajar
yang mempunyai mata kuliah praktikum harus bertanggung jawab dalam mata kuliah
praktikumnya juga. Setiap dosen saling bekerja sama dengan petugas laboratorium,
baik dalam pelaksanaan praktikum maupun dalam tanggung jawab menjalankan
semua yang bersangkutan dengan laboratorium.
Diluar itu dosen juga berperan sebagai pengajar(undergraduate) dan
peneliti(post graduate). Dua peran ini cukup signifikan perbedaannya, meskipun
keduanya bertujuan untuk melahirkan pribadi yang unggul. Karakteristik antara
undergraduate dengan postgraduate baik pelajar, kurikulum serta metode pengajaran
berbeda.
Pendidikan undergraduate lebih banyak berorientasi pembentukan karakter dan
penanaman pemahaman yang dapat digunakan ketika bekerja. Untuk pendidikan
postgraduate, selain orientasi pendidikan undergraduate, pengembangan ilmu dan
publikasi juga menjadi orientasi. Metode pengajaran undergraduate lebih banyak
(54)
42
pada tahun akhir. Akan tetapi, pada pendidikan postgraduate, pelajar sendiri yang
harus mengembangkan dirinya melalui eksperimen dan penulisan hasil temuannya.
Dua dimensi ini tidak dapat dipisahkan dari diri dosen, selain pekerjaan lain
yang telah disebutkan. Bayangkan bila seorang dosen harus mengajar 1-2 mata kuliah
pada S1 dan 1-2 mata kuliah untuk postgraduate sehingga total mengajar adalah
4x3jam (1mata kuliah 3jam)= 12 jam. Ditambah lagi dosen harus melakukan
penilaian-penilaian atas hasil akademik dan bukan akademik (kemampuan
berkomunikasi, presentasi dll) yang dijiwai oleh semangat OBE (Outcome based
Education, terutama untuk pendidikan teknik). Belum lagi penilaian-penilaian
terhadap kemampuan dasar untuk dapat bersaing pada pasar global seperti
kemampuan berdiskusi, bekerja dalam grup. Penilaian kemampuan dasar ini telah
ditetapkan oleh “negara” dan “universitas”. Berapa lembar formulir penilaian yang
harus diisi? Karena pencapaian outcome tersebut mesti dikuantitatifkan dan mesti ada
bukti sehingga pencapaian tersebut dianggap valid.
Di sisi lain, seiringan dengan persaingan ketat untuk meningkatkan peringkat
universitas, para dosen diminta untuk mempublikasikan hasil penelitian pada
majalah-majalah ilmiah yang bergengsi. Konon, universitas yang telah diakui sebagai Research
University harus menerbitkan 4 makalah untuk setiap dosennya pada majalah ilmiah
bertaraf internasional. Kalau disederhanakan, maka setiap 3 bulan harus menulis 1
makalah. Itupun di luar publikasi kelas lokal dan prosiding yang diterbitkan pada
(55)
43
para dosen harus banyak mendapatkan dana penelitian baik yang disediakan
pemerintah atau Internasional. Untuk mendapatkan dana besar maka proposal harus
menarik dan luar biasa. Intinya, untuk mendapatkan dana besar maka pengorbanan
waktu adalah suatu keniscayaan.
Kedua-
dua tugas di atas mesti diletakan pada prioritas utama….itu kata
manajemen universitas. Padahal hubungan keduanya adalah Trade-off. Biasanya,
teaching university meletakkan pengajaran sebagai prioritas, tapi research university
berorientasi research dan publikasi. Tidak aneh bila yang menjadi korban adalah para
staf akademis.
Untuk meningkatkan gengsi universitas, dosen juga diminta untuk membina
hubungan dengan industri serta aktif dalam kegiatan konsultasi. Kegiatan ini penting
karena menghasilkan pemasukan untuk universitas selain pemahaman tentang dunia
industri. Tapi pekerjaan ini masih lebih menyenangkan bila dibandingkan dengan
pekerjaan urusan administrasi. Dia tidak kenal waktu, tidak habis-habis dan tidak
menyenangkan sama sekali. Pekerjaan ini terkadang menarik perhatian beberapa
dosen yang memang mempunyai tujuan ke sana seperti posisi dekan, ketua jurusan dll.
Silahkan bayangkan sibuknya seorang dosen yang harus mengerjakan semua
tugas tersebut dan akan dinilai performance seorang dosen atas semua pekerjaan
tersebut. Bisa dikatakan bahwa seorang dosen adalah manusia “super” yang penuh
dengan pekerjaan meskipun keadaan tersebut tidak dipahami oleh masyarakat.
(56)
44
Masyarakat sekarang ini hanya mengenal dosen sebagai pengajar, jadi pekerjaannya
hanya mengajar.
Inilah sedikit gambaran tugas-tugas seorang dosen, dan dosen yang ideal
adalah dosen yang mampu melaksanakan semua tugas dan tanggung jawab ini.
4.
Asisten Laboratorium
Tugas dan tanggung jawab seorang asisten laboratorium adalah menggantikan
pekerjaan seorang dosen jika dosen yang bersangkutan sedang berhalangan. Seorang
asisten laboratorium juga bertanggung jawab dalam pemberian tugas kepada siswa
praktikum.
5.
Akses Infrastruktur Teknologi Informasi
Penyediaan layanan teknologi informasi (TI) diselenggarakan oleh Pusat Sistem
Informasi (PSI)., suatu divisi yang mengelola pelayanan akses terhadap infrastruktur
teknologi informasi dan lingkungannya baik di dalam maupun dari luar kampus.
Penyediaan layanan TI dimaksudkan terutama untuk memudahkan sivitas akademika
(mahasiswa dan dosen) mengakses seluruh spektrum sumber daya informasi dan
pengetahuan berbasis elektronik baik yang disediakan oleh Universitas maupun yang
(57)
45
program utama Universitas. Selain itu, infrastruktur TI juga digunakan untuk
mendukung sistem informasi manajemen (SIM) Universitas.
Seluruh aktivitas akademika dan staf Universitas dapat menggunakan layanan
akses jaringan di dalam kampus secara gratis baik melalui jaringan kabel dengan
terminal PC maupun jaringan tanpa kabel (wireless) yang tersedia di seluruh gedung
dan sekitarnya di dalam kampus. Penyediaan fasilitas jaringan tanpa kabel atau WiFi
ditujukan bagi mereka yang memiliki laptop. Layanan akses jaringan Universitas
diberi sticker logo USUNETA untuk memudahkan para sivitas akademika
mengidentifikasi lokasi dimana layanan tersebut tersedia untuk digunakan.
3.4 TATA TERTIB LABORATORIUM
Tata Tertib yang berlaku di Laboratorium Program Teknologi Informasi dan Ilmu
Komputer Universitas Sumatera Utara sebagai berikut:
3. 4.1 Tata Tertib Penggunaan Laboratorium
1.
Mahasiswa wajib mengisi buku kunjungan laboratorium(Absensi)
2.
Mahasiswa yang meminjam peralatan laboratorium harus memenuhi ketentuan
peminjaman dan pengembalian,
3.
Mahasiswa dilarang membuat gaduh di dalam laboratorium.
4.
Dilarang makan, minum dan merokok di dalam laboratorium.
(58)
46
6.
Semua pengunjung laboratorium wajib menjaga kebersihan laboratorium.
7.
Semua mahasiswa yang mengunjungi atau praktek di laboratorium, wajib
merapikan kembali semua inventaris laboratorium.
8.
Dilarang membawa peralatan laboratorium keluar ruang laboratorium tanpa
izin dari petugas laboratorium.
9.
Dilarang membawa pulang peralatan laboratorium.
10.
Semua pengunjung laboratorium harus menjaga keamanan inventaris
laboratorium.
11.
Jika terjadi kerusakan dan kehilangan peralatan laboratorium, maka
pengunjung yang merusakkan atau menghilangkan alat tersebut wajib melapor
ke petugas laboratorium dan mengganti alat tersebut.
12.
Jika tidak ada yang melapor telah menghilangkan atau merusakkan alat
laboratorium, maka semua mahasiswa yang mengunjungi laboratorium wajib
mengganti 2 kali lipatnya.
3.4.2 Tata Tertib Praktek Laboratorium
1.
Setiap mahasiswa wajib mengikuti praktek laboratorium.
2.
Berpakaian sopan dan rapi saat masuk ke dalam laboratorium
3.
Mahasiswa harus hadir di ruang praktek laboratorium 5 menit sebelum
praktikum dimulai.
4.
Sebelum masuk ruang laboratorium, setiap mahasiswa harus sudah
(59)
47
5.
Selama praktek di laboratorium dilarang membuat gaduh, makan, minum dan
merokok didalam laboratorium.
6.
Selesai praktikum tempat kerja harus dibersihkan dan dirapikan kembali, serta
alat-alat dikembalikan pada tempatnya.
7.
Mahasiswa yang tidak dapat mengikuti praktikum harus melapor kepada
asisten praktikum mata kuliah yang bersangkutan.
8.
Peralatan laboratorium yang dipakai dalam praktikum, menjadi tanggung
jawab
mahasiswa,
oleh
karenanya
harus
berhati-hati
dalam
mempergunakannya.
9.
Mahasiswa yang datang terlambat lebih dari 15 menit tidak diperkenankan
(60)
BAB 4
ANALISIS DAN PERANCANGAN SISTEM
4.1 Analisis Sistem
Analisis sistem adalah penguraian dari suatu sistem yang utuh ke dalam bagian-bagian
komponennya dengan maksud untuk mengidentifikasikan dan mengevaluasi
permasalahan, kesempatan, hambatan yang terjadi dan kebutuhan yang diharapkan
sehingga dapat diusulkan perbaikan.
Sistem penjadwalan ini merupakan sistem yang bersifat dinamis dimana data
yang terdapat didalamnya dapat berubah sesuai dengan kebutuhan dan seiring
berjalannya waktu sehingga harus dapat dilakukan penambahan, penghapusan,
maupun pembaharuan data yang sudah pernah disimpan sebelumnya. Perubahan
hanya dilakukan pada bagian basis pengetahuan saja sehingga sistem ini dapat
dikembangkan lebih lanjut. Tahapan analisis terhadap suatu sistem dilakukan sebelum
tahap perancangan, hal ini agar perangkat lunak yang dirancang sesuai dengan
(61)
49
4.2 Perancangan Sistem
Pada subbab ini akan diuraikan tahap tahap dalam perancangan apikasi penjadwalan
yang memiliki beberapa komponen utama yaitu: basis data dan antar muka pengguna
(user interface).
4.2.1 Perancangan Output
Output atau keluaran yang dihasilkan dari sistem ini beruapa dokumen laporan
berbentuk data report. Berikut ini adalah rancangan output yang dibuat :
a.
Output Laporan Jadwal per Kelas
Nama ruang
JADWAL LABORATORIUM D3 TI UNIVERSITAS SUMATERA UTARA Logo
Kelas : nama_kelas
Mata Kuliah Nama mata kuliah 1 Nama mata kuliah 2
-
Nama mata kuliah n
Waktu Waktu mata kuliah 1 Waktu mata kuliah 2
-
Waktu mata kuliah n
Ruangan Nama Ruang
Nama ruang Nama ruang
(62)
50
b.
Laporan Jadwal per Mata Kuliah
4.2.2 Perancangan Input
Perancangan input yang digunakan dalam sistem ini adalah sebagai berikut :
Nama input : data kelas
Sumber
: kepala Laboratorium D3 TI USU
Fungsi
: Mendata seluruh kelas yang ada di program studi D3 TI USU
JADWAL LABORATORIUM D3 TIUNIVERSITAS SUMATERA UTARA Logo
Mata Kuliah : nama_mata_kuliah
Kelas Nama kelas
-
Waktu Waktu mata kuliah 1
-
Ruangan Nama Ruang
(63)
51
Rancangan.
Gambar 4.1 Form Input Data Kelas
(64)
52
Gambar 4.3 Fom Input Data Waktu
4.2.3 Peracangan Dialog
User Interface atau tampilan antarmuka merupakan salah satu bagian penting dalam
pembangunan perangkat lunak. Sebuah sistem akan terlihat lebih mudah digunakan
apalabila didukung dengan antarmuka yg ramah.
(65)
53
Gambar 4.4 Tampilan Menu Utama
(66)
54
4.2.4 Perancangan Database
4.2.4.1 DFD Level Konteks
DFD atau Data Flow Diagram dari sistem penjadwalan ini dapat dilihat sebagai
berikut :
Gambar 4.6 DFD Level Konteks
Waktu Mata Kuliah
Penjadwalan Lab
Ruangan Kelas
(67)
55
4.2.4.2 Entity Relationship Diagram
4.2.4.2 Struktur Database dan Tabel
Sistem penjadwalan ini terdiri dari satu database dan lima buah tabel. Berikut ini
adalah strukur databasenya :
kelas
Id
Nama_kelas
Jlh_mhs
Waktu
Id
Hari
Jam_mulai
Jam_selesai
Jadwal
Id
waktu
kelas
Mata_kuliah
ruang
Mata_kuliah
Id
Nama_mk
Semester
Sks
Dosen
Ruangan
Id
Nama_ruang
kapasitas
(68)
56
Nama database : db_penjadwalan_lab
Nama nama tabel :
1.
Tabel Waktu
Nama Field
Tipe Data
Panjang
Keterangan
Id
Integer
11
-
Hari
Varchar
50
-
Jam_mulai
Time
-
-
Jam_selesai
time
-
-
Tabel 4.1 Tabel Waktu
2.
Tabel mata_kuliah
Nama Field
Tipe Data
Panjang
Keterangan
Id
Integer
11
-
Nama_mk
Varchar
50
Nama Mata
kuliah
semester
integer
1
-
Sks
integer
2
Jumlah kredit
semester
dosen
varchar
50
Nama dosen
pengasuh
Tabel 4.2 Tabel mata_kuliah
3.
Tabel Kelas
Nama Field
Tipe Data
Panjang
Keterangan
Id
Integer
11
-
nama
Varchar
50
Nama kelas
Jlh_mhs
integer
3
Jumlah
mahasiswa
Tabel 4.3 Tabel Kelas
(69)
57
Nama Field
Tipe Data
Panjang
Keterangan
Id
Integer
11
-
nama
Varchar
50
Nama ruang
kapasitas
integer
3
-
Tabel 4.4 Tabel Ruang
4.2.5 Perancangan Program
4.2.5.1 Flowchart
Flowchart digunakan untuk menggambarkan aliran instruksi-instruksi dari sebuah
program. Berikut ini adalah diagram aliaran instruksi pada program penjadwalan :
(70)
58
2.
Flowchart Pengaturan Waktu
MulaiTampilan menu utama
Pengaturan waktu
Penjadwalan
Mata Kuliah
Kelas
Cetak Jadwal
Keluar
Per matakuliah
Per kelas
Selesai Kelas Mata Kuliah Penjadwalan
Pengaturan waktu A
B
C
D
E
(71)
59
(72)
60
(73)
61
5.
Flowchart Kelas
CInput Mata Kuliah
Duplikasi
Database
Selesai Cek Duplikasi
Pesan Eror
(74)
62
(75)
63
4.2.5.2 Pseudocode
Pseudocode
adalah deskripsi dari algoritma pemrograman komputer yang
menggunakan struktur sederhana dari beberapa bahasa pemograman tetapi bahasa
tersebut hanya ditujukan agar dapat dibaca manusia. Biasanya yang ditulis dari
E
Input Pilihan
Pilihan
Selesai
Jadwal Per Kelas
Jadwal Per Matakuliah
Perkelas
(76)
64
Pseudocode adalah variabel dan fungsi. Tujuan penggunaan utama dari Pseudocode
adalah untuk memudahkan manusia dalam memahami prinsip-prinsip dari suatu
algoritma. Berikut ini adalah Pseudocode sistem penjadwalan secara umum :
1.
Pseudocode Pengaturan waktu
INPUT WAKTUDeklarasi: Lst : listitem Rs : recordset
arrHari(5) : array string arrDup : array string
Jam_m, jam_s, mnt_m, mnt_s, hh, Dup : integer Input hari „di checkbox
Input jam_m, mnt_m, jam_s, mnt_s „pada combobox Input keterangan „pada textbox keterangan
For hh = 0 to 5
If len(hari(hh)) <> 0 then Buka koneksi database
Rs Jalankan kueri : select * from tabel hari dimana Hari=arrHari(hh) AND jam_mulai=jam_m
If rs tidak ditemukan
Rsjalankan kueri simpan : insert into tabel_hari_ Values(arrHari(hh),jam_m, mnt_m,jam_s, mnt_s) lsttambahkan arr(hari), jam_m, mnt_m, jam_s
mnt_s ke listitem else
arrDup(hh) „hitung duplikasi
tampilkan msgbox peringatan duplikasi waktu endif
Next hh
SELESAI
2.
Pseudocode Penjadwalan
MULAIDeklarasi : Sem : integer
Mk, kelas, ruang : string Waktu : date
Waktu isi dengan kueri : SELECT * FROM waktu INPUT sem „melalui combobox
Mk isi MK dengan kueri : SELECT * from mata_kuliah where semester=‟sem‟
(1)
PENGHARGAAN
Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Kuasa, yang telah melimpahkan karunia-Nya dalam mengerjakan tugas akhir ini. Karena berkat-Nya pula penulis dapat menyelesaikan Tugas Akhir dengan judul “APLIKASI PENJADWALAN LABORATORIUM D3 TEKNIK INFORMATIKA UNIVERITAS SUMATERA UTARA”. Tujuan Penyusunan Tugas Akhir ini adalah untuk memenuhi syarat kelulusan bagi setiap mahasiwa program studi D-III Teknik Informatika di Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara
Dalam menyelesaikan Tugas Akhir ini, penulis banyak mendapatkan bimbingan dan bantuan dari berbagai pihak baik berupa material maupun spiritual. Pada kesempatan ini penulis mengucapkan terima kasih yang sebesar – besarnya kepada :
1. Bapak Drs Suyanto M. Kom selaku dosen pembimbing Tugas Akhir yang sudah mengarahkan penulis dalam mengerjakan Tugas akhir ini.
2. Bapak Dr. Sutarman, M.Sc. selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alama Universitas Sumatera Utara.
3. Pembantu Dekan Dekan Fakultas Matematika dan Ilmu Pengetahuan Alama Universitas Sumatera Utara.
4. Bapak Prof. Dr. Tulus, VordipL. Math., M.Si Ph. D selaku ketua departemen Matematika.
5. Semua dosen Departemen Matematika FMIPA beserta para staf Pegawai. 6. Sahabat-sahabat seperjuangan penulis mahasiswa D-III TI angkatan 2010.
7. Terkhusus kepada kedua orangtua dan keluarga penulis yang telah memberi dukungan moril dan materi hingga akhirnya penulis dapat menyelesaikan tugas akhir ini tepat pada waktunya.
Penulis menyadari Tugas Akhir ini masih jauh dari sempurna, oleh sebab itu penulis mengharapkan saran dan kritik yang membangun dari semua pihak sebagai bahan evaluasi bagi penulis. Akhir kata Penulis berharap, semoga Tugas Akhir ini memberi manfaat bagi penulis dan juga kepada pembaca.
(2)
vi
ABSTRAK
Teknologi informasi saat ini telah berkembang dengan pesat dan mempunyai pengaruh yang besar terhadap sistem yang ada dalam suatu instansi ataupun perusahaan. Laboratorium D3 Teknik Informatika Universitas Sumatera Utara merupakan salah satu instansi pendidikan yang memiliki permasalahan – permasalahan dalam bidang sistem penjadwalan mata kuliah yang dilaksanakan dilabaratorium. Permasalahan yang dihadapi yaitu masih sulitnya mengelola dan menjadwalkan mata kuliah yang diadakan di laboratorium, masih belum digunakannya komputer keseluruhan dalam mengelola jadwal laboratorium tersebut.
Dari hasil penelitian yang telah dilakukan, maka penulis bermaksud untuk membantu memecahkan masalah yang dihadapi oleh Laboratorium D3 Teknik Informatika Universitas Sumatera Utara, yaitu dengan merancang suatu sistem aplikasi penjadwalan laboratorium. Aplikasi ini menggunakan bahasa pemrograman Visual Basic 6.0 dengan database MySQL server.
Dengan diterapkannya perancangan sistem aplikasi penjadwalan laboratorium yang bersifat client server dengan menggunakan bahasa pemrograman VB 6.0, diharapkan akan mempermudah dalam pengelolan jadwal mata kuliah di laboratorium. Sehingga Laboratorium D3 Teknik Informatika Universitas Sumatera Utara dapat mencapai tujuan yang telah ditetapkan.
(3)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
Daftar Isi vi
Daftar Tabel ix
Daftar Gambar x
BAB 1 PENDAHULUAN
1.1 Latar Belakang 1
1.2 Perumusan Masalah 2
1.3 Batasan Masalah 3
1.4 Metode Pengerjaan 3
1.5 Tujuan Penelitian 4
1.6 Manfaat 4
1.7 Tahapan Perancangan Sistem 4
1.8 Sistematika Penulisan 5
BAB 2 DASAR TEORI
2.1 Pengertian Aplikasi 7
2.2 Pengertian Penjadwalan 7
2.3 Pengertian Data dan Informasi 8
2.3.1 Data 8
2.3.2 Informasi 11
2.4 Pengertian Database 11
2.5 Pengertian Database Management System (DBMS) 12
2.6 Visual Basic 13
2.7 Struktur Bahasa Pemrograman Visual Basic 14 2.8 Kemampuan dan Manfaat Visual Basic 21
2.9 Flowchart 21
2.10 Processing Symbol 22
2.11 Input Output Symbol 23
2.12 MySQL 24
BAB 3 GAMBARAN UMUM
(4)
viii
3.4.2 Tata Tertib Praktek Laboratorium 38
BAB 4 ANALISIS DAN PERANCANGAN SISTEM
4.1 Analisis Sistem 40
4.2 Perancangan Sistem 41
4.2.1 Perancangan Output 41
4.2.2 Perancangan Input 42
4.2.3 Perancangan Dialog 44
4.2.4 Perancangan Database 46
4.2.4.1 DFD Level Konteks 46 4.2.4.2 Entity Relationship Diagram 47
4.2.5 Perancangan Program 49
4.2.5.1 Flowchart 49
4.2.5.2 Pseudocode 56
BAB 5 IMPLEMENTASI SISTEM
5.1 Pengertian Implementasi Sistem 59
5.2 Tujuan Implementasi Sistem 59 5.3 Komponen Utama Kebutuhan Sistem 60
5.3.1 Hardware 60
5.3.2 Software 61
5.3.3 Brainware 62
5.4 Database PHPMyAdmin 62 5.5 Pengujian di Microsoft Visual Basic 6.0 63 5.5.1 Form Menu Utama 63 5.5.2 Form Pengaturan Waktu 64 5.5.3 Form Pengaturan Kelas 64 5.5.4 Form Mata Kuliah 65 5.5.5 Form Penjadwalan 66 5.5.6 Form Cetak Jadwal 66 5.5.7 Data Report 67
BAB 6 KESIMPULAN DAN SARAN
5.1 Kesimpulan 68
5.2 Saran 69
Daftar Pustaka Lampiran: Listing Program
(5)
DAFTAR TABEL
Tabel 2.1 Flowchart 21
Tabel 2.2 Processing Symbols 22
Tabel 2.3 Input Ouput System 23
Tabel 4.1 Tabel Waktu 48
Tabel 4.2 Tabel Mata Kuliah 48
Tabel 4.3 Tabel Kelas 48
(6)
x
DAFTAR GAMBAR
Gambar 2.1 Siklus Pengolah Data 9
Gambar 2.2 Siklus Pengolah Data 9
Gambar 2.3 Layar Utama Visual 16
Gambar 2.4 Form Visual Basic 16
Gambar 2.5 Toolbolx 17
Gambar 2.6 Windows Property 18
Gambar 2.7 Toolbar 17
Gambar 2.8 Project Windows 19
Gambar 2.9 Form Layout Windows 20
Gambar 2.10 Jendela Kode Program 20
Gambar 4.1 Form Input Data Kelas 43
Gambar 4.2 Form Input Data Mata Kuliah 43
Gambar 4.3 Form Input Data Waktu 44
Gambar 4.4 Tampilan Menu Utama 45
Gambar 4.5 Tampilan Menu Dialog Penjadwalan 45
Gambar 4.6 DFD Level Konteks 46
Gambar 5.1 PHPMyAdmin 62
Gambar 5.2 Form Menu Utama 63
Gambar 5.3 Form Pengaturan Waktu 64
Gambar 5.4 Form Pengaturan Kelas 65
Gambar 5.5 Form Mata Kuliah 65
Gambar 5.6 Form Penjadwalan 66
Gambar 5.7 Form Cetak Jadwal 67