FISHER-YATTES SHUFFLE
SKRIPSI
Disusun Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Dari Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang
Oleh :
LEMBAR PENGESAHAN
APLIKASI TES ONLINE DENGAN ALGORITMA
FISHER-YATTES SHUFFLE
SKRIPSI
Disusun Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
dari Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang
oleh:
DEWI ADMISARI 1341177004227
disetujui
oleh:
Pembimbing I Pembimbing II
SKRIPSI
Disusun Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
dari Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang
oleh:
DEWI ADMISARI 1341177004227
disetujui
oleh:
Penguji I Penguji II
Dewi Admisari*
Teknik Informatika
Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang, 2017
Pembimbing 1: Jajam Haerul Jaman, SE., M.Kom.**
Pembimbing 2: Aji Primajaya, M.Kom.**
i
ABSTRACT
Dewi Admisari*
Informatics Engineering Study Program
Computer Science Faculty University Singaperbangsa Karawang, 2017
Preceptor 1: Jajam Haerul Jaman, SE., M.Kom. **
Preceptor 2: Aji Primajaya, M.Kom. **
KATA PENGANTAR
i
i
Assalaamu’alaikum wr. wb,
Puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya
sehingga dapat menyelesaikan penelitian ini, sesuai dengan waktu yang telah
direncanakan, shalawat serta salam semoga dapat tercurahkan kepada Nabi Besar
Muhammad SAW. serta keluarga dan para sahabatnya yang selalu membantu
perjuangan beliau untuk menegakkan ajaran Allah SWT.
Penyusunan penelitian ini bertujuan untuk mengimplementasikan ilmu yang telah
di dapat dengan melakukan perancangan “APLIKASI TES ONLINE DENGAN
ALGORITMA FISHER-YATTES SHUFFLE”. Pembuatan penelitian ini
merupakan salah satu syarat untuk menyelesaikan tugas yang diberikan.
Proses penulisan penelitian ini, banyak pihak yang memberikan bantuan
baik itu batuan dalam segi moril maupun materil dan menyampaikan ucapan
terimakasih kepada:
1. Bapak Prof. Dr. H. Moh. Wahyudin Zarkasyi, S.E., MS., Ak., CPA., Mpd
selaku Rektor Universitas Singaperbangsa Karawang.
2. Bapak Ade Andri Hendriadi, S.Si., M.Kom selaku Dekan Fakultas Ilmu
Komputer yang senantiasa memberikan motivasu.
3. Bapak Aries Suharso, S.Si., M.Kom selaku Wakil Dekan Fakultas Ilmu
Komputer yang senantiasa mendampingi mahasiswa dalam proses
pembuatan skripsi.
4. Ibu Nina Sulityowati, ST., M.Kom selaku Ketua Program Studi Teknik
Informatika yang selalu mengarahkan, mendampingi dan memotivasi
mahasiswa dalam proses pembuatan skripsi ini.
5. Bapak Jajam Haerul Jaman, SE., M.Kom selaku Dosen Pembimbing yang
selalu penuh kesabaran, perhatian, dan mengarahkan serta memberi masukan
kepada penulis dalam penyusunan skripsi ini.
iii
6. Bapak Aji Primajaya, M.Kom selaku Dosen Pembimbing yang selalu penuh
kesabaran, perhatian, dan mengarahkan serta memberi masukan kepada
penulis dalam penyusunan skripsi ini.
7. Seluruh Dosen dan staf Fakultas Ilmu Komputer Universitas Singaperbangsa
Karawang.
8. Yang teristimewa kedua orangtuaku, Bapak Asman dan Ibu Mursilah serta
adik saya Rahmawati Ramadhan yang senantiasa memberikan kasih sayang,
dukungan baik moril maupun materil, nasehat dan doa sehingga perkuliahan
dan penyusunan karya tulis ilmiah ini dapat terlaksana dengan baik.
9. Rekan-rekan seperjuangan Univeristas Singaperbangsa Karawang
khususnya rekan-rekan mahasiswa kelas A Fakultas Ilmu Komputer yang
telah memberikan motivasi kepada penulis sehingga terwujudnya skripsi ini
10. Sahabat Asisten Laboratorium Fasilkom yang senantiasa memberikan doa
serta dukungan.
Pada akhirnya semua itu kembali kepada Allah SWT dan kesempurnaan
hanyalah milik-Nya, semoga penelitian ini dapat bermanfaat bagi semua pihak,
khususya bagi pembaca penelitian sebagai bahan acuan referensi penelitian
selanjutnya, semoga Allah SWT menilai semua kerja keras dan usaha dalam
pembuatan skripsi ini sebagai ibadah yang diridhoi oleh Allah SWT.
Penulis
DAFTAR ISI
i
v
ABSTRAK .............................................................................................................. i
ABSTRACT ........................................................................................................... ii
KATA PENGANTAR .......................................................................................... iii
DAFTAR ISI .......................................................................................................... v
DAFTAR GAMBAR .......................................................................................... viii
DAFTAR TABEL................................................................................................ xii
BAB 1 PENDAHULUAN ..................................................................................... 1
2.1. Aplikasi..................................................................................................... 8
v
2.7.2 World Wide Web (WWW) ............................................................. 22
3.1.1 Visi dan Misi SMA Sunan Gunung Jati Karawang ........................ 53
v
i
3.2.1 Metode Pengumpulan Data ............................................................. 53
vii
Gambar 2. 7 Notasi Diagram Aliran ...................................................................... 43
Gambar 2. 8 Logika Gabungan .............................................................................. 43
Gambar 3. 1 Diagram Rancangan Penelitian ......................................................... 53
Gambar 4. 1 Swimlane Sistem Berjalan ................................................................ 58
Gambar 4. 2 Use Case Diagram Aplikasi Ujian Online ........................................ 61
Gambar 4. 3 Activity Diagram Login .................................................................... 63
Gambar 4. 4 Activity Diagram Mengelola Bank Soal ........................................... 64
Gambar 4. 5 Activity Diagram Mengelola Data Hasil Ujian ................................ 65
Gambar 4. 6 Activity Diagram Mengelola Informasi Ujian .................................. 66
Gambar 4. 7 Activity Diagram Mengaktifkan Ujian ............................................. 67
Gambar 4. 8 Activity Diagram Mengelola Data Siswa ......................................... 67
Gambar 4. 9 Activity Diagram Mengelola Data User ........................................... 68
Gambar 4. 10 Activity Diagram Mengelola Data Kelas ........................................ 69
Gambar 4. 11 Activity Diagram Mengelola Kelas Ujian ...................................... 70
Gambar 4. 12 Activity Diagram Mengerjakan Ujian ............................................ 71
Gambar 4. 13 Sequence Diagram Login ................................................................ 72
Gambar 4. 14 Sequence Diagram Mengelola Data Soal........................................ 73
Gambar 4. 15 Sequence Diagram Mengelola Hasil Ujian ..................................... 74
Gambar 4. 16 Sequence Diagram Mengelola Informasi Ujian .............................. 75
Gambar 4. 17 Sequence Diagram Mengelola Aktifkan Ujian ............................... 76
Gambar 4. 18 Sequence Diagram Mengelola Data Siswa ..................................... 77
Gambar 4. 19 Sequence Diagram Mengelola Data User ....................................... 78
Gambar 4. 20 Sequence Diagram Mengelola Data Kelas...................................... 79
Gambar 4. 21 Sequence Diagram Mengelola Kelas Ujian .................................... 80
Gambar 4. 22 Sequence Diagram Mengerjakan Ujian .......................................... 80
Gambar 4. 23 Class Diagram ................................................................................. 82
Gambar 4. 24 Struktur Basis Data ......................................................................... 84
Gambar 4. 25 Rancangan Interface Login ............................................................. 86
Gambar 4. 26 Rancangan Interface Beranda Guru ................................................ 86
Gambar 4. 27 Rancangan Interface Soal................................................................ 87
Gambar 4. 28 Rancangan Interface Kelola Data Soal ........................................... 87
Gambar 4. 29 Rancangan Interface Tambah Soal Ujian........................................ 88
v
iii
Gambar 4. 30 Rancangan Interface Hasil Ujian ..................................................... 88
Gambar 4. 31 Rancangan Interface Halaman Utama Admin ................................. 89
Gambar 4. 32 Rancangan Interface Admin Kelola Ujian ...................................... 89
Gambar 4. 33 Rancangan Interface Admin Tambah Ujian .................................... 90
Gambar 4. 34 Rancangan Interface Aktifkan Ujian ............................................... 90
Gambar 4. 35 Rancangan Interface Kelola Data Siswa ......................................... 91
Gambar 4. 36 Rancangan Interface Tambah Data Siswa ....................................... 91
Gambar 4. 37 Rancangan Interface Kelola Data User ........................................... 92
Gambar 4. 38 Rancangan Interface Tambah Data User ......................................... 92
Gambar 4. 39 Rancangan Interface Kelola Data Kelas .......................................... 93
Gambar 4. 40 Rancangan Interface Tambah Data Kelas ....................................... 93
Gambar 4. 41 Rancangan Interface Kelola Data Kelas Perujian ........................... 94
Gambar 4. 42 Rancangan Interface Data Siswa dan Ujian .................................... 94
Gambar 4. 43 Rancangan Interface Daftar Ujian ................................................... 95
Gambar 4. 44 Rancangan Interface Mengerjakan Soal .......................................... 95
Gambar 4. 45 Rancangan Interface Petunjuk Mengerjakan (evaluasi 1) ............... 96
Gambar 4. 46 Form Login Admin dan Guru ........................................................ 101
Gambar 4. 47 Halaman Utama Guru .................................................................... 101
Gambar 4. 48 Halaman Menu Kelola Ujian ......................................................... 102
Gambar 4. 49 Halaman Bank Soal ....................................................................... 102
Gambar 4. 50 Form Input Soal ............................................................................. 103
Gambar 4. 51 Halaman Hasil Ujian ..................................................................... 103
Gambar 4. 52 Halaman Utama Admin ................................................................. 103
Gambar 4. 53 Halaman Data Ujian ...................................................................... 104
Gambar 4. 54 Halaman Input Ujian ..................................................................... 104
Gambar 4. 55 Halaman Aktifkan Ujian ............................................................... 105
Gambar 4. 56 Halaman Kelola Siswa .................................................................. 105
Gambar 4. 57 Halaman Tambah Siswa ................................................................ 105
Gambar 4. 58 Halaman Kelola User .................................................................... 106
Gambar 4. 59 Halaman Input User ....................................................................... 106
Gambar 4. 60 Halaan Kelola Kelas ...................................................................... 107
Gambar 4. 61 Halaman Input Kelas ..................................................................... 107
ix
Gambar 4. 62 Halaman Kelola Kelas Ujian......................................................... 107
Gambar 4. 63 Halaman Edit Kelas Ujian ............................................................ 108
Gambar 4. 64 Halaman Data Siswa dan Ujian .................................................... 108
Gambar 4. 65 Halaman Petunjuk Mengerjakan ................................................... 108
Gambar 4. 66 Halaman Ujian Siswa .................................................................... 109
Gambar 4. 67 Halaman Selesai Ujian .................................................................. 109
Gambar 4. 68 Cyclomatic Complexity Login ...................................................... 115
Gambar 4. 69 Cyclomatic Complexity Tambah Soal .......................................... 115
Gambar 4. 70 Cyclomatic Complexity Ubah Data Soal ...................................... 116
Gambar 4. 71 Cyclomatic Complexity Hapus Data Soal .................................... 117
Gambar 4. 72 Cyclomatic Complexity Cetak Soal .............................................. 117
Gambar 4. 73 Cyclomatic Complexity Menampilkan Hasil Ujian ...................... 118
Gambar 4. 74 Cyclomatic Complexity Aktifkan Ujian ....................................... 119
Gambar 4. 75 Cyclomatic Complexity Ubah Data Ujian .................................... 120
Gambar 4. 76 Cyclomatic Complexity Hapus Data Ujian ................................... 121
Gambar 4. 77 Cyclomatic Complexity Aktifkan Ujian ....................................... 121
Gambar 4. 78 Cyclomatic Complexity Tambah Data Siswa ............................... 122
Gambar 4. 79 Cyclomatic Complexity Ubah Data Siswa.................................... 123
Gambar 4. 80 Cyclomatic Complexity Hapus Data Siswa .................................. 124
Gambar 4. 81 Cyclomatic Complexity Reset Login Siswa ................................. 124
Gambar 4. 82 Cyclomatic Complexity Cetak Kartu Siswa ................................. 125
Gambar 4. 83 Cyclomatic Complaxity Tambah Data User ................................. 126
Gambar 4. 84 Cyclomatic Complexity Ubah Data User...................................... 127
Gambar 4. 85 Cyclomatic Complexity Tambah Data Kelas................................ 127
Gambar 4. 86 Cyclomatic Complaxity Ubah Data Kelas .................................... 128
Gambar 4. 87 Cyclomatic Complexity Hapus Data Kelas .................................. 129
Gambar 4. 88 Cyclomatic Complexity Ubah Kelas Ujian ................................... 130
Gambar 4. 89 Cyclomatic Complexity Ujian ...................................................... 132
x
DAFTAR TABEL
xi
Tabel 4. 25 White Box Cetak Soal ..................................................................... 119
Tabel 4. 26 White Box Menampilkan Hasil Ujian ............................................. 120
Tabel 4. 27 White Box Aktifkan Ujian .............................................................. 121
Tabel 4. 28 White Box Ubah Data Ujian ........................................................... 122
Tabel 4. 29 White Box Hapus Data Ujian .......................................................... 123
Tabel 4. 30 White Box Aktifkan Ujian .............................................................. 123
Tabel 4. 31 White Box Tambah Data Siswa ...................................................... 124
Tabel 4. 32 White Box Ubah Data Siswa ........................................................... 125
Tabel 4. 33 White Box Hapus Data Siswa ......................................................... 126
Tabel 4. 34 White Box Reset Login Siswa......................................................... 126
Tabel 4. 35 White Box Cetak Kartu Siswa......................................................... 127
Tabel 4. 36 White Box Tambah Data User ........................................................ 128
Tabel 4. 37 White Box Ubah Data User ............................................................. 128
Tabel 4. 38 White Box Tambah Data Kelas ....................................................... 129
Tabel 4. 39 White Box Ubah Data Kelas ........................................................... 130
Tabel 4. 40 White Box Hapus Data Kelas .......................................................... 131
Tabel 4. 41 White Box Mengubah Kelas Ujian ................................................. 131
Tabel 4. 42 White Box Ujian .............................................................................. 132
Tabel 4. 43 Pengacakan Soal .............................................................................. 134
Tabel 4. 44 Bobot Nilai ...................................................................................... 135
Tabel 4. 45 Rekapitulasi Jawaban Kusioner ...................................................... 135
Tabel 4. 46 Hasil Presentase Jawaban ............................................................... 136
Tabel 4. 47 Penentuan Nilai Interval .................................................................. 136
x
ii
BAB 1 PENDAHULUAN
menyontek kepada teman sendiri karena soal yang diberikan sama dengan yang
lainnya.
SMA Sunan Gunung Jati Karawang termasuk kedalam Yayasan
Pendidikan Sunan Gunung Jati. Pada SMA Sunan Gunung Jati Karawang terdapat
beberapa mata pelajaran yang diajarakan didalamnya dan mengadakan ujian sama
seperti sekolah-sekolah pada umumna. Dalam ujian guru menggunakan media
kertas yang berisi soal-soal ujian dan kemudian dibagikan kepada siswa dan soal
yang diberikan sama dengan siswa lainnya.
Ujian semester merupakan kumpulan soal-soal pelajaran untuk evaluasi
siswa selama menempuh tengah semester ataupun akhir semester. Soal yang
diberikan berupa sebuah pertanyaan-pertanyaan dari mata pelajaran yang diberikan
oleh guru, pertanyaan tersebut dapat berupa pilihan ganda (PG), mencocokan,
ataupun essay. Namun guru memberikan soal tidak bervariasi setiap siswa
mendapatkan soal yang sama tidak ada pengacakan soal, karena keterbatasan waktu
yang dimiliki guru untuk melakukan pengacakan soal.
Pada saat ujian semester yang dilakukan pada sekolah kurang adanya
penyimpanan soal-soal, guru-guru membuat soal dan diberikan kepada kepala
sekolah untuk di cetak dan diperbanyak. Soal-soal yang diedarkan kepada siswa
berbentuk kertas sehingga memerlukan banyak kertas untuk di edarkan ke seluruh
kelas, dan untuk penilaian dari ujian tersebut guru harus memeriksa hasil pekerjaan
siswa dan memerlukan waktu yang lama untuk mengkoreksi hasil ujian dari semua
siswa sehingga kurang efektif untuk pemeriksaan hasil ujian.
Ujian semester dilakukan oleh semua siswa pada sekolah tersebut, soal yang
diberikan saat ujian guru membuat soal yang sama, sehingga memungkinkan para
siswa untuk melakukan kecurangan melihat jawaban teman sendiri. Masalah hal
kecurangan tersebut sekolah belum memiliki solusi yang bisa mengatasi
kecurangan tersebut baik dari sistemnya maupun proses dari pelaksanaan ujian
tersebut.
Algoritma Fisher-Yattes Shuffle adalah sebuah algoritma untuk
menghasilkan suatu permutasi acak dari suatu himpunan terhingga, dengan kata lain
untuk mengacak suatu himpunan tersebut. Algoritma fisher-yates shuffle
merupakan suatu algoritma untuk memberikan teknik pengacakan pada soal
3
sehingga soal yang keluar akan berbeda dan dapat dihasilkan tanpa pengulangan
atau duplikasi. Terdapat pula algortima pegacakan lain yang berguna untuk
pengacakan seperti algoritma naive shuffle namun dalam algoritma fisher-yattes
shuffle menghasilkan permutasi yang seimbang untuk n kali pengacakan.
Pengunaan algoritma Fisher-Yattes Shuffle untuk mengacak soal ujian sehingga
setiap siswa memiliki urutan soal ujian yang berberda.
Dari persoalan tersebut, maka penulis tertarik untuk mengambil judul dalam
penulisan penelitian ini adalah “Aplikasi Tes Online Dengan Algoritma
FisherYattes Shuffle”.
2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara
yang berfokus pada penyajian kepada pelanggan (misalnya dengan
membuat input dan format output)
6
3. Evaluasi protoptyping.
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah
dibangunsudah sesuai dengan keinginann pelanggan. Jika sudah
sesuai maka langkah 4 akandiambil. Jika tidak prototyping direvisi
dengan mengulangu langkah 1, 2 , dan 3.
4. Mengkodekan system
Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke
dalam bahasa pemrograman yang sesuai.
5. Menguji system.
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai,
harus ditesdahulu sebelum digunakan. Pengujian ini dilakukan dengan
White Box, Black Box,Basis Path, pengujian arsitektur dan lain-lain
6. Evaluasi Sistem.
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai
denganyang diharapkan . Juka ya, langkah 7 dilakukan; jika tidak,
ulangi langkah 4 dan 5.
7. Menggunakan system.
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk
digunakan.
2.1. Aplikasi
Aplikasi adalah penggunaan atau penerapan suatu konsep yang menjadi
suatu pokok pembahasan. Aplikasi dapat diartikan juga sebagai program komputer
yang dibuat untuk menolong manusia dalam melaksanakan tugas tertentu
(Noviansyah, 2012).
Aplikasi software yang dirancang untuk suatu tugas khusus dapat
dibedakan menjadi dua jenis, yaitu:
1. Aplikasi software spesialis, program dengan dokumentasi tergabung
yang dirancang untuk menjalankan tugas tertentu.
2. Aplikasi software paket, suatu program dengan dokumentasi
tergabung yang dirancang untuk jenis masalah tertentu.
Aplikasi adalah suatu program perangkat lunak yang berjalan pada suatu
sistem tertentu yang berguna untuk membantu berbagai kegiatan yang dilakukan
oleh manusia. Aplikasi merupakan komponen yang bermanfaat sebagai media
8
2.2. Pelajaran
Pelajaran adalah apa pun membaca atau dibacakan kepada guru dengan
murid atau peserta didik; sesuatu, sebagai bagian dari sebuah buku, ditugaskan
untuk murid yang akan belajar atau belajar pada satu waktu. Pelajaran adalah Apa
yang dipelajari atau diajarkan oleh upaya mengungkapkan; instruksi yang berasal
dari ajaran, pengalaman, pengamatan, atau pengurangan; sebuah ajaran; doktrin;
sebagai, untuk mengambil atau memberikan pelajaran menggambar.
Gambar 2. 1 Pelajaran
Sumber : Sinonimkata.com
(sebuah segi dari topik) yang merupakan salah satu unsur dari kecapakan studi
(suatu cabang ilmu).
Buku teks pelajaran merupakan bahan ajar dan sumber belajar yang mudah
ditemukan dan digunakan. Pada umumnya buku pelajaran dikeluarkan atau
diterbitkan oleh penerbit-penerbit yang banyak menawarkan ke tiap-tiap institusi
pendidikan. Ini menjadikan satu institusi atau sekolah satu dengan yang lainnya
dapat menggunakan buku teks yang berbeda pada materi pelajaran dan tingkatan
kelas yang sama. Pemerintah juga menyelenggarakan program BSE (Buku Sekolah
Elektronik) dimana BSE merupakan buku teks pelajaran yang disediakan secara
gratis dan dapat diunduh (download) serta disebar luaskan tanpa pelanggaran hak
cipta. Penerbit yang ingin mengambil keuntungan dari buku BSE ini juga tidak
diperbolehkan menetapkan harga melebihi harga maksimal yang ditentukan.
Buku teks pelajaran memiliki banyak fungsi, tujuan dan kegunaan atau
manfaat dalam mendukung proses pembelajaran. Nasution dalam Prastowo
menyebutkan terdapat beberapa fungsi, tujuan dan manfaat atau kegunaan buku teks
pelajaran, yaitu:
1. Fungsi Buku Teks Pelajaran
• Sebagai bahan referensi atau bahan rujukan oleh peserta didik
• Sebagai bahan evaluasi
• Sebagai alat bantu pendidik dalam melaksanakan kurikulum
• Sebagai salah satu penentu metode atau teknik pengajaran yang akan
digunakan pendidik
• Sebagai sarana untuk peningkatan karir dan jabatan
2. Tujuan Buku Teks Pelajaran
• Memudahkan pendidik dalam menyampaikan materi pembelajaran
• Memberi kesempatan kepada peserta didik untuk mengulangi pelajaran
atau mempelajari pelajaran baru
• Menyediakan materi pembelajaran yang menarik bagi peserta didik
3. Manfaat atau Kegunaan Buku Teks Pelajaran
• Membantu peserta didik dalam melaksanakan kurikulum karena
disusun berdasarkan kurikulum yang berlaku
• Menjadi pegangan guru dalam menentukan metode pengajaran
• Memberi kesempatan bagi peserta didik untuk mengulangi pelajaran
atau mempelajari materi yang baru
10
2.3. Tes
Tes adalah prosedur yang sistematik guna mengukur sampe perilaku
seseorang. Sistematik juga memiliki pengertian obyektif, standart dan syarat-syarat
kualitas lainnya (Frederick, 1976).
Yang termasuk dalam jenis tes ini dan banyak digunakan dalam
kependidikan adalah:
1) Pengukuran sikap.
2) Pengukuran minat.
3) Pengukuran bakat.
4) Tes intelegensi.
b. Tes Hasil Belajar (Achievement Test)
Adalah tes yang dipergunakan untuk menilai hasil-hasil pelajaran yang
telah diberikan oleh guru kepada murid-muridnya, atau oleh dosen
kepada mahasiswanya, dalam jangka waktu tertentu. Menurut fungsinya
tes hasil belajar dapat dibedakan menjadi empat macam yaitu:
1) Tes Penempatan (Plecement Test)
Tes penempatan adalah tes untuk mengukur kemampuan dasar yang
dimiliki oleh anak didik; kemampuan tersebut dapat dipakai untuk
meramalkan kemampuan peserta didik pada masa mendatang,
sehingga kepadanya dapat dibimbing, diarahkan atau ditempatkan
pada jurusan yang sesuai dengan kemampuan dasarnya.
2) Tes Diagnostic
Adalah tes yang dilaksanakan untuk menentukan secara tepat, jenis
kesukaran yang dihadapi oleh para peserta didik dalam suatu mata
pelajaran tertentu. Dengan diketahuinya jenis-jenis kesukaran yang
dihadapi oleh peserta didik itu maka lebih lanjut akan dapat
dicarikan upaya berupa pengobatan (therapy) yang tepat. Tes
diagnostic juga bertujuan untuk menemukan jawaban atas
pertanyaan “Apakah peserta didik sudah dapat menguasai
13
Adalah tes yang disusun oleh seorang pendidik yang belum memiliki
keahlian professional dalam menyusun tes secara baik.
Sedangkan menurut bentuknya, tes dapat dibedalan menjadi 3 macam, yaitu
sebagai berikut:
1) Tes Tindakan
Adalah tes dimana respon atau jawaban yang dituntut dari peserta didik
berupa tindakan, tingkah laku konkrit. Alat yang dapat digunakan untuk
melakukan tes ini adalah observasi atau pengamatan terhadap tingkah
laku tersebut.
2) Tes Lisan
Tes lisan merupakan sekumpulan item pertanyaan dan atau pernyataan
yang disusun secara terencana, diberikan oleh seorang guru kepada para
siswanya tanpa media tulis. Dari segi persiapan dan cara bertanya tes
lisan dapat dibedakan menjadi dua, yakni:
a) Tes lisan bebas: artinya, penduduk dalam memberikan soal kepada
peserta didik tanpa menggunakan pedoman yang dipersiapkan
secara tertulis.
b) Tes lisan berpedoman: pendidik menggunakan pedoman tertulis
tentang apa yang akan ditanyakan kepada peserta didik.
3) Tes Tertulis
Yaitu tes yang terdiri dari serangkaian soal, pertanyaan (item) atau tugas
secara tertulis dan jawaban yang diberikan secara tertulis juga. Tes
tertulis secara umum dapat dibedakan menjadi 2 macam, yakni: a) Tes
subyektif
Tes subyektif, yang pada umumnya berbentuk esai (uraian). Tes
bentuk esai adalah sejenis tes kemajuan belajar yang memerlukan
jawaban yang bersifat pembahasan atau uraian kata-kata.
b) Tes obyektif
Yaitu tes yang terdiri dari butir-butir soal (item) yang dapat dijawab,
oleh testee dengan jalan memilih salah satu (atau lebih) diantara
beberapa kemungkinan jawaban yang telah dipasangkan dengan
masing-masing item dengan jalan menuliskan (mengisi) jawabannya
berupa kata-kata atau simbol-simbol tertentu pada tempat atau ruang
15
c. Obyektivitas
Adalah kualitas yang menunjukkan identitas atau kesamaan dari
skorskor atau diagnosis-diagnosis yang diperoleh dari data yang sama
dari penskor-penskor kompeten yang sama.
d. Praktibilitas
Sebuah tes dikatakan memiliki praktibilitas yang tinggi apabila tes
tersebut bersifat praktis, mudah mengadministrasikannya, praktis
disini juga termasuk dalam pelaksanaan, pemeriksaan dan juga
pemberian petunjuk-petunjuk yang jelas sehingga dapat
diberikan/diwakili oleh orang lain.
e. Ekonomis
Yang dimaksud ekonomis disini ialah bahwa pelaksanaan tersebut
tidak membutuhkan ongkos atau biaya yang mahal, tenaga yang
banyak, dan waktu yang lama.
2.4. Online
Menurut Dedik Kurniawan online adalah sebuah kegiatan yang
menggunakan fasilitas internet untuk melakukan segala kegiatan yang dapat
dilakukan secara online seperti halnya bisnis, daftar kuliah, searching, stalking,
mencari berita dan lain sebagainya.
Menurut Jasmadi dan Solusindo online juga bisa digunakan untuk sebuah
komunitas. Dan itu dapat diartikan menjadi sebuah tempat berbagi informasi
dimana bisa menyumbangkan kemampuan untuk membuat komunitas yang solid
melalui via internet.
Menurut Yudhi Wicaksono online juga bisa menjadi media untuk berbisnis
yang menjadikan pemahaman online sebagai kegiatan jual beli dalam sambungan
internet dan fitur belanja online yang sudah tersedia.
2.5. Algoritma
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu
masalah. Terdapat beberapa definisi lain dari algoritma, tetapi pada prinsipnya
senada dengan definisi yang diungkapkan di atas yang kita kutip dari berbagai
literatur, antara lain:
18
Dari flowchart terlihat bahwa pengacakan akan selesai jika seluruh array
telah diavak. Fisher-Yates shuffle dihasilkan urutan array yang diacak. Untuk
pseudo code nya dapat dilhat pada tabel dibawah ini:
Tabel 2. 3 Pseucode Algoritma Fisher-Yates Shuffle
No Algoritma Pseudocode
1 Ketikan masih ada elemen While (m) {
tersisa untuk diacak
2 Ambil elemen secara acak dari i=Math.floor(Math.random()*m—);
elemen yang tersisa
3 Kemudian tukar dengan elemen t = array [m];
saat ini array[m] = array[i];
array[i] = t;
}
2.6. Internet
Internet (Internetconnected Networok) merupakan jaringan (network)
komputer yang terdiri dari ribuan jaringan komputer independent yang
dihubungkan satu dengan yang lainnya. Internet secara umum merujuk kepada
gabungan jaringan komputer yang berkomunikasi menggunakan sistem pertuturan
yang sama dikenali sebagai TCP/IP (Transmission Control Protocol/ Internet
Protocol). Ia berfungsi sebagai satu rangkaian yang besar menghubungkan bada
pemerintahan, komersial, institusi penddikan dan individu di seluruh dunia
(Jogiyanto, 2005).
21
2.7.3.1 HTML
HTML merupakan bahasa yang digunakan untuk menulis halaman web.
Biasanya mempunyai ekstensi .htm, .html, atau .shtml. HTML tersusun atas-atas
tag-tag digunakan untuk menentukan tampilan dari dokumen HTML yang
diterjemahkan oleh browser. Tag HTML tidak case sensitive. Jadi bisa
menggunakan <HTML> atau <html>. Keduanya menghasilkan output yang sama.
HTML berawal dari bahasa SGML (Standard Generalized MarkUp
Language) yang penulisannya disederhanakan. HTML dapat dibaca oleh bebagai
macam platform. HTML juga merupakan bahasa pemrograman yang fleksibel,
22
<BODY>
Isi dokumen
</BODY>
</HTML>
2.7.3.2 CSS
CSS (Cascading Style Sheets) banyak digunakan untuk memperluas
kemampuan HTML dalam memformat dokumen web atau untuk mempercantik
tampilan web, bahkan untuk pemosisian dan layouting halaman web. Dengan
mendifinisikan suatu style sekali saja maka style itu akan dapat digunakan berulang
kali.
CSS telah didukung kebanyakan browser, terutama versi baru sehingga
penempatan layout menjadi lebih fleksibel. Membuat HTML menggunakan tag
minimal berpengaruh terhadap ukuran file, dapat menampilkan konten utama
terlebih dahulu seperti gambar dan yang lain dapat ditampilkan sesudahnya. Selain
itu penggunaan CSS pada file terpisah dapat mempermudah pengubahan tampilan
situs secara keseluruhan.
Kerangka dasar CSS yang penulisan kodenya disisipkan pada tag HTML
adalah:
<STYLE TYPE = “text/css”>
<!—
Nama_tag {properti_1:nilai_1; ... ;
properti_nilai_n;}
-->
23
</STYLE>
2.7.3.4 JavaScript
JavaScript mulanya bernama LiveScript, dikembangkan pertama kali
tahun 1995 di Netscape Communication. Pada akhir tahun 1995 Netscape
Communication dan Sun Microsystem berkolaborasi dan mengganti nama
LiveScript menjadi JavaScript.
JavaScript adalah bahasa skrip yang ditempatkan pada kode HTML, dan
diproses pada sisi klien. Dengan adanya bahasa ini maka kemampuan dokumen
HTML menjadi lebih luas. Sebagai contoh, digunakan untuk validasi masukan pada
formulir sebelum diproses ke tahap selanjutnya. Bisa untuk membuat permainan
interaktif dan juga bisa untuk menambah desain web. Contoh program JavaScript:
<SCRIPT LANGUAGE =”JavaScript”>
<!--
document.write(“ASEP HERMAN SUYANTO<BR>”);
document.write(“Penulis Buku Desain Web”);
//-->
<SCRIPT>
2.7. Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak (RPL atau SE [Software Engineering]) adalah
satu bidan profesi yang mendalami cara-cara pengembangan perangkat lunak
termasuk pembuatan, pemeliharaan, manajemen organisasi perangkat lunak, dan
sebagainya (Simarmata J. , 2012).
Rekayasa perangkat lunak (software engineering) merupakan
pembangunan dengan menggunakan prinsip atau konsep rekayasa dengan tujuan
menghasilkan perangkat lunak yang bernilai ekonomi yang dipercaya dan bekerja
24
secara efisien menggunakan mesin. Perangkat lunak banyak dibuat dan pada
akhirnya sering tidak digunakan karena tidak memenuhi kebutuhan pelanggan atau
bahkan karena masalah non-teknis seperti keengganan pemakai perangkat lunak
(user) untuk mengubah cara kerja dari manual ke otomatis, atau ketidakmampuan
user menggunakan komputer. Oleh karena itu, rekayasa perangkat lunak
dibutuhkan agar perangkat lunak yang dibuat tidak hanya menjadi perangkat lunak
yang tidak terpakai (Rosa A.S., 2013)
4. Pengkodean Sistem
Dalam tahap ini prototype yang sudah disepakati diterjemahkan ke
dalam bahasa pemrograman yang sesuai.
5. Pengujian Sistem
Setelah sistem menjadi suatu perangkat lunak yang siap pakai, harus
diuji terlebih dahulu sebelum digunakan. Pengujian ini dilakukan
dengan whitebox dan blackbox.
6. Menggunakan Sistem
Perangkat lunak yang telah diuji dan diterima pelanggan untuk
digunakan (Hakim, 2012).
27
3. Jika sistem perangkat lunak yang akan dibuat tidak bisa dimodulkan
(dibagi-bagi menjadi beberapa komponen) maka model RAD tidak
dapat digunakan untuk membuat sistem perangkat lunak ini karena
terlalu banyak campur tangan antar tim.
4. Model RAD tidak cocok digunakan untuk sistem perangkat lunak
yang memiliki resiko teknis sangat tinggi, misalnya menggunakan
teknologi baru yang belum banyak dikenal dan dikuasai pengembang.
Model RAD cocok diterapkan apabila memenuhi kriteria proyek
sebagai berikut :
1. Anggota tim sudah berpengalaman mengembangkan perangkat lunak
yang sejenis.
2. Pengembang sudah memiliki komponem-komponen sistem yang bisa
digunakan kembali pada proyek tersebut.
Kelas memiliki apa yang disebut atribut dan metode atau operasi.
1. Attribut merupakan variable-variable yang dimiliki oleh suatu kelas.
2. Operasi atau metode adalah fungsi-fungsi yang dimiliki oleh suatu
kelas.
Kelas-kelas yang ada pada struktur sistem harus dapat melakukan
fungsifungsi sesuai dengan kebutuhan sistem. Susunan struktur kelas yang baik
pada diagram kelas sebaiknya memiliki jenis-jenis berikut :
1. Kelas main
Kelas yang memiliki fungsi awal dieksekusi ketika sistem dijalankan
2. Kelas yang menangani tampilan sistem
Kelas yang mendefinisikan dan mengatur tampilan ke pemakai.
3. Kelas yang diambil dari pendefinisian use case
Kelas yang menangani fungsi-fungsi yang harus ada diambil dari
pendefinisian use case.
4. Kelas yang diambil dari pendefinisian data.
Kelas yang digunakan untuk memegang atau membungkus data menjadi
sebuah kesatuan yang diambil maupun akan disimpan ke basis data.
Jenis-jenis kelas di atas juga dapat digabungkan satu sama lain sesuai
dengan pertimbangan yang dianggap baik asalkan fungsi-fungsi yang sebaiknya ada
pada struktur kelas tetap ada. Susunan kelas juga dapat ditambahkan kelas utilitas
seperti koneksi ke basis data, membaca file teks dan lain sebagainya sesuai
kebutuhan.
Dalam mendefinisikan metode yang ada di dalam kelas perlu
memperhatikan apa yang disebut dengan cohesion dan coupling. Cohesion adalah
ukuran seberapa dekat keterkaitan instruksi di dalam sebuah metode terkait satu
sama lain sedangkan coupling adalah ukuran seberapa dekat keterkaitan instruksi
antara metode yang satu dengan metode yang lain dalam sebuah kelas. Sebagai
aturan secara umum maka sebuah metode yang dibuat harus memiliki kader
cohesion yang kuat kada coupling yang lemah (Rosa A.S., 2013).
Berikut adalah symbol-simbol yang ada pada class diagram :
Semua-bagian (whole-part)
dicakup pada diagram sekuen sehingga semakin banyak use case yang didefiniskan
maka diagram sekuen yang harus dibuat juga semakin banyak (Rosa A.S., 2013).
2. Jika ada bagian tertentu yang perlu untuk digali lebih dalam, dapat
langsung menanyakan kepada narasumber.
37
2.13.3 MySQL
MySQL merupakan salah satu database kelas dunia yang sangat cocok bila
dipadukan dengan bahasa pemrograman PHP. MySQL bekerja menggunakan
40
bahasa SQL (Structure Query Language) yang merupakan bahasa standar yang
digunakan untuk manipulasi database.
Ada beberapa alasan yang menjadikan database MySQL sangat diminati
oleh para programmer, diantaranya :
1. Bersifat open source
2. Menggunakan bahasa SQL (Structure Query Language), yang
merupakan standar bahasa dalam pengolahan data.
3. Performance dan reliable, pemrosesan database-nya sangat cepat dan
stabil.
4. Sangat mudah dipelajari (ease of use)
5. Memiliki dukungan (group) pengguna MySQL
6. Lintas platform, dapat digunakan pada berbagai Sistem Operasi berbeda.
7. Multiuser, dimana MySQL dapat digunakan oleh banyak user dalam
waktu yang bersamaan tanpa mengalami konflik.
8. Dan masih banyak lagi (Saputra, 2012).
yang tidak penting dilihat isinya, tapi cukup dikenai proses testing dibagian luar
(Rosa A.S., 2013).
Pengujian black box berfokus pada persyaratan fungsional yang
memungkinkan perekayasa perangkat lunak mendapatkan serangkaian kondisi
input yang sepenuhnya menggunakan persyaratan fungsional untuk suatu program,
Roger menegaskan bahwa pengujian black-box berusaha menemukan kesalahan
dalam kategori sebagai berikut (Pressman R. S., 2012):
a. Fungsi-fungsi yang tidak benar atau hilang
b. Kesalahan interface
c. Kesalahan dalam struktur data atau akses database eksternal
d. Kesalahan kinerja
e. Inisialisasi dan kesalahan terminasi
desainer test case mengukur kompleksitas logis dari desain prosedural dan
menggunakannya sebagai pedoman untuk menetapkan basis set dari jalur eksekusi
(Pressman R. S., 2012).
Pengujian basis path adalah teknik pengujian white-box yang diusulkan
pertama kali oleh Tom McCabe. Metode basis path ini memungkinkan desainer test
case mengukur kompleksitas logis dari desain prosedural dan menggunakannya
sebagai pedoman untuk menetapkan basis set dari jalur eksekusi. Test case yang
dilakukan untuk menggunakan basis set tersebut dijamin untuk menggunakan setiap
statemen di dalam program paling tidak sekali selama pengujian.
2. Penelitian Ke-2
46
53
1. Observasi
Observasi merupakan salah satu metode pengumpulan data dengan
langsung terjun ke lapangan untuk mengamati permasalahan yang
terjadi secara langsung ditempat kejadian. Adapun observasi yang
akan dilakukan oleh penulis di SMA Sunan Gunung Jati Karawang:
- Mengamati permasalahan-permasalahan yang ada pada SMA
Sunan Gunung Jati Karawang:
- Melakukan pencatatan permasalahan yang ada
- Mengamati proses sistem yang berjalan pada SMA Gunung Jati
Karawang
2. Riset Lapangan
Data yang diambil secara langsung pada objek permasalahan yang
berkaitan dengan penilitian ini adalah melalui: a. Wawancara
Metode wawancara merupakan sesi tanya jawab yang dilakukan
penulis untuk mewawancarai, penulis berperan sebagai
pewawancara yang mewawancarai pihak-pihak yang
berhubungan dengan penelitian yang penulis lakukan. Penulis
akan melakukan wawancara langsung di SMA Sunan Gunung
Jati Karawang mengenai permasalahan yang dibahas mengenai
evaluasi siswa. Adapun
- Memberikan pertanyaan langsung antar muka kepada kepala
sekolah dan guru.
- Menanyakan apa saja yang dibutuhkan sesuai dengan
penelitian yang dilakukan.
b. Studi Literatur
Metode ini adalah metode untuk mempelajari buku-buku dan
peferensi yang berkaitan dengan teori-teori yang ada dalam
penelitian.
beserta alat pendukungnya yang diimplementasikan pada SMA Sunan Gunung Jati
Karawang.
3.4.1.2 Wawancara
Identifikasi kebutuhan sistem dilakukan dengan wawancara kepada kepala
sekolah SMA Sunan Gunung Jati Karawang. Hasil yang diharapkan dari
wawancara tersebut yaitu dapat menjawab kebutuhan data, kebutuhan fungsional,
dan non-fungsional sistem.
3.4.1.3 Observasi
Pada penelitian ini penulis mengamati secara langsung proses berjalannya
kegiatan belajar dan evaluasi siswa di SMA Sunan Gunung Jati Karawang guna
melakukan analisis terhadap sistem yang berjalan sehingga dapat dilakukan
identifikasi masalah, dan identifikasi solusi dari masalah.
3. Penentuan relasi
b. Activity Diagram (Diagram Activity)
Diagram activity digunakan untuk menggambarkan aktifitas-aktifitas
yang terjadi dan bergantung satu sama lain sehingga dapat diketahui
objek mana yang bertanggung jawab terhadap suatu aktifitas. Tahapan
yang dilakukan, yaitu :
1. Aktor direpresentasikan sebagai swimlane
2. Aktifitas dimulai dari satu swimlane dengan simbol initial state
(state awal)
3. Aktifitas dari satu swimlane terhubung dengan aktifitas swimlane
yang lain
4. Aktifitas diakhiri dengan simbol final state (state akhir)
c. Sequence Diagram (Diagram Sekuen)
Pada tahap ini kemudian model diagram use case yang telah dibuat
dikembangkan menjadi desain yang spesifik. Memodelkan perilaku
objek dalam sebuah use case. Tahapan yang dilakukan, yaitu :
1. Setiap use case dibuat menjadi diagram sekuen
2. Aktor yang digunakan sama dengan aktor yang ada pada diagram
use case.
3. Mengidentifikasi objek-objek yang terlibat dalam sebuah use case.
4. Mengidentifikasi metode-metode yang ada pada masing-masing
objek.
5. Mengidentifikasi pesan yang dikirimkan antar objek.
d. Class Diagram (Digram Class)
Diagram class digunakan untuk mendapatkan struktur basis data
sehingga dapat menjadi acuan dalam pembuatan sistem sebelum proses
pengkodean dilakukan. Tahapan yang dilakukan, yaitu :
1. Class pada objek diagram sekuen merupakan class pada diagram
class.
2. Class yang merupakan tabel pada database terdiri dari atribut dan
metode, sedangkan yang lain tidak.
3. Pesan tipe call pada objek diagram sekuen merupakan metode pada
class tersebut.
4. Menentukan asosiasi antar class.
e. Desain Interface
56
60
a. Definisi Aktor
Berikut definisi aktor pada aplikasi ujian online
Tabel 4. 2 Definisi Aktor
No Aktor Deskripsi
1 Guru Pengguna yang bertugas untuk mengelola soal ujian,
mengelola data hasil ujian, mengelola data siswa,
dan mengaktifkan ujian.
2 Admin Pengguna yang bertugas untuk mengelola data ujian,
mengaktifkan ujian, mengelola data siswa,
mengelola data user, kelola data kelas ujian, dan
mengelola data kelas.
3 Siswa Pengguna yang dapat mengerjakan soal ujian yang
ditampilkan.
b. Definisi Use Case
Berikut definisi use case pada aplikasi ujian online:
2. Activity Diagram
Berikut ini merupakan activity diagram atau diagram aktifitas yang
terdapat pada aplikasi pencatatan transaksi:
63
3. Sequence Diagram
Berikut ini merupakan sequence diagram yang terdapat pada aplikasi
ujian online:
72
4. Class Diagram
Berikut ini merupakan class diagram yang terdapat pada database
aplikasi yang terdapat pada gambar 4.32
b. Kelola Ujian
d. Aktifkan ujian
4. Siswa
a. Data Siswa dan Ujian
c. Mengerjakan Soal
akan diproses oleh sistem sesuai dengan jumlah soal yang diberikan. Adapun
perhitungannya sebagai berikut:
𝐽𝑢𝑚𝑙𝑎ℎ 𝑗𝑎𝑤𝑎𝑏𝑎𝑛 𝑏𝑒𝑛𝑎𝑟
× 100
𝐽𝑢𝑚𝑙𝑎ℎ 𝑠𝑜𝑎𝑙
Hasil dari perhitungan tersebut yang nantinya akan menjadi hasil dari ujian
yang siswa kerjakan dan akan tampil pada halaman hasil guru.
Soal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
No
1 11 8 6 13 5 12 26 28 2 24 1 3 21 15 22 16 23 19 7
14 20 10 25 18 20 17 4 27 29 9
2 29 3 6 15 28 25 26 1 8 5 17 2 11 9 16 18 7 21 22
13 27 24 12 14 23 5 20 30 19 10
3 18 22 10 11 19 2 7 3 4 16 12 27 9 23 25 5 20 14 24
15 6 26 30 1 17 8 29 13 28 21
4 8 12 25 3 24 29 26 30 7 13 19 6 18 22 1 5 28 4 6
27 10 11 17 21 16 14 2 23 20 15
5 25 20 2 6 9 1 10 11 28 21 30 13 27 23 15 19 24 3 14 5
22 8 4 17 12 18 16 26 7 29
6 8 28 12 18 4 19 22 7 17 15 13 25 20 5 11 21 2 30 23 1
6 14 3 10 29 16 9 24 26 27 7 27 15 21 7 1 22 14 2
24 8 19 16 30 17 26 11 29 13 3 6 20 9 4 18 28 25
12 23 10 5
8 15 3 14 13 20 17 19 6 22 18 29 12 1 2 9 5 8 23 4
16 10 30 7 21 11 24 25 26 28 27
9 24 30 5 27 26 3 21 11 18 29 22 14 17 8 15 28 16 10 23 9
20 2 6 19 7 12 4 25 1 13
10 11 15 19 13 25 6 27 16 12 24 4 8 29 1 30 22 2 18 23 7
28 17 14 5 20 21 26 3 9 10
11 20 2 26 22 14 27 30 10 19 7 23 16 8 28 29 5 4 25 21 9
15 3 24 12 1 18 11 13 17 6
12 18 17 26 7 4 30 29 9 21 1 13 16 23 10 25 20 24 19 27
22 6 8 12 28 3 11 14 15 5 2
13 16 24 18 2 20 9 13 19 29 14 30 17 21 28 8 11 6 25 27
15 3 10 22 4 7 1 23 5 26 12 14 8 13 9 17 12 18 22
30 24 2 7 19 15 23 11 4 16 3 10 14 20 25 6 29 27
21 28 26 1 5
15 8 17 5 2 27 23 19 10 29 20 18 26 11 7 16 30 14 1 28 3
6 9 24 13 22 4 12 21 25 15
16 8 26 29 2 25 27 15 10 18 19 3 4 9 12 14 17 6 20 1
23 7 30 28 24 5 11 22 21 16 13
17 15 27 13 11 5 8 22 16 24 3 18 21 1 30 12 10 2 7 26
23 29 9 28 20 6 25 4 17 14 19
18 13 28 19 10 29 9 6 7 3 5 18 17 14 8 26 31 1 4 20
27 16 15 2 12 21 11 24 23 25 22
19 29 14 8 5 24 7 6 15 23 28 3 30 4 13 10 21 26 12 2
17 25 19 16 18 22 1 11 20 9 27
20 16 29 23 11 28 22 1 3 19 2 10 24 25 5 17 6 7 26 20 8
14 27 13 9 18 12 4 21 30 15
103
4.1.4.3 Coding
Pada tahap ini, desain prototype yang diterjemahkan ke dalam baris
program dengan bahasa pemrograman PHP dan untuk basis data menggunajan
MySQL. Berikut adalah tampilan interfcae aplikasi ujian online dengan algoritma
Fisher-Yattes Shuffle sebagai pengacakan soal:
1. Halaman login
Pada gambar 4.46 merupakan form login yang telah dibuat, dimana
dapat diakses oleh admin dan guru, terdapat username, password, dan
button Login Administrator.
2. Beranda guru
Gambar 4.47 adalah halaman utama guru yang telah dibuat, terdapat
menu ujian dan logout untuk kembali ke halaman login.
Gambar 4.49 adalah halaman bank soal dimana soal yang telah dibuat
akan tampil pada halaman tersebut. Terdapat pula button import, cetak
soal, tambah untuk menambahkan data soal.
Gambar 4.50 adalah form input soal, guru akan mengisi soal dan
pilihan, terdapat 5 pilihan jawaban serta kunci jawaban yang benar.
6. Halaman hasil ujian
Gambar 4.51 adalah halaman hasil ujian yang terdapat pada menu
ujian, nilai yang muncul berdasarkan ujian yang telah dilakukan siswa
dan otomatis ditampilkan pada halaman hasil ujian.
7. Halaman utama admin
Gambar 4.52 adalah halaman utama admin yang telah dibuat, terdapat
beberapa menu, diantaranya: ujian, aktifkan ujian, siswa, user, kelas,
kelas ujian, dan logout untuk kembali ke halaman login.
104
Gambar 4.54 adalah form input ujian yang akan diisi oleh admin, data
tersebut yang nantinya akan diisi soal-soal oleh guru.
10. Halaman aktifkan ujian
105
Gambar 4.56 merupakan tampilan kelola data siswa yang telah dibuat,
dimana admin dapat melihat data siswa yang terdapat pada database,
admin juga dapat menambahkan, mengedit atau menghapus data
siswa.
12. Halaman input data siswa
Gambar 4.57 adalah form input siswa yang akan diisi oleh admin, data
tersebut yang nantinya akan diisi data-data siswa oleh admin.
106
Gambar 4.58 merupakan tampilan kelola data user yang telah dibuat,
user disini adalah sebagai guru, dimana admin dapat melihat data user
yang terdapat pada database, admin juga dapat menambahkan,
mengedit atau menghapus data user.
14. Halaman input user
Gambar 4.59 adalah form input user yang akan diisi oleh admin, data
tersebut yang nantinya akan diisi data-data user yang mana user
tersebut adalah guru yang diinmputkan oleh admin.
15. Halaman kelola kelas
107
Gambar 4.61 adalah form input kelas yang akan diisi oleh admin, data
tersebut yang nantinya akan diisi nama kelas oleh admin.
Gambar 4.62 merupakan tampilan kelola data kelas ujian yang telah
dibuat, dimana admin dapat melihat data kelas ujian yang dimana
berisi nama ujian dan kelas mana yang akan mengikuti ujian sesuai
dengan mata pelajaran. Pada halaman ini admin hanya bisa mengedit
data kelas yang mengikuti ujian.
18. Halaman edit kelas ujian
108
Gambar 4.63 merupakan tampilan edit kelas ujian yang telah dibuat,
pada halaman ini menampilkan semua data kelas yang ada, dan admin
memilih kelas mana yang mengikuti ujian sesuai dengan mata
pelajaran yang dipilih.
19. Halaman data siswa dan ujian
Memasukkan data
user pada form Berhasil
Berhasil menyimpan ke
tambah data user menyimpan ke Diterima
database
sesuai dengan database
aturan
Mengubah data Berhasil
user pada form user Berhasil mengubah data mengubah data
sesuai dengan dan menyimpannya ke dan Diterima
aturan database menyimpannya
ke database
Memilih data dan Berhasil
Berhasil menghapus
menghapus data menghapus data Diterima
user data dari database
dari database
Berhasil memilih
Berhasil memilih jawaban dan
Memilih jawaban
jawaban dan menyimpan
dari soal dan
menyimpan hasil ke hasil ke
menyelesaikan ujian
database database
Mengerjakan Ujian
114
Menampilkan
Tidak menceklis
Menampilkan pesan pesan “please
checkbox pada
“please check this box if check this box if Diterima
petunjuk
you want to proceed” you want to
mengerjakan ujian
proceed”
4.1.5.2 White Box Testing
White box testing merupakan cara pengujian dengan meneliti dan
melakukan analisis kode-kode program apakah ada kesalahan atau tidak. Dengan
white box testing akan diuji logika pada suatu program. Berikut yang telah
dilakukan:
1. Login
Tabel 4. 19 White Box Login
1 $username = antiinjeksi($_POST['username']);
$password = antiinjeksi(md5($_POST['password']));
$cekuser = mysqli_query($mysqli, "SELECT * FROM siswa
WHERE nis='$username' AND password='$password'");
$jmluser = mysqli_num_rows($cekuser); $data
= mysqli_fetch_array($cekuser);
2 if($jmluser > 0){
3 if($data['status'] == "off"){
4 //$_SESSION['username'] = $data['nis'];
$_SESSION['namalengkap'] = $data['nama'];
//$_SESSION['password'] = $data['password'];
$_SESSION['nis'] = $data['nis'];
$_SESSION['kelas'] = $data['id_kelas'];
mysqli_query($mysqli, "UPDATE siswa SET status='login'
WHERE nis='$data[nis]'"); echo
"ok";
5 }else{
6 echo "Siswa sedang <b>Login</b>. Hubungi operator untuk
mereset login!";
7 }}else{
8 echo "<b>Username</b> atau <b>password</b> tidak
terdaftar!";
9 }
115
pilihan_4 = '$pil_4',
pilihan_5 = '$pil_5', kunci
= '$_POST[kunci]'");
echo "ok";
3 }}else{
4 echo “data gagal diubah”;
5 }
V(G) = E – N + 2 V(G) = P + 1
116
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
3. Ubah data soal
Tabel 4. 21 White Box Ubah Data Soal
1 if($_GET['action'] == "update"){
2 $soal = addslashes($_POST['soal']);
$pil_1 = addslashes($_POST['pil_1']);
$pil_2 = addslashes($_POST['pil_2']);
$pil_3 = addslashes($_POST['pil_3']);
$pil_4 = addslashes($_POST['pil_4']);
$pil_5 = addslashes($_POST['pil_5']);
mysqli_query($mysqli, "UPDATE soal
SET soal = '$soal', pilihan_1 =
'$pil_1', pilihan_2 = '$pil_2',
pilihan_3 = '$pil_3', pilihan_4 =
'$pil_4', pilihan_5 = '$pil_5',
kunci = '$_POST[kunci]' WHERE id_soal='$_POST[id]'");
echo "ok";
3 }else{
4 echo”data gagal diedit”;
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
117
5. Cetak soal
Tabel 4. 23 White Box Cetak Soal
1 $(function(){
2 var ujian = $('#id_ujian').val(); table
= $('.table').DataTable({
"processing" : true,
"ajax" : { "url" :
"../ajax/ajax_soal_print.php?action=table_data&u
jian="+ujian,
"type" : "POST",
},
"dom" : "rt",
"paging" : false,
"ordering": false
3 });
4 });
V(G) = E – N + 2 V(G) = P + 1
118
=3–4+2 =0+1
=1 =1
Dari flowgraph di atas, maka diketahui:
Node (N) = 4 Lingkaran
Edge (E) = 3 Tanda Panah
Predicate (P) = 0 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-3-4
6. Lihat hasil ujian
Tabel 4. 24 White Box Menampilkan Hasil Ujian
1 if($_GET['action'] == "table_data"){
2 $query = mysqli_query($mysqli, "SELECT * FROM siswa
WHERE id_kelas='$_GET[kelas]'");
$data = array();
$no = 1;
3 while($r = mysqli_fetch_array($query)){
4 $n = mysqli_fetch_array(mysqli_query($mysqli, "SELECT *
FROM nilai WHERE nis='$r[nis]' AND
id_ujian='$_GET[ujian]'"));
$row = array();
$row[] = $no;
$row[] = $r['nis'];
$row[] = $r['nama'];
$row[] = $n['jml_benar'];
$row[] = $n['nilai'];
$data[] = $row;
5 }$output = array("data" => $data); echo
json_encode($output);
6 }
V(G) = E – N + 2 V(G) = P + 1
=7–6+2 =2+1
=3 =3
119
V(G) = E – N + 2 V(G) = P + 1
=2–3+2 =0+1
=1 =1
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
9. Hapus data ujian
Tabel 4. 27 White Box Hapus Data Ujian
1 if($_GET['action'] == "delete"){
2 mysqli_query($mysqli, "DELETE FROM ujian WHERE
id_ujian='$_GET[id]'");
3 }else{
4 echo”tidak dapat menghapus data”;
5 }
121
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
10. Mengaktifkan ujian
Tabel 4. 28 White Box Aktifkan Ujian
1 if($_GET['action'] == "update"){
2 $cek = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM kelas_ujian WHERE
id_ujian='$_GET[ujian]' AND
id_kelas='$_GET[kelas]'"));
$aktif = ($cek['aktif']=='Y') ? 'N' : 'Y';
mysqli_query($mysqli, "UPDATE kelas_ujian set
aktif='$aktif' WHERE id_ujian='$_GET[ujian]' AND
id_kelas='$_GET[kelas]'");
3 }
7 }else{
8 echo”tidak dapat menyimpan data”;
9 }
2. Path 2 = 1-2-3-5-6-9
3. Path 3 = 1-7-8-9
12. Ubah data siswa
Tabel 4. 30 White Box Ubah Data Siswa
1 if($_GET['action'] == "update"){
2 mysqli_query($mysqli, "UPDATE siswa
SET nama = '$_POST[nama]', id_kelas =
'$_POST[kelas]' WHERE
nis='$_POST[nis]'"); echo "ok";
3 }else{
4 echo”tidak dapat menyimpan data”;
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
14. Reset login siswa
Tabel 4. 32 White Box Reset Login Siswa
1 if($_GET['action'] == "reset_login"){
2 mysqli_query($mysqli, "UPDATE siswa set status='off'
WHERE nis='$_GET[nis]'");
3 }else{
4 echo”tidak dapat mereset login”;
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
125
V(G) = E – N + 2 V(G) = P + 1
=4–4+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 4 Lingkaran
Edge (E) = 4 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-3-4
2. Path 2 = 1-2-3-2-4
16. Tambah data user
Tabel 4. 34 White Box Tambah Data User
1 if($_GET['action'] == "insert"){
126
2 $password = md5($_POST['password']);
mysqli_query($mysqli, "INSERT INTO user
SET nama = '$_POST[nama]', username =
'$_POST[username]', password =
'$password', level= '$_POST[level]'");
3 }else{
4 echo”tidak dapat menyimpan data”;
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
17. Ubah data user
Tabel 4. 35 White Box Ubah Data User
1 if($_GET['action'] == "update"){
2 $password = md5($_POST['password']);
mysqli_query($mysqli, "UPDATE user
SET nama = '$_POST[nama]', username =
'$_POST[username]', level =
'$_POST[level]' WHERE
id_user='$_POST[id]'");
3 if($password != "") mysqli_query($mysqli, "UPDATE user
SET password='$password' WHERE id_user='$_POST[id]'");
4 }else{
5 echo”Tidak dapat menyimpan data”;
6 }
127
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 6 Lingkaran
Edge (E) = 6 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-3-5
2. Path 2 = 1-4-5-6
18. Tambah data kelas
Tabel 4. 36 White Box Tambah Data Kelas
1 if($_GET['action'] == "insert"){
2 $password = md5($_POST['password']);
mysqli_query($mysqli, "INSERT INTO kelas SET kelas =
'$_POST[kelas]' ");
3 }else{
4 echo”data tidak dapat disimpan”;
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
2 $password = md5($_POST['password']);
mysqli_query($mysqli, "UPDATE kelas SET kelas=
'$_POST[kelas]' WHERE id_kelas='$_POST[id]'");
3 }else{
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
5 }
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-5
2. Path 2 = 1-3-4-5
21. Mengubah kelas ujian
Tabel 4. 39 White Box Mengubah Kelas Ujian
1 if($_GET['action'] == "update"){
2 mysqli_query($mysqli, "DELETE FROM kelas_ujian WHERE
id_ujian='$_POST[id]'"); $kelas = $_POST['kelas'];
3 foreach($kelas as $kls){
4 mysqli_query($mysqli, "INSERT INTO kelas_ujian SET
id_ujian='$_POST[id]', id_kelas='$kls'");
5 }}
130
V(G) = E – N + 2 V(G) = P + 1
=5–5+2 =1+1
=2 =2
Dari flowgraph di atas, maka diketahui:
Node (N) = 5 Lingkaran
Edge (E) = 5 Tanda Panah
Predicate (P) = 1 Kondisi Node
Pada unit tes tambah data soal terdapat 2 skenario yaitu:
1. Path 1 = 1-2-3-4-5
2. Path 2 = 1-2-3-4-3-5
22. Ujian
Tabel 4. 40 White Box Ujian
1 if($_GET['action']=="kirim_jawaban"){
3 }elseif($_GET['action']=="selesai_ujian"){
131
9 echo”Gagal”;
11 }
132
2 $i = count($array);
3 while(--$i){
4 $j = mt_rand(0,$i);
5 if($i != $j){
6 $tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return
$array;
7 }
V(G) = E – N + 2 V(G) = P + 1
=8–7+2 =2+1
133
=3 =3
Dari flowgraph di atas, maka diketahui:
Node (N) = 7 Lingkaran
Edge (E) = 8 Tanda Panah
Predicate (P) = 2 Kondisi Node
Pada unit tes tambah data soal terdapat 3 skenario yaitu:
1. Path 1 = 1-2-3-4-5-6-7
2. Path 2 = 1-2-3-4-3-5-6-3-7
3. Path 3 = 1-2-3-7
4.2 Pembahasan
Hasil evaluasi dilakukan dengan menggunakan teknik angket yang
diberikan kepada 11 guru dan 24 siswa. penilaian tersebut akan disajikan dalam
bentuk tabel dengan menggunakan perhitungan Skala Likert. Terdapat 2 aspek yang
menjadi tolak ukur yaitu desain tampilan dan fungsional.
Untuk penjelasannya sebagai berikut:
Tabel 4. 42 Bobot Nilai
Keterangan Nilai
Tidak Setuju 1
Kurang Setuju 2
Setuju 3
Sangat Setuju 4
Tabel 4. 43 Rekapitulasi Jawaban Kusioner
Kriteria Jawaban
Pertanyaan
TS KS ST SS
1 0 0 15 20
2 0 0 22 13
3 0 0 23 12
4 0 0 13 22
5 0 0 23 12
0 0 96 79
Total 175
134
Toral Point = T x Pn
Y = 4 x 35 = 140
X = 1 x 35 = 35
Maka = 100/ 4 = 25
135
Hasil (I) = 25
Tabel 4. 45 Penentuan Nilai Interval
Jawaban Nilai Interval
TS Tidak Setuju 0% - 25%
KS Kurang Setuju 25.01% - 50%
ST Setuju 50.01% - 75%
SS Sangat Setuju 75.01% - 100%
Berdasarkan hasil perhitungan kuisioner didapat hasil sebagai berikut:
5.2 Saran
Berdasarkan kesimpulan diatas diajukan beberapa saran sebagai referensi
untuk penelitian selanjutnya sebagai berikut:
1. Dalam pengacakan dapat digunakan menggunakan algoritma
pengacakan yang lain.
2. Adanya penambahan jenis soal seperti essay, menjodohkan, dan lain
sebagainya.
3. Adanya tambahan fitur pada aplikasi untuk mengelola ujian yang
berkaitan dengan soal.
DAFTAR PUSTAKA
136
Admin. (2012). Visual Arti Kata. Dipetik 03 15, 2017, dari sinonimkata.com:
http://www.sinonimkata.com/sinonim-160119-pelajaran.html
Farisi, A. (2013). Analisis Perbandingan Algoritma Fisher Yates Shuffle dan Naive
Shuffle.
Hakim, W. L. (2012). Prototyping Model.
http://id.scribd.com/doc/58298607/Pengertian-Prototype.
Ibrahim, A. (2013). Pengertian Aplikasi dan Sejarah Perkembangan Aplikasi.
Diambil kembali dari Pengertian dan Definisi:
http://pengertiandefinisi.com/pengertian-aplikasi-dan-
sejarahperkembangan-aplikasi/
Imran, S. (2014). Fungsi, Tujuan dan Manfaat Penggunaan Buku Teks Pelajaran
dalam Pembelajaran. Dipetik 03 15, 2017, dari Ilmu Pendidikan:
http://ilmu-pendidikan.net/pustaka/buku/fungsi-tujuan-dan-
manfaatpenggunaan-buku-teks-pelajaran-dalam-pembelajaran
Munir, R. (2014). Algoritma & Pemrograman dalam Bahasa Pascal dan C.
Informatika.
NN. (2013). Pengertian Tes Menurut Para Ahli. Diambil kembali dari
DuniaPelajar.com: http://www.duniapelajar.com/2013/04/03/pengertiantes-
menurut-para-ahli/
NN. (2016). Pengertian Online Menurut Para Ahli. Diambil kembali dari
Pengertianmu.com:
http://www.pengertianmu.com/2016/10/pengertianonlinemenurutparaahli.
NN. (2014). Fisher Yates Shuffle. Diambil kembali dari
http://en.algoritmy.net/article/43676/Fisher-Yates-shuffle
NN. (2012). Fisher Yates Shuffle. Diambil kembali dari Algoritmy.net:
http://www.programming-algorithms.net/article/43676/Fisher-
Yatesshuffle
Pressman, R. S. (2013). Software Engineering : A Practicioner's Approach, 7th
Edition. New York: McGraw-Hill Inc.
137
Ratih. (2013). Definisi Evaluasi Pendidikan, Penilaian (Assesment), Pengukuran
dan Tes dalam Pendidikan. Diambil kembali dari
https://ratih612.wordpress.com/2013/01/24/definisievaluasipendidikanpen
i laianassesmentpengukurandantesdalampendidikan/
Rizky, S. (2013). Konsep Dasar Rekayasa Perangkat Lunak (Software
Reengineering)/PRT. Surabay: Prestasi Pustaka Raya.
Rosa A.S., M. S. (2013). Rekayasa Perangkat Lunak: Terstruktur dan Berorientasi
Objek. Bandung: Informatika Bandung.
Simarmata, J. (2014). Rekayasa Perangkat Lunak. Yogyakarta: Andi.
Sugiyono, P. D. (2015). Metodologi Penelitian Kuantitatif Kualitatif dan R&D.
Bandung: Alfabeta.
138
BIODATA PENULIS
IDENTITAS
Nama : Dewi Admisari
Tempat / Tanggal Lahir : Karawang, 22-12-1995
Jenis Kelamin : Perempuan
Alamat : Dusun Sukagalih
RT 011/ RW 004 No.43
Desa Telukjambe
Telukjambe Timur -
Karawang
Agama : Islam
Kewarganegaraan : Indonesia
Tinggi/Berat Badan : 167cm / 50kg
No.Telp/Handphone : +62 857-7108-0083
Email : dewi.admisari@student.unsika.ac.id
PENDIDIKAN
Pendidikan Nama Sekolah Jurusan
Perguruan Tinggi : Universitas Teknik Informatika
Singaperbangsa Karawang
Sekolah Menengah Atas : SMA Negeri 1 IPA
Telukjambe Timur
Sekolah Menengah Pertama : SMP Negeri 2 Telukjambe -
Timur
Sekolah Dasar : SD Negeri IX Pinayungan -
TK : Darul Hikmah -
Lampiran 1: Wawancara
Lampiran 2: Surat Ijin Penelitian
Lampiran 3: Surat Balasan Ijin Penelitian
Lampiran 4: Hasil Evaluasi 1
Lampiran 5: Hasil Evaluasi 2
Lampiran 6: Hasil Evaluasi
Lampiran 7: Source Code Aplikasi
index.php
<?php
session_start(); ob_start();
include "library/session.php";
?>
<html>
<head>
<title>Ujian Berbasis Komputer</title>
<script type="text/javascript"
src="assets/jquery/jquery-2.0.2.min.js"></script>
<script type="text/javascript"
src="assets/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript"
src="js/main.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<?php include "menu.php"; ?>
</div>
</nav>
<section>
<div class="container">
<div class="row">
<div class="col-xs-12" id="content"></div>
</div>
</div>
</section>
<footer>
<div class="container">
<p class="text-center">Copyright © SMA
Sunan Gunung Jati Karawang. All right reserved.</p>
</div>
</footer>
</body>
</html>
login.php
<?php
session_start();
if(isset($_SESSION['nis'])) {
header('location: index.php');
}
?>
<html>
<head>
<script type="text/javascript"
src="assets/jquery/jquery-2.0.2.min.js"></script>
<script type="text/javascript">
$(function(){
$('.alert').hide();
$('.login-form').submit(function(){
$('.alert').hide();
if($('input[name=username]').val() == ""){
$('.alert').fadeIn().html('Kotak input
<b>Username</b> masih kosong!');
}else if($('input[name=password]').val() ==
""){
$('.alert').fadeIn().html('Kotak input
<b>Password</b> masih kosong!');
}else{
$.ajax({ type : "POST",
url : "login_cek.php", data :
$(this).serialize(), success :
function(data){ if(data == "ok")
window.location =
"index.php";
else $('.alert').fadeIn().html(data);
}
});
} return
false;
});
});
</script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="list-group">
<div class="list-group-item active">
<h3 class="text-center">Login Ujian</h3>
</div>
<div class="list-group-item list-group-item-
info">
<form class="login-form">
<div class="input-group"> <div
class="input-group-addon"><i class="glyphicon
glyphicon-user"></i></div> <input
type="text" name="username" placeholder="NIS"
autofocus class="form-control">
</div><br/>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
login_cek.php
<?php
session_start();
include "library/config.php";
include "library/function_antiinjection.php";
$username = antiinjeksi($_POST['username']);
$password = antiinjeksi(md5($_POST['password']));
$cekuser = mysqli_query($mysqli, "SELECT * FROM siswa
WHERE nis='$username' AND password='$password'");
$jmluser = mysqli_num_rows($cekuser); $data
= mysqli_fetch_array($cekuser); if($jmluser
> 0){
if($data['status'] == "off"){
//$_SESSION['username'] = $data['nis'];
$_SESSION['namalengkap'] = $data['nama'];
//$_SESSION['password'] = $data['password'];
$_SESSION['nis'] = $data['nis'];
$_SESSION['kelas'] = $data['id_kelas'];
$kelas_ujian = array();
$qkelas_ujian = mysqli_query($mysqli, "SELECT *
FROM kelas t1, kelas_ujian t2 WHERE
t1.id_kelas=t2.id_kelas AND
t2.id_ujian='$r[id_ujian]'"); while($rku =
mysqli_fetch_array($qkelas_ujian)){
$kelas_ujian[] = $rku['kelas'];
}
echo'<tr>
<td>'.$no.'</td>
<td>'.$r['nama_mapel'].'</td>
<td>'.implode($kelas_ujian, ", ").'</td>
<td>'.$r['jml_soal'].'</td>
<td>'.$r['waktu'].' menit</td>
<td>';
detail.php
<?php
session_start();
include "library/config.php";
if(empty($_SESSION['nis'])){
header('location: login.php');
}
$kelas =
mysqli_fetch_array(mysqli_query($mysqli, "SELECT
* FROM kelas WHERE
id_kelas='$_SESSION[kelas]'"));
$ujian = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM ujian WHERE
id_ujian='$_GET[ujian]'"));
?>
<div class="row">
<div class="col-md-12">
<?php
//Jika nilai sudah ada tampilkan tombol Sudah
Mengerjakan, jika belum ada tampilkan tombol Masuk
Ujian
$qnilai = mysqli_query($mysqli, "SELECT * FROM nilai
WHERE id_ujian='$_GET[ujian]' AND
nis='$_SESSION[nis]'");
$tnilai = mysqli_num_rows($qnilai);
$rnilai = mysqli_fetch_array($qnilai);
</div>
</div><br/>
logout.php
<?php
session_start();
include "library/config.php";
mysqli_query($mysqli, "UPDATE siswa SET status='off'
WHERE nis='$_SESSION[nis]'");
session_destroy();
echo "<script>
alert('Anda keluar dari ujian!');
window.location = 'login.php';
</script>";
?>
petunjuk.php
<?php
session_start();
if(empty($_SESSION['nis'])){
header('location: login.php');
}
?>
<h3 class="page-header"><i class="glyphicon
glyphicon-exclamation-sign"></i> Petunjuk
Mengerjakan</h3>
<div class="alert alert-info">
<p>Sebelum mengerjakan ulangan online, baca dengan
cermat petunjuk berikut:</p>
<ul>
<li>Berdoalah terlebih dahulu sebelum mengerjakan
ujian! </li>
<li>Gunakan nomor soal di sebelah kanan atau tombol
di bawah soal untuk pindah ke lain soal! </li>
<li>Nomor berwarna merah berarti belum dikerjakan,
nomor berwarna kuning berarti ragu-ragu, dan tombol
berwarna hijau berarti telah dikerjakan. </li>
<li>Jawaban yang dipilih akan berubah berwarna
hijau.
Jawaban dapat diganti dengan mengklik pilihan lain.
</li>
<li>Kerjakan soal yang paling mudah terlebih dahulu.
</li>
<li>Selesaikan semua soal sebelum waktu habis! Jika
waktu habis, maka soal otomatis tidak dapat
dikerjakan lagi.</li>
<li>Klik tombol Selesai pada nomor terakhir untuk
mengakhiri ujian. Pastikan telah mengklik tombol ini
sebelum logout. Jika meninggalkan komputer seblum
klik tombol ini, maka nilai tidak akan
diproses.</li> <li>Konsultasikan dengan
pengawas/proktor jika ada kendala teknis saat
mengerjakan ujian, atau ada soal yang tidak
dipahami. </li>
</ul>
</div>
<form onsubmit="return show_ujian(<?=
$_GET['ujian'];
?>)" class="form">
<div class="form-group">
<div class="col-md-9">
<input type="checkbox" required><b> Saya telah
membaca dan memahami petunjuk mengerjakan dengan
cermat</b>
</div>
<div class='col-md-3'>
<button type="submit" class="btn btn-warning">
<i class="glyphicon glyphicon-log-in"></i> Mulai
Mengerjakan </button>
</div>
</div>
</form>
ujian.php
<script type="text/javascript"
src="js/ujian.js"></script>
<?php
session_start();
include "library/config.php";
if(empty($_SESSION['nis'])){
header('location: login.php');
}
function Fisher_Yates_shuffle($array){
$i = count($array);
while(--$i){ $j =
mt_rand(0,$i);
if($i != $j){
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return $array;
}
//1 Update status siswa dan membuat array data
untuk dimasukkan ke tabel nilai
mysqli_query($mysqli, "UPDATE siswa SET
status='mengerjakan' WHERE nis='$_SESSION[nis]'");
$rujian = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM ujian WHERE
id_ujian='$_GET[ujian]'"));
$qsoal = mysqli_query($mysqli, "SELECT * FROM soal
WHERE id_ujian='$_GET[ujian]' LIMIT
$rujian[jml_soal]");
if(mysqli_num_rows($qsoal)==0) die('<div
class="alert alert-warning">Belum ada soal pada
ujian ini</div>');
$arr_soal = array();
$arr_jawaban = array();
while($rsoal = mysqli_fetch_array($qsoal)){
$arr_soal[] = $rsoal['id_soal'];
$arr_jawaban[] = 0;
}
$acak_soal = implode(",",
Fisher_Yates_shuffle($arr_soal));
$jawaban = implode(",", $arr_jawaban);
//2 Memasukkan data ke tabel nilai jika data
nilai belum ada
$qnilai = mysqli_query($mysqli, "SELECT * FROM nilai
WHERE nis='$_SESSION[nis]' AND
id_ujian='$_GET[ujian]'");
if(mysqli_num_rows($qnilai) < 1){
mysqli_query($mysqli, "INSERT INTO nilai SET
nis='$_SESSION[nis]', id_ujian='$_GET[ujian]',
acak_soal='$acak_soal', jawaban='$jawaban',
sisa_waktu='$rujian[waktu]:00'");
}
$sebelumnya = $no-1;
if($no != 1) echo '<a class="btn btn-primary
btnblockl"
onclick="tampil_soal('.$sebelumnya.')">Sebelumnya</a
>
';
echo '</div>
<div class="col-md-4 col-md-offset-1"><label
class="btn btn-warning btn-block"> <input
type="checkbox" autocomplete="off"
onchange="ragu_ragu('.$no.')"> Ragu-ragu
</label></div>
<div class="col-md-3 col-md-offset-1">';
$berikutnya = $no+1;
if($no != count($arr_soal)) echo '<a
class="btn btn-primary btn-block"
onclick="tampil_soal('.$berikutnya.')">
Berikutnya
</a>';
else echo '<a class="btn btn-danger btn-block"
onclick="selesai()"> Selesai </a>';
echo '</div></div></div>';
}
echo '</div></div>
<div class="col-md-4"><div
class="nomorujian">';
selesai_ujian('.$_GET['ujian'].')">
<div class="modal-header">
<h3 class="modal-title">Selesai Ujian</h3>
</div>
<div class="modal-body">
<p>Pastikan semua soal telah dikerjakan sebelum
mengklik selesai. Setelah klik selesai Anda tidak
dapat mengerjakan ujian lagi. Yakin akan
menyelesaikan ujian? </p>
<div class="chekbox-selesai"><input
type="checkbox" required> Saya yakin akan
menyelesaikan ujian.</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-danger"
onclick="return selesai_ujian('.$_GET['ujian'].')">
Selesai </button>
<button type="button" class="btn btn-warning"
data-dismiss="modal"> Batal </button>
</div>
</form></div></div></div>';
?>
ajax_ujian.php
<?php
session_start();
include "library/config.php";
if(empty($_SESSION['nis'])){
header('location: login.php');
}
//Memproses data ajax ketika memilih salah
satu jawaban
if($_GET['action']=="kirim_jawaban"){
$rnilai = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM nilai WHERE id_ujian='$_POST[ujian]'
AND nis='$_SESSION[nis]'"));
echo "ok";
}
$nilai = $jbenar/count($arr_soal)*100;
admin.js
$(function(){
$('#content').load('home.php');
$('.navigation').each(function(){
$(this).click(function(){ var
link = $(this).attr('href');
$('#content').load(link);
return false;
});
});
});
$('#content').load('view/view_soal.php?ujian='+ujian)
;
}
main.js
$(function(){
$('#content').load('home.php');
});
function show_detail(ujian){
$('#content').load('detail.php?ujian='+ujian);
}
function show_petunjuk(ujian){
$('#content').load('petunjuk.php?ujian='+ujian);
}
function show_ujian(ujian){
$('#content').load('ujian.php?ujian='+ujian);
return false;
}
function selesai_ujian(ujian){
$.ajax({
url:
"ajax_ujian.php?action=selesai_ujian",
type: "POST", data: "ujian="+ujian,
success: function(data){
if(data=="ok"){
$('#modal-selesai').modal('hide');
$('#modal-selesai').on('hidden.bs.modal', function(){
$('#content').load('home.php');
});
}else{
alert(data);
}
},
error: function(){
alert('Tidak dapat memproses nilai!');
} });
return false;
}
ujian.js
var menit, detik; var
ujian, sisa_waktu;
detik--;
if(detik<0 &&
menit>0){ menit--;
detik = 59;
}
if(menit<=0) menit = 0;
if(menit<10) menit = "0"+menit;
if(detik<10) detik = "0"+detik;
$('.menit').text(menit);
$('.detik').text(detik);
$('#sisa_waktu').val(menit+':'+detik);
ajax_kelas.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
if($_GET['action'] == "table_data"){
$query = mysqli_query($mysqli, "SELECT * FROM
kelas ORDER BY id_kelas DESC");
$data = array();
$no = 1;
while($r = mysqli_fetch_array($query)){
$row = array();
$row[] = $no;
$row[] = $r['kelas'];
$row[] = create_action($r['id_kelas']);
$data[] = $row;
$no++;
}
ajax_klsujian.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
$row = array();
$row[] = $no;
$row[] = $r['judul'];
$row[] = $label;
$row[] = create_action($r['id_ujian'], true,
false);
$data[] = $row;
$no++;
}
ajax_nilai.php
<?php
session_start();
include "../../library/config.php";
if($_GET['action'] == "table_data"){
$query = mysqli_query($mysqli, "SELECT * FROM
siswa WHERE id_kelas='$_GET[kelas]'");
$data = array();
$no = 1;
while($r = mysqli_fetch_array($query)){
$n = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM nilai WHERE nis='$r[nis]' AND
id_ujian='$_GET[ujian]'"));
$row = array();
$row[] = $no;
$row[] = $r['nis'];
$row[] = $r['nama'];
$row[] = $n['jml_benar'];
$row[] = $n['nilai'];
$data[] = $row;
}
$output = array("data" => $data);
echo json_encode($output);
}
?>
ajax_profil.php
<?php
session_start();
include "../../library/config.php";
$cek = mysqli_fetch_array(mysqli_query($mysqli,
"SELECT * FROM user WHERE
id_user='$_SESSION[id_user]'"));
if($cek['password'] != $lama){
echo "Password lama salah!";
}else{
mysqli_query($mysqli, "UPDATE user
SET password='$baru' WHERE
id_user='$_SESSION[id_user]'"); echo
"ok";
}
?>
ajax_siswa.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
$row = array();
$row[] = $no;
$row[] = $r['nis'];
$row[] = $r['nama'];
$row[] = substr(md5($r['nis']),0,5);
$row[] = $kelas['kelas'];
$row[] = $status;
$row[] = create_action($r['nis']).'<a
class="btn btn-success"
onclick="reset_login('.$r['nis'].')"><i
class="glyphicon glyphicon-off"></i></a>';
$data[] = $row;
$no++;
}
//Mengedit data
elseif($_GET['action'] == "update"){
mysqli_query($mysqli, "UPDATE siswa SET
nama = '$_POST[nama]', id_kelas =
'$_POST[kelas]'
WHERE nis='$_POST[nis]'");
echo "ok";
}
//Menghapus data
elseif($_GET['action'] == "delete"){
mysqli_query($mysqli, "DELETE FROM siswa WHERE
nis='$_GET[id]'");
}
if($extensi != ".xls"){
echo "File yang di-upload tidak berformat
.xls!'";
}else{
$path = "../upload";
move_uploaded_file($_FILES['file']['tmp_name'],
"$path/$filename");
$file = "../upload/$filename";
$cek = mysqli_num_rows(mysqli_query($mysqli,
"SELECT * FROM siswa WHERE nis='$nis'"));
if($cek > 0){
mysqli_query($mysqli, "UPDATE siswa SET
nama='$nama', id_kelas='$_POST[kelas_import]' WHERE
nis='$nis'");
}else{
$pass = md5(substr(md5($nis),0,5));
mysqli_query($mysqli, "INSERT INTO siswa SET
nis='$nis', nama='$nama',
id_kelas='$_POST[kelas_import]', password='$pass',
status='off'");
}
}
unlink($file);
echo "ok";
}
}
?>
ajax_siswa_operator.php
<?php
session_start();
include "../../library/config.php";
//Reset login
elseif($_GET['action'] == "reset_login"){
mysqli_query($mysqli, "UPDATE siswa set
status='off' WHERE nis='$_GET[nis]'");
}
?>
ajax_soal.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
$row = array();
$row[] = $no;
$row[] = $soal;
$row[] = create_action($r['id_soal']);
$data[] = $row;
$no++;
}
$output = array("data" => $data);
echo json_encode($output);
}
//Menghapus data
elseif($_GET['action'] == "delete"){
mysqli_query($mysqli, "DELETE FROM soal WHERE
id_soal='$_GET[id]'");
}
include"../../assets/excel_reader/excel_reader.php";
$filename = strtolower($_FILES['file']['name']);
$extensi = substr($filename,-4);
if($extensi != ".xls"){
echo "File yang di-upload tidak berformat
.xls!'";
}else{
$path = "../upload";
move_uploaded_file($_FILES['file']['tmp_name'],
"$path/$filename");
$file = "../upload/$filename";
$data->read($file);
$jdata = $data->rowcount($sheet_index=0);
$row = array();
$row[] = $no;
$row[] = $soal;
$row[] = create_action($r['id_soal']);
$data[] = $row;
$no++;
}
$output = array("data" => $data);
echo json_encode($output);
}
//Menghapus data
elseif($_GET['action'] == "delete"){
mysqli_query($mysqli, "DELETE FROM soal WHERE
id_soal='$_GET[id]'");
}
include"../../assets/excel_reader/excel_reader.php";
$filename =
strtolower($_FILES['file']['name']);
$extensi = substr($filename,-4);
if($extensi != ".xls"){
echo "File yang di-upload tidak berformat
.xls!'";
}else{
$path = "../upload";
move_uploaded_file($_FILES['file']['tmp_name'],
"$path/$filename");
$file = "../upload/$filename";
unlink($file);
echo "ok";
}
}
?>
ajax_ujian.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_date.php"; include
"../../library/function_view.php";
//Menambah data
elseif($_GET['action'] == "insert"){
mysqli_query($mysqli, "INSERT INTO ujian SET
judul = '$_POST[judul]',
nama_mapel = '$_POST[mapel]',
tanggal = '$_POST[tanggal]',
waktu = '$_POST[waktu]', jml_soal
= '$_POST[jml_soal]', id_user =
'$_POST[pengampu]'");
}
//Mengedit data
elseif($_GET['action'] == "update"){
mysqli_query($mysqli, "UPDATE ujian SET
judul = '$_POST[judul]', nama_mapel
= '$_POST[mapel]', tanggal =
'$_POST[tanggal]', waktu =
'$_POST[waktu]', jml_soal =
'$_POST[jml_soal]', id_user =
'$_POST[pengampu]'
WHERE id_ujian='$_POST[id]'");
}
//Menghapus data
elseif($_GET['action'] == "delete"){
mysqli_query($mysqli, "DELETE FROM ujian WHERE
id_ujian='$_GET[id]'");
}
?>
ajax_ujian_operator.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
$row = array();
$row[] = $no;
$row[] = $r['judul'];
$row[] = $label;
$data[] = $row;
$no++;
}
ajax_ujian_teacher
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_date.php";
$row = array();
$row[] = $no;
$row[] = $r['judul'];
$row[] = $r['nama_mapel'];
$row[] = tgl_indonesia($r['tanggal']);
$row[] = $r['jml_soal'];
$row[] = $btn_soal;
$row[] = $label;
$data[] = $row;
$no++;
}
ajax_user.php
<?php
session_start();
include "../../library/config.php"; include
"../../library/function_view.php";
//menampilkan data
if($_GET['action'] == "table_data"){
$query = mysqli_query($mysqli, "SELECT * FROM
user WHERE level!='admin' ORDER BY id_user DESC");
$data = array();
$no = 1;
while($r = mysqli_fetch_array($query)){
$row = array();
$row[] = $no;
$row[] = $r['nama'];
$row[] = $r['username'];
$row[] = $r['level'];
$row[] = create_action($r['id_user']);
$data[] = $row;
$no++;
}
//menambah data
elseif($_GET['action'] == "insert"){
$password = md5($_POST['password']);
mysqli_query($mysqli, "INSERT INTO user
SET nama = '$_POST[nama]',
username = '$_POST[username]',
password = '$password', level=
'$_POST[level]'");
}
//mengubah data
elseif($_GET['action'] == "update"){
$password = md5($_POST['password']);
mysqli_query($mysqli, "UPDATE user
SET nama = '$_POST[nama]',
username = '$_POST[username]',
level = '$_POST[level]' WHERE
id_user='$_POST[id]'");
if($password != "") mysqli_query($mysqli,
"UPDATE user SET password='$password' WHERE
id_user='$_POST[id]'");
}
//hapus data
elseif($_GET['action'] == "delete"){
mysqli_query($mysqli, "DELETE FROM user WHERE
id_user='$_GET[id]'");
}
?>
home.php
<?php
session_start();
?>
<div class="jumbotron">
<div class="container text-center">
<h2>Selamat Datang <b> <?=
$_SESSION['namalengkap']; ?> </b>!</h2>
<p>Anda login sebagai <b> <?=
$_SESSION['leveluser']; ?> </b></p>
</div>
</div>
index.php
<?php
ob_start();
include "../library/session_admin.php";
?>
<html>
<head>
<title>Halaman Administrator</title>
<script type="text/javascript"
src="../assets/jquery/jquery-
2.0.2.min.js"></script>
</head>
<body>
<footer>
<div class="container">
<p class="text-center">Copyright © SMA
Sunan Gunung Jati Karawang. All right reserved.</p>
</div>
</footer>
<script type="text/javascript"
src="../assets/bootstrap/js/bootstrap.min.js"></scrip
t>
<script type="text/javascript"
src="../assets/dataTables/js/jquery.dataTables.min.js
"></script>
<script type="text/javascript"
src="../assets/dataTables/js/dataTables.bootstrap.min
.js"></script>
<script type="text/javascript"
src="../assets/dataTables/extensions/buttons/js/dataT
ables.buttons.min.js"></script> <script
type="text/javascript"
src="../assets/dataTables/extensions/buttons/js/butto
ns.bootstrap.min.js"></script>
<script type="text/javascript"
src="../assets/dataTables/extensions/buttons/js/butto
ns.flash.min.js"></script> <script
type="text/javascript"
src="../assets/dataTables/extensions/buttons/js/butto
ns.html5.min.js"></script> <script
type="text/javascript"
src="../assets/dataTables/extensions/buttons/js/butto
ns.print.min.js"></script>
<script
type="text/javascript"
src="../js/admin.js"></script>
</body>
</html>
login.php
<?php
session_start();
if(isset($_SESSION['id_user'])) {
header('location: index.php');
}
?>
<html>
<head>
<title>Halaman Administrator</title>
<meta charset="utf-8" />
<meta name="viewport"
content="width=devicewidth,initial-scale=1" />
<link rel="stylesheet"
type="text/css"
href="../assets/bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css"
href="../css/login.css"/>
<script type="text/javascript"
src="../assets/jquery/jquery-2.0.2.min.js"></script>
<script type="text/javascript">
$(function(){
$('.alert').hide();
$('.login-form').submit(function(){
$('.alert').hide();
if($('input[name=username]').val() == ""){
$('.alert').fadeIn().html('Kotak input
<b>Username</b> masih kosong!');
}else if($('input[name=password]').val() ==
""){
$('.alert').fadeIn().html('Kotak input
<b>Password</b> masih kosong!');
}else{ $.ajax({
type : "POST", url :
"login_cek.php", data :
$(this).serialize(),
success : function(data){
if(data == "ok") window.location =
"index.php";
else $('.alert').fadeIn().html(data);
}
});
}
return false;
});
});
</script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-
4 col-md-offset-4">
<div class="list-group">
<div class="list-group-item active">
<h3 class="text-
center">Login Admin</h3>
</div>
<div class="list-group-item list-group-item-info">
<form class="login-form">
<div class="input-group">
<div class="input-group-addon"><i
class="glyphicon glyphicon-user"></i></div>
<input type="text" name="username"
placeholder="Username" autofocus
class="formcontrol">
</div><br/>
<div class="input-group">
<div class="input-group-addon"><i
class="glyphicon glyphicon-lock"></i></div>
<input type="password" name="password"
placeholder="Password" class="form-control">
</div><br/>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
login_cek.php
<?php
session_start();
include "../library/config.php";
include "../library/function_antiinjection.php";
$username = antiinjeksi($_POST['username']);
$password = antiinjeksi(md5($_POST['password']));
logout.php
<?php
session_start();
session_unset();
session_destroy();
echo "<script>
alert('Anda telah logout dari halaman admin');
window.location = 'login.php';
</script>";
?>
menu.php
<div class="navbar-header">
<button type="button" class="navbar-toggle
collapsed" data-toggle="collapse"
datatarget="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<?php
</ul>
<ul class="nav navbar-nav navbar-right">
<?php
echo menu_admin("view/view_profil.php", "user",
$_SESSION['namalengkap']);
echo menu_admin("logout.php", "off", "Keluar");
?>
</ul>
</div>
script_kelas.js
var save_method, table;
$('#id').val(data.id_kelas);
$('#kelas').val(data.kelas);
},
error : function(){
alert("Tidak dapat menampilkan data!");
}
});
}
$.ajax({
url : url,
type : "POST",
data : $('#modal_kelas form').serialize(),
success : function(data){
$('#modal_kelas').modal('hide');
table.ajax.reload();
},
error : function(){
alert("Tidak dapat menyimpan data!");
}
});
return false;
}
script_klsujian.js
var save_method, table;
$('#id').val(id);
var kelas = data.kelas.split(',');
for(i=0; i<kelas.length; i++){
$('[value='+kelas[i]+']').attr('checked',
true);
}
},
error : function(){
alert('Tidak dapat menampilkan data');
}
});
script_nilai.php
var table;
$(function(){
var ujian = $('#id_ujian').val();
var kelas = $('#id_kelas').val();
table = $('.table').DataTable({
"processing" : true,
"pageLength" : 50,
"paging" : false,
"ajax" : {
"url" :
"ajax/ajax_nilai.php?action=table_data&ujian="
+ ujian + "&kelas=" + kelas, "type" :
"POST"
},
dom: 'Bfrtip',
buttons: [
'copy', 'excel', 'pdf'
]
});
});
function export_nilai(){
ujian = $('#id_ujian').val();
kelas = $('#id_kelas').val();
window.open("export/excel_nilai.php?ujian=" +
ujian + "&kelas=" + kelas, "Export Nilai");
}
script_profil.js
$(function(){
$('#form-profil').submit(function(){
if($('#baru').val() != $('#ulang').val()){
alert('Password Baru tidak sama dengan Ulang
Password');
}else{
$.ajax({
url : "ajax/ajax_profil.php",
type : "POST",
data : $('#form-profil').serialize(),
success : function(data){
if(data=="ok"){
alert("Password berhasil diubah");
$('#form-profil')[0].reset();
}else{
alert(data);
}
},
error : function(){
alert("Tidak dapat mengubah data!");
}
});
}
return false;
});
});
script_siswa.js
var save_method, table;
$('#nis').val(data.nis).attr('readonly',true);
$('#nama').val(data.nama);
$('#kelas').val(data.id_kelas);
}, error :
function(){
alert("Tidak dapat menampilkan data!");
}
});
}
script_siswa_operator.js
var table;
script_soal.js
var save_method, table;
$("[name=kunci]").children("[value="+i+"]").removeCl
a ss('hidden'); }
for (i = 5; i > pilihan; i--) {
$("#pil_"+i).val('');
}
$("#kunci").val('');
});
var ujian = $('#id_ujian').val();
table = $('.table').DataTable({
"processing" : true,
"ajax" : {
"url" :
"ajax/ajax_soal.php?action=table_data&ujian="+ujian,
"type" : "POST"
}
});
});
$('#modal_soal form')[0].reset();
$('.modal-title').text('Tambah Soal');
}
$('#soal').val(data.soal);
tinymce.get('soal').setContent(data.soal);
if(data.pilihan_5)
$('#pilihan').val(5); else
if(data.pilihan_4)
$('#pilihan').val(4); else
if(data.pilihan_3)
$('#pilihan').val(3);
else if(data.pilihan_2)
$('#pilihan').val(2);
$('#pilihan').trigger("change");
$('#pil_1').val(data.pilihan_1);
$('#pil_2').val(data.pilihan_2);
$('#pil_3').val(data.pilihan_3);
$('#pil_4').val(data.pilihan_4);
$('#pil_5').val(data.pilihan_5);
tinymce.get('pil_1').setContent(data.pilihan_1);
tinymce.get('pil_2').setContent(data.pilihan_2);
tinymce.get('pil_3').setContent(data.pilihan_3);
tinymce.get('pil_4').setContent(data.pilihan_4);
tinymce.get('pil_5').setContent(data.pilihan_5);
$('#kunci').val(data.kunci);
}, error :
function(){
alert("Tidak dapat menampilkan data!");
}
});
}
//Ketika tombol simpan pada modal diklik
function save_data(){ ujian =
$('#id_ujian').val(); if(save_method ==
"add") url =
"ajax/ajax_soal.php?action=insert&ujian="+ujian;
else url = "ajax/ajax_soal.php?action=update";
$.ajax({
url : url, type
: "POST",
data : $('#modal_soal form').serialize(),
success : function(data){
if(data=="ok"){
$('#modal_soal').modal('hide');
table.ajax.reload();
}else{
alert(data);
} },
error : function(){
alert("Tidak dapat menyimpan data!");
}
}); return
false;
}
},
error : function(){
alert("Tidak dapat menghapus data!");
}
});
}
}
ujian = $('#id_ujian').val();
$.ajax({
url:
'ajax/ajax_soal.php?action=import&ujian='+ujian,
data: formdata, processData: false,
contentType: false, type: 'POST',
success: function(data) {
if(data=="ok"){
$('#modal_import').modal('hide');
table.ajax.reload();
}else{
alert(data);
}
},
error: function(data){
alert('Tidak dapat mengimport data!');
} });
return false;
}
script_soal_print.js
var table;
table = $('.table').DataTable({
"processing" : true,
"ajax" : {
"url" :
"../ajax/ajax_soal_print.php?action=table_data&u
jian="+ujian,
"type" : "POST",
},
"dom" : "rt",
"paging" : false,
"ordering": false
});
});
script_ujian.js
var save_method, table;
//Konfigurasi datepicker
$('.datepicker').datepicker({
format: 'yyyy-mm-dd',
autoclose: true
});
});
$('#id').val(data.id_ujian);
$('#judul').val(data.judul);
$('#mapel').val(data.nama_mapel);
$('#tanggal').val(data.tanggal);
$('#waktu').val(data.waktu);
$('#jml_soal').val(data.jml_soal);
$('#pengampu').val(data.id_user);
},
error : function(){
alert("Tidak dapat menampilkan data!");
}
});
}
script_ujian_operator.js
var save_method, table;
script_user.js
var save_method, table;
//Menerapkan plugin datatables
$(function(){
table = $('.table').DataTable({
"processing" : true,
script_ujian_teacher.js
var table;
$(function(){
table = $('.table').DataTable({
"processing" : true,
"ajax" : {
"url" : "ajax/ajax_ujian_teacher.php",
"type" : "POST"
}
});
});
"ajax" : {
"url" :
"ajax/ajax_user.php?action=table_data",
"type" : "POST"
}
});
});
$('#id').val(data.id_user);
$('#nama').val(data.nama);
$('#username').val(data.username);
$('#password').val(data.password);
$('#level').val(data.level);
},
error : function(){
alert("Tidak dapat menampilkan data!");
}
});
}
$.ajax({
url : url,
type : "POST",
data : $('#modal_user form').serialize(),
success : function(data){
$('#modal_user').modal('hide');
table.ajax.reload();
},
error : function(){
alert("Tidak dapat menyimpan data!");
}
});
return false;
}