Final Project PBKK kelas A - Senin


SOAL

Cari paper yang berhubungan dengan aktivitas pembuatan perangkat lunak/ aplikasi menggunakan framework.

Berdasarkan referensi yang sudah didapatkan,
  1. Buatlah deskribsi studi kasus aplikasi ditinjau dari MVC nya(individu)
  2. Buatlah rancangan umum arsitektur atau fitur yang ada dalam aplikasi  (individu)
  3. Rancang desain databasenya  (individu)
  4. Buat desain front end  (individu)
  5. Tentukan Control yang akan mengandle logika back end.  (individu)
  6. Implementasikan rancangan yang sudah dibuat  menggunakan Framework NET, CI ataupun Framework Google (pilih salah satu - bisa kelompok maks 3)
  7. Buat video presentasinya, upload di youtube, dan didokumentasikan di blog.
  8. Pengumpulan terakhir 16 Des 2023 pukul 08.00 , di dokumentasi di blog masing-masing, dan mengisi lembar monitoring dengan judul "Final Project Pemrograman Berbasis Kerangka Kerja". Tidak lupa membuat koment link pekerjaan di halaman post ini.


JAWABAN

Di Final Project kali ini saya menggunakan referensi jurnal berjudul "IMPLEMENTASI MODEL-VIEW-CONTROLLER (MVC) PADA UJIAN ONLINE MELALUI PENERAPAN FRAMEWORK CODEIGNITER"

Link jurnal dapat diakses di Jurnal Referensi


1. Studi Kasus MVC

Di dunia pendidikan yang terus beradaptasi dengan kemajuan teknologi, telah terjadi pergeseran signifikan dari ujian konvensional berbasis kertas ke ujian terkomputerisasi. Hal ini tercermin dalam penggunaan sistem ujian online yang dibangun dengan framework CodeIgniter, mengadopsi arsitektur Model, View, Controller (MVC). Arsitektur ini memungkinkan pengembangan aplikasi web yang cepat dan efisien, mengubah cara guru dan siswa melaksanakan ujian.

MVC adalah pola desain yang memisahkan aplikasi menjadi tiga komponen utama: Model, View, dan Controller, masing-masing dengan tanggung jawab khusus. Dalam konteks aplikasi ujian online, peranannya adalah sebagai berikut:

    a. Model: Komponen ini bertanggung jawab atas data, logika, dan aturan bisnis aplikasi. Dalam aplikasi ujian online, Model mengelola data yang berkaitan dengan pertanyaan ujian, jawaban siswa, skor, dan informasi pengguna seperti data siswa dan guru. Model juga menangani logika penilaian, seperti menghitung skor, dan memastikan integritas data seperti validasi jawaban dan pengelolaan waktu ujian.

    b. View: View mengatur bagaimana data ditampilkan kepada pengguna. Dalam kasus sistem ujian online, ini mencakup antarmuka pengguna di mana siswa mengakses dan menjawab pertanyaan ujian, serta tampilan yang memungkinkan guru membuat dan mengelola pertanyaan ujian. View juga bertanggung jawab untuk presentasi hasil ujian, seperti menampilkan skor dan umpan balik kepada siswa.

    c. Controller: Controller bertindak sebagai penghubung antara Model dan View. Ia memproses input dari pengguna (baik siswa maupun guru), mengirimkan data tersebut ke Model untuk pemrosesan atau pengambilan data yang relevan, dan kemudian mengirimkan data tersebut kembali ke View untuk ditampilkan. Dalam konteks ujian online, Controller mengelola interaksi seperti penerimaan jawaban siswa, permintaan data ujian oleh guru, dan pengaturan parameter ujian.

Dalam pengembangan sistem ujian online, penggunaan MVC tidak hanya meningkatkan efisiensi dalam pengembangan tetapi juga memastikan bahwa sistem mudah diadaptasi dan diperbarui sesuai dengan kebutuhan pendidikan yang berubah-ubah. Ini menjadikan MVC pilihan yang tepat untuk sistem yang memerlukan fleksibilitas tinggi dan kemudahan dalam pengelolaan.


2. Arsitektur dan Fitur

    a. Arsitektur Berbasis Web Database Server

Web Server: Bertanggung jawab untuk menangani permintaan (request) dari pengguna. Ini adalah titik pertama di mana permintaan pengguna diterima dan diproses.

Database Server: Menyimpan semua data terkait aplikasi, seperti data soal ujian, data siswa, data administrasi, dan hasil ujian. Semua interaksi dengan data disimpan dan dikelola di sini.

    b. Teknologi dan Bahasa Pemrograman

CodeIgniter Framework: Digunakan untuk mengimplementasikan pola MVC, memudahkan pembangunan dan pemeliharaan aplikasi.

PHP (Hypertext Preprocessor): Bahasa pemrograman utama yang digunakan untuk mengembangkan logika pada sisi server.

MySQL: Sebagai Database Management System (DBMS) untuk penyimpanan dan pengelolaan data.

    c. Akses Pengguna

Pengguna (Siswa dan Administrator): Dapat mengakses sistem ujian online melalui browser di PC atau notebook yang terhubung ke internet melalui modem atau Wi-Fi. Siswa menggunakan sistem untuk melaksanakan ujian, sementara administrator menggunakannya untuk mengelola soal ujian dan mengakses data hasil ujian.

    d. Proses Operasional

Saat pengguna membuat permintaan (misalnya memulai ujian atau melihat hasil), permintaan tersebut dikirim ke web server.

Web server memproses permintaan tersebut dengan mengakses database melalui Model, mengambil atau memperbarui data yang diperlukan.

Setelah diproses, hasil dikirim kembali ke pengguna melalui View, yang menampilkan informasi atau feedback yang relevan di browser pengguna.


3. Rancangan Database

1.) Tabel Pengguna (`pengguna`):

Tabel ini dirancang untuk menyimpan informasi akun pengguna yang mengakses sistem, termasuk siswa, guru, dan administrator.

`username`: Pengenal unik untuk pengguna, digunakan untuk tujuan login.

`password`: Kata sandi terenkripsi untuk akun pengguna.

`nama_pengguna`: Nama lengkap pengguna.

`telp_pengguna`: Nomor telepon kontak pengguna.

`email_pengguna`: Alamat email pengguna.

`level_pengguna`: Peran atau level pengguna dalam sistem (misalnya admin, siswa, guru), yang menentukan izin dan akses dalam aplikasi.


2.) Tabel Kelas (`kelas`):

Tabel ini berisi informasi tentang kelas tempat para siswa dibagi.

`id_kelas`: Primary key untuk tabel kelas, pengenal unik untuk setiap kelas.

`nama_kelas`: Nama atau judul kelas.

`kelas`: Tahun kelas.

`p_keahlian`: Bidang yang terkait keahlian khusus pada SMK

`keterangan`: Bidang teks untuk detail atau deskripsi tambahan tentang kelas.


3.) Tabel Mata Pelajaran (`mata_pelajaran`):

Tabel ini untuk mata pelajaran atau kursus yang ditawarkan.

`id_mapel`: Primary key untuk tabel mata pelajaran, pengenal unik untuk setiap mata pelajaran.

`nama_mapel`: Nama mata pelajaran.

`kelas`: Level kelas

`p_keahlian`: Keahlian program


4.) Tabel Siswa (`siswa`):

Tabel ini berisi detail dari siswa.

`nis`: Nomor identifikasi siswa, berfungsi sebagai primary key.

`id_kelas`: Foreign key yang menghubungkan siswa dengan kelas mereka.

`nama_siswa`: Nama lengkap siswa.

`pwd_siswa`: Kata sandi siswa untuk akses sistem.

`email_siswa`: Alamat email siswa.

`telp_siswa`: Nomor telepon siswa.


5.) Tabel Kategori Soal (`kategori_soal`):

Tabel ini mengategorikan pertanyaan ke dalam berbagai topik atau kategori.

`id_kategori`: Primary key untuk tabel kategori soal, pengenal unik untuk setiap kategori.

`id_mapel`: Foreign key yang menghubungkan kategori dengan mata pelajaran tertentu.

`nama_kategori`: Nama kategori atau topik.


6.) Tabel Soal (`soal`):

Tabel ini menyimpan pertanyaan-pertanyaan yang digunakan dalam ujian

`id_soal`: Primary key untuk tabel pertanyaan, pengenal unik untuk setiap pertanyaan.

`id_kategori`: Foreign key yang mengasosiasikan pertanyaan dengan kategorinya.

`soal`: Teks dari pertanyaan itu sendiri.

`gambar_soal`: autan ke file gambar jika pertanyaan mencakup elemen visual.

`pilihan_a` hingga `pilihan_e`: Teks untuk opsi pilihan ganda pertanyaan.

`kunci`: Kunci atau jawaban untuk pertanyaan.

`aktif`: Penanda untuk menunjukkan apakah pertanyaan aktif atau harus digunakan dalam ujian.


7. ) Tabel Ujian (`ujian`):

Tabel ini berisi informasi tentang ujian atau tes individu.

`id_ujian`: Primary key untuk tabel ujian, pengenal unik untuk setiap ujian.

`id_kelas`: Foreign key yang menghubungkan ujian dengan kelas tertentu.

`sumber_soal`: sumber pertanyaan

`deskripsi`: Deskripsi dari ujian.

`tgl_mulai_ujian`: Tanggal ketika ujian dijadwalkan untuk dimulai.

`waktu`: Waktu atau durasi ujian.

`jum_soal`: Jumlah pertanyaan dalam ujian.

`jangka_waktu_ujian`: Lama ujian

`status_ujian`: Status terkini dari ujian (misalnya aktif, selesai, terjadwal).

`tipe_ujian`: Tipe atau kategori dari ujian.

`dibuat_oleh`: Pembuat ujian, username guru.


8.)  Tabel Ujian Siswa (`ujian_siswa`):

Tabel ini mencatat partisipasi siswa dalam ujian.

`id_ujiansiswa`: Primary key untuk tabel ujian siswa

`id_ujian`: Foreign key yang menghubungkan ke ujian spesifik yang telah diambil siswa.

`nis`: Foreign key yang menghubungkan ke siswa yang mengambil ujian.

`skor`: Skor yang diperoleh siswa dalam ujian.

`status`: Status dari percobaan ujian siswa (misalnya lulus, gagal, tertunda).

`tgl_ujian`: Tanggal ketika siswa mengambil ujian.

`wkt_ujian`: waktu ketika siswa mulai atau menyelesaikan ujian.

`keterangan`: Catatan atau komentar tambahan tentang percobaan ujian siswa.


Kode database :

-- Tabel Pengguna
CREATE TABLE pengguna (
    username VARCHAR(30) PRIMARY KEY,
    password VARCHAR(50) NOT NULL,
    nama_pengguna VARCHAR(40),
    telp_pengguna VARCHAR(12),
    email_pengguna VARCHAR(30),
    level_pengguna VARCHAR(10)
);

-- Tabel Kelas
CREATE TABLE kelas (
    id_kelas INT(6) PRIMARY KEY AUTO_INCREMENT,
    nama_kelas VARCHAR(40),
    kelas INT(2),
    p_keahlian VARCHAR(3),
    keterangan TEXT
);

-- Tabel Mata Pelajaran
CREATE TABLE mata_pelajaran (
    id_mapel INT(5) PRIMARY KEY AUTO_INCREMENT,
    nama_mapel VARCHAR(40),
    kelas INT(2),
    p_keahlian VARCHAR(3)
);

-- Tabel Siswa
CREATE TABLE siswa (
    nis INT(5) PRIMARY KEY,
    id_kelas INT(6),
    nama_siswa VARCHAR(40),
    pwd_siswa VARCHAR(50),
    email_siswa VARCHAR(30),
    telp_siswa VARCHAR(12),
    FOREIGN KEY (id_kelas) REFERENCES kelas(id_kelas)
);

-- Tabel Kategori Soal
CREATE TABLE kategori_soal (
    id_kategori INT(5) PRIMARY KEY AUTO_INCREMENT,
    id_mapel INT(5),
    nama_kategori VARCHAR(35),
    FOREIGN KEY (id_mapel) REFERENCES mata_pelajaran(id_mapel)
);

-- Tabel Soal
CREATE TABLE soal (
    id_soal INT(10) PRIMARY KEY AUTO_INCREMENT,
    id_kategori INT(5),
    soal TEXT,
    gambar_soal VARCHAR(70),
    pilihan_a TEXT,
    pilihan_b TEXT,
    pilihan_c TEXT,
    pilihan_d TEXT,
    pilihan_e TEXT,
    kunci VARCHAR(2),
    aktif VARCHAR(2),
    FOREIGN KEY (id_kategori) REFERENCES kategori_soal(id_kategori)
);

-- Tabel Ujian
CREATE TABLE ujian (
    id_ujian INT(10) PRIMARY KEY AUTO_INCREMENT,
    id_kelas INT(6),
    sumber_soal INT(5),
    deskripsi VARCHAR(40),
    tgl_mulai_ujian DATE,
    waktu VARCHAR(8),
    jum_soal INT(5),
    jangka_waktu_ujian DATE,
    status_ujian VARCHAR(30),
    tipe_ujian VARCHAR(10),
    dibuat_oleh VARCHAR(30),
    FOREIGN KEY (id_kelas) REFERENCES kelas(id_kelas)
);

-- Tabel Ujian Siswa
CREATE TABLE ujian_siswa (
    id_ujiansiswa INT(10) PRIMARY KEY AUTO_INCREMENT,
    id_ujian INT(10),
    nis INT(5),
    skor INT(10),
    status VARCHAR(15),
    tgl_ujian DATE,
    wkt_ujian INT,
    keterangan VARCHAR(45),
    FOREIGN KEY (id_ujian) REFERENCES ujian(id_ujian),
    FOREIGN KEY (nis) REFERENCES siswa(nis)
);


4. Desain Front-End dan Fitur

Halaman login administrator adalah halaman yang ditampilkan pada saat halaman administrator diakses pertama kali oleh pengguna (pengguna belum melakukan login pada sistem). Pada halaman ini, pengguna harus mengisi username dan password yang sudah terdaftar dalam database system.
 


Halaman utama administrator adalah halaman utama ketika pengguna berhasil login ke dalam sistem. Pada halaman ini, terdapat menu yang terdapat pada sisi kiri halaman. Ada 2 jenis administrator, yakni halaman administrator yang diakses oleh pengguna dengan level admin dan level guru.

Halaman login siswa adalah halaman yang ditampilkan pada saat halaman siswa diakses pertama kali oleh siswa (siswa belum melakukan login pada sistem). Pada halaman ini, siswa harus mengisi Nomor Induk Siswa (NIS) dan password yang sudah terdaftar dalam database sistem


Halaman informasi ujian adalah halaman yang menampilkan informasi ujian yang telah dibuat kepada siswa. Siswa dapat mengklik tombol lihat info ujian untuk melihat informasi detail ujian.

Halaman soal ujian adalah halaman yang menampilkan soal-soal ujian. Halaman ini diciptakan otomatis sesuai jenis ujian (exam/quiz) dan soal-soal yang disajikan kepada siswa ditampilkan secara acak (random).  




5. Control Back-End

Dalam konteks arsitektur MVC (Model-View-Controller) yang digunakan oleh framework CodeIgniter, Controller bertanggung jawab untuk mengatur logika backend aplikasi

1.)  AuthController

Mengelola proses autentikasi pengguna, termasuk login, logout, dan registrasi.

- Metode:

- login(): Mengautentikasi pengguna.

- logout(): Melogout pengguna dari sistem.

- register(): Mendaftarkan pengguna baru.

- resetPassword(): Menangani permintaan reset password.

2.) KelasController

Mengelola data terkait kelas, termasuk pembuatan, pembaruan, dan penghapusan kelas.

- Metode:

- index(): Menampilkan daftar kelas.

- create(): Membuat kelas baru.

- edit(): Mengedit kelas yang ada.

- delete(): Menghapus kelas.

3.) MataPelajaranController

Mengelola informasi tentang mata pelajaran yang ditawarkan.

- Metode:

- index(): Menampilkan daftar mata pelajaran.

- create(): Menambah mata pelajaran baru.

- edit(): Mengedit mata pelajaran yang ada.

- delete(): Menghapus mata pelajaran.

4.)  SiswaController

Mengelola informasi siswa, termasuk profil dan data akademis.

- Metode:

- index(): Menampilkan daftar siswa.

- profile(): Menampilkan dan mengedit profil siswa.

- performance(): Menampilkan kinerja akademis siswa.

5.)  SoalController

Mengelola bank soal, termasuk pembuatan, pembaruan, dan penghapusan soal.

- Metode:

- index(): Menampilkan daftar soal.

- create(): Membuat soal baru.

- edit(): Mengedit soal yang ada.

- delete(): Menghapus soal.

6.)  UjianController

Mengelola penyelenggaraan ujian, termasuk pengaturan dan pelaksanaan ujian.

- Metode:

- index(): Menampilkan daftar ujian yang tersedia atau yang akan datang.

- create(): Mengatur ujian baru.

- edit(): Mengedit ujian yang ada.

- start()`:Memulai ujian untuk siswa.

- grade(): Menilai jawaban ujian.

- results(): Menampilkan hasil ujian.

7.)  UjianSiswaController

Mengelola interaksi siswa dengan ujian, termasuk pendaftaran dan review hasil.

- Metode:

- register(): Siswa mendaftar untuk ujian.

- takeExam(): Siswa mengambil ujian.

- submitExam(): Siswa mengirimkan jawaban ujian.

- review(): Meninjau jawaban dan hasil ujian.


6. Implementasi

Untuk implementasi pada Final Project kami membentuk kelompok yang beranggotakan

Kelompok 16 :

Tsabita Putri Ramadhany    5025211130

Rizky Alifiyah Rahma         5025211208

Widian Sasi Disertasiani     5025211024


Kami mengimplementasikan hasil project dari Widian Sasi dengan tema "Aplikasi Chat Real-Time".

Blogspot Widian Sasi = Blogspot Chat Real-Time

Repository GitHub =Repository Chat Real-Time



7. Video Presentasi

Untuk video presentasi dapat diakses di Demo Kelompok 16






Komentar

Postingan populer dari blog ini

Tugas 1 PPL - A

Tugas 10 PPL - A

Tugas 10 PPB - B