Sabtu, 20 Desember 2014

Tutorial CodeIgniter : Membuat Aplikasi Transkrip Nilai Sederhana (Sistem Akademik)

// // Leave a Comment
saya akan membagikan sedikit tutorial untuk menampilkan transkrip nilai perkuliahan. Masih berhubungan dengan tutorial sebelumnya, yaitu tentang aplikasi input kartu rencana studi. Kan gak lengkap rasanya, kalau pas KRS’an cuma bisa buka form rencana studi. Makanya saya tambahkan modul untuk melihat transkrip nilai yang diperoleh selama nangkring di bangku kuliah. Berikut tutorialnya, cekidot gan….







1. Karena masih berhubungan dengan aplikasi KRS yang saya posting kemarin, maka saya gunakan file-file framework yang kemarin. Controller, Model dan View-nya saya bedakan agar bisa dengan mudah ditambahkan oleh rekan-rekan yang mungkin sudah men-download file lengkap aplikasi KRS yang kemarin.

2. Kita buat terlebih dahulu class logic alias Controller-nya. Saya buat yang sederhana saja dengan 2 buah function, index() dan lihat_transkrip().

1 class Transkrip extends CI_Controller
2{
3    public function index()
4    {
5        $page=$this->uri->segment(3);
6        $limit=12;
7        if(!$page):
8        $offset = 0;
9        else:
10       $offset = $page;
11        endif;
12
13        $tot_hal = $this->transkrip_model->baca("pw_mst_mahasiswa");
14        $config['base_url'] = base_url() . 'transkrip/index/';
15            $config['total_rows'] = $tot_hal->num_rows();
16            $config['per_page'] = $limit;
17            $config['uri_segment'] = 3;
18            $config['first_link'] = 'First';
19            $config['last_link'] = 'Last';
20            $config['next_link'] = 'Next';
21            $config['prev_link'] = 'Previous';
22            $this->pagination->initialize($config);
23        $dt["paginator"] =$this->pagination->create_links();
24
25        $dt['siswa'] = $this->transkrip_model->baca_siswa($offset,$limit);
26        $this->load->view('transkrip/daftar_siswa',$dt);
27    }
28
29    public function lihat_transkrip()
30    {
31        if ($this->uri->segment(3) === FALSE)
32        {
33                echo "<meta http-equiv='refresh' content='0; url=".base_url()."/transkrip'>";
34        }
35        else
36        {
37                $dt['nim'] = $this->uri->segment(3);
38                $seleksi = array('nim' => $dt['nim']);
39                $detail = $this->transkrip_model->baca_detail("pw_mst_mahasiswa",$seleksi);
40                foreach($detail->result() as $d)
41                {
42                    $dt["nama_mhs"] = $d->nama_mhs;
43                }
44
                $dt['transkrip'] = $this->transkrip_model->transkrip_nilai($dt['nim']);
45        }
46        $this->load->view('transkrip/lihat_transkrip',$dt);
47    }
48}

3. 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.

.

  • 1
  • class Transkrip_Model extends CI_Model
  • 2
  • {
  • 3
  •  
  • 4
  •     public function baca($tabel)
  • 5
  •     {
  • 6
  •         $q = $this->db->get($tabel);
  • 7
  •         return $q;
  • 8
  •     }
  • 9
  •  
  • 10
  •     public function baca_siswa($offset,$limit)
  • 11
  •     {
  • 12
  •         $q = $this->db->get("pw_mst_mahasiswa",$limit,$offset);
  • 13
  •         return $q;
  • 14
  •     }
  • 15
  •  
  • 16
  •     public function baca_detail($tabel,$seleksi)
  • 17
  •     {
  • 18
  •         $q = $this->db->get_where($tabel,$seleksi);
  • 19
  •         return $q;
  • 20
  •     }
  • 21
  •  
  • 22
  •     public function transkrip_nilai($nim){
  • 23
  •         $q = $this->db->query("
  • 24
  •             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, (
  • 25
  •             t_n.jum_sks * b.bobot) AS NxB FROM
  • 26
  •             (SELECT n.nim, n.kode_mk, mk.nama_mk, mk.jum_sks, n.semester_ditempuh, n.grade
  • 27
  •             FROM eva_tr_nilai as n LEFT JOIN ja_mst_mk as mk ON n.kode_mk = mk.kode_mk
  • 28
  •             WHERE n.nim = '$nim') as t_n
  • 29
  •             LEFT JOIN eva_mst_bobot as b ON b.nilai = t_n.grade
  • 30
  •             LEFT JOIN pw_mst_mahasiswa as m ON t_n.nim = m.nim
  • 31
  •             ORDER BY t_n.semester_ditempuh
  • 32
  •             ");
  • 33
  •         return $q;
  • 34
  •     }
  • 35}
4. 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.
  • 1
  • <table border="1" width="100%" style="border-collapse: collapse;" cellpadding="4">
  • 2
  • <tr bgcolor="#FFFFFF">
  • 3
  • <td align="center">No</td>
  • 4
  • <td align="center">Kode MK</td>
  • 5
  • <td align="center">Nama MK</td>
  • 6
  • <td align="center">Semester</td>
  • 7
  • <td align="center">SKS</td>
  • 8
  • <td align="center">Nilai</td>
  • 9
  • <td align="center">Bobot</td>
  • 10
  • <td align="center">SKS x Bobot</td>
  • 11
  • </tr>
  • 12
  • <?php
  • 13
  • $totalNB=0;
  • 14
  • $totalSKS=0;
  • 15
  • $no=1;
  • 16
  •  
  • 17
  • foreach($transkrip->result_array() as $value)
  • 18
  • {
  • 19
  •     echo '<tr>
  • 20
  •         <td>'. $no.'</td>
  • 21
  •         <td>'. $value['kode_mk'].'</td>
  • 22
  •         <td>&nbsp;'. $value['nama_mk'].'</td>
  • 23
  •         <td align="center">'.$value['semester_ditempuh'].'</td>
  • 24
  •         <td align="center">'. $value['jum_sks'].'&nbsp;</td>
  • 25
  •         <td align="center">'. $value['grade'].'</td>
  • 26
  •         <td align="center">'. $value['bobot'].'</td>
  • 27
  •         <td align="center">'. $value['NxB'].'</td>
  • 28
  •     </tr>';
  • 29
  •  
  • 30
  •     $no++;
  • 31
  •     if($value['grade'] != 'T') {
  • 32
  •         $totalNB +=$value['NxB'];
  • 33
  •         $totalSKS+=$value['jum_sks'];
  • 34
  •     }
  • 35
  • }
  • 36
  • $ip = 0;
  • 37
  • if($totalNB !=0)
  • 38
  •     $ip = round($totalNB/$totalSKS, 2);
  • 39
  • echo '
  • 40
  •         <tr>
  • 41
  •         <td colspan="4"><strong>Jumlah SKS yang telah diselesaikan : '.$totalSKS.' SKS</strong></td>
  • 42
  •         <td colspan="4"><strong>IP Kumulatif : '.$ip.'</strong></td>
  • 43
  •         </tr>';
  • 44
  • ?>
  • 45
  • </table>
5. Silahkan di jalankan via localhost dan hasilnya akan seperti di bawah ini :



0 komentar:

Posting Komentar