Membuat Aplikasi Transkrip Nilai Sederhana (Sistem Akademik)
Transkrip Sederhana ini dibuat dengan system codeigniter. Cara kerjanya sederhana coba lihat gambar dibawah ini (apabila jalankan via localhost) :
Mantaff bukan...
Langsung aja caranya:
1. Kita buat terlebih dahulu class logic alias Controller-nya. Saya buat yang sederhana saja dengan 2 buah function, index() dan lihat_transkrip().
file source :
class Transkrip extends CI_Controller
{
public function index()
{
$page=$this->uri->segment(3);
$limit=12;
if(!$page):
$offset = 0;
else:
$offset = $page;
endif;
$tot_hal = $this->transkrip_model->baca("pw_mst_mahasiswa");
$config['base_url'] = base_url() . 'transkrip/index/';
$config['total_rows'] = $tot_hal->num_rows();
$config['per_page'] = $limit;
$config['uri_segment'] = 3;
$config['first_link'] = 'First';
$config['last_link'] = 'Last';
$config['next_link'] = 'Next';
$config['prev_link'] = 'Previous';
$this->pagination->initialize($config);
$dt["paginator"] =$this->pagination->create_links();
$dt['siswa'] = $this->transkrip_model->baca_siswa($offset,$limit);
$this->load->view('transkrip/daftar_siswa',$dt);
}
public function lihat_transkrip()
{
if ($this->uri->segment(3) === FALSE)
{
echo "<meta http-equiv='refresh' content='0; url=".base_url()."/transkrip'>";
}
else
{
$dt['nim'] = $this->uri->segment(3);
$seleksi = array('nim' => $dt['nim']);
$detail = $this->transkrip_model->baca_detail("pw_mst_mahasiswa",$seleksi);
foreach($detail->result() as $d)
{
$dt["nama_mhs"] = $d->nama_mhs;
}
$dt['transkrip'] = $this->transkrip_model->transkrip_nilai($dt['nim']);
}
$this->load->view('transkrip/lihat_transkrip',$dt);
}
}
2. Selanjutnya kita lanjutkan ke class business process alias
Model-nya. Saya tambahkan 2 tabel, yaitu tabel nilai dan tabel bobot
nilai agar perhitungan IPK menjadi lebih statis. Sebenarnya bisa saja
kalau hanya menggunakan tabel nilai, tapi query database-nya menjadi
lebih ruwet karena kita harus menggunakan fungsi CASE.
File source:
class Transkrip_Model extends CI_Model
{
public function baca($tabel)
{
$q = $this->db->get($tabel);
return $q;
}
public function baca_siswa($offset,$limit)
{
$q = $this->db->get("pw_mst_mahasiswa",$limit,$offset);
return $q;
}
public function baca_detail($tabel,$seleksi)
{
$q = $this->db->get_where($tabel,$seleksi);
return $q;
}
public function transkrip_nilai($nim){
$q = $this->db->query("
SELECT t_n.nim, m.nama_mhs, t_n.kode_mk, t_n.nama_mk, t_n.semester_ditempuh, t_n.jum_sks, t_n.grade, b.bobot, (
t_n.jum_sks * b.bobot) AS NxB FROM
(SELECT n.nim, n.kode_mk, mk.nama_mk, mk.jum_sks, n.semester_ditempuh, n.grade
FROM eva_tr_nilai as n LEFT JOIN ja_mst_mk as mk ON n.kode_mk = mk.kode_mk
WHERE n.nim = '$nim') as t_n
LEFT JOIN eva_mst_bobot as b ON b.nilai = t_n.grade
LEFT JOIN pw_mst_mahasiswa as m ON t_n.nim = m.nim
ORDER BY t_n.semester_ditempuh
");
return $q;
}
}
3. Dan terakhir, kita buat sebuah View untuk menampilkan transkrip nilai.
Jika rekan-rekan ingin memodifikasinya sedikit, bisa juga digunakan
untuk menampilkan kartu hasil studi yang dikelompokkan per semesternya.
file source:
<table border="1" width="100%" style="border-collapse: collapse;" cellpadding="4">
<tr bgcolor="#FFFFFF">
<td align="center">No</td>
<td align="center">Kode MK</td>
<td align="center">Nama MK</td>
<td align="center">Semester</td>
<td align="center">SKS</td>
<td align="center">Nilai</td>
<td align="center">Bobot</td>
<td align="center">SKS x Bobot</td>
</tr>
<?php
$totalNB=0;
$totalSKS=0;
$no=1;
foreach($transkrip->result_array() as $value)
{
echo '<tr>
<td>'. $no.'</td>
<td>'. $value['kode_mk'].'</td>
<td> '. $value['nama_mk'].'</td>
<td align="center">'.$value['semester_ditempuh'].'</td>
<td align="center">'. $value['jum_sks'].' </td>
<td align="center">'. $value['grade'].'</td>
<td align="center">'. $value['bobot'].'</td>
<td align="center">'. $value['NxB'].'</td>
</tr>';
$no++;
if($value['grade'] != 'T') {
$totalNB +=$value['NxB'];
$totalSKS+=$value['jum_sks'];
}
}
$ip = 0;
if($totalNB !=0)
$ip = round($totalNB/$totalSKS, 2);
echo '
<tr>
<td colspan="4"><strong>Jumlah SKS yang telah diselesaikan : '.$totalSKS.' SKS</strong></td>
<td colspan="4"><strong>IP Kumulatif : '.$ip.'</strong></td>
</tr>';
?>
</table>
Mungkin yang terlihat ruwet ada di bagian Model, query database-nya join kemana-mana
Itu agar proses query-nya lebih dinamis, walaupun saya tau waktu
komputasi dan beban kerja server akan meningkat jika menggunakan proses
join yang banyak. OK deh, sekian dulu postingan ini, semoga bermanffaat dech...
reff: Mas lumbung

reff: Mas lumbung
Tidak ada komentar
Posting Komentar