Pengembangan Aplikasi Ujian Online Sekolah Dasar Menggunakan Framework PHP CodeIgniter
Artikel Ilmiah
Diajukan kepada Fakultas Teknologi Informasi
Untuk memperoleh Gelar Sarjana Komputer
Oleh:
Alan Rizal Armansyah NIM: 672013204
Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
1. Pendahuluan
Dinas Perhubungan, Komunikasi, Kebudayaan dan Pariwisata (Dishubkombudpar) Kota Salatiga adalah instansi pemerintah, bertujuan untuk mengawasi dan mengurusi yang berkaitan tentang sarana dan prasarana dalam memajukan kota yang menjadi lebih baik juga mengatasi permasalahan yang ada di dalam kota tersebut. Dishubkomkebpar juga ambil peran mengatasi permasalahan pendidikan di kota salatiga. Peran yang dilakukan Dishubkomkebpar ialah program Internet Sehat bertujuan membantu sekolah dasar untuk memajukan kompetensi guru maupun siswa dalam pendidikan.
Sekolah dasar adalah sarana umum yang di sediakan oleh pemerintah dalam upaya, pengembangan diri siswa untuk mencerdaskan dan mencetak kehidupan bangsa yang bertaqwa, terampil, kreatif dan mampu menyelesaikan permasalahan di lingkungannya. Siswa sekolah dasar ditempa berbagai bidang studi yang semuanya harus mampu dikuasai semua siswa[1].
Pendidikan adalah mengubah pandangan manusia menjadi lebih baik dan juga merubah perilaku, dalam usaha mendewasakan manusia, melalui pengajaran maupun pelatihan. Penting sekali dalam pengajaran maupun pelatihan, yang dilakukan oleh guru terhadap muridnya, dapat dilihat kemampuan penguasaan materi yang diberikan melalui ujian. Ujian dilakukan untuk mengetahui sebatas mana kemampuan siswa, dalam penguasaan materi yang diberikan oleh guru selama proses belajar mengajar berlangsung. Guru mempunyai hak untuk melihat kemampuan siswa keseluruhan dalam penguasaan meteri yang diberikan. Ujian merupakan cara untuk melihat sejauh mana perkembangan siswa dan tingkat pemahaman siswa terhadap materi yang diberikan.
Berdasarkan permasalahan yang diatas, dibutuhkan aplikasi ujian online berbasis web untuk membantu siswa maupun guru dalam pelaksanaan proses ujian. Selain itu, aplikasi ujian online juga digunakan untuk mengetahui kompetensi siswa dari segi penguasaan materi.
Rumusan masalah dalam penelitan ini adalah bagaimana cara pengembangan aplikasi ujian online berbasis web guna analisis kompetensis siswa dasar, dan mempermudah proses ujian. Aplikasi ini dikembangkan dengan menggunakan teknologi framework CodeIgniter (CI). Teknologi ini merupakan salah satu framework PHP yang menggunakan konsep MVC(Model, View dan Controller). Framework CI memudahkan dalam pengembangan aplikasi ujian online, serta proses pembaruan atau maintenance.
2. Kajian Pustaka
pihak-pihak terkait dan menciptakan proses yang berkualitas, sehingga mengubah sistem ujian paper based menjadi computer based. Proses ini dapat memberikan kemudahan bagi panitia ujian, dosen hingga mahasiswa secara efektif dan efisien [2]. Penelitian terdahulu menggunakan metode iLearning untuk menyelesaikan permasalahan ujian online, sedangkan penelitian yang dilakukan saat ini menggunakan framework PHP CI.
Penelitian kedua yang berjudul “Analisis Dan Perancangan Sistem Ujian Online”. Penelitian ini dalakukan untuk meminimalisir tingkat kesalahan penyusunan soal dan koreksi hasil jawaban, serta meminimalisir tingkat kecurangan siswa dalam mengerjakan soal ujian, berdasarkan tingkat kemampuan masing-masing siswa. Analisis ini yang digunakan untuk menganalisa sistem informasi untuk dapat mengenali penyebab masalah menggunakan metode PIECES (Performance, Information, Economic, Control, Efficiency, Service). Penelitian tersebut menghasilkan proses sistem penyelenggara ujian sekolah yang efektif dan terstruktur dengan sistem pengolahan data ujian berbasi komputer [3]. Penelitian terdahulu menggunakan metode PIECES untuk menyelesaikan permasalahan ujian online, sedangkan penelitian yang dilakukan menggunakan framework PHP CI.
Framework CodeIgniter menghasilkan framework yang dapat digunakan untuk pengembangan proyek pembuatan situs web, secara lebih cepat dibandingkan dengan pembuatan web yang menggunakan PHP murni. CodeIgniter permudah developer untuk memfokuskan diri pada pembuatan situs web dengan meminimalkan pembuatan kode untuk berbagai tujuan pembuatan situs web. CodeIgniter menerapkan lingkungan pengembangan dengan metode MVC (Model View Controller). MVC memisahkan antara logika pembuatan kode dengan pembuatan template atau tampilan situs web. Penggunaan MVC membuat pembuatan sebuah proyek situs web menjadi lebih terstruktur dan lebih sederhana. Secara sederhana konsep MVC terdiri dari tiga bagian yaitu bagian Model, bagian View dan bagian Controller [4].
Secara umum alur kerja Framework CodeIgniter adalah sebagai berikut :
Gambar 1. Konsep MVC[5]
application controller akan berhubungan dengan models, libraries, helpers, plugins atau skrip lainnya. Aplication controller akan mengirimkan respon ke view untuk ditampilkan ke user. View akan disimpan di cache bila berikutnya melakukan request yang sama, sehingga mempercepat proses, setelah di cache, maka akan ditampilkan informasi kepada user[6].
3. Metode dan Perancangan Sistem
Secara umum penelitian ini terbagi menjadi 4 tahapan penelitian yaitu : 1) Identifikasi masalah dan pengumpulan data. 2) Perancangan sistem dan perancangan aplikasi. 3) Implementasi dan pengujian sistem. 4) Laporan hasil penelitian.
Tahapan pertama : Mengidentifikasi masalah yang dialami oleh sekolah dasar, dalam pengumpulan data serta menganalisis data. Menganalisis harus mengetahui permasalah yang dialami murid maupun guru. Tahap pengumpulan data, didapatkan melalui wawancara oleh Bpk. Pramono sebagai kepala divisi bidang TI salah satu karyawan Dinas Komunikasi yang mengurus program internet sehat.
Tahapan kedua : perancangan sistem dan pembuatan aplikasi. Dilakukan perancangan system yang akan dibuat sesuai data yang sudah di kumpulkan pada tahap yang pertama. Perancangan proses dalam system dilakukan dengan menggunakan Unified Modelling Language (UML), mengenai proses dalam system yang akan dibangun. Apabila tahap perancangan selesai kemudian dilakukan pengimplementasi system, yaitu membangun aplikasi sesuai dengan kebutuhan system berdasarkan perancangan system yang telah dilakukan.
Tahap ketiga : implementasi dan pengujian aplikasi. Pada tahapan ini menguji aplikasi yang sudah dibangun, serta menganalisis hasil pengujian untuk melihat apakah aplikasi yang telah dibangun sudah sesuai dengan diharapankan.
Tahapan keempat : laporan hasil penelitian. Pada tahapan terakhir ini dilakukan dokumentasi proses dari tahapan pertama hingga tahapan keempat, dalam bentuk tulisan
Proses pembuatan aplikasi dilakukan dengan cara pengkodean, sebelum melakukan pengkodean akan dilakukan perancangan sistem dalam bentuk UML.
Identifikasi Masalah dan Pengumpulan Data
Perancangan Sistem dan Pembuatan Aplikasi
Implementasi dan Pengujian Aplikasi
UML yang dibuat meliputi use case diagram, activity diagram, sequence diagram, activity diagram dan class diagram. Berikut ini dijelaskan masing-masing diagram yang telah dibuat.
Gambar 2. Use Case Diagram Ujian Online
Gambar 2 merupakan use case dari aplikasi ujian online. Aplikasi tersebut memiliki 3 aktor, pertama admin, kedua guru dan ketiga siswa. Aktor admin memiliki hak akses kelola data guru, kelola data siswa dan kelola hasil ujian. Admin dapat menambah guru/siswa, mengubah data guru/siswa, menghapus guru/siswa dan melihat hasil ujian. Aktor guru memiliki hak akses kelola data siswa, kelola data soal dan kelola hasil ujian. Guru dapat menambah siswa/soal, mengubah data siswa/soal, menghapus siswa maupun soal yang telah dibuat dan melihat hasil ujian. Aktor siswa memiliki hak akses untuk kerjakan soal yang telah dibuat oleh guru, dan melakukan pendaftar secara online.
Gambar 3. Activity Diagram
Gambar 3 merupakan activity diagram yang menggambarkan alur pengerjaan soal ujian yang dilakukan oleh siswa. Proses pertama yang dilakukan ialah login dengan username dan password. Tahap yang kedua siswa dapat memilih matapelajaran yang akan di kerjakan telebih dahulu. Tahap ketiga siswa mengerjakan soal dengan ketentuan waktu yang diberikan oleh guru. Proses keempat siswa dapat menyudahi pengerjaan soal, apabila sudah mengerjakan semua soal yang diberikan. Proses yang terakhir, siswa dapat keluar dari akun ujian online.
Gambar 4. Class Diagram Ujian Online
Gambar 5. Sequence Diagram Menambah Data Siswa
Gambar 5 merupakan sequence diagram menggambarkan proses menambah data siswa oleh admin. Proses pertama menampilkan data siswa, proses ke dua admin akan request atau meng-input untuk penambahan data siswa melalui form pengolahan data siswa. Proses ketiga system akan mengambil data yang telah di request dan data yang telah diambil oleh system akan disimpan ke dalam database. Proses keempat data yang tersimpan akan ditampilkan ke data siswa. Tahap kelima proses penambahan siswa selesai.
Gambar 6. Desain Interface Soal Ujian Online : Admin
: Admin
: datasiswa_UI
: datasiswa_UI :
mengelolaDataSiswa_Controller :
mengelolaDataSiswa_Controller
: dataSiswa_Entity : dataSiswa_Entity
1. data siswa
2. input/cek data siswa
4. view data siswa
5. selesai
Gambar 7 merupakan desain interface untuk siswa melakukan proses ujian ujian. Siswa dapat mengerjakan soal dengan memilih soal yang sudah di tentukan, dalam pengerjaan soal siswa memiliki batasan waktu pengerjaan. Jika siswa telah selesai mengerjakan siswa dapat mengklik finish dan ujian akan berakhir jika waktu habis. Siswa dapat keluar dari aplikasi online dengan mengklik bottom logout.
Gambar 7. Arsitektur Sistem Ujian Online
Gambar 8 merupakan desain arsitektur sistem ujian online. Pada Gambar 8 memiliki user sebagai pengoperasi aplikasi. Controller bertugas sebagai perantara antara model dan view, untuk mengangapi request dari user. Model disini menggambarkan struktur dari database, yang bertujuan untuk meberikan data sesuai request dari controller. View menggambarkan suatu informasi berupa tampilan kepada user, dengan kata lain view akan tampilkan segala informasi, yang di reques oleh user kepada controller dan model.
4. Hasil dan Pembahasan
Gambar 8. Index Siswa Mulai
Gambar 8 merupakan view dari tampilan utama siswa. Gambar 8 tampilan nama tes yang akan diikuti siswa. Siswa akan melihat nama tes yang akan diikuti, nama matapelajaran, jumlah soal yang akan dekerjakan dan waktu pengerjaannya, jika siswa sudah mengikuti ujian dan kembali nilai dari siswa akan keluar. Pada bottom mulai ditandakan siswa akan memulai ujian.
Gambar 9. Index Siswa Hasil
Gambar 9 merupakan view dari tampilan index siswa hasil. Gambar 9 dan Gambar 8 merupakan tampilan sama, hanya membedakan pada nilai dan aksi. Pada Gambar 9 menujukan siswa telah mengikuti ujian dan nilai akan keluar beserta bottom berubah menjadi hasil ujian.
Kode Program 1controller data ujian
Kode Program 1 merupakan bagian proses dalam menampilkan data ujian seperti pada Gambar 8. Pada baris 1-4 merupakan pengecekan status login, jika status login sebagai siswa akan memanggil index siswa. Baris ke 5-7 adalah 1. public function index(){
2. $cek = $this->session->userdata('logged_in'); 3. $status = $this->session->userdata('status'); 4. if(!empty($cek) && $status=='siswa')
{
5. $a['nama'] = $this->session->userdata('nama'); 6. $a['status'] = $this->session->userdata('status'); 7. $a['username'] = $this->session->userdata('username');
8. $a['data'] = $this->web_app_model->ikut('tb_test_guru');
9. $this->load->view('siswa/index',$a); }
10. else {
session untuk mendeklarasikan nama, status dan username dengan nama variable array $a. Baris 8 mendeklarasikan variable array untuk memanggil tb_test_guru, dari model web_app_model dengan function ikut. Pada baris 9 untuk meng-load tampilan index siswa. Baris ke 10-11 akan kembali ke lokasi web atau tampilan login, jika statusnya bukan sebagai siswa.
Kode Program 2model data ujian
Kode Program 2 merupakan kode pemanggilan data ujian dari model ke dalam database. Baris 1 mendeklarasikan pemanggilan data ujian siswa agar dapat ditampilkan berdasarkan id siswa yang mengikuti ujian. Pada baris 2-3 merupakan proses pemanggilan data ujian yang diikuti siswa, untuk memanggil isi tabel tb_test_guru dan nama dari tabel tb_mapel. Baris 4-9 memanggil isi dari tabel tb_ujian jika sudah mengikuti ujian dan akan memanggil tabel tb_soal jika belum mengikuti ujian.
Gambar 10. Tampilan soal siswa
Gambar 10 merupakan view dari tampilan soal yang akan dikerjakan siswa. Pada tampilan soal siswa dapat dilihat keterangan sisa waktu yang dikerjakan, jika waktu habis maka akan keluar dari soal, dan akan keluar hasil seperti pada Gambar 11. Bottom selesai ujian menunjukan jika siswa telah selesai mengerjakan 1. public function ikut()
{
2. return $this->db->query("SELECT tb_test_guru.*, tb_mapel.nama AS mapel,
3. (SELECT COUNT(id)
4. FROM tb_ujian WHERE tb_ujian.id_user AND tb_ujian.id_tes = tb_test_guru.id) AS sudah_ikut,
5. (SELECT nilai FROM tb_ujian
6. WHERE tb_ujian.id_user AND tb_ujian.id_tes = tb_test_guru.id) AS nilai FROM tb_test_guru
INNER JOIN tb_mapel ON tb_test_guru.id_mapel = tb_mapel.id 7. WHERE id_mapel IN
8. (SELECT id_mapel FROM tb_mapel_siswa WHERE id_siswa) 9. ORDER BY tb_test_guru.id ASC")->result();
dan ingin meng-akhiri proses ujian dapat meng-klik bottom selesai ujian. Pada Gambar 10 terdapat juga soal dan juga terdapat bottom next dan back.
Kode Program 3 controller dan model hitung nilai
Kode Program 3 merupakan controller dan model untuk menghitung nilai dari hasil pengerjaan soal ujian siswa. Pada baris 1-4 adalan mendefinisikan variable uri. Baris 5 merupakan model berfungsi untuk mengambil data dari database pada table tb_siswa. Baris 6 merupakan pendeklarasian simpan_akhir, yang akan di eksekusi jika siswa telah mengikuti ujian. Baris 7 merupakan dafinisi uttuk pemanggilan json. Baris 8-11 adalah mengdeklarasikan variable untuk menyesuaikan dengan ketepatan pemanggilan nilai yang bersangkutan. Baris 12-15 merupakan pengulangan jika variable i sama dengan 1, variable i lebih kecil dari pada jml_soal dan akan di tambah terus hingga jumlah soal yang
1. public function ikut_ujian() {
2. $uri2 = mysql_real_escape_string($this->uri->segment(2)); 3. $uri3 = mysql_real_escape_string($this->uri->segment(3)); 4. $uri4 = mysql_real_escape_string($this->uri->segment(4));
5. $a['detil_user'] = $this->web_app_model->detail_test("tb_siswa");
6. if ($uri3 == "simpan_akhir") {
7. $p = json_decode(file_get_contents('php://input'));
8. $jumlah_soal = $p->jml_soal; 9. $jumlah_benar = 0;
10. $jumlah_bobot = ""; 11. $update_ = "";
12. for ($i = 1; $i < $p->jml_soal; $i++) { 13. $_jawab = "opsi_".$i;
14. $_tidsoal = "id_soal_".$i;
15. $jawaban_ = empty($p->$_jawab) ? "" : $p->$_jawab; 16. $cek_jwb = $this->db->query("SELECT bobot, jawaban
FROM m_soal WHERE id = '".$p->$_tidsoal."'")->row(); 17. if ($cek_jwb->jawaban == $jawaban_) {
18. $jumlah_benar++;
19. $jumlah_bobot += $cek_jwb->bobot; }
20. $update_ .= "".$p->$_tidsoal.":".$jawaban_.","; }
21. $update_ = substr($update_, 0, -1);
22. $nilai = ($jumlah_benar/($jumlah_soal-1)) * 100; 23. $this->db->query("UPDATE tb_ujian SET jml_benar =
".$jumlah_benar.", nilai_bobot = ".$jumlah_bobot.", nilai = '".$nilai."', list_jawaban = '".$update_."', status = 'N' WHERE id_tes = '$uri4' AND id_user");
$a['status'] = "ok"; $this->j($a); exit; }
ditentukan. Pada baris 16 mendeklarasikan variable untuk mengambil data bobot dan jawaban dari table soal berdasarkan id. Baris 17-19 adalah melakukan pengecekan jumlah benar dan bobot soal. Baris 22 merupakan variable nilai yang mendefinisikan perhitungan dari variable jumlah soal dikurang 1 dibagi jumlah yang benar dan di kali 100. Pada baris 23 merupakan query untuk menyimpan data hasil dari jumlah benar, jumlah bobot, nilai dan list jawaban berdasarkan id tes dan id user.
Kode Program 4 helpertimer menghitung mundur
Kode Program 4 merupakan fungsi helper yang terhubung dengan controller proses ujian siswa yang menampilkan waktu mundur. Helper merupakan salah satu fitur framework CodeIgniter yang menyediakan berbagai macam fungsi tambahan dalam pengolahan data. Pada baris 1 mendeklarasikan pemanggilan menit. Baris ke 2 mendeklarasikan variable cetak, variable ini menyesuaikan dengan permintaan dari guru. Baris 3-4 melakukan pengecekkan jika nilai dari variable sama maka akan meng-eksekusi nilai dari variable cetak. Pada baris 5-8 melakukan pengecekkan lagi jika nilai variable dari variable menit lebih besar sama dengan 60 maka akan meng-eksekusi nilai dari variable cetak. Pada baris 9 akan kembali ke variable cetak.
Gambar 11. Tampilan Hasil Ujian
Pada Gambar 11 merupakan view dari tampilan hasil ujian. Gambar 11 menampilkan dari hasil ujian yang telah dilaksanakan, tampilan ini adalah output dari siswa. Tampilan ini memiliki description dari nama ujian yang di ikut, jumlah jawaban yang benar dan nilai yang didapatkan.
1. function timer($menit) { 2. $cetak = "";
3. if ($menit < 60) {
Kode Program 5 controller hasil ujian
Kode Program 5 merupakan controller hasil ujian siswa pada saat siswa selesai mengerjakan ujian online tersebut. Baris 1-4 merupakan variable definisi uri segment. Baris 5-6 merupakan pemanggilan data dari table tb_ujian dan tb_test_guru. Pada baris 7-8 melakukan pengecekan apabila isi dari hasil ujian kosong maka akan di rederect ke proses pengerjaan soal siswa. Baris 9-10 merupakan pengecekan jika hasil dari ujian telah ada, maka akan menampilkan data dari hasil ujian seperti pada Gambar 11. Pada baris 11 merupakan code yang akan meng-load tampilan hasil.
5. Kesimpulan
Berdasarkan penelitian yang telah dilakukan, dapat disimpulkan bahwa pengembangan sistem informasi akademik, berupa aplikasi ujian berbasis web memudahkan siswa maupun guru dalam proses ujian berlangsung. Sistem ini membantu guru mengurangi dalam kecurangan pada proses ujian berlangsung. Aplikasi dapat juga mengurangi kesalahan guru dalam proses penghitungan nilai siswa. Pada saat proses pengerjaan selesai siswa dapat melihat hasil nilai yang dikerjakannya. Penggunaan teknologi framework PHP CodeIgniter juga membantu developer dalam membangun dan mengembangkan website raport online ini karena keunggulan framework CodeIgniter yakni struktur pemrograman
1. public function sudah_selesai_ujian() {
2. $uri2 = mysql_real_escape_string($this->uri->segment(2)); 3. $uri3 = mysql_real_escape_string($this->uri->segment(3)); 4. $uri4 = mysql_real_escape_string($this->uri->segment(4));
5. $b = $this->db->query("SELECT nilai, jml_benar, tgl_selesai FROM tb_ujian WHERE id_tes = $uri3 AND id_user AND status = 'N'")->row();
6. $c = $this->db->query("SELECT nama_ujian, jumlah_soal FROM tb_tes_guru WHERE id_mapel AND id_guru")->row();
7. if (empty($b)) {
8. redirect('siswa/ikut_ujian/_/'.$uri3); 9. } else {
10. $a['data'] = "<div class='alert alert-info'> Anda mengikuti Ujian :
<strong style='font-size: 16px'>".$c->nama_ujian."<br/></strong>
Jumlah jawaban yang benar :
<strong style='font-size: 16px'>".$b->jml_benar."<br/></strong>
Nilai yang didapatkan :
16px'>".$b-dengan metode MVC (Model-View-Controller) serta fitur tambahan seperti fitur helper.
Pustaka
[1] Pengertian Dan Tujuan Pendidikan Di Sekolah Dasar. (2015).Dinas Pendidikan. Retrieved from Dinas Pendidikan Kabupaten Bekasi website: http://disdik.bekasikab.go.id/berita-pengertian-dan-tujuan-pendidikan-di-sekolah-dasar.html
[2] Rahardja, Untung & dll. (2013). Aplikasi Campus Learning System iOU (integrated Online Ujian) Dalam Mendukung Kegiatan iLearning Education (iDu) Pada Perguruan Tinggi. Vol.7 No.3.
[3] Farid, Muhammad Ghufron. (2012). Analisis Dan Perancangan Sistem Ujian Online Di Smp Muhammadiyah 2 Godean. Amikom website: http://repository.amikom.ac.id/files/Naskah%20Publikasi_08.11.2463.pdf [4] Silviana, Amelia Belinda & Thalib, Farid. (2013). Pengembangan Situs Web
sebagai Wadah Berbagi Jurnal Menggunakan Framework Codeigniter.
Gunadarma website:
http://library.gunadarma.ac.id/repository/view/3762751/pengembangan-situs-
web-sebagai-wadah-berbagi-jurnal-menggunakan-framework-codeigniter.html/.
[5] Purbadian, Yenda. (2016). ‘Trik Cepat Membangun Aplikasi Web dengan Framwork Codeigniter’. Yogyakarta : ANDI.