• Tidak ada hasil yang ditemukan

BAB IV Implementasi Sistem

4.4 User Interface

4.4.1 User Interface untuk user

1. Halaman index

Gambar 4.1 merupakan gambar user interface untuk halaman index.

Sintaks :

Ocilogon ( username, password, [database] ) Script koneksi yang digunakan :

$user = "bjt"; $pass = "wiwi";

$conn = ocilogon($user, $pass, 'BangunJs') or die("Tidak Terhubung ke Oracle");

Gambar 4.1 Gambar index user.

Halaman index ini berisikan antara lain sekilas tentang perusahaan, berita terkini, fasilitas yang ada pada kapal serta adanya fasilitas untuk registrasi dan login. Untuk dapat melakukan proses pemesananan maka pemesanan harus melakukan registrasi untuk mendapatkan username dan password yang akan digunakan untuk melakukan proses login. Pada form login, pemesanan akan memasukkan User Name dan password. Sistem akan mengecek apakah User Name dan password tersebut valid atau tidak. Jika tidak valid maka sistem akan mengeluarkan peringatan bahwa login tidak valid lalu mengembalikannya ke halaman ini lagi. Jika valid maka akan dilanjutkan ke halaman home pemesanan. Proses pengecekan dapat dilihat pada perintah berikut

2. Halaman Registrasi user

Gambar 4.2 merupakan gambar form registrasi user.

Gambar 4.2 Gambar form registrasi user.

Halaman ini disediakan bagi user yang belum mempunyai username dan password. Sistem akan melakukan pengecekan terhadap data yang dimasukan.

<?

$conn = ocilogon('bjt','wiwi','BangunJs') or die("Tidak Terhubung ke Oracle"); $query="select user_id,password from pemesan where user_id='$username' and password='$password'";

$parsed = ociparse($conn, $query); ociexecute($parsed); $nrows = ocifetch($parsed); if($nrows==true) { session_start(); session_register('username'); session_register('password'); header("location:home.php"); } else {

echo "<script>alert('LOGIN SALAH')</script>";

echo"<meta http-equiv=\"refresh\" content=\"0; url=index.php\">"; }

Jika data yang dimasukan khususnya No KTP dan username sudah digunakan maka sistem akan mengeluarkan pesan error bahwa data registrasi gagal dimasukan karena username atau No KTP sudah digunakan. Namun jika data yang dimasukan valid, maka sistem akan menampilkan pesan bahwa proses registrasi sukses dan user sudah dapat melakukan pemesanan dengan terlebih dahulu melakukan proses login. Data- data yang dimasukan, akan digunakan untuk proses pemesananan dan pembelian tiket. Proses registrasi dapat dilihat pada perintah berikut ini :

Sedangkan untuk menyimpan data kedalam database, digunakan stored procedure berikut :

$query=ociparse($conn,"begin

registrasi('$user_id','$passp','$nama','$jk','$no_ktp','$alamat','$no_tlp','$email','$kota',:pesan error); end;");

$pesanerror='';

OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror')</script>"); echo("<script>document.location=\"registrasi.php\"</script>"); } else {

echo("<script>alert('Registrasi Sukses !!!!')</script>");

echo("<script>document.location=\"konfirmasi.php\"</script>"); }

}

else {

echo("<script>alert('Data Registrasi Gagal !!!!')</script>");

echo("<script>document.location=\"registrasi.php\"</script>"); }

3. Halaman Lihat Jadwal Kapal

Gambar 4.3 Gambar proses pencarian jadwal keberangkatan kapal.

Gambar 4.3 Gambar cari jadwal keberangkatan kapal.

Halaman ini digunakan untuk melihat jadwal keberangkatan kapal berdasarkan tujuan dan range waktu yang dimasukan. Sistem akan Create or replace procedure registrasi(

userid in pemesan.user_id%type, namap IN pemesan.nama%type, passp IN pemesan.password%type, alamatp IN pemesan.alamat%type, telponp IN pemesan.no_tlp%type, emailp IN pemesan.email%type, kotap IN pemesan.kota%type, jkp IN pemesan.jk%type,

noktp IN pemesan.no_ktp%type,pesanerror out varchar2) as

cek integer; begin

select count(*) into cek from pemesan where user_id=userid or no_ktp=noktp; if cek > 0 then

rollback;

pesanerror:=' Username atau No KTP sudah digunakan'; else

insert into pemesan(user_id,nama,password,alamat,no_tlp,email,kota, jk, tanggal_registrasi,no_ktp)

values(userid,namap,passp,alamatp,telponp,emailp,kotap,jkp,sysdate,noktp); commit;

end if;

maka sistem akan menampilkan pesan error data tidak ditemukan, namun jika data ditemukan maka sistem akan menampilkan data jadwal keberangkatan kapal sesuai dengan tujuan dan range waktu yang dimasukan. Output yang dihasilkan untuk data yang ditemukan ditunjukan pada gambar 4.4 .

Gambar 4.4 Gambar data jadwal kapal yang ditemukan.

Proses pencarian data keberangkatan kapal berdasarkan tujuan dan renge waktu seperti pada gambar 4.4 dapat dilihat pada perintah berikut ini :

include "connect.php";

$tgl1=$tanggal1.'-'.$bulan1.'-'.$tahun1; $tgl2=$tanggal2.'-'.$bulan2.'-'.$tahun2; $parsed= ociparse ($conn,"select distinct

kapal.nama,dermaga.kota,kapal.route,tiket.tgl_brkt,tiket.jam_brkt,tiket.kd_tiket from dermaga,tiket,kapal,det_kapal where

(dermaga.kd_dermaga=det_kapal.kd_dermaga) and

(kapal.kd_kpl=det_kapal.kd_kpl) and (kapal.kd_kpl=tiket.kd_kpl) and

(dermaga.kd_dermaga='$kd_dermaga') and (tgl_brkt BETWEEN '$tgl1' and '$tgl2') order by nama");

ociexecute($parsed);

4. Halaman Lupa Password

Gambar 4.5 Gambar Halaman lupa password

if($nrows >0) {

echo"<br><br><br>";

echo"<table width=\"550\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"> <th>No</th> <th>Nama Kapal</th> <th>Route</th> <th width=\"150\">TGL/JAM BRKT </th><tr>"; $a=1; $no=0;

for ($i = 0; $i < $nrows; $i++ ) { if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++; } else { echo"<tr bgcolor=\"\" >"; $a--; } $no++; echo("<td>$no</td>"); echo ("<td>".$results['NAMA'][$i]."</td>"); echo ("<td>".$results['ROUTE'][$i]."</td>"); echo("<td>".$results['TGL_BRKT'][$i]."/".$results['JAM_BRKT'][$i]."</td>"); echo("</tr>"); } echo"</table>"; } else { echo"<br><br><br>";

echo"<div class='poling' align='center'>";

echo"<b> TIDAK ADA KAPAL YANG BERANGKAT DENGAN RANGE WAKTU TSB</b><br>";

echo"[<a href=javascript:history.go(-1)>Kembali</a>]"; echo"</div'>";

} }

Gambar 4.5 Gambar halaman Lupa password

Fasilitas lupa password diberikan untuk membantu user yang lupa akan password yang dipakai. User diharuskan memasukan username dan email yang dimiliki. Sistem akan mengecek apakah username dan email yang dimasukan valid atau tidak. Jika valid sistem akan menampilkan password yang diminta dan jika tiket sistem akan menampilkan pesan error bahwa username atau email tidak valid. Proses untuk menampilkan fasilitas lupa password sesuai dengan gambar 4.5 dapat dilihat pada perintah berikut ini :

<? include "connect.php";

if(!empty($_POST['usern']) and !empty($_POST['emailn'])) {

$parsed = ociparse($conn,"select * from pemesan where user_id='$usern' and email='$emailn'");

ociexecute($parsed);

$nrows=ocifetchstatement($parsed,$results);//mengambil hasil dari ekseksui if($nrows >0)

{

echo"<table border=\"0\"align =\"center\" class='text1'> <tr>

<td>Username dan Password and adalah .</td><tr>"; echo"</table>";echo"<br>";

for ($i = 0; $i < $nrows; $i++ ) {

echo"<table width='295' border='0' class='boxtext'> <tr>

5. Halaman Home setelah Login

Gambar 4.6 Gambar halaman home user setelah login.

<th height='30' colspan='3' class='text1' scope='row' bgcolor='#66CC99'>KONFIRMASI LuPa Password </th> </tr>

<tr>

<th width='118' height='30' scope='row'>username anda </th> <td width='13'><div align='center'><strong>:</strong></div></td> <td width='148'>

<input name='user' type='text' value=".$results['USER_ID'][$i]." disabled='disabled'>

</td> </tr> <tr>

<th height='44' scope='row'>password anda </th> <td><div align='center'><strong>:</strong></div> </td>

<td>

<input name='pass' type='text' value=".$results['PASSWORD'][$i]." disabled='disabled'>

</td> </tr><tr>

<th height='20' colspan='3' scope='row'>Lakukan Pemesanan? <a href='index.php'>oke</a> </th> </tr>"; echo "</table>"; } } else {

echo"<b> username atau email anda tidak valid</b><br>"; echo"[<a href=konfirmpassword.php>Kembali</a>]"; }

} else {

echo"<b> username atau email anda kosong</b><br><br>"; echo"[<a href=konfirmpassword.php>Kembali</a>]";

}> ?>

Gambar 4.6 Gambar halaman home user setelah login.

Halaman ini ditampilkan setelah pemesan sukses melakukan proses Login. pemesan akan diberikan beberapa pilihan seperti lihat data pesanan bagi yang sudah pernah melakukan pemesanan, ubah data diri, dan proses pemesanan. Pada Halaman ini juga akan ditampilkan informasi fasilitas kelas yang dimiliki oleh kapal Pelni. Proses untuk menampilkan informasi fasilitas kelas sesuai dengan gambar 4.6 dapat dilihat pada perintah berikut ini :

<?

$query = "select kd_kls,nama_kelas,fasilitas,gambar from kelas order by kd_kls";

$parsed = ociparse($conn, $query); ociexecute($parsed); //eksekusi

$nrows = ocifetchstatement($parsed, $results); //mengambil hasil dari eksekusi echo"<table width=\"400\" border=\"0\" align =\"center\" class='style12'>"; for ($i = 0; $i < $nrows; $i++ )

{ $rowkls=$results['KD_KLS'][$i]; $rownama=$results['NAMA_KELAS'][$i]; $rowfas=$results['FASILITAS'][$i]; $gambar=$results['GAMBAR'][$i];

6. Halaman Pemesanan

Gambar 4.7 Gambar halaman pilih kapal dan tanggal keberangkatan.

Gambar 4.7 Gambar halaman pilih kapal dan tanggal keberangkatan

Pada awal proses pemesanan, akan ditampilkan tujuan kapal. Setelah pemesan memilih tujuan yang diinginkan selanjutnya akan ditampilkan detail data kapal dan tanggal keberangkatan kapal. Pemesan harus memilih salah satu tanggal yang tersedia ( Dapat dilihat pada gambar 4.7 ). Setelah itu akan ditampilkan form yang meminta pemesanan memasukan kelas yang diinginkan dan jumlah tiket ( Dapat dilihat pada gambar 4.8 ). Sistem akan melakukan pengecekan terhadap jumlah tiket yang dimasukan. Jika lebih dari 5 maka akan muncul pesan error jumlah pesanan melebihi ( Max

echo("<td><img src=\"image1/$gambar\" width='150'></a></td>"); echo("<td>$rownama<BR>$rowfas</td>");

echo("</tr>"); }

echo"</table>"; ?>

pesan 5 tiket ). Jika jumlah pesanan yang dimasukan sesuai maka akan ditampilkan detail pesanan yaitu dengan total harga yang harus dibayar pemesan.( gambar 4.9 ).

Proses untuk menampilkan informasi kapal dan tanggal keberangkatan sesuai dengan gambar 4.7 dapat dilihat pada perintah berikut ini :

Form yang digunakan untuk memasukan jumlah pesanan tiket dapat dilihat pada gambar 4.8.

$parsed= ociparse($conn,"select distinct

kapal.nama,dermaga.kota,tiket.tgl_brkt,tiket.jam_brkt,kapal.route,tiket.kd_tiket,derma ga.kd_dermaga from kapal,tiket,det_kapal,dermaga where

(kapal.kd_kpl=tiket.kd_kpl)and (dermaga.kd_dermaga=det_kapal.kd_dermaga) and (kapal.kd_kpl=det_kapal.kd_kpl) and (tgl_brkt > (sysdate+2) )and

dermaga.kd_dermaga like '$kd_dermaga' order by kapal.nama"); ociexecute($parsed);

echo"<table border=\"0\"align =\"center\" class='poling'>

<tr><tr><th>Silakan Pilih Tanggal Keberangkatan Kapal sesuai keinginan anda :</th></tr>";

echo"</table>";echo"<br>"; echo"<table width=\"600\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"><th>No</th><th width=\"90\">NAMA KAPAL</th>

<th >TUJUAN</th> <th width=\"70\">TGL BRKT</th><th>JAM BRKT</th> <th width=\"80\" align=\"center\">RUTE KAPAL</th> <th >ACTION </th><tr>"; $a=1; $no=0; while(ocifetchinto($parsed,$results)) { if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++; } else {

echo"<tr bgcolor=\"\" >"; $a--; } $no++; echo("<td>$no</td>"); echo("<td>$results[0]</td>"); echo("<td>$results[1]</a></td>"); echo("<td>$results[2]</td>"); echo("<td>$results[3]</td>"); echo("<td>$results[4]</td>");

echo("<td><a href=pesan.php?kd=$results[5]&kd1=$results[6]>PILIH </a></td>"); echo("</tr>");

} echo"</table>"; }

Gambar 4.8 Gambar Form pemesanan

Gambar 4.9 adalah halaman detail pemesanan dengan menampilkan total harga yang harus dibayar pemesan.

Gambar 4.9 Gambar detail pemesanan

Store procedure yang digunakan untuk menyimpan data pemesanan sesuai dengan gambar 4.9 dapat dilihat pada perintah berikut ini :

Create or replace procedure simpanpesanan ( user IN pemesanan.user_id%type, jumlah_dws IN pemesanan.jd%type, jumlah_ank IN pemesanan.ja%type, jumlah_by IN pemesanan.jb%type, total_hrg IN pemesanan.total%type, tiket IN pemesanan.kd_tiket%type, kapal IN pemesanan.kd_dkapal%type, kls IN pemesanan.kelas%type,

pesanerror out varchar2 ) as hasil integer; stokakhir integer; kap det_kapal.kapasitas%type; jumlahstok det_tiket.stok%type; counter integer ; counter1 integer ; BEGIN

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

update det_tiket set stok=stok where kd_tiket=tiket and kd_dkapal in (select kd_dkapal from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls and kelas.kd_kls=kls);

select stok into jumlahstok from det_tiket where kd_tiket=tiket and kd_dkapal =kapal;

counter := 0; LOOP

counter := counter + 1;

EXIT WHEN counter = 10000000; END LOOP;

stokakhir:=jumlahstok+( jumlah_dws+ jumlah_ank+ jumlah_by); update det_tiket set stok=stokakhir where kd_tiket=tiket and kd_dkapal in (select kd_dkapal from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls and kelas.kd_kls=kls);

select kapasitas into kap from det_kapal where kd_dkapal=kapal; hasil:=(kap - stokakhir);

if(hasil<0) then rollback;

pesanerror:='Data Pesanan gagal'; else

insert into pemesanan(no_psn,user_id, jd, ja, jb, total,

tgl,kd_tiket,kd_dkapal,jumlah,kelas) values(psn.nextval,user, jumlah_dws,

jumlah_ank, jumlah_by, total_hrg, sysdate, tiket ,kapal,(jumlah_dws+ jumlah_ank+ jumlah_by),kls);

commit;

end if; -- akhiri perulangan pertama exception

when others then rollback;

pesanerror:='Data digunakan transaksi Lain. Lakukan Pemesanan Ulang '; end;

Proses penginputan data pemesanan dapat dilihat pada perintah sebagai berikut :

7. Halaman Pembatalan Pesanan

Gambar 4.10 Gambar halaman pembatalan Pesanan.

<?

session_start(); include "connect.php";

if(!session_is_registered('username')) {

echo "<script>alert('ANDA TIDAK BERHAK MASUK KE SINI. !!!! LOGIN DULU !!!')</script>";

echo"<meta http-equiv=\"refresh\" content=\"0; url=index.php\">"; } else { $query=ociparse($conn,"begin simpanpesanan('$username',$jd,$ja,$jb,$total,'$kd_tiket','$kd_dkapal','$kd_kls',:pesa nerror); end;"); $pesanerror='';

OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"reservasi.php\"</script>"); } else {

echo("<script>alert('data telah disimpan !!!!')</script>");

echo("<script>document.location=\"batal.php\"</script>"); }

} else {

echo("<script>alert('data gagal disimpan !!!!')</script>"); echo("<script>document.location=\"reservasi.php\"</script>"); }

Gambar 4.10 Gambar halaman pembatalan Pesanan.

Halaman ini akan ditampilkan jika proses pemesanan sukses. Data yang ditampilkan yaitu detail pesanan yang telah dilakukan. Jika pemesan ingin membatalkan pesanan maka pemesan tinggal memilih data pesanan yang ingin dibatalkan. Store procedure yang digunakan untuk membatalkan pesanan sesuai dengan gambar 4.10 dapat dilihat pada peritantah berikut ini :

Create or replace procedure hapus(

no in pemesanan.no_psn%type,tkt in pemesanan.kd_tiket%type,kapal in pemesanan.kd_dkapal%type,jum in pemesanan.jumlah%type,kls in pemesanan.kelas%type,pesanerror out varchar2 )

as cek1 integer; cek integer; ss det_tiket.stok%type; counter integer; BEGIN

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

update det_tiket set stok=stok where kd_tiket=tkt and kd_dkapal in (select kd_dkapal from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls and kelas.kd_kls=kls);

select stok into cek from det_tiket where kd_tiket=tkt and kd_dkapal=kapal; counter := 0;

Proses penghapusan data pesanan dapat dilihat pada perintah sebagai berikut :

Procedure yang digunakan untuk membatalkan tiket:

<?

include "connect.php";

$query = ociparse($conn,"begin

hapus('$no','$kd','$kpl','$jum','$kls',:pesanerror);end;"); $pesanerror='';

OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); } else {

echo("<script>alert('data sukses dihapus !!!!')</script>"); }

echo("<script>document.location=\"batal.php\"</script>"); }

else {

echo("<script>alert('data gagag dihapus !!!!')</script>"); echo("<script>document.location=\"batal.php\"</script>"); }

LOOP

counter := counter + 1;

EXIT WHEN counter = 10000000; END LOOP;

update det_tiket set stok=cek-jum where kd_tiket=tkt and kd_dkapal in (select kd_dkapal from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls and kelas.kd_kls=kls);

select count(no_psn) into cek1 from pemesanan where no_psn=no and kd_tiket=tkt and jumlah=jum and kelas=kls;

if cek1 > 0 then

delete pemesanan where no_psn=no and kd_tiket=tkt and jumlah=jum and kelas=kls;

else rollback;

pesanerror:='Data Pesanan Gagal Dihapus'; end if;

exception

when others then rollback;

pesanerror:='Data digunakan transaksi Lain. Lakukan Pembatalan Kembali'; end;

8. Halaman Ubah data pemesan

Gambar 4.11 Gambar ubah data pemesan.

Gambar 4.11 Ubah Data pemesan .

Fasilitas mengubah data pemesan ini disedikan bagi pemesan untuk melakukan perubahan terhadap data dirinya. Berikut ini adalah stored procedure yang digunakan untuk mengubah data pemesan sesuai dengan gambar 4.11.

Proses untuk mengubah data pemesan dapat dilihat pada perintah sebagai berikut :

Create or replace ubahdatauser(userid in pemesan.user_id%type, namap IN pemesan.nama%type,

passp IN pemesan.password%type, alamatp IN pemesan.alamat%type, telponp IN pemesan.no_tlp%type, emailp IN pemesan.email%type,

noktp IN pemesan.no_ktp%type,pesanerror out varchar2 )

as

cek integer; begin

select count(no_ktp) into cek from pemesan where no_ktp=noktp; if cek>0 then

rollback;

pesanerror:=' NO KTP sudah Digunakan'; else update pemesanan set

(nama=namap,password=passp,alamat=alamatp,no_tlp=telponp,

email=emailp,tanggal_registrasi=sysdate,no_ktp=noktp where user_id=userid; commit; end if;

end;

4.4.2 User Interface untuk Admin

Dokumen terkait