penerapan manajemen transaksi reservasi tiket …
Post on 02-Nov-2021
10 Views
Preview:
TRANSCRIPT
1
PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET KAPAL LAUT BERBASIS WEB
( Studi Kasus : PT. Bangun Jasa Terpadu )
SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik Jurusan Teknik Informatika
Disusun Oleh:
W. I Etta Farneubun
025314072
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS SANATA DHARMA
YOGYAKARTA 2007
2
THE APPLICATION OF TRANSACTION MANAGEMENT ON
WEB BASED SHIP TICKET RESERVATION ( Case Study : PT Bangun Jasa Terpadu )
SKRIPSI
Proposed To Fulfil One Of The Requirements
To Obtain Bachelor Degree In Information Technology
By :
W. I ETTA FARNEUBUN
025314072
INFORMATION TECHNOLOGY
FACULTY OF TECHNIQUE SANATA DHARMA UNIVERSITY
YOGYAKARTA 2007
i
3
4
5
PERNYATAAN
Dengan ini saya sebagai penulis tugas akhir menyatakan dengan
sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian
karya orang lain, kecuali pemikiran, metode atau hasil penelitian orang lain yang
diambil disebutkan dengan jelas sebagai acuan.
Yogyakarta, Mei 2007
W. I ETTA FARNEUBUN
Penulis
iv
6
HALAMAN PERSEMBAHAN
Karya ini kupersembahkan untuk :
...
Yesus-ku yang selalu memberikan aku kekuatan disaat aku putus asa dan
selalu memberikan aku kebahagiaan disaat aku sedih,
...
Ibuku dan Alm Bapak yang telah membesarkan dan mendidik aku dengan
cinta dan kelembutan,
...
Kakak dan kemenakan-kemenakanku yang selalu menyayangi dan menghibur
aku,
...
Dan seluruh teman-temanku yang memberikan kehangatan dalam hari-hariku.
v
7
HALAMAN MOTTO
Ada waktu untuk Menangis,
Ada Waktu untuk Tertawa ;
Ada Waktu untuk Meratap,
Ada waktu untuk Menari.
Ia Membuat Sesuatu Indah
Pada Waktunya
( Pengkhotbah 3:4,11a)
Faith Makes all thing possible
Hope makes all things work
Love makes all things beautiful
vi
8
ABSTRAKSI
Sistem informasi reservasi tiket kapal laut berbasis web merupakan
sistem informasi yang melayani pemesanan tiket secara online untuk keberangkan
dari dermaga Tanjung Perak Surabaya dengan tujuan beberapa dermaga terbesar
di indonesia.
Sistem ini terdiri dari 2 pemakai yaitu user dan admin. Adapun berbagai
fasilitas yang tersedia bagi user yaitu dapat melakukan pemesanan tiket dengan
terlebih dahulu melakukan proses registrasi. Selain itu user juga dapat melakukan
proses perubahan data pribadi, melihat data pesanan, membatalkan pesanan,
melihat informasi yang berhubungan dengan kapal seperti jadwal keberangkatan
kapal, harga tiket , fasilitas yang disediakan kapal, fasilitas kelas, dll. Sedangkan
untuk admin dapat mengolah data kapal, kelas, dermaga, harga tiket maupun
untuk menangani proses pembelian dan penentuan nomor tempat.
Sistem ini menerapkan teknologi manajemen transaksi dengan level
isolasi serializable untuk menangani masalah multi user pada proses pemesanan
dan pembatalan tiket. Sistem ini dikembangkan dengan menggunakan bahasa
pemrograman PHP dan database Oracle 10g.
vii
9
ABSTRACT
Information system for web based ship ticket reservation is an information
system which provides online ticket reservation service for departure from
Tanjung Perak Harbor Surabaya to different largest harbors destination in
Indonesia.
This system consisted of 2 wearer that is user and admin. The facilities
available to users are they can reserve ticket after doing registration process. In
addition, users can change information in their personal identity, see their
reservation data, cancel reservation, search for information such as ship departure
schedule, ticket fare, facility provided by the ships, class facility, etc. Differently,
Admin can manage data of the ship, class, harbor, ticket fare and also can manage
the process of ticket purchasing and assign the seat number.
This system applies transaction management technology with
serializable isolation level in order to cope with the problems of multi users in
ticket reservation process and ticket cancellation. This system is developed by
using PHP programming language and oracle 10g database.
viii
10
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa
yang telah melimpahkan berkat-Nya sehingga penulis dapat menyelesaikan
Laporan Tugas Akhir ini. Penulisan tugas akhir ini ditujukan untuk memenuhi
salah satu syarat memperoleh gelar Sarjana Teknik Jurusan Teknik Informatika.
Terselesaikannya penulisan tugas akhir ini tidak lepas dari peran serta
beberapa pihak, baik secara langsung maupun secara tidak langsung. Oleh karena
itu, penulis ingin menyampaikan terima kasih kepada pihak-pihak yang telah ikut
membantu dalam penulisan tugas akhir ini, baik dalam memberikan bimbingan,
petunjuk, kerjasama, kritikan, maupun saran antara lain kepada:
1. Bapak JB. Budi Darmawan, S.T., M.Sc., selaku Dosen Pembimbing , yang
telah banyak membantu terutama dalam memberikan bimbingan, dukungan,
dan penyediaan sarana yang mendukung, sehingga penulis dapat
menyelesaikan laporan tugas akhir ini. Terima kasih banyak pak, atas
semuanya.
2. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Ketua Jurusan Teknik
Informatika Universitas Sanata Dharma dan salah satu dosen penguji.
3. Bapak Wisnu dan Bapak Yudi, selaku Dosen Penguji TA.
4. Seluruh Dosen Universitas Sanata Dharma, khususnya Dosen yang mengajar
di Teknik Informatika, yang telah memberikan dan mengajarkan banyak ilmu
kepada penulis.
ix
11
5. Bapak Bele, makasih atas segala bantuan yang diberikan.
6. Ibuku tercinta yang telah memberikan semua yang dimiliki kepada penulis,
tanpa mengarapkan imbalan apapun. Terima kasih Tuhan karena telah
memberikan ibu yang luar biasa.
7. Ka Ida dan Bu Abas, Ka Robi dan ka Eda, ka nona and spesial buat ka didi,
makasih buat semangat, bantuan dan cinta dari kalian. Aku bangga menjadi
adik kalian.
8. Kemenakan-kemenakanku : Sri, Jorf, Mozat, ade Nona, Afo kalian selalu jadi
penghibur buat bong. Kapan maen ke jogja ?
9. Agnes, Regis, Anna dan Ferdi, makasih buat perhatian selama ini and buat
Agnes makasih sudah mau antar jemput bong.
10. Om Engel keluarga, Om Pla keluarga makasih buat bantuan selama ini. Buat
mama Du, makasih buat kasih sayang tanpa lelah yang mama Du berikan,
mama Tu, Ebenis, Eb Jayapura makasih buat nasihatnya. Sr Yohana, makasih
sudah jadi penyemangat waktu ujian, yang akur sama Sr Stefani ya?.
11. My Best Friends : Borne ( makasih udah jadi saudara and sabahat buat aku ),
Pipiet , Butet, Banang. Makasih buat persahabatan yang kalian berikan.
Sampai kapanpun kalian adalah sahabat terbaikku. Tanpa kalian Jogja terasa
sepi. He...he...he..
12. Melin, Tri, Dian. Bersama kalian hari-hari kuliah yang membosankan terasa
mengasikan. Ayo semangat kalian pasti bisa.
13. Teman-teman TI’02 : Tata, Dani, Nine, Nita, Brigit, Ita, Handie ( makasih
atas bantuannya ), Afu, Andika, Radit, Mario, Budi ( makasih udah buatain
x
12
aku header. Top bgt), Lijun ( makasih udah kasih semangat buat aku untuk
maju and yakini aku bahwa aku bisa.Makasih ya???? ), Dadit, Tono, Santo,
Pristo, Tere, Yohana dan semuanya ya.
14. Teman-teman TI’01 : Mas Sigit, ka Anan, ka Vindi, Mas Tio, Mb Nita, Mb
Agnes, Xtin ( makasih udah jadi teman yang super gila buat aku. Hari-hari
dikost terasa menyenangkan ), Ka dami ( makasih udah ajarin aku transaction
support.), and special thanks untuk Sunarko,S.T. yang telah membantu penulis
dalam pembuatan program.
15. Teman-teman Kost : Ka Sri ( kapan foto-foto and karoeke lagi??? ), Mb Uci,
Mb Tiar, Dani, Ida and spesial buat ka Vina ( Ka, makasih atas printernya ya.
he..he..he. Ka Pin, semangat ya ).
16. Teman-teman dari Tual : Sri, Ka Eri, Ena, Ani, Dona and adik, Ati Esomar,
Enjelo, Ka Jimie, Ka Ivo dan semua anak-anak Babarsari. Kapan pesta-pesta
lagi?
17. Dan seluruh pihak yang telah ikut ambil bagian dalam penyelesaian laporan
tugas akhir ini yang tidak dapat penulis sebutkan satu-persatu.
Seperti kata pepatah, “Tak ada gading yang tak retak”, maka penulis
menyadari segala keterbatasan dalam menyelesaikan laporan tugas akhir ini. Oleh
karena itu, penulis ingin menyampaikan mohon maaf apabila terdapat kesalahan
dan kekurangan. Untuk itu, penulis mengharapkan kritik dan saran yang
membangun dari seluruh pihak yang membutuhkan laporan tugas akhir ini.
Semoga laporan tugas akhir ini dapat memberikan manfaat bagi siapa saja yang
xi
13
membutuhkannya. Atas segala perhatiannya dan kerjasamanya, penulis ucapkan
terima kasih.
Yogyakarta, Mei 2007
Wiwi Farneubun
( Penulis )
xii
14
DAFTAR ISI
Halaman Judul..........................................................................................................i
Halaman Persetujuan……………………………………………………………...ii
Halaman Pengesahan……………………………………………………………..iii
Halaman Pernyataan……………………………………………………………...iv
Halaman Persembahan…………………………………………………………….v
Halaman Motto……………………………………………………………...........vi
Abstraksi................................................................................................................vii
Abstract.................................................................................................................viii
Kata Pengantar………………………....................................................................ix
Daftar isi...............................................................................................................xiii
Daftar Gambar.....................................................................................................xvii
Daftat Tabel...........................................................................................................xxi
BAB I Pendahuluan ………………………………………………………………1
1.1 Latar Belakang Masalah………………………………………………...1
1.2 Rumusan Masalah..……………………………………………………...2
1.3 Batasan Masalah.……………………………….……………………….2
1.4 Tujuan Penelitian..………………………………………………………2
1.5 Metodologi Penelitian .……………………………………………….…4
1.6 Sistematika Penulisan…………………………………………………....5
BAB II Landasan Teori……………………………………………………………7
2.1 Manajemen Transaksi ......………………………………………………7
xiii
15
2.2 Kebutuhan Concurency Control Dan Level Isolasi Dalam Oracle .........9
2.3 Sistem……….....……………………………………………………....13
2.3.1 Konsep Dasar Sistem............................................................13
2.3.2 Karakteristik Sistem .......... .................................................13
2.4 Informasi ...…………………………………………………………….15
2.4.1 Konsep Dasar Informasi........................................................15
2.4.2 Siklus Informasi................. .................................................15
2.4.3 Kualitas Informasi........................................................... .....16
2.4.4 Nilai Informasi .....................................................................16
2.5 Metodologi Pengembangan Sistem…….………………………………16
2.5.1 Use Case Diagram…….........................................................16
2.6 ERD (Entity Relationship Diagram) ......................................................18
2.7 DFD (Data Flow Diagram) ...................................................................22
2.8 Word Wide Web ....................................................................................24
2.9 HTML ( Hypertext Mrkup Language ) ..................................................25
2.10 PHP ( Personal Home Page ) ...............................................................26
2.10.1 Hubungan PHP dan HTML.................................................27
2.10.2 Kelebihan PHP................. .................................................29
2.11 Pemrograman SQL di Oracle ...............................................................30
2.12 Pemrograman PL/SQL..........................................................................33
2.12.1 Store Procedure...................................................................36
2.12.2 Package............................ .................................................37
2.12.3 Sequence....................................................................... .....38
xiv
16
2.12.4 Fungsi-Fungsi PHP ............................................................38
BAB III Analisa dan Perancangan Sistem.............................................................40
3.1 Analisis Sistem........................................................................................40
3.1.1 Gambaran Umum Sistem Yang Lama...........................................40
3.1.2 Gambaran Umum Sistem Yang Baru............................................41
3.1.2.1 Ruang Lingkup Sistem......................................................43
3.1.3 Requirement Analysis...................................................................44
3.1.3.1 Use Case Diagram............................................................44
3.1.4 Logical Design..............................................................................45
3.1.4.1 Process Modeling..............................................................45
3.1.4.1.1 Context Diagram......................................................46
3.1.4.1.2 Diagram Berjenjang.................................................48
3.1.4.1.3 Overview Diagram...................................................49
3.1.4.2 Data Modeling..................................................................67
3.2 Disain Sistem ........................................................................................68
3.2.1 Disain Database.........................................................................68
3.2.2 Relasi Antar Tabel.....................................................................72
3.3 Disain Penanganan Masalah Multi User ..............................................72
3.3.1 Kemungkinan Masalah Yang Bisa Terjadi ..............................72
3.3.2 Penanganan Terhadap Masalah Yang Terjadi .........................74
3.4 Disain Teknologi Yang Digunakan ..............................................................75
BAB IV Implementasi Sistem ............................………...................................76
4.1 Karakteristik Sistem.............................................................................76
xv
17
4.2 Kebutuhan Sistem..................................................................................76
4.3 Setting Koneksi PHP ke Oracle Database.............................................77
4.4 User Interface.........................................................................................78
4.4.1 User Interface untuk user..... ......................................................78
4.4.2 User Interface untuk Admin........................................................95
4.4.2.1 Proses Input Admin............................................ ............95
4.4.2.2 Proses Output Admin.................................... ...............106
BAB V Analisa Hasil..........................................................................................120
5.1 Pengujian Aplikasi ............................................................................120
5.1.1 Pengujian Aplikasi Tanpa Menggunakan Teknologi
Manajemen Transaksi ..............................................................120
5.1.2 Pengujian Aplikasi Dengan Menggunakan Teknologi
Manajemen Transaksi ..............................................................125
5.1.2.1 Pengujian Terhadap Masalah Hilangnya Data
Yang Diubah (The Lost Update Problem) ...................126
5.1.2.1.1 Pengujian Terhadap Proses Pemesanan
Tiket............................................ .......................................126
5.1.2.1.2 Pengujian Terhadap proses Pembatalan Tiket.....134
5.2 Kelebihan Dan Kekurangan Sistem ..................................................140
5.2.1 Kelebihan Sistem .....................................................................140
5.2.2 Kekurangan Sistem ..................................................................141
BAB VI Penutup .................................................................................................142
6.1 Kesimpulan .......................................................................................142
xvi
18
6.2 Saran .................................................................................................142
DAFTAR PUSTAKA..........................................................................................143
xvii
19
DAFTAR GAMBAR
Gambar Keterangan Halaman
2.1 Diagram Transisi Transaksi 8 2.2 Simbol Use Case 17 2.3 Simbol Aktor 17 2.4 Contoh dari E-R Diagram 18 2.5 Contoh dari Entity 19 2.6 Contoh dari Atribut 19 2.7 Contoh dari identifier atau key 20 2.8 Contoh dari Relasi 21 2.9 Notasi dari Cardinality 21 2.10 Simbol Proses menurut Gane dan Sarson 23 2.11 Simbol dari arus data 23 2.12 Simbol kesatuan luar menurut Gane dan Sarson 23 2.13 Simbol penyimpanan data menurut Gane dan Sarson 24 3.1 Use Case Diagram 45 3.2 Context Diagram 47 3.3 Diagram Berjenjang 48 3.4 Overview Diagram 49 3.5 Overview Diagram Level 1 Proses Registrasi dan Login 50 3.6 Overview Diagram Level 1 Proses Update Data Kapal 51 3.7 Overview Diagram Level 1 Proses Update Data Kelas 52 3.8 Overview Diagram Level 1 Proses Update Data Dermaga 53 3.9 Overview Diagram Level 1 Proses Update Data Detail Kapal 54 3.10 Overview Diagram Level 1 Proses Update Data Tiket 55 3.11 Overview Diagram Level 1 Proses Data Transaksi Pemesanan 56 3.12 Overview Diagram Level 1 Proses Transaksi Pembelian 57 3.13 Overview Diagram Level 1 Proses Update Data Tempat 58 3.14 Overview Diagram Level 1 Proses Update Data Detail Tiket 59 3.15 Overview Diagram Level 1 Proses Update Data Pemesan 60 3.16 Overview Diagram Level 1 Proses Update Data Propinsi 61 3.17 Overview Diagram Level 1 Proses Update Data Fasilitas 62 3.18 Overview Diagram Level 1 Proses Update Data Berita 63 3.19 Overview Diagram Level 1 Proses Update Data Buku Tamu 64 3.20 Overview Diagram Level 1 Proses Ubah Password 65 3.21 Overview Diagram Level 1 Proses Proses Logout 66 3.22 ER Diagram 67 3.23 Relasi Antar Tabel 72 4.1 User Interface Halaman Index 78 4.2 User Interface Halaman Form Registrasi User 80 4.3 User Interface Halaman Lihat Jadwal Kapal 82 4.4 User Interface Halaman Output Jadwal Kapal 83
xviii
20
4.5 User Interface Halaman Lupa Password 84 4.6 User Interface Halaman Home User Setelah Login 86 4.7 User Interface Halaman Pemesanan 87 4.8 User Interface Halaman Form Pemesanan 89 4.9 User Interface Halaman Detail Pemesanan 90 4.10 User Interface Halaman Batal Pemesanan 92 4.11 User Interface Halaman Ubah Data Pemesan 94 4.12 User Interface Halaman Login Admin 95 4.13 User Interface Halaman Input Kapal 96 4.14 User Interface Halaman Input Kelas 98 4.15 User Interface Halaman Input Dermaga 99 4.16 User Interface Halaman Input Data Tiket 101 4.17 User Interface Halaman Input Data Detail Kapal 103 4.18 User Interface Halaman Input Pembelian dan Tempat 105 4.19 User Interface Halaman Output Kapal 107 4.20 User Interface Halaman Output Kelas 108 4.21 User Interface Halaman Output Dermaga 110 4.22 User Interface Halaman Output Tiket 111 4.23 User Interface Halaman Output Detail Tiket 113 4.24 User Interface Halaman Output Detail Kapal 114 4.25 User Interface Halaman Output Tempat 116 4.26 User Interface Halaman Output Data Pemesan 117 4.25 User Interface Proses Mengubah Data Barang 112 5.1 User Interface Data Jumlah Stok Tiket Awal Pengujian
Aplikasi Tanpa Penggunaan Teknologi Manajemen Transaksi 120
5.2 User Interface Simulasi Tak Ada Manajemen Transaksi 1 121 5.3 User Interface Simulasi Tak Ada Manajemen Transaksi 2 123 5.4 User Interace Data Tiket Akhir Pengujian aplikasi tanpa
penggunaan manajemen transaksi 124
5.5 User Interface Data Jumlah Stok Tiket Awal Pengujian Terhadap Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Dengan Menggunakan Teknologi Manajemen Transaksi
126
5.6 User Interface Simulasi Ada Manajemen Transaksi 1 127 5.7 User Interface Simulasi Ada Manajemen Transaksi 2 129 5.8 User Interface Reaksi Yang Terjadi Jika 2 Simulasi Aplikasi
Yang Menggunakan Teknologi Manajemen Transaksi Dengan Level Isolasi Serializable Saling Bertabrakan Pada Pengujian Masalah Hilangnya Data Yang Diubah (The Lost Update Problem)
130
5.9 User Interface Data Jumlah Stok Tiket Yang Dipengaruhi Simulasi Aplikasi Pertama Pada Pengujian Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Dengan Menggunakan Teknologi Manajemen Transaksi
131
5.10 User Interface Data Jumlah Stok Tiket Awal Pengujian 132
xix
21
Terhadap Masalah Transaksi Yang Belum Dilaksanakan (The Uncommitted Dependency) Dengan Menggunakan Teknologi Manajemen Transaksi
5.11 User Interface Data Jumlah Stok Tiket Awal Pengujian Terhadap Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Pada Proses Pembatalan Dengan Menggunakan Teknologi Manajemen Transaksi
135
5.12 User Interface Simulasi Ada Manajemen Transaksi 1 untuk Proses Pembatalan
135
5.13 User Interface Simulasi Ada Manajemen Transaksi 2 yntuk Proses Pembatalan
137
5.14 User Interface Reaksi Yang Terjadi Jika 2 Simulasi Aplikasi Yang Menggunakan Teknologi Manajemen Transaksi Dengan Level Isolasi Serializable Saling Bertabrakan Pada Pengujian Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) pada Proses Pembatalan
138
5.15 User Interface Data Jumlah Stok Tiket Yang Dipengaruhi Simulasi Aplikasi Pertama Pada Pengujian Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Dengan Menggunakan Teknologi Manajemen Transaksi pada Proses Pembatalan
138
5.16 User Interface Data Jumlah Stok Tiket akhir pada pengujian Pembatalan Tiket Dengan Menggunakan Teknologi Manajemen Transaksi
140
xx
22
DAFTAR TABEL
Tabel Keterangan Halaman 2.1 Contoh Masalah Hilangnya Data Yang Diubah 10 2.2 Jenis-Jenis Web Server 25 2.3 Tipe Data SQL Dalam Oracle 35 2.4 Fungsi-Fungsi PHP untuk Mengkases Database Oracle 38 3.1 Spesifikasi Kelas dan Kapasitas kapal. 41 3.2 Input Output Proses Modeling 46 3.3 Tabel Pemesan 68 3.4 Tabel Kapal 68 3.5 Tabel Kelas 68 3.6 Tabel Dermaga 68 3.7 Tabel Det_Kapal 69 3.8 Tabel Tiket 69 3.9 Tabel Det_Tiket 69 3.10 Tabel Pemesanan 69 3.11 Tabel Pembelian 70 3.12 Tabel Tempat 70 3.13 Tabel Fasilitas 70 3.14 Tabel Berita 70 3.15 Tabel Propinsi 70 3.16 Tabel Buku Tamu 71 3.17 Tabel Admin 71 3.18 Contoh Ilustrasi Masalah Hilangnya Data Yang Diubah 73 5.1 Proses Yang Terjadi Pada Pengujian Aplikasi Tanpa
Menggunakan Teknologi Manajemen Transaksi 124
xxi
1
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG MASALAH
Informasi saat ini sudah menjadi sebuah komoditi yang penting sehingga
menuntut sumber daya manusia yang lebih terampil dan berkompeten.
Kemampuan untuk mengakses dan menyediakan informasi secara cepat dan
akurat menjadi sangat esensial bagi sebuah organisasi atau perusahaan. Teknologi
internet memungkinkan untuk menyediakan informasi secara cepat.
PT .Bangun Jasa Terpadu merupakan salah satu perusahaan yang bergerak
dalam bidang jasa yaitu jasa pelayanan transportasi laut,darat dan udara. Untuk
transportasi laut, jasa pelayanan untuk pemesanan tiket saat ini dilakukan dengan
mendatangi langsung kantor PT Bangun Jasa Terpadu untuk melakukan
pemesanan. Selain itu calon penumpang diharuskan membayar uang muka 50%
dari total harga jumlah tiket yang dipesan sebagai jaminan pemesanan. Jika calon
penumpang membatalkan pemesanan maka akan dikenakan potongan 10% dari
total uang muka dan pembatalan tiket paling lambat 2 hari sebelum tanggal
keberangkatan. Jika pembatalan tiket sehari sebelum tanggal keberangkatan maka
uang jaminan tidak akan dikembalikan. Untuk mengatasi masalah tersebut maka
dibuat sistem informasi reservasi pemesanan tiket berbasis web yang akan
memudahkan pemakai (calon penumpang ) untuk melakukan pemesanan tiket.
Dengan adanya sistem ini pemakai dapat melihat informasi mengenai jadwal
keberangkatan kapal, informasi tentang fasilitas kapal, harga tiket kapal, maupun
2
pemesanan dan pembatalan tiket. Sistem yang dibuat ini menggunakan PHP dan
oracle10g dengan menerapkan manajemen transaksi untuk menangani pemesanan
yang dilakukan multiuser / banyak pemakai dalam waktu yang bersamaan. Jika
setiap pemakai hanya membaca data maka tidak akan timbul masalah namun jika
salah satu dari pemakai tersebut malakukan update maka akan timbul masalah
dalam database. Untuk menangani masalah tersebut maka diterapkan manajemen
transaksi.
1.2 RUMUSAN MASALAH
Berdasarkan latar belakang masalah diatas maka dirumuskan menjadi
beberapa masalah sebagai berikut :
1. Bagaimana membuat sebuah sistem informasi berbasis web yang
menyediakan informasi tentang reservasi tiket kapal laut yakni informasi
jadwal keberangkatan, pemesanan dan pembatalan tiket ?
2. Bagaimana menangani reservasi tiket yang dilakukan oleh banyak user
dengan menerapkan manajemen transaksi?
1.3 BATASAN MASALAH
Agar perancangan sistem ini dapat dilakukan secara tepat, maka dilakukan
pembatasan cakupan sistem antara lain sebagai berikut :
1. Sistim informasi ini digunakan untuk proses reservasi yakni memesan tiket,
membatalkan tiket dan melihat informasi jadwal keberangkatan,fasilitas
maupun harga tiket kapal.
3
2. Pemesan harus melakukan registrasi terlebih dahulu sebelum melakukan
proses pemesanan maupun pembatalan.
3. Tidak melayani pembayaran tiket online, hanya dapat memesan tiket.
Jumlah pesanan tiket dibatasi, paling banyak 5 ( lima ) tiket untuk setiap
pemesan.
4. Sistem informasi ini digunakan untuk pemesanan tiket kapal Cirimai dan
Tatamailau dengan pelabuhan awal Tanjung Perak Surabaya dan tujuan
akhir Tual.
5. Tidak menangani proses pencetakan tiket.
6. Tidak menangani proses diskon.
7. Sistem yang dibuat tidak memperhatikan masalah keamanan jaringan.
8. Level isolasi manajemen transaksi yang digunakan adalah level isolasi
serializable.
9. Bahasa pemrograman yang digunakan adalah PHP dan didukung oleh
DBMS Oracle 10g.
1.4 TUJUAN PENELITIAN
Tujuan penelitian skripsi yang dilakukan adalah membuat sebuah sistem
informasi yang dapat membantu pemakai dalam melakukan reservasi tiket berupa
pemesanan, pembatalan dan menampilkan informasi jadwal keberangkatan kapal
dengan menerapkan manajemen transaksi.
4
1.5 METODOLOGI PENELITIAN
Metodologi Penelitian yang digunakan untuk membuat aplikasi sistem
informasi reservasi tiket kapal laut berbasis web antara lain adalah :
1.5.1 Studi pustaka
Dengan mengumpulkan data atau informasi dari berbagai literature yang
sesuai dengan sistem yang akan dibuat. Metode ini juga meliputi
dicumenter. Metode documenter adalah suatu cara pengambilan data
dengan memahami data yang berasal atau bersumber dari dokumen-
dokumen tertulis, arsip-arsip, buku-buku pedoman, peraturan-peraturan
yang berhubungan dengan objek pembahasan.
1.5.2 Tahap-tahap Rekayasa perangkat Lunak secara terstuktur (
Jogiyanto, 2003)
1. Analisa
Identifikasi masalah dengan menggunakan teknik antara lain :
a) Pengamatan ( observasi ) : pengamatan langsung dan pengambilan
sample data di PT. Bangun Jasa Terpadu
b) Wawancara ( interview ) : melakukan tanya jawab antara penulis
dengan pihak PT. Bangun Jasa Terpadu maupun calon penumpang
c) Membuat use case diagram ( Whitten, 2004 ).
2. Perancangan
Merupakan langkah multi proses yang memusatkan kerja pada
perancangan sistem yaitu ERD ( Whitten, 2004 ). Membuat perancangan
menu, perancangan tampilan dan user interface.
5
3. Implementasi
Setelah melakukan rancangan sistem yang diinginkan, maka hasil
rancangan tersebut diimplementasikan, yang mana rancangan tersebut
diterjemahkan kedalam bahasa yang dapat dimengerti mesin.
4. Testing
Pengujian ini dimaksudkan untuk menguji konsistensi data yang ada
dengan menerapkan manajemen transaksi. Pengujian telah dilakukan di lab
komputer USD.
1.6 SISTEMATIKA PENULISAN
Sistimatika yang digunakan dalam penulisan tugas akhir ini adalah sebagai
berikut :
BAB I. PENDAHULUAN
Bab ini berisi tentang latar belakang masalah, rumusan masalah, batasan
masalah, tujuan penelitian, metodologi penelitian yang digunakan serta
sistimatika isi penulisan laporan.
BAB II. LANDASAN TEORI
Bab ini berisi tentang landasan teori yang digunakan oleh penulis dalam
menyelesaikan tugas akhir ini.
BAB III. ANALISA DAN PERANCANGAN SISTEM
Bab ini berisi penjelasan tentang analisa dan perancangan sistem yang
akan dibuat oleh penulis. Perancangan yang dibuat meliputi perancangan
proses, perancangan database serta perancangan user interface.
6
BAB IV. IMPLEMENTASI SISTEM
Bab ini berisi tentang implemetasi dari desain sistem yang dibuat dan
telah dikembangkan kedalam sebuah aplikasi.
BAB V. ANALISA HASIL
Bab ini berisi tentang analisa hasil yang dilakukan terhadap proses
implementasi yang telah dibuat.
BAB VI PENUTUP
Bab ini merupakan penutup yang berisi kesimpulan yang menjawab
rumusan masalah serta saran yang diberikan untuk pengembangan sistem
dimasa yang akan datang.
7
BAB II
LANDASAN TEORI
2.1 MANAJEMEN TRANSAKSI ( Transaction Management)
Transaksi adalah sebuah tindakan atau serangkaian tindakan yang
dilakukan oleh single user atau program aplikasi yang membaca atau mengubah
isi dari database. Sebuah traksaksi dapat mempunyai salah satu hasil yakni jika
sukses seluruhnya transakasi dikatakan telah committed ( dilakukan ) dan
database mencapai suatu keadaan konsisten yang baru. Sebaliknya jika gagal,
transaksi dibatalkan. Jika transaksi dibatalkan maka database harus dikembalikan
ke keadaan konsisten ( consistent state ) seperti sebelum transaksi dimulai
(Connolly, T., Begg, C., 2002). Transaksi tersebut disebut rolled back atau
undone ( tidak dilakukan ).
Ada 4 hal dasar yang harus dimiliki semua transaksi, disebut ACID yaitu :
1. Atomicity
Sebuah transaksi adalah sebuah unit yang tidak dapat dibagi lagi sehingga
dapat melakukan seluruhnya atau tidak melakukan apapun. Ini merupakan
tangung jawab dari subsystem recovery dari DBMS untuk memastikan ke
‘atom’annya.
2. Consistency
Sebuah transaksi harus mentransformasikan satu keadaan konsisten ke
keadaan konsisten lainnya. Ini merupakan tanggung jawab dari DBMS dan
pengembang aplikasi untuk memastikan kekonsistenannya.
8
3. Isolation
Transaksi secara bebas mengeksekusi yang lainnya. Dengan kata lain,
sebagian transaksi yang tidak lengkap akan mengakibatkan transaksi yang
lain menjadi tidak visible. Ini merupakan tanggung jawab dari subsystem
concurrency control untuk memastikan isolasi.
4. Durability
Setelah DBMS memberitahu pengguna bahwa transaksi telah selesai dengan
sukses, maka efeknya tetap bertahan bahkan jika sistem mengalami crash
sebelum semua perubahannya direfleksikan pada disk. Ini merupakan
tanggung jawab dari recovery subsystem untuk memastikan durability.
Gambar 2.1 merupakan diagram transisi sebuah transaksi.
Diagram transisi sebuah transaksi :
Gambar 2.1 Diagram Transisi Transaksi
Dari diagram tersebut terdapat 5 keadaan ( state ) yaitu :
1. ACTIVE ( aktif )
2. PARTIALLY COMMITED ( Sebagian dilaksanakan )
Terjadi setelah perintah terakhir dieksekusi
9
Jika ditemukan bahwa transaksi melanggar serializability atau
melanggar integrity constraint maka transaksi harus dibatalkan.
Transaksi demikian akan menuju FAILED ( keadaan gagal ) dan harus
dibatalkan.
Jika transaksi sukses, beberapa update dapat disimpan secara aman dan
transaksi menuju ke keadan COMMITED.
3. COMMITED ( dilaksanakan )
4. FAILED ( gagal )
Terjadi jika transaksi tidak dapat dilaksanakan atau transaksi
dibatalkan pada saat aktif ( keadaan aktif ).
Kondisi ini terjadi jika user membatalkan transaksi atau protocol
concurrency control membatalkan transaksi untuk memastikan
serializability.
5. ABORTED ( dibatalkan )
2.2 KEBUTUHAN CONCURRENCY CONTROL DAN LEVEL ISOLASI
DALAM ORACLE
Salah satu tujuan utama dalam mengembangkan sebuah database adalah
membuat sumber informasi dapat dipakai oleh multiuser. Kadang-kadang user
perlu mengakses data secara terus menerus. Jika single user hanya membaca data,
maka data yang satu tidak akan berbaur dengan data yang lain dan tidak perlu
concurrency control. Akan tetapi, jika multiuser mencoba untuk meng-update
secara terus menerus atau yang ada yang meng-update sedang yang lain membaca
10
data, maka ada kemungkinan terjadi benturan. Concurrency control diperlukan
untuk menjamin bahwa transaksi-transaksi yang dilakukan oleh multiuser secara
konkuren tidak saling mengganggu operasinya masing-masing.
Ada 3 masalah yang disebabkan oleh concurrency control ( akses
bersama ) yaitu :
1. Hilangnya data yang diubah (Lost Update Problem )
Sebuah transaksi yang melakukan update,namun pada waktu interfal yang
bersamaan proses update tersebut ditimpa oleh transaksi lain. Tabel 2.1
merupakan contoh dari masalah hilangnya data yang diubah.
Waktu T1 T2 balx
t1 Begin_transaction 100
t2 Begin_transaction Read(balx) 100
t3 Read(balx) balx=balx+100 100
t4 balx=balx-10 Write(balx) 200
t5 Write(balx) Commit 90
t6 Commit 90
Tabel 2.1 Contah Masalah Hilangnya data yang diubah
Dari contoh tersebut terlihat bahwa transaksi T2 kehilangan hasil updatenya
sebesar 100. solusinya : Hilangnya perubahan data pada T2 dapat dicegah
11
dengan melarang T1 membaca nilai balx sampai transaksi T2 selesai
melakukan perubahan data.
2. Pembacaan yang salah ( Dirty Read Problem )
Masalah ini terjadi saat suatu transaksi diijinkan membaca hasil suatu
transaksi lain sebelum transaksi lain tersebut selesai dilakukan.
3. Inconsistent Analysis Problem ( Analisa yang salah )
Masalah ini terjadi ketika transaksi pertama membaca beberapa nilai dari
database tetapi transaksi kedua mengubah nilai-nilai tersebut selama
proses/eksekusi pertama belum selesai.
Masalah-masalah tersebut dapat diatasi jika ada kontrol yang baik dalam
database. Artinya bahwa hasil dari transaksi yang dieksekusi secara serial (
transaksi dijalankan sendiri-sendiri, tanpa ada sela, menjamin konsistensi data)
sama dengan transaksi yang dieksekusi secara bersama. Hal ini disebut
serialzability. Serializability merupakan parameter keberhasilan dalam
concurrency control dan dicapai dengan menggunakan macam-macam level
isolasi pada transaksi ( transaction isolation levels ). Level isolasi digunakan
mengontrol tingkat dimana transaksi tertentu terbuka terhadap tindakan transaksi
lain yang melakukan eksekusi secara konkuren. Oracle menyediakan 3 level
isolasi yaitu Read Committed, Serializable dan Read Only.( Connolly, T., Begg,
C., 2002)
a. READ COMMITTED.
Serialisasi didukung pada level isolasi dimana setiap statement dalam
transaksi hanya melihat data yang telah dicommitted sebelum statement (
12
bukan transaksi dimulai ). Ini berarti bahwa data mungkin diubah oleh
transaksi lain selama eksekusi dari statement yang sama didalam transaksi
yang sama. Transaksi jenis ini merupakan default dari tipe transaksi pada
oracle.
b. SERIALIZABLE.
Level isolasi ini menjamin bahwa sebuah transaksi T hanya membaca data
yang telah di-commited dan tidak ada nilai yang dibaca atau ditulis oleh
transaksi T yang diubah oleh transaksi lain sampai transaksi tersebut
selesai. Dalam konteks implementasi lock-based, transaksi
SERIALIZABLE memperoleh lock sebelum membaca atau menulis data,
menyertakan lock pada sekumpulan data yang tidak boleh berubah dan
menyimpannya sampai akhir transaksi.
c. READ ONLY
Transaksi READ ONLY hanya melihat data yang commited sebelum
transaksi dimulai.
Level isolasi dapat diset dioracle dengan memilih salah satu dari level
isolasi yang akan dipakai pada awal transaksi dimulai. Seperti :
SET TRANSACTION ISOLATION LEVEL READ COMMITED;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION ISOLATION LEVEL READ ONLY;
13
2.3 SISTEM
2.3.1 Konsep Dasar Sistem
Sistem adalah kumpulan dari elemen-elemen yang berinteraksi untuk
mencapai suatu tujuan tertentu (Jogiyanto, 2005). Sebuah perusahaan juga
merupakan suatu sistem. Komponen atau unsur-unsur di dalamnya seperti
pemasaran,penjualan, penelitian, pembukuan, dan personalia yang mana
semuanya bekerja sama untuk mencapai keuntungan baik bagi para pekerjanya
maupun bagi pemilik perusahaan.
2.3.2 Karakteristik Sistem
Suatu sistem mempunyai karakteristik atau sifat-sifat tertentu, yaitu
mempunyai komponen-komponen (components), batas sistem (boundary),
lingkungan luar sistem (environment), penghubung (interface), masukkan (input),
keluaran (output), pengolah (process) dan sasaran (objectives) atau tujuan (goal).
1) Komponen Sistem
Suatu sistem terdiri dari sejumlah komponen yang saling berinteraksi,
yang artinya saling bekerja sama membentuk satu kesatuan.
Komponen-komponen sistem atau elemen-elemen sistem dapat berupa
suatu subsistem atau bagian-bagian dari sistem.
2) Batas sistem
Batas sistem (boundary) merupakan daerah yang membatasi antara
suatu sistem dengan sistem yang lainnya atau dengan lingkungan
luarnya. Batas sistem itu memungkinkan suatu sistem dipandang
14
sebagai satu kesatuan. Batas suatu sistem menunjukkan ruang lingkup
(scope) dari sistem tersebut.
3) Lingkungan Luar Sistem
Lingkungan luar (environment) dari suatu sistem adalah apapun diluar
batas dari sistem yang mempengaruhi operasi sistem.
4) Penghubung Sistem.
Penghubung (interface) merupakan media penghubung antara satu
subsistem dengan subsistem lainnya. Melalui penghubung ini
memungkinkan sumber-sumber daya mengalir dari satu subsistem ke
subsistem lainnya.
5) Masukkan Sistem
Masukan (input) adalah energi yang dimasukkan ke dalam sistem.
Masukan dapat berupa masukan perawatan (maintenance input) dan
masukan sinyal (signal input) agar sistem tersebut dapat beroperasi.
6) Keluaran Sistem
Keluaran (output) adalah hasil dari energi yang diolah dan
diklasifikasikan menjadi keluaran yang berguna. Keluaran dapat
merupakan masukan untuk subsistem yang lain.
7) Pengolah Sistem
Bagian pengolah sistem ini merupakan bagian yang akan merubah
masukkan menjadi keluaran.
8) Sasaran Sistem
15
Suatu sistem pasti mempunyai tujuan (goal) atau sasaran (objective).
Jika suatu sistem tidak mempunyai sasaran, maka operasi sistem tidak
akan ada gunanya. Sasaran dari sistem sangat menentukan sekali
masukan yang dibutuhkan sistem dan keluaran yang akan dihasilkan
sistem. Sistem dikatakan berhasil bila mengenai sasaran atau
tujuannya.
2.4 INFORMASI
2.4.1 Konsep Dasar Informasi
Sistem informasi dapat didefinisikan sebagai kumpulan elemen yang
saling berhubungan satu sama lain yang membentuk satu kesatuan untuk
mengintegrasikan data, memproses dan menyimpan serta mendistribusikan
informasi ( Sutedjo, 2002 ).
Sedangkan Informasi dapat diartikan sebagai :
“ Data yang diolah menjadi bentuk yang lebih berguna bagi usernya”
( Jogiyanto, 2005).
2.4.2 Siklus Informasi
Data yang diolah melalui suatu model menjadi informasi, penerima
kemudian menerima informasi tersebut, membuat suatu keputusan dan melakukan
tindakan, yang berarti menghasilkan suatu tindakan lain yang akan membuat
sejumlah data kembali. Data tersebut akan ditangkap sebagai input, diproses
kembali lewat suatu model dan seterusnya membentuk suatu siklus. Siklus ini
16
disebut dengan siklus informasi (information cycle). Siklus ini juga disebut
dengan siklus pengolahan data (data processing cycles).
2.4.3 Kualitas Informasi
Kualitas dari suatu informasi (quality of information) tergantung dari tiga
hal antara lain :
1. Akurat yang berarti informasi harus bebas dari kesalahan-kesalahan
dan tidak menyesatkan dan juga harus jelas mencerminkan
maksudnya.
2. Tepat pada waktunya, berarti informasi yang datang pada penerima
tidak boleh terlambat. Karena informasi merupakan landasan di
dalam pengambilan keputusan.
3. Relevan, berarti informasi tersebut mempunyai manfaat untuk
pemakainya.
2.4.4. Nilai Informasi
Informasi dikatakan bernilai bila manfaatnya lebih efektif dibandingkan dengan
biaya mendapatkannya.
“ Data yang diolah menjadi bentuk yang lebih berguna bagi usernya” (
Jogiyanto, 2003).
2.5 METODOLOGI PENGEMBANGAN SISTEM
2.5.1 Use Case Diagram
Use case diagram adalah sebuah diagram yang menggambarkan interaksi
antara sistem dan eksternal sistem dan pemakai (Whitten, 2004).
17
Use-case merupakan urutan langkah-langkah yang secara tindakan saling
terkait (scenario ), baik terotomatisasi maupun secara manual, untuk tujuan
melengkapi satu tugas bisnis tunggal. Use-case disajikan secara grafis dengan
elips horizontal dengan nama use-case muncul di atas, bawah, atau di dalam elips
tersebut. Gambar 2.2 merupakan simbol dari Use Case.
Gambar 2.2 Simbol Use Case
Use-case diawali atau dipicu oleh pengguna eksternal yang dinamakan
pelaku ( actor ). Actor adalah segala sesuatu yang perlu berinteraksi dengan
sistem untuk pertukaran informasi. Actor menginisiasi kegiatan sistem yakni use-
case dengan maksud melengkapi beberapa tugas yang menghasilkan sesuatu yang
dapat diukur. Seorang actor ditampilkan secara grafis sebagai gambar tongkat
berlabel dengan nama peran yang dimainkan oleh actor itu. Gambar 2.3
merupakan simbol dari actor.
Simbol Actor
Gambar 2.3. Simbol Actor
18
Use case depends on relationship merupakan sebuah relasi use case yang
menentukan bahwa use case yang lain harus dibuat sebelum use case yang
sekarang. Digambarkan sebagai anak panah yang dimulai dari satu use case dan
menunjuk ke use case yang depend on kepadanya. Setiap relasi depend on diberi
label “<<depend on>>” .
2.6 ERD ( Entity Relationship Diagram )
ERD merupakan sebuah data model yang memanfaatkan beberapa notasi
untuk menggambarkan data dalam entity dan relasi yang dijelaskan oleh data (
Whitten, J.L, 2004 ). Data model adalah sebuah teknik untuk mengorganisasikan
dan mendokumentasikan data dari sistem. Juga disebut dengan database
modeling. Gambar 2.4 merupakan contoh dari E-R Diagram.
Gambar 2.4 Contoh E-R Diagram
Entity adalah objek yang ada ( nyata ) dan dapat dibedakan dari objek yang lain.
Sebuah entity bisa berupa objek, tempat, orang, konsep atau aktivitas. Gambar
2.5 merupakan contoh dari entity student.
19
Gambar 2.5 Contoh entity
Atribut merupakan sebutan untuk mewakili suatu entity. Sebuah atribut juga
merupakan sifat-sifat dari sebuah entity. Sinonimnya adalah element, property,
dan field. Gambar 2.6 merupakan contoh dari atribut student.
Gambar 2.6 Contoh Atribut
Key merupakan sebuah atribut atau kelompok atribut yang diasumsikan memiliki
nilai yang unik untuk setiap instance ( Whitten, J.L, 2004 ). Sering juga disebut
dengan identifier.
1. Concatenated key merupakan sekelompok atribut yang memiliki
identitas instance dari sebuah entity yang unik. Sinonimnya composite
key dan compound key.
20
2. Candidate key merupakan satu dari nilai key yang akan berfungsi
sebagai primary key dari sebuah entity. Sinonimnya adalah candidate
identifier
3. Primary key merupakan sebuah candidate key yang paling umum
digunakan untuk mengidentifikasikan secara unik instance dari entity
yang tunggal.
4. Alternate key merupakan sebuah candidate key yang tidak dapat dipilih
untuk menjadi primary key. Sinonimnya adalah secondary key.
Gambar 2.7 merupakan contoh dari identifier atau key
Gambar 2.7. Contoh dari identifier atau key
Relationship adalah sebuah asosiasi bisnis normal yang ada antara satu atau lebih
entity. Relasi mungkin juga mewakili suatu kejadian yang menghubungkan antara
entity atau logika gabungan antara entity. Gambar 2.8 merupakan contoh dari
relasi.
21
Gambar 2.8. Contoh Relasi
Cardinality merupakan minimum dan maksimum kejadian dari sebuah
entity yang dihubungkan dengan kejadian tunggal dari entity yang lain ( Whitten,
J.L, 2004 ). Karena seluruh relasi adalah bidirectional maka cardinality harus
didefinisikan pada kedua direction untuk setiap relasi. Gambar 2.9 merupakan
notasi dari cardinality.
Gambar 2.9. Notasi dari Cardinality
Student CurriculumIs being studied by is enrolled in
22
Foreign key adalah sebuah primary key dari sebuah entity yang digunakan oleh
entity yang lain untuk mengidentifikasikan instance dari sebuah relasi ( Whitten,
J.L, 2004 ).
Nonspecific relationship merupakan relasi dimana banyak instance dari sebuah
entity berasosiasi dengan banyak instance dari entity yang lainnya ( Whitten, J.L,
2004 ). Disebut juga dengan relasi many-to-many relationship. Nonspecific
relationship harus diselesaikan. Kebanyakan dari nonspecific relationship
diselesaikan dengan sebuah associative entity.
Key-base data model bertujuan untuk mengeliminasikan nonspecific relationship
jika ada, menambah asosiatif entity termasuk primary dan alternate key, dan
kardinalitas yang tepat.
Fully attributed data model bertujuan untuk memasukkan seluruh atribut.
2.7 DFD ( Data Flow Diagram )
Data Flow Diagram merupakan sebuah model proses yang digunakan
untuk mengambarkan aliran dari data yang melalui sebuah sistem dan proses yang
dibentuk oleh sistem ( Whitten, J.L, 2004 ).
Simbol –simbol umum yang dipakai dalam DFD adalah :
1. Proses ( Process )
Proses digambarkan sebagai persegi bersudut bulat ( notasi Gane dan
sarson ). Proses adalah kerja yang dilakukan pada atau sebagai respon
terhadap aliran data masuk atau kondisi. Gambar 2.10 merupakan
simbol proses menurut Gane dan Sarson :
23
Gambar 2.10 Simbol Proses menurut Gane dan Sarson
2. Arus Data ( Data Flow )
Menunjukan input data ke prosea atau output data ( atau informasi )
dari proses. Arus data digunakan untuk menunjukan pembuatan,
pembacaan, penghapusan atau pembaruan data dalam file atau
database. Gambar 2.11 menunjukan simbol dari arus data.
Gambar 2.11 Simbol arus data
3. Kesatuan Luar ( External Agent ).
Agen eksternal mendefinisikan orang, unit organisasi, sistem atau
organisasi luar yang berinteraksi dengan sistem. Disebut juga entitas
eksternal. Gambar 2.12 merupakan simbol Kesatuan Luar menurut
Gane dan Sarson.
Gambar 2.12. Simbol Kesatuan Luar .
Process Name
Nama
Kesatuan Luar
Nama Arus Data
24
4. Penyimpanan Data ( Data Store )
Data Store adalah penyimpanan data yang ditunjukan untuk
penggunaan selanjutnya. Sinonimnya adalah file dan database. Gambar
2.13 merupakan simbol dari penyimpanan data menurut Gane dan
Sarson.
Gambar 2.13 .Simbol Penyimpanan Data
2.8 Word Wide Web
Word Wide Web ( WWW ) atau lebih dikenal dengan web adalah sistem
komunikasi hypertext yang popular digunakan pada jaringan komputer internet,
dengan komunikasi data menggunakan model client / server ( Kadir, 2003).
Dengan menggunakan teknologi hypertext, user dituntut untuk menemukan
informasi dengan mengikuti link yang disediakan dalam dokumen web yang
ditampilkan dalam browser web.
1. Web Server
Web Server adalah komputer yang digunakan untuk
menyimpan dokumen-dokumen web dan melayani permintaan dari
client. Browser Web seperti Explorer atau Navigator berkomunikasi
melalui jaringan dengan web server dan menggunakan HTTP (
Hypertext Transfer Protokol ). Browser akan mengirimakan request
Data Store
25
kepada server untuk meminta dokumen tertentu atau layanan lain yang
disediakan oleh server. Server memberikan dokumen atau layanannya
jika tersedia juga dengan menggunakan protokol HTTP.
Dibawah ini adalah jenis-jenis web server yang ada beserta sistem
operasi yang digunakan. Tabel 2.2 merupakan Jenis-jenis web server.
Tabel 2.2 Jenis-jenis web Server.
2. Web Client
Web client mamanfaatkan HTTP ( hypertext Transfer
Protokol ) untuk berkomunikasi dengan web server. Web client
berfungsi untuk menampilkan data yang diminta oleh user dari web
server melalui web client.
2.9 HTML ( Hypertext Markup Language )
HTML merupakan standar bahasa yang digunakan untuk menampilkan
dokumen web. Dokumen HTML disusun oleh elemen-elemen. Elemen merupakan
istilah bagi komponen-kmponen dasar pembentuk dokumen HTML seperti head,
body, table, paragraph dan list.
WEB SERVER Pengembang Sistem Operasi
NCSA httpd NCSA Unix
IIS Microsoft Windows NT
PWS Microsoft Windows 9x/2000/NT
Apache Apache UNIX, LINUX, 9x/NT
26
Penulisan HTML dapat dilakukan dengan melalui editor text seperti
notepad yang dimiliki oleh sistem operasi Windows ataupun editor lain seperti
wordpad, Microsoft Word dan lain-lain. Dengan berkembangnya software, saat ini
web editor HTML dapat memudahkan pemakai dalam menulis halaman web,
contohnya : Microsoft FrontPage, Macromedia Dreamweaver, dan sebagainya.
Untuk menandai berbagai elemen dalam dokumen HTML digunakan tag.
Adapun petunjuk penggunaan tag HTML aadalah sebagai berikut :
1. Tag HTML diapit dengan dua karakter kurung bersudut seperti < head>
2. Tag HTML selalu berpasangan seperti <a>.........</a>
3. Tag pertama dalam suatu pasangan adalah tag awal dan tag kedua
merupakan tag akhir.
4. Tag HTML tidak case sensitive ( tidak dibedakan antara huruf besar dan
huruf kecil )
5. Jika dalam tag ada tag lagi maka penulisan tag akhir tidak boleh bersilang (
harus berurutan ). Misalnya <a>……..<b> dan tag akhir </b>…….</a>.
2.10 PHP ( Personal Home Page )
PHP adalah skrip bersifat server side yang ditambahkan ke dalam
HTML. PHP sendiri merupakan singkatan dari Personal Home Page tools. (
Abdul Kadir, 2003). Skrip ini akan membuat suatu aplikasi dapat diintegrasikan
ke dalam HTML sehingga suatu halaman web tidak lagi bersifat statis, namun
menjadi bersifat dinamis. Proses update data dapat dilakukan dengan
menggunakan aplikasi yang dibuat dengan menggunakan skrip PHP.
27
Ada beberapa cara untuk menuliskan script PHP :
1. <? Script PHP ada disini ?> atau
2. <?php script php ada disini ?> atau
3. <% script PHP ada sini ?> atau
4. <SCRIPT language=”php”> script PHP ada disini </SCRIPT>
Ada beberapa kriteria yang harus diperhatikan dalam penulisan script PHP yaitu :
1. Setiap halaman yang mengandung script PHP harus disimpan dengan
EXTENSI PHP sesuai dengan program PHP yang mendukung.
2. Setiap script php harus dimulai dengan tag <? Dan diakhiri dengan tag ?>
3. Setiap akhir baris perintah harus diakhiri dengan titik koma ( ; ).
4. Setiap bentuk variabel harus diberi tanda string dolar ( $ ) pada penulisan
awalnya.
5. Penulisan komentar didahului dengan pembuka /* dan diakhiri dengan */.
2.10.1 Hubungan PHP dan HTML
Halaman web biasanya disusun dari kode-kode html yang disimpan dalam
sebuah file berekstensi .html. File html ini dikirimkan oleh server (atau file) ke
browser, kemudian browser menerjemahkan kode – kode tersebut sehingga
menghasilkan suatu tampilan yang indah. Lain halnya dengan program php,
program ini harus diterjemahkan oleh web-server sehingga menghasilkan kode
html yang dikirim ke browser agar dapat ditampilkan. Program ini dapat berdiri
sendiri ataupun disisipkan di antara kode – kode html sehingga dapat langsung
ditampilkan bersama dengan kode-kode html tersebut. Program php dapat
28
ditambahkan dengan mengapit program tersebut di antara tanda <? dan ?>. Tanda-
tanda tersebut biasanya disebut tanda untuk escaping ( kabur ) dari kode html. File
html yang telah dibubuhi program php harus diganti ekstensi-nya menjadi .php
atau .php3.
PHP merupakan bahasa pemograman web yang bersifat server-side
HTML=embedded scripting, di mana script-nya menyatu dengan HTML dan
berada si server. Artinya adalah sintaks dan perintah-perintah yang kita berikan
akan sepenuhnya dijalankan di server tetapi disertakan HTML biasa. PHP dikenal
sebgai bahasa scripting yang menyatu dengan tag HTML, dieksekusi di server dan
digunakan untuk membuat halaman web yang dinamis seperti ASP (Active Server
Pages) dan JSP (Java Server Pages).
PHP pertama kali dibuat oleh Rasmus Lerdroft, seorang programmer C.
Semula PHP digunakannya untuk menghitung jumlah pengunjung di dalam
webnya. Kemudian ia mengeluarkan Personal Home Page Tools versi 1.0 secara
gratis. Versi ini pertama kali keluar pada tahun 1995. Isinya adalah sekumpulan
script PERL yang dibuatnya untuk membuat halaman webnya menjadi dinamis.
Kemudian pada tahun1996 ia mengeluarkan PHP versi 2.0 yang kemampuannya
telah mampu mengakses database dan dapat terintegrasi dengan HTML.
Pada tahun 1998 tepatnya pada tanggal 6 Juni 1998 keluarlah PHP versi
3.0 yang dikeluarkan oleh Rasmus sendiri bersama kelompok pengembang
softwarenya. Versi teranyar yaitu PHP 4.0 keluar pada tanggal 22 Mei 2000
merupakan versi yang lebih lengkap lagi dibandingkan dengan versi sebelumnya.
Perubahan yang paling mendasar pada PHP 4.0 adalah terintegrasinya Zend
29
Engine yang dibuat oleh Zend Suraski dan Andi Gutmans yang merupakan
penyempurnaan dari PHP3 scripting engine. Yang lainnya adalah build in HTTP
session, tidak lagi menggunakan library tambahan seperti pada PHP3. Tujuan dari
bahasa scripting ini adalah untuk membuat aplikasi- aplikasi yang dijalankan di
atas teknologi web. Dalam hal ini, aplikasi pada umumnya akan memberikan hasil
pada web browser, tetapi prosesnya secara keseluruhan dijalankan web server.
2.10.2 Kelebihan PHP
Ketika e-commerce semakin berkembang, situs-situs yang statispun
semakin ditinggalkan Karena dianggap sudah tidak memenuhi keinginan pasar
karena situs tersebut harus tetap dinamis selama setiap hari. Pada saat ini bahasa
PERL dan CGI sudah jauh ketinggalan jaman sehingga sebagian besar designer
web banyak beralih ke bahasa server-side scripting yang lebih dinamis seperti
PHP. Seluruh aplikasi berbasis web dapat dibuat dengan PHP. Namun kekuatan
yang paling utama PHP adalah pada konektivitasnya dengan system database di
dalam web. Sistem database yang dapat didukung oleh PHP adalah :
1. Oracle
2. MySQL
3. MS SQL Server
4. PostgreSQL
5. dan lainnya
PHP dapat berjalan di berbagai sistem operasi seperti windows 98/NT,
UNIX/LINUX, solaris maupun macintosh. PHP merupakan software yang open
source yang dapat anda download secara gratis dari situs resminya yaitu
30
http://www.php.net, ataupun dari situs - situs yang menyediakan software.
Software ini juga dapat berjalan pada web server seperti PWS (Personal Web
Server), Apache, IIS, AOLServer, fhttpd, phttpd dan sebagainya. PHP juga
merupakan bahasa pemograman yang dapat kita kembangkan sendiri seperti
menambah fungsi-fungsi baru. Keunggulan lainnya dari PHP adalah PHP juga
mendukung komunikasi dengan layanan seperti protocol IMAP, SNMP, NNTP,
POP3 bahkan HTTP. PHP dapat diinstal sebagai bagian atau modul dari apache
web server atau sebagai CGI script yang mandiri. Banyak keuntungan yang dapat
diperoleh jika menggunakan PHP sebagai modul dari apache di antaranya adalah
1. Tingkat keamanan yang cukup tinggi.
2. waktu eksekusi yang lebih cepat dibandingkan dengan bahasa
pemograman web lainnya yang berorientasi pada server-side scripting.
Akses ke sistem database yang lebih fleksibel
2.11 Pemrograman SQL Di Oracle
SQL ( Structured Query Language ) adalah bahasa pemrograman yang
digunakan untuk akses ke oracle database. SQL diciptakan oleh perusahaan IBM
sekitar tahun 1970, pada waktu yang bersamaan dengan diperkenalkan konsep
Relational Database. Bahasa SQL dapat digolongkan bahasa generasi ke-4 yang
tidak berupa bahasa yang berstruktur dan beraturan sehingga SQL mudah
dipelajari ( Wijaya, 2003).
Pernyataan ( Statement ) SQL dapat digolongkan atas tiga golongan yaitu
31
1. Data Definition Language ( DDL ) yang mendifinisikan struktur suatu data.
a. Perintah CREATE
Digunakan untuk membuat tabel. Sintaks yang digunakan adalah :
CREATE TABLE[Pemakai.] Nama Tabel
( {nama kolom pertama Tipedata [default] [constraint kolom] constraint tabel ) [, (
nama kolom kedua Tipe data [default] [constraint kolom] constraint tabel } ]…) [
AS QUERY].
b. Perintah ALTER
Digunakan untuk mengubah ( modify ) tabel yang telah dibuat seperti
menambah kolom baru, mengubah ukuran kolom, mengubah aturan-
aturan yang berlaku untuk suatu kolom. Sintaks yang digunakan
adalah :
ALTER TABLE [Pemakai. ] Nama Tabel
{ [ADD { Nama Kolom | [CONSTRAINT Nama Constraint] Constraint Tabel }
[, Nama Kolom | [CONSTRAINT Nama Constraint] Constraint Tabel } ]…) ]
[ MODIFY (Nama Kolom [, Nama Kolom]..)]
[ Drop Nama Constraint] }
[ ENABLE Nama Constraint | DISABLE Nama Constraint].
c. Perintah DROP
Digunakan untuk menghapus suatu tabel. Sintaks yang digunakan
DROP TABLE [Pemakai. ] Nama tabel
[CASCADE CONSTRAINTS].
2. Data Manipulation Language ( DML ) yang dapat memanipulasi data.
a. Perintah SELECT
32
Sering dipakai karena kegunaannya untuk membaca ( query ) isi tabel.
Sintaks yang digunakan :
SELECT [ALL | DISTINCT
{ * | [Pemakai. ] Nama Table.* |
Ekspresi [Alias[, Ekspresi [Alias]..}
FROM [Pemakai.]Nama Table [@Nama Database] [Alias]
[, [Pemakai. ]Nama Table [@Nama Database] [Alias]..
[Where Kondisi]
[ CONNECT BY Kondisi [START WITH Kondisi] ]
[GROUP BY Ekspresi [,Ekspresi]..]
[HAVING Kondisi]
[ (UNION [ALL] | INTERSECT | MINUS} SELECT ..]
[ ORDER BY {Ekspresi | Posisi } [ASC | DESC]..
[, {Expresi | Posisi} [ASC | DESC] ] ] ..
[ FOR UPDATE [ OF [ [ Pemakai.] { Nama Tabel | Nama View}. ] Nama Kolom [ ,
[[Pemakai.] { Nama Tabel | Nama View}. ]]..]
[NOWAIT]
b. Perintah INSERT
Digunakan untuk memasukan data ke tabel.
Sintaks yang digunakan:
INSERT INTO [Pemakai.]Nama Tabel [@Nama Database]
[ ( Nama Kolom [, Nama Kolom]..) ]
VALUE ( Ekspresi [. Ekspresi] .. ) | Query..);
c. Perintah UPDATE
Digunakan untuk mengubah isi tabel.
Sintaks yang digunakan :
33
UPDATE [Pemakai.] Nama Tabel
SET { Nama Kolom = Ekspresi [, Nama Kolom = Ekspresi] .. |
( Nama Kolom [, Nama Kolom]..) = ( Subquery) | [Where Kondisi].
d. Perintah DELETE
Digunakan untuk menghapus isi tabel.
Sintaks yang digunakan :
DELETE FROM [Pemakai . ] Nama Tabel [@Nama Database]
[ where Kondisi]
3. Data Control Language ( DCL )
Data control language digunakan untuk mengatur hak-hak ( Privilage )
untuk seorang user database.
2.12 Pemrograman PL /SQL
PL/SQL ( Procedural Language / Structured Query Language ) adalah
suatu blok yang berisi skrip-skrip bahasa procedural.( Wijaya, 2003). Perbedaan
SQL dengan PL/SQL ialah PL/SQL bukan unit transaksi. Selain itu fungsi
commit, savepoint dan rollback independent terhadap blok, tapi perintah tersebut
dapat diaktifkan di dalam blok. PL/SQL tidak mendukung Data Definition
Language ( DDL ) dan Data Control Language ( DCL ). Semua program PL/SQL
mengikuti struktur pemrograman sebagai berikut :
a. Bagian Judul ( Header )
34
b. Bagian ini hanya digunakan jika PL/SQL diberikan nama, misalnya untuk
prosedur atau fungsi. Bagian ini berisi nama blok, daftar parameter, dan
pengambilan hasil ( return ) jika blok adalah fungsi.
c. Bagian Deklarasi ( Declaration )
Bagian ini untuk membuat deklarasi mengenai semua variabel dan konstanta
yang diferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini dimulai
dengan perintah DECLARE. Jika tidak ada variabel atau konstanta yang
ingin dideklarasikan bagian ini boleh dihilangkan.
d. Bagian Eksekusi ( Execution )
Bagian ini memuat pernyataan –pernyataan PL/SQL yang akan ditulis.
Bagian eksekusi ini harus dimulai dengan perintah BEGIN.
e. Bagian Perkecualian ( Exception )
Bagian ini memuat cara menangani kesalahan-kesalahan ( error) pada waktu
eksekusi program PL/SQL. Jika program tidak memuat cara menangani
kesalahan, bagian ini boleh dihilangkan.
Setiap pernyataan PL/SQL harus diakhiri dengan tanda titik koma ( ; )
dan semua program PL/SQL harus diakhiri dengan perintah END. Sintak umum
untuk membuat sebuah blok PL/SQL di Oracle adalah :
DECLARE
Variabel tipe_data; --mendeklarasikan variabel
Konstanta Constant tipe_data := nilai; --Mendeklarasikan konstanta
……………
BEGIN
Statement_1;
35
Statement_2;
…………..
EXCEPTION
WHEN nama_eksepsi THEN
Statemen_untuk_mengatasi_error;
………..
END;
PL/SQL mendukung tipe data SQL. Tipe data SQL dalam Oracle
ditunjukan pada tabel 2.3
Nama Tipe Keterangan
Integer Numerik Untuk menyimpan angka bulat
Number Numerik Untuk menyimpan semua jenis angka baik
bilangn bulat maupun pecahan.
Decimal Numerik Untuk menyimpan angka pecahan
Float Numerik Untuk menyimpan angka pecahan yang
dapat berubah.
Char Karakter Menyimpan karaketr berukuran tetap
sampai 255 karakter
Varchar Karakter Menyimpan karakter dengan ukuran
berubah-ubah
Varchar2 Karakter Menggantikan tipe data varchar dan dapat
menyimpan 2000 karakter
Long Karakter Menympan samapi 2GB karakter
Tabel 2.3 Tipe data PL/SQL
36
Selain tipe data dalam tabel diatas, Oracle PL/SQL juga mendukung
sejumlah tipe data:
1. BOOLEAN : Dipakai untuk menyatakan data logika yaitu TRUE
( benar ), FALSE ( salah ) dan NULL ( kosong )
2. BINARY_INTEGER : Digunakan untuk mendeklarasikan bilanagn
yang tidak mempunyai angka decimal.
3. %tTYPE : Tipe data ini jika dipakai menandakan bahwa variabel
yang dideklarasikan sama dengan tipe data dari kolom tabel tertentu.
4. %ROWTYPE : Tipe data ini menandakan bawa sekelompok variabel
adalah sama dengan tipe data dari row suatu tabel tertentu.
2.12.1 STORE PROCEDURE
Sintak untuk membuat suatu store procedure
CREATE [OR REPLACE] PROCEDURE nama_prosedur
[ ( parameter [ IN | OUT tipe_data [.parameter [ IN | OUT] tipe_data]..)]
{ IS | AS }
[ deklarasi variabel local ]
BEGIN
Seksi_eksekusi
[ Seksi Perkecualian]
END [ nama_prosedur ]
2.12.2 PACKAGE
Package adalah suatu kelompok fungsi dan procedure tersimapn PL /
SQL yang kegunaannya saling berkatian. Package umumnya dibuat
37
untuk tujuan atau pemakaian tertentu. Suatu Package terdiri dari dua
bagian :
1. Package Specification ( Spesifikasi Paket )
2. Package body ( badan Paket ).
Sintak yang digunakan untuk mendeklarasikan Package adalah :
CREATE [OR REPLACE ] PACKAGE nama_package IS
FUNCTION nama_fungsi_tersimpan
[ (parameter [IN ] tipe_data[. Parameter {IN] tipe_data]..)]
RETURN tipe_data
[ FUNCTION berikutnya...]
PROCEDURE nama_procedure_tersimpan
[ ( parameter [ IN | OUT ] tipe_data[. Parameter [ IN | OUT ] tipe_data]..) ]
[ PROCEDURE berikutnya .. ]
END nama_package;
Sintak yang digunakan untuk membuat package body :
CREATE [ OR REPLACE ] PACKAGE BODY nama_package IS
FUNCTION nama_fungsi_tersimpan
[ ( parameter [IN] tipe_data [. Parameter [IN] tipe_data]..)]
RETURN tipe_data
{ IS | AS }
[ deklarasi variabel_lokal ]
BEGIN
SEKSI_EKSEKUSI
[ Seksi perkecualian ]
RETURN nilai fungsi
[ FUNCTION berikutnya…]
PROCEDURE nama_procedure_tersimpan
38
[( Parameter [IN | OUT ] tipe_data [.parameter [ IN | OUT] tipe_data ] ..)]
BEGIN
SEKSI_EKSEKUSI
[Seksi perkecualian ]
END [nama_procedure]
[PROCEDURE berikutnya…]
END nama_package;
2.12.3 SEQUENCE
Sintak yang digunakan untuk membuat sequence adalah :
Create [OR REPLECE] SEQUENCE [nama.table.] nama_sequence
INCREMENT BY nilai_penambahan
START WITH nilai_mula
2.12.4 Fungsi-fungsi PHP yang umum digunakan untuk mengakses
Database Oracle.
Tabel 2.4 merupakan contoh fungsi-fungsi php yang digunakan untuk
mengakses database oracle.
Function Return Description
OCIBindByName ( Statement,
ph_name,&variable, length,
[, type ])
Integer Binds the specified PHP variable to
the oracle placeholder specified by
ph_name
OCIExecute( Statement, [mode
] ) integer Executes the specified SQL
statement.
OCIFetch( Statement) Integer Fetches the next row from the
rusultset. OCIFetchinto( Statement,
results, [mode] ) Integer Retusn the next row from the
resultsetinto the results array.
39
OCIFetchstatement(
Statement, results) Integer Retyrn all rows from the rusultset
into the results array. OCILogoff Integer Close the specified oracle
connection OCILogon ( username,
password, [ database ] ) Integer Opens a connection to an oracle
database and return a connection
identifier. OCIParse (connection, query
)
Integer Validates the specified query.
Tabel 2.4. Contoh fungsi-fungsi PHP yang digunakan untuk mengakses database
Oracle.
40
BAB III
ANALISA DAN PERANCANGAN SISTEM
3.1 ANALISA SISTEM
3.1.1 Gambaran Umum Sistem yang Lama
PT. Bangun Jasa Terpadu bergerak dalam bidang jasa Transportasi baik
darat,laut maupun udara. Sebagai agen resmi PT PELNI, maka PT. Bangun jasa
terpadu melayani pembelian maupun pemesanan tiket untuk 3 dermaga terbesar
di Indonesia yaitu Jakarta, Surabaya dan Semarang. Saat ini pemesanan tiket
masih dilakukan secara manual. Beberapa hal yang harus dilakukan pemesan
antara lain :
1. Untuk melakukan pemesanan, pemesan harus datang langsung ke PT
Bangun Jasa Terpadu dengan membawa kartu identitas.
2. Pemesan harus mengisi form pemesanan yang disedikan oleh PT.
Bangun Jasa Terpadu.
3. Pemesan harus membayar uang muka sebagai tanda bukti pemesaan
sebanyak 50% dari total harga tiket yang dipesan.
4. Pemesan akan diberikan kwitansi sebagai bukti pemesanan.
5. Jika Pemesan membatalkan pemesanan maka dikenakan potongan
sebesar 10% dari jumlah uang muka dan pembatalan tiket paling
lambat 2 hari sebelum tanggal keberangkatan kapal .
6. Pemesan dapat mengambil tiket 1 hari sebelum hari keberangkatan
dan melakukan pelunasan pembayaran.
41
Untuk spesifikasi kapal cirimai dan tatamailau dapat dilihat di table 3.1
Nama Kapal Kelas – Kelas Kapasitas
Kelas I 44 orang
Kelas II 88 orang
Kelas III 288 orang
CIREMAI
Kelas Ekonomi 1.554 orang
Kelas I 14
Kelas II 40
TATAMAILAU
Kelas Ekonomi 915
Tabel 3.1 Spesifikasi Kelas dan Kapasitas kapal.
3.1.2 Gambaran Umum Sistem Yang Baru
Sistem informasi reservasi tiket kapal Laut berbasis web yang dibangun,
bertujuan untuk memudahkan calon penumpang dalam hal melihat informasi
yang berhubungan dengan kapal, pemesanan maupun pembatalan tiket. Salah
satu keuntungan yang diperoleh pemesan adalah tidak adanya pembayaran uang
muka sebagai jaminan maupun potongan harga jika pemesan membatalkan
pesanan tiket.
Sistem informasi reservasi tiket yang dibangun mendukung penggunaan
secara multi user. Sistem ini akan melakukan kontrol terhadap masalah
concurrency yang ada akibat penggunaan secara bersamaan. Untuk mengatasi
42
masalah ini, maka aplikasi ini akan menggunakan dukungan teknologi
manajemen transaksi dengan level isolasi Serializable.
Secara umum ilustrasi pemesanan yang dilakukan oleh pemesanan dalam
sistem yang baru adalah sebagai berikut :
1. Calon penumpang melakukan registrasi terlebih dahulu dengan
mengisikan data-data seperti user id, password , no ktp,nama, alamat,
jenis kelamin, kota, email, dan no_telpon.. Setelah sukses melakukan
registrasi, pemakai akan diberikan username dan password yang
selanjutnya akan digunakan untuk melakukan proses login Jika login
suskes maka pemesan dapat melakukan pemesanan tiket.
2. Informasi yang dapat diperoleh dari sistem ini adalah informasi
mengenai kapal laut, jadwal kapal, harga tiket dan pemesan dapat
melakukan pemesanan maupun pembatalan tiket.
3. Dari dua jenis kapal yang ada pemesan dapat memilih tujuan, tanggal
keberangkatan dan kelas yang diinginkan.
4. Jumlah maksimum tiket yang dapat dipesan adalah sebanyak 5 tiket
untuk setiap kelas.
5. Setelah pemesan berhasil melakukan proses pemesanan tiket, pemesan
akan memperoleh no pesanan yang digunakan sebagai tanda bukti
telah melakukan pemesanan.
6. No pesanan tersebut digunakan pada waktu pengambilan tiket.
Petugas PT Bangun Jasa Terpadu akan mengecek No pesanan dan
43
identitas diri ( NO KTP / SIM ) . Jika sesuai maka proses pembelian
akan dilakukan.
7. Pengambilan tiket paling lambat 1 hari sebelum tanggal
keberangkatan. Jika pemesan belum mengambil pesanan tiket maka
data pesanan akan dihapus.
8. Pada proses pembatalan tiket, akan ditampilkan no pesanan dan detail
data pesanan Selanjutnya pemesan dapat memilih tiket mana yang
dibatalkan.
Sedangkan dari sisi administrator, mengolah dan merekan data dan
melakukan manipulasi terhadap data yang terdapat dalam database. Seperti data
pemesan, data pemesanan,data kapal,data harga kelas, data jadwal, data dermaga,
data kelas, data tempat dan data pembelian.
3.1.2.1 Ruang Lingkup Sistem
Sistem informasi reservasi tiket kapal laut berbasis web terdiri dari 2 buah
subsistem yaitu :
1. Subsistem User
Sistem ini mampu memberikan fasilitas bagi pemakai yang akan melakukan
pemesanan dengan terlebih dahulu mendaftarkan diri melalui form registrasi
yang tersedia. Setalah sukses melakukan registrasi dan mendapatkan
username dan password, selanjutnya pemesanan dapat melakukan proses
pemesanan maupun pembatalan tiket. Bagi pemakai yang telah terdaftar
diberi kemudahan untuk mengubah informasi tentang dirinya dengan cara
44
melakukan login, dan melihat account yang dimilikinya sehingga proses
update data diri dapat di lakukan. Selain itu sistem ini mampu memberikan
informasi tentang jadwal keberangkatan kapal, harga tiket kapal maupun
fasilitas-fasilitas yang dimiliki kapal Pelni.
2. Subsistem Admin.
Subsistem ini di khususkan bagi administrator yang diberi hak untuk
melakukan proses update terhadap data kapal, data kelas, data dermaga, data tiket
yakni jadwal keberangkatan kapal, data harga, data pemesan, data pesanan,data
pembelian, data berita, data fasilitas dan data buku tamu.
3.1.3 Requirement Analysis
Tahap requirement analysis meliputi pembuatan use case diagram.
3.1.3.1. Use Case Diagram
Use case diagram yaitu sebuah diagram yang menggambarkan interkasi
antara sistem dan eksternal sistem dan pemakai. Diagram ini menggambarkan
siapa yang menggunakan sistem dan bagaimana user berinteraksi dengan sistem.
Gambar 3.1 merupakan use case diagram dari sistem informasi reservasi kapal
berbasis web.
45
Gambar 3.1 Use Case diagram
3.1.4 Logical Design
Tahap logical design meliputi prosess modeling dan data modeling.
3.1.4.1 Proses Modeling
Proses modeling dapat dimulai dari pembuatan input dan output dari
sistem, seperti pada tabel 3.2.
46
Tabel 3.2 Input Output Proses Modeling
Entitas Input Output
Pemesan Registrasi pemesan, data
transaksi pemesanan, data
jadwal keberangkatan
kapal yang dipilih, data
buku tamu.
Informasi data registrasi
pemesan,Informasi data
transaksi pemesanan,
informasi data transaksi
pembatalan, informasi
jadwal berangkat kapal,
informasi harga tiket,
informasi fasilitas.
Admin Username dan password admin, data kapal, data kelas, data dermaga,det_kapal (harga ), data tiket ( jadwal kapal ), data pembelian, data tempat, data fasilitas, data berita, data propinsi.
Informasi kapal,
informasi
kelas,informasi dermaga,
informasi harga ,
informasi tiket ( jadwal
keberangkatan kapal ),
informasi
det_tiket(sisa.tiket)
,informasi
pembelian,informasi
tempat, pemesan,
informasi pemesanan,
informasi fasilitas,
informasi berita,
informasi propinsi,
informasi buku tamu.
47
3.1.4.1.1 Context Diagram
Context diagram merepresentasikan elemen sistem sebagai sebuah proses
tunggal dengan inputan dan output data yang ditunjukan oleh panah masuk dan
keluar. Gambar 3.2 adalah contoh context diagram sistem informasi reservasi
tiket kapal laut berbasis web.
Gambar 3.2 Context Diagram
48
3.1.4.1.2 Diagram Berjenjang
Gambar 3.3 Diagram Berjenjang
49
Overview Diagram
OVERVIEW DIAGRAM
Gambar 3.4 overview Diagram
50
OVERVIEW DIAGRAM LEVEL 1 PROSES REGISTARIS DAN LOGIN
Gambar 3.5 Overview diagram level 1 proses registrasi dan login
51
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA KAPAL
Gambar 3.6 overiew diagram level 1 proses data update kapal
52
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA KELAS
Gambar 3.7 overiew diagram level 1 proses data update kelas
53
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DERMAGA
Gambar 3.8 overiew diagram level 1 proses data update dermaga
54
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DET_KAPAL / TARIF TIKET
Gambar 3.9 overiew diagram level 1 proses data update kelas_kapal
55
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA TIKET
Gambar 3.10 overiew diagram level 1 proses data update berangkat
56
OVERVIEW DIAGRAM LEVEL 1 PROSES DATA TRANSAKSI PEMESANAN
Gambar 3.11 overiew diagram level 1 proses data transaksi pemesanan
57
OVERVIEW DIAGRAM LEVEL 1 PROSES DATA TRANSAKSI PEMBELIAN
Gambar 3.12 overiew diagram level 1 proses data transaksi pembelian
58
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA TEMPAT
Gambar 3.13 overview diagram level 1 proses update data tempat
59
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DET_TIKET
Gambar 3.14 overview diagram level 1 proses update data det_tiket
60
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA PEMESAN
Gambar 3.15 overview diagram level 1 proses data Pemesan
61
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA PROPINSI
Gambar 3.16 overview diagram level 1 proses data update propinsi
62
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA FASILITAS
Gambar 3.17 overview diagram level 1 proses update data fasilitas
63
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA BERITA
Gambar 3.18 overview diagram level 1 proses update data berita
64
OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA BUKU TAMU
Gambar 3.19 overview diagram level 1 proses update data buku tamu
65
OVERVIEW DIAGRAM LEVEL 1 PROSES UBAH PASSWORD
Gambar 3.20 overview diagram level 1 proses ubah password
66
Gambar 3.21 overview diagram level 1 proses Logout
OVERVIEW DIAGRAM LEVEL 1 PROSES LOGOUT
67
3.1.4.2 DATA MODELING
Tahap data modeling dapat dimulai dengan pembuatan ER Diagram seperti pada
Gambar 3.22.
Gambar 3.22 ER Diagram
68
3.2 DISAIN SISTEM
3.2.1 Disain Database
Tabel 3.3 Tabel Pemesan
Name Type Size Deskription KeyUser_id Varchar2 8 User id pemesan PK Password Varchar2 12 Password pemesan Nama Varchar2 42 Nama lengkap pemesan JK Varchar2 1 Jenis kelamin pemesan No KTP Varchar2 25 No KTP pemesan Alamat Varchar2 50 Alamat Pemesan No_Tlp Varchar2 12 No telpon pemesan Email Varchar2 30 Email pemesan Kota Varchar2 30 Kota pemesan Tanggal_registrasi date Tanggal registrasi pemesan
Tabel 3.4 Tabel Kapal
Name Type Size Deskription KeyKd_kpl Varchar2 6 Kode Kapal PK Nama Varchar2 20 Nama kapal Route Varchar2 40 Route kapal Keterangan Varchar2 200 Keterangan kapal Gambar Varchar2 25 Gambar kapal
Tabel 3.5 Tabel Kelas
Name Type Size Deskription KeyKd_kls Varchar2 5 Kode kelas PK Nama_kelas Varchar2 20 Nama kelas Fasilitas Varchar2 100 Fasilitas kelas Gambar Varchar2 25 Gambar kelas
Tabel 3.6 Tabel Dermaga
Name Type Size Deskription KeyKd_dermaga Int 5 Kode dermaga PK Nama_dermaga Varchar2 35 Nama dermaga Kota Varchar2 35 Kota
69
Tabel 3.7 Tabel Det_kapal
Name Type Size Deskription KeyKd_dkapal Number 11 Kode detail kapal PK Kd_kpl Varchar2 6 Kode kapal FK Kd_dermaga Number 5 Kode dermaga FK Kd_kls Varchar2 5 Kode kelas FK HD Number 6 Harga dewasa det kapal HA Number 6 Harga anak det kapal HB Number 6 Harga bayi det kapal Kapasitas Number 4 Kapasitas det kapal
Tabel 3.8 Tabel Tiket
Name Type Size Deskription KeyKd_tiket Number 11 Kode jadwal berangkat kapal PK Kd_kpl Varchar2 6 Kode kapal FK Tgl_brkt Date Tanggal berangkat Jam_brkt Varchar2 15 Jam berangkat
Tabel 3.9 Tabel det_tiket
Name Type Size Deskription KeyKd_tiket Number 11 Kode jadwal berangkat kapal FK Kd_dkapal Number 11 Kode detail kapal FK Stok Number 4 Jumlah tiket yang dipesan
Tabel 3.10 Tabel Pemesanan
Name Type Size Deskription KeyNo_psn Varchar2 7 No pesanan PK User_id Varchar2 8 User id pemesan FK Kd_tiket Int 11 Kode jadwal berangkat kapal FK Kd_dkapal Int 11 Kode detail kapal FK Kelas Varchar2 5 Nama kelas JD Number 1 Jumlah dewasa pemesanan JA Number 1 Jumlah anak pemesanan JB Number 1 Jumlah bayi pemesanan Jumlah Number 1 Jumlah total pemesanan Total Number 5 Total harga pemesanan Tgl Date Tanggal transaksi pemesanan
70
Tabel 3.11 Tabel Pembelian
Name Type Size Deskription KeyId_pembelian Int 11 Id pembelian PK User_id Varchar2 8 User id pemesan FK No_psn Varchar2 15 No pesanan FK Tgl Date Tanggal transaksi pembelian
Tabel 3.12 Tabel Tempat
Name Type Size Deskription KeyId_tmp Number 5 Id no tempat PK No_tempat Number 5 No tempat No_psn Varchar2 7 No pesanan FK Id_pembelian Int 11 Id pembelian FK Nama_penumpang Varchar2 50 Nama penumpang Umur Number 3 Umur penumpang
Tabel 3.13 Tabel Fasilitas
Name Type Size Deskription KeyId_fasilitas Int 5 Id fasilitas kapal PK Fasilitas Varchar2 25 Fasilitas yang disediakan kapal Keterangan Varchar2 25 Keterangan fasilitas kapal Foto Varchar2 25 Foto fasilitas kapal
Tabel 3.14 Tabel Berita
Name Type Size Deskription KeyKd_berita Int 11 Kode berita PK Judul_berita Varchar2 50 Judul berita Isi_berita Varchar2 1000 Isi berita Penulis Varchar2 8 Penulis berita
Tabel 3.15 Tabel Propinsi
Name Type Size Deskription KeyIdpropinsi Int 5 Id propinsi PK Namapropinsi Varchar2 50 Nama propinsi
71
Tabel 3.16 Tabel Buku Tamu
Name Type Size Deskription KeyBid Int 11 Id buku tamu PK Nama Varchar2 15 Nama user Alamat Varchar2 30 Alamat user Email Varchar2 20 Email user Komentar Varchar2 100 Komentar user Tgl Date Tanggal pemasukan buku tamu
Tabel 3.17 Tabel Admin
Name Type Size Deskription Keyusername Varchar2 8 Username admin PK Password Varchar2 8 Password admin
72
3.2.2 Relasi Antar Tabel
Relasi antar tabel dari sistem dapat dilihat pada Gambar 3.23
3.3 DISAIN PENANGANAN MASALAH MULTI USER
3.3.1 Kemungkinan Masalah Yang Bisa Terjadi
Dalam Aplikasi ini, terdapat beberapa masalah yang bisa saja terjadi jika
terdapat penggunaan akses secara bersama oleh beberapa pemesan terhadap stok
tiket yang terdapat dalam tabel det_tiket.
Gambar 3.23 Relasi Antar Tabel
73
Salah satu hal yang menyebabkan masalah ini bisa terjadi adalah karena
terdapatnya transaksi pemesanan tiket yang dilakukan secara bersamaan maupun
transaksi pembatalan tiket. Penambahan data transaksi pemesanan akan
mengakibatkan stok pada tabel det_tiket yang nilai awalnya 0 bertambah,
sedangkan pembatalan tiket pemesanan akan mengakibatkan jumlah stok pada
det_tiket berkurang.
Karena kedua transaksi ini memberikan operasi yang berbeda terhadap
jumlah stok det_tiket, maka jika kedua transaksi ini terjadi dalam waktu yang
bersamaan akan menyebabkan beberapa masalah.
Adapun masalah yang bisa saja terjadi adalah sebagai berikut :
Masalah hilangnya data yang diubah (the lost update problem)
Tabel 3.18 berikut merupakan ilustrasi masalah hilangnya data yang
diubah
Waktu Transaksi Pemesanan
Tiket I
Transaksi Pemesanan
Tiket II
Stok
t1 begin transaction 3
t2 begin transaction read(Jumlah Stok) 3
t3 read (Jumlah stok) Jumlah Stok = Jumlah
Stok + 1
3
t4 Jumlah stok = Jumlah
stok +1
write(Jumlah Stok) 4
t5 write (Jumlah Stok) commit 4
t6 commit 4
Tabel 3.18 Contoh ilustrasi masalah hilangnya data yang diubah
74
Dari contoh tersebut tampak bahwa terdapat kehilangan Jumlah stok sebesar 1.
solusinya : hilangnya perubahan data pada transaksi pemesanan tiket II dapat
dicegah dengan melarang transaksi pemesanan tiket I membaca stok sampai
transaksi pemesanan tiket II selesai melakukan perubahan data.
3.3.2 Penanganan Terhadap Masalah Yang Terjadi
Untuk mengatasi masalah yang ada, maka aplikasi ini akan
menggunakan management transaksi atau concurrency control. Level isolasi
digunakan untuk mengontrol tingkat dimana transaksi tertentu terbuka terhadap
tindakan transaksi lain yang melakukan eksekusi secara konkuren. Level isolasi
yang digunakan adalah Serializable. Level isolasi serializable secara umum
merupakan yang paling aman dan direkomendasikan untuk kebanyakan transaksi.
Berikut adalah contoh level isolation transaction serializable pada oracle:
Procedure nama_procedure( parameter in | out tipe data) as BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE Update………. select……… IF error ( can’t serialize access ) then ROLLBACK; ELSE COMMIT; END
75
3.4 DESAIN TEKNOLOGI YANG DIGUNAKAN
3.4.1 Perancangan Arsitektur Perangkat Keras
Untuk arsitektur perangkat keras minimal menggunakan spesifikasi
sebagai berikut:
Database Server
• Prosessor pentium IV
• Kapasitas hardisk 40 GB
• RAM 512 MB
Client
• Prosessor pentium IV
• Kapasitas hardisk 40 GB
• RAM minimal 128 MB
3.4.2 Perancangan Arsitektur Perangkat Lunak
• Sistem Operasi : Windows XP Professional SP 1
• Web Server : Apache Web Server
• Bahasa Scripting : PHP 4.4.4
• Database : Oracle 10G
• Web Browser : IE
76
BAB IV
IMPLEMENTASI SISTEM
4.1 KARAKTERISTIK SISTEM
Setelah selesai merancang dan menganalisa sistem yang akan dibuat,
langkah selanjutnya adalah mencoba mengimplementasikan ke dalam bahasa yang
dapat dimengerti oleh mesin.
Sistem ini dapat mendukung penggunaan secara multi user dikarenakan
sistem ini menggunakan teknologi manajemet transaksi dengan level isolasi
Serializable.
Pada sistem ini terdapat dua subsistem yaitu subsistem admin yang diberi
hak untuk memanipulasi data kapal, kelas, dermaga, det_kapal ( kelas-kapal ),
jadwal berangkat kapal, det_tiket ( jumlah stok terpesan ), proses pembelian,
pemberian tempat, berita, fasilitas dan proses hapus pemesanan. Selain admin,
subsistem kedua yaitu pemesan dapat melakukan proses pemesanan maupun
pembatalan data pemesanan.
4.2 KEBUTUHAN SISTEM
Untuk dapat melakukan pengujian sistem, dibutuhkan beberapa sistem
penunjang, antara lain :
Server
o Microsoft Windows XP Professional SP 1
o Oracle 10g .
77
o PHP 4.4.4
o Apache2, merupakan web service yang sering digunakan untuk aplikasi
berbasis web.
Client
o Microsoft Windows XP Professional SP 1.
o Internet Explorer 6.0 SP 1, merupakan web browser yang digunakan
untuk mengakses sistem yang dibuat.
4.3 Setting Koneksi PHP ke Oracle Database
PHP memiliki file. Dll ( Dinamyc link library ) khusus untuk mengkoneksi
PHP ke oracle database yaitu dengan menggunakan file php_oci8.dll.
Langkah- langkah mengkoneksi PHP ke oracle database :
1. Mengaktifkan extensions OCI8 pada file php.ini ( file konfogurasi
untuk PHP ), pada bagian dynamic extensions di php.ini remark pada
extension=php_oci8.dll dihilangkan.
2. copy kan php_oci8.dll ke folder C:\windows/system32. File
php_oci8.dll biasanya terletak pada folder extension, folder
extensions terletak dibawah folder php. Jika file php_oci8.dll tidak
tersedia pada extensions maka carilah pada package software php.
;extension=php_mssql.dll extension=php_oci8.dll ;extension=php_openssl.dll
78
3. Konekasikan PHP ke oracle database menggunakan script. Script ini
disimpan sebagai file php. Contoh script koneksi dari php ke oracle
database.
OCILogon merupakan statement yang digunakan untuk melakukan koneksi
dari php ke oracle database. Statement diatas bjt merupakan nama user,
yang mana user bjt mempunyai hak akses atas tabel, kemudian wiwi
merupakan password dari user bjt dan BangunJs merupakan nama database.
4.4 Pembuatan Antar muka Pemakai (User Interface)
4.4.1 User Interface untuk Users.
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");
79
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
ini :
80
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\">"; } ?>
81
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',:pesanerror); 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>"); }
82
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
melakukan pengecekan jika data jadwal kapal yang dicari tidak ditemukan
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; end;
83
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); $nrows=ocifetchstatement($parsed,$results);
84
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'>"; } }
85
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>
86
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>]"; }> ?>
87
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];
88
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>"; ?>
89
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,dermaga.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>"; }
90
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 :
91
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;
92
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',:pesanerror); 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>"); }
93
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;
94
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;
95
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;
96
4.4.2 User Interface untuk Admin
4.4.2.1 Proses Input Admin
User interface untuk input dapat dilihat pada Gambar 4.12 sampai
Gambar 4.18. User interface untuk input meliputi :
1. Login Admin
Gambar 4.12 merupakan gambar user interface untuk login Admin.
$query=ociparse($conn,"begin ubahdatauser('$user_id','$nama','$passp','$alamat','$no_tlp','$email','$no_ktp',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror')</script>"); echo("<script>document.location=\"lihatdd.php\"</script>"); } else { echo("<script>alert('Update Data Sukses !!Silakan Login Kembali')</script>"); echo("<script>document.location=\"logout.php\"</script>"); } } else { echo("<script>alert('Update Gagal dimasukan')</script>"); echo("<script>document.location=\"logout.php\"</script>"); }
97
Gambar 4.12 Gambar Login Admin
Untuk menggunakan sistem ini maka admin harus melakukan proses login
terlebih dahulu. Setelah memasukkan username dan password maka sistem akan
mengecek apakah username 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 login admin valid maka akan
dilanjutkan ke halaman home admin. Proses pengecekan dapat dilihat pada
perintah berikut ini :
<? include"connect.php"; $query="select username,password from admin where username='$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_admin.php"); } else { echo "<script>alert('LOGIN SALAH')</script>"; echo"<meta http-equiv=\"refresh\" content=\"0; url=loginadmin.htm\">"; } ?>
98
2. Input Kapal
Gambar 4.13 merupakan gambar user interface untuk input kapal.
Gambar 4.13 Gambar Input Kapal.
Data kode kapal yang dimasukan pada proses input kapal ini harus unik
karena setiap kapal punya kode kapal yang berbeda. Jika admin memasukan kode
kapal yang sudah digunakan maka sistem akan menampilkan pesan error bahwa
data kapal gagal dimasukan. Procedure yang digunakan untuk menginputkan data
kapal sesuai dengan gambar 4.13 dapat dilihat pada perintah berikut ini :
Create or replace procedure insert_kapal(nama_kpl in kapal.nama%type, kode IN kapal.kd_kpl%type, arah IN kapal.route%type, gmb IN kapal.gambar%type, ket IN kapal.keterangan%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(kd_kpl) into cek from kapal where kd_kpl=kode; if cek > 0 then rollback; pesanerror:='Data Kapal Gagal Disimpan'; else insert into kapal(nama,kd_kpl,route,gambar,keterangan) values(nama_kpl,kode,arah,gmb,ket); commit; end if; end insert_kapal;
99
Proses untuk menambah data kapal dapat dilihat pada perintah sebagai berikut :
3. Input Kelas
Gambar 4.14 merupakan gambar user interface untuk input kelas.
Gambar 4.14 Gambar user interface untuk input kelas.
copy($_FILES["foto"]["tmp_name"],"image1/".$_FILES["foto"]["name"]); $query=ociparse($conn,"begin admin_area.insert_kapal('$nama','$kd','$tjn','".$_FILES["foto"]["name"]."','$ket',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query,OCI_DEFAULTS); if($test) {
if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addkapal.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kapal.php\"</script>"); }
} else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"addkapal.php\"</script>"); }
100
Seperti halnya dengan Data kode kapal, data kode kelas yang dimasukan
pada proses input kelas ini harus unik juga. Akan ada pengecekan pada saat proses
penginputan data kelas. Jika admin memasukan kode kelas yang sudah digunakan
maka sistem akan menampilkan pesan error bahwa data kelas gagal dimasukan.
Procedure yang digunakan untuk menginputkan data kelas sesuai dengan gambar
4.14 dapat dilihat pada perintah berikut ini :
Proses untuk menambah data kelas dapat dilihat pada perintah sebagai berikut
Create or replace procedure insert_kelas(kode in kelas.kd_kls%type, nm IN kelas.nama_kelas%type, fas IN kelas.fasilitas%type, gmb IN kelas.gambar%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(*) into cek from kelas where kd_kls=kode; if cek > 0 then rollback; pesanerror:='Data Kelas Gagal Disimpan'; else insert into kelas(KD_KLS,NAMA_KELAS,FASILITAS,GAMBAR) values(kode,nm,fas,gmb); COMMIT; end if; end insert_kelas;
copy($_FILES["foto"]["tmp_name"],"image1/".$_FILES["foto"]["name"]); $query=ociparse($conn,"begin admin_area.insert_kelas('$kls','$nama','$fas','".$_FILES["foto"]["name"]."',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if ($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addkelas.php\"</script>"); }
101
4. Input Dermaga
Gambar 4.15 merupakan gambar user interface untuk input dermaga.
Gambar 4.15 Gambar user interface untuk input dermaga.
Proses input dermaga dimaksudkan untuk memasukan nama dermaga dan
kota tempat tujuan kapal. Pada proses input dermaga ini akan ada pengecekan saat
admin memasukan kota. Jika kota yang dimasukan sudah ada maka sistem akan
menampilkan pesan error bahwa data dermaga gagal dimasukan. Procedure yang
else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kelas.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kelas.php\"</script>"); }
102
digunakan untuk menginputkan data dermaga sesuai dengan gambar 4.15 dapat
dilihat pada perintah berikut ini :
Proses untuk menambah data dermaga dapat dilihat pada perintah sebagai
berikut
Create or replace procedure insert_dermaga(nama in dermaga.nama_dermaga%type, kota IN dermaga.kota%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(nama_dermaga) into cek from dermaga where nama_dermaga=nama; if cek > 0 then rollback; pesanerror:='Data dermaga Gagal Disimpan'; else insert into dermaga( KD_DERMAGA, NAMA_DERMAGA, KOTA) values(dm.nextval,nama,kota); COMMIT; end if; end insert_dermaga;
$query=ociparse($conn,"begin admin_area.insert_dermaga('$nama','$kota',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"adddermaga.php\"</script>"); //echo $coba; } else { echo("<script>alert('data sukses disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_dermaga.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_dermaga.php\"</script>"); }
103
5. Input Tiket ( Jadwal Berangkat Kapal )
Gambar 4.16 merupakan gambar user interface untuk input tiket.
Gambar 4.16 Gambar user interface untuk input tiket.
Proses input tiket dimaksudkan untuk memasukan jadwal keberangkatan
kapal.. Pada proses input dermaga ini akan ada pengecekan saat admin
memasukan nama kapal dan tanggal keberangkatan. Jika kapal dengan tanggal
yang dimasukan sudah ada datanya maka sistem akan menampilkan pesan error
bahwa data jadwak kapal gagal dimasukan. Procedure yang digunakan untuk
menginputkan data tiket ( jadwal kapal ) sesuai dengan gambar 4.16 dapat dilihat
pada perintah berikut ini :
Create or replace procedure insert_jadwal(kpl IN tiket.kd_kpl%type,tanggal in tiket.tgl_brkt%type,jam IN tiket.jam_brkt%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(*) into cek from tiket where kd_kpl=kpl and tgl_brkt=tanggal; if cek > 0 then rollback; pesanerror:='Data jadwal Gagal Disimpan';
104
Proses untuk menambah data tiket ( jadwal Kapal ) dapat dilihat pada perintah
sebagai berikut :
6. Input Det_kapal
Gambar 4.17 merupakan gambar user interface untuk input det_kapal
$query=ociparse($conn,"begin admin_area.insert_jadwal('$kd_kpl','$tgl_brkt-$bln_brkt-$thn_brkt','$jam:$menit:$detik',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addjadwal.php\"</script>"); //echo $coba; } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"detail_jadwal.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"detail_jadwal.php\"</script>"); }
else insert into tiket(kd_tiket,kd_kpl,tgl_brkt,jam_brkt) values(tkt.nextval,kpl,tanggal,jam); insert into det_tiket(kd_tiket,kd_dkapal,stok) select max(tiket.kd_tiket),det_kapal.kd_dkapal,0 from tiket ,det_kapal where tiket.kd_kpl=det_kapal.kd_kpl and det_kapal.kd_kpl=kpl GROUP BY det_kapal.kd_dkapal ORDER BY det_kapal.kd_dkapal; COMMIT;
d if
105
Gambar 4.17 Gambar user interface untuk input det_kapal
Seperti halnya dengan proses input tiket ( jadwal keberangkatan kapal ),
proses input det_kapal atau proses memasukan detail kelas kapal seperti harga dan
kapasitas dilakukan pengecekan. Ada dua pengecekan yang dilakukan oleh sistem
yaitu pertama, sistem akan mengecek apakah kapal dengan tujuan dan kelas yang
dimasukan sudah ada datanya atau tidak. Jika datanya ada maka sistem akan
menampilkan pesan error data det_kapal gagal dimasukan. Yang kedua sistem
akan melakukan pengecekan terhadap kapasitas kelas yang dimasukan. Jika
kapasitas yang dimasukan tidak sama untuk kapal dan kelas yang sama namun
tujuan yang berbeda, maka sistem akan menampilkan error data det_kapal gagal
disimpan. Pengecekan ini dilakukan karena kapasitas untuk kelas yang sama,kapal
yang sama namun yang berbeda adalah sama. Procedure yang digunakan untuk
menginputkan data kelas sesuai dengan gambar 4.17 dapat dilihat pada perintah
berikut ini :
Create or replace procedure insert_detkapal(kpl IN det_kapal.kd_kpl%type,ddermaga IN det_kapal.kd_dermaga%type,dkls IN det_kapal.kd_kls%type,dhd IN det_kapal.hd%type,dha IN det_kapal.hd%type,dhb IN det_kapal.hb%type,kap IN det_kapal.kapasitas%type,pesanerror out varchar2 )
106
Proses untuk menambah det_tiket dapat dilihat pada perintah sebagai berikut :
$query=ociparse($conn,"begin admin_area.insert_detkapal('$kd_kpl','$kd_dermaga','$kd_kls','$hd','$ha','$hb','$kap',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>");
echo("<script>document.location=\"addharga.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>");
echo("<script>document.location=\"lihat_harga.php\"</script>"); } }
is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(*) into cek from det_kapal where kd_kpl=kpl and kd_kls=dkls; if cek > 0 then select count(*) into cekkls from det_kapal where kd_kpl=kpl and kd_kls=dkls and kd_dermaga=ddermaga; if cek1 >0 then rollback; pesanerror:='Data kelas kapal Gagal Disimpan'; else select count(kapasitas) into cekkap from det_kapal where kd_kpl=kpl and kd_kls=dkls and kapasitas=kap; if cekkap > 0 then insert into det_kapal( kd_dkapal,kd_kpl,kd_dermaga,kd_kls,hd,ha,hb,kapasitas)values(dkapal.nextval, kpl,ddermaga,dkls,dhd,dha,dhb,kap); COMMIT; else pesanerror:='kapasitas tidak sama'; end if; end if; else insert into det_kapal( kd_dkapal,kd_kpl,kd_dermaga,kd_kls,hd,ha,hb,kapasitas)values(dkapal.nextval, kpl,ddermaga,dkls,dhd,dha,dhb,kap); commit; end if; end insert_detkapal;
107
7. Input Tempat
Gambar 4.18 merupakan gambar user interface untuk input pembelian dan
tempat.
Gambar 4.18 Gambar user interface untuk input pembelian dan tempat
Proses input pembelian dilakukan jika pemesan melakukan pembelian
langsung ke PT. Bangun Jasa Terpadu. Pertama-tama admin akan melakukan
pengecekan terhadap identitas pemesan. Jika data identitasnya sesuai dengan data
pada waktu registrasi maka proses pembelian dapat dilakukan. Admin akan
else { echo("<script>alert('data gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_harga.php\"</script>"); }
108
menginputkan nama, no dek dan umur penumpang sesuai dengan jumlah pesanan.
Pemberian no tempat akan dilakukan secara langsung oleh sistem pada waktu
pembelian sesuai dengan kelas yang dipilih. Script yang digunakan untuk
menginputkan data pembelian dan tempat sesuai dengan gambar 4.17 dapat
dilihat pada perintah berikut ini :
4.4.2.2 Proses Output Admin
User interface untuk output dapat dilihat pada Gambar 4.18 sampai
Gambar 4.26. User interface untuk output meliputi :
<? 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,"insert into pembelian values(bl.nextval,sysdate,'$user','$no_psn')"); $cek=ociexecute($query); if($cek) { $query1 = ociparse($conn,"select max(id_pembelian) as ID_PEMBELIAN from pembelian"); ociexecute($query1); $nrows = ocifetchstatement($query1, $results); $kode=$results["ID_PEMBELIAN"][0]; $penumpanng = $_POST["p"]; for($i=0;$i<count($penumpanng);$i++) { $query2 = ociparse($conn,"insert into tempat (id_tmp,no_tempat,nama_penumpang,umur,no_psn,id_pembelian,nodek) values(id_tmp.nextval,'".$penumpanng[$i]["no"]."','".$penumpanng[$i]["nama"]."','".$penumpanng[$i]["umur"]."','".$_POST["no_psn"]."','$kode','$dek')"); ociexecute($query2); } } else { echo("<script>alert('data gagal disimpan !!!!')</script>"); echo("<script>document.location=\"prosespembelian.php\"</script>"); } } ?>
109
1. Output Kapal
Gambar 4.19 Merupakan gambar Output Kapal
Gambar 4.19. Gambar Output Kapal
Pada halaman ini akan ditampilkan detail data kapal beserta link untuk
proses edit dan hapus kapal. Proses output seperti gambar 4.19 dapat dilihat pada
perintah berikut ini :
<? include "connect.php"; $query = "select * from kapal order by kd_kpl"; $parsed = ociparse($conn, $query); ociexecute($parsed); ocicommit($conn); $nrows = ocifetchstatement($parsed, $results); echo"<table width=\"550\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"> <th>No</th> <th>KODE KPL</th> <th>NAMA KAPAL</th> <th>RUTE KPL</th> <th>GAMBAR</th> <th>KETERANGAN</th> <th>ACTION </th> <tr>"; $a=1; $no=0; for ($i = 0; $i < $nrows; $i++ ) {
110
2. Output Kelas
Gambar 4.20 Merupakan gambar Output Kelas
Gambar 4.20 Gambar output kelas
if($a==0) { echo"<tr bgcolor=\"white\" height=\"30\">"; $a++; } else { echo"<tr bgcolor=\"\" height=\"30\" >"; $a--; } $no++; $rownama=$results['NAMA'][$i]; $rowkd=$results['KD_KPL'][$i]; $rowtjn=$results['ROUTE'][$i]; $rowket=$results['KETERANGAN'][$i]; $gambar=$results['GAMBAR'][$i]; echo("<td>$no</td>"); echo("<td>$rowkd</td>"); echo ucwords("<td>$rownama</td>"); echo ucwords("<td>$rowtjn</td>"); echo("<td><a href=editgmbkpl.php?act=editgmb&kd=$rowkd><img src=\"image1/$gambar\" width='150'></a></td>"); echo ucwords("<td>$rowket</td>"); echo("<td><a href=editkapal.php?act=edit&kd=$rowkd>Edit </a> | "); echo("<a href=editkapal.php?act=hapus&kd=$rowkd>Delete</a></td>"); echo("</tr>"); } echo"</table>"; ?>
111
Pada halaman ini akan ditampilkan detail data kelas beserta link untuk
proses edit dan hapus kelas. Proses output seperti gambar 4.20 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); $nrows = ocifetchstatement($parsed, $results); echo"<table width=\"550\" border=\"0\" align =\"center\" class='boxtext'> <tr bgcolor=\"#66CC99\"> <th>No</th> <th>KODE </th> <th>NAMA KLS</th> <th>FASILITAS</th> <th>GAMBAR</th> <th>ACTION</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++; $rowkls=$results['KD_KLS'][$i]; $rownama=$results['NAMA_KELAS'][$i]; $rowfas=$results['FASILITAS'][$i]; $gambar=$results['GAMBAR'][$i]; echo("<td>$no</td>"); echo("<td>$rowkls</td>"); echo("<td>$rownama</td>"); echo("<td>$rowfas</td>"); echo("<td><a href=editgmbkls.php?act=editgmb&kd=$rowkls><img src=\"image1/$gambar\" width='100'></a></td>"); echo("<td><a href=editkelas.php?act=edit&kls=$rowkls>Edit </a> --"); echo("<a href=editkelas.php?act=hapus&kls=$rowkls>Delete</a></td>"); echo("</tr>"); } echo"</table>"; ?>
112
3. Output Dermaga
Gambar 4.21 Merupakan gambar Output Dermaga
Gambar 4.21 Gambar Output Dermaga
Pada halaman ini akan ditampilkan detail data dermaga beserta link untuk
proses edit dan hapus dermaga. Proses output seperti gambar 4.21 dapat dilihat
pada perintah berikut ini :
<? include "connect.php"; $query = "select * from dermaga order by kd_dermaga"; $parsed = ociparse($conn, $query); ociexecute($parsed); ocicommit($conn); $nrows = ocifetchstatement($parsed, $results); echo"<table width=\"500\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"> <th>No</th> <th>NAMA DERMAGA</th> <th>KOTA</th> <th width=\"90\">ACTION </th> <tr>"; $a=1; $no=0; for ($i = 0; $i < $nrows; $i++ ) {
113
4. Output Tiket
Gambar 4.22 Merupakan gambar Output Tiket ( Jadwal Keberangkatan
kapal)
Gambar 4.22 Gambar Output Tiket
if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++; } else { echo"<tr bgcolor=\"\" >"; $a--; } $no++; $rownama=$results['NAMA_DERMAGA'][$i] ;$rowkd=$results['KD_DERMAGA'][$i]; $rowkt=$results['KOTA'][$i]; echo("<td>$no</td>"); echo ucwords("<td>$rownama</td>"); echo ucwords("<td>$rowkt</td>"); echo("<td><a href=editdermaga.php?act=edit&kode=$rowkd>Edit </a> --"); echo("<a href=editdermaga.php?act=hapus&kode=$rowkd>Delete</a></td>"); echo("</tr>"); } echo"</table>"; ocilogoff($conn); ?>
114
Pada halaman ini akan ditampilkan detail data tiket ( jadwal ) beserta link
untuk proses edit dan hapus tiket. Proses output seperti gambar 4.22 dapat dilihat
pada perintah berikut ini :
<? include "connect.php"; $parsed= ociparse($conn,"select kapal.kd_kpl,kapal.nama,tiket.tgl_brkt,tiket.jam_brkt,kapal.route,tiket.kd_tiket from kapal,tiket where (kapal.kd_kpl=tiket.kd_kpl) order by nama"); $test=ociexecute($parsed); ocicommit($conn); echo"<table width=\"600\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"> <th>No</th> <th>KODE KPL</th> <th>NAMA KAPAL</th> <th width=\"80\">TGL BRKT</th> <th>JAM BRKT</th> <th>RUTE KAPAL</th> <th width=\"80\">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]</td>"); echo("<td><a href=sisatiket.php?kd=$results[5]>$results[2]</a></td>"); echo("<td>$results[3]</td>"); echo("<td>$results[4]</td>"); echo("<td><a href=editjadwal.php?act=edit&kd=$results[5]>Edit </a>--"); echo("<a href=editjadwal.php?act=hapus&kd=$results[5]>Delete </a> </td>"); echo("</tr>"); } echo"</table>"; ?>
115
5. Ouput Det_tiket ( Stok kapal)
Gambar 4.23 Merupakan gambar Output det_tiket ( stok kapal)
Gambar 4.23 Gambar ouput det_tiket
Pada halaman ini akan ditampilkan detail data det_tiket yaitu jumlah tiket
yang sudah terpesan dan sisa tiket yang belum terpesan berdasarkan kelas,kapal
dan tanggal keberangkatan. Proses output seperti gambar 4.23 dapat dilihat pada
perintah berikut ini :
<? include "connect.php"; $parsed = ociparse($conn,"select distinct kelas.nama_kelas,tiket.tgl_brkt,det_kapal.kapasitas,det_tiket.stok from det_kapal,kapal,kelas,tiket,det_tiket where (kelas.kd_kls=det_kapal.kd_kls) and (kapal.kd_kpl=det_kapal.kd_kpl) and (det_tiket.kd_tiket=tiket.kd_tiket) and (det_kapal.kd_dkapal=det_tiket.kd_dkapal)and (det_kapal.kd_dkapal=det_tiket.kd_dkapal) and tiket.kd_tiket='$kd' order by kelas.nama_kelas asc"); ociexecute($parsed); ocicommit($conn); echo"<table width=\"550\" border=\"0\" align =\"center\" class='boxtext' > <tr bgcolor=\"#66CC99\"> <th>No</th><th>NAMA KLS</th> <th>TGL BRKT</th> <th>KAPASITAS</th> <th>TERPESAN</th> <th>SISA</th><tr>"; $a=1; $no=0;
116
6. Output Det_kapal
Gambar 4.24 Merupakan gambar Output det_Tiket ( Harga Tiket Kapal)
Gambar 4.24 Gambar Output Det_tiket
while(ocifetchinto($parsed,$results)) { if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++;} else { echo"<tr bgcolor=\"\" >"; $a--; } $no++; $sisa=$results[2]-$results[3]; echo("<td>$no</td>"); echo ("<td>$results[0]</td>"); //untuk field kota dari tabel dermaga echo("<td>$results[1]</td>"); //untuk field nama kelas dari tabel kelas echo("<td align='center'>$results[2]</td>"); //untuk filed kapasitas dari tabel det_kapal echo("<td align='center'>$results[3]</td>"); //untuk field sisa dari tabel det tiket echo("<td align='center'>$sisa</td>"); //untuk field sisa dari tabel det tiket echo("</tr>"); } echo"</table>";echo"<br><br>";echo"<div class='poling' align='center'>"; echo"[<a href=javascript:history.go(-1)>Kembali</a>]";echo"</div'>"; ?>
117
Pada halaman ini akan ditampilkan detail_tiket ( harga tiket kelas kapal )
beserta link untuk proses update. Proses output seperti gambar 4.23 dapat dilihat
pada perintah berikut ini :
include "connect.php"; include"rupiah.php"; //menampilkan field2 dari beberapa tabel $parsed = ociparse($conn,"select dermaga.kota,kelas.nama_kelas,det_kapal.hd,det_kapal.ha,det_kapal.hb,det_kapal.kapasitas,det_kapal.kd_dkapal,kapal.kd_kpl,kelas.kd_kls from det_kapal,kapal,kelas,dermaga where (kelas.kd_kls=det_kapal.kd_kls) and (kapal.kd_kpl=det_kapal.kd_kpl) and (dermaga.kd_dermaga=det_kapal.kd_dermaga) and kapal.kd_kpl like '%$kd_kpl%' order by dermaga.kota"); $test=ociexecute($parsed); ocicommit($conn); echo"<table border=\"0\"align =\"center\" class='menu'> <tr> <td>Data yang ditemukan untuk kode kapal '$kd_kpl' Adalah :</td><tr>"; echo"</table>"; echo"<br>"; echo"<table width=\"550\" border=\"0\" align =\"center\" class='boxtext'> <tr bgcolor=\"#66CC99\"> <th>No</th> <th>TUJUAN</th>
<th>NAMA KLS</th> <th>HD</th>
<th>HA</th> <th>HB</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++; $hd=rupiah($results[2]); $ha=rupiah($results[3]); $hb=rupiah($results[4]); echo("<td>$no</td>"); echo ("<td>$results[0]</td>"); //untuk field kd_brkt dari tabel berangkat echo("<td>$results[1]</td>"); //untuk field nama_kelas dari tabel kelas
118
7. Output Data Tempat
Gambar 4.25 Merupakan gambar Output tempat
Gambar 4.25 Gambar Output tempat
Pada halaman ini akan ditampilkan detail data penumpang beserta no
tempat yang diperoleh. Proses output seperti gambar 4.25 dapat dilihat pada
perintah berikut ini :
echo("<td>$hd</td>"); //untuk field harga dewasa (HD) dari tabel kelas_kapal echo("<td>$ha</td>"); //untuk field harga anak(HA) dari tabel kelas_kapal echo("<td>$hb</td>"); //untuk field harga bayi (HB) dari tabel kelas_kapal echo("<td><a href=editharga.php?act=edit&kd=$results[6]>Edit </a> </td>"); echo("</tr>"); } echo"</table>"; echo"<br>"; echo"<div class='poling' align='center'>"; echo"[<a href=javascript:history.go(-1)>Kembali</a>]"; echo"</div'>"; } ?>
119
include "connect.php"; $parsed = ociparse($conn,"select kapal.nama,tiket.tgl_brkt,tiket.jam_brkt,dermaga.kota,det_kapal.hd,det_kapal.hb,det_kapal.ha,tempat.nama_penumpang,pemesanan.no_psn,tempat.no_tempat,tempat.nodek,tempat.umur,pembelian.id_pembelian,pembelian.tgl,kelas.nama_kelas from tempat,pemesanan,pembelian,kapal,det_kapal,dermaga,kelas,tiket where (pemesanan.no_psn=pembelian.no_psn) and (pemesanan.no_psn=tempat.no_psn) and (pemesanan.kd_dkapal=det_kapal.kd_dkapal) and (kapal.kd_kpl=det_kapal.kd_kpl) and (dermaga.kd_dermaga=det_kapal.kd_dermaga)and (kelas.kd_kls=det_kapal.kd_kls) and (pemesanan.kd_tiket=tiket.kd_tiket)") ; ociexecute($parsed); $nrows = ocifetchstatement($parsed, $results); echo"<table width=\"600\" border=\"0\" align =\"center\" class='overflow'> <tr bgcolor=\"#66CC99\"> <th>No</th> <th>NO PESANAN</th><th>TGL Pembelian</th> <th>Nama Penumpang</th> <th>Umur</th><th>Nama KPL</th><th>DARI</th><th>Tujuan</th><th>Tgl Brkt/Jam rkt</th> <th>Kelas</th><th>No Tempat</th><th>No Dek</th><tr>"; $a=1; $no=0; for($i=$page;$i<$akhir;$i++) { if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++; } else { echo"<tr bgcolor=\"\" >"; $a--; } $no++; echo("<td>$no</td>"); echo("<td>".$results['NO_PSN'][$i]."</td>"); echo("<td>".$results['TGL'][$i]."</td>"); echo("<td>".$results['NAMA_PENUMPANG'][$i]."</td>"); echo("<td>".$results['UMUR'][$i]."</td>"); echo("<td>".$results['NAMA'][$i]."</td>"); echo("<td>SURABAYA</td>"); echo("<td>".$results['KOTA'][$i]."</td>"); echo("<td>".$results['TGL_BRKT'][$i]."/".$results['JAM_BRKT'][$i]."</td>"); echo("<td>".$results['NAMA_KELAS'][$i]."</td>"); echo("<td>".$results['NO_TEMPAT'][$i]."</td>"); echo("<td>".$results['NODEK'][$i]."</td>"); echo("</tr>"); } echo"</table>";echo"</table>"; echo"<br>";echo" <div align='center'>";echo" </div>"; ?>
120
8. Output Data Pemesanan
Gambar 4.26 Merupakan gambar Output data pemesanan.
Gambar 4.26 Output Data Pemesanan
Pada halaman ini akan ditampilkan detail data pemesanan beserta link
untuk proses hapus pemesanan. Proses output seperti gambar 4.26 dapat dilihat
pada perintah berikut ini :
include "connect.php"; include"rupiah.php"; echo"<form method=get action=hapuspesanan_admin.php>"; $parsed = ociparse($conn,"select pemesanan.no_psn,pemesan.user_id,pemesanan.tgl,kapal.nama,dermaga.kota,kelas.nama_kelas,tiket.tgl_brkt,tiket.jam_brkt,pemesanan.jd,pemesanan.ja,pemesanan.jb,pemesanan.total,pemesan.user_id from pemesanan,det_kapal,tiket,dermaga,kelas,kapal,pemesan where (pemesanan.user_id=pemesan.user_id) and (pemesanan.kd_dkapal=det_kapal.kd_dkapal) and (pemesanan.kd_tiket=tiket.kd_tiket) and (kelas.kd_kls=det_kapal.kd_kls) and (dermaga.kd_dermaga=det_kapal.kd_dermaga) and (kapal.kd_kpl=det_kapal.kd_kpl) order by no_psn asc") ; ociexecute($parsed); $nrows = ocifetchstatement($parsed, $results); echo"<br><br>"; echo"<table width=\"580\" border=\"0\" align =\"center\" class='boxtext'> <tr bgcolor=\"#66CC99\"> <th>No</th>
<th>NO PSN</th> <th>NAMA</th> < th width=\"80\">TGL PESAN</th> <th>NAMA KPL</th>
<th>TJN</th><th>KELAS</th> <th>TGL/JAM BRKT</th> <th>JD</th> <th>JA</th>
<th>JB</th> <th>TOTAL</th> <th>ACT</th><tr>"; $a=1;
$no=0;
121
for($i=$page;$i<$akhir;$i++) { if($a==0) { echo"<tr bgcolor=\"white\" >"; $a++; } else { echo"<tr bgcolor=\"\" >"; $a--; } $no++;
$harga=$results['TOTAL'][$i]; $total=rupiah($harga); $user=$results['USER_ID'][$i]; $no_psn=$results['NO_PSN'][$i];
echo("<td>$no</td>"); echo ("<td>$no_psn</td>"); echo("<td>$user</td>"); echo("<td>".$results['TGL'][$i]."</td>"); echo("<td>".$results['NAMA'][$i]."</td>"); echo("<td>".$results['KOTA'][$i]."</td>"); echo("<td>".$results['NAMA_KELAS'][$i]."</td>"); echo("<td>".$results['TGL_BRKT'][$i]."/".$results['JAM_BRKT'][$i]."</td>"); echo("<td>".$results['JD'][$i]."</td>"); echo("<td>".$results['JA'][$i]."</td>"); echo("<td>".$results['JB'][$i]."</td>"); echo("<td>$total</td>"); echo("<td><input name=daftar[] type=checkbox value=$no_psn></td>"); echo("</tr>"); } echo"</table>"; echo"</table>"; echo"<br>"; echo" <div align='center'>"; echo"<input type=submit value=hapus></form>"; echo" </div>"; ?>
122
BAB V
ANALISA HASIL
5.1 Pengujian Aplikasi
5.1.1 Pengujian Aplikasi Tanpa Menggunakan Teknologi Manajemen
Transaksi
Untuk melakukan pengujian pada aplikasi yang tidak menggunakan
teknologi manajemen transaksi, digunakan 2 buah simulasi aplikasi yang sama-
sama tidak menggunakan teknologi manajemen transaksi. Kedua simulasi aplikasi
tersebut diberikan delay agar kedua simulasi tersebut bisa bertabrakan ketika
keduanya dijalankan. Dari hasil analisa yang dilakukan terhadap tabel- tabel yang
digunakan, penerapan menejement transaksi akan dilakukan pada tabel pemesanan
dan det_tiket.
Berikut ini adalah ilustrasi pengujian yang dilakukan. Gambar 5.1
merupakan gambar user interface data jumlah stok tiket awal pengujian aplikasi
tanpa penggunaan teknologi manajemen transaksi.
Gambar 5.1 User Interface Data Jumlah Stok tiket awal Pengujian Aplikasi Tanpa Penggunaan Teknologi Manajemen transaksi.
123
Dalam pengujian ini, digunakan salah satu kelas dari kapal cirimai yaitu
kelas II. Jumlah stok pesanan awal tiket = 3 dengan sisa tiket 85.
Berikut ini adalah simulasi aplikasi yang digunakan. Gambar 5.2
merupakan gambar user interface simulasi tak ada manajemen transaksi 1.
Gambar 5.2 User Interface Simulasi Tak Ada Manajemen Transaksi 1
Pada simulasi pertama terjadi pemesanan tiket dengan jumlah pesanan
sebanyak 1 tiket untuk kelas II dengan tujuan Tual. Simulasi ini juga
menggunakan stored procedure yang diberikan delay yaitu dengan melakukan
looping terhadap perintah update data stok. Berikut ini adalah perintah delay yang
digunakan.
124
Berikut ini adalah stored procedure yang digunakan.
Create or replace procedure tanpatransaction ( 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; jumlahstok integer; kap det_kapal.kapasitas%type; stokakhir det_tiket.stok%type; counter integer ; v_cek_count INTEGER; BEGIN select stok into stokakhir from det_tiket where kd_tiket=tiket and kd_dkapal=kapal; counter := 0; LOOP counter := counter + 1; EXIT WHEN counter = 10000000; END LOOP; jumlahstok:=stokakhir+( jumlah_dws+ jumlah_ank+ jumlah_by); update det_tiket set stok= jumlahstok 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 - sstok); if(hasil<0) then pesanerror:='Data Pesanan gagal'; else insert into pemesanan(no_psn,user_id, jd, ja, jb, total, tgl,kd_tiket,kd_dkapal,jumlah,kelas) values(kodepsn.nextval,user, jumlah_dws, jumlah_ank, jumlah_by, total_hrg, sysdate, tiket ,kapal, jumlah_dws+ jumlah_ank+ jumlah_by,kls); end if; -- akhiri perulangan pertama end;
counter := 0; LOOP counter := counter + 1; EXIT WHEN counter = 10000000; END LOOP;
125
Gambar 5.3 merupakan gambar user interface simulasi tak ada manajemen
transaksi 2.
Gambar 5.3 User Interface Simulasi Tak Ada Manajemen transaksi 2
Simulasi ini melakukan pemesanan tiket dengan jumlah pesanan
sebanyak 1 tiket. Stored procedure yang digunakan pada simulasi ini sama dengan
stored procedure yang digunakan simulasi aplikasi yang pertama.
Gambar 5.4 merupakan user interface stok akhir pengujian aplikasi tanpa
penggunaan manajemen transaksi.
126
Gambar 5.4 User interface Data Barang Akhir Pengujian Aplikasi Tanpa
Penggunaan Manajemen transaksi
Dari user interface diatas, terlihat bahwa salah satu kelas dengan yaitu
kelas II mempunyai jumlah stok akhir = 4. Padahal telah dilakukan pemesanan
masing-masing sebanyak 1 unit pada 2 simulasi aplikasi. Jumlah stok tiket akhir
yang seharusnya adalah 3+1+1 = 5. Terdapat kekurangan jumlah stok tiket yang
dipesan dari yang seharusnya.
Tabel 5.1 berikut merupakan tabel yang menggambarkan proses yang
terjadi pada pengujian aplikasi tanpa menggunakan teknologi manajemen
transaksi.
Waktu
Simulasi Aplikasi Tak Ada Manajemen
Transaksi 1
Simulasi Aplikasi Tak Ada Manajemen
Transaksi 2
Jumlah Stok
t1 select stok from det_tiket where kd_tiket=520 and
kd_dkapal=18; 3
127
t2 sstok:=stok+( jumlah_dws+ jumlah_ank+ jumlah_by);
select stok from det_tiket where kd_tiket=520 and
kd_dkapal=18; 3
t3 Delay sstok:=stok+( jumlah_dws+ jumlah_ank+ jumlah_by); 3
t4
update det_tiket set stok= sstok where kd_tiket=520 and kd_dkapal in (select kd_dkapal
from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls
and kelas.kd_kls=C002);
Delay 4
t5
update det_tiket set stok= sstok where kd_tiket=520 and kd_dkapal in (select kd_dkapal
from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls
and kelas.kd_kls=C002);
4
Tabel 5.1 Proses Yang Terjadi Pada Pengujian Aplikasi Tanpa Menggunakan
Teknologi Manajemen Transaksi
5.1.2 Pengujian Aplikasi Dengan Menggunakan Teknologi Manajemen
transaksi
Untuk melakukan pengujian pada aplikasi yang menggunakan teknologi
manajemen transaksi, juga digunakan 2 buah simulasi aplikasi yang sama-sama
menggunakan teknologi manajemen transaksi dengan level isolasi serializable.
Kedua simulasi aplikasi tersebut juga diberikan delay agar kedua simulasi tersebut
bisa bertabrakan ketika keduanya dijalankan.
128
5.1.2.1 Pengujian Terhadap Masalah Hilangnya Data Yang Diubah (the lost
update problem)
5.1.2.1.1 Pengujian terhadap proses Pemesanan tiket
Berikut ini adalah ilustrasi pengujian yang dilakukan. Gambar 5.5
merupakan gambar user interface jumlah stok tiket awal pengujian aplikasi
dengan menggunakan teknologi manajemen transaksi.
Gambar 5.5 User Interface Data Jumlah Stok tiket Awal Pengujian Terhadap
Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Dengan
Menggunakan Teknologi Manajemen transaksi
Dalam pengujian ini, digunakan salah satu kelas dari kapal cirimai yaitu
kelas II. Jumlah stok pesanan awal tiket = 3 dengan sisa tiket 85.
Berikut ini adalah simulasi aplikasi yang digunakan. Gambar 5.6
merupakan gambar user interface simulasi ada manajemen transaksi 1.
129
Gambar 5.6 User Interface Simulasi Ada Manajemen transaksi 1
Simulasi ini melakukan pemesanan tiket dengan jumlah pesanan sebanyak
1 tiket untuk kelas II dengan tujuan Tual. Pada simulasi ini, digunakan stored
procedure yang diberikan delay yaitu dengan melakukan looping terhadap
perintah update data stok. Berikut ini adalah perintah delay yang digunakan.
counter := 0; LOOP counter := counter + 1; EXIT WHEN counter = 10000000; END LOOP;
Berikut ini adalah stored procedure yang digunakan
Create or replace procedure simpanpesanan ( user IN pemesanan.user_id%type,
130
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;
131
pesanerror:='Data digunakan transaksi Lain. Lakukan kembali Pemesanan'; end;
Gambar 5.7 merupakan gambar user interface simulasi ada manajemen
transaksi 2.
Gambar 5.7 User Interface Simulasi Ada Manajemen transaksi 2
Simulasi ini melakukan pemesanan tiket dengan jumlah pesanan sebanyak
1 tiket untuk kelas II dengan Tujuan tual. Stored procedure yang digunakan pada
simulasi ini juga diberikan delay. Stored procedure yang digunakan sama dengan
stored procedure yang digunakan simulasi aplikasi yang pertama.
132
Gambar berikut ini akan menunjukan reaksi yang terjadi, jika kedua
simulasi aplikasi yang menggunakan teknologi manajemen transaksi diatas saling
bertabrakan.
Gambar 5.8 merupakan gambar user interface reaksi yang terjadi jika
kedua simulasi aplikasi yang menggunakan teknologi manajemen transaksi
dengan level isolasi serializable saling bertabrakan.
Gambar 5.8 User Interface Reaksi Yang Terjadi Jika 2 Simulasi Aplikasi Yang
Menggunakan Teknologi Manajemen transaksi Dengan Level Isolasi Serializable
Saling Bertabrakan Pada Pengujian Masalah Hilangnya Data Yang Diubah ( The
Lost Update Problem)
Gambar 5.9 merupakan gambar user interface data jumlah stok tiket yang
dipengaruhi oleh simulasi aplikasi pertama.
133
Gambar 5.9 User Interface Data Jumlah Stok tiket Yang Dipengaruhi Simulasi
Aplikasi Pertama Pada Pengujian Masalah Hilangnya Data Yang Diubah (The
Lost Update Problem) Dengan Menggunakan Teknologi Manajemen transaksi
Dari gambar 5.8 diatas terlihat bahwa jika 2 simulasi aplikasi yang
menggunakan teknologi manajemen transaksi dengan level isolasi serializable
saling bertabrakan, maka salah satu simulasi aplikasi tersebut (simulasi aplikasi
kedua) akan menggagalkan eksekusi terhadap dirinya. Hal ini dilakukan untuk
menunggu simulasi aplikasi pertama selesai melakukan eksekusi (melakukan
commit). Proses menunggu ini ditandai dengan keluarnya pesan yang
memberikan informasi bahwa data digunakan oleh transaksi lain.
Sedangkan simulasi aplikasi pertama yang berhasil melakukan eksekusi,
akan menambah jumlah stok tiket sebesar 1 unit. Sehingga jumlah stok tiket yang
didapat menjadi 3+1 =4. Hal ini terlihat dari gambar 5.9 diatas.
Setelah simulasi aplikasi pertama berhasil melakukan eksekusi (commit)
terhadap transaksinya. Maka simulasi aplikasi kedua yang menunggu tadi, dapat
134
melanjutkan eksekusi yang sempat tertunda dengan kembali melakukan
pemesanan. Simulasi aplikasi kedua ini juga akan menambah jumlah stok tiket
sebanyak 1 unit. Sehingga jumlah stok tiket akhir yang didapat menjadi 3+1+1 =
5. Gambar 5.10 akan menunjukan data akhir jumlah stok barang yang dipengaruhi
kedua simulasi aplikasi.
Gambar 5.10 User Interface Data Akhir Jumlah Stok tiket Yang
Dipengaruhi Kedua Simulasi Aplikasi Yang Menggunakan Teknologi Manajemen
transaksi Pada Pengujian Masalah Hilangnya Data Yang Diubah (The Lost
Update Problem)
Dari user interface diatas, terlihat bahwa salah satu kelas yaitu kelas II
pada tanggal 28 juni mempunyai jumlah stok akhir = 5. Pemesanan yang
dilakukan masing-masing sebanyak 1 tiket pada 2 simulasi aplikasi.
Jumlah stok akhir sesuai dengan yang seharusnya yaitu 3+1+1 = 5. Dalam
pengujian dengan menggunakan teknologi manajemen transaksi ini, terlihat tidak
135
terjadi masalah pada jumlah stok akhir tiket yang terpesan. Sehingga masalah
hilangnya data yang diubah (the lost update problem), tidak terjadi.
Tabel 5.2 berikut merupakan tabel yang menggambarkan proses yang
terjadi pada pengujian aplikasi yang menggunakan teknologi manajemen
transaksi, terhadap masalah hilangnya data yang diubah (the lost update
problem).
Waktu Simulasi Aplikasi Ada Manajemen Transaksi
1
Simulasi Aplikasi Ada Manajemen Transaksi
2
Jumlah_Stok
t1
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);
3
t2 select stok from det_tiket where kd_tiket=520 and
kd_dkapal=18; 3
t3 stokakhir:=stok+(
jumlah_dws+ jumlah_ank+ jumlah_by);
= 3+1
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);
3
t4 Delay select stok from det_tiket where
kd_tiket=520 and kd_dkapal=18;
sstok:=stok+( jumlah_dws+ jumlah_ank+ jumlah_by); 3
t5
update det_tiket set stok= stokakhir where kd_tiket=520
Delay &
exception 4
136
and kd_dkapal in (select kd_dkapal from
det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls
and kelas.kd_kls=C002); COMMIT;
when others then rollback; pesanerror:='Data digunakan. Lakukan kembali pemesanan’;
& Wait
t6
SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE select stok from det_tiket where
kd_tiket=520 and kd_dkapal=18;
4
t7
sstok:=stok+( jumlah_dws+ jumlah_ank+ jumlah_by);
= 4+1
4
t8 Delay 4
t9
update det_tiket set stok= sstok
where kd_tiket=520 and kd_dkapal in (select kd_dkapal
from det_kapal,kelas where kelas.kd_kls=det_kapal.kd_kls
and kelas.kd_kls=C002); COMMIT;
5
Tabel 5.2 Proses Yang Terjadi Pada Pengujian Aplikasi Yang Menggunakan
Teknologi Manajemen Transaksi Terhadap Masalah Hilangnya Data Yang Diubah
(The Lost Update Problem)
5.1.2.1.2 Pengujian terhadap Proses Pembatalan tiket
Berikut ini adalah ilustrasi pengujian yang dilakukan. Gambar 5.11
merupakan gambar user interface jumlah stok tiket awal pengujian aplikasi
dengan menggunakan teknologi manajemen transaksi.
137
Gambar 5.11 User Interface Data Jumlah Stok tiket Awal Pengujian Terhadap
Masalah Hilangnya Data Yang Diubah (The Lost Update Problem) Dengan
Menggunakan Teknologi Manajemen transaksi
Dalam pengujian ini, digunakan salah satu kelas dari kapal cirimai untuk
kelas II. jumlah stok pesanan awal tiket = 5 dengan sisa tiket 83.
Berikut ini adalah simulasi aplikasi yang digunakan. Gambar 5.12
merupakan gambar user interface simulasi ada manajemen transaksi 1.
Gambar 5.12 User Interface Simulasi Ada Manajemen transaksi 1
138
Simulasi ini melakukan pembatalan tiket dengan jumlah pesanan sebanyak
1 dengan kelas II tujuan Tual. Pada simulasi ini, digunakan stored procedure yang
diberikan delay yaitu dengan melakukan looping terhadap perintah update data
stok. Berikut ini adalah perintah delay yang digunakan.
Berikut ini adalah stored procedure yang digunakan
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; coba 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; LOOP counter := counter + 1; EXIT WHEN counter = 5000000; 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; commit; else rollback; pesanerror:='Data Pesanan Gagal Dihapus';
counter := 0; LOOP counter := counter + 1; EXIT WHEN counter = 10000000;
END LOOP;
139
end if; exception when others then rollback; pesanerror:='Data digunakan. Lakukana Kembali Pembatalan'; end;
Gambar 5.13 merupakan gambar user interface simulasi ada manajemen
transaksi 2.
Gambar 5.13 User Interface Simulasi Ada Manajemen transaksi 2
Simulasi ini melakukan pembatalan tiket dengan jumlah pesanan sebanyak
1 dengan kelas II tujuan Tual.
Stored procedure yang digunakan pada simulasi ini juga diberikan delay.
Stored procedure yang digunakan sama dengan stored procedure yang digunakan
simulasi aplikasi yang pertama.
Gambar berikut ini akan menunjukan reaksi yang terjadi, jika kedua
simulasi aplikasi yang menggunakan teknologi manajemen transaksi diatas saling
bertabrakan.
140
Gambar 5.14 User interface reaksi yang terjadi jika kedua simulasi aplikasi
yang menggunakan teknologi manajemen transaksi dengan level isolasi
serializable saling bertabrakan.
Gambar 5.15 merupakan gambar user interface data jumlah stok tiket yang
dipengaruhi oleh simulasi aplikasi pertama.
Gambar 5.15 User Interface Data Jumlah Stok tiket Pada Pengujian pembatalan
tiket dengan menggunakan teknologi manajemen transaksi.
141
Dari gambar 5.14 diatas terlihat bahwa jika 2 simulasi aplikasi yang
menggunakan teknologi manajemen transaksi dengan level isolasi serializable
saling bertabrakan, maka salah satu simulasi aplikasi tersebut (simulasi aplikasi
kedua) akan menggagalkan eksekusi terhadap dirinya. Hal ini dilakukan untuk
menunggu simulasi aplikasi pertama selesai melakukan eksekusi (melakukan
commit). Proses menunggu ini ditandai dengan keluarnya pesan yang
memberikan informasi bahwa data digunakan oleh transaksi lain.
Sedangkan simulasi aplikasi pertama yang berhasil melakukan eksekusi,
akan mengurangi jumlah stok tiket sebesar 1 unit. Sehingga jumlah stok tiket
yang didapat menjadi 5-1 =4. Hal ini terlihat dari gambar 5.15 diatas.
Setelah simulasi aplikasi pertama berhasil melakukan eksekusi (commit) terhadap
transaksinya. Maka simulasi aplikasi kedua yang menunggu tadi, dapat
melanjutkan eksekusi yang sempat tertunda dengan kembali melakukan
pembatalan. Simulasi aplikasi kedua ini juga akan mengurangi jumlah stok tiket
sebanyak 1 unit. Sehingga jumlah stok tiket akhir yang didapat menjadi 5-1-1 = 3.
Gambar 5.16 akan menunjukan data akhir jumlah stok barang yang dipengaruhi
kedua simulasi aplikasi.
142
Gambar 5.16 User Interface Data Jumlah Stok tiket akhir Pada Pengujian
pembatalan tiket dengan menggunakan teknologi manajemen transaksi.
5.2 Kelebihan Dan Kekurangan Sistem
5.2.1 Kelebihan Sistem
Berikut ini adalah beberapa kelebihan sistem :
• Sistem yang dibuat menggunakan teknologi manajemen transaksi,
sehingga masalah multi user seperti the lost update problem tidak akan
terjadi.
• Sistem ini memudahkan user dalam hal melakukan pemesanan maupun
pembatalan tiket.
• Proses query seperti ( insert, update, dan delete ) dalam sistem ini,
menggunakan stored procedure, sehingga memudahkan dalam
mengembangkan sistem dengan dengan bahasa pemrograman yang
berbeda.
143
5.2.2 Kekurangan Sistem
• Sistem ini tidak membahas proses pencetakan dan pembayar tiket.
• Sistem ini tidak memiliki fasilitas laporan pendapatan untuk pembelian
tiket berdasarkan tanggal keberangkatan kapal.
• Sistem ini hanya melayani pemesanan untuk dua jenis kapal yaitu cirimai
dan Tatamailau.
144
BAB VI
PENUTUP
6.1 KESIMPULAN
1. Dalam uji coba di lab, Sistem informasi reservasi tiket kapal laut berbasi web
dengan menerapkan teknologi manajement transaksi level isolasi serializable
berhasil mengatasi salah satu masalah pemesanan secara multi user yaitu
masalah hilangnya data yang diubah (the lost update problem).
2. Sistem ini dapat memberikan informasi tentang kapal yang up to-date seperti
jadwal keberangkatan kapal, tarif tiket, fasilitas yang dimiliki kapal, dan dan
dapat melayani proses pemesanan mapun pembatalan tiket.
3. Dalam aplikasi ini, pengambilan data dengan perintah select, yang mempunyai
kemungkinan tidak akan diupdate oleh user lain, tidak perlu diberikan
dukungan manajemen transaksi.
6.2 SARAN
1. Sistem ini harus dilengkapi dengan proses pencetakan dan pembayaran tiket.
2. Sistem ini mampu menangani proses diskon.
3. Sistem ini akan lebih bagus jika mampu menangani pemesanan tiket dari
semua dermaga terbesar diindonesia.
145
DAFTAR PUSTAKA
Hakim, L., Musalini, U., 150 Rahasia dan Trik Menguasai PHP, Elex Media
Komputindo, Jakarta, 2004.
Kadir, A., Pemrograman Web Mencakup HTML,CSS, JavaScript dan PHP,
Andi Offset, Yogyakarta, 2003.
Prima,E., Menguasai Oracle SQL Mencakup Oracle 8i/9i, PT Elexmedia
Komputindo, Jakarta, 2003.
Jogiyanto, Analisis & Disain Sistem Informasi : Pendekatan Terstruktur Teori
dan Praktek Aplikasi Bisnis, Andi Offset , Yogyakarta, 1990.
Jogiyanto, Sistem Teknologi Informasi , Andi Offset , Yogyakarta, 2003.
Pramono, A., Syafii, M., Kolaborasi Flash, Dreamweaver, dan PHP Untuk
Aplikasi Website, Andi Offset, Yogyakarta, 2005.
Purwanto, Y., Pemrograman Web dengan PHP, PT Elexmedia Komputindo,
Jakarta, 2001.
Whitten, J.L., Bentley, L.D, Barlow, V.M., System Analysis & Design
Methods Sixth Edition, Irwin/McGraw-Hill, 2004.
Wijaya, H., Belajar Sendiri Oracle 9i Database , PT Elexmedia Komputindo,
Jakarta, 2003.
Connolly, T., Begg, C., DATABASE SYSTEM A Pratical Approach To Design,
Implementation And Management, Addison Wesley, 2002.
Sutedjo,B., Perencanaan & Pembangunan Sistem Informasi, Andi Offset,
Yogyakarta, 2002.
Jones,C., Holloway, A., The Underground PHP and Oracle PHP, 2006
146
147
PROSES ADMIN
Package untuk Admin Create or replace package admin_area as procedure insert_kapal(kode IN kapal.kd_kpl%type,nama_kpl in kapal.nama%type, arah IN kapal.route%type,ket IN kapal.keterangan%type, gmb IN kapal.gambar%type,pesanerror out varchar2 ); procedure insert_kelas(kode in kelas.kd_kls%type, nm IN kelas.nama_kelas%type, fas IN kelas.fasilitas%type, gmb IN kelas.gambar%type,pesanerror out varchar2); procedure insert_dermaga(nama in dermaga.nama_dermaga%type, nkota IN dermaga.kota%type,pesanerror out varchar2); procedure insert_detkapal(kpl IN det_kapal.kd_kpl%type,ddermaga IN det_kapal.kd_dermaga%type,dkls IN det_kapal.kd_kls%type,dhd IN det_kapal.hd%type,dha IN det_kapal.hd%type,dhb IN det_kapal.hb%type,kap IN det_kapal.kapasitas%type,pesanerror out varchar2 ) ; procedure insert_jadwal(kpl IN tiket.kd_kpl%type,tanggal in tiket.tgl_brkt%type,jam IN tiket.jam_brkt%type,pesanerror out varchar2); procedure insert_propinsi(pinsi IN propinsi.namapropinsi%type,pesanerror out varchar2); procedure insert_fasilitas(fast IN fasilitas.fasilitas%type,ket
IN fasilitas.keterangan%type,gmb IN fasilitas.foto%type,pesanerror out varchar2 ) ; procedure insert_berita(judul IN berita.judul_berita%type,isi IN berita.isi_berita%type,usern in berita.penulis%type,pesanerror out varchar2 ); end; create or replace package admin_delete as procedure hapus_kapal(kd in kapal.kd_kpl%type,pesanerror out varchar2); procedure hapus_kelas(kls in kelas.kd_kls%type,pesanerror out varchar2); procedure hapus_dermaga(kode in dermaga.kd_dermaga%type,pesanerror out varchar2) ; procedure hapus_jadwal(kd in tiket.kd_tiket%type,pesanerror out varchar2); procedure hapus_propinsi(id in propinsi.idpropinsi%type); procedure hapus_fasilitas(fid in fasilitas.id%type) ; procedure hapus_berita( kd in berita.kd_berita%type) ; procedure hapus_pemesan(user in pemesan.user_id%type,pesanerror out varchar2) ; procedure hapus_bt(hapus in buku_tamu.bid%type); end;
148
create or replace package admin_update as procedure update_kapal(kd IN kapal.kd_kpl%type, tjn IN kapal.route%type,ket IN kapal.keterangan%type); procedure update_kelas( kls IN kelas.kd_kls%type,fas IN kelas.fasilitas%type); procedure update_dermaga( kode IN dermaga.kd_dermaga%type,namad IN dermaga.nama_dermaga%type); procedure update_dkapal( kd IN det_kapal.kd_dkapal%type,dhd IN det_kapal.hd%type,dha IN det_kapal.ha%type,dhb IN det_kapal.hb%type,pesanerror out varchar2) ; procedure update_jadwal( kd IN tiket.kd_tiket%type,tgl IN tiket.tgl_brkt%type,jam IN tiket.jam_brkt%type,pesanerror out varchar2); procedure update_propinsi(id IN propinsi.idpropinsi%type,namap IN propinsi.namapropinsi%type,pesanerror out varchar2) ; procedure update_fasilitas( fid IN fasilitas.id%type,ket IN fasilitas.keterangan%type); procedure update_berita(kd IN berita.kd_berita%type, judul IN berita.judul_berita%type, isi IN berita.isi_berita%type) ; procedure update_login(username IN admin.username%type,password1 IN admin.password%type) ; procedure update_bt( kd IN buku_tamu.bid%type,komen IN buku_tamu.komentar%type);
end; Package Body untuk Admin Create or replace package body admin_area As cek integer; cekkls integer; cekkap integer; cek1 integer; cek2 integer; procedure insert_kapal(kode IN kapal.kd_kpl%type,nama_kpl in kapal.nama%type, arah IN kapal.route%type,ket IN kapal.keterangan%type, gmb IN kapal.gambar%type,pesanerror out varchar2 ) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(kd_kpl) into cek from kapal where kd_kpl=kode; if cek > 0 then rollback; pesanerror:='Data Kapal Gagal Disimpan'; else insert into kapal(kd_kpl,nama,route,keterangan,gambar) values(kode,nama_kpl,arah,ket,gmb); commit; end if; end insert_kapal; procedure insert_kelas(kode in kelas.kd_kls%type, nm IN kelas.nama_kelas%type, fas IN kelas.fasilitas%type, gmb IN kelas.gambar%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(*) into cek from kelas where kd_kls=kode; if cek > 0 then
149
rollback; pesanerror:='Data Kelas Gagal Disimpan'; else insert into kelas(KD_KLS,NAMA_KELAS,FASILITAS,GAMBAR) values(kode,nm,fas,gmb); COMMIT; end if; end insert_kelas; procedure insert_dermaga(nama in dermaga.nama_dermaga%type, nkota IN dermaga.kota%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(kota) into cek from dermaga where kota=nkota; if cek > 0 then rollback; pesanerror:='Data dermaga Gagal Disimpan'; else insert into dermaga( KD_DERMAGA, NAMA_DERMAGA, KOTA) values(dm.nextval,nama,nkota); COMMIT; end if; end insert_dermaga; procedure insert_detkapal(kpl IN det_kapal.kd_kpl%type,ddermaga IN det_kapal.kd_dermaga%type,dkls IN det_kapal.kd_kls%type,dhd IN det_kapal.hd%type,dha IN det_kapal.hd%type,dhb IN det_kapal.hb%type,kap IN det_kapal.kapasitas%type,pesanerror out varchar2 ) is BEGIN select count(*) into cek from det_kapal where kd_kpl=kpl and kd_kls=dkls; if cek > 0 then
select count(*) into cek1 from det_kapal where kd_kpl=kpl and kd_kls=dkls and kd_dermaga=ddermaga;
if cek1 >0 then rollback; pesanerror:='Data kelas kapal Gagal Disimpan'; else select count(kapasitas) into cekkap from det_kapal where kd_kpl=kpl and kd_kls=dkls and kapasitas=kap;
If cekkap > 0 then Into det_kapal( kd_dkapal,kd_kpl,kd_dermaga,kd_kls,hd,ha,hb,kapasitas)values(dkapal.nextval, kpl,ddermaga,dkls,dhd,dha,dhb,kap); COMMIT; else pesanerror:='kapasitas tidak sama'; end if; end if; else select count(*) into cek2 from det_kapal where kd_kpl=kpl and kd_kls=dkls and kd_dermaga=ddermaga; if cek2 > 0 then rollback; pesanerror:='Data kelas kapal Gagal Disimpan'; else insert into det_kapal( kd_dkapal,kd_kpl,kd_dermaga,kd_kls,hd,ha,hb,kapasitas)values(dkapal.nextval, kpl,ddermaga,dkls,dhd,dha,dhb,kap); commit; end if; end if; end insert_detkapal; procedure insert_jadwal(kpl IN tiket.kd_kpl%type,tanggal in tiket.tgl_brkt%type,jam IN tiket.jam_brkt%type,pesanerror out varchar2) is BEGIN
150
select count(*) into cek from tiket where kd_kpl=kpl and tgl_brkt=tanggal; if cek > 0 then rollback; pesanerror:='Data jadwal Gagal Disimpan'; else insert into tiket(kd_tiket,kd_kpl,tgl_brkt,jam_brkt) values(tkt.nextval,kpl,tanggal,jam); insert into det_tiket(kd_tiket,kd_dkapal,stok) select max(tiket.kd_tiket),det_kapal.kd_dkapal,0 from tiket ,det_kapal where tiket.kd_kpl=det_kapal.kd_kpl and det_kapal.kd_kpl=kpl GROUP BY det_kapal.kd_dkapal ORDER BY det_kapal.kd_dkapal; COMMIT; end if; end insert_jadwal; procedure insert_propinsi(pinsi IN propinsi.namapropinsi%type,pesanerror out varchar2) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(namapropinsi) into cek from propinsi where namapropinsi=pinsi; if cek > 0 then rollback; pesanerror:='Data Propinsi Gagal Disimpan'; else insert into propinsi(idpropinsi,namapropinsi) values(prop.nextval,pinsi); COMMIT; end if; end;
procedure insert_fasilitas(fast IN fasilitas.fasilitas%type,ket IN fasilitas.keterangan%type,gmb IN fasilitas.foto%type,pesanerror out varchar2 ) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(*) into cek from fasilitas where fasilitas=fast; if cek > 0 then rollback; pesanerror:='Data fasilitas Gagal Disimpan'; else insert into fasilitas( id,fasilitas,keterangan,foto) values(fas.nextval, gmb,ket,fast); COMMIT; end if; end insert_fasilitas; procedure insert_berita(judul IN berita.judul_berita%type,isi IN berita.isi_berita%type,usern IN berita.penulis%type,pesanerror out varchar2 ) is BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; select count(judul_berita) into cek from berita where judul_berita=judul; if cek > 0 then rollback; pesanerror:='Data berita Gagal Disimpan'; else insert into berita( kd_berita, judul_berita, isi_berita,penulis,tgl) values(br.nextval, judul,isi,usern,sysdate);
151
COMMIT; end if; end insert_berita; end; Create or replace package body admin_delete As cek integer; cek1 integer; kap1 tiket.kd_kpl%type; kap2 det_kapal.kd_kpl%type; kls1 det_kapal.kd_kls%type; dmg det_kapal.kd_dermaga%type; brkt1 pemesanan.kd_tiket%type; brkt2 det_tiket.kd_tiket%type; klskpl1 pemesanan.kd_dkapal%type; klskpl2 det_tiket.kd_dkapal%type; procedure hapus_kapal (kd in kapal.kd_kpl%type,pesanerror out varchar2) is begin select count(kd_kpl) into kap1 from tiket where kd_kpl=kd; select count(kd_kpl) into kap2 from det_kapal where kd_kpl=kd; if ( kap1=0 and kap2=0 ) then delete kapal where kd_kpl=kd; commit; else rollback; pesanerror:=' Data Kapal Gagal Dihapus'; end if; end; procedure hapus_kelas(kls in kelas.kd_kls%type,pesanerror out varchar2) is begin
select count(*) into cek from kelas where kd_kls=kls; select count(kd_kls) into kls1 from det_kapal where kd_kls=kls; if ( cek > 0 and kls1=0) then delete kelas where kd_kls=kls; commit; else rollback; pesanerror:=' Data Kelas Gagal Dihapus'; end if; end; procedure hapus_dermaga(kode in dermaga.kd_dermaga%type,pesanerror out varchar2) is begin select count(*) into cek from dermaga where kd_dermaga=kode; select count(kd_dermaga) into dmg from det_kapal where kd_dermaga=kode; if ( cek > 0 and dmg=0) then delete dermaga where kd_dermaga=kode; commit; else rollback; pesanerror:=' Data Dermaga Gagal Dihapus'; end if; end; procedure hapus_jadwal(kd in tiket.kd_tiket%type,pesanerror out varchar2) is begin select count(*) into cek from tiket where kd_tiket=kd; select count(kd_tiket) into brkt1 from pemesanan where kd_tiket=kd; if ( cek > 0 and brkt1=0) then delete det_tiket where kd_tiket=kd;
152
select count(*) into brkt2 from det_tiket where kd_tiket=kd; if( brkt2 > 0 ) then rollback; pesanerror:=' Data Jadwal Gagal Dihapus'; else delete tiket where kd_tiket=kd; commit; end if; else rollback; pesanerror:=' Data jadwal Gagal Dihapus'; end if; end; procedure hapus_propinsi(id in propinsi.idpropinsi%type) is begin delete propinsi where idpropinsi=id; commit; end; procedure hapus_fasilitas(fid in fasilitas.id%type) is begin delete fasilitas where id=fid; commit; end; procedure hapus_berita( kd in berita.kd_berita%type) is begin delete berita where kd_berita=kd; commit; end; procedure hapus_bt(hapus in buku_tamu.bid%type) is begin delete buku_tamu where bid=hapus; commit; end;
procedure hapus_pemesan(user in pemesan.user_id%type,pesanerror out varchar2) is begin select count(user_id) into cek from pemesan where user_id=user; select count(user_id) into cek1 from pemesanan where user_id=user; if cek > 0 and cek1=0 then delete pemesan where user_id=user; commit; else rollback; pesanerror:=' Data Pemesan Gagal Dihapus'; end if; end; end; Create or replace package body admin_update As cek integer; procedure update_kapal(kd IN kapal.kd_kpl%type, tjn IN kapal.route%type,ket IN kapal.keterangan%type) is begin update kapal set route=tjn,keterangan=ket where kd_kpl=kd; commit; end update_kapal; procedure update_kelas( kls IN kelas.kd_kls%type,fas IN kelas.fasilitas%type) is begin update kelas set fasilitas=fas where kd_kls=kls; commit; end update_kelas; procedure update_dermaga( kode IN dermaga.kd_dermaga%type,namad IN dermaga.nama_dermaga%type)
153
is begin update dermaga set nama_dermaga=namad where kd_dermaga=kode; commit; end update_dermaga; procedure update_dkapal( kd IN det_kapal.kd_dkapal%type,dhd IN det_kapal.hd%type,dha IN det_kapal.ha%type,dhb IN det_kapal.hb%type,pesanerror out varchar2) is begin select count(*) into cek from pemesanan where kd_dkapal=kd; if cek=0 then update det_kapal set hd=dhd,ha=dha,hb=dhb where kd_dkapal=kd; commit; else rollback; pesanerror:='Data Gagal diupdate'; end if; end update_dkapal; procedure update_jadwal( kd IN tiket.kd_tiket%type,tgl IN tiket.tgl_brkt%type,jam IN tiket.jam_brkt%type,pesanerror out varchar2) is begin select count(*) into cek from pemesanan where kd_tiket=kd; if cek=0 then update tiket set tgl_brkt=tgl,jam_brkt=jam where kd_tiket=kd; commit; else rollback; pesanerror:='Data Gagal diupdate'; end if; end update_jadwal; procedure update_propinsi(id IN propinsi.idpropinsi%type,namap IN
propinsi.namapropinsi%type,pesanerror out varchar2) is begin select count(namapropinsi) into cek from propinsi where namapropinsi=namap; if cek > 0 then rollback; pesanerror:=' Data Propinsi Gagal Diupdate'; else update propinsi set namapropinsi=namap where idpropinsi=id; commit; end if; end update_propinsi; procedure update_fasilitas( fid IN fasilitas.id%type,ket IN fasilitas.keterangan%type) is begin update fasilitas set keterangan=ket where id=fid; commit; end update_fasilitas; procedure update_berita(kd IN berita.kd_berita%type, judul IN berita.judul_berita%type, isi IN berita.isi_berita%type) is begin update berita set judul_berita=judul, isi_berita=isi,tgl=sysdate where kd_berita=kd; commit; end update_berita; procedure update_login( username IN admin.username%type,password1 IN admin.password%type) is begin update admin set password=password1 where username=username; commit; end update_login;
154
procedure update_bt( kd IN buku_tamu.bid%type,komen IN buku_tamu.komentar%type) is begin update buku_tamu set komentar=komen where bid=kd; commit; end update_bt; end; Create or replace package hapus_pemesanan As procedure hapus_pesan( hapus in pemesanan.no_psn%type,pesanerror out varchar2) ; procedure hapus_pembelian( hapus in pemesanan.no_psn%type,pesanerror out varchar2) ; end;
Create or replace package body hapus_pemesanan As cek number; procedure hapus_pesan( hapus in pemesanan.no_psn%type,pesanerror out varchar2) is BEGIN select count(no_psn) into cek from pembelian where no_psn=hapus; if (cek > 0) then pesanerror:=' Data Pemesanan Gagal Dihapus'; else delete from pemesanan where no_psn=hapus; COMMIT ; end if; end hapus_pesan; procedure hapus_pembelian( hapus in pemesanan.no_psn%type,pesanerror out varchar2) is
BEGIN select count(no_psn) into cek from pembelian where no_psn=hapus; if (cek > 0) then delete from tempat where no_psn=hapus; delete from pembelian where no_psn=hapus; delete from pemesanan where no_psn=hapus; commit; else pesanerror:=' Data Pembelian gagal Dihapus'; end if; end hapus_pembelian; end hapus_pemesanan; SCRIPT PHP UNTUK ADMIN Addberita.php $query=ociparse($conn,"begin admin_area.insert_berita('$judul','$isi','$username',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); ociexecute($query); if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addberita.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"berita.php\"</script>"); } Adddermaga.php $query=ociparse($conn,"begin admin_area.insert_dermaga('$na
155
ma','$kota',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"adddermaga.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_dermaga.php\"</script>"); } else { echo("<script>alert('data gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_dermaga.php\"</script>"); } Addfasilitas.php $query=ociparse($conn,"begin admin_area.insert_fasilitas('".$_FILES["foto"]["name"]."','$ket','$fast',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); ociexecute($query); if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>");
echo("<script>document.location=\"addfasilitas.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"fasilitas.php\"</script>"); } Addharga.php $query=ociparse($conn,"begin admin_area.insert_detkapal('$kd_kpl','$kd_dermaga','$kd_kls','$hd','$ha','$hb','$kap',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addharga.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_harga.php\"</script>"); } } else { echo("<script>alert('data gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_harga.php\"</script>"); }
156
Addjadwal.php $query=ociparse($conn,"begin admin_area.insert_jadwal('$kd_kpl','$tgl_brkt-$bln_brkt-$thn_brkt','$jam:$menit:$detik',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addjadwal.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"detail_jadwal.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"detail_jadwal.php\"</script>"); } Addkapal.php copy($_FILES["foto"]["tmp_name"],"image1/".$_FILES["foto"]["name"]); $query=ociparse($conn,"begin admin_area.insert_kapal('$nama','$kd','$tjn','".$_FILES["foto"]["name"]."','$ket',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32);
$test=ociexecute($query,OCI_DEFAULTS); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addkapal.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kapal.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"addkapal.php\"</script>"); } Addkelas.php copy($_FILES["foto"]["tmp_name"],"image1/".$_FILES["foto"]["name"]); $query=ociparse($conn,"begin admin_area.insert_kelas('$kls','$nama','$fas','".$_FILES["foto"]["name"]."',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if ($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addkelas.php\"</script>"); }
157
else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kelas.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_kelas.php\"</script>"); } AddPropinsi.php $query=ociparse($conn,"begin admin_area.insert_propinsi('$nama',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 32); $test=ociexecute($query); if ($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); echo("<script>document.location=\"addpropinsi.php\"</script>"); } else { echo("<script>alert('data telah disimpan !!!!')</script>"); echo("<script>document.location=\"lihat_propinsi.php\"</script>"); } } else { echo("<script>alert('data Gagal disimpan !!!!')</script>");
echo("<script>document.location=\"lihat_kelas.php\"</script>"); } Editberita.php $query=ociparse($conn,"begin admin_update.update_berita('$kd','$judul','$isi'); end;"); $test=ociexecute($query); if($test) { echo("<script>alert('data sukses diedit !!!!')</script>"); echo("<script>document.location=\"berita.php\"</script>"); } else { echo("<script>alert('data gagal diedit !!!!')</script>"); echo("<script>document.location=\"berita.php\"</script>"); } editpropinsi.php $query=ociparse($conn,"begin admin_update.update_propinsi('$id','$namap',: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 berhasi diupdate !!!!')</script>"); }
158
echo("<script>document.location=\"lihat_propinsi.php\"</script>"); } Editdermaga.php $query=ociparse($conn,"begin admin_update.update_dermaga('$kode','$namad'); end;"); $test=ociexecute($query); if ($test) { echo("<script>document.location=\"lihat_dermaga.php\"</script>"); } else { echo("<script>alert('Data Gagal Diedit!!!!')</script>"); echo("<script>document.location=\"lihat_dermaga.php\"</script>"); } Editfasilitas.php $query=ociparse($conn,"begin admin_update.update_fasilitas('$id','$ket'); end;"); $test=ociexecute($query); if($test) { echo("<script>alert('data berhasil diedit !!!!')</script>"); } else { echo("<script>alert('data gagal diupdate !!!!')</script>"); } echo("<script>document.location=\"fasilitas.php\"</script>"); editharga.php $query=ociparse($conn,"begin admin_update.update_dkapal('$kd','$hd','$ha','$hb',: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 diedit !!!!')</script>"); } echo("<script>document.location=\"lihat_harga.php\"</script>"); } else { echo("<script>alert('Data Gagal Diedit!!!!')</script>"); echo("<script>document.location=\"lihat_harga.php\"</script>"); } Editjadwal.php $query=ociparse($conn,"begin admin_update.update_jadwal('$kd','$tgl_brkt-$bln_brkt-$thn_brkt','$jam:$menit:$detik',: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 berhasil diedit !!!!')</script>"); }
159
echo("<script>document.location=\"detail_jadwal.php\"</script>"); } else { echo("<script>alert('Data Gagal Diedit!!!!')</script>"); echo("<script>document.location=\"detail_jadwal.php\"</script>"); } Editkapal.php $query=ociparse($conn,"begin admin_update.update_kapal('$kd','$tjn','$ket'); end;"); $test=ociexecute($query); if ($test) { echo("<script>document.location=\"lihat_kapal.php\"</script>"); } else { echo("<script>alert('Data Gagal Diedit!!!!')</script>"); echo("<script>document.location=\"lihat_kapal.php\"</script>"); } Editkelas.php $query=ociparse($conn,"begin admin_update.update_kelas('$kls','$fas'); end;"); $test=ociexecute($query); if ($test) { echo("<script>document.location=\"lihat_kelas.php\"</script>"); } else { echo("<script>alert('Data Gagal Diedit!!!!')</script>"); echo("<script>document.location=\"editkelas.php\"</script>"); }
PROSES USER
Simpan pesanan $query=ociparse($conn,"begin simpanpesanan('$username',$jd,$ja,$jb,$total,'$kd_tiket','$kd_dkapal','$kd_kls',:pesanerror); end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 150); $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>"); } } Hapus_pesanan $query = ociparse($conn,"begin hapus('$no','$kd','$kpl','$jum','$kls',:pesanerror);end;"); $pesanerror=''; OCIBindByName($query, ":pesanerror", $pesanerror, 150); $test=ociexecute($query); if($test) { if(!empty($pesanerror)) { echo("<script>alert('$pesanerror !!!!')</script>"); }
160
else { echo("<script>alert('data sukses dihapus !!!!')</script>"); } echo("<script>document.location=\"batal.php\"</script>"); }
top related