Professional Documents
Culture Documents
Full
Full
KENDARAAN BERMOTOR
(Studi Kasus: Asia Motor, Solo)
SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik Jurusan Teknik Informatika
Disusun Oleh:
Vincentya Yuliana Diwa
NIM: 015314059
SKRIPSI
By:
Vincentya Yuliana Diwa
015314059
sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian
karya orang lain, kecuali pemikiran, metode atau hasil penelitian orang lain yang
Penulis
HALAMAN PERSEMBAHAN
KOMUNITAS SANT’EGIDIO
Untuk Anugerah terindah menjadi Saudara dan Sahabatku...
HALAMAN MOTTO
Saat ini Sistem pada Asia Motor masih bersifat manual. Asia motor
belum memiliki sistem yang membantu menangani proses mulai dari pencatatan
workorder, pencarian riwayat service kendaraan pada service-service sebelumnya,
pencarian persediaan stok sparepart, dan pembuatan laporan workorder. Sehingga
diharapkan dengan adanya sistem informasi ini dapat membantu membantu Asia
motor mengatasi masalah-masalah tersebut.
Sistem informasi riwayat servis kendaraan bermotor ini
diimplementasikan dalam lingkungan intranet dengan menggunakan JSP dan
didukung dengan MySQL DBMS.
Hasil akhir yang diperoleh adalah sebuah Sistem Informasi Riwayat
Sevis Kendaraan bermotor yang mampu mengolah data pelanggan,data
kendaraan,data servis,sparepart,workorder dan dapat memberikan informasi
kepada pelanggan tetang servis-servis kendaraan dari pelanggan tersebut,
memberikan informasi stok sparepart dan dapat memberikan laporan workorder.
Tapi sistem informasi ini masih memiliki kekurangan yaitu laporan yang
diberikan belum dilengkapi dengan laporan dalam bentuk grafis.
ABSTRACT
At present system of Asia Motor Solo is still manually. Asia Motor has
not used system yet to process the data from writing workorder, searching the data
service of motorcycle it is expected that it will help Asia Motor Solo to save the
problems.
implemented with intranet method, by using JSP(Java Server Pages) that must be
which is able to process the data such as the data of customer, data of service, data
of spare part,data of workorder and the system able to give the report of
workorder. But the information system of history service is still lack of the
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa
Laporan Tugas Akhir ini. Penulisan tugas akhir ini ditujukan untuk memenuhi
salah satu syarat memperoleh gelar Sarjana Teknik Jurusan Teknik Informatika.
Terselesaikannya penulisan tugas akhir ini tidak lepas dari peran serta
beberapa pihak, baik secara langsung maupun secara tidak langsung. Oleh karena
itu, penulis ingin menyampaikan terima kasih kepada pihak-pihak yang telah ikut
membantu dalam penulisan tugas akhir ini, baik dalam memberikan bimbingan,
1. Ir. Gregorius Heliarko SJ, SS, BST, MA, M.Sc. selaku Dekan Fakultas Teknik
Alvin S.,SE, S.Kom.,AKT, selaku Dosen Pembimbing II, yang telah banyak
3. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Ketua Jurusan Teknik
4. Bapak Alb. Agung Hadhiatma, S.T., M.T., Bapak St. Wisnu Wijaya, S.T.,
M.T, dan Bapak St. Yudianto Asmoro, S.T selaku panitia penguji pada ujian
pendadaran penulis.
5. Seluruh Dosen Universitas Sanata Dharma, khususnya Dosen yang mengajar
kepada penulis.
6. Pak Bele, Mas Danang, dan seluruh Laboran, yang telah memberikan
kita.
makin keren aja), Sarinem(Makasih karena telah banyak membantu ,kpn kita
Senior K’Iwan kita bangun KSE dikupang lagi ya kak, Lori,Ima makasih ya
buat printernya,dan untuk Fanny(Kaji). Terima Kasih Banyak untuk Segala
selalu mewarnai hidup saya, selalu membantu dan menjadi sahabat saya sejak
pertama kali. J
12. Narko (Low Profile, High Profit) yang selalu membantu penulis disaat
13. Tio, Xteen, Dh35ni dan Nita, yang selalu memberi semangat dan
14. Adri, Dami, dan Anan ( ADA Band) Makasih buat kekompakan kita.
bantuannya.
16. HKF (Himpunan Keluarga Flobamora), makasih banyak Johntor Pengki, yang
tugas akhir ini. Oleh karena itu, penulis ingin menyampaikan mohon maaf apabila
terdapat kesalahan dan kekurangan. Untuk itu, penulis mengharapkan kritik dan
saran yang membangun dari seluruh pihak yang membutuhkan laporan tugas akhir
ini.
Semoga laporan tugas akhir ini dapat memberikan manfaat bagi siapa
( Penulis )
DAFTAR ISI
BAB I PENDAHULUAN
1.1 Latar Belakang Masalah …………………………………….............. 1
BAB VI PENUTUP
PENDAHULUAN
baik dalam bidang komputer yang meliputi perangkat keras maupun perangkat
lunak. Kebutuhan akan informasi yang akurat sangat diperlukan. Kebutuhan akan
informasi ini menjadi keharusan yang sangat mempengaruhi tingkat efisiensi dan
sistem yang terencana dengan baik akan memberikan manfaat dalam peningkatan
Sistem pada Asia Motor masih bersifat manual. Mulai dari pencatatan
pencarian persediaan stok sparepart. Hal ini membuat pekerjaan pada Asia Motor
alternatif yang dilakukan adalah dengan membangun suatu sistem baru. Dengan
sistem ini maka dapat membantu baik customer maupun Asia Motor sendiri
dimana sistem ini dapat mengetahui kerusakan atau service apa yang dilakukan
bisa mengetahui stok dari spare part yang digunakan, apakah persediaannya masih
berapa banyak workorder yang diterima secara keseluruhan atau per jenis order
Agar perancangan cakupan sistem ini dapat dilakukan secara tepat, maka
1. Kasus yang dipilih adalah kasus yang berada dalam lingkungan bagian
workorder service, membuat report harian dan mencetak ID Customer pada Asia
Motor, Solo.
sebagai berikut:
pemilik toko dan karyawan tentang proses transaksi dan service secara
2. Studi literatur
perbaikan sistem.
dimengerti mesin.
BAB I PENDAHULUAN
Pada bab ini berisi tentang latar belakang masalah, batasan masalah, tujuan
Pada bab ini berisi tentang dasar teori yang mana akan digunakan untuk
Pada bab ini berisi tentang cara penerapan konsep dasar yang telah diuraikan
pada bab sebelumnya untuk menganalisa dan merancang sebuah sistem baik
Pada bab ini akan berisi tantang implementasi dari perancangan yang telah
dibuat yang meliputi cara kerja program yaitu berupa hasil input program
Pada bab ini berisi tentang kelebihan dan kekurangan pada sistem yang telah
dibuat.
Pada bab ini berisi tentang kesimpulan dan saran dari penulisan tugas akhir
yang disusun.
BAB II
LANDASAN TEORI
Secara garis besar yang akan diuraikan dalam landasan teori adalah konsep
MySQL.
2.1 SISTEM
mencapai suatu tujuan tertentu.1 Sebuah perusahaan juga merupakan suatu sistem.
pembukuan, dan personalia yang mana semuanya bekerja sama untuk mencapai
keluaran (output), pengolah (proses) dan sasaran (objectives) atau tujuan (goal).
1) Komponen Sistem
1
Jogiyanto
Komponen-komponen sistem atau elemen-elemen sistem dapat berupa
2) Batas sistem
4) Penghubung Sistem.
subsistem lainnya.
5) Masukkan Sistem
7) Pengolah Sistem
8) Sasaran Sistem
Jika suatu sistem tidak mempunyai sasaran, maka operasi sistem tidak
tujuannya.
2.2. Informasi
Informasi adalah data yang diolah menjadi bentuk yang lebih berguna dan
tindakan, yang berarti menghasilkan suatu tindakan lain yang akan membuat
2
Jogiyanto,
sejumlah data kembali. Data tersebut akan ditangkap sebagai input, diproses
kembali lewat suatu model dan seterusnya membentuk suatu siklus. Siklus ini
disebut dengan siklus informasi (information cycle). Siklus ini juga disebut
pengambilan keputusan.
pemakainya.
2.3.SISTEM INFORMASI
sebagai berikut :
a. Blok Masukan
b. Blok Model
matematik yang akan memanipulasi data input dan data yang tersimpan di
basis data dengan cara yang sudah tertentu untuk menghasilkan keluaran
yang diinginkan.
c. Blok Keluaran
d. Blok Teknologi
3
Robert A. Leitch/K. Roscoe Davis, Accounting Information System, (New Jersey: Prentice Hall,
1983), hal. 6.
dan membantu pengendalian dari sistem secara keseluruhan, yang terdiri
dari 3 bagian utama, yaitu teknisi, perangkat lunak, dan perangkat keras.
f. Blok Kendali
antara sistem dan eksternal sistem dan pemakai. Use case merupakan bagian dari
dengan nama dari use case tertera diatas, dibawah atau di dalam ellips. Gambar
sistem untuk mengubah informasi. Dapat berupa orang, organisasi atau sistem
informasi yang lain atau juga suatu waktu kejadian. Gambar 2.2 merupakan
Simbol Actor
Use case depends on relationship merupakan sebuah relasi use case yang
menentukan bahwa use case yang lain harus dibuat sebelum use case yang
sekarang. Digambarkan sebagai anak panah yang dimulai dari satu use case dan
menunjuk ke use case yang depend on kepadanya. Setiap relasi depend on diberi
untuk menggambarkan data dalam entity dan relasi yang dijelaskan oleh data.
Entity adalah sebuah kumpulan dari orang, tempat, objek, kejadian atau konsep
yang diperlukan untuk menyimpan data. Nama entity berupa kata benda tunggal
Atribut merupakan sebuah properti yang deskriptif atau karakteristik dari sebuah
Key merupakan sebuah atribut atau kelompok atribut yang diasumsikan memiliki
nilai yang unik untuk setiap instance. Sering juga disebut dengan identifier.
2. Candidate key merupakan satu dari nilai key yang akan berfungsi
identifier
yang tunggal.
4. Alternate key merupakan sebuah candidate key yang tidak dapat dipilih
Relationship adalah sebuah asosiasi bisnis normal yang ada antara satu atau lebih
entity. Relasi mungkin juga mewakili suatu kejadian yang menghubungkan antara
entity atau logika gabungan antara entity. Gambar 2.7 merupakan contoh dari
relasi
Cardinality merupakan minimum dan maksimum kejadian dari sebuah entity yang
dihubungkan dengan kejadian tunggal dari entity yang lain. Karena seluruh relasi
Foreign key adalah sebuah primary key dari sebuah entity yang digunakan oleh
entity berasosiasi dengan banyak instance dari entity yang lainnya. Disebut juga
jika ada, menambah asosiatif entity termasuk primary dan alternate key, dan
untuk mengambarkan aliran dari data yang melalui sebuah system dan proses
1. Proses (Process)
Proses adalah kerja yang dilakukan oleh sistem dalam merespon arus data
Nama Proses
Arus data adalah data sebagai masukan ke proses atau keluaran dari
sebuah proses.
Arus data juga digunakan untuk mewakili creation, reading, deleting, atau
updating dari data dalam file atau database (disebut datastore atau
penyimpanan data).
3. Kesatuan Luar (External Agent).
Kesatuan luar adalah orang, unit organisasi, sistem atau organisasi luar
Gambar 2.5 merupakan simbol kesatuan luar menurut Gane dan Sarson :
Nama
kesatuan luar
Sarson
Penyimpanan data
dengan Servet, EJB, JNDI, XML. JSP dan Servlet bekerja dalam suatu
Server yang menangani permintaan JSP seperti sebuah kompiler halaman yang
menggabungkan template HTML dengan kode Java yang dinyatakan pada elemen
JSP.
Sebuah JSP ketika akan dijalankan, web container akan memeriksa status
class servlet terakhir, jika belum Ada atau berstatus lama, maka container akan
melakukan kompilasi terhadap file JSP untuk dihasilkan suatu servlet yang
menerapka interface HttpJspPage berdasar isi dari halaman JSP. Dari Servlet
• package javax.servlet.jsp
• package javax.servlet.jsp.tagtest
berisi kelas-kelas dan method untuk custom tag
Setiap halaman JSP berisi variabel penunjuk ke objek servlet yang disebut
objek implisit yang sudah terdefinisikan dan siap digunakan. Variabel ini
page Directive
pemakaiannya :
untuk memasukan text dari suatu file lain. Berikut bentuk elementnya
Tag-tag asli JSP dapat dituliskan dengan bentuk elemen XML, yang
diterjemahkan
2.6. MySQL
(Structured Query Language). MySQL mampu untuk menangani data yang cukup
besar, karena menerapkan suatu metode yang sangat cepat dalam hal relasi antar
tabel databasenya.
auto_increment”.
b. Merubah tabel
digunakan, yaitu:
a. Menambah
b. Menghapus
DELETE FROM namatabel WHERE kriteria;
c. Mengubah
untuk mengakses dengan database. JDBC digunakan baik dalam aplikasi desktop,
mySQL dengan program yang sama ,mengakses Oracle, UDB2 dan PostgreSQL.
Kunci utama dari JDBC adalah JDBC Driver yang bertanggung jawab
menjadi jembatan antara program Java dan database tertentu. JDBC Driver untuk
dipersiapkan.
String jdbcDriver
= “org.gjt.mm.mysql.Driver”;
Class.forName ( jdbcDriver ) ;
String url = “jdbc : mysql : // localhost : 3306 /
MYAPP_DB”;
String user = “ekobs” ;
String pwd = “j2ee” ;
System.out.println
( “mencoba membangun connection ke ‘ “ +
url
+ “ ‘ dengan user ‘ “ + user
+ “ ‘ dan password ‘ “ + pwd + “ ‘ … “ ) ;
conn = DriverManager.getConnection (
url, user ,pwd ) ;
Sytem.out.println ( “ Success.” ) ;
}
cacth ( ClassNotFoundException cnfe )
{
cnfe.printStackTrace ( ) ;
}
cacth ( SQLException sqle )
{
sqle.printStackTrace ( ) ;
}
finally
{
try
{
if ( conn ! = null )
{
System.out.println ( “ Menutup connection.
“);
Conn.close ( ) ;
}
}
catch ( SQLException sqle )
{
sqle.printStackTrace ( ) ;
}
}
}
}
4. kemudian kompile
$ javac ConnectionApp.java
$ export CLASSPATH =.
$ export CLASSPATH=$CLASSPATH:/home/lab/mm.mysql-
2.0.8/mm.mysql-2.0.8-bin.jar
6. Launch…
$ java ConnectionApp
Mencoba membangun connection ke
‘jdbc:mysql://localhost:3306/MYAPP_DB’ dengan user ‘ekobs’ dan
password ‘j2ee’…..
Success.
Menutup connection.
2.8. History Service
sering ingin untuk mengetahui biaya dari servie terdahulu, dan beberapa
Kemudian servis atau history servis dari kendaraan yang ada pada komputer
memeriksa kendaraan dan menulis kerja yang dilakukan dan spare part yang
Ketika spare part, asesoris dan material dipakai berhubungan dengan servis,
maka semuanya akan dicatat/direcord oleh bagian spare part pada suatu hard
Pada bab ini akan dibahas tentang analisis perangkat lunak (PL) yang akan
pada tahap analisa ini dilakukan pendefinisian dan pemodelan sistem yang akan
DBMS, basis data dan aplikasi ditempatkan pada mesin komputer yang
sama. Pemakai dapat menggunakannya di setiap saat juga hanya satu orang
(single user). Dimana program yang dibuat untuk menampikan history dari
ini berguna untuk servis berikutnya. Sistem ini mengambil kasus di Asia
Motor, Solo.
mekanik dan data-data servis tersebut serta membuat laporan dari servis.
kebutuhan para pengguna yang akan dipenuhi dalam Sistem Informasi ini.
1. Analisa sistem
Login
Melihat riwayat
Service
Laporan Workorder
Pertanggal
Laporan Workorder
Perorder service
Gambar 3.1 Diagram Use Case Pengguna Sistem Informasi riwayat servis kendaraan
3.5. Context Diagram
dari seluruh sistem dan menggambarkan hubungan input dan output antara
sistem yang akan dibuat, diagram ini tidak menekankan pada bagaimana
kebutuhan sistem, yaitu proses yang secara logika dibutuhkan oleh sistem.
dalam sistem
Sistem Informasi
riwayat Service
kendaraan
1 2 3 4 5 6 7 8
Proses
Login Proses Update Proses Proses Work Proses History Mencetak ID Membuat Logout
Data Verifikasi Order Service Customer Laporan.
User
Update Data
Teknisi
dalam sistem, dimana sebelumnya telah diketahui alur data dari sistem yang
a. Administrator A
Pesan Kesalahan
Username dan password
sbg admin Username dan password
sbg supervisior c. Supervisior B
Pesan Kesalahan
Proses D3 Mekanik
verifikasi
user
Username dan password
sbg admin
ID_Customer Data workorder 4
Tanggal periode
7 workorder,
D7 Workorder Data workorder 5
Proses Laporan Proses
Workorder Laporan workorder History
Service
Data Customer 6
Cetakan ID Customer
A
Dari diagram arus data level 0 dapat diturunkan lebih rinci lagi ke dalam
level 1. DAD level 1 akan menjelaskan proses-proses yang terjadi pada sistem.
DAD level 1 terdiri atas dua proses, yaitu proses login administrator dan login
supervisior
Username, Password,
1 Sebagai Admin, yang
valid a. Administrator
Username, Password,
Sebagai Admin
11p
a. Administrator
Login Admin D8 Admin
Detail Data Mekanik
1.1p
D9 Supervisior
Username, Password, Login Detail Jenis layanan
b. Administrator Sebagai Supervisior Supervisior
b. Administrator
Username, Password,
Sebagai Supervisior
yang valid
Dari diagram arus data level 0 dapat diturunkan lebih rinci lagi ke
pada sistem. DAD level 1 terdiri atas enam proses, yaitu proses update Data
2.1p
Data customer yang
Proses Update telah diupdate
D1 Customer Member
Data
Customer Detail Data customer
2.4p
Data jenis layanan yang
ditelah diupdate
Proses Update
Jenis layanan D4 Service
dan harga Detail Jenis layanan
2.5p
Data Sparepart yang
ditelah diupdate
Proses Update D5 Sparepart
Sparepart Detail data Sparepart
Faktur Sparepart
Faktur Service
Merekam Data
Service
Username dan
password sebagai D9 Admin
admin
Pesan error Data Sparepart dan
Data Service
2.6p
Data kendaraan yang
a. Administrator ditelah direkam
Merekam D6 Kendaraan Informasi History Service
Kendaraan Kendaraan,
Data pesan sparepart 3
Data Sparepart
a.Administrator Proses
History
2.5p Data Stok Sparepart
Data Sparepart yang
Service
ditelah direkam
Merekam D5 Sparepart 3.2p
Sparepart Cetakan ID
Proses cek Customer
data
sparepart
D8 Supervisior Input data
Customer
Data pesan sparepart
untuk ID
Data Stok Sparepart
Username dan password
7 5
6 Proses Mencetak ID Data Customer
Pesan error Login Membuat Customer D1 CustomerMember
b. Supervisior Supervisior Username dan password Laporan
Supervisior valid
Username dan password
sebagai supervisior
Laporan Workorder
milik lakukan
Customer Kendaraan Service
Punya
Jenis Motor
Mekanik
Primary Key
Id_mekanik
[PK1]
kerja
Customer Service
Kendaraan Workorder
milik
Primary Key lakukan Id_workorder [PK1]
No_polisi[FK1] lakukan Primary Key
Id_customer Primary Key
No_polisi[PK1] Id_service[FK2] Id_service[PK1]
[PK1] [FK1]
Id_jenismotor [FK1] Id_Mekanik[FK3
Id_customer [FK2]
Punya
Punya
Detailwo Sparepart
Primary Key
Nomor[PK1]
Primary Key
Jenis Motor Id_sparepart
Id_sparepart
[PK1]
Pakai [PK1]
Id_workorder [FK1]
Primary Key
Id_jenismotor
[PK1]
Mekanik
Id_mekanik
[PK1]
Nama
Alamat
Kota Lahir
No_Telp
Pendidikan
kerja
Workorder
Customer Kendaraan Id_workorder [PK1]
lakukan
milik No_polisi[FK1] lakukan Service
Id_customer No_polisi[PK1] Id_service[FK2]
[PK1] Id_jenismotor [FK1] Id_Mekanik[FK3]
Id_service[PK1]
Nama Id_customer Tgl_service
Nama Service
Alamattinggal [FK2] Km
Jenis Service
Kota Keterangan Keluhan_pemakai
Uraian Kerja
Pekerjaan KeteranganWO Ongkos_Kerja
No_ktp
Pekerjaan
Punya
Tgl_lahir
Punya
Detailwo
Sparepart
Jenis Motor Id_workorder [PK1]
Id_jenismotor Nomor[PK2] Pakai Id_sparepart
[PK1] Id_sparepart [PK1]
Jenis Motor [FK1] Nama Sparepart
Warna Jumlah Jenis Sparepart
Model Harga Sparepart
Thn_pembuatn Jumlah
Keterangan
Customer Kendaraan
ID_Customer* No_Polisi*
Nama Workorder ID_Customer**
Alamat ID_Produk**
Kota ID_JenisMotor**
No_KTP ID_WorkOrder* Keterangan
Pekerjaan No_Polisi**
Tgl_Lahir ID_Service**
No_Telp ID_Mekanik
Keterangan Tgl_Servis
Km Jenis Motor
Pajak
Keluhan Pemakai
Kasir
Keterangan ID_JenisMotor*
Jenis
Warna
Service Merk
Thn_Pembuatan
ID_Service* Model
ID_Mekanik** Keterangan
Nama_Service
Jenis_service
Uraian_kerja
Keterangan_kerja
Ongkos_Kerja Detailwo
Id_workorder*
Nomor*
id_sparepart
jumlah Mekanik
Sparepart ID_Mekanik*
Nama
ID_Sparepart* Alamat
Nama_SP Kota
Jenis_SP No_Telp
Qty Pendidikan terakhir
Harga_SP Tgl_Lahir
Keterangan_SP
prosedur rinci serta karakteristik antar muka. Proses ini akan mengubah
antar muka.
Dalam desain database ini terdapat 8 tabel, yakni terdiri dari tabel
Customer, tabel Kendaraan, tabel Workorder, tabel Service, Tabel Sparepart, tabel
Mekanik, tabel jenis motor,tabel detail wo . Secara lebih jelas dapat dilihat pada
Tabel Kendaraan
Tabel ini berisi data-sparepart dan berisi jumlah stok dari sparepart
tersebut:
Nama Field Tipe Data Panjang Keterangan
id_sparepart* Varchar 10 ID Spare part
id_service** Varchar 10 ID Service
nama_SP Varchar 15 Nama Spare part
jumlah Varchar 10 jumlah sparepart
jenis_SP Varchar 10 Jenis Spare part
harga_SP Varchar 15 Harga Spare part
keterangan_SP Varchar 30 Keterangan
Tabel 3.7 Tabel Sparepart
Tabel Mekanik
Tabel detailwo
Tabel ini merupakan tabel detail dari workorder dimana berisi sparepart
dan jumlah yang digunakan oleh workorder:
Bentuk desain input mencakup input data customer, input data produk
input data mekanik, input data sparepart, input kendaraan, input data jenis
Gambar dibawah adalah halaman disain login dimana halaman disain ini
digunakan untuk mengamankan data agar tidak diakses oleh orang lain yang tidak
Bila username, password, yang dimasukkan salah maka akan muncul pesan
kesalahan.
Username :
Password :
Login
1. Cetakan ID Customer
HEADER
ID CUSTOMER
NAMA CUSTOMER
ALAMAT CUSTOMER
2. Dialog input Data Customer
Ubah / Hapus
Home ID_Customer
Nama
Customer
No KTP
Kendaraan Alamat
Kota
Mekanik
No_KTP
Service
Tanggal Lahir
Sparepart
Tambah Reset
HEADER
Home
Customer
No Polisi
Kendaraan ID_Customer
ID Produk
Mekanik
ID Jenis Motor
Service Keterangan
Sparepart
Stok Sparepart
Tambah Reset
4.Dialog input Data Mekanik
HEADER
ID_Mekanik
Nama
Home Tgl_Lahir
Alamat
Customer
Kota
Kendaraan
Pendidikan Akhir
Mekanik No_Telp
service
Keterangan
Sparepart
Stok Sparepart
Tambah Reset
HEADER
Home
ID_Service
Customer Nama Service
Jenis Service
Kendaraan
Uraian Kerja
Mekanik Biaya
Keterangan
Jenis_service
Sparepart
Stok Sparepart
Tambah Reset
6.Dialog input Data Produk/sparepart yang diservice
HEADER
Home
Customer ID_Sparepart
Nama SP
Kendaraan
Jenis Komponen
Mekanik Harga
Keterangan
Jenis_service
Sparepart
Stok Sparepart
Tambah Reset
HEADER
Home
Customer
Nomor
Kendaraan
Id_sparepart
Mekanik Jumlah Stok
Jenis_service
Sparepart
Stok Sparepart
Tambah Reset
8.Dialog input Workorder
HEADER Tanggal Service
ID_Workorder
Home
No_Polisi
ID_Service
Workorder
KM
Lihat Stok SP Keluhan Pemakai:
Lihat History
Keterangan:
RP
HEADER
RP
Submit Reset
Logout
Faktur Sparepart, desain output faktur service, desain laporan workorder sparepart
Tanggal HEADER
HEADER
Tanggal
Nama
Nama
IMPLEMENTASI SISTEM
Pada sistem ini terdapat 2 user yaitu Admin, dan Supervisior. Admin
servis, melihat history atau riwayat servis dari kendaraan, mencetak id card
Spesifikasi Software
3. Jakarta-tomcat-5.0.16
4. SQLyog .
5. mysql-5.0.16-win32
Spesifikasi Hardware
2. Memory 512 MB
3. Harddisk 40 GB
IV.3 Koneksi
sebagai berikut :
<%
boolean ada_kesalahan = false;
Connection koneksi = null;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (Exception ex) {
ada_kesalahan = true;
}
if (!ada_kesalahan) {
// Bentuk koneksi
koneksi = null;
try {
koneksi = DriverManager.getConnection(
"jdbc:mysql://localhost/history",
"root", "diwa");
}
catch (Exception ex) {
ada_kesalahan = true;
}
}
if (ada_kesalahan) {
String msg = "Database tak dapat dibuka";
response.sendRedirect("info.jsp?msg=" + msg);
}
out.println(“Kesalahan: “ +ex);
ada_kesalahan = true;
kesalahan. Penyataan:
Pernyataan:
try {
koneksi =DriverManager.getConnection("jdbc:mysql://localhost/history",
root","diwa");
}
catch (Exception ex) {
ada_kesalahan = true;
}
password diwa.
script koneksi dibuat dalam sebuah file tersendiri yaitu koneksi.jsp. jika
sistem akan melakukan koneksi dengan Database maka file ini akan
dipanggil. Pendeklerasian yang digunakan untuk memanggil koneksi ini
User interface ini adalah implementasi dari proses modeling yang ada.
Proses login ini harus dilakukan oleh semua user sebelum melakukan
hak akses nya. User terlebih dahulu akan memilih menu login sesuai dengan
adalah user name dan password. Jika data login tidak sesuai, maka aplikasi
tidak bisa digunakan oleh user. Berikut ini adalah user interface halaman
login admin :
Gambar IV.2 Gambar user interface proses login Admin
<%
String pemakaix = gantiKosong(request.getParameter("pemakai"));
String sandi = gantiKosong(request.getParameter("sandi"));
if (pemakaix.equals("") || sandi.equals(""))
{out.println("<body bgcolor=\"#FFFFFF\"><script language=\"JavaScript\">alert(\"Maaf Ada Data Yang
Kosong!!!!!\");history.back()</script></body>");}
boolean ada_kesalahan = false;
String data_username = "";
String data_password = "";
if (!ada_kesalahan)
{
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery("SELECT nama,password FROM pemakai " +
"WHERE nama = '" + pemakaix + "'");
}
catch (Exception ex)
{
ada_kesalahan = true;
}
if (!ada_kesalahan)
{
try {
if (hasilQuery.next())
{
data_username = hasilQuery.getString("nama");
data_password = hasilQuery.getString("password");
}
}
catch (Exception ex)
{ ada_kesalahan = true; }
}
if((!pemakaix.equals(data_username)) || (!sandi.equals(data_password)))
{out.println("<body bgcolor=\"#FFFFFF\"><script language=\"JavaScript\">alert(\"Sorry Anda Tidak
Berhak Akses!!!!!\");history.back()</script></body>");}
}
}
%>
halaman utama untuk admin. Gambar VI.3 adalah Gambar user interface
halaman admin.
Pada user interface halaman admin ini, ada beberapa menu yang di
untuk melihat history customer, menu untuk mebuat laporan workorder baik
harian maupun bulanan, dan menu untuk menambah dan mengubah data.
jika id customer atau kendaraan itu belum terdaftar maka akan muncul
pada gambar IV.5 dan data dari kendaraan terlihat pada gambar IV.6.
Gambar IV.5 Gambar untuk melihat data pelanggan
Kode program untuk menghasilkan user interface pada gambar
<%
hasilQuery = stm.executeQuery( "SELECT id_customer,
nama,alamattinggal,kota,no_ktp,pekerjaan,tgl_lahir,no_telp,keterangancustomer FROM customer LIMIT "+
currentRs +",5");
while (rs.next())
{ out.println();
while (hasilQuery.next())
{
String id_customer = hasilQuery.getString("id_customer");
String nama = hasilQuery.getString("nama");
String alamattinggal = hasilQuery.getString("alamattinggal");
String kota = hasilQuery.getString("kota");
String no_ktp = hasilQuery.getString("no_ktp");
String pekerjaan = hasilQuery.getString("pekerjaan");
String tgl_lahir = hasilQuery.getString("tgl_lahir");
String no_telp = hasilQuery.getString("no_telp");
String tgl_lengkap = "Tak tercatat";
if (tgl_lahir != null) {
// Ambil data tanggal, bulan, tahun
String tahun = tgl_lahir.substring(0,4);
String bulan = tgl_lahir.substring(5,7);
String tanggal = tgl_lahir.substring(8);
tgl_lengkap = tanggal + "/" + bulan + "/" + tahun;
}
out.println("</TD><TD><A HREF = \"workorder2.jsp?kodeid="+ id_customer + "\">"+ id_customer
+"</A>"+ " " +
"</TD><TD>" + nama +
"</TD><TD>" + alamattinggal +
"</TD><TD>" + kota +
"</TD><TD>" + no_ktp +
"</TD><TD>" + pekerjaan +
"</TD><TD>" + tgl_lengkap +
"</TD><TD>" + no_telp +
"</TD></TR>");
} }
out.println("</TABLE>");
%>
Gambar IV.6 Gambar untuk melihat data kendaraan
Kode program ini untuk menghasilkan user interface melihat data
<%
Statement stm = con.createStatement();
hasilQuery = stm.executeQuery(
"SELECT no_polisi, k.id_customer,c.nama,k.id_jenismotor,j.jenis FROM kendaraan k,customer
c,jenismotor j WHERE k.id_customer=c.id_customer AND k.id_jenismotor=j.id_jenismotor LIMIT "+
currentRs +",5");
while (rs.next())
{
out.println();
while (hasilQuery.next())
{
String no_polisi = hasilQuery.getString("k.no_polisi");
String id_customer = hasilQuery.getString("k.id_customer");
String nama = hasilQuery.getString("c.nama");
String id_jenismotor = hasilQuery.getString("k.id_jenismotor");
String jenis = hasilQuery.getString("j.jenis");
ditampilkan lagi data customer atau data dari kendaraan tersebut kemudian
akan dilakukan servis dimana pertama admin akan memasukan km dan
keluhan pemakai seperti terlihat pada gambar IV.7 dimana pada form ini
atas adalah:
<%
String kodeid = gantiKosong(request.getParameter("kodeid"));
if (kodeid == "") {
String msg = "Salah pemakaian";
response.sendRedirect("info.jsp?msg=" + msg);
}
String km_max="";
String id_customer ="";
String id_jenismotor ="";
String jenis ="";
String nama ="";
if (!ada_kesalahan)
{
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
String strQuery =
"SELECT k.no_polisi,k.id_customer,c.nama,k.id_jenismotor,j.jenis FROM kendaraan k, jenismotor
j,customer c WHERE k.id_jenismotor=j.id_jenismotor AND k.id_customer=c.id_customer AND k.no_polisi =
\"" + kodeid + "\"";
hasilQuery = stm.executeQuery(strQuery);
}
catch (Exception ex)
{
ada_kesalahan = true;
}
if (!ada_kesalahan)
{
try
{ if (hasilQuery.next())
{
id_customer = hasilQuery.getString("k.id_customer");
nama = hasilQuery.getString("c.nama");
id_jenismotor = hasilQuery.getString("k.id_jenismotor");
jenis = hasilQuery.getString("j.jenis");
}
}
catch (Exception ex)
{
ada_kesalahan = true;
}
}
}
}
if (ada_kesalahan) {
String msg = "Ada kesalahan dalam mengakses database";
response.sendRedirect("info.jsp?msg=" + msg);
}
if (!ada_kesalahan)
{
try {
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery(
"SELECT max(km) as maxKM FROM workorder WHERE no_polisi='"+kodeid+"'" +
"ORDER BY id_workorder");
} catch (Exception ex)
{
out.println("Kesalahan kowe: " + ex);
ada_kesalahan = true;
}
if (!ada_kesalahan)
{
try { while (hasilQuery.next()) {
km_max = hasilQuery.getString("maxKM");
}
}
catch (Exception ex)
{
out.println("Kesalahan iki neng: " + ex);
}
}
}
}
%>
<%
int jml = Integer.valueOf(request.getParameter("jml")).intValue();
String [] id_sparepart = new String [jml];
String [] jumlah = new String [jml];
for (int j = 0; j < jml; j++)
{ id_sparepart [j] = request.getParameter("id_sparepart_"+j);
jumlah [j] = request.getParameter("jumlah_"+j);
}
int jmlh = Integer.valueOf(request.getParameter("jml")).intValue();
String no_polisi = request.getParameter("no_polisi");
String idservice = gantiKosong(request.getParameter("idservice"));
String mekanik1 = gantiKosong(request.getParameter("mekanik1"));
String km = request.getParameter("km");
String keluhan_pemakai = request.getParameter("keluhan_pemakai");
String keteranganwo = gantiKosong(request.getParameter("keteranganwo"));
String idbrikut="";
if ( idservice.equals("0") || mekanik1.equals("0") || keteranganwo.equals(""))
{
out.println("<body bgcolor=\"#EAF4FF\"><script language=\"JavaScript\">alert(\"Ada Data Yang perlu di
isi!!!!!\");history.back()</script></body>");
}
boolean ada_kesalahan = false;
int hasil_penyisipan1 = 0;
int hasil_penyisipan2 = 0;
int hasil_penyisipan3 = 0;
if (!ada_kesalahan)
{
try
{ Statement stm = koneksi.createStatement();
String strQuery =
"INSERT INTO workorder
(no_polisi,id_service,id_mekanik,tgl_servis,km,keluhan_pemakai,keteranganwo) " +
"VALUES (" + "\'" + no_polisi + "\'," +
"\'" + idservice + "\'," +
"\'" + mekanik1 + "\'," +
"curdate()," +
"\'" + km + "\'," +
"\'" + keluhan_pemakai + "\'," +
"\'" + keteranganwo + "\'" + ")";
hasil_penyisipan1 = stm.executeUpdate(strQuery);
}
catch (Exception ex)
{ ada_kesalahan = true; }
}
}
}
// ---- Rekam di tabel detail WO
if (!ada_kesalahan)
{
try {
Statement stm = koneksi.createStatement();
for (int i = 0; i < jmlh; i++) {
if (!id_sparepart[i].equals(""))
{ String strQuery = "INSERT INTO detailwo " +
"( id_workorder,nomor,id_sparepart) " +
"VALUES (" +
"\"" + idbrikut + "\"," +
"\"" + String.valueOf(i+1) + "\"," +
"\"" + id_sparepart[i] + "\"" +
")";
hasil_penyisipan2 = stm.executeUpdate(strQuery);
} }
}
catch (Exception ex)
{
ada_kesalahan = true;
}
}
try
{
Statement stm = koneksi.createStatement();
for (int j = 0; j < jmlh; j++)
{
String strQuery2 = "UPDATE detailwo SET " + " jumlah = \"" + jumlah[j] + "\"" +
" WHERE nomor = \"" + (j+1) + "\" AND id_workorder= \"" + idbrikut + "\"";
hasil_penyisipan3 = stm.executeUpdate(strQuery2);
}}
catch (Exception ex)
{
ada_kesalahan = true;
}}
if (!ada_kesalahan &&
(hasil_penyisipan1 >0)
)
out.print("<br>");
out.print("Data sudah disimpan ");
%>
Penggunaan sparepart pada workorder ini mempengaruhi jumlah dari
DELIMITER $$;
DROP TRIGGER `history`.`d_jual_after_insert`$$
create trigger `d_jual_after_insert` AFTER UPDATE on `detailwo`
for each row BEGIN
update sparepart set jumlah = jumlah-NEW.jumlah where id_sparepart=NEW.id_sparepart;
END;
$$
DELIMITER ;$$
Setelah data ditambahkan maka data akan ditampilkan lagi dan kemudian
if (!ada_kesalahan) {
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery("SELECT id_customer,nama,alamattinggal,no_ktp FROM customer
WHERE id_customer ='"+kode+"'");
}
catch (Exception ex) {
out.println("Kesalahan: " + ex);
ada_kesalahan = true; }
if (!ada_kesalahan) {
try {
while (hasilQuery.next())
{ id_customer = hasilQuery.getString("id_customer");
nama = hasilQuery.getString("nama");
alamattinggal = hasilQuery.getString("alamattinggal");
no_ktp = hasilQuery.getString("no_ktp");
} }
catch (Exception ex)
{ out.println("Kesalahan: " + ex);
ada_kesalahan = true; }
} } }
%>
akan mengurangi jumlah stok dari sparepart. Bisa dilihat pada gambar
Gambar IV.12
hasilQuery = stmvd.executeQuery(
"SELECT id_sparepart,nama_sparepart,jenis_sparepart,harga_sparepart,jumlah FROM sparepart
LIMIT "+ currentRs +",5");
out.println("<TABLE BORDER=\"1\">");
out.println(
"<TR><TH>ID SP</TH><TH>NAMA SP</TH><TH>JENIS SP</TH><TH>HARGA
SP</TH><TH>STOK</TH></TR>");
while (rs.next())
{
out.println();
while (hasilQuery.next())
{ String id_sparepart = hasilQuery.getString("id_sparepart");
String nama = hasilQuery.getString("nama_sparepart");
String jenis = hasilQuery.getString("jenis_sparepart");
String harga = hasilQuery.getString("harga_sparepart");
String jumlah = hasilQuery.getString("jumlah");
out.println("<TR><TD>" + id_sparepart +
"</TD><TD>" + nama +
"</TD><TD>" + jenis +
"</TD><TD>" + harga +
"</TD><TD>" + jumlah +
"</TD></TR>");
}}
out.println("</TABLE>");
%>
servis dari kendaraan tertentu dimana terdapat dua sub menu yaitu pencarian
seperti yang terlihat pada gambar Gambar IV.13 disini bisa dilihat history
dari suatu kendaraan tertentu pada tanggal tertentu, bisa dilihat pada gambar
Gambar IV.14.
Gambar IV.13 Gambar History kendaraan
<%
String kode = gantiKosong(request.getParameter("kode"));
if (kode == "") {
String msg = "Salah pemakaian";
response.sendRedirect("info.jsp?msg=" + msg);
}
String kodeid = ""; String tglawal = ""; String tglakhir = ""; String no_polisi ="";
String jenis =""; String nama ="";
if (!ada_kesalahan)
{
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
String strQuery =
"SELECT kend.no_polisi,j.jenis,cust.nama FROM kendaraan kend, customer cust, jenismotor j WHERE
kend.id_customer=cust.id_customer AND kend.id_jenismotor=j.id_jenismotor AND kend.no_polisi=
'"+kode+"'";
hasilQuery = stm.executeQuery(strQuery);
}
catch (Exception ex) { ada_kesalahan = true; }
if (!ada_kesalahan)
{
try
{
if (hasilQuery.next())
{
no_polisi = hasilQuery.getString("kend.no_polisi");
jenis = hasilQuery.getString("j.jenis");
nama = hasilQuery.getString("cust.nama");
}
}
catch (Exception ex)
{ ada_kesalahan = true } }
}
}
if (ada_kesalahan) {
String msg = "Ada kesalahan dalam mengakses database";
response.sendRedirect("info.jsp?msg=" + msg);
}
kodeid = gantiKosong(request.getParameter("kode"));
tglawal = gantiKosong(request.getParameter("dateawal"));
tglakhir = gantiKosong(request.getParameter("dateakhir"));
if (!ada_kesalahan)
{
ResultSet hasilQuery = null;
try
{
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery("SELECT
w.id_workorder,s.nama_service,w.tgl_servis,w.km,w.keluhan_pemakai,w.keteranganwo FROM workorder
w,service s WHERE w.id_service=s.id_service AND w.no_polisi= '"+kodeid+"' group by w.id_workorder");
}
catch (Exception ex)
{ out.println("Kesalahan: " + ex);
ada_kesalahan = true; }
if (!ada_kesalahan)
{
out.println("<TABLE BORDER=\"1\">");
out.println(
"<TR><TH>ID WO</TH><TH>NAMA SERV</TH><TH>TGL
SERV</TH><TH>KM</TH><TH>KELUHAN</TH><TH>KET</TH><TH>SP</TH></TR>");
try
{
while (hasilQuery.next())
{
String id_workorder = hasilQuery.getString("w.id_workorder");
String nama_service = hasilQuery.getString("s.nama_service");
String tgl_servis = hasilQuery.getString("w.tgl_servis");
String km = hasilQuery.getString("w.km");
String keluhan_pemakai = hasilQuery.getString("w.keluhan_pemakai");
String keteranganwo = hasilQuery.getString("w.keteranganwo");
String tgl_lengkap = "Tak tercatat";
if (tgl_servis != null) {
// Ambil data tanggal, bulan, tahun
String tahun = tgl_servis.substring(0,4);
String bulan = tgl_servis.substring(5,7);
String tanggal = tgl_servis.substring(8);
tgl_lengkap = tanggal + "/" + bulan + "/" + tahun;
}
out.println("<TR><TD>" + id_workorder +
"</TD><TD>" + nama_service +
"</TD><TD>" + tgl_lengkap +
"</TD><TD>" + km +
"</TD><TD>" + keluhan_pemakai +
"</TD><TD>" + keteranganwo +
"</TD><TD> <A HREF = \"historynopoldetail.jsp?kode="+ id_workorder + "\" > [<em>
Detail </em>] </A>" + "</TD></TR>");
} }
catch (Exception ex)
{
out.println("Kesalahan: " + ex);
}
out.println("</TABLE>");
}
}
}
%>
Data history dari kendaraan itu bisa dilihat berdasarkan tanggal
gambar dari history kendaraan pada tanggal tertentu yaitu dapat dilihat pada
Setelah daftar dari history di tampilkan kita melihat detail dari history
bermotor itu yang meliputi nomor polisi, nama pemiliknya, jenis servicenya,
jumlahnya dan total biaya yang harus dibayar pelanggan. Gambar IV.15
tersebut yaitu:
<%
String kode = gantiKosong(request.getParameter("kode"));
if (kode == "") {
String msg = "Salah pemakaian";
response.sendRedirect("info.jsp?msg=" + msg);
}
String id_workorderx =""; String no_polisi =""; String jenis =""; String namax ="";
if (!ada_kesalahan)
{
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
String strQuery =
"SELECT w.id_workorder,kend.no_polisi,j.jenis,cust.nama FROM workorder w,kendaraan kend, customer cust,
jenismotor j WHERE kend.id_customer=cust.id_customer AND kend.id_jenismotor=j.id_jenismotor AND
kend.no_polisi=w.no_polisi AND w.id_workorder= '"+kode+"'";
hasilQuery = stm.executeQuery(strQuery);
}
catch (Exception ex)
{ ada_kesalahan = true; }
if (!ada_kesalahan)
{ try
{
if (hasilQuery.next())
{
id_workorderx = hasilQuery.getString("w.id_workorder");
no_polisi = hasilQuery.getString("kend.no_polisi");
jenis = hasilQuery.getString("j.jenis");
namax = hasilQuery.getString("cust.nama");
}
}
catch (Exception ex)
{ ada_kesalahan = true; }
} }
if (ada_kesalahan) {
String msg = "Ada kesalahan dalam mengakses database";
response.sendRedirect("info.jsp?msg=" + msg);
}
String id_workorder =""; String nama_service=""; String tgl_servis=""; String km=""; String total_biaya="";
String keluhan_pemakai=""; String keteranganwo=""; String tgl_lengkap="";
if (!ada_kesalahan)
{ try
{
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery("SELECT
w.id_workorder,s.nama_service,w.tgl_servis,w.km,w.keluhan_pemakai,w.keteranganwo FROM workorder
w,service s WHERE w.id_service=s.id_service AND w.id_workorder= '"+kodeid+"'");
}
catch (Exception ex)
{
out.println("Kesalahan: " + ex);
ada_kesalahan = true;
}
if (!ada_kesalahan)
{
try
{
while (hasilQuery.next())
{
id_workorder = hasilQuery.getString("w.id_workorder");
nama_service = hasilQuery.getString("s.nama_service");
tgl_servis = hasilQuery.getString("w.tgl_servis");
km = hasilQuery.getString("w.km");
nama_service = hasilQuery.getString("s.nama_service");
keluhan_pemakai = hasilQuery.getString("w.keluhan_pemakai");
keteranganwo = hasilQuery.getString("w.keteranganwo");
tgl_lengkap = "Tak tercatat";
if (tgl_servis != null)
{
String tahun = tgl_servis.substring(0,4);
String bulan = tgl_servis.substring(5,7);
String tanggal = tgl_servis.substring(8);
tgl_lengkap = tanggal + "/" + bulan + "/" + tahun;
}
}
}
catch (Exception ex)
{ out.println("Kesalahan: " + ex); }
out.println("</TABLE>");
}
}
String kodeid2 = gantiKosong(request.getParameter("kode"));
int totalharga = 0;
int totalsemua = 0;
if (!ada_kesalahan)
{
try
{
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery("SELECT d.id_sparepart,s.nama_sparepart,d.jumlah,s.harga_sparepart FROM
workorder w,detailwo d,sparepart s WHERE d.id_workorder=w.id_workorder AND
d.id_sparepart=s.id_sparepart AND w.id_workorder= '"+kodeid2+"' ORDER BY d.nomor");
}
catch (Exception ex)
{
out.println("Kesalahan: " + ex);
ada_kesalahan = true;
}
if (!ada_kesalahan)
{
out.println("<TABLE BORDER=\"1\">");
out.println(
"<TR><TH>ID_SPAREPART</TH><TH>NAMA
SPAREPART</TH><TH>JUMLAH</TH><TH>HARGA</TH><TH>TOTAL</TH></TR>");
try
{
while (hasilQuery.next())
{
String id_sparepart = hasilQuery.getString("d.id_sparepart");
String nama = hasilQuery.getString("s.nama_sparepart");
String jumlah = hasilQuery.getString("d.jumlah");
String harga = hasilQuery.getString("s.harga_sparepart");
String bil = hasilQuery.getString("s.harga_sparepart");
int vindy = Integer.valueOf(bil).intValue();
int diwa = Integer.valueOf(jumlah).intValue();
totalharga=(vindy*diwa);
totalsemua=totalsemua+totalharga;
out.println( "</TD><TD>" + id_sparepart +
"</TD><TD>" + nama +
"</TD><TD>" + jumlah +
"</TD><TD>" + harga +
"</TD><TD>" + totalharga +
"</TD></TR>");
}
}
catch (Exception ex)
{ out.println("Kesalahan: " + ex }
out.println("</TABLE>");
}
}
%>
Sedangkan yang searching menggunakan id customer kode
User Interface menambah data ini memiliki beberapa sub menu seperti
<%
if (nama.equals("") ||
alamattinggal.equals("") ||
kota.equals("") ||
no_ktp.equals("") ||
pekerjaan.equals("") ||
tgl_lahir.equals("") ||
no_telp.equals("") ||
keterangancustomer.equals(""))
{
out.println("<body bgcolor=\"#EAF4FF\"><script language=\"JavaScript\">alert(\"Ada Data Yang
perlu di isi!!!!!\");history.back()</script></body>");
}
out.println("Nama: <B>" + request.getParameter("nama") + "</B><BR>");
out.println("<HR>");
int hasil_penyisipan = 0;
if (!ada_kesalahan) {
try {
Statement stm = koneksi.createStatement();
String strQuery =
"INSERT INTO customer (nama,alamattinggal,kota,no_ktp,pekerjaan,
tgl_lahir,no_telp,keterangancustomer) " +
"VALUES (" +
"\'" + request.getParameter("nama") + "\'," +
"\'" + request.getParameter("alamattinggal") + "\'," +
"\'" + request.getParameter("kota") + "\'," +
"\'" + request.getParameter("no_ktp") + "\'," +
"\'" + request.getParameter("pekerjaan") + "\'," +
"\'" + tgl_lahir + "\'," +
"\'" + request.getParameter("no_telp") + "\'," +
"\'" + request.getParameter("keterangancustomer") + "\'" +
")";
hasil_penyisipan = stm.executeUpdate(strQuery);
}
catch (Exception ex) {
ada_kesalahan = true; }
if (hasil_penyisipan > 0)
out.print("Data telah disimpan" + "<BR>");
else
ada_kesalahan = true;
}
if (ada_kesalahan)
out.print("Gagal menyimpan");
%>
Untuk menambah data kendaraan, jenis motor, mekanik, service dan
User Interface Melihat dan mengedit Data ini memiliki beberapa sub
sparepart. Pada gambar IV.17 merupakan user interface untuk melihat data
pelanggan:
Gambar IV.17 Gambar Lihat Data Customer
Kode Program untuk menampilkan data customer ini yaitu:
<%
Statement stm = con.createStatement();
hasilQuery = stm.executeQuery(
"SELECT id_customer,
nama,alamattinggal,kota,no_ktp,pekerjaan,tgl_lahir,no_telp,keterangancustomer FROM customer " +
"LIMIT "+ currentRs +",5");
out.println("<TABLE BORDER=\"1\">");
out.println(
"<TR><TH>KODE</TH><TH>NAMA</TH><TH>ALAMAT
TINGGAL</TH><TH>KOTA</TH><TH>NO KTP</TH><TH>PEKERJAAN</TH><TH>TGL
LAHIR</TH><TH>NO TELEPON</TH><TH>EDIT</TH></TR>");
while (hasilQuery.next())
{
String id_customer = hasilQuery.getString("id_customer");
String nama = hasilQuery.getString("nama");
String alamattinggal = hasilQuery.getString("alamattinggal");
String kota = hasilQuery.getString("kota");
String no_ktp = hasilQuery.getString("no_ktp");
String pekerjaan = hasilQuery.getString("pekerjaan");
String tgl_lahir = hasilQuery.getString("tgl_lahir");
String no_telp = hasilQuery.getString("no_telp");
String tgl_lengkap = "Tak tercatat";
if (tgl_lahir != null) {
//Ambil data tanggal, bulan, tahun
String tahun = tgl_lahir.substring(0,4);
String bulan = tgl_lahir.substring(5,7);
String tanggal = tgl_lahir.substring(8);
tgl_lengkap = tanggal + "/" + bulan + "/" + tahun;
}
out.println("<TR><TD>" + id_customer + "</TD><TD>" + nama + "</TD><TD>" + alamattinggal +
"</TD><TD>" + kota + "</TD><TD>" + no_ktp + "</TD><TD>" + pekerjaan +
"</TD><TD>" + tgl_lengkap + "</TD><TD>" + no_telp +
"</TD><TD> <A HREF = \"editpelangganubah.jsp?kode="+ id_customer + "\" >Ubah</A>"+ " / " +
"<A HREF = \"hpspelanggan.jsp?kode=" + id_customer + "\" >Hapus</A>"+
"</TD></TR>");
}
out.println("</TABLE>");
%>
Pada gambar diatas ditampilkan data dari pelanggan, dan terdapat link
untuk mengubah data tersebut dan link untuk menghapus data pelanggan.
Ketika dipilih data ubah maka akan ditampilkan seperti pada gambar
Disini ditampilkan data dari pelanggan yang dipilih, data akan dirubah
<%
// Validasi Data
String kode = request.getParameter("kode");
if (kode == null) {
String msg = "Salah pemakaian";
response.sendRedirect("info.jsp?msg=" + msg);
}
kode = kode.toUpperCase(); // Ubah ke kapital
String strBilangan2 = request.getParameter("no_telp");
if (strBilangan2 != null)
{ int bilangan2;
try {
bilangan2 = Integer.valueOf(strBilangan2).intValue();
}
catch (Throwable t)
{
out.println("<body bgcolor=\"#FFFFFF\"><script language=\"JavaScript\">alert(\"Format data anda
salah!!!!!\");history.back()</script></body>");
} }
}
out.println("Kode: <B>" + request.getParameter("kode") +
"</B><BR>");
out.println("Nama: <B>" + request.getParameter("nama") +
"</B><BR>");
int hasil_perekaman = 0;
if (!ada_kesalahan) {
try {
Statement stm = koneksi.createStatement();
String strQuery =
"UPDATE customer SET " +
" nama = \"" + nama + "\", " +
" alamattinggal = \"" + alamattinggal + "\", " +
" kota = \"" + kota + "\", " +
" no_ktp = \"" + no_ktp + "\", " +
" pekerjaan = \"" + pekerjaan + "\", " +
" tgl_lahir = \"" + tgl_lahir + "\", " +
" no_telp = \"" + no_telp + "\", " +
" keterangancustomer = \"" + keterangancustomer + "\"" +
" WHERE id_customer = \"" + kode + "\"";
hasil_perekaman = stm.executeUpdate(strQuery);
}
catch (Exception ex) {
ada_kesalahan = true;
}
if (hasil_perekaman > 0)
out.print("Data telah diubah");
else
ada_kesalahan = true;
} }
if (ada_kesalahan)
out.print("Gagal menyimpan");
%>
Sedangkan untuk mebghapus data menggunakan seperti gambar
dibawah ini:
Gambar IV.19 Gambar Hapus Data Customer
<%
out.println("Kode: <B>" + request.getParameter("kode") +
"</B><BR>");
out.println("Nama: <B>" + request.getParameter("nama") +
"</B><BR>");
out.println("<HR>");
if (!ada_kesalahan) {
try {
Statement stm = koneksi.createStatement();
String strQuery =
"DELETE FROM customer " +
" WHERE id_customer = \"" + kode + "\"";
stm.executeUpdate(strQuery);
out.print("Data telah dihapus");
}
catch (Exception ex) {
ada_kesalahan = true;
}
}
if (ada_kesalahan)
out.print("Gagal menghapus");
%>
Untuk melihat data jenis motor, kendaraan, mekanik, service, sparepart kode
programnya tidak jauh berbeda dengan untuk melihat data pelanggan pada
Gambar IV.17 sedangkan untuk mengedit data data jenis motor, kendaraan,
mekanik, service, sparepart seperti pada gambar IV.18 kode programnya
menu seperti melihat laporan harian, laporan bulanan dan laporan perservis. User
User interface untuk melihat laporan harian dapat dilihat pada gambar
dibawah ini:
Gambar IV.21 Gambar User Interface Laporan Harian
<%
boolean ada_kesalahan = false;
String tanggal = gantiKosong(request.getParameter("tanggal"));
String bulan = gantiKosong(request.getParameter("bulan"));
String thn = gantiKosong(request.getParameter("tahun"));
//String tgl = thn+"-"+bulan+"-"+tanggal;
String tgl = gantiKosong(request.getParameter("date"));
long totalharga = 0;
long totalsemua = 0;
long totalspserv = 0;
if (!ada_kesalahan) {
ResultSet hasilQuery = null;
try {
Statement stm = koneksi.createStatement();
hasilQuery = stm.executeQuery(
"SELECT w.id_workorder,w.no_polisi,w.id_service,serv.nama_service,serv.ongkos_kerja,w.km,
w.keluhan_pemakai,w.keteranganwo,s.harga_sparepart,d.jumlah
FROM workorder w, sparepart s, detailwo d, service serv
WHERE w.id_workorder=d.id_workorder AND d.id_sparepart=s.id_sparepart AND
w.id_service=serv.id_service AND w.tgl_servis='"+tgl+"' group by w.id_workorder");
}
catch (Exception ex) {
out.println("Kesalahan: " + ex);
ada_kesalahan = true;
}
if (!ada_kesalahan) {
out.println(
"<TR><TH>Id Wo</TH><TH>Nopol</TH><TH>Nama Serv</TH><TH>Harga
Serv</TH><TH>Km</TH><TH>Keterangan</TH><TH>Keluhan</TH><TH>Biaya SP</TH><TH>Total
Biaya</TH></TR>");
try {
while (hasilQuery.next())
{
String id_workorder = hasilQuery.getString("w.id_workorder");
String no_polisi = hasilQuery.getString("w.no_polisi");
String nama_service = hasilQuery.getString("serv.nama_service");
String ongkos_kerja = hasilQuery.getString("serv.ongkos_kerja");
String km = hasilQuery.getString("w.km");
String keluhan_pemakai = hasilQuery.getString("w.keluhan_pemakai");
String keteranganwo = hasilQuery.getString("w.keteranganwo");
String hargasp = hasilQuery.getString("s.harga_sparepart");
String jumlahsp = hasilQuery.getString("d.jumlah");
int vindy = Integer.valueOf(hargasp).intValue();
int diwa = Integer.valueOf(jumlahsp).intValue();
int ongkos = Integer.valueOf(ongkos_kerja).intValue();
totalharga=(vindy*diwa);
totalspserv=totalharga+ongkos;
totalsemua=totalsemua+totalspserv;
out.println(
"<TR><TD>" + id_workorder + "</TD><TD>" + no_polisi + "</TD><TD>" + nama_service +
"</TD><TD>Rp." + ongkos_kerja + "</TD><TD>" + km + "</TD><TD>" + keteranganwo + "</TD><TD>" +
keluhan_pemakai + "</TD><TD>Rp." + totalharga + "</TD><TD>Rp." + totalspserv + "</TD>");
}}
catch (Exception ex)
{
out.println("Kesalahan: " + ex);
ada_kesalahan = true; } }
}
}
%>
harian, perbedaannya inputnya tanggal awal bulan dan tanggal awal bulan.
dalam sehari atau sebulan. Laporan ini juga bisa ditampilkan seperti pada
User interface untuk melihat laporan harian dapat dilihat pada gambar
dibawah ini:
terjadi, dimana terdapat 4 jenis servis yaitu servis gratis, servis berkala,
servis ringan dan servis berat. User interface untuk melihat interface ini
Secara umum, sistem informasi perangkat lunak ini sudah dapat berjalan
berikut.
servis sebelumnya.
1. Sistem informasi ini tidak memiliki fasilitas laporan dalam bentuk grafis
ke supervisior.
Manfaat yang bisa diperoleh dengan adanya sistem ini adalah sebagai berikut
PENUTUP
VI.1 Kesimpulan
2. Sistem ini mampu menginformasikan kondisi setiap motor pada saat servis
sebelumnya.
pun dan dalam waktu yang cepat akan tetapi sistem ini masih memiliki
untuk direktur..
VI.2 Saran