Proses Generate Data IMPLEMENTASI DAN ANALISIS HASIL

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_BERANGKATtype; v_tiba kereta_template.JAM_TIBAtype; 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 berangkatROWTYPE; begin open berangkat; loop fetch berangkat into berangkat_record; exit when berangkatNOTFOUND; 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_berangkatnomor_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_berangkatnomor_berangkat,tanggal_berangkat,tanggal_tiba values berangkat_record.nomor_template, select tgl_sekarang from sekarang, select tgl_sekarang from sekarang; 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_BERANGKATtype; v_tiba kereta_template.JAM_TIBAtype; 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 where tanggal_awal_berlaku = select from sekarang and tanggal_akhir_berlaku =select from sekarang; berangkat_record berangkatROWTYPE; 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 berangkatNOTFOUND; 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; 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_berangkatnomor_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_berangkatnomor_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; 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_GERBONGtype; v_counter number2:=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 gerbongROWTYPE; begin open gerbong; loop fetch gerbong into gerbong_record; exit when gerbongNOTFOUND; select jumlah_gerbong into v_jml_gerbong from kereta_template where nomor_template=gerbong_record.nomor_berangkat; loop insert into gerbongnomor_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; 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_GERBONGtype; v_kursi kursi_temp.NOMOR_KURSItype; v_counter number2:=1; v_nomer_kereta number2:=null; v_stasiun has_stasiun.NO_STASIUNtype; 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 kursiROWTYPE; cursor stas is select no_stasiun from has_stasiun where nomor_kereta=v_nomer_kereta; stasiun_record stasROWTYPE; begin open kursi; loop fetch kursi into kursi_record; exit when kursiNOTFOUND; 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_LINEnilai||v_nomer_kereta; open stas; loop fetch stas into stasiun_record; exit when stasNOTFOUND; dbms_output.PUT_LINEhasil : ||A||v_counter||stasiun :||stasiun_record.no_stasiun; insert into kursi_tempnomor_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; elsif v_counter 28 then v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINEnilai||v_nomer_kereta; open stas; loop fetch stas into stasiun_record; exit when stasNOTFOUND; dbms_output.PUT_LINEhasil : ||B||v_counter||stasiun :||stasiun_record.no_stasiun; insert into kursi_tempnomor_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_LINEnilai||v_nomer_kereta; open stas; loop fetch stas into stasiun_record; exit when stasNOTFOUND; dbms_output.PUT_LINEhasil : ||C||v_counter||stasiun :||stasiun_record.no_stasiun; insert into kursi_tempnomor_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; commit; close stas; els if v_counter 50 then v_nomer_kereta :=kursi_record.nomor_kereta; dbms_output.PUT_LINEnilai||v_nomer_kereta; open stas; loop fetch stas into stasiun_record; exit when stasNOTFOUND; dbms_output.PUT_LINEhasil : ||D||v_counter||stasiun :||stasiun_record.no_stasiun; insert into kursi_tempnomor_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; 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 kursiROWTYPE; cursor stas is select no_stasiun from has_stasiun where nomor_kereta=v_nomer_kereta; stasiun_record stasROWTYPE; 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 kursiNOTFOUND; 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_LINEnilai||v_nomer_kereta; open stas; loop fetch stas into stasiun_record; exit when stasNOTFOUND; dbms_output.PUT_LINEhasil : ||A||v_counter||stasiun :||stasiun_record.no_stasiun; insert into kursi_tempnomor_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;

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