Senin, 16 Mei 2011

Aplikasi KRS Online sederhana

Udah lama ga posting tutorial, gara-gara sibuk sama kerjaan.
Tapi akhirnya ada waktu juga buat bikin tutorial di blog gue.
Okeh langsung aja, pada tutorial kali ini gue punya aplikasi sederhana, yaitu aplikasi KRS Online.
Untuk script database-nya silahkan copas aja trus langsung di run aja di phpmyadmin nya.

-- Table structure for table `matakuliah`
CREATE TABLE `matakuliah` (
`id_matkul` int(3) NOT NULL auto_increment,
`kode_matkul` varchar(10) NOT NULL,
`nama_matkul` varchar(50) NOT NULL,
`sks` int(2) NOT NULL,
UNIQUE KEY `kode` (`kode_matkul`),
PRIMARY KEY (`id_matkul`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- Insert data for table `matakuliah`
INSERT INTO `matakuliah` (`kode_matkul`, `nama_matkul`, `sks`) VALUES
('TI001', 'Pengantar Algoritma 1', 2),
('TI002', 'Analisa Numerik', 3),
('TI003', 'Pengantar Bahasa C++', 3),
('TI004', 'Pengantar Ilmu Komputer', 2),
('TI005', 'Algoritma 2', 2),
('TI006', 'Pengantar Visual Basic', 2),
('TI007', 'Kalkulus', 2),
('TI008', 'Pengantar Data Base', 2),
('TI009', 'Pemograman Berorientasi Objek', 3),
('TI010', 'Pengantar Bahasa Java', 3),
('TI011', 'Struktur Database', 2),
('TI012', 'Bahasa C++ Lanjutan', 2),
('TI013', 'Visual Basic Lanjutan', 2),
('TI014', 'Pengantar Internet', 2);


-- Table structure for table `mahasiswa`
CREATE TABLE `mahasiswa` (
`npm` char(8) NOT NULL,
`nama` varchar(30) NOT NULL,
UNIQUE KEY `npm` (`npm`)
);


-- Insert data for table `mahasiswa`
INSERT INTO `mahasiswa` (`npm`, `nama`) VALUES
('30101111', 'Achmad Zacky'),
('30101112', 'Ayu Putri Damayanti'),
('30101113', 'Edi Kusnaedi'),
('30101114', 'Firmansyah'),
('30101115', 'Herdian Ananta'),
('30101116', 'Ika Setiowati'),
('30101117', 'Reza Andreawan'),
('30101118', 'Siswo Pranoto'),
('30101119', 'Taufik Ismail'),
('30101120', 'Willy Kristianto');


-- Table structure for table `krs`
CREATE TABLE `krs` (
`nomor` int(4) NOT NULL auto_increment,
`npm` varchar(15) NOT NULL,
`kodekuliah` varchar(10) NOT NULL,
`semester` varchar(15) NOT NULL,
`tahun` int(5) NOT NULL,
PRIMARY KEY (`nomor`)
);


Setelah itu buat file index.php nya

<html>
<head>
<title>KRS Online</title>
<style>
body { margin:0; padding:0; font:16px sans-serif, Verdana; }
input, button { border:1px solid #999; }
#wrapper { background:#9900cc; width:800px; height:650px; margin:0 auto; }
#form_npm { background:#999999; width:200px; margin:0 auto; }
</style>
</head>
<body>
<div id="wrapper">
<p>&nbsp;<p>
<p>&nbsp;<p>
<p>&nbsp;<p>
<p>&nbsp;<p>
<p>&nbsp;<p>
<p>&nbsp;<p>
<div id="form_npm">
<form name="form_npm" method="post" action="inputkrs.php">
<table border="0" width="200" height="100" cellpadding="0" cellspacing="1">
<tr>
<td align="center">Masukan NPM</td>
</tr>
<tr>
<td align="center"><input type="text" maxlength="8" size="10" name="npm" style="text-align:center;"/></td>
</tr>
<tr>
<td align="center"><input type="submit" value="Submit" style="cursor:pointer;"></td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>

indexkrs




Selanjutnya buat file inputkrs.php
Dimana pada halaman ini kita akan menginput mata kuliah apa saja yang diambil oleh mahasiswa.

<html>
<head>
<title>Input KRS</title>
<style>
body { margin:0; padding:0; font-family:sans-serif; }
#wrapper { background:#9900cc; width:795px; height:650px; margin:0 auto; text-align:center; padding-top:5px; }
#tabel_matkul { background:#ffffff; width:500px; margin:0 auto; }
</style>
<?php
mysql_connect("localhost","root","");
mysql_select_db("belajar");

$npm = $_POST['npm'];
$sqlmhs = mysql_query("SELECT * FROM mahasiswa WHERE npm='$npm'");

//cek npm
if(mysql_num_rows($sqlmhs)==0){
?>
<script>
alert("NPM Anda belum terdaftar di Kampus ini");
javascript:history.back(-1);
</script>
<?php
}

$mhs = mysql_fetch_array($sqlmhs);

//melakukan query ke database
$sqlmatkul = mysql_query("SELECT * FROM matakuliah");
while($k = mysql_fetch_array($sqlmatkul)){
$kode_matkul[] = $k['kode_matkul'];
$nama_matkul[] = $k['nama_matkul'];
$sks[] = $k['sks'];
}
?>
<script>
<?php
echo "var jumlah = ".count($kode_matkul).";\n";
echo "var sks = new Array();\n";
//mengambil sks matakuliah dan memasukkan ke array javascript
for($j=0; $j<count($kode_matkul); $j++){
echo "sks['".$kode_matkul[$j]."'] = ".$sks[$j].";\n";
}
?>
function hitungtotal(){
jum = 0;
for(i=0;i<jumlah;i++){
id = "mk"+i;
td1 = "k1"+i;
td2 = "k2"+i;
td3 = "k3"+i;
td4 = "k4"+i;
if(document.getElementById(id).checked){
kode_matkul = document.getElementById(id).value
jum = jum + sks[kode_matkul];
//untuk mengubah warna latar tabel apabila diceklist
document.getElementById(td1).style.backgroundColor = "lightblue";
document.getElementById(td2).style.backgroundColor = "lightblue";
document.getElementById(td3).style.backgroundColor = "lightblue";
document.getElementById(td4).style.backgroundColor = "lightblue";
}else {
document.getElementById(td1).style.backgroundColor = "white";
document.getElementById(td2).style.backgroundColor = "white";
document.getElementById(td3).style.backgroundColor = "white";
document.getElementById(td4).style.backgroundColor = "white";
}
}
//menampilkan total jumlah SKS yang diambil
document.getElementById("jsks").value = jum;
}
</script>
</head>
<body>
<div id="wrapper">
<h1>Input KRS</h1>
<span style="color:#fff; font-weight:bold;">Nama : <?=$mhs['nama'];?></span>
<div id="tabel_matkul">
<form name="inputkrs" method="post" action="outputkrs.php">
<input type="hidden" name="npm" value="<?=$mhs['npm'];?>">
<table border="1" width="500" cellpadding="1" cellspacing="1">
<tr align="center" style="background:#9966FF">
<th height="25" width="100">Kode Mata Kuliah</th>
<th>Nama Mata Kuliah</th>
<th>SKS</th>
<th>Ambil</th>
</tr>
<?php
//menampilkan matakuliah ke dalam tabel
for($i=0; $i<count($kode_matkul); $i++){
?>
<tr>
<td id="k1<?=$i;?>"><?=$kode_matkul[$i];?></td>
<td id="k2<?=$i;?>"><?=$nama_matkul[$i];?></td>
<td id="k3<?=$i;?>" align="center"><?=$sks[$i];?></td>
<td id="k4<?=$i;?>" align="center"><input type="checkbox" name="mk[]" onclick="hitungtotal()" value="<?=$kode_matkul[$i];?>" id="mk<?=$i;?>">
</tr>
<?php
}
?>
<tr>
<td colspan="3"><b>JUMLAH YANG DIAMBIL</b></td>
<td align="center"><input type="text" name="totalsks" size="3" maxlength="3" id="jsks" readonly="readonly" style="text-align:center; color:red;"></td>
</tr>
<tr><td colspan="4" align="center"><input type="submit" value="Proses" style="cursor:pointer;"></td></tr>
</table>
</form>
</div>
</div>
</body>
</html>

inputkrs



Dan yang terakhir, menampilkan mata kuliah yg diambil oleh mahasiswa.
Script untuk outputkrs.php

<html>
<head>
<title>Output KRS</title>
<style>
body { margin:0; padding:0; font-family:sans-serif; }
#wrapper { background:#9900cc; width:795px; height:650px; margin:0 auto; text-align:center; padding-top:5px; }
#tabel_krs { background:#ffffff; width:700px; margin:0 auto; text-align:left; }
</style>
<?php
mysql_connect("localhost","root","");
mysql_select_db("belajar");

/* Start = menentukan semester ganjil/genap */
$nama_bulan = array('Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember');
$bulan = date('n') - 1;
$bulan_ini = $nama_bulan[$bulan];
$data_arr = array(0 => array("semester" => 0, "month" => "Agustus September Oktober November Desember"),
1 => array("semester" => 1, "month" => "Januari Februari Maret April Mei Juni Juli")
);
for ($i=0; $i<count($data_arr); $i++) {
if ($bulan_ini == $data_arr[$i]['month']){
$bulan_ini = 'Ganjil';
}
else {
$bulan_ini = 'Genap';
}
}
$semester = $bulan_ini;
/* End = menentukan semester ganjil/genap */

/* Start = menentukan tahun ajaran sekarang */
$tahun_ini = date('Y');
$tahun_kemarin = $tahun_ini - 1;
$tahun = $tahun_kemarin."/".$tahun_ini;
/* Start = menentukan tahun ajaran sekarang */

$npm = $_POST['npm'];
$mk = $_POST['mk'];

//cek apakah mahasiswa sudah pernah isi KRS di semester sekarang atau belum
$cek = mysql_query("SELECT * FROM krs WHERE npm='$npm' AND semester='$semester' AND tahun='$tahun'");
if(mysql_num_rows($cek) > 0){
?>
<script>
alert("No NPM <?=$npm;?> sudah pernah mengisi KRS pada semester ini");
window.close();
if (window.close){
window.location = "index.php"
}
</script>
<?php
}
else {
foreach($mk as $value){
$input = mysql_query("INSERT INTO krs (npm, kode_matkul, semester, tahun) VALUES('$npm', '$value', '$semester', '$tahun')");
}
?>
<script>
alert("Data berhasil dimasuka ke database");
</script>
<?php
}
?>
</head>
<body>
<div id="wrapper">
<h2>Berikut KRS yang anda ambil :</h2>
<div id="tabel_krs">
<table border="1" width="100%" cellpadding="1" cellspacing="1">
<tr align="center" style="background:#9966FF">
<th height="25">No.</th>
<th>Kode Mata Kuliah</th>
<th>Nama Mata Kuliah</th>
<th>Semester</th>
<th>Tahun</th>
<th>SKS</th>
</tr>
<?php
$krs = mysql_query("SELECT a.kode_matkul, a.semester, a.tahun, b.nama_matkul, b.sks FROM krs a LEFT JOIN matakuliah b ON b.kode_matkul = a.kode_matkul WHERE a.npm='$npm' AND a.semester='$semester' AND a.tahun='$tahun'");
$jum = 0;
$i = 1;
while($k = mysql_fetch_array($krs)){
?>
<tr>
<td><?=$i;?></td>
<td><?=$k['kode_matkul'];?></td>
<td><?=$k['nama_matkul'];?></td>
<td align="center"><?=$k['semester'];?></td>
<td align="center"><?=$k['tahun'];?></td>
<td align="center"><?=$k['sks'];?></td>
</tr>
<?php
$jum = $jum + $k['sks'];
$i++;
}
?>
<tr><td colspan="5"><b>JUMLAH SKS</b></td><td align="center"><b><?=$jum;?></b></td></tr>
</table>
<p>
<center><input type="button" value="Cetak" onclick="window.print();" style="cursor:pointer;" /></center>
</div>
</div>
</body>
</html>

outputkrs




Sederhanakan? http://www.smileycodes.info
Aplikasi ini masih bisa dikembangkan, seperti contoh: sudah berapa semester mahasiswa ber kuliah di kampus tersebut dan masih banyak lagi deh..
Kompleks banget klo dijelasin satu per satu..
Oia jang lupa di http://www.smileycodes.info sama comment ya gan
Selengkapnya...