Implementasi fitur siswa naik kelas


Fitur siswa naik kelas ini sebetulnya cukup simpel secara teori, tapi relatif susah jika diterapkan pada sebuah aplikasi, khususnya rancangan database atau struktur tabelnya

Saya menghabiskan berjam-jam untuk mencari tahu rancangan database yang bisa digunakan, saya rangkum semuanya disini agar nanti tidak kesulitan jika ketemu dengan studi kasus ini lagi, dan semoga bisa membantu anda juga

Setelah banyak melamun dan membayangkannya di pikiran untuk semua case sebagai pertimbangan, pada akhirnya bahan yang diperlukan cukup buku raport siswa saja, dari situ sudah terpampang jelas kebutuhan input dan output nya

Struktur tabel

Implementasi fitur siswa naik kelas harus disesuaikan dengan struktur tabel yang digunakan pada database nya

Berikut ini contoh struktur tabel yang saya buat agar bisa menerapkan fitur siswa naik kelas

Struktur tabel database nya relatif kompleks tapi sudah saya tes dan hasilnya fleksibel dan bisa digunakan pada sistem informasi sekolah atau sistem informasi akademik

Struktur tabel siswa

Tabel siswa sebagai data master siswa, atribut yang digunakan seperti informasi yang ada di halaman pertama raport siswa, atribut bisa disesuaikan dengan kebutuhan, disini contoh saya cantumkan beberapa saja

Nama tabel: siswa
NoAtributKeterangan
1idPrimary key
2nama
3jenis_kelamin
4tanggal_lahir
5tanggal_masukTanggal masuk atau tahun masuk atau angkatan
6statusAktif, Lulus, Pindah

Atribut status itu opsional, bisa digunakan jika ingin menerapkan fitur siswa pindah atau ingin menyimpan data siswa setelah lulus

Jadi saat siswa baru masuk maka statusnya otomatis Aktif, jika sudah lulus statusnya bisa di set ke Lulus, dan jika ada siswa yang pindah bisa di set ke Pindah, semua data siswa yang lulus dan pindah juga akan tersimpan

Kenapa tidak ada atribut kelas di tabel siswa?

Memang alur yang paling sederhana adalah menambahkan atribut kelas di tabel siswa, jadi nanti data siswanya bisa di ambil per kelas, untuk demo atau pembelajaran ini bisa diterapkan

Tapi tidak untuk fitur siswa naik kelas. Atribut kelas harus dipisah dari data siswa. Jika tidak, maka akan sulit untuk update datanya jika siswa tersebut naik atau pindah kelas

Struktur tabel kelas

Nama tabel: kelas
NoAtributKeterangan
1idPrimary key
2namaContoh kelas 7.1, 7.2, 8.1, dst

Master data kelas untuk menyimpan semua kelas yang ada di sekolah

Struktur tabel mata pelajaran

Nama tabel: mp
NoAtributKeterangan
1idPrimary key
2kodeContoh: MP001, MP002, dst
3nama

Tabel mp sebagai master data mata pelajaran yang digunakan untuk nilai siswa

Struktur tabel guru

Nama tabel: guru
NoAtributKeterangan
1idPrimary key
2nip
3nama
4pengguna_idForeign key

Contoh beberapa atribut yang sering digunakan, bisa dilengkapi dengan data diri guru

Master data guru untuk arsip data guru atau digunakan untuk data wali kelas, jika ingin menerapkan fitur wali kelas untuk input nilai misalnya

Atribut pengguna_id juga opsional, bisa digunakan dengan relasi dari tabel pengguna sehingga guru tersebut punya akun di data pengguna dan bisa login

Struktur tabel pengguna

Nama tabel: pengguna
NoAtributKeterangan
1idPrimary key
2nama
3username
4password
5roleAdmin, Guru

Atribut role atau level pengguna bisa dipisahkan juga ke tabel role, jadi nanti di tabel pengguna ada foreign key role_id

Jadi untuk cek role apa yang login bisa diambil dari atribut tersebut, baik menggunakan role seperti tabel diatas, atau menggunakan role_id jika membuat tabel role terpisah, alurnya sama saja

Struktur tabel tahun ajaran

Nama tabel: tahun_ajaran
NoAtributKeterangan
1idPrimary key
2namaContoh: 2023/2024

Proses kenaikan kelas siswa itu terjadi satu kali di setiap tahun ajaran baru, jadi sudah pasti harus ada master data tahun ajaran untuk menyimpan semua data tahun ajaran

Struktur tabel tahun ajaran – kelas

Nama tabel: ta_kelas
NoAtributKeterangan
1idPrimary key
2tahun_ajaran_idForeign key
3kelas_idForeign key
4guru_idForeign key, nullable

Tabel relasi antara tahun ajaran dan tabel kelas, untuk menyimpan semua data kelas per tahun ajaran

Atribut guru_id opsional, disini digunakan sebagai data wali kelas, jadi riwayat data wali kelas per tahun ajarannya bisa tersimpan

Tabel ta_kelas ini bisa digunakan atau direlasikan dengan tabel lainnya yang membutuhkan riwayat data per tahun ajarannya, misalnya daftar siswa dan nilai

Struktur tabel tahun ajaran kelas – siswa

Nama tabel: ta_siswa
NoAtributKeterangan
1idPrimary key
2ta_kelas_idForeign key
3siswa_idForeign key

Tabel ta_siswa digunakan untuk menyimpan data siswa per tahun ajaran untuk setiap kelas

Jadi data siswa untuk setiap tahun ajaran tersimpan riwayatnya dia ada di kelas mana saja selama tahun ajaran tersebut

Struktur tabel nilai siswa

Nama tabel: nilai
NoAtributKeterangan
1idPrimary key
2ta_kelas_idForeign key
3siswa_idForeign key
4mp_idForeign key
5semesterSemester 1 (ganjil) / 2 (genap)
6nilai_uts
7nilai_uas
8nilai_akhir

Tabel ini bisa menampung semua nilai siswa berdasarkan tahun ajaran dan kelas nya

Contoh untuk mengambil data nilai siswa tahun ajaran 2023/2024 kelas 7.1, bisa di select dari ta_kelas dan ambil ta_kelas_id, lalu select dari tabel ini berdasarkan ta_kelas_id

Jika ingin per siswa tinggal tambahkan siswa_id kedalam seleksinya

Contoh atribut nilai yang biasa digunakan yaitu nilai UTS, UAS dan nilai akhir, bisa disesuaikan dengan kebutuhan di sekolahnya

Contoh UI (tampilan)

Untuk UI harusnya masalah selera, tapi hanya membayangkan sebuah alur aplikasi dari struktur tabel akan cukup sulit dilakukan

Berikut ini saya tampilkan tangkapan layar dari contoh struktur tabel yang sudah dijelaskan diatas

Tampilan master data

Semua tampilan master data sama saja dalam bentuk CRUD, contoh untuk menu data siswa

Menu data siswa
Menu data siswa

Menu kelas, mata pelajaran, pengguna dan guru, semuanya seperti diatas, beda di atributnya saja

Tampilan menu tahun ajaran

Untuk tahun ajaran sedikit berbeda, karena semuanya berawal dari sini, data riwayat siswa dan nilai siswa semuanya berawal dari menu tahun ajaran

Menu data tahun ajaran
Menu data tahun ajaran

Setelah tahun ajaran baru ditambahkan, maka record baru ditambahkan juga kedalam tabel ta_kelas sebanyak jumlah kelas yang ada dengan atribut guru_id yang masih null

Selanjutnya pengguna harus menambahkan data wali kelas untuk tahun ajaran tersebut

Menu wali kelas untuk tahun ajaran terpilih
Menu wali kelas untuk tahun ajaran terpilih

Di setiap tahun ajaran, wali kelas harus ditentukan untuk masing-masing kelas, bisa dilakukan dengan tombol pilih wali kelas yang nantinya akan menampilkan daftar data guru dan setelah disimpan, tabel ta_kelas di update untuk atribut guru_id yang null tadi

Proses siswa naik kelas itu dilakukan di menu ini, siswa naik kelas itu artinya siswa tersebut dimasukkan kedalam kelas baru untuk tahun ajaran baru

Menu daftar siswa untuk tahun ajaran dan kelasnya
Menu daftar siswa untuk tahun ajaran dan kelasnya

Di menu ini, siswa bisa ditambahkan ke kelas terpilih, contoh diatas siswa dimasukkan ke kelas 7.1 untuk tahun ajaran 2022/2023

Jika tahun depan ada kenaikan kelas lagi, maka tinggal masukkan saja data siswa nya ke kelas selanjutnya, kelas 8.1 misalnya

Bagaimana jika siswanya sudah lulus, berarti tidak usah dimasukkan lagi ke kelas baru di tahun ajaran selanjutnya, di set saja status di data siswanya ke ‘Lulus’

Jadi data riwayat kelas siswa tersebut tersimpan dengan baik kedalam 3 tahun ajaran

Di menu daftar siswa ini mengambil data dari tabel ta_siswa berdasarkan ta_kelas_id yang diambil dari tahun ajaran dan kelas terpilih

Menu tambah siswa untuk kelas baru di tahun ajaran baru
Menu tambah siswa untuk kelas baru di tahun ajaran baru

Contoh diatas untuk menambahkan siswa kedalam kelas baru di tahun ajaran baru satu per satu

Opsi lainnya bisa menggunakan cara import atau pindahkan data siswa, jadi tidak usah pilih siswa satu per satu, karena akan sangat melelahkan jika harus input ratusan siswa

Contoh untuk opsi import atau pindahkan data siswa
Contoh untuk opsi import atau pindahkan data siswa

Di tombol tersebut nanti tinggal tampilkan select tahun ajaran dan select kelas lama, lalu select kelas baru, dan tombol import

Jadi prosesnya dia select dari tabel ta_siswa untuk tahun ajaran dan kelas lama, lalu di looping saja dan insert ke tabel ta_siswa untuk tahun ajaran baru dan kelas baru

Saya belum implementasikan fitur ini, tapi kira-kira logikanya seperti itu

Sampai sini harusnya fitur siswa naik kelas sudah bisa dilakukan, jadi data siswa untuk setiap tahun ajaran dan kelasnya tersimpan semua riwayatnya

Tampilan menu riwayat data siswa per tahun ajaran dan kelas
Tampilan menu riwayat data siswa per tahun ajaran dan kelas

Untuk seleksi datanya kurang lebih seperti ini, ambil tahun_ajaran_id dan kelas_id dari tabel ta_kelas sesuai dengan pilihan pengguna, nantinya bisa didapatkan ta_kelas_id nya

Selanjutnya di select dari tabel ta_siswa berdasarkan ta_kelas_id tersebut

Tampilan menu nilai siswa

Logika serupa seperti menu riwayat data siswa bisa diterapkan untuk menu nilai siswa, bedanya ada tambahan semesternya, untuk penilaian siswa per semester

Menu nilai siswa
Menu nilai siswa

Dari menu ini, data nilai siswa per tahun ajaran, per kelas dan per semester, semuanya tersimpan riwayatnya dan bisa dilihat

Keterangan nilai raport (sudah/belum) hanya informasi saja jika siswa tersebut sudah dinilai atau belum, jadi bisa ketahuan siswa mana yang belum di nilai, untuk memudahkan wali kelas atau pengguna yang akan input data nilai siswa

Menu input nilai siswa
Menu input nilai siswa

Menu ini bisa digunakan wali kelas untuk input nilai siswa untuk setiap mata pelajaran, jadi nilainya di input satu per satu sesuai dengan mata pelajarannya

Input nilai UTS dan nilai UAS siswa
Input nilai UTS dan nilai UAS siswa

Nilai akhir bisa di set readonly dan otomatis terisi jika mengisi nilai UTS dan nilai UAS

Setelah siswa dinilai, harusnya datanya bisa dicetak sebagai laporan nilai raport siswa

Menu cetak data nilai siswa tanpa menu input nilai
Menu cetak data nilai siswa tanpa menu input nilai
Cetak PDF nilai siswa
Cetak PDF nilai siswa

Kesimpulan

Dari yang sudah dijelaskan pada artikel ini fitur siswa naik kelas bisa diterapkan dengan rancangan database dan struktur yang benar

Secara garis besar, saya hanya memisahkan master data, dan membuat tabel relasi untuk kebutuhan riwayat data yang ingin disimpan

Tabel ta_kelas dan ta_siswa untuk menyimpan riwayat data siswa per tahun ajaran

Tabel ta_kelas dan nilai untuk menyimpan riwayat data nilai siswa per tahun ajaran

Sebagai informasi tambahan, aplikasi yang saya buat ini menggunakan CodeIgniter 3, database MySQL, dan Bootstrap 5 untuk tampilannya

- Iklan -

Jasa bikin web IF Koding