Breaking News

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>&nbsp;'. $value['nama_mk'].'</td>
  <td align="center">'.$value['semester_ditempuh'].'</td>
  <td align="center">'. $value['jum_sks'].'&nbsp;</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 :D 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

Tidak ada komentar