APLIKASI UJIAN DIGITAL
Ujian digital ini biasa digunakan di perusahaan, sekolah atau kampus ketika akan menerima karyawan atau siswa (mahasiswa) baru. Ujian digital ini memberikan kemudahan dalam pengolahan data dibandingkan dengan ujian menggunakan bentuk soal berupa kertas.
4.1 Membuat Project Baru
Tahapan pertama dalam pembuatan aplikasi ujian digital ini adalah membuat project baru dengan langkah sebagai berikut:
1. Buka visual studio 2008
2. Klik create project
3. Tulis nama project “Aplikasi Ujian Digital”
4. OK
Setelah membuat project baru dan menyimpannya di posisi tertentu, maka akan terbentuk folder project secara otomatis yang di dalamnya terdapat folder ... >> BIN>> DEBUG. Folder inilah yang akan dijadikan tempat menyimpan database.
4.2 Membuat Database Dan Tabel
Lakukan langkah-langkah di bawah ini untuk membuat database dan tabel.
1. Buka database access 2003
2. Buatlah sebuah database yang baru kemudian tulis nama database “DTUjian.mdb” dan simpan di posisi DEBUG project anda
3. Kemudian buatlah tabel user dengan cara klik menu Create >> Table >> Klik kanan table1 >> Design View dan tulis nama tabel
4. Selanjutnya buatlah beberapa tabel dengan struktur berikut ini :
Gambar 4.1 Tabel User
Tipe data dalam tabel user semuanya menggunakan text karena tidak ada data yang akan dihitung dalam kalkulasi matematika.
Gambar 4.2 Tabel siswa
Tipe data dalam tabel siswa semuanya menggunakan text karena tidak ada data yang akan dihitung dalam kalkulasi matematika.
Gambar 4.3 Tabel mata kuliah
Tipe data SKS dalam tabel mata kuliah menggunakan number, karena akan dihitung bobotnya setelah ada komponen nilai yang dientri. Selain itu semuanya menggunakan text.
Gambar 4.4 Tabel soal
Field Nomor menggunakan tipe data number, hal ini digunakan untuk memudahkan pengurutan data.
Gambar 4.5 Tabel master jawaban
Secara umum tipe data tanggal dan waktu menggunakan date-time, tipe data yang akan digunakan dalam perhitungan menggunakan number, selain itu menggunakan tipe text.
Gambar 4.6 Tabel detail jawaban
4.3 Bentuk Relasi Tabel
Bentuk relasi tabel dapat dilihat pada ilustrasi di bawah ini. Gambar ini diambil dari hasil relasi pada crystal report.
Gambar 4.7 Relasi tabel
4.4 Membuat Module Koneksi Database
Tujuan utama membuat module ini adalah agar koneksi ke database cukup dibuat satu kali dan dapat digunakan berkali-kali pada semua form dalam project yang bersangkutan dengan hanya menuliskan nama fungsinya.
Gambar 4.8 Membuat module
Coding dalam module koneksi :
Imports System.Data.OleDb
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Module Module1
Public Conn As OleDbConnection
Public DA As OleDbDataAdapter
Public DS As DataSet
Public CMD As OleDbCommand
Public DR As OleDbDataReader
Public cryRpt As New ReportDocument
Public crtableLogoninfos As New TableLogOnInfos
Public crtableLogoninfo As New TableLogOnInfo
Public crConnectionInfo As New ConnectionInfo
Public CrTables As Tables
Public Sub seting_laporan()
With crConnectionInfo
.ServerName = (Application.StartupPath.ToString & "\DTUjian.mdb")
.DatabaseName = (Application.StartupPath.ToString & "\DTUjian.mdb")
.UserID = ""
.Password = ""
End With
CrTables = cryRpt.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
End Sub
Public Sub Koneksi()
Try
Conn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=DTUjian.mdb")
Conn.Open()
Catch ex As Exception
MsgBox(ex.Message)
End
End Try
End Sub
End Module
jika penulisan coding anda mengalami error, maka anda harus tambahkan references dengan cara sebagai berkut :
1. Klik menu project >> Pilih add reference
2. Pilih crystalldecisions.crystalreport.engine >> ok
3. Lakukan hal yang sama untuk crystalldecisions.share >> ok
Gambar 4.9 Menambah reference
4.5 Form Login
Form login digunakan sebagai sarana keamanan data dalam aplikasi agar tidak sembarang orang dapat menggunakan aplikasi tersebut.
Gambar 4.10 Form login
Logika program :
1. Setelah mengisi nama user lalu menekan enter maka kursor pindah ke password
2. Setelah mengisi password lalu menekan enter maka kursor pindah ke button Login
3. Pada saat Login di klik maka cari nama_user dan pass_user di tabel user
4. Jika data tidak ditemukan maka munculkan pesan “password salah”
5. Jika data ditemukan, maka form login disembunyikan dan menu untuk admin ditampilkan
6. Pada Menu utama panel1 tampilkan kode user, di panel2 tampilkan nama user, di panel3 tampilkan status user
Catatan :
Sebelumnya menu utama harus dibuat terlebih dahulu dengan menambahkan MenuStrip dan StatusStrip. Pembahasan tentang hal dapat dilihat dalam video tutorial.
Coding
Imports System.Data.OleDb
Public Class Login
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(13) Then
TextBox2.Focus()
End If
End Sub
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
If e.KeyChar = Chr(13) Then
Button1.Focus()
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click
Try
Call Koneksi()
CMD = New OleDbCommand("select * from tbluser where nama_user='" & TextBox1.Text & "' and PASS_user='" & TextBox2.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
MsgBox("Login gagal")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
Else
Me.Visible = False
MenuUtama.Panel1.Text = DR.Item("kode_user")
MenuUtama.Panel2.Text = DR.Item("nama_user")
MenuUtama.Panel3.Text = DR.Item("status_user")
MenuUtama.GroupBox1.Visible = True
MenuUtama.GroupBox2.Visible = False
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
Me.Close()
End Sub
End Class
4.6 Form Menu Utama Admin
Menu utama digunakan sebagai sarana integrasi untuk dapat memanggil semua form dalam project yang bersangkutan.
Gambar 4.11 Form menu utama
4.7 Form User
Logika dan proses program dalam form User adalah sebagai berikut :
1. Ketik kode user dengan pola USR01, jika kode ditemukan maka tampilkan nama, password dan statusnya di masing-masing texbox
2. Jika datanya tidak ditemukan maka entrilah data yang baru
3. Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel user
4. Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru (proses Insert)
5. Jika kode tersebut ada maka data tersebut akan diedit (proses update)
6. Proses edit dan hapus cukup dengan memilih data user dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan.
Gambar 4.12 Form user
Dalam pembuatan sebuah form, sebaiknya menggunakan GroupBox agar mengatur posisi objek-objek di dalamnyalebih mudah.
4.8 Form siswa
Logika dan proses program dalam form siswa adalah sebagai berikut :
1. Pilih jurusan dalam combobox1
2. NIM dan kelas akan muncul secara otomatis berdasarkan jurusannya
3. Langkan selanjutnya mengisi nama siswa dan menyimpan data baru tersebut
4. Proses edit dan hapus cukup dengan memilih data siswa dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan.
Gambar 4.13 Form siswa
Coding :
Imports System.Data.OleDb
Public Class DataSiswa
Sub Tampilgrid()
Call Koneksi()
DA = New OleDbDataAdapter("select * from TBLSiswa", Conn)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.ReadOnly = True
End Sub
Private Sub DataSiswa_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("MANAJEMEN INFORMATIKA")
ComboBox1.Items.Add("MANAJEMEN ADMINISTRASI")
ComboBox1.Items.Add("AKUNTANSI")
ComboBox1.Items.Add("SEKRETARI")
Call Tampilgrid()
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox5.Enabled = False
End Sub
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
If e.KeyChar = Chr(13) Then
Call CariJumlahSiswa()
Call Carikelas()
TextBox3.Focus()
End If
End Sub
Sub CariJumlahSiswa()
Call Koneksi()
CMD = New OleDbCommand("select count(*) from tblsiswa where jurusan='" & ComboBox1.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
TextBox5.Text = 1
Else
TextBox5.Text = DR.Item(0) + 1
End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Call CariJumlahSiswa()
Call Carikelas()
TextBox3.Focus()
End Sub
Sub Carikelas()
If ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) <= 3 Then
TextBox1.Text = "MI" & Format(Today, "yy") & "A"
ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then
TextBox1.Text = "MI" & Format(Today, "yy") & "B"
ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then
TextBox1.Text = "MI" & Format(Today, "yy") & "C"
ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 9 Then
TextBox1.Text = "MI" & Format(Today, "yy") & "Z"
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) <= 3 Then
TextBox1.Text = "MA" & Format(Today, "yy") & "A"
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then
TextBox1.Text = "MA" & Format(Today, "yy") & "B"
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then
TextBox1.Text = "MA" & Format(Today, "yy") & "C"
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 9 Then
TextBox1.Text = "MA" & Format(Today, "yy") & "Z"
ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) <= 3 Then
TextBox1.Text = "AK" & Format(Today, "yy") & "A"
ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 3 AndVal(TextBox5.Text) <= 6 Then
TextBox1.Text = "AK" & Format(Today, "yy") & "B"
ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 6 AndVal(TextBox5.Text) <= 9 Then
TextBox1.Text = "AK" & Format(Today, "yy") & "C"
ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 9 Then
TextBox1.Text = "AK" & Format(Today, "yy") & "Z"
ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) <= 3 Then
TextBox1.Text = "SK" & Format(Today, "yy") & "A"
ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 3 AndVal(TextBox5.Text) <= 6 Then
TextBox1.Text = "SK" & Format(Today, "yy") & "B"
ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 6 AndVal(TextBox5.Text) <= 9 Then
TextBox1.Text = "SK" & Format(Today, "yy") & "C"
ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 9 Then
TextBox1.Text = "SK" & Format(Today, "yy") & "Z"
End If
Call CariNIM()
End Sub
Sub CariNIM()
Call Koneksi()
CMD = New OleDbCommand("select nim from tblsiswa where jurusan='" & ComboBox1.Text & "' order by nim desc", Conn)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
If ComboBox1.Text = "MANAJEMEN INFORMATIKA" Then
TextBox2.Text = Format(Today, "yy") + "01" + "001"
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" Then
TextBox2.Text = Format(Today, "yy") + "02" + "001"
ElseIf ComboBox1.Text = "AKUNTANSI" Then
TextBox2.Text = Format(Today, "yy") + "03" + "001"
ElseIf ComboBox1.Text = "SEKRETARI" Then
TextBox2.Text = Format(Today, "yy") + "04" + "001"
End If
Else
Dim Hitung As String = Microsoft.VisualBasic.Right(DR.Item("NIM"), 3) + 1
If ComboBox1.Text = "MANAJEMEN INFORMATIKA" Then
TextBox2.Text = Format(Today, "yy") + "01" + Microsoft.VisualBasic.Right("000" & Hitung, 3)
ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" Then
TextBox2.Text = Format(Today, "yy") + "02" + Microsoft.VisualBasic.Right("000" & Hitung, 3)
ElseIf ComboBox1.Text = "AKUNTANSI" Then
TextBox2.Text = Format(Today, "yy") + "03" + Microsoft.VisualBasic.Right("000" & Hitung, 3)
ElseIf ComboBox1.Text = "SEKRETARI" Then
TextBox2.Text = Format(Today, "yy") + "04" + Microsoft.VisualBasic.Right("000" & Hitung, 3)
End If
End If
End Sub
Sub Kosongkan()
ComboBox1.Text = ""
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox5.Clear()
TextBox4.Clear()
ComboBox1.Enabled = True
TextBox3.Enabled = True
ComboBox1.Focus()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click
If ComboBox1.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" OrTextBox3.Text = "" Then
MsgBox("data belum lengkap")
Exit Sub
Else
Call Koneksi()
CMD = New OleDbCommand("select * from TBLSiswa where NIM='" & TextBox2.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
Call Koneksi()
Dim simpan As String = "insert into TBLSiswa values('" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox1.Text & "','" & UCase(ComboBox1.Text) & "','" & TextBox2.Text & "')"
CMD = New OleDbCommand(simpan, Conn)
CMD.ExecuteNonQuery()
Else
Call Koneksi()
Dim edit As String = "update TBLSiswa set Nama='" & TextBox3.Text & "',jurusan='" & UCase(ComboBox1.Text) & "',kelas='" & TextBox1.Text & "' where NIM='" & TextBox2.Text & "'"
CMD = New OleDbCommand(edit, Conn)
CMD.ExecuteNonQuery()
End If
Call Kosongkan()
Call Tampilgrid()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
Call Kosongkan()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button4.Click
Me.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
If TextBox2.Text = "" Then
MsgBox("NIM harus diisi dulu")
TextBox2.Focus()
Exit Sub
Else
If MessageBox.Show("hapus data ini...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Call Koneksi()
Dim hapus As String = "delete from TBLSiswa where NIM='" & TextBox2.Text & "'"
CMD = New OleDbCommand(hapus, Conn)
CMD.ExecuteNonQuery()
Call Kosongkan()
Call Tampilgrid()
Else
Call Kosongkan()
End If
End If
End Sub
Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick
On Error Resume Next
ComboBox1.Enabled = False
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Text = DGV.Rows(e.RowIndex).Cells(1).Value
TextBox1.Text = DGV.Rows(e.RowIndex).Cells(2).Value
TextBox2.Text = DGV.Rows(e.RowIndex).Cells(0).Value
ComboBox1.Text = DGV.Rows(e.RowIndex).Cells(3).Value
End Sub
Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
If e.KeyChar = Chr(13) Then
Button1.Focus()
End If
End Sub
Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles TextBox4.TextChanged
Call Koneksi()
CMD = New OleDbCommand("select * from TBLSiswa where Nama like '%" & TextBox4.Text & "%'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Call Koneksi()
DA = New OleDbDataAdapter("select * from TBLSiswa where Nama like '%"& TextBox4.Text & "%'", Conn)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
Else
MsgBox("Nama user tidak ditemukan")
End If
End Sub
End Class
4.9 Form Mata Kuliah
Proses program dalam pengolahan data mata kuliah sama dengan data siswa.
Gambar 4.14 Form mata kuliah
4.10 Form Soal Ujian
4.10.1 Soal Ujian Model Pertama
Bentuk form soal ujian terdiri dari dua model, yang pertama adalah dengan mengetik soal ujian satu persatu sesuai mata kuliahnya. Bentuk form model pertama adalah sebagai berikut :
Gambar 4.15 Form soal ujian model pertama
Coding :
Imports System.Data.OleDb
Public Class SoalUjian
Sub TampilKuliah()
CMD = New oledbCommand("select * from TBLKuliah order by 1", CONN)
DR = CMD.ExecuteReader
ComboBox1.Items.Clear()
Do While DR.Read
ComboBox1.Items.Add(DR.Item("IDKuliah") & Space(2) & DR.Item("MataKuliah"))
Loop
End Sub
Sub JumlahSoal()
For jumlah As Integer = 5 To 50 Step 5
ComboBox2.Items.Add(jumlah)
Next
End Sub
Private Sub SoalUjian_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
Call Koneksi()
Call TampilKuliah()
Call JumlahSoal()
End Sub
Sub AturKolomBaru()
DGV.Columns.Add("Pertanyaan", "Pertanyaan")
DGV.Columns(1).Width = 550
DGV.Columns.Add("A", "Jawaban A") : DGV.Columns(2).Width = 75
DGV.Columns.Add("B", "Jawaban B") : DGV.Columns(3).Width = 75
DGV.Columns.Add("C", "Jawaban C") : DGV.Columns(4).Width = 75
DGV.Columns.Add("D", "Jawaban D") : DGV.Columns(5).Width = 75
DGV.Columns.Add("Jawaban", "Kunci Jawaban") : DGV.Columns(6).Width = 75
DGV.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
DGV.Columns.Clear()
DGV.DataSource = Nothing
DGV.Refresh()
DGV.Columns.Add("Nomor", "Nomor")
DGV.Columns(0).ReadOnly = True
DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(0).Width = 50
For baris As Integer = 0 To Val(ComboBox2.Text) - 1
DGV.RowCount = DGV.RowCount + 1
DGV.Rows(baris).Cells(0).Value = DGV.RowCount - 1
Next
Call AturKolomBaru()
End Sub
Sub AturKolomKetemu()
DGV.Columns(0).Width = 50
'DGV.Columns(0).ReadOnly = True
DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(1).Width = 550
DGV.Columns(2).Width = 75
DGV.Columns(3).Width = 75
DGV.Columns(4).Width = 75
DGV.Columns(5).Width = 75
DGV.Columns(6).Width = 75
DGV.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
For baris As Integer = 0 To DGV.RowCount - 2
DGV.Rows(baris).Cells(0).ReadOnly = True
Next
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Call Koneksi()
CMD = New oledbCommand("select Nomor,Pertanyaan,A,B,C,D,Jawaban from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "'", CONN)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Call Koneksi()
DA = New oledbDataAdapter("select Nomor,Pertanyaan,A,B,C,D,Jawaban from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "' order by 1 ", CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
Call AturKolomKetemu()
ComboBox2.Enabled = False
Else
DGV.Columns.Clear()
ComboBox2.Enabled = True
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
ComboBox1.Text = ""
ComboBox2.Text = ""
DGV.Columns.Clear()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
Me.Close()
End Sub
Private Sub Label4_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Label4.Click
End Sub
End Class
4.10.2 Soal Ujian Model Kedua
Bentuk form soal ujian model kedua adalah dengan cara import data dari excel. Cara ini dianggap lebih mudah dan lebih efektif dibandingkan dengan cara pertama.
Gambar 4.16 Form soal ujian model pertama
Coding :
Imports System.Data.OleDb
Public Class ImportSoalUjian
'membuat definisi variabel untuk koneksi yang baru ke data excel
Dim connexcel As OleDbConnection
Dim daexcel As OleDbDataAdapter
Dim dsexcel As DataSet
Dim cmdexcel As OleDbCommand
Dim drexcel As OleDbDataReader
Sub excelkoneksi()
'string koneksi ke data excel
connexcel = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Label1.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=YES"";")
connexcel.Open()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click
OpenFileDialog1.Filter = "(*.xls)|*.xls|(*.xlsx)|*.xlsx|All files (*.*)|*.*"
OpenFileDialog1.ShowDialog()
Label1.Text = OpenFileDialog1.FileName
Call excelkoneksi()
Dim dtSheets As DataTable = connexcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim listSheet As New List(Of String)
Dim drSheet As DataRow
'menambahan nama-nama sheet excel agar dianggap sebagai tabel
For Each drSheet In dtSheets.Rows
listSheet.Add(drSheet("TABLE_NAME"))
Next
'menampilkan nama-nama worksheet dalam file excel
For Each sheet As String In listSheet
ListBox1.Items.Add(sheet)
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
Label1.Text = ""
ListBox1.Items.Clear()
DGV.Columns.Clear()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button4.Click
Me.Close()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Call excelkoneksi()
'menampilkan isi worksheet excel yang dipilih dalam listbox1 ke dalam grid
daexcel = New OleDbDataAdapter("select * from [" & ListBox1.Text & "]", connexcel)
dsexcel = New DataSet
daexcel.Fill(dsexcel)
DGV.DataSource = dsexcel.Tables(0)
DGV.ReadOnly = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
If ListBox1.Text = "" Then
MsgBox("pilih soal ujian dalam listbox")
Exit Sub
End If
For baris As Integer = 0 To DGV.RowCount - 2
Call Koneksi()
CMD = New OleDbCommand("select idkuliah from Tblsoal where idkuliah='"& DGV.Rows(baris).Cells(0).Value & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
'data yang sudah ada dihapus terlebih dahulu
Dim hapus As String = "delete * from Tblsoal where idkuliah='" & DGV.Rows(baris).Cells(0).Value & "'"
CMD = New OleDbCommand(hapus, Conn)
CMD.ExecuteNonQuery()
End If
Next
DGV.Columns.Clear()
End Sub
End Class
4.11 Form Ujian Digital
Logika dan proses program dalam ujian digital adalah sebagai berikut :
1. Peserta melakukan login terlebih dahulu ke dalam sistem
2. Peserta memilih soal ujian (mata kuliah)
3. Memilih nomor soal dalam list sebelah kiri
4. Membaca soal ujian dan memberikan jawaban pada radio button yang telah disediakan
5. Klik button jawab, maka hasil jawaban akan muncul di dalam grid sebelah kanan
6. Butir soal ujian yang sudah dijawab tidak dapat diulang kembali
7. Setelah selesai mengerjakan soal ujian peserta memilih button “selesai” maka akan muncul hasil akumulasi jawaban
Gambar 4.17 Form transaksi ujian digital
Tidak boleh menjawa dua kali pada nomor soal yang sama
Petunjuk mengerjakan soal ujian digital
Hasil ujian
Coding :
Imports System.Data.OleDb
Public Class Ujian
Private Sub Ujian_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
Label11.Text = Format(Today, "MM/dd/yyyy")
Call Koneksi()
'tampilkan mata kuliah yang cocok dengan hasil login yang tercantum di panel1 menu utama (sesuai jurusan)
CMD = New oledbCommand("select * from tblkuliah WHERE LEFT(IDKULIAH,1)='"& Trim(Microsoft.VisualBasic.Mid(MenuUtama.Panel1.Text, 4, 1)) & "'", CONN)
DR = CMD.ExecuteReader
ComboBox1.Items.Clear()
Do While DR.Read
ComboBox1.Items.Add(DR.Item("Idkuliah") & Space(5) & DR.Item("matakuliah"))
Loop
Label14.Text = 0
Label15.Text = 0
Label16.Text = 0
Label17.Text = 0
Label18.Text = 0
Label19.Text = "-"
DGV.ReadOnly = True
DGV.Rows.Clear()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'cari data NIM yang pernah melakukan ujian di mata kuliah yang dipilih di combobox1
CMD = New OleDbCommand("select * from tblmasterjawaban where nim='" & Label23.Text & "' and idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
'jika sudah ada maka tampilkan pesan
MsgBox("Anda sudah mengikuti test mata kuliah ini " & Chr(13) & _
"Tanggal :" & Format(DR.Item("tanggal"), "dd-MMM-yyyy") & " " & Chr(13) & _
"Mulai :" & Format(DR.Item("Mulai"), "hh:mm:ss") & " " & vbCrLf & _
"Selesai :" & Format(DR.Item("selesai"), "hh:mm:ss") & " " & vbCrLf & _
"Jml Soal :" & DR.Item("jmlsoal") & " " & vbCrLf & _
"Dijawab :" & DR.Item("dijawab") & " " & vbCrLf & _
"Jml Benar :" & DR.Item("benar") & " " & vbCrLf & _
"Jml Salah :" & DR.Item("salah") & " " & vbCrLf & _
"Keterangan :" & DR.Item("keterangan") & " ")
Exit Sub
End If
'jika belum ada maka tampilkan nomor soal ujiannya
CMD = New OleDbCommand("select nomor from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' order by 1", Conn)
DR = CMD.ExecuteReader
ListBox1.Items.Clear()
Do While DR.Read
ListBox1.Items.Add(DR.Item("Nomor"))
Loop
ListBox1.Focus()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Call BersihkanJawaban()
'tampilkan pertanyaan soal ujian dalam textbox1 sesuai dengan nomor soal yang dipilih
CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & Val(ListBox1.Text) & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
TextBox1.Text = DR.Item("pertanyaan")
RadioButton1.Text = DR.Item("A")
RadioButton2.Text = DR.Item("B")
RadioButton3.Text = DR.Item("C")
RadioButton4.Text = DR.Item("D")
End If
End Sub
Sub BersihkanJawaban()
RadioButton1.Checked = False
RadioButton2.Checked = False
RadioButton3.Checked = False
RadioButton4.Checked = False
End Sub
Private Sub RadioButton1_Click(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles RadioButton1.Click
'jika jawaban A dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah
CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Label20.Text = "A"
Label21.Text = DR.Item("Jawaban")
If Label20.Text = Label21.Text Then Label22.Text = "BENAR" ElseLabel22.Text = "SALAH"
End If
End Sub
Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles RadioButton2.Click
'jika jawaban B dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah
CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Label20.Text = "B"
Label21.Text = DR.Item("Jawaban")
If Label20.Text = Label21.Text Then Label22.Text = "BENAR" ElseLabel22.Text = "SALAH"
End If
End Sub
Private Sub RadioButton3_Click(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles RadioButton3.Click
'jika jawaban C dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah
CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Label20.Text = "C"
Label21.Text = DR.Item("Jawaban")
If Label20.Text = Label21.Text Then Label22.Text = "BENAR" ElseLabel22.Text = "SALAH"
End If
End Sub
Private Sub RadioButton4_Click(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles RadioButton4.Click
'jika jawaban D dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah
CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Label20.Text = "D"
Label21.Text = DR.Item("Jawaban")
If Label20.Text = Label21.Text Then Label22.Text = "BENAR" ElseLabel22.Text = "SALAH"
End If
End Sub
Private Sub BTNJawab_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BTNJawab.Click
'jika mata kuliah belum dipilih
If ComboBox1.Text = "" Then
MsgBox("Anda belum memilih mata kuliah")
Exit Sub
End If
'jika belum memeilih nomor soal
If ListBox1.Text = "" Or TextBox1.Text = "" Then
MsgBox("Anda belum memilih nomor soal")
Exit Sub
End If
'jika belum memilih jawaban
If RadioButton1.Checked = False And RadioButton2.Checked = False AndRadioButton3.Checked = False And RadioButton4.Checked = False Then
MsgBox("Anda belum memilih jawaban")
Exit Sub
End If
'jika nomor soal tersebut sudah dijawab
For BARIS As Integer = 0 To DGV.RowCount - 1
If ListBox1.Text = DGV.Rows(BARIS).Cells(0).Value Then
MsgBox("Nomor ini sudah dijawab")
Exit Sub
End If
Next
'jawaban akan tampil di dalam grid sebelah kanan
DGV.Rows.Add(ListBox1.Text, Label20.Text, Label21.Text, Label22.Text)
ListBox1.Focus()
ListBox1.SelectedItem = ListBox1.SelectedItem + 1
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Timer1.Tick
Label12.Text = TimeOfDay
Timer1.Enabled = False
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Timer2.Tick
Label13.Text = TimeOfDay
End Sub
'membuat fungsi untuk menghitung jumlah jawaban yang benar
Sub JumlahBenar()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 2
If DGV.Rows(baris).Cells(3).Value = "BENAR" Then
hitung = hitung + 1
Label17.Text = hitung
End If
Next
End Sub
'membuat fungsi untuk menghitung jumlah jawaban yang benar
Sub JumlahSalah()
Dim hitung As Integer = 0
For baris As Integer = 0 To DGV.RowCount - 2
If DGV.Rows(baris).Cells(3).Value = "SALAH" Then
hitung = hitung + 1
Label18.Text = hitung
End If
Next
End Sub
Private Sub BTNSelesai_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BTNSelesai.Click
Try
'ketika BTNselesai di klik maka....
Timer2.Enabled = False
Dim awal As Date = TimeValue(Label12.Text)
Dim hasil As TimeSpan = Now - awal
'hitung durasi pengerjaan soal ujian
Label14.Text = (String.Format("{0}:{1}:{2}", hasil.Hours, hasil.Minutes, hasil.Seconds))
'hitung banyaknya nomor soal ujian
Label15.Text = ListBox1.Items.Count
Label16.Text = DGV.RowCount - 1
Call JumlahBenar()
Call JumlahSalah()
'jika jumlah benar > jumlah salah maka "LULUS"
If Val(Label17.Text) > Val(Label18.Text) Then
Label19.Text = "LULUS"
Else
Label19.Text = "GAGAL"
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BTNTutup.Click
ComboBox1.Text = ""
ListBox1.Items.Clear()
TextBox1.Clear()
DGV.Rows.Clear()
Me.Close()
End Sub
Private Sub BTNPetunjuk_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BTNPetunjuk.Click
MsgBox("1. Pilih Materi di combo paling atas" & Chr(13) & _
"2. Pilih Nomor Soal dalam list di sebelah kiri" & Chr(13) & _
"3. Pilih Jawaban pada option button" & vbCrLf & _
"4. Klik Jawab" & vbCrLf & _
"5. Lanjutkan ke soal nomor Berikutnya")
End Sub
Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles BTNBatal.Click
ComboBox1.Text = ""
ListBox1.Items.Clear()
TextBox1.Clear()
DGV.Rows.Clear()
Call BersihkanJawaban()
End Sub
End Class
4.12 Laporan Master
Tahapan pembuatan laporan telah dibahas pada bab sebelumnya, untuk itu silakan dipelajari kembali.
4.12.1 Laporan Data Siswa
Sebelum membuat laporan master, buatlah sebuah form dengan bentuk seperti gambar di bawah ini.
Gambar 4.18 Laporan data siswa
Imports System.Data.OleDb
Public Class LaporanMaster
Private Sub LaporanMaster_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
Call Koneksi()
CMD = New OleDbCommand("select distinct kelas from tblsiswa", Conn)
DR = CMD.ExecuteReader
ComboBox1.Items.Clear()
Do While DR.Read
ComboBox1.Items.Add(DR.Item("kelas"))
Loop
CMD = New OleDbCommand("select nama from tblsiswa", Conn)
DR = CMD.ExecuteReader
ComboBox2.Items.Clear()
Do While DR.Read
ComboBox2.Items.Add(DR.Item("nama"))
Loop
CMD = New OleDbCommand("select matakuliah from tblkuliah", Conn)
DR = CMD.ExecuteReader
ComboBox3.Items.Clear()
Do While DR.Read
ComboBox3.Items.Add(DR.Item("matakuliah"))
ComboBox5.Items.Add(DR.Item("matakuliah"))
Loop
CMD = New OleDbCommand("select distinct jurusan from tblkuliah", Conn)
DR = CMD.ExecuteReader
ComboBox4.Items.Clear()
Do While DR.Read
ComboBox4.Items.Add(DR.Item("jurusan"))
Loop
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click
CRV.ReportSource = Nothing
cryRpt.Load("LAPORAN siswa.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox1.Text & "'"
cryRpt.Load("LAPORAN siswa.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblsiswa.nama}='" & ComboBox2.Text & "'"
cryRpt.Load("LAPORAN siswa.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
4.12.2 Laporan Data Mata Kuliah
Laporan master data mata kuliah berada satu form dengan laporan master lainnya.
Gambar 4.19 Laporan data mata kuliah
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
CRV.ReportSource = Nothing
cryRpt.Load("LAPORAN mtkuliah.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblkuliah.matakuliah} like '*" & ComboBox3.Text & "*'"
cryRpt.Load("LAPORAN mtkuliah.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox4.SelectedIndexChanged
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblkuliah.jurusan} like '*" & ComboBox4.Text & "*'"
cryRpt.Load("LAPORAN mtkuliah.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
4.12.1 Laporan Data Soal Ujian
Laporan master data soal ujian berada satu form dengan laporan master lainnya.
Gambar 4.20 Laporan data soal ujian
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
CRV.ReportSource = Nothing
cryRpt.Load("LAPORAN soal ujian.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVale As System.EventArgs) Handles ComboBox5.SelectedIndexChanged
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblkuliah.matakuliah} like '*" & ComboBox5.Text & "*'"
cryRpt.Load("LAPORAN soal ujian.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
4.13 Laporan Hasil Ujian digital
Tahapan pembuatan laporan dimulai dengan mendesain bentuk-bentuk laporan yang diperlukan, silakan gunakan Ms. Word atau Ms. Excel sebagai model awalnya atau bahkan dengan coretan tangan pada lembaran kertas kosong, kemudian masing-masing laporan tersebut diprediksi tabel apa yang terlibat di dalamnya. Setelah desain selesai dan prediksi tabel-tabel yang diperlukan diketahui, maka mulailah membuat laporan dengan Crystal report.
4.13.1 Laporan Hasil Ujian Per Kelas
Pembuatan laporan hasil ujian diawali dengan membuat form seperti gambar di bawah ini dan membuat laporan di crystal report.
Gambar 4.21 Laporan ujian per kelas dan mata kuliah
Imports System.Data.OleDb
Public Class LaporanNilai
Private Sub LaporanNilai_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
Call Koneksi()
CMD = New OleDbCommand("select distinct kelas from tblsiswa,tblmasterjawaban where tblsiswa.nim=tblmasterjawaban.nim", Conn)
DR = CMD.ExecuteReader
ComboBox1.Items.Clear()
Do While DR.Read
ComboBox1.Items.Add(DR.Item("kelas"))
Loop
CMD = New OleDbCommand("select distinct matakuliah from tblkuliah,tblmasterjawaban where tblkuliah.idkuliah=tblmasterjawaban.idkuliah", Conn)
DR = CMD.ExecuteReader
ComboBox2.Items.Clear()
Do While DR.Read
ComboBox2.Items.Add(DR.Item("matakuliah"))
Loop
CMD = New OleDbCommand("select distinct NIM from tblmasterjawaban", Conn)
DR = CMD.ExecuteReader
ComboBox3.Items.Clear()
Do While DR.Read
ComboBox3.Items.Add(DR.Item("NIM"))
Loop
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox1.Text & "' and {tblkuliah.matakuliah}='" & ComboBox2.Text & "'"
cryRpt.Load("LAPORAN per kelas.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
4.13.2 Laporan Hasil Ujian Per Nim
Laporan hasil ujian per nim (siswa) dapat dilihat pada form di bawah ini.
Gambar 4.22 Laporan hasil ujian per nim
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
CRV.ReportSource = Nothing
CRV.SelectionFormula = "{tblmasterjawaban.nim}='" & ComboBox3.Text & "'"
cryRpt.Load("LAPORAN per nim.rpt")
Call seting_laporan()
CRV.ReportSource = cryRpt
CRV.RefreshReport()
End Sub
referensi dari sinih
No comments:
Post a Comment