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
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
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
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
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
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
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
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 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
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
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
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 = 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
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
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 & "', '" &
'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
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
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.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 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
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
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
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
.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)
.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 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
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)
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
'*** 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
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 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 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
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
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
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
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
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
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
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)
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
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(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
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
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.
Kroenke, David M, 2003. Database Processing. Erlangga.
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,
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
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
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
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.
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
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
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
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
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
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
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.
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
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
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
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
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 TI
UNIVERSITAS SUMATERA UTARA Logo
Mata Kuliah : nama_mata_kuliah
Kelas
Nama kelas
-
Waktu
Waktu mata kuliah 1
-
Ruangan
51
[image:63.595.212.421.118.369.2]Rancangan.
Gambar 4.1 Form Input Data Kelas
[image:63.595.113.518.441.694.2]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.
53
Gambar 4.4 Tampilan Menu Utama
[image:65.595.112.525.345.599.2]54
4.2.4 Perancangan Database
4.2.4.1 DFD Level Konteks
[image:66.595.124.561.241.626.2]DFD atau Data Flow Diagram dari sistem penjadwalan ini dapat dilihat sebagai berikut :
Gambar 4.6 DFD Level Konteks
Waktu Mata Kuliah
Penjadwalan Lab
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
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 - -
[image:68.595.121.522.143.697.2]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
[image:68.595.123.521.167.271.2]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
57
Nama Field Tipe Data Panjang Keterangan
Id Integer 11 -
nama Varchar 50 Nama ruang
[image:69.595.135.523.86.175.2]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 :
58
2. Flowchart Pengaturan Waktu Mulai
Tampilan 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
59
Gambar
Dokumen terkait
Oleh karena itu, penulis mencoba merancang sebuah Sistem Informasi Perekrutan Dan Pendistribusian Asisen Laboratorium D3 Teknik Informatika FMIPA USU untuk
Tugas Akhir ini merupakan salah satu syarat yang harus dipenuhi untuk menyelesaikan pendidikan Diploma 3 pada Program Studi D3 Teknik Informatika Fakultas Matematika dan
Dalam pembuatan Aplikasi Penginputan Nilai Mahasiswa D3 Teknik Informatika USU Berbasis Android, penulis hanya menggunakan komputer (laptop), telepon mobile atau
Adapun manfaat dari informasi penjadwalan dan rincian nilai pratikum laboratorium berbasis website ini adalah dapat membantu atau memudahkan praktikan, pengajar
Penelitian ini mengkaji tentang suatu sistem informasi yang berdasarkan penjadwalan dan rincian nilai yang ada pada laboratorium D3 Teknik Infomatika, dengan menggunakan
Judul Tugas Akhir : Sistem Pengontrolan Penggunaan Aplikasi Menggunakan Metode Penjadwalan Non-Preemptive Pada Laboratorium Komputer Teknik Informatika UPN “Veteran”
Tugas Akhir ini merupakan salah satu syarat yang harus dipenuhi untuk menyelesaikan pendidikan Diploma 3 pada Program Studi D3 Teknik Informatika Fakultas Matematika dan
Berdasarkan permasalahan tersebut, penulis memiliki ide untuk membuat “perancangan sistem informasi laboratorium teknik informatika universitas narotama” yang bertujuan untuk melakukan