KRL JAKARTA-BOGOR SCHEDULE INFORMATION SUPPORT APPLICATION SYSTEM WITH JAVA AND MYSQL Bambang Nursandi Undergraduate Program, Faculty of Industrial Engineering, 2010 Gunadarma University http://www.gunadarma.ac.id
Keywords : Information System, Trains, UML, Java, MySQL
ABSTRACT The author makes this application system to enable users to get information will be
scheduling Trains. Trains is still prone to delays at the operating point of Jakarta-Bogor. Users also can perform predictive Trains travel to the desired destination station. This application system using UML as concept development process flow, the Java programming language as a tool builder application process and also MySQL as data storage devices.
SISTEM APLIKASI PENUNJANG INFORMASI JADWAL KRL JAKARTA-BOGOR DENGAN JAVA DAN MYSQL BAMBANG NURSANDI Jurusan Teknik Informatika, Fakultas Teknologi Industri, Universitas Gunadarma, Margonda Raya 100 Depok 16424 telp (021) 78881112, 7863788 Abstraksi : The author makes this application system to enable users to get information will be scheduling Trains. Trains is still prone to delays at the operating point of Jakarta-Bogor. Users also can perform predictive Trains travel to the desired destination station. This application system using UML as concept development process flow, the Java programming language as a tool builder application process and also MySQL as data storage devices. Keywords : Information System, Trains, UML, Java, MySQL Tanggal Pembuatan : 23 Agustus 2010
PENDAHULUAN Kereta Rangkaian Listrik atau biasa disingkat KRL adalah salah satu jasa transportasi yang paling banyak peminatnya karena bukan hanya dinilai cepat dan mempersingkat waktu tujuan, jasa transportasi KRL ini pun memiliki harga yang tergolong murah untuk semua kalangan masyarakat. Jasa transportasi KRL ini sudah menjadi kebutuhan yang amat penting bagi para penumpangnya. Namun, dibalik semua keuntungan yang diberikan jasa transportasi KRL, ternyata masih banyak kekurangan yang perlu diperbaiki. Layaknya sebuah transportasi yang ideal, jasa transportasi KRL di Indonesia ini masih sangat bermasalah dengan ketepatan waktu, baik waktu keberangkatan maupun waktu tiba ditujuan. Hal ini disebabkan oleh beberapa faktor seperti keterlambatan, pembatalan, maupun kecelakaan. Masalah ini pun diikuti oleh kurang sigapnya pihak KRL memberikan informasi secara cepat dan langsung ke seluruh stasiun yang berkaitan. Akibatnya para calon penumpang tidak dapat memutuskan terlebih dahulu akan naik KRL atau tidak.
Sistem penunjang informasi jadwal KRL untuk wilayah operasi Jakarta Bogor maupun sebaliknya. Sistem ini dilengkapi dengan adanya pembagian Server, Client dan User, dimana tiap-tiap bagian memiliki fungsi masing-masing yang saling berkaitan. Bagian server diperuntukkan kepada admin dari pihak KRL yang dapat mengatur hak akses sistem, jadwal KRL, biaya perjalanan antar stasiun beserta jenis KRL-nya maupun info keterlambatan. Kemudian client diperuntukkan kepada petugas di tiap stasiun yang dilewati untuk melakukan update terhadap situasi yang terjadi. Sedangkan user diperuntukkan kepada para calon pengguna KRL untuk melihat jadwal KRL, biaya perjalanan, info prediksi perjalanan dari stasiun keberangkatan menuju stasiun tujuan. Sistem ini diimplementasikan dengan menggunakan bahasa pemrograman Java dan perangkat lunak database MySQL. Hal ini diharapkan dapat membantu para calon pengguna KRL untuk memutuskan sendiri apa yang akan dilakukan terhadap informasi yang diberikan pihak KRL.
Tujuan sistem aplikasi ini yaitu mampu membantu para calon pengguna KRL untuk membuat keputusan terhadap informasi jadwal KRL yang bersistem upto-date.
TINJAUAN PUSTAKA Sekilas KRL di Indonesia Wacana elektrifikasi jalur Kereta Api (KA) di Indonesia telah didiskusikan oleh para pakar kereta api dari perusahaan kereta api milik pemerintah Hindia Belanda yaitu: Staats Spoorwegen (SS)sejak tahun 1917 yang menunjukkan bahwa elektrifikasi jalur KA secara ekonomi akan menguntungkan. Elektrifikasi jalur KA pertama dilakukan pada jalur KA rute Tanjung Priuk – Meester Cornelis (Jatinegara) dimulai pada tahun 1923 dan selesai pada tanggal 24 Desember 1924. Untuk melayani jalur kereta listrik ini, pemerintah Hindia Belanda membeli beberapa jenis lokomotif listrik untuk menarik rangkaian kereta api diantaranya adalah Lokomotif Listrik seri 3000 buatan pabrik SLM (Swiss Locomotive & Machine works) –BBC (Brown Baverie Cie), Lokomotif Listrik seri 3100 buatan pabrik AEG (Allgemaine Electricitat Geselischaft) Jerman. Lokomotif Listrik seri 3200 buatan pabrik Werkspoor Belanda serta KRL (Kereta Rel Listrik) buatan pabrik Westinghouse dan KRL buatan pabrik General Electric. Bagian dari perusahaan Staats Spoorwegen yang menangani sarana, pasarana dan operasional kereta listrik ini adalah Electrische Staats Spoorwegen (ESS). Peresmian elektrifikasi jalur KA bersamaan dengan hari ulang tahun ke 50 Staats Spoorwegen, sekaligus juga peresmian stasiun Tanjung Priuk yang baru yaitu pada 6 April 1925. Elektrifikasi jalur KA yang mengelilingi kota Batavia (Jakarta) selesai pada 1 Mei
1927. Elektrifikasi tahap selanjutnya dilakukan pada jalur KA rute Batavia (Jakarta Kota) – Buitenzorg (Bogor) dan mulai dioperasionalkan pada tahun 1930. Setelah Indonesia merdeka, lokomotif-lokomotif listrik ini masih setia melayani para pengguna angkutan kereta api di daerah Jakarta – Bogor. Seiring perkembangan zaman, Commuter (KRL Jabotabek) yang beroperasi sekarang sudah memiliki berbagai fasilitas dan kelas. Saat ini ada tiga kategori atau kelas pelayanan Commuter, antara lain Commuter ekonomi non AC, Commuter Ekonomi AC dan Commuter Ekspres AC.
Deskripsi Teoritis Client, Server dan User Client-server merupakan sebuah paradigma dalam teknologi informasi yang merujuk kepada cara untuk mendistribusikan aplikasi ke dalam dua pihak: pihak klien dan pihak server. Dalam model klien/server, sebuah aplikasi dibagi menjadi dua bagian yang terpisah, tapi masih merupakan sebuah kesatuan yakni komponen klien dan komponen server. Komponen klien juga sering disebut sebagai front-end, sementara komponen server disebut sebagai back-end. Komponen klien dari aplikasi tersebut dijalankan dalam sebuah workstation dan menerima masukan data dari pengguna. Komponen klien tersebut akan menyiapkan data yang dimasukkan oleh pengguna dengan menggunakan teknologi pemrosesan tertentu dan mengirimkannya kepada komponen server yang dijalankan di atas mesin server, umumnya dalam bentuk request terhadap beberapa layanan yang dimiliki oleh server. Komponen server akan menerima request dari klien, dan langsung memprosesnya dan mengembalikan hasil pemrosesan tersebut kepada klien. Klien
pun menerima informasi hasil pemrosesan data yang dilakukan server dan menampilkannya kepada pengguna, dengan menggunakan aplikasi yang berinteraksi dengan pengguna. Klien-server merupakan penyelesaian masalah pada software yang menggunakan database sehingga setiap komputer tidak perlu diinstall database, dengan metode klien-server database dapat diinstal pada suatu komputer sebagai server dan aplikasinya diinstal pada client.
Mengenal Bahasa Pemrograman Java Java dapat dijalankan di mesin apapun tanpa harus mengubah kode programnya. Hal ini disebabkan oleh adanya Java Virtual Machine (JVM) yang menjadi landasan berpijak bagi program Java untuk berjalan diberbagai platform. JVM merupakan jembatan antara hasil kompilasi kode Java (bytecode) dengan hardware. Selain mampu berjalan di berbagai platform, Java memiliki banyak kelebihan. Antara lain : 1. OOP (Berorientasi Objek) Model objek java tergolong sederhana dan mudah dikembangkan, sedangkan tipetipe data sederhana dianggap sebagai non-objek yang berkinerja tinggi.
Gambar 2.1 Arsitektur Server, Client dan User User disini adalah end user yang mengakses client untuk mendapatkan sebuah layanan. End user bisa saja seorang manager perusahaan, professional, karyawan di sebuah perusahaan, atau pelanggan. Ada timbul sedikit kerancuan. Pelanggan dalam sebuah bisnis atau perdagangan disebut dengan client , tapi client ini adalah manusia, jangan dibingungkan dengan istilah client pada pemrosesan komputer. Dapat kita katakan sebuah user atau end user adalah ketika melakukan proses akhir menggunakan sistem client server.
2. Aman Java disusun sejak awal dengan prinsip keamanan. Java tidak pernah memiliki fasilitas dan kemampuan yang tidak aman bagi penggunanya karena Java tidak dapat memanggil fungsi-fungsi global dan membendung akses ke berbagai sumber dalam sistem. 3. Interaktif Java dirancang untuk memenuhi kebutuhan dunia nyata untuk menciptakan program yang interaktif. Java telah dilengkapi penganganan untuk sinkronisasi beberapa proses sekaligus dan memungkinkan pembuatan sistem yang interaktif. 4. Sederhana Untuk mempelajari Java tidaklah sulit. Java didesain untuk memudahkan programmer dalam mempelajari dan menggunakannya secara efektif. Bagi programmer
C/C++, berpindah ke Java hanya memerlukan sedikit penyesuaian. Hal ini dikarenakan oleh struktur penulisan program yang hampir sama dengan Java. 5. Kokoh Java mempunyai batas kunci agar apabila terdapat kesalahan, maka akan ditemukan lebih cepat saat mengembangkan program. Java langsung memeriksa program saat programmer menuliskannya, dan memeriksa sekali lagi ketika program dijalankan. 6. Terinterpretasi dan Berkinerja Tinggi Java dapat diterjemahkan oleh sistem apapun yang memiliki program Java didalamnya. Sistem program Java melakukan optimasi tepat waktu, dan tidk akan kehilangan keuntungan dari program yang netral terhadap platform. 7. Terdistibusi Java dapat dengan mudah bekerja dalam lingkunagn terdistribusi seperti internet/intranet karena kemampuannya menangani protokol TCP/IP dan juga memungkinkan programmer membuat pemrograman client/server. 8. Dinamis Karena OOP, Java dengan mudahnya dalam hal pemeliharaan dn pengembangan, karena tidak harus membedah isi program untuk mengubah dan mengembangkan program dengan skala lebih besar.
Mengenal MySQL MySQL adalah salah satu alternatif peranti lunak untuk mengatur database yang dirilis ke berbagai sistem operasi dan
juga terdapat connector yang menghubungkan aplikasi Java dengan database MySQL. Disamping karena dukungannya ke dalam berbagai platform, kecepatan aksesnya cukup bisa diandalkan. Selain itu, kemudahannya dalam integrasi ke berbagai aplikasi web terutama PHP cukup membantu dalam pengembangan sistem informasi online di masa mendatang. MySQL mempunyai dual-lisensi, yaitu Open Source dibawah GPL (General Public License) bersifat gratis dan Commercial dibawah MySQL AB yang bersifat komersil. MySQL masih terus memperbaiki kinerjanya dengan memnambahkan fitur-fitur baru dalam setiap rilisnya. Seperti pada umumnya pengelolaan database dengan MySQL memiliki tiga sub bahasa yaitu DDL (Data Definition Language) yang bekerja pada objek database seperti membuat tabel, mengubah tabel, dan menghapus tabel, kemudian DML (Data Manipulation Language) untuk menangani objek tabel, seperti melihat, menambah, menghapus dan mengubah isi tabel. Dan terakhir DCL ( Data Control Language) untuk mengatur hak akses user terhadap database.
Unified Modeling Language (UML) Unified Modelling Language (UML) adalah sebuah "bahasa" yg telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, sertaditulis dalam bahasa pemrograman
apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasabahasaberorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetapdapat digunakan untuk modeling aplikasi prosedural dalam VB atau C. Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (ObjectOriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering). Sejarah UML sendiri cukup panjang. Sampai era tahun 1990 seperti kita ketahui puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya adalah: metodologi booch, metodologi coad, metodologi OOSE, metodologi OMT, metodologi shlaer-mellor, metodologi wirfs-brock, dsb. Masa itu terkenal dengan masa perang metodologi (method war) dalam pendesainan berorientasi objek. Masingmasing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan group/perusahaan lain yang menggunakan metodologi yang berlainan. Seperti juga tercantum pada gambar diatas UML mendefinisikan diagram-diagram sebagai berikut: • use case diagram • class diagram • statechart diagram • activity diagram • sequence diagram • collaboration diagram
• component diagram • deployment diagram
Langkah-Langkah UML
Penggunaan
Berikut ini adalah tips pengembangan piranti lunak dengan menggunakan UML: 1. Buatlah daftar business process dari level tertinggi untuk mendefinisikan aktivitas dan proses yang mungkin muncul. 2. Petakan use case untuk tiap business process untuk mendefinisikan dengan tepat fungsionalitas yang harus disediakan oleh sistem. Kemudian perhalus use case diagram dan lengkapi dengan requirement, constraints dan catatan-catatan lain. 3. Buatlah deployment diagram secara kasar untuk mendefinisikan arsitektur fisik sistem. 4. Definisikan requirement lain (nonfungsional, security dan sebagainya) yang juga harus disediakan oleh sistem. 5. Berdasarkan use case diagram, mulailah membuat activity diagram. 6. Definisikan objek-objek level atas (package atau domain) dan buatlah sequence dan/atau collaboration diagram untuk tiap alir pekerjaan. Jika sebuah use case memiliki kemungkinan alur normal dan error, buatlah satu diagram untuk masing-masing alur. 7. Buarlah rancangan user interface model yang menyediakan antarmuka bagi pengguna untuk menjalankan skenario use case. 8. Berdasarkan model-model yang sudah ada, buatlah class diagram. Setiap package atau domain dipecah menjadi hirarki class lengkap dengan atribut dan metodanya. Akan lebih baik jika
untuk setiap class dibuat unit test untuk menguji fungsionalitas class dan interaksi dengan class lain. 9. Setelah class diagram dibuat, kita dapat melihat kemungkinan pengelompokan class menjadi komponen-komponen. Karena itu buatlah component diagram pada tahap ini. Juga, definisikan tes integrasi untuk setiap komponen meyakinkan ia berinteraksi dengan baik. 10. Perhalus deployment diagram yang sudah dibuat. Detilkan kemampuan dan requirement piranti lunak, sistem operasi, jaringan, dan sebagainya. Petakan komponen ke dalam node. 11. Mulailah membangun sistem. Ada dua pendekatan yang dapat digunakan : Pendekatan use case, dengan meng-assign setiap use case kepada tim pengembang tertentu untuk mengembangkan unit code yang lengkap dengan tes. Pendekatan komponen, yaitu meng-assign setiap komponen kepada tim pengembang tertentu. 12. Lakukan uji modul dan uji integrasi serta perbaiki model berserta codenya. Model harus selalu sesuai dengan code yang aktual. 13. Piranti lunak siap dirilis.
Basis Data Basis data terdiri dari dua kata yaitu basis dan data. Basis dapat diartikan tempat berkumpul, markas atau sarang, sedangkan data suatu fakta dari dunia nyata yang mewakili suatu objek seperti kaset atau kendaraan. Pemrosesan basis data didefinisikan sebagai sekumpulan data yang terintegrasi dan diolah untuk
memenuhi kebutuhan para pengguna di dalam suatu organisasi. Basis data adalah kumpulan dari file data yang besar dimana dapat digunakan secara simultan oleh banyak departemen dan pengguna. Pada suatu organisasi atau perusahaan, basis data merupakan susunan record data operasional lengkap dari suatu organisasi/perusahaan , yang diorganisir dan disimpan secara terintegrasi dengan menggunakan metode tertentu pada komputer sehingga mampu memenuhi informasi optimal yang diperlukan oleh pemakai dan Database Management System (DBMS). DBMS adalah sebuah perangkat lunak yang mengatur dan mengontrol akses dari dan ke basis data dan sebuah program yang berinteraksi dengan basis data. Komponen sistem basis data terdiri atas : 1. 2. 3. 4.
Data Perangkat Keras Perangkat Lunak Pengguna a. System Engineer b. Database Administrator (DBA) c. Programmer d. Pengguna Akhir Beberapa istilah yang digunakan pada basis data yaitu, 1. Enterprise Enterprise merupakan suatu bentuk organisasi seperti bank, universitas, dan lainnya. 2. Entity (Entitas) Entitas adalah suatu objek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data. 3. Atribut Atribut adalah karakteristik dari suatu entitas. 4. Data Value (Nilai Data)
Nilai Data merupakan isi data berupa informasi yang tercakup dalam setiap elemen data. 5. Key Data Elemen (Kunci Data Elemen) Tanda pengenal yang secara unik mengidentifikasikan entitas dari sekumpulan entitas. 6. Record Data Kumpulan isi elemen data yang saling berhubungan.
Koneksi Sistem Informasi Sistem ini membutuhkan koneksi antara subsistem server, client dan juga user. Koneksi tersebut diperlukan karena sinkronisasi yang bersifat realtime ketika sistem berjalan. Internet mempunyai peran yang cukup besar terhadap sistem ini. Dalam sistem ini, koneksi internet berfungsi menghubungkan database yang bersifat online kepada proses yang ada. Class.forName("com.mysql.jdbc.Driver") ; String url =
PERANCANGAN SISTEM Perancangan Unified Language (UML)
Modeling
Model jaringan Unified Modeling Language (UML) digunakan untuk menggambarkan secara konsep sistem ini.
"jdbc:mysql://www.freesql.org/database onlinekrl"; String user = "administrator"; String pw = "administrator"; con = DriverManager.getConnection(url, user, pw);
Use Case Diagram KRL Use case diagram sistem ini diwakili oleh tiga aktor yaitu server, client dan user, dimana keterhubungan dalam sistem pada hasil dari view data KRL, view harga tiket dan view info keterlambatan.
Pengaturan koneksi diatas dilakukan agar database yang tersimpan dapat diakses melalui koneksi internet dimanapun. Dengan driver jdbc, server yang dituju adalah alamat untuk penyimpanan database. Untuk contoh disini diberikan alamat penyimpanan www.freesql.org dengan akun databaseonlinekrl. Karena sifatnya yang private, pengaksesan pun dilakukan hanya oleh administrator dengan adanya isian username dan password.
Perancangan Database
Gambar 3.1 Use Case Diagram KRL
Database digunakan sistem ini untuk menampung data karyawan krl harga tiket, jadwal krl, dan jarak stasiun. Untuk pembuatan program ini penulis menggunakan sebuah database dengan nama “DataBase_KRL” yang di dalamnya terdapat beberapa tabel. Dalam database “DataBase_KRL” terdapat beberapa tabel yang penulis gunakan untuk membentuk atau menyusun
program ini. Tabel-tabel yang digunakan dalam program ini antara lain :
id_krl
varchar
8
Tabel karyawan_krl
boo
varchar
20
Dalam tabel ini berfungsi untuk menampung data karyawan krl.
clt
varchar
20
bjd
varchar
20
cta
varchar
20
dp
varchar
20
dpb
varchar
20
poc
varchar
20
ui
varchar
20
up
varchar
20
lna
varchar
20
tnt
varchar
20
psm
varchar
20
psmb
varchar
20
drn
varchar
20
cw
varchar
20
teb
varchar
20
mri
varchar
20
thb
varchar
20
kpb
varchar
20
cki
varchar
20
gdd
varchar
20
gbr
varchar
20
jua
varchar
20
sw
varchar
20
mgb
varchar
20
jyk
varchar
20
jak
varchar
20
Tabel 3.1 Tabel karyawan_krl Nama field
Tipe data
Ukura n field
Ket
id_karyawan
varcha r
14
primar y key
nama
varcha r
40
password
varcha r
15
login
varcha r
15
alamat
varcha r
100
tugas_di_stasi un
varcha r
40
telepon
varcha r
15
varcha r
40
varcha r
15
jabatan hak akses
Tabel jadwal_krl Dalam tabel ini menampung waktu berangkat/tujuan di tiap stasiun, keterangan keterlambatan dan juga jenis krl . Tabel 3.2 Tabel jadwal_krl Nama field
Tipe data
Ukuran field
Ket
primary key
jenis_k rl
varchar
30
keterla mbatan
varchar
50
id_kary varchar awan
8
keteran gan
100
varchar
Pembuatan Database
foreign key
Pada tabel ini informasi jarak antar stasiun.
ditampung
Tabel 3.3 Tabel jarak_stasiun Tipe data
Ukuran Ket field
nama_stasiun varchar 8 jarak
Untuk membuat database pertamatama dibuat script dalam bahasa pemrograman Java yaitu: import java.sql.*; public class Bikin_DataBase_KRL { public Bikin_DataBase_KRL(){ try{ Koneksi ObjKoneksi=new Koneksi(); Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement();
Tabel jarak_stasiun
Nama field
Pembuatan database dalam sistem ini dibuat dengan bahasa Java yang ketika dijalankan database akan otomatis tersimpan dalam MySQL.
primary key
varchar 20
Tabel harga_tiket Dalam tabel ini ditampung harga tiket sesuai dengan jenis krl dan juga zona yang berkaitan.
Pada bagian ini di buat sebuah class Java dengan memanggil paket java.sql.* yang mempunyai fungsi-fungsi untuk menghubungkan sql dengan Java. Class bernama Bikin_DataBase_KRL ini pertama-tama memanggil pembukaan koneksi ke database. Kemudian dibuatlah untuk tabel karyawan_krl.
String Bikin_Table_Karyawan_KRL="create table karyawan_krl(id_karyawan varchar(14) not null,"+ "nama varchar(40),"+ "password varchar(15),"+
Tabel 3.4 Tabel harga_tiket
"login varchar(15),"+
Nama field
"alamat varchar(100),"+
jenis_krl zona_local
Tipe data
Ukuran Ket field
varchar 10 varchar 15
beda_1_zona varchar 15 beda_2_zona varchar 15
primary key
"tugas_di_stasiun varchar(40),"+ "telepon varchar(15),"+ "jabatan varchar(40),"+ “hak_akses varchar(15),"+ "primary key(id_karyawan))";
Nama dari setiap stasiun yang terhubung dimasukkan agar didalamnya dapat dimasukkan waktu berangkat maupun waktu tiba. Kemudian jenis_krl berfungsi
untuk menyimpan jenis KRL yang tersedia di wilayah operasi Jakarta-Bogor yaitu kelas ekonomi, ekonomi AC, dan ekspress. Didalam tabel ini pun terdapat field keterlambatan untuk memilih jenis informasi keterlambatan seperti pembatalan jadwal KRL. Kemudian ada pula keterangan yang berisi tulisan untuk informasi sebab kenapa KRL terlambat atau pun batal. Tabel harga_tiket pun dimasukkan dalam kode program dengan memasukkan jenis_krl sebagai primary key. Kemudian kalkulasi harga tiket dibagi dalam tiga zona. Pembagian zona ini tidak berlaku untuk KRL jenis ekonomi AC maupun ekspress. Zona pertama adalah zona lokal dimana zona ini mempunyai harga yang paling murah. Biasanya zona ini diperuntukkan antar stasiun yang berdekatan, kemudian zona kedua adalah zona tengah yang disebut beda_1_zona. Disini dilihat pada zona stasiun setelah zona lokal dilewati. Kemudian zona ketiga atau disebut beda_2_zona dimasukkan karena zona tersebut zona terjauh, bisa juga zona tujuan akhir. String Bikin_Table_Harga_Tiket="create table harga_tiket(jenis_krl varchar(10) not null,"+
Sedangkan stasiun yang lain dapat dikalkulasi untuk mendapat jarak yang tepat. Dalam Bikin_Database_KRL.java dimasukkan script-script MySQL yang langsung membuat tabel-tabel yang dibutuhkan oleh aplikasi. Bagian ini mempergunakan Koneksi.java sebagai Connector ke MySQL. Setiap tabel yang berhasil dibuat diberi peringatan “berhasil buat” atau “gagal dibuat” . Kemudian buat nama database dalam MySQL sesuai nama database dalam Koneksi.java yaitu “DataBase_KRL” dengan perintah create database DataBase_KRL.
Rancangan Tampilan Server(Pusat)
Bagian
Pada bagian server ini didesain secara formal dengan mementingkan kelengkapan fungsi yang berhubungan dengan kepentingan administrator. Pertama adalah sub bagian untuk data karyawan dengan rancangan seperti pada gambar 3.2.
"zona_local varchar(15),"+ “beda_1_zona varchar(15),"+ "beda_2_zona varchar(15),"+ "primary key(jenis_krl))"; Setelah itu dimasukkan pula kode program untuk membuat tabel jarak_stasiun. String Bikin_Table_Jarak_Stasiun="create table jarak_stasiun(nama_stasiun varchar(8) not null,"+ "jarak varchar(20),"+ "primary key(nama_stasiun))";
Di bagian ini field nama_stasiun dan jarak dimasukkan dengan ketentuan jarak dihitung dari stasiun Bogor.
Gambar 3.2 Rancangan Tampilan Data Karyawan
Didalamnya terdapat label, tombol-tombol dan isian-isian guna memasukkan detil karyawan. Dan hasil dari isian ditampilkan pada sebuah tabel yang ada dibawah form. Pada implementasinya ke kode program rancangan tampilan diatas label dibuat dengan JLabel, tombol dibuat dengan JButton kemudian Isian dibuat dengan JTextField dan Tabel dibuat dengan JTabel. Hal ini dapat dilihat pada kode program berikut.
Text_Nama_Karyawan.setBounds(16 0,100,400,25);...
Kemudian pada sub bagian data KRL terdapat isian-isian untuk memasukkan waktu di setiap stasiun. Rancangan tampilan sub bagian ini dapat dilihat pada gambar 3.3.
private JLabel Label_Judul_Menu =new JLabel("JUDUL MENU"), Label_ID_Karyawan =new JLabel("ID Karyawan"), Label_Nama_Karyawan =new JLabel("Nama"), Label_Password_Karyawan JLabel("Password"),
=new
Label_Alamat_Karyawan JLabel("Alamat"),
=new
Label_Tugas_Karyawan JLabel("Tugas"),
=new
Label_Telepon_Karyawan JLabel("Telepon"), Label_Jabatan_Karyawan JLabel("Jabatan"),..
=new =new
//menu2 private JButton JButton("Cari");
Button_Cari2=new
private JTable Tabel=new JTable(); private DefaultTableModel TabModel; private JScrollPane JScrollPane();
SkrolTabel=new
Setelah pendeklarasian maka dibuat pengaturan koordinat dari tampilan untuk mencocokkan dengan rancangan diatas. Label_ID_Karyawan.setBounds(15,70,20 0,25); Text_ID_Karyawan.setBounds(160,70,10 0,25); Label_Nama_Karyawan.setBounds(15,100 ,100,25);
Gambar 3.3 Rancangan Tampilan Sub Bagian Data KRL Hampir sama dengan rancangan tampilan data karyawan, disini dapat dilihat masih terdapat label, tombol, isian, dan tabel. Isian dimasukkan untuk waktu, label untuk nama stasiun, pencarian id keberangkatan dan jenis krl. Pada implementasinya dalam kode program, semua masih sama dengan data karyawan kecuali isian yang dibuat dengan JComboBox. private Label_ID_Keberangkatan =new JLabel("ID Keberangkatan"),
JLabel
Label_Jenis_KRL =new JLabel("Jenis KRL"), Label_Batas_Waktu =new JLabel(":"); private JLabel Label_Stasiun_BOO =new JLabel("BOO"), Label_Stasiun_CLT =new JLabel("CLT"), Label_Stasiun_BJD =new JLabel("BJD"), Label_Stasiun_CTA =new JLabel("CTA"),..
Serangkaian Proses Bagian Server (Pusat)
dimasukkan maka akan ada pesan “Data berhasil disimpan!!!” .
Proses Simpan Data Karyawan Pada bagian ini dilakukan koneksi antara Java dengan MySQL dengan melakukan perintah insert ke tabel karyawan_krl. Pada kode program dibuat pada bagian void.
Proses Edit Data Karyawan
void Simpan(){
Pada bagian ini dilakukkan proses edit data karyawan dengan memasukkan perintah update dalam kode program. Dalam hal ini data yang telah tersimpan di database dapat diubah.
try{
void Edit(){
Connection con=ObjKoneksi.Buka_Koneksi();
try{
Statement st=con.createStatement(); String sql="insert into karyawan_krl(id_karyawan,nama,password ,alamat,tugas_di_stasiun,telepon,jabat an,hak_akses) values('" + Text_ID_Karyawan.getText() + "','" + Text_Nama_Karyawan.getText() + "','" + Text_Password_Karyawan.getText() + "','" + Text_Alamat_Karyawan.getText() + "','" + (String)Combo_Tugas_Karyawan.getSelect edItem() + "','" + Text_Telepon_Karyawan.getText() + "','" + Text_Jabatan_Karyawan.getText() + "','" + (String)Combo_Hak_Karyawan.getSelected Item() + "')"; int rows=st.executeUpdate(sql); if(rows==1){ JOptionPane.showMessageDialog(this,"Da ta berhasil disimpan !!!","SUCCESS",JOptionPane.INFORMATION _MESSAGE);} con.close(); }catch(SQLException e){ System.out.println(e.getMessage()); JOptionPane.showMessageDialog(this,"Da ta gagal disimpan !!!","ERROR",JOptionPane.ERROR_MESSAGE ); }}
Isian dari textfield pada form menjadi inputan untuk dimasukkan ke dalam database. Apabila data berhasil
Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement(); String sql="update karyawan_krl set nama='" + Text_Nama_Karyawan.getText() + "',password='" + Text_Password_Karyawan.getText() + "',alamat='" + Text_Alamat_Karyawan.getText() + "',tugas_di_stasiun='" + (String)Combo_Tugas_Karyawan.getSelect edItem() + "',telepon='" + Text_Telepon_Karyawan.getText() + "',jabatan='" + Text_Jabatan_Karyawan.getText() + "',hak_akses='" + (String)Combo_Hak_Karyawan.getSelected Item() + "' where id_karyawan='" + Text_ID_Karyawan.getText() +"'"; int rows=st.executeUpdate(sql); if(rows==1){ JOptionPane.showMessageDialog(this,"Da ta berhasil diedit !!!","SUCCESS",JOptionPane.INFORMATION _MESSAGE); }else{ JOptionPane.showMessageDialog(this,"Da ta gagal diedit !!!","ERROR",JOptionPane.ERROR_MESSAGE ); } con.close(); }catch(SQLException e){ System.out.println(e.getMessage()); JOptionPane.showMessageDialog(this,"Da ta gagal diedit
!!!","ERROR",JOptionPane.ERROR_MESSAGE );
Label_Jabatan_Karyawan_Isi.setText(" :");
}}
Pada pertamanya data dicari sesuai dengan id karyawan yang telah disimpan, detil data yang tesimpan akan muncul diisian dan dapat diisi ulang dan disimpan kembali.
Proses Hapus Data Karyawan Pada bagian ini dilakukkan proses delete pada data yang telah tersimpan. void Hapus(){ try{ Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement(); String sql="delete from karyawan_krl where id_karyawan='" + Text_ID_Karyawan.getText() + "'"; int rows=st.executeUpdate(sql); if(rows==1){ JOptionPane.showMessageDialog(this,"Da ta berhasil dihapus !!!","SUCCESS",JOptionPane.INFORMATION _MESSAGE); Text_ID_Karyawan.setText("");
Label_Hak_Karyawan_Isi.setText(":"); ...
Proses Cari Data Karyawan Pada bagian ini sebenarnya hanya proses seacrhing yang digunakan juga pada proses edit dan hapus data. Namun dipisahkan untuk dapat melihat data karyawan saja. Perintah MySQL yang digunakan adalah select. void Cari(){ try{ Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement(); String sql="select * from karyawan_krl where id_karyawan='" + Text_ID_Karyawan.getText() + "'"; ResultSet rows=st.executeQuery(sql); if(rows.next()){ if (Menu_Yang_Dipilih=="Hapus"){ Label_Nama_Karyawan_Isi.setText(": + rows.getString("nama"));
"
Label_Password_Karyawan_Isi.setText(": " +rows.getString("password")); Label_Alamat_Karyawan_Isi.setText(": " + rows.getString("alamat"));
Label_Nama_Karyawan_Isi.setText(":") ; Label_Password_Karyawan_Isi.setText( ":"); Label_Alamat_Karyawan_Isi.setText(": "); Label_Tugas_Karyawan_Isi.setText(":" );
Label_Tugas_Karyawan_Isi.setText(": " + rows.getString("tugas_di_stasiun")); Label_Telepon_Karyawan_Isi.setText(": " + rows.getString("telepon")); Label_Jabatan_Karyawan_Isi.setText(": " + rows.getString("jabatan")); Label_Hak_Karyawan_Isi.setText(": + rows.getString("hak_akses")); }...
Label_Telepon_Karyawan_Isi.setText(" :");
rows.close(); con.close(); }catch(SQLException e){
"
System.out.println(e.getMessage());
(String)Combo_Jadwal_CLT_Menit.getSele ctedItem();
JOptionPane.showMessageDialog(this,"Da ta gagal dicari !!!","ERROR",JOptionPane.ERROR_MESSAGE );
}else{ CLT="";
} }
}...(hingga stasiun terakhir)
Proses Simpan Jadwal KRL
Pada proses disini adanya penggabungan string untuk jam dan menit sehingga dalam tabel database dapat menyatu dan diproses bersamaan.
Pada dasarnya proses terhadap jadwal KRL hampir sama dengan data karyawan. Pada proses ini dimasukkan perintah insert ke tabel jadwal_krl. void Simpan_Jadwal(){
Proses Edit Jadwal KRL Proses ini dilakukan update pada data jadwal KRL yang telah tersimpan.
try{
String sql="update jadwal_krl set"+
Connection con=ObjKoneksi.Buka_Koneksi();
" boo='"+BOO+"',"+
Statement st=con.createStatement();
"clt='"+CLT +"',"+
String BOO="";
"bjd='"+BJD
+"',"+
String BOO_JAM=(String)Combo_Jadwal_BOO_Jam.g etSelectedItem();
"cta='"+CTA + "',"+
String BOO_MENIT=(String)Combo_Jadwal_BOO_Men it.getSelectedItem();
"dpb='"+DPB +
if(!BOO_JAM.equals("") !BOO_MENIT.equals("")){
"ui='"+UI + "',"+
&&
BOO=(String)Combo_Jadwal_BOO_Jam.getSe lectedItem() +":"+
"dp='"+DP +
"',"+ "',"+
"poc='"+POC + "',"+
"up='"+UP + "',"+ "lna='"+LNA+ "',"+
(String)Combo_Jadwal_BOO_Menit.getSele ctedItem();
"tnt='"+TNT+ "',"+
}else{
"psm='"+PSM+
BOO="";
"psmb='"+PSMB + "',"+
}
"drn='"+DRN + "',"+
String CLT="";
"cw='"+CW + "',"+
String CLT_JAM=(String)Combo_Jadwal_CLT_Jam.g etSelectedItem();
"teb='"+ TEB +
String CLT_MENIT=(String)Combo_Jadwal_CLT_Men it.getSelectedItem();
"thb='"+THB+ "',"+
if(!CLT_JAM.equals("") !CLT_MENIT.equals("")){
"cki='"+CKI + "',"+
&&
CLT=(String)Combo_Jadwal_CLT_Jam.getSe lectedItem() +":"+
"mri='"+MRI+
"',"+
"',"+ "',"+
"kpb='"+KPB + "',"+
"gdd='"+GDD +
"',"+
"gbr='"+GMR +
"',"+
"jua='"+JUA+
"',"+
"sw='"+SW + "',"+
Connection con=ObjKoneksi.Buka_Koneksi();
"mgb='"+MGB + "',"+ Statement "jyk='"+JYK +
st=con.createStatement();
"',"+
"jak='"+JAK+ "',"+ "jenis_krl='"+(String)Combo_Jenis_KRL_ 1.getSelectedItem()+"' "+ "where id_krl='"+Text_ID_KRL.getText()+"'"; int rows=st.executeUpdate(sql);
Data yang telah tersimpan sebelumnya pada tabel jadwal_krl diubah dengan cara dicari terlebih dahulu dari primary key id_krl.
Proses Hapus Jadwal KRL Proses hapus dilakukan pada data jadwal KRL dengan perintah delete pada kode program yang terintegrasi dengan database. void Hapus_Jadwal(){ try{ Connection con=ObjKoneksi.Buka_Koneksi();
String sql1="update jarak_stasiun set jarak='"+Text_Jarak_BOO_BOO.getText()+ "' where nama_stasiun='BOO'"; String sql2="update jarak_stasiun set jarak='"+Text_Jarak_BOO_CLT.getText()+ "' where nama_stasiun='CLT'"; String sql3="update jarak_stasiun set jarak='"+Text_Jarak_BOO_BJD.getText()+ "' where nama_stasiun='BJD'"; String sql4="update jarak_stasiun set jarak='"+Text_Jarak_BOO_CTA.getText()+ "' where nama_stasiun='CTA'"; String sql5="update jarak_stasiun set jarak='"+Text_Jarak_BOO_DP.getText()+" ' where nama_stasiun='DP'"; String sql6="update jarak_stasiun set jarak='"+Text_Jarak_BOO_DPB.getText()+ "' where nama_stasiun='DPB'"; String sql7="update jarak_stasiun set jarak='"+Text_Jarak_BOO_POC.getText()+ "' where nama_stasiun='POC'"; String sql8="update jarak_stasiun set jarak='"+Text_Jarak_BOO_UI.getText()+" ' where nama_stasiun='UI'"; String sql9="update jarak_stasiun set ...(hingga stasiun akhir)
Statement st=con.createStatement(); String sql="delete from jadwal_krl where id_krl='" + Text_ID_KRL.getText() + "'"; int rows=st.executeUpdate(sql);
Data jadwal KRL dihapus sesuai dengan parameter yang berikan yaitu id_krl.
Proses Tabel Jadwal KRL Pada bagian ini diperlihatkan jadwal KRL dengan parameter jenis krl dan jurusan. void Tabel_Jadwal_KRL(){ int NO; try{
Proses Update Jarak
Connection con=ObjKoneksi.Buka_Koneksi();
Jarak dimasukkan secara manual dengan memasukkan data dengan stasiun awal yaitu Bogor ke stasiun yang lain.
Statement st=con.createStatement();
void Update_Jarak(){
ResultSet rows=st.executeQuery(sql);
try{
int baris=TabModel.getRowCount();
String sql="select * from jadwal_krl order by id_krl asc";
for(int i=0;i
try{ Connection con=ObjKoneksi.Buka_Koneksi();
} Statement st=con.createStatement();
NO=1; while (rows.next()){ String[] Data={rows.getString("id_krl"),rows.ge tString("boo"),rows.getString("clt"),r ows.getString("bjd"),rows.getString("c ta"),rows.getString("dp"),rows.getStri ng("dpb"),rows.getString("poc"), rows.getString("ui"),rows.getString("u p"),rows.getString("lna"),rows.getStri ng("tnt"),rows.getString("psm"),rows.g etString("psmb"),rows.getString("drn") ,rows.getString("cw"),
* from asc";
jadwal_krl
String sql="select order by id_krl
ResultSet rows=st.executeQuery(sql); int baris=TabModel.getRowCount(); for(int i=0;i
rows.getString("teb"),rows.getString(" mri"),rows.getString("thb"),rows.getSt ring("kpb"),rows.getString("cki"),rows .getString("gdd"),rows.getString("gbr" ),rows.getString("jua"),
} NO=1; while
rows.getString("sw"),rows.getString("m gb"),rows.getString("jyk"),rows.getStr ing("jak"),rows.getString("jenis_krl") ,rows.getString("keterlambatan"),rows. getString("id_karyawan"),rows.getStrin g("keterangan")};
(rows.next()){ String[] Data={rows.getString("id_krl"),rows.ge tString("jenis_krl"),rows.getString("k eterlambatan"),rows.getString("id_kary awan"),rows.getString("keterangan")};
TabModel.addRow(Data); TabModel.addRow(Data); } } rows.close(); rows.close(); con.close(); con.close(); }catch(SQLException e){ }catch(SQLException e){ System.out.println(e.getMessage()); System.out.println(e.getMessage()); JOptionPane.showMessageDialog(this,"Da ta ERROR !!!","ERROR",JOptionPane.ERROR_MESSAGE ); }
JOptionPane.showMessageDialog(this,"Da ta ERROR !!!","ERROR",JOptionPane.ERROR_MESSAGE ); }}
Proses Tabel Info Keterlambatan Pada sub bagian ini diperlihatkan tabel dengan paramater id_krl yang dimasukkan. Perintah digunakan sama seperti tabel jadwal KRL dengan select. void Tabel_Info_Keterlambatan(){ int NO;
Proses Edit Harga Tiket Di sub bagian ini sebelumnya harga tiket telah dimasukkan data pada saat pembuatan database. Maka proses disini dibuat agar apabila ada suatu hal perubahan data, harga tiket dapat berubah dengan mudah tanpa melakukan perubahan kode program.
void Edit_Harga_Tiket(){ try{ Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement(); String sql="update harga_tiket set zona_local='" + Text_Zona_Local.getText() + "',beda_1_zona='" + Text_Beda_1_Zona.getText() + "',beda_2_zona='" + Text_Beda_2_Zona.getText() + "' where jenis_krl='" + (String)Combo_Jenis_KRL_Harga_Tiket.ge tSelectedItem() +"'";
dimasukkan beberapa isian untuk dimasukkan informasi tentang KRL mana yang mengalami kejadian keterlambatan. Dengan parameter id keberangkatan krl, informasi dapat masukkan ke dalam isian jenis krl, pilihan batal atau tidak dan juga keterangan sebab keterlambatan terjadi. Dapat dilihat pada gambar.. terdapat beberapa JButton, JLabel, JTextField, JComboBox dan JTabel yang dipakai.
int rows=st.executeUpdate(sql); if(rows==1){ JOptionPane.showMessageDialog(this,"Da ta berhasil diupdate !!!","SUCCESS",JOptionPane.INFORMATION _MESSAGE); }else{ JOptionPane.showMessageDialog(this,"Da ta gagal diupdate !!!","ERROR",JOptionPane.ERROR_MESSAGE ); }
Gambar 3.4 Rancangan Tampilan Bagian Client (Stasiun) Sub Bagian update Keterlambatan
con.close(); }catch(SQLException e){ System.out.println(e.getMessage()); JOptionPane.showMessageDialog(this,"Da ta gagal diupdate !!!","ERROR",JOptionPane.ERROR_MESSAGE );
Pada impementasinya ke kode program Java, rancanan tersebut dituangkan dalam suatu frame dalam Java menggunakan JFrame dengan ukuran layar PC. Label_Judul_Menu.setText("Info Keterlambatan");
Penjelasan Program Bagian Client (Stasiun) Rancangan Tampilan Client (Stasiun)
Bagian
Pada bagian ini dibagi beberapa sub bagian yang diperuntukkan bagi karyawan/petugas di setiap stasiun yang berkaitan. Program ini digunakan untuk memberikan info keterlambatan secara upto-date. Pertama-tama adalah form untuk bagian update keterlambatan. Disini
Label_Judul_Menu.setFont(new Font("Arial",Font.ITALIC,30)); Label_Judul_Menu.setForeground(Color.b lack); Label_Judul_Menu.setBounds(15,15,500,3 5); Label_ID_KRL_Update.setBounds(15,70,27 0,25); Combo_ID_KRL_Update.setBounds(285,70,1 50,25);
Dengan perintah setBounds letak komponen diatur dengan komposisi (h,v,pk,lk). Titik koordinat h adalah letak horizontal dari komponen diukur dari titik komponen kiri atas. Kemudian v adalah titik koordinat dengan perhitungan vertikal. Sedangkan pk adalah panjang dari komponen yang dimaksud dan terakhir lk adalah lebar dari komponen tersebut. Ukuran-ukuran yang dipakai dihitung berdasarkan ukuran pixel dan peletakan komponen diukur dari sisi ujung kanan atas dari layar (titik[0,0]).
Serangkaian Proses Client(Stasiun)
Bagian
Proses Ganti Password Karyawan Proses ini merupakan bagian dari halaman profile karyawan. Disini karyawan berhak mengubah password sesuai keinginannya. Hal ini dimaksudkan karena pada saat pendaftaran karyawan di bagian server, setiap id diberi password default oleh pihak server. Pengubahan password dapat dilakukkan apabila password karyawan yang dimaksud memang sudah tersimpan didalam database. Oleh karena itu sebelum diubah, harus dilakukkan pengecekkan keberadaan password di database. Dalam kode program dilakukkan percabangan seperti dilihat dibawah ini. if((CekBaru1.equals(CekBaru2)) (!CekBaru1.equals(""))){
&&
try{ Connection con=ObjKoneksi.Buka_Koneksi(); Statement st=con.createStatement(); String sql="select * from karyawan_krl where id_karyawan='"+IDKARYAWANGLOB+"' and password='"+Text_Password_Lama.getText ()+"'"; ResultSet rows=st.executeQuery(sql);
String CEKIDPASS="";
Disini pengecekkan dilakukan terhadap isian password lama dan melihat data dengan select. if(CEKIDPASS.equals("Ada")){ String sqlganti="update karyawan_krl set password='" + Text_Password_Baru.getText() + "' where id_karyawan='" + IDKARYAWANGLOB +"'"; int rows1=st.executeUpdate(sqlganti);
Setelah itu dapat dilihat dari kode program diatas, pengubahan dilakukan dengan perintah update pada tabel karyawan_krl. Apabila isian password pada program kosong atau belum diisi maka akan keluar peringatan. else{if(CekBaru1.equals("")){ JOptionPane.showMessageDialog(this,"Ma af Password Baru Tidak Boleh Kosong !!!","Password Salah",JOptionPane.ERROR_MESSAGE); }else{ JOptionPane.showMessageDialog(this,"Ma af Password Baru Tidak Sama Dengan Verifikasi Passwod !!!","Password Salah",JOptionPane.ERROR_MESSAGE); }
Proses Update Info Keterlambatan Pada proses update info keterlambatan diperlukan untuk memberikan informasi keterlambatan atas peristiwa yang terjadi terhadap KRL yang beroperasi. Dalam memberikan informasi yang penting seperti ini sangat dibutuhkan tanggung jawab yang besar dari pihak pemberi informasi. Oleh karena itu, pihak pemberi informasi ini dapat dilihat id-nya demi tanggung jawab atas informasi yang diberikan. Pertama dicek siapa yang login dalam program ini. Apakah pihak administrator atau karyawan. try{
Connection con=ObjKoneksi.Buka_Koneksi();
int rows1=st.executeUpdate(sql1);
Statement st=con.createStatement(); String ADMINBUKAN=""; String cekadmin="select * from karyawan_krl where id_karyawan='"+ ID_Karywan_Login+"'"; ResultSet rowscek=st.executeQuery(cekadmin); while (rowscek.next()){ ADMINBUKAN=rowscek.getString("hak_akse s"); System.out.println(ADMINBUKAN);
}
String sql="select * from jadwal_krl where id_krl='"+ID_SELECTED+"'"; if(ADMINBUKAN.equals("Administrator")) { sql="select * from jadwal_krl id_krl='"+ID_SELECTED+"'";
Kekeliruan mungkin terjadi karena diinputkan oleh manusia, human error masih belum dapat dihindarkan. Oleh karena itu pemberi informasi dapat menghapus info keterlambatan yang telah dimasukkan. Hal ini pun dapat terjadi apabila, KRL yang bersangkutan telah dapat beroperasi kembali. Maka dalam kode program dimasukkan opsi untuk menghapus info yang telah disimpan dengan cara update ulang database. String sql1="update jadwal_krl set keterlambatan='', id_karyawan='',keterangan='' where id_krl='" + IDDELETE + "'"; int rows1=st.executeUpdate(sql1);
where
}else{sql="select * from jadwal_krl where id_krl='"+ID_SELECTED+"' and (id_karyawan='' or id_karyawan='"+ ID_Karywan_Login+"') ";}ResultSet rows=st.executeQuery(sql);
Kemudian secara otomatis id dari karyawan dapat dilihat dan proses selanjutnya adalah memutuskan keterlambatan yang terjadi apakah batal operasi atau hanya terlambat. CEKCANCEL=rows.getString("keterlambata n"); PindahCOMBO(CEKCANCEL);
Penjelasan Program Bagian User (Pengguna KRL) Rancangan Tampilan Bagian User (Pengguna KRL) Tampilan bagian ini sangat penting karena dilihat langsung oleh para pengguna KRL. Oleh karena itu kemudahan dan kelengkapan informasi menjadi prioritas utama bagian ini. Pertama adalaha bagian awal dari bagian program ini, dimasukkannya sebuah screen untuk output tampilantampilan informasi yang dibutuhkan.
Setelah itu proses dilanjutkan dengan proses update ke dalam field keterlambatan di tabel jadwal_krl di dalam database. String sql1="update jadwal_krl set keterlambatan='"+apakah_krl_di_cancel+ "', id_karyawan='"+ID_Karywan_Login+"',ket erangan='"+Text_Keterangan_Update.getT ext()+"' where id_krl='" + IDUPDATE + "'";
Gambar 3.5 Bagian User(Pengguna KRL)
Pada kode program dibutuhkan JToolBar, JButton dan JLabel untuk tampilan awal ini.
client dengan parameter jenis krl dan jurusan krl yang diinginkan oleh pengguna KRL.
private JToolBar Tool_Bar =new JToolBar(JToolBar.VERTICAL);
Connection con=ObjKoneksi.Buka_Koneksi();
private JButton Tool_Bar_Info =new JButton(new ImageIcon("KA/info.png")), Tool_Bar_Prediksi =new JButton(new ImageIcon("KA/pre.png")), Tool_Bar_Help =new JButton(new ImageIcon("KA/help.png")), Tool_Bar_Keluar =new JButton(new ImageIcon("KA/quit.png")); Tool_Bar.add(Tool_Bar_Info); Tool_Bar.add(Tool_Bar_Prediksi); Tool_Bar.add(Tool_Bar_Help); Tool_Bar.add(Tool_Bar_Keluar);
Kemudian pada sub bagian Info KRL, masih digunakan beberapa JButton maka pada kode program akan nampak seperti dibawah ini. BG_Info.setBounds(0,0,800,600); Tool_Bar_Info.setIcon(new ImageIcon("KA/infoc.png")); Tool_Bar_Prediksi.setIcon(new ImageIcon("KA/pre.png"));
Statement st=con.createStatement(); if((JurusanKRLCEK.equals("Bogor Jakarta"))&&(JenisKRLCEK.equals("All") )){ sql="select * from jadwal_krl where mod(id_krl,2)<>0 and keterangan='' order by id_krl asc"; }if((JurusanKRLCEK.equals("Jakarta Bogor"))&&(JenisKRLCEK.equals("All"))) { sql="select * from jadwal_krl where mod(id_krl,2)=0 and keterangan='' order by id_krl asc"; }if((JurusanKRLCEK.equals("Bogor Jakarta"))&&(!JenisKRLCEK.equals("All" ))){ sql="select * from jadwal_krl where mod(id_krl,2)<>0 and jenis_krl='"+(String)Combo_Jenis_KRL.g etSelectedItem()+"' and keterangan='' order by id_krl asc"; }if((JurusanKRLCEK.equals("Jakarta Bogor"))&&(!JenisKRLCEK.equals("All")) ){
Tool_Bar_Help.setIcon(new ImageIcon("KA/help.png")); Button_Jadwal_KRL.setBounds(15,30,200, 100); Button_Harga_Tiket.setBounds(15,220,20 0,100); Button_Info_Keterlambatan.setBounds(15 ,220-30+220,200,100);
Serangkaian Proses User(Pengguna KRL)
String sql="select * from jadwal_krl where jenis_krl='" +(String)Combo_Jenis_KRL.getSelectedIt em() +"' and keterangan='' order by id_krl asc";
Bagian
Proses Jadwal KRL Pada sub bagian ini ditampilkan sama seperti pada bagian server dan bagian
sql="select * from jadwal_krl where mod(id_krl,2)=0 and jenis_krl='"+(String)Combo_Jenis_KRL.g etSelectedItem()+"' and keterangan='' order by id_krl asc"; } ResultSet rows=st.executeQuery(sql);
Penggabungan inputan dari jenis krl dan jurusan krl disatukan dan kemudian dicari dengan perintah select terhadap database.
Proses Harga Tiket Bagian ini untuk melihat harga tiket sesuai dengan stasiun keberangkatan dan tujuan beserta jenis KRL yang diinginkan pengguna KRL. Didalam
prosesnya KRL jenis ekonomi memiliki harga yang berbeda ditiap zona. Disini penulis membagi menjadi tiga zona yang berbeda. Zona lokal diperuntukkan apabila stasiun keberangkatan dan tujuan berada berdekatan, zona berikutnya (1) adalah zona tengah dan zona terakhir (2) adalah zona yang terjauh. if((SK<=Batas_Zona_1_Dari_0_Sampai)&&( ST<=Batas_Zona_1_Dari_0_Sampai)){ zona="local";
for(int i=0;i
}if((SK<=Batas_Zona_1_Dari_0_Sampai)&& ((ST>Batas_Zona_1_Dari_0_Sampai)&&(ST< =Awal_Zona_3_Dari))){
TabModel.addRow(Data);
zona="1";
Proses Prediksi
}if((SK<=Batas_Zona_1_Dari_0_Sampai)&& (ST>Awal_Zona_3_Dari)){ zona="2";}...(lihat lampiran) . . if(Cek_Zona.equals("local")){ Label_Harga.setText("Rp. " rows.getString("zona_local"));
+
}else if(Cek_Zona.equals("1")){ Label_Harga.setText("Rp. " rows.getString("beda_1_zona"));
+
}else if(Cek_Zona.equals("2")){ Label_Harga.setText("Rp. " rows.getString("beda_2_zona"));
+
Proses Info Keterlambatan
Bagian ini adalah bagian yang menjadi inti utama dari sistem penunjang informasi jadwal KRL. Disini inputan yang dibutuhkan adalah dari stasiun mana sang pengguna KRL berangkat dan di stasiun mana pengguna KRL akan turun. Ketepatan waktu sampai tujuan menjadi prioritas karena waktu yang diinputkan adalah batas waktu tertinggi terhadap waktu output. Misalkan pengguna KRL berangkat dari stasiun Bogor menuju stasiun Pondok Cina dengan waktu sampai tujuan pukul 08.30 , maka output yang dihasilkan adalah KRL dengan waktu terdekat dengan batas waktu tertinggi 08.29. Dalam kode program kondisi ini dimasukkan dalam serangkaian proses seperti dibawah ini. try{
Pada bagian ini diperlihatkan info keterlambatan yang terjadi pada waktu yang bersamaan. Disini pengguna KRL dapat melihat tabel informasi tentang KRL mana yang mengalami kejadian. String sql="select * from jadwal_krl natural right join karyawan_krl where keterangan<>'' order by id_krl asc"; ResultSet rows=st.executeQuery(sql); int baris=TabModel.getRowCount();
Connection con=ObjKoneksi.Buka_Koneksi(); int Jarak_SK=0; int Jarak_ST=0; String Cari_KRL_Yang_Memenuhi="select * from jadwal_krl natural right join harga_tiket where mid("+STASIUN[ST]+",1,2)<="+Cek_Jam_Sa mpai+ " and
mid("+STASIUN[SK]+",1,2)>="+JAM_GLOBAL + " and keterlambatan='' order by id_krl asc";
if(Jurusan.equals("BOGOR")){ Cari_KRL_Yang_Memenuhi="select * from jadwal_krl natural right join harga_tiket where mid("+STASIUN[ST]+",1,2)<="+Cek_Jam_Sa mpai+ " and mid("+STASIUN[SK]+",1,2)>="+JAM_GLOBAL + " and keterlambatan='' and mod(id_krl,2)<>0 order by id_krl asc";
.. Hasil proses diatas memunculkan output hasil gabungan antara informasi dengan jarak antar stasiun.
PENUTUP Kesimpulan Dari penjelasan dalam bab sebelumnya dapat disimpulkan bahwa sistem informasi jadwal KRL ini dapat membantu para calon pengguna untuk membuat keputusan sendiri terhadap informasi yang diberikan pihak KRL. Sistem ini berhasil menampilkan informasi terhadap peristiwa yang terjadi akan KRL. Keberhasilan tersebut adalah hasil dari sinkronisasi antara subsistem yang ada yaitu server, client dan user. Dimana server memasukkan keseluruhan dasar informasi dari pihak KRL. Kemudian pihak client dengan proses didalamnya memberikan informasi dari database kepada pihak user. Data yang diberikan tersebut diolah oleh sistem informasi untuk dijadikan prediksi perjalanan terhadap calon penumpang. Prediksi yang dihasilkan didapat dari input calon penumpang akan stasiun yang dikehendaki dengan batasan waktu yang diinginkan. Maka sistem memproses dengan membandingkan antara database
yang ada dengan komputerisasi waktu yang tersedia.
Saran Dilihat dari ketersediaan fasilitas dari pihak PT.KAI selaku perusahaan KRL di Indonesia masih belum dapat direalisasikan. Namun kekurangan tersebut dapat diwujudkan dengan penyediaan beberapa perangkat minimum berupa komputer dengan koneksi internet maupun kabel. Dan yang terpenting adalah kepemilikan suatu database server yang cukup untuk menyimpan data-data yang bersangkutan. Dari sistemnya sendiri cakupan yang dapat dilakukan masih dalam DAOP (Daerah Operasi) Jakarta hingga Bogor saja dan diproses manual oleh karyawan. Hal tersebut menjadi bahan pertimbangan penulis untuk dapat mengembangkan sistem ini lebih maju dari sekarang dan juga berguna bagi masyarakat.
DAFTAR PUSTAKA [1] Hakim, Rachmad. 2009. Mastering Java. Jakarta: Elex Media Komputindo. [2] URL: http://id.wikipedia.org/wiki/java. Tanggal Akses : 30 Mei 2010. [3] URL: http:// en. wikipedia. org/ wiki/ Unified_Modeling_Language. Tanggal Akses: 1 Juli 2010 [4] URL: http://krl.co.id. Tanggal Akses: 1 Juli 2010. [5] Sanjaya, Ridwan. 2005. Pengolahan Database MySQL 5 dengan Java 2. Jakarta: Penerbit Andi.
[6] Supardi, Yuniar. 2007. Pemrograman Database dengan Java dan MySQL. Jakarta: Elex Media Komputindo. [7] Universitas Gunadarma. 2007. Seri Diktat Kuliah: Sistem Basis Data 1. Jakarta: Penerbit Gunadarma.