PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

APLIKASI PENCARIAN JALUR ALTERNATIF KERETA API BERBASIS WEB

Skripsi

Diajukan untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh : AMIKO BINTORO 075314087

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2013

i

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

WEB-BASED TRAIN TRACK SEARCH APPLICATION

A THESIS

Presented as Partial Fulfillment of the Requirements To Obtain the SarjanaKomputerDegree In Informatics Engineering Department

By: AMIKO BINTORO 075314087

INFORMATICS ENGINEERING PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA

ii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

2013

SKRIPSI

PENCARIAN JALUR ALTERNATIFKERETA API BERBASIS WEB

Oleh :

AmikoBintoro

075314087

Telahdisetujuioleh :

DosenPembimbingTugasAkhir

JB Budi Darmawan, S.T., M.Sc.Tanggal : ………………..

iii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

SKRIPSI

APLIKASI PENCARIAN JALURALTERNATIF KERETA API BERBASIS WEB

Dipersiapkandandisusunoleh : AmikoBintoro

NIM : 075314087

Telahdipertahankan di depan Tim Penguji Padatanggal 17 September 2013 Dan dinyatakanmemenuhisyarat

SusunanPanitiaPenguji :

NamaLengkap Tandatangan

Ketua Alb. AgungHadhiatma, M.T ………………

Sekretaris Sri HartatiWijono, S.Si.,M.Kom. ………...... …

Anggota JB Budi Darmawan, S.T., M.Sc. ………………

Yogyakarta, 16Oktober 2013

FakutasSainsdanTeknologi

UniversitasSanata Dharma

Dekan

P.H. Prima Rosa,S.Si., M.T.

iv

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

HALAMAN PERSEMBAHAN

Untukgembala yang baik, TUHAN YESUS KRISTUS

Untukkeluargaterkasih

dan

Untukteman-temantercinta

= TERIMA KASIH =

v

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya/ bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, 14Oktober 2013

Penulis

AmikoBintoro

vi

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

PERNYATAAN PERSETUJUAN

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertandatangan di bawahini, sayamahasiswaUniversitasSanataDharma :

Nama : AmikoBintoro

NIM : 075314087

Demi pengembanganilmupengetahuan, sayamemberikankepadaperpustakaanUniversitaSanata Dharma karyailmiahsaya yang berjudul :

APLIKASI PENCARIAN JALUR ALTERNATIF KERETA API BERBASIS WEB

Besertaperangkat yang diperlukan( bila perlu ). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis. Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat di Yogyakarta

Padatanggal :14 Oktober 2013

Yang menyatakan

AmikoBintoro

vii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

APLIKASI PENCARIAN JALUR ALTERNATIF KERETA API BERBASIS WEB

Abstraksi

Kereta Api merupakan salah satu transportasi masal yang cukup populer di , khususnya di daerah Jawa. Bermacam kereta dengan berbagai jalur mengangkut ribuan orang setiap harinya, termasuk kereta api kelas eksekutif. Dengan banyaknya kereta yang melewati banyak stasiun, memungkinkan adanya sebuah jalural ternatif yaitu keretalain yang melewati stasiun yang sama. Untuk melakukan pencarian jalur alternatif ini tidak mudah, penumpang harus mengetahui kereta, stasiun, dan kursi yang masih kosong untuk setiap kereta pada jalur tersebut. Dengan banyaknya kereta dan stasiun yang dilewati, maka pencarian secara manual menjadi lama. Tujuandari skripsi ini adalah untuk membangun suatu aplikasi yang mampu membantu untuk melakukan pencarian jalur alternatif secara efisien dan melakukan pemesanan.

Aplikasi dibangun dengan teknologi web dan basis data oracle menggunakan metodologi waterfall model.Untuk menggunakan aplikasi ini pengguna melakukan login, kemudian memasukan beberapa inputan berupa tanggal berangkat, stasiun asal, stasiun tujuan. Selanjutnya aplikasi menampilkan hasil pencarian yang kemudian bisa dipesan.

Dari hasil pengujian oleh beberapa responden yaitu enam orang pengguna dan aktifis penggemar kereta api dapat disimpulkan bahwa sistem dapat berjalan dengan baik untuk melakukan pencarian jalur alternatif dan pemesanan.

viii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

WEB-BASED TRAIN TRACK SEARCH APPLICATION

Abstract

Train is one of popular public transportations in Indonesia, especially in . Various of trains with different of tracks carry thausand of people everyday, including in executive class train. Many trains that pass many stations urge us to make alternative tracks which depart the different trains from the same station. To search this alternative track is not easy, passenger should know trains, tracks, and seats that are still empty for each train.The passenger often miss some trains and stations due to the manual wasting time. This tessis goal is build an application to help search the alternative track efficienlly and order seat.

TheAplication is build with web technology and the oracle database use waterfall model. To use this aplication user must login and enter several inputs, such as departure date, departure station and destination station. Then aplication show result of searching that can be ordered by passengers.

Based on result of testing six users can be concluded that the application can both search alternative track and order seat as well.

ix

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

KATA PENGATAR

Puji syukur kepada Tuhan Yesus Kristus yang telah memberikan kasih karunia, kemampuan dan kesempatan sehingga penulis dapat menyelesaikan tugas akhir dengan judul “APLIKASI PENCARIAN JALUR ALTERNATIF KERETA API BERBASIS WEB”.

Terimakasih yang sebesar-besarnya kepada semua pihak yang telah memberikan dukungan, semangat, serta bantuan sehingga penulis mampu menyelesaikan skripsi ini :

1.P.H Prima Rosa, S.Si.,M.Sc., selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta

2. Ibu Ridhowati Gunawan, S.Kom.,M.T., selaku ketua jurusan Program Studi Teknik Informatika Universitas Sanata Dharma Yogyakarta

3. Bapak JB Budi Darmawan S.T.,M.Sc., selaku dosen pembimbing atas kesabaran , saran dan waktu yang diberikan

4. Ibu Sri Hartati Wijono, S.Si.,M.Kom., dan Bapak Alb. Agung Hadhiatma.M.T, selaku dosen penguji atas saran dan kritikannya.

5. Orang tuasaya , Bapak Mikhael Dwi Puryanto dan Ibu Silvia Triwigati dan Bapak Nuhman dan adik-adik saya , Eunike Beti Wigati, AmKeb., dan Yosia Candra Pramudito yang telah memberikan seluruh dukungan, baik materiil maupun spiritual selama masa studi.

x

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

6. Teman-teman komunitas jimbez (Taufik, S.Kom., Leonardus ,S.Kom, AlbertusDio, S.Kom, RobertusAtyantama, Mariano Lucky Z, S.Kom, Markus Herjuno,S.Kom., Andri Yudha P., S.Kom., Yohanes Sapto Prabowo) atas dukungan penuh yang diberikan.

7. Gembala Sidang dan seluruh jemaat GBI M3, atas dukungan doa yang diberikan.

8. Teman-teman Mitra Perpustakaan Universitas Sanata Dharma atas dukungan dan semangat yang diberikan.

9. Teman-teman TI’07 dan semua pihak yang telah berperan serta baik secara langsung maupun tidak langsung sehingga penulis mampu menyelesaikan skripsi ini.

Penulis menyadari bahwa masih banyak kekurangan dalam penyusunan skripsi ini. Saran dan kritik sangat diharap kan untuk perbaikan kedepannya. Semoga dapat bermanfaat.

Yogyakarta, 14 Oktober 2013

Penulis

xi

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

DAFTAR ISI

HALAMAN JUDUL BAHASA INDONESIA ...... i HALAMAN JUDUL BAHASA INGGRIS ...... ii

HALAMAN PERSETUJUAN ...... iii

HALAMAN PENGESAHAN ...... iv

HALAMAN PERSEMBAHAN ...... v

HALAMAN PERNYATAAN KEASLIAN KARYA ...... vi

HALAMAN PERSETUJUAN PUBLIKASI ...... vii

ABSTRAK ...... viii

ABSTRACT ...... ix

KATA PENGANTAR ...... x

DAFTAR ISI ...... xii

DAFTAR TABEL ...... xvii

DAFTAR GAMBAR ...... xviii

BAB I PENDAHULUAN ...... 1

1.1 Latar Belakang ...... 1

1.2 Rumusan Masalah ...... 2

1.3 Tujuan Penelitian ...... 3

1.4 Batasan Masalah ...... 3

1.5 Metode Penelitian ...... 3

1.5.1 Perencanaan ...... 3

1.5.2 Definisi Kebutuhan ...... 4

1.5.3 Perancangan ...... 4

1.5.4 Pengembangan ...... 4

xii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

1.5.5 Integrasi dan Tes ...... 4

1.6 Sistematika Penulisan ...... 4

BAB II LANDASAN TEORI ...... 6

2.1 Aplikasi ...... 6

2.2 Aplikasi Web ...... 6

2.2.1 Hyper Text Markup Languages ( HTML) ...... 7

2.2.2 Java Server Pages ...... 7

2.2.2 Session dan Cookies ...... 9

2.3 Basisdata( Database ) ...... 10

2.4 Model Waterfall ...... 10

2.4.1 Perencanaan ...... 11

2.4.2 Definisi Kebutuhan ...... 11

2.4.3 Perancangan ...... 12

2.4.3.1 Logical Design ...... 14

2.4.3.1 Physical Design ...... 15

2.4.4 Pengembangan ...... 15

2.4.5 Integrasi dan Tes ...... 15

BAB III ANALISIS DAN PERANCANGAN SISTEM ...... 16

3.1 Analisis Sistem ...... 16

3.1.1 Gambaran Sistem Lama ...... 16

3.1.2 Gambaran Sistem Baru ...... 17

3.2 Use Case ...... 19

3.2.1 Use Case Diagram ...... 19

3.2.2 Tabel Use Case ...... 19

3.2.3 Diagram Berjenjang ...... 23

xiii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

3.3 Data Flow Diagram (DFD) ...... 24

3.3.1 DFD Level 0 ...... 24

3.3.2 DFD Level 1 ...... 26

3.3.2.1 DFD Level 1 Login ...... 26

3.3.2.2 DFD Level 1 Update Data Kereta ...... 27

3.3.2.3 DFD Level 1 Update Data Kereta_template ...... 27

3.3.2.4 DFD Level 1 Update Data Stasiun ...... 28

3.3.2.5 DFD Level 1 Update Data Jam ...... 28

3.3.2.6 DFD Level 1 Cari Jalur Alternatif ...... 28

3.3.2.7 DFD Level 1 Lihat Order ...... 29

3.4 Perancangan Database ...... 30

3.4.1 E-R Diagram ...... 30

3.4.2 Desain Logikal Basisdata ...... 31

3.4.3 Desain Fisikal Basisdata ...... 32

3.4.3.1 Tabel Kereta ...... 32

3.4.3.2 Tabel Stasiun ...... 32

3.4.3.3 Tabel Kereta Template ...... 32

3.4.3.4 Tabel Kereta Berangkat...... 33

3.4.3.5 Tabel Gerbong ...... 33

3.4.3.6 Tabel Kursi ...... 33

3.4.3.7 Tabel Pengguna ...... 34

3.4.3.8 Tabel Pesan ...... 34

3.4.3.9 Tabel Has Stasiun ...... 34

3.5 DesainAntarMuka ...... 35

xiv

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

3.5.1 Desain Halaman Home Admin ...... 35

3.5.2 Desain Halaman Login ...... 35

3.5.3 Desain Halaman Hasil Pencarian ...... 36

3.5.4 Desain Halaman Update ...... 36

3.5.5 Desain Form Pesan ...... 37

3.5.6 Desain Halaman Home User ...... 37

3.5.7 Desain Halaman Hasil Pencarian User ...... 38

3.5.8 Desain Halaman Pesan User ...... 38

BAB IV IMPLEMENTASI DAN ANALISIS HASIL ...... 39

4.1 Antar Muka Pengguna Sistem ...... 39

4.1.1 Halaman Login dan Logout ...... 39

4.1.2 Halaman Home Admin ...... 45

4.1.3 Halaman Hasil Pencarian ...... 46

4.1.4 Halaman Update ...... 52

4.1.5 Halaman Lihat Order ...... 60

4.1.6 Halaman Sisa Kursi ...... 61

4.1.5 Halaman Home User ...... 64

4.2 Proses Generate Database ...... 67

BAB V ANALISIS HASIL ...... 78

5.1 Analisis Hasil Perangkat Lunak ...... 78

5.2 Kelebihan dan Kekurangan Aplikasi ...... 79

BAB VI KESIMPULAN ...... 80

6.1 Kesimpulan ...... 80

6.2 Saran ...... 80

xv

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

DAFTAR PUSTAKA ...... 81

LAMPIRAN ...... 82

xvi

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

DAFTAR TABEL

Gambar 3.1 Diskripsi Use Case ...... 19 Gambar 3.2 Penjelasan Gambar kereta ...... 32 Gambar 3.3 PenjelasanGambar stasiun ...... 32 Gambar 3.4 Penjelasan Gambar kereta_template ...... 32 Gambar 3.5 Penjelasan Gambar kereta_berangkat ...... 33 Gambar 3.6 Penjelasan Gambar gerbong ...... 34 Gambar 3.7 Penjelasan Gambar kursi ...... 33 Gambar 3.8 Penjelasan Gambarpengguna ...... 34 Gambar 3.9 Penjelasan Gambar pesan ...... 34 Gambar 3.10 Penjelasan Gambarhas_stasiun ...... 34 Gambar 4.1 Database Connection ...... 39 Gambar 4.2 Servlet Login Controller...... 42 Gambar 4.3 Tampil Jalur.jsp ...... 46 Gambar 4.4 Method Cari2...... 48 Gambar 4.5 Update Stasiun...... 53 Gambar 4.6 Method LihatDataStasiun ...... 56 Gambar 4.7 Ubah Data Stasiun ...... 58 Gambar 4.8 Method LihatDataStasiun2 ...... 60 Gambar 4.9 Generate Kereta Berangkat ...... 64 Gambar 4.10 Generata Gerbong ...... 68 Gambar 4.11 Generata Kursi...... 69

xvii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

DAFTAR GAMBAR

Gambar 2.1 Waterfall Model ...... 11 Gambar 2.2 Tools Requirements Definition ...... 12 Gambar 2.3 Tools Design E-R Diagram ...... 12 Gambar 2.4 Tools Design DFD ...... 13 Gambar 3.1 Ilustrasi Alternatif ...... 16 Gambar 3.2 Diagram Konteks...... 17 Gambar 3.3 Use Case ...... 19 Gambar 3.4 Diagram Berjenjang ...... 23 Gambar 3.5 DFD Level 0 Admin ...... 24 Gambar 3.6 DFD Level 0 User ...... 25 Gambar 3.7 DFD Level 0 Sistem ...... 25 Gambar 3.8 DFD Level 1 Login ...... 26 Gambar 3.9 DFD Level 1 Update Data Kereta ...... 27 Gambar 3.10 DFD Level 1 Update data Kereta Template ...... 27 Gambar 3.11DFD Level 1 Update Data Stasiun ...... 28 Gambar 3.12 DFD Level 1 Cari Jalur Alternatif...... 28 Gambar 3.13 DFD Level 1 Lihat Order ...... 29 Gambar 3.14 E-R Diagram ...... 30 Gambar 3.15 Desain Logikal Basisdata ...... 31 Gambar 3.16 Desain Halaman Home ...... 35 Gambar 3.17 Desain Halaman Login ...... 35 Gambar 3.18 Desain Halaman Hasil Pencarian ...... 36 Gambar 3.19 Desain Halaman Update ...... 36 Gambar 3.20 Pesan ...... 37 Gambar 3.21 Halaman Home Admin...... 37 Gambar 3.22 Halaman Hasil Pencarian User ...... 38 Gambar 3.23 Halaman Pesan User...... 38 Gambar 4.1 Login ...... 39 Gambar 4.2 LoginGagal ...... 42

xviii

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

Gambar4.3 Halaman Home Admin...... 45

Gambar 4.4 Halaman Hasil Pencarian ...... 46 Gambar 4.5 Form Pesan ...... 51 Gambar 4.6 Pemesanan Berhasil...... 52 Gambar 4.7 Halaman Update ...... 52 Gambar 4.8 Ubah Data Stasiun ...... 58 Gambar 4.9 Lihat Order ...... 60 Gambar 4.10 Halaman Sisa Kursi...... 61 Gambar 4.11 Halaman Home User...... 64 Gambar 4.12 Halaman Hasil Pencarian...... 65 Gambar 4.13 Form Pesan ...... 66 Gambar 4.14 Pesan Berhasil ...... 66

xix

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

BAB I

PENDAHULUAN

1.1. Latar Belakang Kereta Api (KA) merupakan sarana transportasi darat yang cukup penting di Indonesia yang dikelola oleh PT. ( Persero ), khususnya di daerah pulau jawa. Kereta Api di Jawa dapat diketegorikan ke dalam dua kategori yaitu KA barang dan KA penumpang . KA barang banyak dipakai untuk mendistribusikan barang-barang ke berbagai daerah di pulau jawa. KA penumpang digunakan untuk membantu mobilisasi orang dari daerah satu ke daerah lain. KA penumpang memiliki jenis dan kelas yang beragam. Mulai dari kelas ekonomi, ekonomi AC, Bisnis sampai kelas tertinggi kelas eksekutif yang dibedakan berdasarkan layanan yang diberikan pada masing-masing kelas. Kelas eksekutif sebagai kelas unggulan memiliki layanan terbaik diantara kelas yang lain seperti; gerbong yang berpendingin udara, tempat duduk yang nyaman, hiburan audio visual dan layanan lain yang membuat penumpang sangat nyaman. Selain itu KA kelas ini juga memiliki beberapa keunggulan lain, seperti pemberhentian yang lebih sedikit dibandingkan dengan KA kelas bisnis maupun ekonomi. Setiap kelas memiliki armada yang cukup banyak dengan berbagai jalur. Untuk kelas eksekutif terdapat dua ( 2 ) tipe yaitu jenis Argo yang namanya diambil dari nama-nama Gunung seperti ; Argo Bromo Anggrek , Argo Dwipangga , Argo Jati , Argo Lawu , Argo Muria , Argo Parahyangan , Argo Sindoro , Argo Wilis dan jenis Satwa yaitu : Bangunkarta , Bima , Gajayana , Sembrani , Taksaka , Turangga yang diberi nama berdasarkan nama hewan atau tokoh pewayangan. Untuk kelas eksekutif setiap harinya ribuan orang diangkut menggunakan KA (www.kereta-api.co.id).

1

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 2

Penumpang KA kelas eksekutif kebanyakan adalah orang-orang yang memiliki mobilitas tinggi dan sudah akrab dengan teknologi. Bahkan, sering harus melakukan tugas yang berbeda dalam satu waktu. Untuk mencari informasi tentang berbagai hal, salah satunya KA, mereka sering mengunakan internet. Dengan berbagai macam KA yang tersedia setiap harinya, maka teknologi digunakan untuk membantu pencariannya. Dari kasus ini bisa dicari alternatif jalur dengan memanfaatkan kursi yang masih kosong. Misalnya, seorang pemumpang ingin naik KA dari Purwokerto dengan tujuan Yogyakarta. Penumpang bisa memilih KA yang berangkat dari Purwokerto dengan tujuan Yogyakarta atau mencari KA lain yang melewati Purwokerto dan Yogyakarta. KA yang lain inilah yang dimaksud dengan alternatif. Untuk mendapat jalur alternatif ini maka penumpang harus mengetahui KA mana saja yang melewati kedua kota ini dan memiliki kursi yang masih kosong.

Dengan teknologi yang ada sekarang dimungkinkan adanya suatu sistem yang mampu membantu menangani pencarian jalur alternatif khususnya pada KA eksekutif. Selain itu dengan aplikasi ini memungkinkan sebuah KA dapat terisi maksimum sepanjang jalur.

Dengan adanya aplikasi ini diharapkan mampu memberikan peningkatan pelayanan bagi penumpang KA maupun pengelola KA.

1.2. Rumusan Masalah

Dari latar belakang di atas terdapat pokok masalah, yaitu :

Bagaimana membangun aplikasi yang mampu melakukan pencarian dan pemesanan jalur alternatif kereta api.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 3

1.3. Tujuan Penelitian :

Membangun aplikasi jalur alternatif kereta api untuk membantu melakukan pencarian dan pemesanan jalur alternatif kereta api.

1.4. Batasan Masalah :

Adapun batasan masalah dari aplikasi jalur alternatif kereta api adalah:

1. Aplikasi hanya menangani pencarian jalur alternatif kereta api kelas eksekutif dan pemesanan kursi, dengan satu kursi untuk sekali pesan. 2. Dibangun dengan teknologi Web menggunakan Java dan Database Oracle Express Edition.

1.5. Metode Penelitian :

Metodologi penelitian yang digunakan dalam penulisan tugas akhir ini adalah metode waterfall. Dalam metode ini terdapat beberapa tahap yang dikerjakan secara berurutan. Tahap-tahapnya sebagai berikut ; ( Presman, 1996 )

1.5.1 Perencanaan

Ini adalah tahapan awal untuk membangun sebuah pandangan atau pengertian tentang produk perangkat lunak. Di tahapan ini dilakukan pengumpulan data untuk mengevaluasi sistem lama dan mendeskripsikan pendekatan management dan teknikal sebagai pengembangan struktur project dasar.

1.5.2 Definisi Kebutuhan

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 4

Tahapan definisi kebutuhan adalah tahapan dimana dilakukan pengumpulan proses yang selanjutnya akan dijadikan input tujuan. Masing – masing tujuan akan membutuhkan satu atau lebih requirements.

1.5.3 Perancangan

Tahapan perancangan adalah tahap untuk melakukan perancangan produk yang akan dibuat yang mengacu pada use case yang ada. Tahapan ini meliputi design database dan design user interface.

1.5.4 Pengembangan

Tahapan pengembangan dilakukan pengerjaan perangkat lunak yang telah dirancang pada tahap perencanaan, yaitu dengan coding sesuai dengan apa yang sudah direncanakan seperti coding database, user interface.

1.5.5 Integrasi dan Tes

Pada tahap integrasi dan tes, semua hasil yang telah dibuat menjadi bahan tes untuk memastikan program berjalan dengan sempurna. Kesuksesan dalam menjalankan program menetapkan bahwa perangkat lunak yang dibuat, siap untuk diedarkan ke konsumen. Jika program mengalami kegagalan maka di tahapan ini akan diperlukan sebuah perbaikan untuk memastikan bahwa program benar – benar sempurna.

1.6. Sistematika Penulisan :

Bab I Pendahuluan

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 5

Memberikan gambaran secara umum tentang isi skripsi yang meliputi: latar belakang, rumusan masalah, batasan masalah, tujuan dan manfaat, metode penelitian dan sistematika penulisan.

Bab II Landasan Teori

Berisi konsep dasar dan teori-teori yang digunakan dalam penulisan skripsi meliputi aplikasi, aplikasi web dan database.

Bab III Analisa dan Perancangan

Berisi gambaran umum sistem, usecase diagram, sekenario perancangan, analisa peracangan, perancangan basis data, perancangan tampilan masukan dan keluaran untuk pengguna.

Bab IV Implementasi dan Pengujian

Bab ini menjelaskan tentang implementasi ke dalam bentuk program berdasarkan desain yang telah dibuat dan pengujian aplikasi.

Bab V Kesimpulan dan Saran

Bab ini berisi semua simpulan yang didapatkan dari penelitian yang telah dilakukan. Simpulan menjawab rumusan masalah yang dituliskan pada bab pendahuluan secara ringkas dan jelas.

DAFTAR PUSTAKA

LAMPIRAN

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

BAB II

LANDASAN TEORI

2.1 Aplikasi

Menurut Kamus Besar Bahasa Indonesia,(1998) “Aplikasi penerapan dari rancang sistem untuk mengolah data dan menggunakan aturan atau ketentuan bahasa pemrograman tertentu”.

Aplikasi berasal dari kata application yang artinya penerapana atau lamaran atau penggunaan. Secara istilah aplikasi adalah program siap pakai yang direka untuk melaksanakan suatu fungsi bagi pengguna atau aplikasi yang lain dan dapat digunakan oleh sasaran yang dituju. (www.totalinfo.or.id)

2.2 Aplikasi Web

Aplikasi Web adalah suatu aplikasi yang dapat membentuk halaman – halaman Web berdasarkan permintaan user ( pengguna ), merupakan salah satu contoh aplikasi client / server. Ada 2 ( dua ) pihak yang terlibat dalam aplikasi client / server yaitu client ( pemakai ) dan server ( penyedia ). Client mewakili pihak yang menggunakan layanan aplikasi, sedangkan server adalah pihak yang menyediakan layanan aplikasi. Pihak client mengunakan perangkat lunak Web browser, sering disebut browser saja, contohnya : Internet Explorer, Mozilla, Netscape. Pihak server menggunakan perangkat lunak Web server, contohnya Apache dan IIS ( Internet Information Server ). Web server biasanya juga menggunakan database server ( sebuah server yang melayani akses terhadap database ), contohnya : Oracle dan MySQL. Untuk membangun aplikasi Web digunakan bahasa pemrograman seperti : Java Server Pages ( JSP ), Hypertext Processor ( PHP ), Active Server Pages ( ASP ).

6

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 7

Dalam berkomunikasi, client dan server terhubung melalui Internet atau Intranet. Internet adalah kumpulan komputer atau jaringan komputer yang terhubung secara global ( seluruh dunia ) sedangkan Intranet adalah komputer yang terhubung dalam suatu jaringan dalam wilayah tertentu. Client akan melakukan request ( permintaan ) kepada server melalui protokol HyperText Transfer Protocol ( HTTP ) dalam bentuk HyperText Markup Language ( HTML ), kemudian server akan membalas dan mengirimkan dokumen sesuai yang di- request oleh client. (Kadir, 2004)

2.2.1 Hyper Text Markup Language ( HTML )

HTML adalah standar informasi yang berbasis hypertext yang dipakai pada Web. HTML bekerja menggunakan HyperText Transfer protocol ( HTTP ), suatu protokol komunikasi yang memungkinkan Web sever berkomunikasi dengan Web browser. Dengan adanya protocol ini maka antara Web Server dan Web browser dapat berkomunikasi. Aturan penulisan kode HTML :

2.2.2 JAVA SERVER PAGES ( JSP ) JSP adalah fitur pada bahasa java yang memungkinkan sebuah aplikasi Web yang menggunakan pendekatan pemrosesan pada sisi Server. Artinya sourcecode ( kode sumber ) dijalankan pada Web Server. Prinsip kerjanya

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 8

adalah client melakukan request halaman Web ( berupa dokumen JSP ) melalui Internet. Permintaan tersebut diterima oleh server kemudian dikirimkan ke JSP Servlet Engine. Servlet adalah teknologi Java yang memungkinkan pembuatan halaman Web yang bersifat dinamis dan diproses pada sisi server. Oleh JSP Servlet Engine dilakukan pemrosesan ( di-generate ) sehingga membentuk kode HTML dan dikirimkan ke client melalui Internet. Kode JSP pada dasarnya adalah kode HTML yang dilengkapi dengan tag - tag JSP. Ada 3 ( tiga ) jenis elemen JSP yaitu :

1. Ekspresi berbentuk <%= ekspresi %> yang dievaluasi dan disisipkan ke dalam output ( keluaran ). menyisipkan nilai java secara langsung sebagai output. Ekspresi java dievaluasi, dikonversi ke suatu String dan disisipkan dalam halaman Web. 2. Scriptlet berbentuk <% kode %> yg disisipkan kedalam metode service servlet. Mampu menyisipkan ekspresi yg lebih kompleks, memungkinkan menyisipkan arbitrary code ke dalam metode servlet yg akan dibuat untuk men-generate halaman. 3. Deklarasi berbentuk <%! kode %> yang disisipkan ke dalam body class servlet, diluar metode yang sedang digunakan. Karena tidak men-generate suatu output, maka memungkinkan mendefinisikan metode atau field yang disisipkan dalam main body ( badan utama ) dari class servlet ( diluar dari metode service yang memproses request ). Normalnya digunakan untuk konjungsi dengan ekspresi dan scriptlet.

Cotohnya Kode JSP :

Contoh kode JSP

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 9

<% Out.print(“Contoh kode JSP”) %> Pasangan <% dan %> merupakan salah satu model dari tag JSP. (Abdul Kadir, 2004)

2.2.3 SESSION dan COOKIE

Session adalah catatan aktifitas bagi keseluruhan interaksi antara satu client dengan server. Server akan menandai client dengan ID session yang unik. Session akan dimulai ketika request pertama dan dapat diakhiri baik oleh server maupun client. Selama koneksi tidak terputus maka session akan tetap valid. Berikut Statement yang dipakai untuk pengaturan session:

Statement untuk menciptakan session: session=request.getSession(true); Statement untuk membentuk session: setAtribut(String name, object nilai); Statement untuk membaca data session: getAtribut(String name); Statement untuk menghapus data session: session.removeAttribut(String name); (Kadir, 2004)

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 10

Sedangkan cookies sebuah informasi kecil yang dikirimkan oleh servlet ( server ) kepada web-browser ( client ) dan disimpan dalam mesin lokal yang nantinya dapat dikirimkan kembali ke servlet . Salah satu pemakaianya yaitu untuk menangani login. Dengan adanya cookies maka tidak perlu untuk melakukan login secara berulang-ulang saat mengakses sebuah web yang mensyaratkan login. ( Wijono, 2007 )

2.3 BASISDATA ( DATABASE )

Basis data adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri ( query ) basis data disebut sistem manajemen basis data ( database management system, DBMS ). Sistem basis data dipelajari dalam ilmu informasi. (Wesley, 2004)

Salah satu contoh DBMS adalah Oracle dan MySql. Oracle sendiri memiliki kelebihan yaitu pada Procedural Language/Structured Query Language (PL/SQL) dan kemampuan untuk konsistensi dan proteksi data. Dalam pemrograman database , sering digunakan prosedur atau sering disebut juga Storade Procedure. Prosedure sendiri adalah salah satu tipe dari subprogram yang melakukan sebuah aksi.

2.4 MODEL WATERFALL

Model waterfall adalah model pengembangan sisterm secara sekuensial. Yaitu pengembangan sistem secara bertahap, jika satu tahap

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 11

selesai baru dilanjutkan dengan tahap berikutnya. Menurut R.S. Pressman “Software Engineering : A Practitioner's Approach” 1996 ada beberapa tahap pengembangan system yang bisa dilihat pada gambar 2.1. Tetapi pada penelitian ini hanya sampai pada tahap Integration & Test.

Gambar 2.1 Waterfall Model

2.4.1 Perencanaan

Tahapan perencanaan ( project planning ) adalah membangun sebuah pandangan tentang sebuah produk perangkat lunak. Di tahapan ini dilakukan pengembangan struktur prroject dasar, seperti pengumpulan data untuk mengevaluasi sistem lama dan mendeskripsikan pendekatan management dan teknikal. 2.4.2 Definisi Kebutuhan

Tahapan Definisi kebutuhan ( requirements definition ) adalah tahapan dimana dilakukan pengumpulan proses yang selanjutnya akan dijadikan input tujuan. Masing – masing tujuan akan membutuhkan satu atau lebih requirements.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 12

Tools yang penulis gunakan untuk requirements definition seperti use case bisa dilihat pada Gambar 2.2 di bawah ini.

Tools :

Aktor Use Case Alur Data Depends On

Gambar 2.2 Tools Requirements Definition

2.4.3 Perancangan

Pada tahapan perancangan ( design ) dilakukan perancangan untuk produk yang akan dibuat yang mengacu pada use case yang ada. Tahapan ini meliputi design database ( Entity Relationalship Diagram ), DFD ( Data Flow Diagram ) dan design user interface.

Tools yang digunakan untuk penulisan Entity Relationalship Diagram ( E_R Diagram ) menurut ( Atzeni, 2000 ),bisa dilihat pada Gambar 2.3 berikut:

Entitas Relasi Atribut

External Identifier

Gambar 2.3 Tools Design E-R Diagram

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 13

Entitas merupakan simbol untuk sebuah tabel data tertentu yang memiliki

atribut. Sedangkan relasi adalah sebuah hubungan antar tabel. Untuk

atribut adalah isi dari sebuah entitas atau tabel data. Misalkan sebuah

entitas mahasiswa memiliki beberapa atribut yaitu nim dan nama.

Sedangkan external identifier adalah sebuah kondisi dimana sebuah

atribut data tidak cukup untuk dijadikan identitas dengan jelas. Misalkan

ada, ada mahasiswa mendaftarkan pada bemacam universitas, dua

mahasiswa yang memiliki nomor registrasi yang sama. yang sama. Pada

kasus ini, untuk menjadikan sebuah identitas mahasiswa yang jelas, kita

membutuhkan universitas yang bersangkutan beserta nomor

registrasinya. Untuk itu dibutuhkan kode universitas ditambahkan

kedalam nim sehingga bisa dijadikan sebagai identitas yang jelas (

Atzeni, 2000 ).

Tools yang penulis gunakan untuk design DFD bisa dilihat pada Gambar

2.4 di bawah ini :

proses external entity alur data data storage

Gambar 2.4 Tools Design DFD

2.4.3.1 Logical Design

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 14

Logical design merupakan translasi dari conseptual model yang didefinisikan dalam fase-fase ke dalam bentuk model data yang diadopsi oleh database management system yang tersedia. Produk dari fase-fase tersebut dinamakan logical schema dari basis data dan hampir sama artinya dengan logical data model. Model logikal merepresentasikan data dalam sebuah alur yang terlepas dari physical design. Logical design merupakan sebuah gambar nonteknikal yang memberikan gambaran tentang apakah sistem dan apa yang dilakukannya. Dalam logical design akan diterjemahkan conceptual schema kedalam model data yang sesuai dengan DBMS yang digunakan. Hasil dari tahap ini adalah logical schema basis data yang mengacu pada logical data model.

Logical data mode dapa disebut juga relational model. Dalam logical model ini, menggambarkan data secara logikal dan harus memperhatikan kriteria optimal yaitu: ada tidaknya redudansi data atau penyimpanan di beberapa tempat untuk data yang sama dan data yang tidak konsisten ( Atzeni, 2000 ).

2.4.3.2 Physical Design

Physical design melanjutkan logical schema yang kemudian di

implementasi secara fisik sesuai dengan DBMS yang digunakan dengan

lebih detail. Selain itu, tahap ini merupakan bentuk perancangan basis data

yang menterjemahkan kebutuhan bisnis ke dalam model sistem yang

menggambarkan implementasi teknik dari kebutuhan bisnis itu sendiri (

Atzeni, 2000 ).

2.4.4 Pengembangan

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 15

Tahapan pengembangan ( development ) dilakukan pengembangan

perangkat lunak yang akan dibuat, yaitu dengan coding sesuai dengan apa

yang sudah direncanakan sebelumnya pada tahapan design.

2.4.5 Integrasi dan Tes

Selama pada tahapan integrasi dan tes ( integration and test ), semua

menu yang telah dibuat menjadi bahan tes untuk memastikan program

berjalan dengan sempurna. Kesuksesan dalam menjalankan program

menetapkan bahwa perangkat lunak yang dibuat, siap untuk diedarkan ke

konsumen. Jika program mengalami kegagalan maka di tahapan ini akan

diperlukan sebuah perbaikan untuk memastikan bahwa program benar –

benar sempurna.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem 3.1.1 Gambaran Sistem Lama

PT. KERETA API INDONESIA (PERSERO) merupakan pengelola perkereta-apian di Indonesia yang memiliki visi menjadi penyedia jasa perkeretaapian terbaik yang fokus pada pelayanan pelanggan dan memenuhi harapan stakeholders. Dan misi menyelenggarakan bisnis perkeretaapian dan bisnis usaha penunjangnya, melalui praktek bisnis dan model organisasi terbaik untuk memberikan nilai tambah yang tinggi bagi stakeholders dan kelestarian lingkungan berdasarkan 4 pilar utama : keselamatan, ketepatan waktu, pelayanan dan kenyamanan. Untuk meningkatkan pelayanan PT KAI(PERSERO) memiliki sebuah website yang memuat berbagai informasi tentang kereta api, termasuk di dalamnya jadwal keberangkatan kereta api.

Sampai saat ini belum ada sistem yang menangani pencarian jalur alternatif KA. Yang dimaksud jalur alternatif sebagai berikut :

A B C

Gambar 3.1 Ilustrasi Alternatif

Dari gambar 3.1 di atas terdapat kotak A, kotak B, dan kotak C sebagai stasiun. Garis panah menunjukan KA yang melewati stasiun tersebut. Jalur alternatif yaitu dengan mencari KA yang melewati jalur yang sama, pada hari yang sama juga. Pada contoh di atas jika tidak ingin naik KA merah, ada KA hitam.

16

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 17

Untuk mencari jalur alternatif, harus mememperhatikan beberapa hal. Yang pertama adalah KA apa saja yang tersedia.Yang ke dua KA berhenti di stasiun mana saja, jam tiba dan jam keberangkatan KA. Setelah mengetahui informasi tersebut kemudian menentukan KA apa yang akan dipilih, pada pukul berapa dan berganti KA di stasiun mana.

3.1.2 Gambaran Sistem Baru

Sistem baru ini akan membantu pencarian jalur alternatif KA. Pengguna (user) dapat mengakses sistem baru ini untuk mencari jalur alternatif KA yang ada berdasarkan beberapa inputan. Setelah inputan dimasukkan, sistem akan langsung mencari jalur alternatif yang ada dan menampilkanya. Untuk diagram konteks sistem baru ini ditunjukan oleh Gambar 3.2 berikut :

User Aplikasi Pencarian Jalur

Alternatif Admin

Gambar 3.2 Diagram Konteks

Dalam diagram konteks di atas menggambarkan bahwa user dan admin dapat berinteraksi dengan aplikasi. Untuk menggunakan aplikasi ini maka user harus melakukan login terlebih dahulu. Kemudian melakukan pencarian dengan memasukkan bebeberapa inputan yaitu tanggal berangkat, stasiun asal, stasiun tujuan dan jumlah kursi yang diinginkan. Setelah semua input dimasukan dan melakukan perintah pencarian dengan menekan tombol yang tersedia, maka aplikasi akan langsung melakukan proses pencarian dan menampilkan hasilnya dalam bentuk tabel. Dalam hasil pencarian juga terdapat link untuk pemesanan kursi. Untuk melakukan pemesanan kursi user

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 18

diminta untuk mengisikan data pribadi yaitu nama dan nomor KTP sebagai identitas ( id ) yang wajib diisikan. Untuk detail proses di atas dapat dilihat pada Use case.

Untuk mempersiapkan sebuah kursi yang dapat dipesan maka dibutuhkan beberapa tabel diantaranya ; tabel untuk menyimpan data kereta, data stasiun, data jadwal keberangkatan, data pemesan dan data-data lain yang dibutuhkan. Skenario untuk mempersiapkan kursi yang dapat dipesan diawali dengan sebuah jadwal keberangkatan yang ditangani oleh tabel kereta_template. Tabel ini menyimpan informasi data kereta, data stasiun. Tabel ini memiliki tanggal awal berlaku dan akhir berlaku, dan akan digenerate kedalam ke dalam sebuah tabel kereta_berangkat yang menunjukan bahwa ada sebuah kereta yang akan diberangkatkan. Syaratnya adalah tanggal saat melakukan generate berada dalam rentang tanggal awal berlaku dan tanggal akhir berlaku. Setelah digenerate ke dalam tabel kereta_berangkat data dari kereta_template tadi akan mendapat tambahan tanggal_berangkat dan tanggal tiba. Kemudian data pada kereta_berangkat digenerate ke dalam tabel gerbong untuk mendapatkan nomor_gerbong berdasarkan banyaknya gerbong yang dimiliki. Kemudian data pada gerbong akan digenerate ke dalam tabel kursi. Pada tabel kursi ini ditambahkan nomor kursi dan semua stasiun yang dilewati. Pada tabel ini juga ditambahkan flag sebagai tempat untuk menandai apakah sebuah kursi dipesan atau tidak di setiap stasiunnya. Dalam tabel kursi inilah dilakukan proses pencarian jalur alternatif, jadi dapat dimunculkan kereta mana yang memiliki kursi yang masih kosong dan bisa dipesan. Ketika sebuah kursi dipesan maka akan dilakukan pengisian pada flag yang menandakan bahwa sebuah kursi sudah dipesan.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 19

3.2 Use Case 3.2.1 Use Case Diagram login

<

Cari Jalur Alternatif

Pesan Kursi user

Admin Lihat Order

Update Data Kereta

Update Data Kereta Template

Update Data Stasiun

Update Data User

Gambar 3.3 Use Case

3.2.2 Table Use Case Tabel 3.1 Deskripsi Use Case

Nama Use Case Deskripsi Use Case Aktor yang berpartisipasi

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 20

Login Use case ini menggambarkan - Admin - User kejadian dimana admin dan

pengunjung masuk ke dalam

sistem sesuai dengan akunnya

sebelum melakukan aksi di

dalam sistem.

Update Data Use case ini menggambarkan - Admin

Kereta kejadian dimana admin

melakukan pengolahan update

terhadap data kereta seperti

menambah, menghapus atau

mengubah data kereta.

Update Data Use case ini menggambarkan - Admin

Kereta kejadian dimana admin

Template melakukan pengolahan update

terhadap data kereta template

seperti menambah,menghapus

atau mengubah data kereta

template.

Update Data Use case ini menggambarkan - Admin

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 21

Stasiun kejadian dimana admin

melakukan pengolahan update

data Stasiun, seperti menambah,

menghapus, atau mengubah data

Stasiun.

Update Data Use case ini menggambarkan - Admin

User kejadian dimana admin

melakukan pengolahan update

data user seperti menambah,

mengubah, dan menghapus data

user .

Cari Jalur Use case ini menggambarkan - Admin - User Alternatif kejadian dimana admin dan user

melakukan pencarian jalur

alternative dari jalur KA yang

tersedia.

Pesan Kursi Use case ini menggambarkan - Admin - User kejadian dimana admin dan user

melakukan pemesanan kursi KA.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 22

Lihat Order Use case ini menggambarkan - Admin

kejadian dimana Admin dan

User melakukan pemeriksaan

terhadap data pesan.

PLAGIATPLAGIAT MERUPAKANMERUPAKAN TINDAKANTINDAKAN TIDAKTIDAK TERPUJITERPUJI 23

3.2.3 Diagram Berjenjang

Aplikasi Pencarian Jalur Alternatif Kereta Api (Top Level)

1 2 3 4 5 6 7 8 Login Update Update Update Update Cari Jalur Lihat Otomatisasi Data Data Stasiun User Alternatif Order Basis Data Kereta Kereta Template

(Level 0)

8.1 2.1 2.2 2.3 4.1 4.2 4.3 6.1 Insert Data Insert Update Delete Insert Update Delete Pesan Kereta_bera Data Data Data Data Data Data Kursi ngkat, Kereta Kereta Kereta Stasiun Stasiun Stasiun Gebong,Kur si

3.1 3.2 3.3 6.1 6.2 6.3 Insert Update Delete Insert Update Delete Data Data Data Data Data Data Kereta Kereta Kereta User User User Template Template Template (Level 1)

Gambar 3.4 Diagram Berjenjang

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 24

3.3 Data Flow Diagram (DFD) 3.3.1 DFD Level 0

Username, Password Username, Password 1 Login USER

Data KERETA Data KERETA (NOMOR_KERETA, dll) 2 KERETA

Update Data Kereta Data KERETA TEMPLATE (NOMOR_KERETA, Data KERETA TEMPLATE NAMA_KERETA ,dll) 3 KERETA TEMPLATE Update Data Kereta Template Data STASIUN ( NOMOR_STASIUN, Data STASIUN NAMA_STASIUN ) Admin 4 STASIUN Update Data Stasiun Data User (ID_Anggota, Nama, Data USER 5 password ) USER Update Data User

Tanggal Berangkat, Stasiun Asal, Stasiun Data KURSI (TGL_B, Tujuan 6 NOMOR_KERETA, NAMA_KERETA , dll ) Cari Jalur Alternatif KURSI

Data PESAN 7 Data PESAN ( ID, NAMA)

KURSI Pesan Tiket Data PESAN Data order (NOMOR_BERANGKAT, STASIUN, dll ) 8 PESAN Lihat Order KURSI Gambar 3.5 DFD Level 0 Admin

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 25

Data User Data User (Password, 1 nama) User Login Data KURSI (TGL, NOMOR_KERETA,STAS_

Data Kursi 7 ASAL, STAS_TUJUAN, dll ) User Cari Jalur Alternatif KURSI

Gambar 3.6 DFD Level 0 User

Data KERETA_TEMPLATE(TGL_ B, NO_KERETA, STAS_ASAL, Data KERETA BERANGKAT 9 STAS_TUJUAN, dll ) SISTEM KERETA_TEMPLATE Copy Tabel KERETA_TEMPLATE Data KERETA_BERANGKAT(TG L_B, NO_KER, 9 STAS_ASAL, STAS_TUJUAN, dll ) GenerateTabel_KE KERETA_BERANGKAT RETA_BERANGKAT Data GERBONG(TGL_B, NOMOR_KERETA, Data KERETA BERANGKAT STAS_ASAL, 9 STAS_TUJUAN, dll ) GERBONG Generate Tabel GERBONG

Data KURSI (TGL_B, NOMOR_KERETA,STAS_ 9 ASAL, dll )

Generate Tabel KURSI KURSI

Gambar 3.7 DFD Level 0 Sistem

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 26

3.3.2 DFD LEVEL 1 3.3.2.1 DFD Level 1 Login

Data login

1.1

Input Data

Username, password Admin, Status True User

Status 1.2 Username, password Pesan False Verifikasi Data USER Error User

Status User

Status True

Gambar 3.8 DFD Level 1 Login

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 27

3.3.2.2 DFD Level 1 Update Data Kereta

NO_KER, NAMA_KER, 2.1 TGL _AWAL_BERLAKU, TGL_AKHIR_BERLAKU KERETA Tampil Data KERETA

NO_KER, NAMA_KER, TGL Admin _AWAL_BERLAKU,

TGL_AKHIR_BERLAKU, Status JML_KURSI, JML_GERBONG Pesan False 2.2

Error Update Data KERETA Status update

Status True Pesan Sukses Gambar 3.9 DFD Level 1 Update Data Kereta

3.3.2.3 DFD Level 1 Update Data Kereta_Template

NO_KER, NAMA_KER, 3.1 STASIUN_ASAL, STASIUN_TUJUAN Tampil Data KERETA_TEMPLATE KERETA

TEMPLATE

Admin

NO_KER, NAMA_KER, Status STASIUN_ASAL, 3.2 STASIUN_TUJUAN Pesan False Update Data Error KERETA TEMPLATE Status update

Status True Pesan Sukses

Gambar 3.10 DFD Level 1 Update data Kereta Template

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 28

3.3.2.4 DFD Level 1 Update Data Stasiun

NO_STASIUN, 4.1 NAMA STASIUN STASIUN Tampil Data STASIUN

Admin

Status NO_STASIUN, NAMA_STASIUN Pesan False 4.2 Error Update Data STASIUN Status update

Status True Pesan Sukses

Gambar 3.11 DFD Level 1 Update Data Stasiun

3.3.2.5 DFD Level 1 Cari Jalur Alternatif

NAMA_KER, STASIUN_ASAL, 7.1 STASIUN_TUJUAN Data Kursi Tampil Jalur KURSI Alternatif

NAMA_KER, STASIUN_ASAL, Admin, STASIUN_TUJUAN

User

NAMA_KER, STASIUN_ASAL, 7.2 STASIUN_TUJUAN

Pesan Status Search

Gambar 3.12 DFD Level 1 Cari Jalur Alternatif

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 29

3.3.2.6 DFD Level 1 Lihat Order

NAMA_PEMESAN,NO_KURSI, NAMA_KER, STASIUN_ASAL, STASIUN_TUJUAN,TGL_BERAN Data Pesan 7.1 GKAT. Admin PESAN Tampil Order

Gambar 3.13 DFD Level 1 Lihat Order

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 30

3.4 Perancangan Database 3.4.1 E-R Diagram

FLAG ID

PESAN 1 Has n KURSI

n NAMA

NOMOR_KURSI Has

USER_NAME HAK_AKSES PASSWORD 1 GERBONG NAMA ID_ANGGOTA PENGGUNA n

NOMOR_GERBONG

JAM_BERANGKAT TGL_AKHIR_BERLAKU Has JAM_TIBA TGL_AWAL_BERLAKU

n 1 KERETA TEMPLATE 1 KERETA_BERANGKAT n Has n JML_KURSI NOMOR_TEMPLATE TANGGAL_TIBA JML_GERBON Has TANGGAL_BERANGKAT Has JAM_TIBA JAM_BERANGKAT NAM_KERETA 1 n KERETA STASIUN Has

NOMOR_KERETA NAMA_STASIUN NOMOR_STASIUN

Gambar 3.14 E-R Diagram

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 31

3.4.2 Desain Logikal Basisdata

kereta_template kereta PK nomor_template PK nomor_kereta nomor_kereta nama_kereta tanggal_awal_berlaku arah tanggal_akhir_berlaku jam_berangkat has_stasiun stasiun jam_tiba nomor_template PK nomor_stasiun jumlah_gerbong nomor_stasiun nama_stasiun jumlah_kursi_tiap_gerbong Jam_berangkat jam_tiba

kereta_berangkat PK nomor_berangkat PK tanggal_berangkat tanggal_tiba

gerbong pengguna PK nomor_berangkat PK id_anggota PK tanggal_berangkat nama PK nomor_gerbong user_name tanggal_tiba password

hak_akses

kursi pesan PK nomor_berangkat PK id PK tanggal_berangkat nama PK nomor_gerbong PK nomor_kursi PK stasiun flag tanggal_berangkat

Gambar 3.15 Desain Logikal Basisdata

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 32

3.4.3 Desain Fisikal Basisdata 3.4.3.1 Tabel Kereta Tabel ini untuk menyimpan data kereta. Tabel 3.2 Penjelasan tabel kereta Nama field Tipe data Panjang data Primary key nomor_kereta number nama_kereta varchar 100 arah

3.4.3.2 Tabel Stasiun Tabel ini untuk menyimpan data stasiun. Tabel 3.3 Penjelasan tabel stasiun Nama field Tipe data Panjang data Primary key nomor_stasiun number nama_stasiun varchar 100 jam_berangkat timestamp jam_tiba timestamp

3.4.3.3 Tabel Kereta_Template Tabel ini untuk menyimpan data kereta_template. Tabel 3.4 Penjelasan tabel kereta_template Nama field Tipe data Panjang data Primary key nomor_template number nomor_kereta number tanggal_awal_berlaku number tanggal_akhir berlaku number jam_berangkat timestamp jam_tiba timestamp jumlah_gerbong number

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 33

jumlah_kursi_tiap_gerbong number 3.4.3.4 Tabel Kereta_Berangkat Tabel ini untuk menyimpan data kereta berangkat. Tabel 3.5 Penjelasan tabel kereta_berangkat Nama field Tipe data Panjang data Primary key nomor_berangkat number Primary key tanggal_berangkat number tanggal_tiba number

3.4.3.5 Tabel Gerbong Tabel ini untuk menyimpan data gerbong tiap kereta berangkat. Tabel 3.6 Penjelasan tabel gerbong Nama field Tipe data Panjang data Primary key nomor_berangkat number Primary key tanggal_berangkat number Primary key nomor_gerbong number tanggal_tiba number

3.4.3.6 Tabel Kursi Tabel ini untuk menyimpan data kursi tiap kereta berangkat. Tabel 3.7 Penjelasan tabel kursi Nama field Tipe data Panjang data Primary key nomor_berangkat number Primary key tanggal_berangkat number Primary key nomor_gerbong number Primary key nomor_kursi number Primary key Stasiun number Flag number tanggal_tiba number

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 34

3.4.3.7 Tabel Pengguna Tabel ini untuk menyimpan data pengguna. Tabel 3.8 Penjelasan tabel pengguna Nama field Tipe data Panjang data Primary key Id_anggota number Varchar 100 Nama Varchar 100 user_name Varchar 8 Password Varchar 15 hak_akses

3.4.3.8 Tabel Pesan Tabel ini untuk menyimpan data kursi tiap kereta berangkat. Tabel 3.9 Penjelasan tabel pesan Nama field Tipe data Panjang data Primary key id number nama varchar 100

3.4.3.9 Tabel has_stasiun Tabel ini untuk menyimpan data stasiun tiap kereta_template Tabel 3.10 Penjelasan tabel has_stasiun Nama field Tipe data Panjang data Primary key nomor_template number nomor_stasiun number jam_berangkat timestamp jam_tiba timestamp

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 35

3.5 Desain Antar Muka 3.5.1 Desain Halaman Home Admin Desain antar muka untuk halaman awal adalah seperti Gambar 3.17 berikut

Home Update Lihat Order

Login

‐Tanggal ‐

‐Stasiun ‐Asal‐

‐Stasiun Tujuan‐

‐Jumlah Kursi‐

Cari

Gambar 3.16 Desain Halaman Home 3.5.2 Desain Halaman Login Desain antar muka untuk halaman login ditampilkan pada Gambar 3.18 berikut

Login

‐User Name‐

‐Password ‐

Login

Gambar 3.17 Desain Halaman Login

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 36

3.5.3 Desain Halaman Hasil Pencarian

Desain antar muka Hasil Pencarian ditampilkan pada Gambar 3.19 berikut;

Home Update Lihat Order

Logout

Nomor Nama Kereta Pesan ‐Tanggal ‐ ‐Stasiun ‐Asal‐ 1 Kereta1 pesan

‐Stasiun Tujuan‐ 2 Kereta1 pesan ‐Jumlah Kursi‐ Cari

Gambar 3.18 Desain Halaman Hasil Pencarian

3.5.4 Desain Halaman Update

Desain antar muka Halaman Update ditampilkan dalam Gambar 3.20 berikut;

Home Update Lihat Order

Logout

NomorKereta Nama Kereta Ubah Hapus Update Kereta Update Stasiun 1 Kereta1 ubah hapus

Update Data User 2 Kereta2 ubah hapus Update Harga 3 Kereta 3 ubah hapus

Gambar 3.19 Desain Halaman Update

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 37

3.5.5 Desain Form Pesan Desain antar muka untuk Pesan ditunjukan dalam Gambar 3.21 berikut :

Kereta1

Stasiun asal‐stasiun tujuan

Tanggal berangkat‐tanggal tiba

Nomor KTP

Pesan Batal

Gambar 3.20 Pesan

3.5.6 Desain Halaman Home User Desain antar muka Halaman Update ditampilkan dalam Gambar 3.22 berikut;

Pesan Home Gambar 3.18 Desain Halaman Update

Login

‐Tanggal ‐ ‐Stasiun ‐Asal‐ ‐Stasiun Tujuan‐ ‐Jumlah Kursi‐ Cari

Gambar 3.21 Halaman Home Admin

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 38

3.5.7 Desain Halaman Hasil Pencarian User Desain antar muka Hasil Pencarian ditampilkan pada Gambar 3.23 berikut;

Home Pesan

Logout

Nomor Nama Kereta Pesan ‐Tanggal ‐ ‐Stasiun ‐Asal‐ 1 Kereta1 pesan ‐Stasiun Tujuan‐ 2 Kereta1 pesan ‐Jumlah Kursi‐

Cari

Gambar 3.22 Halaman Hasil Pencarian User

3.5.8 Desain Halaman Pesan User Desain antar muka halaman pesan user ditampilkan pada Gambar 2.24 berikut :

Kereta1

Stasiun asal‐stasiun tujuan

Tanggal berangkat‐tanggal tiba

Nomor KTP

Pesan Batal

Gambar 3.23 Halaman Pesan User

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

BAB IV

IMPLEMENTASI DAN ANALISIS HASIL

4.1 Antar Muka Pengguna Sistem 4.1.1 Halaman Login dan Logout

Berikut adalah tampilan hasil implementasi rancangan untuk proses login, ditunjukan pada Gambar 4.1 berikut ;

Gambar 4.1 Login Dibawah ini adalah potongan listing untuk koneksi ke database , disajikan dalam listing 4.1 berikut : Listing 4.1 DatabaseConnection public class DatabaseConnection {

String url = "jdbc:oracle:thin:@localhost:1521:XE"; String user = "skripsi"; String password = "skripsi";

ResultSet rs ;

39

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 40

public Statement st; Connection conn;

public DatabaseConnection() { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException ex) {

Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex); } try { conn = (Connection) DriverManager.getConnection(url, user, password); System.out.println("Your Connection Ready....^.^ \n"); st = conn.createStatement(); } catch (SQLException ex) {

Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex); } } public Statement getSt(){ return st; } public int updateData(String sql) throws SQLException{ int i=0; i=st.executeUpdate(sql); return i;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 41

} public void closeConnection() throws SQLException{ if(conn!=null){ conn.close(); System.out.println("Connection was close"); } } public Connection openConnection() throws SQLException{ conn= DriverManager.getConnection(url, user, password); return conn; } public ResultSet lihatData(String sql) throws SQLException{ ResultSet rset=null; rset=st.executeQuery(sql); return rset; }

Pada listing 4.1 diatas merupakan koneksi ke database, dengan user skripsi dan password skripsi. Untuk port yang dipakai adalah 1521. Gambar 4.1 merupakan tampilan untuk proses login. Untuk dapat mengakses sistem sampai ke tahap pemesanan maka user harus melakukan proses login terlebih dahulu. User diminta untuk memasukkan username dan password ,maka sistem akan melakukan pengecekan apakah username dan password yang dimasukkan valid atau tidak. Jika tidak, maka user diminta untuk mengulang proses login, dan menampilkan pesan “login GAGAL Silahkan Diulangi”, seperti pada gambar 4.2 di bawah :

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 42

Gambar 4.2 Login Gagal Tetapi jika valid maka user akan mendapatkan tampilan halaman Home sesuai dengan hak akses yang dimiliki. Berikut adalah potongan listing program untuk proses login, disajikan dalam listing 4.2 berikut : Listing 4.2 ServletLoginController.jsp

HttpSession session = request.getSession(true); session.setMaxInactiveInterval(‐1); response.setContentType("text/html;charset=UTF‐8"); PrintWriter out = response.getWriter(); String send = request.getParameter("send"); else if (send.equals("login")) {

try { String user_Name = request.getParameter("username"); String password = request.getParameter("password");

Login_Aksi log = new Login_Aksi(); String level = log.getLevel(user_Name, password); boolean hasil = log.login(user_Name, password); if (hasil = true) { if (level.equals("admin")) {

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 43

session.setAttribute("admin", "administratornya"); RequestDispatcher rd = request.getRequestDispatcher("./Admin_Home.jsp"); rd.forward(request, response);

} else if (level.equals("user")) {

session.setAttribute("user", "usernya"); RequestDispatcher rd = request.getRequestDispatcher("./User_Home.jsp"); rd.forward(request, response);

} else { System.out.println("Login salah"); response.sendRedirect("index.jsp?error=yes"); } } else { System.out.println("salah"); response.sendRedirect("index.jsp?error=yes"); }

Penjelasan Listing 4.2 Proses penerimaan variabel yang dimasukkan user dalam halaman login, terjadi pada baris berikut :

String user_Name = request.getParameter("username"); String password = request.getParameter("password");

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 44

Untuk penanganan mengenai login selanjutnya menggunakan class Login_Aksi, ditunjukan pada baris berikut :

Login_Aksi log = new Login_Aksi();

Untuk pengecekan user dan mendapatkan hak akses menggunakan method getLevel, dan method login. Terjadi pada baris berikut :

String level = log.getLevel(user_Name, password); boolean hasil = log.login(user_Name, password);

Jika hasil pengecekan valid maka kemudian akan ditampilkan halaman yang sesuai dengan hak akses yang dimiliki, sebagai admin atau user biasa. Proses ini ditunjukan pada baris berikut :

if (hasil = true) { if (level.equals("admin")) { session.setAttribute("admin", level); RequestDispatcher rd = request.getRequestDispatcher("./Admin_Home.jsp"); rd.forward(request, response); } else if (level.equals("user")) { session.setAttribute("user", level); RequestDispatcher rd = request.getRequestDispatcher("./User_Home.jsp"); rd.forward(request, response); }

Jika pada proses di atas data tidak ditemukan, maka terjadi kesalahan dan proses login harus diulang. Proses ini terjadi pada baris berikut :

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 45

} else { response.sendRedirect("index.jsp?error=yes")

4.1.2 Halaman Home Admin

Gambar 4.3 Halaman Home Admin

Gambar 4.3 merupakan halaman tampilan awal ketika proses login berhasil dan hak akses yang dimiliki adalah sebagai admin.Pada halaman ini terdapat beberapa menu yaitu menu Home, Pesan Kursi, Update, Lihat Order dan Menu Sisa Kursi. Pada halaman ini juga ditampilkan form Cari Jalur dengan 4 inputan, yaitu ; Tanggal Berangkat, Stasiun asal, Stasiun tujuan dan Jumlah Kursi. Form ini mendukung admin untuk bisa melakukan pencarian jalur alternatif. Untuk melakukan pencarian, admin diminta untuk memasukan inputan Tanggal Berangkat, Stasiun asal, Stasiun tujuan dan Jumlah Kursi yang tersedia. Kemudian menekan tombol cari. Secara otomatis sistem akan melakukan pencarian. Pada halaman ini juga terdapat tombol untuk melakukan logout, yang terdapat di sebelah kanan atas. Ketika admin ingin keluar dari aplikasi tinggal menekan tombol logout.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 46

4.1.3 Halaman Hasil Pencarian

Gambar 4.4 Halaman Hasil Pencarian Gambar 4.4 menunjukan halaman hasil pencarian jalur kereta. Halaman ini akan muncul setelah user memasukan semua inputan yaitu ; Tanggal Berangkat, Stasiun asal, Stasiun tujuan dan Jumlah Kursi dan menekan tombol cari. Halaman ini juga mnampilkan informasi keberangkanya pada hari Jumat, 3 Januari 2012 dengan tujuan yaitu GAMBIR-YOGYAKARTA untuk 1 kursi. Sebelah kanan dari tabel hasil pencarian ini terdapat form Cari Jalur, jika ingin melakukan pencarian lagi tinggal melakukan langkah yang sama seperti pada halaman Home. Listing 4.3 di bawah merupakan potongan program untuk melakukan pencarian jalur.

Listing 4.3 Tampil_Jalur.jsp

java.sql.ResultSet result = Aksi.Cari_Aksi.Cari2(tanggal, asal, tujuan, jumlah); out.println("BERANGKAT : " + tgl + " _ _ _ "); out.println("TUJUAN : " + stasiunA + "‐" + stasiunB + "_ _ _ KURSI : " +

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 47

jumlah); while (result.next()) { out.println(""); out.println(" "); out.println("" + result.getString("nomor_kereta") + ""); out.println("" + result.getString("nama_kereta") + ""); %>

<% out.print("
"); out.print(""); out.print(""); out.print("
"); %> <% out.println(""); }

Penjelasan Listing 4.3

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 48

Untuk melakukan pencarian dilakukan dengan memanggil kelas method Cari2, pada kelas Cari Aksi, yang ditunjukan pada baris berikut :

java.sql.ResultSet result = Aksi.Cari_Aksi.Cari2(tanggal, asal, tujuan, jumlah);

Method Cari2 mendapatkan empat input yaitu; tanggal, asal, tujuan, dan jumlah. Listing 4.4 berikut merupakan potongan program method Cari2 :

Listing 4.4 Method Cari2

public static ResultSet Cari2(String tgl, String stasiunA, String stasiunB, String jumlah) throws SQLException { DatabaseConnection connection = new DatabaseConnection(); ResultSet rs = null; String sql = "select k1.nomor_kereta, k1.nama_kereta, k2.nomor_template from kereta k1,(select t2.nomor_kereta,t2.nomor_template from kereta_template t2,(select nomor_berangkat as kereta from kursi_temp where tanggal_berangkat='" + tgl + "' and stasiun<='" + stasiunA + "' and stasiun='" + stasiunB + "'and flag is null group by nomor_berangkat having count(nomor_kursi)>='"+jumlah+"')t1 where t2.NOMOR_TEMPLATE=t1.kereta order by nomor_kereta)k2 where k1.NOMOR_KERETA=k2.nomor_kereta and k1.arah=1";

rs = (ResultSet) connection.lihatData(sql); return rs; }

Penjelasan Listing 4.4

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 49

Method Cari2 pada listing 4.4 di atas menunjukan bahwa method ini bertipe ResultSet dan memiliki 4 input bertipe String , ditunjukan pada baris berikut :

public static ResultSet Cari2(String tgl, String stasiunA, String stasiunB, String jumlah) Pada baris program berikut menunjukan method Cari2 melakukan koneksi ke database.

DatabaseConnection connection = new DatabaseConnection();

Untuk mendapatkan data yang dicari digunakan perintah perintah query yang ditunjukan pada baris berikut :

String sql = "select k1.nomor_kereta, k1.nama_kereta, k2.nomor_template from kereta k1,(select t2.nomor_kereta,t2.nomor_template from kereta_template t2,(select nomor_berangkat as kereta from kursi_temp where tanggal_berangkat='" + tgl + "' and stasiun<='" + stasiunA + "' and stasiun='" + stasiunB + "'and flag is null group by nomor_berangkat having count(nomor_kursi)>='"+jumlah+"')t1 where t2.NOMOR_TEMPLATE=t1.kereta order by nomor_kereta)k2 where k1.NOMOR_KERETA=k2.nomor_kereta and k1.arah=1";

Perintah query ini memiliki 4 paramaeter input yaitu tgl, StasiunA, StasiunB dan jumlah .Perintah ini dimulai dengan perintah select untuk memilih atau mengambil data yang kemudian diikuti baris yang dipilih yaitu nomor_kereta, nama_kereta dan nomor_template. Sedangkan k1 dan k2 untuk menandakan bahwa data ini berasal dari tabel yang berbeda. Kemudian diikuti tabel yang dipilih dimulai dengan perintah from. Dan diakhiri dengan perintah where. Nah pada perintah where ini dimasukkan parameter inputnya.Query ini

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 50

dikirimkan ke database untuk diproses menggunakan perintah yang ditunjukan pada baris berikut;

rs = (ResultSet) connection.lihatData(sql);

Untuk mengembailkan nilai menggunakan perintah berikut;

return rs;

Setelah melakukan pemanggilan method Cari2 program menampilkan hasil pencarian, ditunjukan pada baris berikut ;

while (result.next()) { out.println(""); out.println(" "); out.println("" + result.getString("nomor_kereta") + ""); out.println("" + result.getString("nama_kereta") + "");

Tombol pesan pada hasil pencarian, ditampilkan pada baris program berikut ;

%>

<% out.print("
"); out.print("");

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 51

out.print(""); out.print("

");%>

<%

Gambar 4.5 Form Pesan

Gambar 4.5 di atas menampilkan sebuah form pemesanan. Form ini akan muncul jika tombol pesan pada gambar 4.4 ditekan. Form ini menampilkan detail pemesanan. Sebelum form ini dikirimkan untuk melanjutkan proses pemesanan, maka pengguna harus mengisikan data pemesan yang berupa nama dan nomor identitas yang digunakan. Kemudian klik tombol pesan jika setuju untuk memesan, jika tidak maka bisa menekan tombol batal untuk kembali ke menu sebelumnya. Setelah kursi berhasil

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 52

dipesan maka akan ditampilkan pesan bahwa pemesanan telah berhasil, dengan ditunjukan pada gambar 4.6 di berikut :

Gambar 4.6 Pemesanan Berhasil.

4.1.4 Halaman Update

Gambar 4.7 Halaman Update Gambar halaman update di atas adalah halaman update data untuk admin. Halaman ini memiliki empat (5) submenu, yaitu Update Kereta, Update Stasiun, Update Template , Update User dan Insert. Semuanya

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 53

memiliki struktur program yang sama, yaitu melakukan query ke dalam database berdasarkan tabel yang akan diubah. Listing potongan program untuk update data stasiun ditampilkan pada listing 4.5 berikut :

Listing 4.5 Update Stasiun <% java.sql.Statement statement = connectionku.openConnection().createStatement(); %>

<% java.sql.ResultSet result = entity.stasiun.lihatDataStasiun();

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 54

while (result.next()) { out.println("

"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); %> <% out.print(""); out.print(""); out.print(""); out.print("");%>

<% out.println("

"); }

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 55

statement.close();

Penjelasan Listing 4.5 Update Stasiun Untuk menampilkan data dari database perlu koneksi, ditunjukan pada baris berikut;

java.sql.Statement statement = connectionku.openConnection().createStatement();

Tabel untuk menempatkan data menggunakan script program sebagai berikut ;

No urut Nomor Stasiun Nama Stasiun Ubah Hapus
" + result.getString("Nomor_Stasiun") + "" + result.getString("Nama_Stasiun") + "

Untuk mengisi data pada tabel menggunakan method lihatDataStasiun, ditunjukan pada baris berikut ;

java.sql.ResultSet result = entity.stasiun.lihatDataStasiun(); while (result.next()) {

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 56

out.println("

"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("");

Isi method lihatDataStasiun ditujukan dalam listing 4.6 berikut; Listing 4.6 Method lihatDataStasiun public static ResultSet lihatDataStasiun() throws SQLException { DatabaseConnection konek = new DatabaseConnection(); ResultSet rs; String sql = "select * from stasiun"; rs = (ResultSet) konek.lihatData(sql); return rs; }

Penjelasan Method lihatDataStasiun Method ini melakukan koneksi ke database, ditunjukan pada baris berikut;

DatabaseConnection konek = new DatabaseConnection();

Method ini melakukan perintah query dan disimpan dalam variabel rs yang bertipe ResultSet, ditunjukan dalam baris berikut;

ResultSet rs; String sql = "select * from stasiun";

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 57

rs = (ResultSet) konek.lihatData(sql);

Mengembalikan nilai rs, ditunjukan pada baris berikut ;

return rs;

Bersamaan pengisian data pada tabel, juga disisipkan link untuk update atau delete data, ditunjukan pada baris program berikut; %>

<% out.print(""); out.print(""); out.print(""); out.print(""); %> <%

Jika link update di tekan maka akan muncul tampilan yang ditunjukan gambar 4.6 berikut;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 58

Gambar 4.8 Ubah Data Stasiun Pada tampilan ini muncul data yang akan diubah, dan dua buah tombol yaitu; Batal dan Simpan. Cara untuk melakukan update adalah dengan mengubah inputan yang ada misalnya untuk nama kereta diubah menjadi ARGO JATI kemudian tekan tombol Simpan, maka data akan terupdate.Potongan listing untuk program tampilan di atas ditunjukan dalam listing 4.7 berikut :

Listing 4.7 Ubah Data Stasiun <% tool.DatabaseConnection conn = new tool.DatabaseConnection(); try { String noStasiunnya = request.getParameter("ns"); java.sql.Statement statement = conn.openConnection().createStatement(); java.sql.ResultSet result = entity.stasiun.lihatDataStasiun2(noStasiunnya); while (result.next()) { %>

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 59

No urut Nomor Stasiun Nama Stasiun Ubah Hapus
" + result.getString("Nomor_Stasiun") + "" + result.getString("Nama_Stasiun") + "
  " maxlength="100" />
  " maxlength="50" />
 

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 60

Penjelasan potongan Listing 4.7 Ubah Data Stasiun Untuk menampilkan data yang akan diubah sistem melakukan pemanggilan method lihatDataStasiun yang ditunjukan pada baris berikut ; java.sql.ResultSet result entity.stasiun.lihatDataStasiun2(noStasiunnya); Method ini memerlukan sebuah input, yaitu nomor kereta, sedangkan untuk isi method lihatDataStasiun ditampilkan pada Listing 4.8 berikut;

Listing 4.8 Method lihatDataStasiun2 public static ResultSet lihatDataStasiun2(String noStasiun) throws SQLException { DatabaseConnection konek = new DatabaseConnection(); ResultSet rs; String sql = "select * from stasiun where nomor_stasiun like '" + noStasiun + "'"; rs = (ResultSet) konek.lihatData(sql); return rs; }

4.1.5 Halaman Lihat Order

Gambar 4.9 Lihat Order

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 61

4.1.6 Halaman Sisa Kursi

Gambar 4.10 Halaman Sisa Kursi Halaman pada Gambar 4.10 di atas untuk menampilkan sisa kursi yang masih kosong untuk tiap kereta. Kursi yang masih kosong ini diambil dengan melihat kursi yang belum terisi sama sekali pada semua setasiun yang dilewati. Untuk menampilkan sisa kursi ini menggunakan baris program sebagai berikut ; Listing 4.8 Kursi Kosong

logout

Kursi Kosong

<% tool.DatabaseConnection conn = new tool.DatabaseConnection(); java.sql.Statement statement = conn.openConnection().createStatement(); java.sql.ResultSet result = entity.cari.cariKosong("9"); while (result.next()) { %>

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 63

<% } java.sql.ResultSet result1 = entity.cari.cariKosong("7"); while (result1.next()) { %> <% } java.sql.ResultSetresult2=entity.cari.cariKosong("1"); while (result2.next()) { %>

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 64

<% } %>
  " maxlength="50" />
  " maxlength="100" />
  " maxlength="50" />

4.1.7 Halaman Home User Tampilan untuk Home user ditunjukan Gambar 4.11 berikut;

Gambar 4.11 Halaman Home User

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 65

Halaman ini memiliki menu yang lebih sedikit dari halaman yang didapat oleh user dengan hak akses sebagai admin. Tetapi tetap memiliki kesamaan tampilan pada form Cari Jalur. Untuk melakukan pencarian user diminta melakukan inputan yang tersedia. Kemudian menekan tombol cari. Sistem secara otomatis akan menampilkan hasilnya. Tampilan hasil pencarian ditunjukan oleh Gambar 4.12 berikut :

Gambar 4.12 Hasil Pencarian Pada halaman hasil pencarian ini terdapat dua kereta yaitu kereta dengan nama ARGO LAWU dan ARGODWIPANGGA. Halaman ini juga menampilkan informasi keberangkatan kereta pada hari Jumat, 3 Januari 2012 untuk tujuan GAMBIR-YOGYAKARTA dengan jumlah kursi 1. Di halaman ini juga ditampilkan form Cari Jalur untuk memudahkan pencarian kembali. Jika tombol pesan di klik maka akan menampilkan data untuk pesan yang ditunjukan pada gambar 4.13 berikut :

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 66

Gambar 4.13 Form Pesan Form ini sama pada form pesan untuk admin, yang menampilkan detail kursi yang akan dipesan. Jika ingin melanjutkan pemesanan maka user harus mengisikan data pemesan yang berupa nama dan nomor identitas. Setelah melengkapi data pemesan maka proses pemesanan dapat dilanjutkan dengan menekan tombol pesan. Setelah berhasil maka akan ditampilkan pesan bahwa proses pemesanan telah berhasil yang ditunjukan oleh gambar 4.14 berikut :

Gambar 4.14 Pesan Berhasil

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 67

4.2 Proses Generate Data Untuk otomatisasi database menggunakan beberapa prosedure. Untuk prosedure pertama ditampilkan dalam potongan listing program berikut :

Listing 4.10 Generate Kereta_Berangkat create or replace procedure gen_kereta_berangkat is v_berangkat kereta_template.JAM_BERANGKAT%type; v_tiba kereta_template.JAM_TIBA%type; cursor berangkat is select nomor_template, jam_berangkat, jam_tiba from kereta_template where tanggal_awal_berlaku <= (select * from sekarang) and tanggal_akhir_berlaku >=(select * from sekarang); berangkat_record berangkat%ROWTYPE; begin open berangkat; loop fetch berangkat into berangkat_record; exit when berangkat%NOTFOUND; select jam_berangkat into v_berangkat from kereta_template where nomor_template=berangkat_record.nomor_template; select jam_tiba into v_tiba from kereta_template where nomor_template=berangkat_record.nomor_template; if v_berangkat > v_tiba then insert into kereta_berangkat(nomor_berangkat,tanggal_berangkat,tanggal_tiba) values (berangkat_record.nomor_template, (select tgl_sekarang from sekarang), (select tgl_sekarang+1 from sekarang)); else insert into kereta_berangkat(nomor_berangkat,tanggal_berangkat,tanggal_tiba) values (berangkat_record.nomor_template, (select tgl_sekarang from sekarang), (select tgl_sekarang from sekarang));

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 68

end if; end loop; commit; close berangkat; end gen_kereta_berangkat;

Penjelasan Listing 4.10 Generate Kereta_Bertangkat

Prosedure ini akan melakukan insert data dengan membaca data dari tabel kereta_template kemudian mengisikannya ke dalam tabel kereta_berangkat. Prosedure ini dimulai dengan perintah yang ditunjukan oleh baris program berikut :

create or replace procedure gen_kereta_berangkat is v_berangkat kereta_template.JAM_BERANGKAT%type;

v_tiba kereta_template.JAM_TIBA%type;

Perintah create or replace untuk membuat prosedure sedangkan gen_kereta_berangkat merupakan nama prosedur yang dibuat. Dua baris di bawahnya merupakan variabel, v_berangkat kereta bertipe data seperti tipe data pada JAM_BERANGKAT pada tabel kereta template. Sedangkan v_tiba bertipe JAM_TIBA pada kereta_template. Perintah selanjutnya adalah pendeklarasian sebuah kursor. Kursor merupakan sebuah mekanisme untuk dapat melakukan pembacaan sebuah record per baris. Ditunjukan pada baris berikut :

cursor berangkat

is select nomor_template, jam_berangkat, jam_tiba from kereta_template

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 69

where tanggal_awal_berlaku <= (select * from sekarang) and tanggal_akhir_berlaku >=(select * from sekarang);

berangkat_record berangkat%ROWTYPE;

berangkat merupakan nama dari kursor ini, isinya untuk mengambil data nomor_template, jam_berangkat, dan jam_tiba dari tabel kereta_template menggunakan perintah select. Pengambilan data ini memiliki ketentuan untuk data yang diambil memiliki tanggal_awal_berlaku sama atau lebih dari tanggal sekarang dan tanggal akhir_berlakunya sama atau kurang dari tanggal sekarang. Ini untuk memilih bahwa data yang di generate sesuai dengan tanggal berlakunya. Data ini akan disimpan dalam berangkat_record.

Untuk memulai prosedure ini dengan perintah pada baris berikut :

begin

Untuk membuka kursor digunakan baris berikut :

open berangkat;

Setelah kursor dibuka maka akan melakukan perulangan untuk memasukkan data ke dalam berangkat_record, sampai semua data habis. Ditunjukan pada perintah berikut :

loop

fetch berangkat into berangkat_record;

exit when berangkat%NOTFOUND;

Setiap memasukkan data, dilakukan juga perintah untuk mengambil data jam_berangkat dan jam_tiba. Ditunjukan pada baris berikut :

select jam_berangkat into v_berangkat from kereta_template where nomor_template=berangkat_record.nomor_template;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 70

select jam_tiba into v_tiba from kereta_template where nomor_template=berangkat_record.nomor_template;

Jam berangkat dan jam tiba dipakai untuk menentukan tanggal tiba, jika jam tiba lebih kecil dari jam berangkat berarti sudah berada di hari berikutnya. Maka tanggal tiba harus ditambahkan satu. Ditunjukan pada baris berikut :

if v_berangkat > v_tiba then

insert into kereta_berangkat(nomor_berangkat,tanggal_berangkat,tanggal_tiba)

values (berangkat_record.nomor_template, (select tgl_sekarang from sekarang),

(select tgl_sekarang+1 from sekarang));

else insert into kereta_berangkat(nomor_berangkat,tanggal_berangkat,tanggal_tiba)

values (berangkat_record.nomor_template, (select tgl_sekarang from sekarang),

(select tgl_sekarang from sekarang));

end if;

Untuk mengahiri prosedur ini, ditunjukan pada baris berikut :

end loop;

commit;

close berangkat;

end gen_kereta_berangkat;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 71

end loop dipakai untuk mengakhiri perulangan, kemudian commit untuk menyatakan bahwa perintah eksekusi data selesai. Close berangkat untuk menutup kursor dan end untuk mengahiri prosedur ini.

Untuk prosedur yang kedua ditunjukan pada listing 4.11 berikut :

Listing 4.11 Generate Gebong create or replace procedure gen_gerbong is v_jml_gerbong kereta_template.JUMLAH_GERBONG%type; v_counter number(2):=1; cursor gerbong is select nomor_berangkat, tanggal_berangkat, tanggal_tiba from kereta_berangkat where tanggal_berangkat like (select tgl_sekarang from sekarang); gerbong_record gerbong%ROWTYPE; begin

open gerbong; loop fetch gerbong into gerbong_record; exit when gerbong%NOTFOUND; select jumlah_gerbong into v_jml_gerbong from kereta_template where nomor_template=gerbong_record.nomor_berangkat; loop insert into gerbong(nomor_berangkat,nomor_gerbong,tanggal_berangkat,tanggal_tiba) values (gerbong_record.nomor_berangkat,v_counter,gerbong_record.tanggal_berangkat,gerbong_re cord.tanggal_tiba); v_counter:=v_counter+1;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 72

exit when v_counter > v_jml_gerbong; end loop; v_counter:=1; end loop; commit; close gerbong; end gen_gerbong;

Penjelasan Listing 4.11 Generate Gerbong.

Prosedur ini dipakai untuk melakukan insert data gerbong secara otomatis sesuai dengan jumlah gerbong yang terdapat dalam kereta_template. Prosedure ini juga memakai kursor untuk membaca data tiap baris, kemudian melakukan insert ke dalam tabel gerbong.

Untuk prosedur yang ketiga ditunjukan pada listing 4.12 berikut :

Listing 4.12 Generate Kursi create or replace procedure gen_kursi is v_jml_kursi kereta_template.JUMLAH_KURSI_TIAP_GERBONG%type; v_kursi kursi_temp.NOMOR_KURSI%type; v_counter number(2):=1; v_nomer_kereta number(2):=null; v_stasiun has_stasiun.NO_STASIUN%type;

cursor kursi is select nomor_kereta, nomor_gerbong, tanggal_berangkat, tanggal_tiba from gerbong where tanggal_berangkat like (select tgl_sekarang from sekarang) order by nomor_kereta;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 73

kursi_record kursi%ROWTYPE;

cursor stas is select no_stasiun from has_stasiun where nomor_kereta=v_nomer_kereta; stasiun_record stas%ROWTYPE; begin

open kursi; loop fetch kursi into kursi_record; exit when kursi%NOTFOUND; select jumlah_kursi_tiap_gerbong into v_jml_kursi from kereta_template where nomor_kereta=kursi_record.nomor_kereta; loop if v_counter < 14 then v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINE('nilai'||v_nomer_kereta); open stas; loop fetch stas into stasiun_record; exit when stas%NOTFOUND; dbms_output.PUT_LINE('hasil :' ||('A'||v_counter)||'stasiun :'||stasiun_record.no_stasiun); insert into kursi_temp(nomor_kereta, nomor_gerbong, nomor_kursi, tanggal_berangkat, tanggal_tiba, stasiun) values (kursi_record.nomor_kereta, kursi_record.nomor_gerbong,'A'||v_counter, kursi_record.tanggal_berangkat, kursi_record.tanggal_tiba, stasiun_record.no_stasiun); end loop; commit;

close stas;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 74

elsif v_counter < 28 then

v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINE('nilai'||v_nomer_kereta); open stas; loop fetch stas into stasiun_record; exit when stas%NOTFOUND; dbms_output.PUT_LINE('hasil :' ||('B'||v_counter)||'stasiun :'||stasiun_record.no_stasiun); insert into kursi_temp(nomor_kereta, nomor_gerbong, nomor_kursi, tanggal_berangkat, tanggal_tiba, stasiun) values (kursi_record.nomor_kereta, kursi_record.nomor_gerbong,'B'||v_counter, kursi_record.tanggal_berangkat, kursi_record.tanggal_tiba, stasiun_record.no_stasiun); end loop; commit; close stas;

elsif v_counter < 39 then

v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINE('nilai'||v_nomer_kereta); open stas; loop fetch stas into stasiun_record; exit when stas%NOTFOUND; dbms_output.PUT_LINE('hasil :' ||('C'||v_counter)||'stasiun :'||stasiun_record.no_stasiun); insert into kursi_temp(nomor_kereta, nomor_gerbong, nomor_kursi, tanggal_berangkat, tanggal_tiba, stasiun) values (kursi_record.nomor_kereta, kursi_record.nomor_gerbong,'C'||v_counter, kursi_record.tanggal_berangkat, kursi_record.tanggal_tiba, stasiun_record.no_stasiun); end loop;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 75

commit; close stas;

els if v_counter < 50 then

v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINE('nilai'||v_nomer_kereta); open stas; loop fetch stas into stasiun_record; exit when stas%NOTFOUND; dbms_output.PUT_LINE('hasil :' ||('D'||v_counter)||'stasiun :'||stasiun_record.no_stasiun); insert into kursi_temp(nomor_kereta, nomor_gerbong, nomor_kursi, tanggal_berangkat, tanggal_tiba, stasiun) values (kursi_record.nomor_kereta, kursi_record.nomor_gerbong,'D'||v_counter, kursi_record.tanggal_berangkat, kursi_record.tanggal_tiba, stasiun_record.no_stasiun); end loop; commit; close stas; end if; v_counter:=v_counter+1; exit when v_counter > v_jml_kursi; end loop; v_counter:=1; end loop; commit; close kursi; end gen_kursi;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 76

Penjelasan Listing 4.12 Generate Kursi

Prosedur ini dipakai untuk melakukan insert data secara otomatis ke dalam tabel kursi. Pada prosedur ini juga menggunakan kursor, tetapi lebih dari satu, yaitu kursor kursi dan kurso stas. Ditunjukan dalam baris berikut :

cursor kursi is select nomor_kereta, nomor_gerbong, tanggal_berangkat, tanggal_tiba from gerbong where tanggal_berangkat like (select tgl_sekarang from sekarang) order by nomor_kereta; kursi_record kursi%ROWTYPE; cursor stas is select no_stasiun from has_stasiun where nomor_kereta=v_nomer_kereta; stasiun_record stas%ROWTYPE;

Kursor kursi untuk mendapatkan data dari gerbong yang nantinya akan dimasukkan kedalam tabel kursi. Sedangkan kursor stas dipakai untuk mengambil stasiun dari tabel has_stasiun. Cara kerja prosedur ini adalah, dengan membaca data pada tabel gerbong satu per satu sampai selesai. Tiap data gerbong dicari berapa kursi untuk tiap gebongnya, dan stasiun yang dimiliki menggunakan kursor stas. Selanjutnya, dilakukan insert data ke dalam tabel kursi sebanyak kursi dan stasiun yang dimiliki. Untuk memulai prosedur ditunjukan pada baris berikut :

open kursi; loop fetch kursi into kursi_record; exit when kursi%NOTFOUND;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 77

select jumlah_kursi_tiap_gerbong into v_jml_kursi from kereta_template where nomor_kereta=kursi_record.nomor_kereta;

Untuk melakukan insert data ditunjukan pada baris berikut :

v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINE('nilai'||v_nomer_kereta); open stas; loop fetch stas into stasiun_record; exit when stas%NOTFOUND; dbms_output.PUT_LINE('hasil :' ||('A'||v_counter)||'stasiun :'||stasiun_record.no_stasiun); insert into kursi_temp(nomor_kereta, nomor_gerbong, nomor_kursi, tanggal_berangkat, tanggal_tiba, stasiun) values (kursi_record.nomor_kereta, kursi_record.nomor_gerbong,'A'||v_counter, kursi_record.tanggal_berangkat, kursi_record.tanggal_tiba, stasiun_record.no_stasiun); end loop;

Untuk mengakhiri prosedure ini ditunjukan pada baris berikut :

end if; v_counter:=v_counter+1; exit when v_counter > v_jml_kursi; end loop; v_counter:=1; end loop; commit; close kursi; end gen_kursi;

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

BAB V ANALISIS HASIL

5.1 Analisis Hasil Perangkat Lunak

Aplikasi Pencarian Jalur Alternatif ini telah berhasil dibangun. Untuk menggunakan aplikasi ini pengguna hanya perlu memasukkan beberapa inputan yaitu ; tanggal berangkat, stasiun asal, stasiun tujuan dan jumlah kursi yang diinginkan, dan aplikasi akan menampilkan hasilnya. Setiap hasil yang keluar adalah kereta yang memiliki kursi yang kosong, sesuai dengan input yang telah dimasukkan. Untuk dapat melakukan pemesanan pengguna harus melakukan login terlebih dahulu. Selain itu login ini juga berguna untuk menentukan hak akses atau wewenang terhadap aplikasi ini, apakah user biasa atau sebagai admin. Untuk admin memiliki menu yang lebih banyak, yaitu untuk melakukan pengelolaan aplikasi. Seperti melakukan perubahan data kereta, pengguna, dan lain-lain.

Setelah dicobakan ke beberapa pengguna, aplikasi ini mendapat beberapa tanggapan. Dari enam responden, empat orang menyatakan setuju bahwa aplikasi ini membantu melakukan pencarian jalur alternatif dengan secara cepat dan efisien. Dua orang menyatakan sangat setuju bahwa aplikasi ini dapat melakukan pencarian jalur alternatif secara efisien.. Dua orang menyatakan sangat setuju bahwa aplikasi ini dapat melakukan pemesanan kursi dengan mudah, dua orang setuju dan sisanya ragu-ragu. Untuk tampilan aplikasi ini lima orang setuju dan satu orang menyatakan ragu-ragu bahwa aplikasi pencarian jalur alternatif ini memiliki tampilan yang menarik dan user friendly. Beberapa responden juga memberikan saran dan kritik terhadap aplikasi pencarian jalur alternatif ini. Tiga orang responden menyarankan untuk menambah jumlah pemesanan kursi dan detail pemesanan. Seorang

78

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 79

responden juga memberikan kritik bahwa warna tampilan perlu untuk diperjelas lagi.

5.2 Kelebihan dan Kekurangan Aplikasi

Kelebihan dari aplikasi ini adalah aplikasi mampu melakukan pencarian jalur alternatif menggunakan perintah SQL database. Selain itu aplikasi ini juga menggunakan teknik stored procedure untuk melakukan generate data secara otomatis. Didalam stored procedure ini juga memakai cursor yang digunakan untuk menggenerate data dalam jumlah yang banyak secara otomatis.

Kekurangan dari aplikasi ini hanya bisa melakukan pemesanan untuk satu kursi untuk sekali pemesanan. Adapun masukan dari reponden terkait kekurangan aplikasi ini adalah pemesanan kursi yang lebih dari satu dalam sekali pemesanan, dan ditampilkan detail pemesananya. Selain itu tampilan dirasa masih kurang, akan lebih baik jika warna yang digunakan sesuai dengan warna dari pihak pengelola kereta api.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 80

BAB VI

KESIMPULAN

6.1 Kesimpulan

Berdasarkan hasil analisa, desain, implementasi, dan hasil uji coba terhadap pengguna Aplikasi Pencarian Jalur Alternatif, maka dapat disimpulkan bahwa : 1. Aplikasi Pencarian Jalur Alternatif telah berhasil dibangun untuk dapat melakukan pencarian jalur alternatif dan pemesanan kursi, satu kursi dalam sekali pemesanan. 2. Aplikasi Pencarian Jalur Alternatif dibangun menggunakan teknolgi web JSP dan menggunakan basisdata Oracle Express Edition dengan teknik stored prcedure dan cursor untuk melakukan generate data. 3. Aplikasi Pencarian Jalur Alternatif dapat melakukan pencarian jalur alternatif menggunakan perintah SQL database.

6.2 Saran

Saran yang didapat penulis untuk pengembangan aplikasi ini adalah :

1. Pemesanan kursi lebih dari satu dalam sekali pemesanan dan dilengkapi detail pemesanan. 2. Warna disesuaikan dengan warna resmi pihak pengelola kereta api.

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI

DAFTAR PUSTAKA

Atzeni, Paolo, Stefano Ceri, Stefano Parabochi, Riccardo Torlone. 2000.

Database Systems Consepts Languages, & Architectures. London :

Macgrow-Hill Publishing Company

Connolly, T., Begg, C. 2005. Database Systems A Practical Approach to Design, Implementation, and Management. Pearson Education Limited

Kadir, Abdul. 2004. Dasar Pemrograman Dinamis dengan JSP. Yogyakarta: Andi. Nugroho, Adi. 2009. Rekayasa Perangakat Lunak Menggunakan UML dan JAVA. Yogyakarta : Andi. Pressman, R.S. 1997. Rekayasa Perangkat Lunak Pendekatan Praktisi. Yogyakarta: Andi. Susanto, Budi. 2012. Membangun Sistem Basisdata dengan OracleXE. Yogyakarta : Yogyakarta. Wijono, G.Sri Hartati, B.Herry , M.Soesilo Wijono. 2007.

Pemrograman Java Servlet dan JSP dengan NetBeans.Yogyakarta :

Andi.

Website resmi PT. KERETA API INDONESIA (PERSERO), www.kereta- api.co.id

81

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 82

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 83

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 84

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 85

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 86

PLAGIATPLAGIAT MERUPAKAN MERUPAKAN TINDAKAN TINDAKAN TIDAK TIDAK TERPUJI TERPUJI 87