penerapan manajemen transaksi reservasi tiket …

182
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

Upload: others

Post on 02-Nov-2021

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 2: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 3: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

3

Page 4: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

4

Page 5: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 6: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 7: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 8: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 9: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 10: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 11: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 12: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 13: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

13

membutuhkannya. Atas segala perhatiannya dan kerjasamanya, penulis ucapkan

terima kasih.

Yogyakarta, Mei 2007

Wiwi Farneubun

( Penulis )

xii

Page 14: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 15: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 16: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 17: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 18: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

18

6.2 Saran .................................................................................................142

DAFTAR PUSTAKA..........................................................................................143

xvii

Page 19: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 20: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 21: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 22: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 23: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 24: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 25: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 26: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 27: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 28: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 29: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 30: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 31: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 32: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 33: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 (

Page 34: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 35: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 36: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 37: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 38: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 39: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 40: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 41: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 42: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 43: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 44: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 :

Page 45: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 46: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 47: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 48: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 49: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 50: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 51: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 52: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 53: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 54: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 :

Page 55: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 )

Page 56: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 57: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 58: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 59: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 60: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 61: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 62: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 63: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 64: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 65: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 66: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 67: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 68: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 69: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 70: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

48

3.1.4.1.2 Diagram Berjenjang

Gambar 3.3 Diagram Berjenjang

Page 71: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

49

Overview Diagram

OVERVIEW DIAGRAM

Gambar 3.4 overview Diagram

Page 72: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

50

OVERVIEW DIAGRAM LEVEL 1 PROSES REGISTARIS DAN LOGIN

Gambar 3.5 Overview diagram level 1 proses registrasi dan login

Page 73: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

51

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA KAPAL

Gambar 3.6 overiew diagram level 1 proses data update kapal

Page 74: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

52

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA KELAS

Gambar 3.7 overiew diagram level 1 proses data update kelas

Page 75: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

53

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DERMAGA

Gambar 3.8 overiew diagram level 1 proses data update dermaga

Page 76: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

54

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DET_KAPAL / TARIF TIKET

Gambar 3.9 overiew diagram level 1 proses data update kelas_kapal

Page 77: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

55

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA TIKET

Gambar 3.10 overiew diagram level 1 proses data update berangkat

Page 78: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

56

OVERVIEW DIAGRAM LEVEL 1 PROSES DATA TRANSAKSI PEMESANAN

Gambar 3.11 overiew diagram level 1 proses data transaksi pemesanan

Page 79: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

57

OVERVIEW DIAGRAM LEVEL 1 PROSES DATA TRANSAKSI PEMBELIAN

Gambar 3.12 overiew diagram level 1 proses data transaksi pembelian

Page 80: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

58

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA TEMPAT

Gambar 3.13 overview diagram level 1 proses update data tempat

Page 81: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

59

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA DET_TIKET

Gambar 3.14 overview diagram level 1 proses update data det_tiket

Page 82: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

60

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA PEMESAN

Gambar 3.15 overview diagram level 1 proses data Pemesan

Page 83: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

61

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA PROPINSI

Gambar 3.16 overview diagram level 1 proses data update propinsi

Page 84: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

62

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA FASILITAS

Gambar 3.17 overview diagram level 1 proses update data fasilitas

Page 85: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

63

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA BERITA

Gambar 3.18 overview diagram level 1 proses update data berita

Page 86: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

64

OVERVIEW DIAGRAM LEVEL 1 PROSES UPDATE DATA BUKU TAMU

Gambar 3.19 overview diagram level 1 proses update data buku tamu

Page 87: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

65

OVERVIEW DIAGRAM LEVEL 1 PROSES UBAH PASSWORD

Gambar 3.20 overview diagram level 1 proses ubah password

Page 88: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

66

Gambar 3.21 overview diagram level 1 proses Logout

OVERVIEW DIAGRAM LEVEL 1 PROSES LOGOUT

Page 89: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 90: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 91: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 92: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 93: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 94: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 95: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 96: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 97: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 98: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 .

Page 99: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 100: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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");

Page 101: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 :

Page 102: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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\">"; } ?>

Page 103: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 104: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 105: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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);

Page 106: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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'>"; } }

Page 107: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>

Page 108: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>]"; }> ?>

Page 109: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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];

Page 110: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 111: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; }

Page 112: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 :

Page 113: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 114: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 115: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 116: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 117: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 118: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 119: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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\">"; } ?>

Page 120: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 121: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 122: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 123: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 124: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 125: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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';

Page 126: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 127: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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 )

Page 128: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 129: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 130: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); } } ?>

Page 131: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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++ ) {

Page 132: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 133: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 134: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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++ ) {

Page 135: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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); ?>

Page 136: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 137: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 138: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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'>"; ?>

Page 139: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 140: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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'>"; } ?>

Page 141: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 142: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 143: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"; ?>

Page 144: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 145: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 146: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 147: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 148: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 149: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 150: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 151: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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,

Page 152: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 153: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 154: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 155: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 156: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 157: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 158: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 159: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 160: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 161: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 162: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 163: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 164: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 165: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 166: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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.

Page 167: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 168: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

146

Page 169: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 170: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 171: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 172: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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);

Page 173: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 174: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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)

Page 175: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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;

Page 176: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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

Page 177: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 178: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 179: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 180: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 181: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

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>"); }

Page 182: PENERAPAN MANAJEMEN TRANSAKSI RESERVASI TIKET …

160

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