Sistem penyewaan kamar online menerapkan manajemen transaksi menerapkan protokol two phase locking (studi kasus Hotel Prambanan Indah).

(1)

INTISARI

Transaksi penyewaan kamar di hotel merupakan hal yang penting, terutama pada pencatatan akan penyewaan kamar dan harinya, merupakan hal yang penting. Pada transaksi penyewaan kamar dilakukan dengan manajemen transaksi untuk mengurangi kesalahan dalam hal pencatatan kamar dan penyewaannya. Pada transaksi penyewaan kamar yang terdapat di Hotel Candi Prambanan indah masih menggunakan pencatatan manual. Untuk meningkatkan kinerja hotel Prambanan Indah maka perlu dibuat sistem penyewaan kamar online. Sistem penyewaan kamar secara online yang baru ini menggunakan database yang bisa mengakibatkan masalah, yaitu masalah proses konkuren seperti The Lost Update Problem,The Uncommited Dependency (Dirty Read) Problem,The Incosistent Analysis Problem. Masalah akibat proses konkuren bisa terjadi ketika beberapa user melakukan penyewaan kamar secara bersamaan. Penggunaan manajemen transaksi disini berada pada sistem penyewaan kamar yang akan dibuat dengan menggunakan protokol Two Phase Locking(2PL) untuk mengendalikan pemesan agar tidak terjadi penyewaan kamar secara bersamaan. Pada tugas akhir ini, protokol Two Phase Locking diuji untuk membuat website untuk Hotel Prambanan Indah sebagai studi kasus. Sistem ini dapat membantu penyewa dalam memilih kamar yang ingin disewa, mengirim bukti pembayaran, dan untuk mengetahui apakah order penyewaan kamar sudah diverifikasi oleh pihak hotel.

Hasil dari pengujian sistem penyewaan kamar online menerapkan manajemen transaksi menggunakan protokol Two Phase Locking diuji untuk menghasilkan website yang dapat menangani masalah proses yang konkuren dan dapat membantu user untuk menyewa kamar dengan mudah.

Kata kunci : Penyewaan kamar online, Manajemen Transaksi, Two Phase Locking,


(2)

ABSTRACT

Room rental transactions is essential, especially in the recording will be leasing the room and the days. At room rental transaction conducted with transaction management to reduce errors in the recording room and the rental terms. On room rental transactions at Hotel Prambanan Indah still use manual recording. To improve the performance of Hotel Prambanan Indah then need to be made online rental system. Online room rental system that currently use a database that could cause problems, namely the problem of concurrent processes such as The Lost Update Problem, The uncommited Dependency (Dirty Read) Problem, The Problem Analysis Incosistent. Problems due to concurrent processes can occur when several users perform rental of rooms simultaneously. The use of transaction management here are at room rental system that will be created using the protocol Two Phase Locking (2PL) for controlling subscriber in order to avoid rental rooms simultaneously.

In this thesis, the protocol Two Phase Locking tested to create a website for the Hotel Prambanan Indah as a case study. This system can help tenants in choosing the room who want to rent, send proof of payment, and to determine whether the order rental rooms has been verified by the hotel.

Results of the testing system online rental implementing transaction management using protocols Two Phase Locking tested to produce a website that can handle concurrent processes and can help the user to rent a room with ease.

Keywords: Rental room online, Transaction Management, Two Phase Locking, Concurrent Process.


(3)

i

Sistem Penyewaan Kamar Online menerapkan Manajemen Transaksi menerapkan Protokol Two Phase Locking

(Studi Kasus Hotel Prambanan Indah)

SKRIPSI

Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh

Wisnu Yhoga Wardhana 105314089

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA


(4)

ii

Room Rental System Online Implement Management Transaction Using Two Phase Locking Protocol

(Case Study at Hotel Prambanan Indah)

THESIS

Presented as Partial Fullfillment of the Requirements To Obtain Sarjana Komputer Degree

In Department of Informatics Engineering

By

Wisnu Yhoga Wardhana 105314089

INFORMATICS ENGINEERING STUDY MAJOR DEPARTMENT OF INFORMATICS ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY

YOGYAKARTA 2015


(5)

iii SKRIPSI

Sistem Penyewaan Kamar Online menerapkan Manajemen Transaksi menerapkan Protokol Two Phase Locking

(Studi Kasus Hotel Prambanan Indah)

Oleh

Wisnu Yhoga Wardhana 105314089

Telah Disetujui Oleh : Dosen Pembimbing


(6)

iv SKRIPSI

Sistem Penyewaan Kamar Online menerapkan Manajemen Transaksi menerapkan Protokol Two Phase Locking

(Studi Kasus Hotel Prambanan Indah)

Yang dipersiapkan dan disusun oleh : Wisnu Yhoga Wardhana

105314089

Telah dipertahankan di depan Tim Penguji Pada tanggal 20 April 2015

Dan dinyatakan memenuhi syarat Susunan Tim Penguji:

Tanda Tangan

Ketua : Agnes Maria Polina S.Kom., M.Sc. ………..

Sekretaris : Ridowati Gunawan S.Kom., M.T. ………..

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

Yogyakarta,

Fakultas Sains dan Teknologi Universitas Sanata Dharma

Dekan


(7)

v

Skripsi ini ku persembahkan untuk :

Yesus Kristus

Bapak, Ibu, dan Kakak

Sahabat dan Teman-teman

Hidup ini adalah pilihan, anda berhak

memilih apa yang anda inginkan.

Karena pilihan yang anda pilih yang

akan membukanan jalan untuk masa


(8)

vi

PERNYATAAN KEASLIAN KARYA

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

Yogyakarta,27 Januari 2015 Penulis


(9)

vii

PERNYATAAN PERSETUJUAN PUBLIKASI ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Wisnu Yhoga Wardhana

NIM : 105314089

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :

SISTEM PENYEWAAN KAMAR ONLINE MENERAPKAN

MANAJEMEN TRANSAKSI MENERAPKAN PROTOKOL TWO PHASE

LOCKING

(Studi Kasus Hotel Prambanan Indah)

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan

kepada Perpustakaan Universitas Sanata Dharma untuk hak

menyimpan,mengalihkan dalam bentuk media lain, mengolahnya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di internet dan media lain untuk kepentingan akademis tanpa perlu meminta izin dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan saya ini saya buat dengan sebenarnya.

Yogyakarta, 27 Januari 2015 Penulis


(10)

viii INTISARI

Transaksi penyewaan kamar di hotel merupakan hal yang penting, terutama pada pencatatan akan penyewaan kamar dan harinya, merupakan hal yang penting. Pada transaksi penyewaan kamar dilakukan dengan manajemen transaksi untuk mengurangi kesalahan dalam hal pencatatan kamar dan penyewaannya. Pada transaksi penyewaan kamar yang terdapat di Hotel Candi Prambanan indah masih menggunakan pencatatan manual. Untuk meningkatkan kinerja hotel Prambanan Indah maka perlu dibuat sistem penyewaan kamar online. Sistem penyewaan kamar secara online yang baru ini menggunakan

database yang bisa mengakibatkan masalah, yaitu masalah proses konkuren seperti The Lost Update Problem,The Uncommited Dependency (Dirty Read) Problem,The Incosistent Analysis Problem. Masalah akibat proses konkuren bisa terjadi ketika beberapa user melakukan penyewaan kamar secara bersamaan. Penggunaan manajemen transaksi disini berada pada sistem penyewaan kamar yang akan dibuat dengan menggunakan protokol Two Phase Locking(2PL) untuk mengendalikan pemesan agar tidak terjadi penyewaan kamar secara bersamaan.

Pada tugas akhir ini, protokol Two Phase Locking diuji untuk membuat website untuk Hotel Prambanan Indah sebagai studi kasus. Sistem ini dapat membantu penyewa dalam memilih kamar yang ingin disewa, mengirim bukti pembayaran, dan untuk mengetahui apakah order penyewaan kamar sudah diverifikasi oleh pihak hotel.

Hasil dari pengujian sistem penyewaan kamar online menerapkan manajemen transaksi menggunakan protokol Two Phase Locking diuji untuk menghasilkan website yang dapat menangani masalah proses yang konkuren dan dapat membantu user untuk menyewa kamar dengan mudah.

Kata kunci : Penyewaan kamar online, Manajemen Transaksi, Two Phase Locking, Proses Konkuren.


(11)

ix

ABSTRACT

Room rental transactions is essential, especially in the recording will be leasing the room and the days. At room rental transaction conducted with transaction management to reduce errors in the recording room and the rental terms. On room rental transactions at Hotel Prambanan Indah still use manual recording. To improve the performance of Hotel Prambanan Indah then need to be made online rental system. Online room rental system that currently use a database that could cause problems, namely the problem of concurrent processes such as The Lost Update Problem, The uncommited Dependency (Dirty Read) Problem, The Problem Analysis Incosistent. Problems due to concurrent processes can occur when several users perform rental of rooms simultaneously. The use of transaction management here are at room rental system that will be created using the protocol Two Phase Locking (2PL) for controlling subscriber in order to avoid rental rooms simultaneously.

In this thesis, the protocol Two Phase Locking tested to create a website for the Hotel Prambanan Indah as a case study. This system can help tenants in choosing the room who want to rent, send proof of payment, and to determine whether the order rental rooms has been verified by the hotel.

Results of the testing system online rental implementing transaction management using protocols Two Phase Locking tested to produce a website that can handle concurrent processes and can help the user to rent a room with ease.

Keywords: Rental room online, Transaction Management, Two Phase Locking, Concurrent Process.


(12)

x

KATA PENGANTAR

Puji dan syukur kepada Tuhan Yesus Kristus yang telah senantiasa memberikan berkat dan rahmat yang tak berkesudahan serta kesempatan yang sangat berharga

sehingga penulis dapat menyelesaikan skripsi dengan judul “Sistem Penyewaan

Kamar Online menerapkan Manajemen Transaksi menerapkan Protokol

Two Phase Locking (Studi Kasus Hotel Prambanan Indah)“.

Dalam kesempatan ini, penulis juga ingin mengucapkan terima kasih sebesar besarnya terhadap semua pihak yang telah memberi dukungan dan semangat sehingga skripsi ini dapat selesai :

1. Bapak JB Budi Darmawan S.T.,M.Sc., selaku dosen pembimbing. Terima kasih atas semua bantuan, bimbingan, diskusi, pengorbanan waktu, kesabaran, ilmu serta semangat yang telah diberikan.

2. Ibu Paulina Heruningsih Prima Rosa, S.si., M.Sc., selaku Dekan Fakultas Sains dan Teknologi.

3. Ibu Ridowati Gunawan, S.Kom., M.T., selaku ketua jurusan Teknik Informatika Universitas Sanata Dharma.

4. Ibu Paulina Heruningsih Prima Rosa, S.si., M.Sc., selaku dosen pembimbing akademik.

5. Agnes Maria Polina S.Kom, M.Sc., dan Ibu Ridowati Gunawan, S.Kom., M.T., selaku dosen penguji. Terima kasih atas saran dan kritik yang telah diberikan.

6. Kedua orang tua penulis, serta kakak. Terima kasih untuk semua kasih sayang, semangat, dan dukungan dari kalian semua.

7. Julie yang selalu memberikan semangat, doa, hiburan, dan masukan kepada penulis.

8. Untuk Theo, Ougi, Teddy, Fafe, Ardy, teman-teman kelas C dan seluruh teman-teman Teknik Informatika angkatan 2010. Terima kasih atas kebersamaan dan dukungannya.


(13)

xi

Penulis menyadari masih banyak kekurangan yang terdapat dalam laporan tugas akhir ini. Saran dan kritik sangat diharapkan untuk hasil yang lebih baik dimasa depan.

Yogyakarta, 15 Mei 2015


(14)

xii DAFTAR ISI

HALAMAN JUDUL ... i

HALAMAN PERSETUJUAN ... ii

HALAMAN PENGESAHAN ... iii

PERNYATAAN KEASLIAN KARYA ... vi

PERNYATAAN PERSETUJUAN PUBLIKASI ILMIAH UNTUK KEPENTINGAN AKADEMIS ... vii

INTISARI ... viii

ABSTRACT ... ix

KATA PENGANTAR ... x

Daftar Gambar... xv

Daftar Tabel ... xvii

BAB 1 ... 1

PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Tujuan dan Manfaat ... 2

1.4. Batasan Masalah ... 2

1.5. Metodologi ... 3

1.6. Sistematika Penulisan ... 4

BAB 2 ... 6

LandasanTeori ... 6

2.1. Sistem Informasi ... 6

2.1.1. Sistem ... 6

2.1.2. Informasi ... 6

2.1.3. Sistem Informasi ... 6

2.2. Manajemen Transaksi. ... 7

2.2.1. Metode Locking ... 7

2.2.2. Two Phase Locking(2PL) ... 8


(15)

xiii

2.2.3. Perintah For Update ... 11

2.3. Hotel ... 12

BAB 3 ... 14

ANALISIS DAN PERANCANGAN SISTEM ... 14

3.1. Gambaran Umum Sistem yang lama ... 14

3.2. Gambaran Umum Sistem yang baru ... 14

3.3. Requirement Analysis ... 15

3.3.1. Use Case Diagram ... 15

3.3.2. Definisi Aktor ... 16

3.3.3. Definisi Use Case ... 17

3.3.4. Skenario Use Case ... 18

3.4. Activity Diagram ... 24

3.5. Perancangan Diagram Sekuensial ... 29

3.6. Perancangan Diagram Kelas ... 35

3.7. Perancangan Konseptual ... 35

3.8. Perancangan Logikal ... 36

3.9. Desain Database ... 36

Bab IV ... 41

IMPLEMENTASI SISTEM ... 41

4.1. Spesifikasi Software dan Hardware yang Digunakan ... 41

4.1.1. Spesifikasi Software ... 41

4.1.2. Spesifikasi Hardware ... 41

4.2. Implementasi Stored Procedure ... 42

4.2.1. Implementasi Stored Procedure untuk inserttransaksi penyewaan. ... 42

4.2.2. Implementasi Stored Procedure untuk menghapus transaksi penyewaan kamar. 47 4.2.3. Implementasi Stored Procedure untuk menambah data dari kamar sewa... 48

4.3. Implementasi Program ... 50

4.3.1. Proses memberi harga DP ... 50

4.3.2. Proses insert data Transaksi penyewaan kamar. ... 51

4.3.3. Proses memasukan bukti transfer dp. ... 52


(16)

xiv

4.3.5. Proses mengkonfirmasi transaksi penyewaan kamar. ... 54

4.3.6. Proses menambah kamar setiap hari. ... 55

4.4. Implementasi Antarmuka ... 57

4.4.1. Halaman Login Admin ... 57

4.4.2. Halaman Home ... 57

4.4.3. Halaman PilihKamar ... 58

4.4.4. Halaman DataPenyewa ... 59

4.4.5. Halaman Selesai ... 59

4.4.6. Halaman Verifikasi DP ... 60

4.4.7. Halaman Konfirmasi ... 60

4.4.8. Halaman Admin Belum Dikonfirmasi ... 61

4.4.9. Halaman Admin Sudah Dikonfirmasi ... 62

BAB V ... 64

ANALISA HASIL PENGUJIAN ... 64

5.1. Analisa Hasil Perangkat Lunak ... 64

5.2. Analisa Hasil Coba Terhadap Program ... 64

5.2.1. Pengujian terhadap proses Transaksi Penyewaan Kamar. ... 65

5.3. Analisa Hasil Coba Terhadap Pengguna ... 70

5.3.1. Form kuisioner ... 70

5.3.2. Hasil dan pembahasan ... 70

5.3.2.1. Hasil Uji Coba Admin ... 70

5.3.2.1.1. Hasil uji tampilan ... 70

5.3.2.1.2. Hasil uji isi/Informasi ... 74

5.3.2.2. Hasil Uji Coba Pengguna ... 77

5.3.2.2.1. Hasil uji tampilan ... 77

5.3.2.2.2. Hasil uji Isi/Informasi... 81

BAB VI ... 86

KESIMPULAN DAN SARAN ... 86

6.1. Kesimpulan ... 86

6.2. Saran ... 86

Daftar Pustaka ... 88


(17)

xv

Daftar Gambar

Gambar 2. 1 Mencegah Lost Update Problem menggunakan 2PL ... 9

Gambar 2. 2 Mencegah Uncommitted Dependency Problem using 2PL ... 10

Gambar 2. 3 Mencegah Inconsistent Analysis Problem using 2PL ... 11

Gambar 3. 1 Use Case ... 16

Gambar 3. 2 Diagram aktifitas login... 24

Gambar 3. 3 Diagram aktifitas Memasukan kriteria Penyewaan ... 25

Gambar 3. 4 Diagram aktifitas Logout ... 25

Gambar 3. 5 Diagram aktifitas Transaki Menyewa Kamar ... 26

Gambar 3. 6 Diagram aktifitas Memasukan bukti transaksi ... 26

Gambar 3. 7 Diagram aktifitas Melihat konfirmasi penyewaan ... 27

Gambar 3. 8 Diagram aktifitas validasi penyewaan ... 27

Gambar 3. 9 Menambah data Kamar sewa ... 28

Gambar 3. 10 Case Login ... 29

Gambar 3. 11 Memasukan kriteria Penyewaan. ... 30

Gambar 3. 12 Transaki Menyewa Kamar. ... 30

Gambar 3. 13 Masukan Memasukan bukti transaksi. ... 31

Gambar 3. 14 Melihat konfirmasi penyewaan. ... 32

Gambar 3. 15 Validasi penyewaan. ... 33

Gambar 3. 16 Menambah Kamar Sewa ... 34

Gambar 3. 17 Case Logout. ... 34

Gambar 3. 18 Diagram kelas ... 35

Gambar 3. 19 Diagram Entity Relatio... 35

Gambar 3. 20 Diagram Rational Relational ... 36

Gambar 4. 1 Insert Penyewa ... 47

Gambar 4. 2 Delete Transaksi ... 47

Gambar 4. 3 Update Harian ... 49

Gambar 4. 4 Proses Transaksi Sewa ... 50

Gambar 4. 5 Insert data Transaksi penyewaan kamar ... 51

Gambar 4. 6 Memasukan bukti transfer dp ... 52

Gambar 4. 7 Melihat Konfirmasi penyewaan kamar ... 53

Gambar 4. 8 Konfirmasi Penyewaan Kamar ... 54

Gambar 4. 9 Menambah kamar setiap hari ... 56

Gambar 4. 10 Halaman Login Admin ... 57

Gambar 4. 11 Halaman Home ... 58

Gambar 4. 12 Halaman PilihKamar ... 58

Gambar 4. 13 Halaman DataPenyewa ... 59

Gambar 4. 14 Halaman Selesai ... 60

Gambar 4. 15 Halaman Verifikasi DP ... 60

Gambar 4. 16 Halaman Konfirmasi ... 61


(18)

xvi

Gambar 4. 18 Halaman Admin Sudah Dikonfirmasi ... 62

Gambar 5 1 Berikut adalah gambar dari memilih Tipe Kamar. ... 65

Gambar 5 2 Gambar Isi Data Diri transaksi 1 ... 66

Gambar 5 3 Gambar Isi Data Diri transaksi 2 ... 66

Gambar 5 4 Transaksi Berjalan Bersamaan Karena delay ... 67


(19)

xvii Daftar Tabel

Tabel 3. 1 Definisi Aktor ... 16

Tabel 3. 2 Definisi Use Case ... 17

Tabel 3. 3 Skenario Login ... 18

Tabel 3. 4 Mengisi Data Hari Penyewaan. ... 19

Tabel 3. 5 Memilih Jenis Kamar. ... 20

Tabel 3. 6 Masukan data diri untuk penyewaan. ... 20

Tabel 3. 7 create kamar sewa. ... 21

Tabel 3. 8 Validasi pemesanan. ... 22

Tabel 3. 9 Membuat Kamar Sewa... 23

Tabel 3. 10Skenario Logout ... 23

Tabel 3. 11 Penyewa ... 36

Tabel 3. 12 Kamar ... 37

Tabel 3. 13 Kamar_Sewa ... 37

Tabel 3. 14 Transaksi_Sewa ... 37

Tabel 3. 15 Fasilitas_kamar ... 38

Tabel 3. 16 Fasilitas ... 38

Tabel 3. 17 Jenis Kamar ... 39

Tabel 5. 1 Proses yang terjadi dalam Transaksi Penyewaan Kamar ... 69

Tabel 5. 2 Hasil Pertanyaan 1 ... 70

Tabel 5. 3 Hasil Pertanyaan 2 ... 71

Tabel 5. 4 Hasil Pertanyaan 3 ... 71

Tabel 5. 5 Hasil Pertanyaan 4 ... 72

Tabel 5. 6 Hasil Pertanyaan 5 ... 73

Tabel 5. 7 Hasil Pertanyaan 6 ... 73

Tabel 5. 8 Hasil Pertanyaan 1 ... 74

Tabel 5. 9 Hasil Pertanyaan 2 ... 75

Tabel 5. 10 Hasil Pertanyaan 3 ... 75

Tabel 5. 11 Hasil Pertanyaan 4 ... 76

Tabel 5. 12 Hasil Pertanyaan 5 ... 76

Tabel 5. 13 Hasil Pertanyaan 1 ... 77

Tabel 5. 14 Hasil Pertanyaan 2 ... 78

Tabel 5. 15 Hasil Pertanyaan 3 ... 78

Tabel 5. 16 Hasil Pertanyaan 4 ... 79

Tabel 5. 17 Hasil Pertanyaan 5 ... 79

Tabel 5. 18 Hasil Pertanyaan 6 ... 80

Tabel 5. 19 Hasil Pertanyaan 1 ... 81

Tabel 5. 20 Hasil Pertanyaan 2 ... 82

Tabel 5. 21 Hasil Pertanyaan 3 ... 82

Tabel 5. 22 Hasil Pertanyaan 4 ... 83

Tabel 5. 23 Hasil Pertanyaan 5 ... 84


(20)

1 BAB 1 PENDAHULUAN 1.1.Latar Belakang

Kebutuhan akan informasi semakin banyak dibutuhkan, dan informasi tersebut harus cepat, akurat dan benar adanya. Informasi tersebut bisa diambil dari berbagai macam jenis perangka tlunak. Saat ini banyak pengguna yang melakukan peralihan system yang digunakan dari sistem yang manual menjadi sistem yang otomatis, perubahan ini dilakukan oleh pemerintah sampai perhotelan. Penggunaan sistem transaksidan sistem inventaris yang dilakukan oleh hotel juga mengalami perubahan.

Transaksi penyewaan kamar di hotel merupakan hal yang penting, terutama pada pencatatan akan penyewaan kamar dan harinya, merupakan hal yang penting. Di hotel Prambanan indah sudah menggunakan sistem penyewaan kamar tetapi masih belum online. Dengan adanya pencatatan ini hotel bisa memantau kamar mana yang kosong dan kamar mana yang sudah terisi. Sehingga pemesan bisa langsung memesan sesuai dengan kebutuhannya melalui website. Pengecekan kamar hotel harus selalu dilakukan agar tidak ada kesalahan dalam penyewaan kamar yang ditunjukan kepada penyewa melalui website yang disediakan.

Pada transaksi penyewaan kamar yang terdapat di Hotel Candi Prambanan indah masih menggunakan pencatatan manual. Untuk meningkatkan kinerja hotel Prambanan Indah maka perlu dibuat sistem penyewaan kamar online. Sistem penyewaan kamar secara online yang baru ini menggunakan database yang bisa mengakibatkan masalah, yaitu masalah proses konkuren seperti The Lost Update Problem,The Uncommited Dependency (Dirty Read) Problem,The Incosistent Analysis Problem. Masalah akibat proses konkuren bisa terjadi ketika beberapa user melakukan penyewaan kamar secara bersamaan.


(21)

Dibuatlah sistem yang bisa menangani masalah proses konkurensi (concurrency) dalam hal penyewaan kamar dan pencatatannya secara online. Pada transaksi penyewaan kamar dilakukan dengan manajemen transaksi untuk mengurangi kesalahan dalam hal pencatatan kamar dan penyewaannya. Penggunaan manajemen transaksi disini berada pada sistem penyewaan kamar yang akan dibuat dengan menggunakan protokol

Two Phase Locking(2PL) untuk mengendalikan pemesan agar tidak terjadi penyewaan kamar secara bersamaan.

1.2.Rumusan Masalah

Dari latar belakang yang dikemukakan, maka rumusan masalah yang dapat diambil adalah

1. Bagaimana membangun sistem penyewaan kamar hotel secara online melalui web?

2. Bagaimana sistem dapat mengatasi masalah concurrency dengan menerapkan Manajemen Transaksi di database?

1.3.Tujuan dan Manfaat

Tujuan pengembangan sistem ini adalah :

1. Membangun aplikasi yang dapat memudahkan transaksi penyewaan kamar dan dalam mengelola data yang menerapkan Manajemen Transaksi dengan Protokol Two Phase Locking.

Manfaat pengembangan sistem ini adalah :

1. Diharapkan agar sistem ini dapat diterapkan dan dapat mempermudah pemesanan kamar untuk dapat menyewa kamar.

2. Diharapkan agar sistem ini dapat membatu pihak hotel dalam mempermudah pemesanan kamar.

1.4.Batasan Masalah

Sistem yang dibangun memiliki batasan seperti dibawah ini : 1. Sistem ini hanya menangani pemesanan kamar online.


(22)

2. Pembayaran dilakukan dengan cara datang ke hotel Prambanan Indah atau mengirim bukti transaksi.

1.5.Metodologi

Metodologi yang digunakan dalam skripsi ini adalah waterfall model yang di uraikan oleh Roger S. Pressman (1992: 24). Tahap-tahapnya meliputi:

1. Tahap Requirement Analysis and Definition

Pada tahap ini akan dilakukan kegiatan :

a. Studi kepustakaan dengan mempelajari dan menerapkan informasi yang didapatkan dari buku–buku referensi, jurnal, artikel dan sumber tertulis lainnya.

b. Melakukan survei berupa membuat dan menyebarkan kuesioner kepada target pengguna aplikasi.

c. Analisis aplikasi sejenis yang bertujuan sebagai referensi dalam pembuatan aplikasi.

2. Tahap System and Software Design

Pada tahap ini akan dilakukan kegiatan : a. Perancangan sistem menggunakan UML.

b. Perancangan desain antarmuka menggunakan storyboard. 3. Tahap Implementation and Unit Testing

Pada tahap ini akan dilakukan kegiatan merealisasikan desain sistem ke dalam bentuk code (coding). Setiap bagian-bagian sistem yang telah dibuat akan dites untuk memastikan tidak ada error atau bug.

4. Tahap Integration and System Testing

Pada tahap ini akan dilakukan kegiatan mengintegrasikan semua bagian-bagian sistem yang telah dibuat menjadi satu kesatuan kemudian menguji aplikasi, apakah sudah sesuai dengan yang diharapkan atau tidak dan memastikan aplikasi tidak ada error atau bug.

5. Tahap Operation and Maintenance

Pada tahap ini akan dilakukan kegiatan menyebarluaskan aplikasi yang telah dibuat dan melakukan proses maintenance jika ada feedback dari


(23)

user mengenai error atau bug yang muncul selama menggunakan aplikasi.

1.6.Sistematika Penulisan

Sistematika penulisan dalam skripsi ini terbagi dalam 5 bab yang berisi sebagai berikut :

1. BAB 1 PENDAHULUAN

Pada bab ini memuat latar belakang pembuatan aplikasi ini, ruang lingkup, tujuan yang akan dicapai dan manfaat yang diharapkan, metodologi penelitian dan sistematika penulisan.

2. BAB 2 LANDASAN TEORI

Pada bab ini memuat teori-teori dari berbagai sumber yang digunakan sebagai referensi untuk mendukung dalam penulisan skripsi ini, baik teori umum maupun teori khusus.

3. BAB 3 ANALISIS DAN PERANCANGAN

Pada bab ini memuat analisis user melalui kuesioner, analisis terhadap

game sejenis yang sudah ada, serta melakukan perancangan, class diagram, use case diagram, sequence diagram, activity diagram.

4. BAB 4 IMPLEMENTASI DAN EVALUASI

Pada bab ini memuat implementasi dari sistem Penyewaan Kamar Hotel meliputi prosedur penggunaan dan hasil evaluasi.

5. BAB 5 KESIMPULAN DAN SARAN

Pada bab ini memuat kesimpulan dari hasil bahasan bab-bab sebelumnya, dan saran-saran yang berguna untuk pengembangan aplikasi ini di masa yang akan datang.


(24)

6 BAB 2 LandasanTeori 2.1.Sistem Informasi

2.1.1. Sistem

Sistem merupakan kumpulan dari objek-objek seperti manusia, konsep, dan prosedur yang saling berinteraksi untuk mencapai tujuan tertentu. (Whitten, 2001)

2.1.2. Informasi

Informasi berasal dari data-data yang akurat yang berasal dari kenyataan pada saat tertentu.Data kemudian diolah untuk menjadi bentuk tertentu yang kemudian bisa menjadi suatu informasi yang akurat. Informasi yang telah dibuat bisa digunakan untuk mendukung pengambilan keputusan dan melakukan tindakan selanjutanya yang akan menghasilkan data sebagai masukan, dan diproses lagi dari awal sehingga menghasilkan suatu siklus yang dinamakan Information Cycle/siklus informasi.(John Burch, 1975) 2.1.3. Sistem Informasi

Sistem Informasi adalah kumpulan dari orang-orang, data, proses, interface, dan geografis yang berhubungan untuk meningkatkan operasional bisnis dari hari ke hari, sehingga dapat menyelesaikan masalah dan dapat membantu untuk pengambilan keputusan.(Whitten, 2001).Sistem informasi digunakan untuk

membantu organisasi meningkatkan kemampuan untuk

memperoleh informasi yang dibutuhkan oleh mereka. Oleh karena itu sistem informasi sangat dibutuhkan oleh perusahaan atau organisasi untuk memperoleh informasi yang akan berguna untuk pengambilan keputusan kedepannya.


(25)

2.2.Manajemen Transaksi.

Transaksi dalam hal ini adalah sekumpulan kegiatan untuk mengubah konten pada basis data yang dilakukan oleh seorang pengguna atau program aplikasi.Sebuah transaksi dikatakan berhasil jika mempunyai hasil jika seluruh transaksi dikatakan telah

commited(dilakukan) dan database mencapai suatu keadaan konsisten yang baru. Jika transaksi gagal, maka transaksi dibatalkan. Jika transaksi dibatalkan maka database harus dikembalikan keadaan konsisten seperti keadaan sebelum transkasi dilakukan, transaksi tersebut disebut rollback atau undone.(Connolly, T., Begg, C., 2002). Transaksi dalam manajemen transaksi harus memiliki sifat ACID, yaitu :

a. Atomicity,dimana keadaan transaksi yang tidak dapat dibagi-bagi lagi yang dilakukan secara keseluruhan atau tidak sama sekali. b. Consistency, dimana suatu keadaan basis data dapat dirubah dari

suatu konsistensi ke konsistensi yang lain.

c. Isolation,dimana suatu keadaan transaksi itu bebas, suatu transaksi tidak mempengaruhi transaksi yang lain.

d. Durability,dimana transaksi dapat dicatat secara permanen dan tidak bisa hilang dalam basis data.

2.2.1. Metode Locking

Locking adalah suatu prosedur yang digunakan untuk mengatur akses yang dilakukan bersamaan pada suatu data. Pada saat transaksi mengakses basisdata, suatu lock bisa menolak transaksi tersebut agar tidak menimbulkan hasil yang tidak benar. Sifat dasar

locking pada sebuah transaksi harus dinyatakan sebagai shared untuk proses baca (read) dan sepenuhnya terkunci untuk proses menulis (write). Aturannya sebagai berikut :


(26)

a. Shared lock yaitu jika suatu transaksi memiliki suatu shared lock

pada item datanya, maka data tersebut dapat dibaca namun tidak dapat dirubah.

b. Exclusive lock yaitu jika suatu transaksi memiliki suatu exclusive lock pada item datanya, maka datanya dapat dibaca dan dirubah. Karena operasi membaca tidak menimbulkan konflik, maka

diijinkan lebih dari 1 transaksi melakukan lock bersama pada saat yang bersamaan. Sedangkan pada exclusive lock, jika suatu transaksi melakukan exclusive lock, maka tidak ada transaksi lain yang bisa membaca atau merubah item data tersebut.

2.2.2. Two Phase Locking(2PL)

Transaksi dapat dilakukan menggunakan protokol 2PL jika semua operasi locking mendahului operasi yang tidak terkunci dalam transaksi tersebut.Protokol 2PL memiliki 2 fase, yaitu :

a. Growing phase : jika transaksi sudah mendapatkan semua lock, maka tidak boleh melepas lock.

b. Shrinking phase : jika transaksi sudah melepaskan lock, maka tidak dapat mendapatkan lock baru.

Beberapa masalah yang disebabkan oleh proses yang konkuren seperti dibawah ini bisa ditangani dengan menerapkan protokol two phase locking.

a. The Lost Update Problem, merupakan kejadian dimana data transaksi yang telah di update dibaca oleh transaksi yang lain kemudian di update lagi.

b. The Uncommited Dependency (Dirty Read) Problem, merupakan kejadian dimana data transaksi yang dilakukan dibaca oleh transaksi yang lain, lalu dibatalkan tanpa adanya penyimpanan terlebih dahulu oleh transaksi yang pertama sehingga menyebabkan data yang tidak benar.


(27)

c. The Incosistent Analysis Problem, masalah ini timbul karena data diakses oleh 2 transaksi yang bersamaan, transaksi yang pertama melakukan perubahan dan transaksi yang kedua melakukan analisis sehingga data yang diperoleh menjadi tidak konsisten.

2.2.2.1. Contoh Penangangan Masalah Concurrency Control

Dibawah ini merupakan contoh-contoh untuk menangani masalah concurrency control.

Gambar 2.1Mencegah Lost Update Problem menggunakan 2PL

Keterangan

Untuk mencegah terjadinya masalah hilangnya data yang diubah, maka : pertama-tama T2 meminta exclusive lock pada balₓ

Setelah itu T2 dapat melakukan proses baca nilai balₓ,

menambahnya dengan nilai 100, dan menuliskan nilai baru dari balₓ tersebut kedalam basis data.

Saat T1 memulai transaksi, T1 juga meminta suatu

exclusivelock pada balₓ, namun karena balₓ sedang berada dalam posisi exclusivelock oleh T2, maka permintaan read balₓ tidak


(28)

dilepaskan oleh T2. Hal ini terjadi saat T2 melaksanakan operasi

commit atau unlockbalₓ (Connoly 2002)

Gambar 2.2Mencegah Uncommitted Dependency Problem using 2PL

Keterangan :

Untuk mencegah terjadinya masalah ketergantungan transaksi yang belum dilaksanakan , maka : pertama-tama T4 meminta suatu exclusivelock pada balₓ Setelah itu, T4 dapat

melakukan proses baca nilai balₓ dari dalam basis data,

menambahnya dengan nilai 100, dan meluliskan nilai baru balₓ tersebut kedalam basis data. rollback dieksekusi , peng-update-an pada transaksi T4 tidak jadi dilakukan dan nilai dalam basis data dikembalikan ke kondisi semula yaitu 100.

Saat T3 memulai transaksi T3 juga meminta suatu exclusive lock pada balₓ, namun karena balₓ sedang dalam posisi exclusive lock oleh T4, maka, permintaan tersebut tidak segera diberikan kepada T3, dan T3 harus menunggu sampai lock dilepaskan oleh T4. Hal ini terjadi saat T4 melaksanakan operasi rollback atau

unlock balₓ, barulah T3 dapat melakukan proses baca nilai balₓ


(29)

Gambar 2.3Mencegah Inconsistent Analysis Problem using 2PL

Keterangan :

Untuk mencegah terjadinya masalah analisis yang tidak konsisten, maka : T5 mengawali meminta suatu exclusivelock pada

balₓ. T5 juga meminta suatu exclusivelock pada balᵧ . Saat T6 ingin

membaca nilai balₓ , ia harus menunggu sampai lock dilepaskan

oleh T5. Hal ini terjadi saat T5 melaksanakan operasi commit atau

unlockbalₓ, barulah T6 dapat membaca nilai balₓ (Connoly, 2002)

Untuk mengatasi masalah diatas, mesin basis data Oracle XE mempunyai kemampuan mendukung transaksi dengan metode

2PL yang dapat menjaminkonsistensi data.

2.2.3. Perintah For Update

Perintah for update yang digunakan untuk melakukan penguncian agar menjamin konsistensi. Peritah for update dapat juga digunakan dalam kursor, ada kemungkinan kursor melakukan update terhadap database. Untuk menjamin konsistensi data, terutama dalam kasus ketika ada banyak sesi terhadap suatu


(30)

database yang sama, sebaikanya baris-baris record dalam database

yang akan di-update atau dihapus, dikunci terlebih dahulu. Penguincian record dalam database dapat dilakukan dengan perintah for update dalam kueri kursor.(Oracle Inc, 2004)

Sintak yang digunakan :

2.3.Hotel

Menurut Sri Kurniasih dalam jurnal imiah (2006:45), secara harifiah kata Hotel berasal dari bahasa latin yaitu kata HOSPITIUM,

yang memiliki arti ruang tamu. Pada jangka yang panjang hospitium

mengalami proses perubahan pengertian, untuk membedakan antara

Guest House dan Mansion House (rumah yang besar) yang berkembang pada saat itu, maka rumah-rumah besar berubah nama menjadi Hostel.

Rumah-rumah besar atau yang disebut dengan hostel disewakan kepada masyarakat yang ingin beristirahat sementara waktu, dan akandiatur oleh seseorang yang disebut host, tamu-tamu yang menginap harus mematuhi aturan yang dibuat oleh host.

Sesuai dengan tuntutan orang-orang yang ingin mendapatkan kepuasan, tidak suka dengan aturan-aturan terlalu banyak yang terdapat di hostel, lambat laun kata hostel pun berubah menjadi hotel,

huruf "s" pada kata hostel menghilang atau dihilangkan oleh orang-orang, dan berubah menjadi kata Hotel yang kita kenal saat ini.

CURSOR … IS SELECT… FROM …


(31)

14 BAB 3

ANALISIS DAN PERANCANGAN SISTEM 3.1. Gambaran Umum Sistem yang lama

Hotel Prambanan Indah melayani dalam hal penyewaan kamar hotel kepada masyarakat lokal ataupun masyarakat internasional. Pemesanan kamar saat ini masih menggunakan cara manual. Pemesanan bisa dilakukan melalui beberapa cara, yaitu :

a. Datang langsung hotel untuk melakukan penyewaan kamar b. Pesan melalui telepon.

Untuk tata cara pemesanan sendiri ada caranya seperti berikut :

a. Waktu check-in pada pukul 13.00 wib dan untuk check-out pada pukul 12.00 wib.

b. Pada waktu check-in tamu harus menyerahkan Kartu Identitas yang masih berlaku (SIM, KTP, Passport).

c. Tamu yang membatalkan pemesanan kamar pada hari yang sama tanggal check-in dikenakan biaya penuh.

d. Tamu yang membatalkan pemesanan dua minggu sebelum tanggal

check-in dikenakan biaya 50% dari total pembayaran. e. Biaya booking adalah 20% dari harga penyewaan kamar.

3.2. Gambaran Umum Sistem yang baru

Sistem penyewaan kamar secara online berbasis web yang dibangun bertujuan untuk mempermudah orang untuk menyewa kamar secara online dan untuk mengetahui informasi tentang kamar dan harga yang diberikan serta layanan yang diberikan.

Sistem penyewaan kamar ini bisa melakukan pemesanan kamar seperti dibawah ini :


(32)

1. Pertama user akan memilih tanggal dan berapa lama dia akan menginap.

2. Lalu sistem akan menampilkan jenis-jenis kamar yang tersedia untuk tanggal yang dipilih.

3. User akan memilih salah satu jenis kamar yang tersedia. 4. Lalu mengisi data diri di form yang telah disediakan.

5. Setelah itu diharapkan user untuk membayar biaya booking

sebesar 20% dari harga yang telah ditentukan.

Sistem ini dapat diakses oleh multi user, sistem ini akan melakukan kontrol terhadap masalah concurrency yang ada akibat penggunaan bersama. Untuk mengatasi masalah dalam concurrency maka sistem ini dibuat menggunakan manajemen transaksi dengan menggunakan protokol 2PL.

3.3. Requirement Analysis


(33)

Memasukan Kriteria Penyewaan

Menyewa Kamar

Memasukan bukti transaksi

Melihat konfirmasi penyewaan

Login

Validasi Pemesanan

Logout

Membuat Kamar Sewa Sub Sistem 1 Online

Sub Sistem 2 Non web User

Admin

Include

Include Include

Gambar 3.1 Use Case 3.3.2. Definisi Aktor


(34)

No Aktor Deskripsi

1 User Aktor ini bisa menyewa kamar dan melihat informasi kamar.

2 Operator Aktor ini bisa melakukan login sebagai operator dan memasukan data penyewa yang datang atau telepon dan juga bisa melakukan create

kamar sewa, dan melakukan penanganan dalam hal mengganti apakan kamar sudah dipinjam atau belum

3.3.3. Definisi Use Case

Tabel 3.2 Definisi Use Case

No Use Case Deskripsi

1 Login. Sistem melakukan pengecekan username, password.

2 Memasukan

kriteria Penyewaan.

Memasukan data tanggal check-in dan tanggal check-out

dari hotel, jumlah kamar.

3 Transaki Menyewa Kamar.

Sistem menampilkan daftar kamar yang tersedia pada hari

yang dipilih, kemudian memilihnya, kemudian

memasukan datadiri penyewa dan sistem akan transaksi penyewaan.

4 Memasukan

bukti transaksi.

Aktor memasukan nomor order, email, dan bukti transaksi pembayaran DP sebagai contoh foto bukti transfer melalui bank.


(35)

3.3.4. Skenario Use Case Skenario

Skenario : Login

Kondisi awal : -

Kondisi akhir : Masuk ke form operator atau admin.

Aktor : Operator dan Admin.

Tabel 3.3 Skenario Login

Aktor System

1 Aktor memasukkan id, password dan memilih status login sebagai Admin di 5 Validasi

pemesanan

Sistem melakukan pengecekan kamar mana yang sudah dipesan dan juga menangani jadi atau tidaknya penyewaan kamar.

6 Melihat

konfirmasi penyewaan

Aktor memasukan nomor order dan email untuk melihat apakah transaksi penyewaan sudah di konfirmasi oleh hotel, sistem melakukan pengecekan apakah transaksi aktor telah di konfirmasi.

7 Membuat kamar

Sewa

Sistem akan membuat data dari tabel kamar_sewa pada pukul 20.00 setiap hari.


(36)

form login

1. Mengecek id, password.

3. Menampilkan form utama admin.

Skenario : Memasukan kriteria Penyewaan. Kondisi awal : -

Kondisi akhir : Masuk ke form pemilihan jenis kamar.

Aktor : User

Tabel 3.4 Mengisi Data Hari Penyewaan.

Aktor System

1 Aktor memasukan data hari akan menyewa, lama penyewaan dan banyak kamar.

2. Mencari kamar yang kosong pada hari yang dipilih.

3. menampilkan form Pemilihan Jenis Kamar.

Skenario : Menyewa Kamar.

Kondisi awal : Sudah lolos case Mengisi Data Hari Penyewaan. Kondisi akhir : Menampikan form Selesai.


(37)

Aktor : User

Tabel 3.5 Memilih Jenis Kamar.

Aktor System

1. Aktor Memilih jenis kamar yang disukai.

2. Menekan tombol pilih.

3. Menampilkan form Pengisian Data Diri Penyewa.

4. Aktor memasukan data diri pada form yang telah disediakan.

5. Menekan tombol next.

6. Menyimpan Data Transaksi pada tabel.

7. Menampilkan form Transaksi

penyewaan.

Skenario : Memasukan bukti transaksi.

Kondisi awal : Sudah melakukan transaksi menyewa kamar. Kondisi akhir : Masuk ke form SelesaiDP.

Aktor : User


(38)

Aktor System

1. Aktor memasukan nomor order dari penyewaan, email dan bukti transaksi berupa foto transfer dari bank.

2. Menekan tombol Input.

3. Mengecek nomor order dan email, jika benar maka sistem akan menyimpan bukti transaksi jika salah error akah keluar.

4. Menampilkan form SelesaiDP.

Skenario : Melihat konfirmasi penyewaan

Kondisi awal : Sudah melakukan case Memasukan bukti transaksi.

Kondisi akhir : membuat kamar sewa baru di tabel kamar sewa.

Aktor : User

Tabel 3.7create kamar sewa.

Aktor System

1. Aktor memasukan nomor order dari penyewaan dan email.


(39)

2. Menekan tombol Input.

3. Mengecek nomor order, email dan status konfirmasi.

4. Menampilkan form SelesaiDP.

Skenario : Validasi pemesanan. Kondisi awal : Sudah lolos case Login

Kondisi akhir : Masuk ke form HalamanAdmin.

Aktor : Operator

Tabel 3.8Validasi pemesanan.

Aktor System

1. Aktor melihat data pemesan yang ada, mecari data pemesan yang sudah membayar.

2. Memilih yes atau no pada kolom

konfirmasi. Lalu menekan

tombol input.

3. Mengupdatedata kamar yang disewa

menjadi sudah deal disewa, atau

menghapus jika memilih no.


(40)

Skenario : Membuat Kamar Sewa Kondisi awal : Jam 20.00

Kondisi akhir : Menambah data Kamar Sewa

Aktor : -

Tabel 3.9Membuat Kamar Sewa

Aktor System

1. Ketika pukul 20.00 WIB.

2. Menambah Kamar sewa sesuai tanggal hari ini.

Skenario : Logout

Kondisi awal : -

Kondisi akhir : Masuk ke form operator atau admin.

Aktor : Operator dan Admin.

Tabel 3.10Skenario Logout

Aktor System

1 Menekan tombol Logout.


(41)

3.4. Activity Diagram

Berikut adalah gambar diagram activity untuk proses login.

Masuk ke halaman login

Menampilkan halaman Login

User Sistem

Memasukan Username dan Password

Mengecek Username dan

Password Menekan

tombol batal

Menekan tombol login

Username dan password benar

Username dan password salah

Masuk ke Form Utama


(42)

Berikut adalah gambar diagram activity untuk proses Memasukan kriteria Penyewaan.

Memasukan Data hari, lama dan banyak kamar

Mencari kamar yang kosong pada hari yang

dipilih

User Sistem

Menekan tombol cari

Menampilkan Halaman Jenis Kamar

Gambar 3.3Diagram aktifitas Memasukan kriteria Penyewaan

Berikut adalah gambar diagram activity untuk proses Logout.

Menekan tombol Logout

User Sistem

Keluar dari admin

Menampilkan halaman utama


(43)

Berikut adalah gambar diagram activity untuk proses Transaki Menyewa Kamar.

Memilih kamar yang diinginkan

User Sistem

Menekan tombol Pilih

Menampilkan Halaman Data Penyewa Memasukan Data diri

pada Form

Menekan tombol Sewa Menyimpan data pada tabel Penyewa, Kamar, Buku Tamu.

Menampilkan form feed back

Gambar 3.5Diagram aktifitas Transaki Menyewa Kamar

Berikut adalah gambar diagram activity untuk proses Memasukan bukti transaksi.

Memasukan nomor Order, Email dan foto

Bukti transfer

User Sistem

Menekan tombol Input

Mengecek Nomor order dan Email user

Mengupdate Tabel Transaksi_sewa Nomor Order dan

email benar

Nomor order dan email salah


(44)

Berikut adalah gambar diagram activity untuk proses Melihat konfirmasi penyewaan.

Memasukan nomor Order dan Email

User Sistem

Menekan tombol Input

Mengecek Nomor order dan Email user

Menampilkan transaksi telah di konfirmasi

Nomor Order dan email benar

Nomor order dan email salah

Gambar 3.7Diagram aktifitas Melihat konfirmasi penyewaan

Berikut adalah gambar diagram activity untuk proses validasi penyewaan.

User Sistem

Mencari data penyewa

Menekan Tombol Yes atau no

Mengupdate tabel Kamar_sewa dan transaksi_sewa

Menampilkan Form HalamanAdmin


(45)

Berikut adalah gambar diagram activity untuk proses menambah data Kamar sewa.

User

Sistem

Ketika pukul 20.00 WIB

Menambah data Kamar sewa


(46)

3.5. Perancangan Diagram Sekuensial

Diagram sekuensial adalah diagram yang menjelaskan bagaimana suatu operasi atau sistem dijalankan secara tahap demi tahap.

:FORM LOGIN : FORM

HalamanAdmin.jsp : SISTEM

1. Memasukan Id dan password

2. Mengecek Id, dan password

3. Menampilkan Form HalamanAdmin.jsp Admin


(47)

:FORM UTAMA : FORM PILIH

KAMAR : PROSES

Memasukan Data tanggal masuk, tanggal keluar, dan banyak kamar.

Mengecek Kamar kosong pada hari yang telah dipilih

Menampilkan Jenis Kamar User

: getDisplay()

Proses().getDisplay()

Gambar 3.11Memasukan kriteria Penyewaan.

: FORM JENIS KAMAR

: FORM DATA PENYEWA

Memilih Jenis Kamar User

: PROSES : DP() : sewa_kamar() : SELESAI Id, tanggal_masuk, tanggal_keluar, jumlah kamar, nama kamar, harga proses.DP(id, tanggal_masuk, tanggal_keluar, harga, jmlkamar)

Menampilkan Form data penyewa

nonota, noid, id, nama, alamat, notlp, jmlkamar, tanggalmasuk, tanggalkeluar, email, hargaDP

sewa_kamar(nonota, noid, id, nama,

alamat, notlp, jmlkamar, tanggalmasuk, tanggalkeluar, email, hargaDP) Menampilkan Form Selesai


(48)

:FORM DP.jsp : FORM

SelesaiDP.jsp : PROSES

No order, email, foto bukti transaksi

Menampilkan SelesaiDP.jsp User

: verivikasi()

proses.verivikasi(noorder, email) No order, email, foto

bukti transaksi


(49)

:FORM

Konfirmasi.jsp : PROSES

No order, email

Menampilkan Konfirmasi.jsp User

: verivikasi2()

proses.verivikasi2(noorder, email)

No order, email


(50)

:FORM

HalamanAdmin.jsp : PROSES

Memilih ya atau tidak pada kolom konfirmasi sesai

nama penyewa

Menampilkan HalamanAdmin.jsp.jsp Admin

: update_transaksi()

proses.update_transaksi(id) atau

proses.delete_transaksi(id) Id penyewa


(51)

: UpdateKamarSewa : PROSES : update_harian()

proses.update_harian(); Waktu 20.00 WIB

Gambar 3.16Menambah Kamar Sewa

: FORM

HalamanAdmin.jsp :FORM LOGIN : SISTEM

Menekan tombol Logout

Menampilkan Form LoginAdmin.jsp Admin


(52)

3.6. Perancangan Diagram Kelas

Berikut adalah gambar perancangan diagram kelas :

Kamar Penyewa

Proses - idkamar : String

- nmkamar : String - keterangan : String - gambar : String - fasilitas : String - harga : Int + <<Constructor>> + Set/Get()

- nama : String - email : String - notlp : String + <<Constructor>> + Set/Get()

+ <<Constructor>>

+ totalkamar() : ResultSet + getDisplay() : ArrayList<> + update_kamar_sewa() : String + sewa_kamar() : String + nonota() : ResultSet + DP() : ResultSet + verivikasi() : ResultSet + verivikasi2() : ResultSet + update_nota() : ResultSet + getDisplayOrder() : ArrayList<> + update_transaksi() : ResultSet + delete_transaksi() : String + getDisplayKonfirmasiOrder(): ArrayList<>

KamarSewa - datepicker : String - datepicker2 : String - jmlkamar : String + <<Constructor>> + Set/Get()

Transaksi Sewa - fotodp : String - email : String - tanggalmasuk : String - tanggalkeluar : String - idorder : int - hargadp : int - kamar : Kamar - penyewa : Penyewa + <<Constructor>> + Set/Get()

Gambar 3.18 Diagram kelas

3.7. Perancangan Konseptual

Dibawah ini akan dijelaskan keterkaitan relasi antar entitas dengan gambar 3.19.

Kamar Sewa Kamar

- id_kamar_sewa(PK) - no_kamar - id_sewa - tanggal - status

- id_kamar (PK) - nama_kamar - harga - keterangan - gambar Penyewa

- Id_penyewa (PK) - nama_penyewa - no_tlp - alamat

1..* 1..1

Transaksi sewa - id_sewa (PK) - id_penyewa - tanggal masuk - tanggal keluar - tanggal - DP 1..1 1..* 0..1 1..* Fasilitas - id_Fasilitas (PK) - nama_fasilitas Fasilitas_kamar - id_kamar - id_fasilitas 1..* 1..* Jenis Kamar - id_kamar - no_kamar (PK)

1..1 1..*


(53)

3.8. Perancangan Logikal

Model Relasional Perancangan Logikal dapat dilihat pada gambar 3.20.

Kamar Sewa Jenis Kamar

- id_kamar_sewa(PK) - no_kamar (FK)(U) - id_sewa (FK) - tanggal (U) - status

- id_kamar (PK) - nama_kamar - harga - keterangan - gambar Penyewa

- Id_penyewa (PK) - nama_penyewa - no_tlp - alamat

1..* 1..1

Transaksi sewa

- id_sewa (PK) - id_penyewa (FK) - tanggal masuk - tanggal keluar - tanggal - Harga DP - DP - Status 1..1 1..* 0..1 1..* Fasilitas

- id_Fasilitas (PK) - nama_fasilitas Fasilitas_kamar

- id_kamar (U) - id_fasilitas (U)

1..*

1..* Kamar

- no_kamar (PK) - id_kamar (FK)

1..1 1..*

1..1

1..1

Gambar 3.20Diagram Rational Relational

3.9. Desain Database

Dalam pembuatan sistem ini memerlukan beberpa tabel seperti tabel penyewa, kamar sewa, transaksi sewa, dan kamar.

Tabel 3.11Penyewa

Nama Tipe Ukuran Keterangan Key

Id_penyewa int 10 Id dari penyewa PK

Nama_penyewa Varchar 30 Nama dari penyewa

No_tlp Varchar 20 Nomor telepon dari

penyewa


(54)

Tabel 3.12Jenis Kamar

Nama Tipe Ukuran Keterangan Key

Id_kamar int 10 Id kamar PK

Nama_kamar Varchar 30 Nama kamar

Harga int 10 Harga kamar

Keterangan Varchar 50 Keterangan kamar

Gambar Varchar 50 Gambar kamar

Tabel 3.13Kamar_Sewa

Nama Tipe Ukuran Keterangan Key

Id_kamar_sewa int 10 Id dari kamar sewa PK

No_kamar int 10 Nomor dari kamar

yang disewa

FK

id_sewa int 10 Id dari transaksi sewa FK

Status Varchar 10 Alamat dari penyewa

Tanggal Date Tanggal dari kamar

yang akan disewa

Tabel 3.14Transaksi_Sewa


(55)

Id_sewa int 10 Id penyewaan kamar PK

id_penyewa int 10 Id dari penyewa FK

DP int 10 Bukti transfer DP

Tanggal masuk Date Tanggal masuk dari

kamar yang akan

disewa

Tanggal keluar Date Tanggal keluar dari

kamar yang akan

disewa

Tanggal Date Tanggal dari Transaksi

sewa

Harga DP int 10 Harga DP yang harus

dibayar

Status Int 10 Status dari Transaksi

Sewa

Tabel 3.15Fasilitas_kamar

Nama Tipe Ukuran Keterangan Key

Id_fasilitas int 10 id dari tabel fasilitas FK

Id_kamar int 10 id dari tabel kamar FK

Tabel 3.16Fasilitas

Nama Tipe Ukuran Keterangan Key

Id_Fasilitas_kamar int 10 Id dari fasilitas

kamar


(56)

Nama_fasilitas Varchar 50 nama dari fasilitas

Tabel 3.17Jenis Kamar

Nama Tipe Ukuran Keterangan Key

No_kamar int 10 Nomor kamar PK


(57)

41 Bab IV

IMPLEMENTASI SISTEM

4.1. Spesifikasi Software dan Hardware yang Digunakan 4.1.1. Spesifikasi Software

Spesifikasi software yang digunakan untuk implementasi sistem pemerolehan informasi ini adalah sebagai berikut :

1. Sistem Operasi Windows 7 Ultimate 32 bit 2. Oracle XE

3. Oracle SQL Developer 4. Netbeans 7.2.1

5. Browser : Google Chrome

4.1.2. Spesifikasi Hardware

Spesifikasi hardware yang digunakan untuk implementasi sistem pemerolehan informasi ini adalah sebagai berikut :

1. Prosesor : Intel Core i3- 380M 2,53 GHz

2. Memori RAM 4 GB DDR 3


(58)

4.2. Implementasi Stored Procedure

4.2.1. Implementasi Stored Procedure untuk inserttransaksi penyewaan.

Berikut adalah listing program insert penyewa disajikan pada gambar 4.1, store procedure ini digunakan untuk memasukan semua data dari penyewa, kamar, dan tanggal kedalam

database.Stored Procedure ini juga berguna dalam menangani masalah concurrency control, dengan menerapkan protokol 2PL(two phase locking) dengan memberi query FOR UPDATE OF. Locking berjalan ketika cursoremp_idkamarsewa dipanggil,

cursor berguna untuk mengunci id_kamar_sewa dari tabel kamar sewa yang sesuai dengan nomor kamar yang kosong dan juga memiliki status "F". Setelah melakukan penguncian pada id_kamar_sewa, maka kamar yang telah ditunjuk akan diganti statusnya dari "F" menjadi "B". Setelah itu memasukan data diri penyewa dan memberi id_sewa pada tabel kamar sewa sesuai dengan nomor id sewa dari penyewa. Pengambilan nomor order menggunakan fuction get_noorder.(lihat pada Lampiran A)


(59)

p_name in penyewa.nama_penyewa%type, p_notlp in penyewa.no_tlp%type,

p_alamat in penyewa.alamat%type, p_email in penyewa.email%type, p_idkmr in kamar.id_kamar%type, p_jmlkmr in number,

p_hargaDP in number,

p_in in transaksi_sewa.tanggal_in%type, p_out in transaksi_sewa.tanggal_out%type, p_status out number)

is

ex_no_data_found EXCEPTION; i int;

j int;

conter int :=0;

v_maxid transaksi_sewa.id_sewa%type; v_idpenyewa penyewa.id_penyewa%type;

v_idkamarsewa kamar_sewa.id_kamar_sewa%type;

cursor emp_transaksi is

select DISTINCT(ks.tanggal) from kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = 'F' and ks.tanggal between p_in and p_out

order by ks.tanggal;

emp_record emp_transaksi%rowtype;

cursor emp_transaksi1 is

select DISTINCT(ks.tanggal) from kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = 'B' and ks.id_sewa = 0 and ks.tanggal between p_in and p_out

order by ks.tanggal;


(60)

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = 'F' and ks.tanggal between p_in and p_out

group by ks.no_kamar having count(ks.tanggal) = (select count(DISTINCT(tanggal)) FROM kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.tanggal between p_in and p_out) order by ks.no_kamar;

emp_record2 emp_kamar%rowtype;

cursor emp_kamar1 is

select ks.no_kamar from kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.status = 'B' and ks.id_sewa = 0 and ks.tanggal between p_in and p_out

group by ks.no_kamar having count(ks.tanggal) = (select count(DISTINCT(tanggal)) FROM kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and k.id_kamar = p_idkmr and ks.tanggal between p_in and p_out) order by ks.no_kamar;

emp_record5 emp_kamar%rowtype;

cursor emp_idkamarsewa(p_nokamar in kamar_sewa.no_kamar%type) is select id_kamar_sewa from kamar_sewa

where no_kamar = p_nokamar and tanggal between p_in and p_out and status = 'F' order by id_kamar_sewa

FOR UPDATE OF id_kamar_sewa; emp_record3 emp_idkamarsewa%rowtype;

cursor emp_penyewa is select id_penyewa from penyewa

where id_penyewa = p_noid; emp_record6 emp_penyewa%rowtype;


(61)

open emp_kamar; loop

fetch emp_kamar into i;

open emp_idkamarsewa(i);

fetch emp_idkamarsewa into emp_record3; close emp_idkamarsewa;

if i is null then

raise ex_no_data_found; else

open emp_transaksi; loop

fetch emp_transaksi into emp_record; exit when emp_transaksi%notfound;

update kamar_sewa set status = 'B' where no_kamar = i and tanggal = (select DISTINCT(tanggal) from kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and ks.no_kamar = i and k.id_kamar = p_idkmr and ks.tanggal = emp_record.tanggal);

end loop;

exit when emp_kamar%rowcount >= p_jmlkmr; close emp_transaksi;

end if; end loop; close emp_kamar;

open emp_penyewa;

fetch emp_penyewa into emp_record6;

v_maxid := get_noorder;

if emp_record6.id_penyewa is null then


(62)

v_maxid := get_noorder;

insert into transaksi_sewa values(v_maxid, p_noid, p_in, p_out, ' ', sysdate, 0,p_hargaDP); end if;

close emp_penyewa;

open emp_kamar1; loop

fetch emp_kamar1 into j; if j is null then

raise ex_no_data_found; else

open emp_transaksi1; loop

fetch emp_transaksi1 into emp_record4;

update kamar_sewa set id_sewa = v_maxid where no_kamar = i and tanggal = (select DISTINCT(tanggal) from kamar_sewa ks, kamar k

where ks.no_kamar = k.no_kamar and ks.no_kamar = i and k.id_kamar = p_idkmr and ks.tanggal = emp_record4.tanggal);

exit when emp_transaksi1%notfound; end loop;

exit when emp_kamar1%rowcount >= p_jmlkmr; close emp_transaksi1;

end if; end loop;

close emp_kamar1; commit;

p_status:=1;

EXCEPTION


(63)

Gambar 4.1Insert Penyewa

4.2.2. Implementasi Stored Procedure untuk menghapus transaksi penyewaan kamar.

Berikut ini adalah stored procedure yang digunakan untuk menghapus transaksi bila penyewa membatalkan transaksi penyewaan kamar, yang disajikan pada gambar 4.2.

Gambar 4.2Delete Transaksi

create or replace

PROCEDURE DELETE_TRANSAKSI( p_id in number)

AS BEGIN

update kamar_sewa set id_sewa = 0, status = 'F' where id_sewa = p_id;

delete transaksi_sewa where id_sewa = p_id; END DELETE_TRANSAKSI;

ROLLBACK; p_status:=0;

WHEN OTHERS THEN ROLLBACK;

p_status:=0;


(64)

4.2.3. Implementasi Stored Procedure untuk menambah data dari kamar sewa.

Berikut adalah stored procedure yang digunakan untuk menambah data dari kamar sewa, seperti tanggal dari setiap nomor kamarnya, yang disajikan pada gambar 4.3.

create or replace

PROCEDURE UPDATE_HARIAN AS

v_maxtanggal transaksi_sewa.tanggal%type; v_maxidks kamar_sewa.id_kamar_sewa%type; v_date date;

cursor emp_nokamar is

select distinct(no_kamar) from kamar_sewa order by no_kamar; emp_record emp_nokamar%rowtype;

cursor emp_tanggal is

select tanggal, id_sewa from transaksi_sewa where status = 0; emp_record2 emp_tanggal%rowtype;

BEGIN

select to_date(sysdate, 'DD-MM-YY') into v_date from dual; select max(tanggal)+1 into v_maxtanggal from kamar_sewa;


(65)

Gambar 4.3Update Harian

select max(id_kamar_sewa)+1 into v_maxidks from kamar_sewa; exit when emp_nokamar%notfound;

insert into kamar_sewa values (v_maxidks, emp_record.no_kamar, 0, v_maxtanggal, 'F'); end loop;

close emp_nokamar; open emp_tanggal; loop

fetch emp_tanggal into emp_record2;

if to_date(emp_record2.tanggal, 'DD-MM-YY')+7 = v_date then

update kamar_sewa set id_sewa = 0, status = 'F' where id_sewa = emp_record2.id_sewa; delete transaksi_sewa where id_sewa = emp_record2.id_sewa;

delete penyewa where id_penyewa = emp_record2.id_sewa;

end if;

exit when emp_tanggal%notfound; end loop;

close emp_tanggal; END UPDATE_HARIAN;


(66)

4.3. Implementasi Program 4.3.1. Proses memberi harga DP

Pada gambar 4.4 terdapat 2 metode yang dipanggil yaitu DP() (lihat pada Lampiran A). Metod DP() digunakan untuk menghitung jumlah total harga DP yang harus dibayar oleh penyewa.

Gambar 4.4Proses Transaksi Sewa String id = request.getParameter("id"); int jmlkamar =

Integer.parseInt(request.getParameter("jmlkamar")); String namakamar = request.getParameter("namakamar"); int harga = Integer.parseInt(request.getParameter("harga"));

Proses proses = new Proses();

ResultSet dp = proses.DP(id, kamar.getDatepicker(), kamar.getDatepicker2(), harga, jmlkamar);


(67)

4.3.2. Proses insert data Transaksi penyewaan kamar.

Pada gambar 4.5terdapat metod sewa_kamar() dan nonota() (lihat pada Lampiran A), metod sewa_kamar() berguna untuk memasukan data penyewa, kamar dan transaksinya kedalam beberapa tabel yang bersangkutan. Banyak variabel yang diambil sperti id kamar, data diri dari penyewa, tanggal masuk dan tanggal keluar lalu harga DP.nonota() digunakan untuk mengambil no nota atau nomor order yang terbaru.

Gambar 4.5Insert data Transaksi penyewaan kamar

String id = request.getParameter("id");

int noid = Integer.parseInt(request.getParameter("noID")); String nama = request.getParameter("namapenyewa"); String alamat = request.getParameter("alamat"); String notlp = request.getParameter("notlp"); String email = request.getParameter("email");

int jmlkamar = Integer.parseInt(request.getParameter("jmlkamar")); String namakamar = request.getParameter("namakamar"); String tanggalmasuk = request.getParameter("tanggalmasuk"); String tanggalkeluar = request.getParameter("tanggalkeluar"); int hargaDP = Integer.parseInt(request.getParameter("hargaDP")); Proses proses = new Proses();

String p = proses.sewa_kamar(noid, id, nama, alamat, notlp, jmlkamar, tanggalmasuk, malam, email, hargaDP);


(68)

4.3.3. Proses memasukan bukti transfer dp.

Pada gambar 4.6 menunjukan cara memasukan bukti transfer DP, dibawah ini terdapat 2 metod yaitu verivikasi() dan update_nota() (lihat pada Lampiran A). Metod verivikasi() digunakan untuk mencari apakah nomor order dan email yang dimasukan ada dalam database, jika ditemukan maka metod update_nota() akan dipanggil untuk mengupdate tabel transaksi sewa, yaitu menambah foto bukti transaksi dari bank.

Gambar 4.6Memasukan bukti transfer dp

int noorder = Integer.parseInt(mr.getParameter("nonota")); String foto = mr.getFilesystemName("foto"); String email = mr.getParameter("Email"); System.out.println(noorder);

System.out.println(email);

ResultSet verivikasi = proses.verivikasi(noorder, email); int jml = 0;

while (verivikasi.next()) { jml++;

} if (jml == 1) {

proses.update_nota(noorder, foto); response.sendRedirect("SelesaiDP.jsp?sukses=y"); } else {

response.sendRedirect("DP.jsp?error=y"); }


(69)

4.3.4. Proses Melihat Konfirmasi penyewaan kamar

Pada gambar 4.7 dibawah hampir sama dengan proses memasukan bukti transfer, bedanya disini cuma menggunakan 1 metod verivikasi2(), perbedaan antara metod verivikasi() dan verivikasi2() (lihat pada Lampiran A) terdapat pada status, metod verivikasi2() menggunakan tambahan status pada transaksinya.

Gambar 4.7Melihat Konfirmasi penyewaan kamar

int noorder = Integer.parseInt(mr.getParameter("nonota")); String email = mr.getParameter("Email");

System.out.println(noorder); System.out.println(email);

ResultSet verivikasi = proses.verivikasi2(noorder, email); int jml = 0;

while (verivikasi.next()) { jml++;

} if (jml == 1) {

response.sendRedirect("Konfirmasi.jsp?sukses=y"); } else {

response.sendRedirect("Konfirmasi.jsp?error=y"); }


(70)

4.3.5. Proses mengkonfirmasi transaksi penyewaan kamar.

Pada gambar 4.8 terdapat 2 metod yaitu update_transaksi() dan

delete_transaksi() (lihat pada Lampiran A). Metod

update_transaksi() berjalan ketika variabel konfirmasi memiliki isi "Ya", maka sistem akan memanggil metod update_transaksi(), jika variabel konfirmasi memiliki isi "Tidak", maka sistem akan memanggil metod delete_transaksi().

Gambar 4.8Konfirmasi Penyewaan Kamar

String contentType = request.getContentType(); Proses proses = new Proses();

int id = 0;

String konfirmasi = request.getParameter("Konfirmasi"); if (konfirmasi != null) {

if (konfirmasi.equalsIgnoreCase("Ya")) { id = Integer.parseInt(request.getParameter("id")); proses.update_transaksi(id);

response.sendRedirect("HalamanAdmin.jsp?sukses=y"); } else if (konfirmasi.equalsIgnoreCase("Tidak")) { id = Integer.parseInt(request.getParameter("id")); proses.delete_transaksi(id);

response.sendRedirect("HalamanAdmin.jsp?sukses=y"); }


(71)

4.3.6. Proses menambah kamar setiap hari.

Pada gambar 4.9 dibawah ini adalah cara memanggil data setiap harinya dengan menggunakan Timer Schedule, jadi pada setiap jam 20.00 wib. Sistem akan secara otomatis menambah data tanggal untuk setiap nomor kamar yang tersedia di tabel kamar sewa. Metod yang digunakan untuk mengupdate adalah update_harian().

public static void main (String... arguments ) {

TimerTask UpdateKamarSewa = new UpdateKamarSewa(); //perform the task once a day at 4 a.m., starting tomorrow morning //(other styles are possible as well)

Timer timer = new Timer();

timer.scheduleAtFixedRate(UpdateKamarSewa, getTomorrow8pm(), fONCE_PER_DAY); }


(72)

Gambar 4.9Menambah kamar setiap hari

@Override public void run(){ //toy implementation try {

Proses proses = new Proses(); proses.update_harian();

System.out.println("Update Data Kamar telah berhasil"); } catch (SQLException ex) {

Logger.getLogger(UpdateKamarSewa.class.getName()).log(Level.SEVERE, null, ex); }

}

//expressed in milliseconds

private final static long fONCE_PER_DAY = 1000*60*60*24;

private final static int fONE_DAY = 1; private final static int fFOUR_AM = 20; private final static int fZERO_MINUTES = 00;

private static Date getTomorrow8pm(){

Calendar tomorrow = new GregorianCalendar(); tomorrow.add(Calendar.DATE, fONE_DAY); Calendar result = new GregorianCalendar( tomorrow.get(Calendar.YEAR),

tomorrow.get(Calendar.MONTH), tomorrow.get(Calendar.DATE), fFOUR_AM,

fZERO_MINUTES );

return result.getTime(); }


(73)

4.4. Implementasi Antarmuka

Dalam sebuah sistem, tampilan interface sangat penting bagi seorang pengguna. Sehingga dalam sistem ini di implementasikan sebuah interface yang simple dan memudahkan pengguna dalam melakukan transaksi penyewaan kamar.

4.4.1. Halaman Login Admin

Halaman admin hanya bisa diakses oleh admin dari hotel

yang telah mengetahui id dan password yang telah

ditentukan.Halaman admin disajikan pada gambar 4.10.

Gambar 4.10Halaman Login Admin

4.4.2. Halaman Home

Halaman utama dari sistem yang dibuat, halaman ini berguna untuk mencari kamar yang diinginkan berdasarkan tanggal masuk, tanggal keluar dan jumlah kamarnya, tidak hanya itu halaman ini memuat profil dari hotel Prambanan Indah.Dapat dilihat pada gambar 4.11.


(74)

Gambar 4.11Halaman Home 4.4.3. Halaman PilihKamar

Pada halaman ini anda bisa memilih salah satu dari kamar yang tersediah untuk disewa, yand disajikan pada gambar 4.12.


(75)

4.4.4. Halaman DataPenyewa

Halaman DataPenyewa digunakan untuk memasukan dapat diri dari penyewa yang ingin melakukan penyewaan kamar.Dapat dilihat pada gambar 4.13.

Gambar 4.13Halaman DataPenyewa

4.4.5. Halaman Selesai

Halaman Selesai menampilkan kembali data diri dan data kamar yang ingin disewa, hal penting yang perlu di catatat adalah, nomor order dan email dari penyewa yang akan digunakan untuk memverifikasi pembayaran DP,dapat dilihat pada gambar 4.14.


(76)

Gambar 4.14Halaman Selesai

4.4.6. Halaman Verifikasi DP

Halaman Verifikasi DP digunakan untuk memasukan bukti transaksi yang dilakukan pengguna, seperti contohnya adalah pengiriman uang lewat bank.Dapat dilihat pada gambar 4.15.

Gambar 4.15Halaman Verifikasi DP

4.4.7. Halaman Konfirmasi

Tampilan halaman konfirmasi disajikan pada gambar 4.16, fungsinya hampir sama dengan halaman verifikasi DP, bedanya disini tidak ada masukan foto. Nomor order dan email digunakan


(77)

untuk mengecek apakah nomor order dari pengguna sudah dikonfirmasi oleh admin dari hotel.

Gambar 4.16Halaman Konfirmasi

4.4.8. Halaman Admin Belum Dikonfirmasi

Halaman admin ada 2 yang pertama adalah halaman data penyewa yang belum dikonfirmasi.Gambar 4.17menunjukan bahwa ada 1 penyewa yang sudah melakukan verifikasi pembayaran tetapi belum dikonfirmasi oleh admin.


(78)

4.4.9. Halaman Admin Sudah Dikonfirmasi

Halaman admin yang kedua adalah halaman data penyewa yang sudah dikonfirmasi oleh admin hotel.Gambar 4.18 disajikan dibawah ini.


(79)

64 BAB V

ANALISA HASIL PENGUJIAN 5.1. Analisa Hasil Perangkat Lunak

Aplikasi Penyewaan Kamar Online menerapkan Manajemen Transaksi menerapkan Protokol Two Phase Locking ini dibuat untuk membantu penyewa untuk menyewa kamar hotel dengan mudah, dengan tampilan yang sederhana dan mudah dipahami dan juga berguna untuk membantu admin yang bekerja di hotel dalam melihat data-data dari penyewa, dan juga mengurangi tingkat kesalahan dalam transaksi penyewaan kamar.

Pengujian aplikasi ini dilakukan di hotel Prambanan Indah, yang dilakukan oleh pegawai hotel yang bertugas sebagai resepsionis, para pegawai melakukan pengujian fungsi mulai dari penyewaan sampai dengan mengkonfirmasi data penyewa.Pengujian tidak hanya dilakukan di hotel Prambanan Indah, penulis juga melakukan pengujian kepada beberapa mahasiswa dan warga.Pengunjian menggunakan kuisioner yang berguna untuk melihat apakah sistem ini dapat memudahkan pengguna dalam melakukan transaksi penyewaan kamar hotel.

5.2. Analisa Hasil Coba Terhadap Program

Untuk melakukan pengujian pada aplikasi yang menerapkan protokol 2PL(two phase locking), digunakan 2 buah simulasi aplikasi yang menerapkan protokol 2PL(two phase locking). Kedua simulasi diberi delay agar kedua aplikasi tersebut bisa bertabrakan ketika keduanya dijalankan.


(80)

5.2.1. Pengujian terhadap proses Transaksi Penyewaan Kamar. Berikut adalah ilustrasi pengujian yang dilakukan.Gambar 5.1 menujukan beberapa tipe kamar yang kosong pada hari yang dipilih.

Gambar 5 1Berikut adalah gambar dari memilih Tipe Kamar.

Dalam pengujian ini akan menggunakan tipe kamar Kamar Spesial. Tipe kamar tersebut tersisa 1 kamar yang kosong dan akan ada 2 orang atau user yang akan menyewa.

Pada gambar 5.2 merupakan pengisian data penyewa, untuk menyewa kamar tersebut. Dalam proses ini belum terjadi user atau penyewa harus memasukan data diri mereka sebelum melakukan penyewaan kamar.


(81)

Gambar 5 2Gambar Isi Data Diri transaksi 1

Simulasi ini menggunakan stored procedure yang akan diberi

delay dengan cara memberi DBMS_LOCK.SLEEP(…). Berikut adalah perintah delay yang digunakan

Stored procedure yang digunakan bisa dilihat pada gambar 4.1.

delay diletakan sesudah pemanggilan kursor emp_idkamarsewa yang merupakan kursor untuk mengunci transaksi. Delay diberikan agar kedua transaksi bertabrakan dan protokol 2PL akan berjalan.

Gambar 5 3Gambar Isi Data Diri transaksi 2

Pada transaksi yang kedua pada gambar 5.3, sama halnya ingin menyewa kamar tipe Kamar Spesial yang terdapat 1 kamar kosong.


(82)

Kedua transaksi tersebut akan dijalankan bersamaan sehingga akan bertabrakan yang akan menyebabkan protokol 2PL akan berjalan.

Gambar 5 4Transaksi Berjalan Bersamaan Karena delay

Pada gambar 5.4 dapat dilihat bahwa kedua transaksi sedang melakukan waiting yang dikarenakan delay dan juga protokol 2PL yang berjalan. Hasil akhir dari kedua transaksi diatas adalah sebagai berikut.


(83)

Gambar 5 5Hasil akhir dari kedua Transaksi

Pada gambar 5.5 mengahasilkan Transaksi 1 berhasil menyewa dan menampilkan hasil transaksi penyewaan kamar, sedangkan pada transaksi 2 kembali pada halaman utama dan menunjukan error yang bertuliskan "Maaf Telah Terjadi Kesalahan Harap Mengulan Order Penyewaan Kamar." Karena ketika kedua transaksi tersebut bertabrakan, transaksi 1 berhasil melakukan penguncian terlebih dahulu, sehingga transaksi 2 harus menunggu transaksi 1 selesai dan melepas pengunciannya (commit). Setelah penguncian (commit) dilepas ternyata kamar yang tadi bisa disewa telah terisi, maka transasksi 2 melakukan pembatalan (rollback) penyewaan kamar yang menghasilkan kembali kehalaman utama dan memberikan error.

Tabel 5.1 merupakan tabel yang menggambarkan proses yang terjadi pada pengujian aplikasi yang menerapkan protokol 2PL terhadap masalah concurrency control.


(84)

Tabel 5.1Proses yang terjadi dalam Transaksi Penyewaan Kamar

Waktu Transaksi 1 Transaksi 2 Kamar

t1

open emp_kamar; fetch emp_kamar into i; open emp_idkamarsewa(i);

close emp_idkamarsewa;

1

t2

update kamar_sewa set status = 'B' where no_kamar = i and

tanggal = (select DISTINCT(tanggal) from

kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and ks.no_kamar = i

and k.id_kamar = 1 and ks.tanggal = emp_record.tanggal);

open emp_kamar; loop

fetch emp_kamar into i; open emp_idkamarsewa(i);

close emp_idkamarsewa;

0

t3

insert into penyewa values(1234, 'yhoga', 085647728657, 'Kroya',

'yhoga@gmail.com'); insert into transaksi_sewa values(3, 3, MAR-15, 01-MAR-15, ' ', sysdate, 0,62000);

WAIT 0

t4

update kamar_sewa set id_sewa = v_maxid where no_kamar = i and

tanggal = (select DISTINCT(tanggal) from

kamar_sewa ks, kamar k where ks.no_kamar = k.no_kamar and ks.no_kamar = i

and k.id_kamar = 1 and ks.tanggal = emp_record4.tanggal);

WAIT 0

t5 Commit; if i is null then

raise ex_no_data_found; 0


(85)

5.3. Analisa Hasil Coba Terhadap Pengguna

Uji coba terhadap pengguna dilakukan dengan menyebarkan kuisioner kepada 10 orang. Sasaran penyebaran kuisioner tersebut terdiri dari:

 6 orang sebagai penyewa (untuk menguji sejauh mana sistem penyewaan kamar dapat membantu)

 4 orang sebagai admin (untuk menguji apakah sistem dapat membantu admin dalam mengelola data penyewa)

5.3.1. Form kuisioner

Form kuisioner yang disebarkan untuk pengguna aplikasi penyewaan kamar hotel ini adalah sebagai berikut :

1. Kuisioner untuk pengguna 2. Kuisioner untuk admin 5.3.2. Hasil dan pembahasan

Hasil jawaban responden kemudian diolah sehingga memperoleh gambaran sebagai berikut :

5.3.2.1. Hasil Uji Coba Admin 5.3.2.1.1. Hasil uji tampilan

 Pernyataan 1 :

Saya merasa nyaman dengan tampilan dari sistem. Tabel 5.2 Hasil Pertanyaan 1

Jawaban Jumlah Responden Total

Sangat Setuju 3 75%

Setuju 1 25%

Ragu - ragu 0 0%


(86)

Sangat Tidak Setuju 0 0%

Hasil kuisioner yang terdapat pada tabel 5.2 dapat disimpulkan bahwa 75% dari admin berpendapat bahwa tampilan sistem yang dibuat mudah dilihat dan nyaman.

 Pertanyaan 2 :

Saya dapat membaca dengan mudah huruf – huruf yang ada pada system.

Tabel 5.3 Hasil Pertanyaan 2

Jawaban Jumlah Responden Total

Sangat Setuju 2 50%

Setuju 2 50%

Ragu - ragu 0 0%

Tidak Setuju 0 0%

Sangat Tidak Setuju 0 0%

Hasil jawaban yang terdapat pada tabel 5.3,dapat disimpulkan 50% dari responden mengatakan bahwa huruf-huruf dari sistem ini sangat mudah untuk dilihat dan dibaca, sedangkan dari 50% selanjutnya mengatkan bahwa huruf-hurufnya sudah bagus dan mudah untuk dibaca.

 Pertanyaan 3 :

Saya dapat dengan mudah memahami perintah dan petunjuk yang ada pada system.

Tabel 5.4 Hasil Pertanyaan 3


(1)

A.

Lapiran Program

1.

Metod DP()

public ResultSet DP(String id, String tanggal1, String tanggal2, int harga, int jmlkamar) throws SQLException {

Statement statement = connection.createStatement(); String query;

query = "select (((count(DISTINCT(tanggal))-1) * " + harga + ") * " + jmlkamar + " )*0.2 from kamar_sewa ks, jenis_kamar k "

+ " where ks.no_kamar = k.no_kamar and k.id_kamar = " + id + " " + "and ks.tanggal between to_date('" + tanggal1 + "', 'DD-MM-YY') and to_date('" + tanggal2 + "', 'DD-MM-YY')";

System.out.println(query);

ResultSet rest = statement.executeQuery(query); return rest;


(2)

2.

Metod sewa_kamar()

public String sewa_kamar(int nonota,int noid, String idkamar, String name, String alamat, String notlp, int jmlkamar, String tanggal1, String tanggal2, String email, int harga) throws SQLException {

CallableStatement callst = null; String namanya = "";

try {

String sql = "{CALL insert_penyewa3(?,?,?,?,?,?,?,?,?,to_date(?,'DD-MM-YY'),to_date(?,'DD-MM-YY'))}";

callst = connection.prepareCall(sql); callst.setInt(1, nonota); callst.setInt(2, noid); callst.setString(3, name); callst.setString(4, notlp); callst.setString(5, alamat); callst.setString(6, email); callst.setString(7, idkamar); callst.setInt(8, jmlkamar); callst.setInt(9, harga); callst.setString(10, tanggal1); callst.setString(11, tanggal2); callst.execute(); connection.commit(); return namanya;

} catch (SQLException e) {

Logger.getLogger(KamarSewa.class.getName()).log(Level.SEVERE, null, e); connection.rollback();

throw e; } }


(3)

3.

Metod verivikasi() dan update_nota()

public ResultSet verivikasi(int id, String email) throws SQLException { Statement statement = connection.createStatement();

String query;

query = "select ts.id_sewa, p.email "

+ " from transaksi_sewa ts, penyewa p " + " where p.id_penyewa = ts.id_penyewa " + " and ts.id_sewa = " + id + " "

+ " and p.email = '" + email + "'"; System.out.println(query);

ResultSet rest = statement.executeQuery(query); return rest;

}

public ResultSet update_nota(int id, String dp) throws SQLException { System.out.println(id + " " + dp);

Statement statement = connection.createStatement(); String query;

query = "update transaksi_sewa set dp = '" + dp + "' where id_sewa = " + id + " "; System.out.println(query);

ResultSet rest = statement.executeQuery(query); return rest;


(4)

4.

Metod verivikasi2()

public ResultSet verivikasi2(int id, String email) throws SQLException { Statement statement = connection.createStatement();

String query;

query = "select ts.id_sewa, p.email "

+ " from transaksi_sewa ts, penyewa p " + " where p.id_penyewa = ts.id_penyewa " + " and ts.id_sewa = " + id + " "

+ " and p.email = '" + email + "'" + " and ts.status = 1";

System.out.println(query);

ResultSet rest = statement.executeQuery(query); return rest;


(5)

5.

Metod update_transaksi() dan delete_transaksi()

public ResultSet update_transaksi(int id) throws SQLException { Statement statement = connection.createStatement(); String query;

query = "update transaksi_sewa set status = 1 where id_sewa = "+id+" "; System.out.println(query);

ResultSet rest = statement.executeQuery(query); return rest;

}

public String delete_transaksi(int id) throws SQLException { CallableStatement callst = null;

String namanya = "";

try {

String sql = "{CALL DELETE_TRANSAKSI(?)}"; callst = connection.prepareCall(sql);

callst.setInt(1, id); callst.execute(); connection.commit(); return namanya;

} catch (SQLException e) {

Logger.getLogger(KamarSewa.class.getName()).log(Level.SEVERE, null, e); connection.rollback();

throw e; } }


(6)

6.

Fungsi get_noorder

create or replace FUNCTION get_noorder RETURN NUMBER

AS

v_maxid transaksi_sewa.id_sewa%type; BEGIN

select max(id_sewa)+1 into v_maxid from transaksi_sewa; RETURN v_maxid;