PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG...
Transcript of PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG...
PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG
BERBASIS SMS GATEWAY PADA PD. GUNA PRATAMA
Skripsi
Sebagai Salah Satu Syarat Untuk Memperoleh Gelar
Sarjana Komputer
RANDI RAHMADI
104091002806
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA
2010
i
PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG BERBASIS SMS GATEWAY
PADA PD. GUNA PRATAMA
SkripsiSebagai Salah Satu Syarat Untuk Memperoleh Gelar
Sarjana KomputerFakultas Sains dan Teknologi
Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta
OlehRandi Rahmadi104091002806
PROGRAM STUDI SISTEM INFORMASIFAKULTAS SAINS DAN TEKNOLOGIUNIVERSITAS ISLAM NEGERI (UIN)
SYARIF HIDAYATULLAHJAKARTA
2010 M / 1431 H
ii
PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG BERBASIS SMS GATEWAY
PADA PD. GUNA PRATAMA
Skripsi
Sebagai Salah Satu Syarat Untuk Memperoleh
Gelar Sarjana Komputer
Pada Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh
Randi Rahmadi
104091002806
Menyetujui,
Pembimbing I
Ir. Bakri La Katjong, MT, M.KomNIP. 470 035 764
Pembimbing II
Nia Kumaladewi, MMSI NIP. 150 411 179
Mengetahui,
Ketua Program Studi Teknik Informatika
Yusuf Durachman, M.Sc, MITNIP. 19710522 200604 1 002
iii
PENGESAHAN UJIAN
Skripsi berjudul ”Pembangunan Sistem Informasi Pengiriman Barang Berbasis SMS
Gateway Pada PD. Guna Pratama” yang ditulis oleh Randi Rahmadi, NIM
104091002806 telah diuji dan dinyatakan lulus dalam sidang Munaqosyah Fakultas
Sains dan Teknologi Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta pada
Hari Senin, Tanggal 31 Maret 2010. Skripsi telah diterima sebagai salah satu syarat
untuk memperoleh gelar sarjana strata satu (S1) Program Studi Teknik Informatika.
Jakarta, 31 Maret 2010
Menyetujui,
Penguji I
Husni Teja Sukmana, Ph.DNIP. 150 317 721
Penguji II
Khodijah Hulliyah, M.SiNIP. 150 317 266
Pembimbing I
Ir. Bakri La Katjong, MT, M.KomNIP. 470 035 764
Pembimbing II
Nia Kumaladewi, MMSINIP. 150 411 179
Mengetahui,
Dekan Fakultas Sains dan Teknologi,UIN Syarif Hidayatullah Jakarta
DR. Syopiansyah Jaya Putra, M.SisNIP. 19680117 200112 1 001
Ketua Program Studi Teknik Informatika
Yusuf Durachman, M.Sc, MITNIP. 19710522 200604 1 002
iv
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR
HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI
SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU
LEMBAGA MANAPUN
Jakarta, 31 Maret 2010
Randi Rahmadi 104091002806
v
ABSTRAK
RANDI RAHMADI (104091002806). Pembangunan Sistem Informasi Pengiriman Barang Berbasis SMS Gateway pada PD. Guna Pratama. (Di bawah bimbingan BAKRI LA KATJONG dan NIA KUMALADEWI).
PD. Guna Pratama adalah perusahaan yang bergerak di bidang jasapengiriman barang khususnya pengiriman barang melalui jalur darat, baik kering dan beku. Pada bagian marketing dan penagihan, dalam kegiatannya selalu berhubungan langsung dengan pelanggan, dan dalam pengolahan data ekspedisi atau pengiriman barang masih berbasis file dengan mengunakan Microsoft Office Word dan Microsoft Offiice Excel dan juga masih kurang lengkapnya fitur laporan.
Seiring dengan pesatnya kemajuan teknologi, maka sewajarnya perusahaan harus memberikan pelayanan yang cepat dan tepat agar pelanggan merasa nyaman dan percaya berbisnis dengan perusahaan. Salah satu bidang yang menjadi target dalam perkembangan teknologi adalah kecepatan akses terhadap informasi. SMS (Short Message Service) merupakan teknologi yang sangat diminati dan digunakan oleh masyarakat. Selain karena unggul dalam kepraktisan dan kemudahan dalam penggunaannya, teknologi ini juga hadir dengan tarif yang relatif lebih murah jika dibandingkan berbicara secara langsung dengan nomor yang dituju.
Aplikasi SMS Gateway untuk Sistem Informasi Pengiriman Barang ini merupakan salah satu fasilitas yang memanfaatkan media SMS, fasilitas ini memungkinkan pelanggan dan supir yang telah terdaftar dapat memberikan dan mengakses informasi dengan cepat dan mudah. Dengan adanya aplikasi berbasisSMS Gateway ini diharapkan dapat meningkatkan pelayanan PD. Guna Pratama dan proses pengolahan data pengiriman barang lebih efektif dan efisien.Pembuatan program aplikasi ini menggunakan bahasa pemrograman Javadilengkapi dengan database server MySQL.
Dalam pengembangan sistem ini, penulis menggunakan metodologi RAD (Rapid Application Development) sebagai alur dari pengembangan sistem. Untuk metodologi analisis maupun perancangan sistem, penulis menggunakan pendekatan Object Oriented Analysis (OOA) dan Object Oriented Design (OOD), dengan Unified Modelling Language (UML) sebagai tools dalam analisis maupun perancangannya.
Kata Kunci : Sistem Informasi Pengiriman Barang, PD Guna Pratama, SMS Gateway, Rapid Application Development (RAD), Java, MySQL,Object Oriented Analysis (OOA), Object Oriented Design(OOD), Unified Modelling Language (UML).
vi
KATA PENGANTAR
Puji Syukur penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat
dan karunia-Nya, sehingga penulis dapat menyelesaikan penulisan skripsi yang berjudul :
“PEMBANGUNAN SISTEM INFORMASI PENGIRIMAN BARANG BERBASIS
SMS GATEWAY PADA PD. GUNA PRATAMA” dengan baik. Shalawat serta salam
selalu tercurah kepada Rasulullah SAW yang senantiasa menuntun umatnya hingga seperti
sekarang ini.
Penulisan skripsi ini merupakan salah satu tugas wajib mahasiswa sebagai
persyaratan untuk menempuh gelar Strata 1 (S1) pada Program Studi Teknik Informatika
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Penulis ingin menyampaikan rasa terima kasih kepada seluruh pihak yang telah
membantu sehingga penulisan skripsi ini dapat diselesaikan. Ucapan terima kasih dan
penghargaan yang sebesar-besarnya penulis sampaikan kepada:
1. Bapak Dr. Sopiyansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains dan
Teknologi, UIN Syarif Hidayatullah Jakarta.
2. Bapak Yusuf Durrachman, M.Sc, MIT, selaku Ketua Program Studi Teknik
Informatika, Ibu Viva Arifin, MMSI, selaku Sekretaris Program Studi Teknik
Informatika dan seluruh pihak akademik, baik tingkat program studi maupun tingkat
fakultas.
vii
3. Bapak Bakri La Katjong, MT, M.Kom dan Ibu Nia Kumaladewi, MMSI, selaku dosen
pembimbing skripsi yang telah memberikan bimbingan, masukan dan dorongan serta
waktunya kepada penulis.
4. Ayah Djali Ismanto dan Ibu Mardiningsih serta Kakak dan Adik tercinta yang telah
memberikan doa, dorongan baik moril maupun materil, dan motivasi sebesar-besarnya
kepada penulis.
5. Bapak Marciano Pratama Suteja, selaku Manajer PD. Guna Pratama yang telah
memberikan kesempatan kepada penulis untuk melakukan penelitian.
6. Seluruh staff PD. Guna Pratama yang telah membantu penulis memberikan data dan
informasi yang penulis butuhkan dalam penulisan skripsi ini.
7. Seluruh teman-temanku, khususnya TI-A 2004 yang selalu memberikan semangat
kepada penulis serta kebersamaannya selama ini. Andrian W. sahabat sekaligus guru
bagi penulis ‘Thanks a lot ndri ilmu dan waktunya…’.
8. Serta Semua pihak yang tidak dapat disebutkan satu persatu, yang telah berperan dalam
penyelesaian skripsi ini.
Penulis menyadari bahwa penulisan skripsi ini masih jauh dari sempurna, oleh
karena itu penulis mengharapkan kritik dan saran yang bersifat membangun demi
kesempurnaan penulisan di masa mendatang. Akhir kata semoga skripsi ini bermanfaat
bagi penulis dan bagi pihak yang membutuhkan.
Jakarta, Maret 2010
Randi Rahmadi
viii
DAFTAR ISI
Halaman Judul .............................................................................................. i
Lembar Persetujuan Pembimbing ................................................................ ii
Lembar Pengesahan Ujian ............................................................................ iii
Lembar Pernyataan....................................................................................... iv
Abstrak .......................................................................................................... v
Kata Pengantar ............................................................................................. vi
Daftar Isi ....................................................................................................... viii
Daftar Gambar .............................................................................................. xv
Daftar Tabel ................................................................................................... xix
Daftar Lampiran............................................................................................ xxii
Daftar Simbol................................................................................................. xxiii
Daftar Istilah.................................................................................................. xxviii
BAB 1 PENDAHULUAN
1.1 Latar Belakang .................................................................................... 1
1.2 Perumusan Masalah ............................................................................. 3
1.3 Batasan Masalah .................................................................................. 4
1.4 Tujuan dan Manfaat Penulisan ............................................................. 4
1.4.1 Tujuan Penulisan ......................................................................... 5
1.4.2 Manfaat Penulisan ...................................................................... 5
1.5 Metodologi Penulisan .......................................................................... 6
1.5.1 Metodologi Pegumpulan Data ..................................................... 6
1.5.2 Metodologi Pengembangan Sistem ............................................. 7
1.6 Sistematika Penulisan .......................................................................... 10
BAB 2 LANDASAN TEORI
2.1 Konsep Dasar Sistem Informasi ........................................................... 12
2.1.1 Pengertian Sistem ....................................................................... 12
2.1.2 Pengertian Informasi ................................................................... 14
2.1.3 Pengertian Sistem Informasi ....................................................... 15
ix
2.2 Sistem Informasi Manajemen .............................................................. 17
2.3 Konsep Dasar Rapid Application Development (RAD) ....................... 19
2.4 Konsep Dasar Pendekatan Analisis Model Driven, OOA dan OOD ...... 20
2.4.1 Pengertian Pendekatan Model Driven ......................................... 20
2.4.2 Pengertian Object Oriented Analysis (OOA) ............................... 21
2.4.3 Pengertian Object Oriented Design (OOD) ................................. 22
2.5 Konsep Dasar Unified Modelling Language (UML) ............................ 22
2.5.1 Pengertian UML ......................................................................... 22
2.5.2 Diagram UML ............................................................................. 23
2.6 Basis Data dan Sistem Manajemen Basis Data...................................... 26
2.7 Konsep Dasar Pengiriman Barang ...................................................... 27
2.8 Sejarah Singkat SMS............................................................................ 28
2.9 Java...................................................................................................... 29
2.9.1 Sejarah Java................................................................................. 29
2.9.2 Keunggulan Java ........................................................................ 30
2.10 SQL.................................................................................................... 31
2.11 Protocol Data Unit (PDU)................................................................... 33
2.11.1 SMS PDU Pengirim (Mobile Originated)................................. 33
2.11.2 SMS PDU Penerima (Mobile Terminated) ............................... 38
2.12 Perintah AT (AT Command) .............................................................. 44
2.13 SMS Gateway .................................................................................... 45
2.14 Perangkat Lunak Penunjang ............................................................... 45
2.14.1 NetBeans IDE 5.5 .................................................................... 45
2.14.2 MySQL-Front 2.5 .................................................................... 46
2.15 Studi Sejenis....................................................................................... 47
BAB 3 METODOLOGI PENELITIAN
3.1 Metodologi Pengumpulan Data ........................................................... 50
3.1.1 Pengamatan (Observasi) ............................................................. 50
3.1.2 Studi Pustaka .............................................................................. 51
3.2 Metodologi Pengembangan Sistem ...................................................... 51
3.2.1 Mendefinisikan Lingkup (Scope Definition) ................................ 53
3.2.2 Analisis Sistem (Analysis) ........................................................... 53
x
3.2.3 Perancangan Sistem (Design)...................................................................55
3.2.4 Konstruksi dan Pengujian (Construction & Testing) ................................56
BAB 4 HASIL DAN PEMBAHASAN
4.1 Profil Perusahaan ............................................................................................59
4.1.1 Sejarah Perusahaan .................................................................................59
4.1.2 Logo Perusahaan ....................................................................................59
4.1.3 Visi dan Misi Perusahaan ........................................................................60
4.1.3.1 Visi Perusahaan ..............................................................................60
4.1.3.2 Misi Perusahaan .............................................................................60
4.1.4 Struktur Organisasi .................................................................................60
4.2 Alur Proses Pengembangan Sistem ..................................................................61
4.3 Metodologi Pengembangan Sistem ..................................................................62
4.3.1 Mendefinisikan Lingkup (Scope Definition) ............................................62
4.3.2 Analisis Sistem .......................................................................................62
4.3.2.1 Analisis Sistem Berjalan ................................................................67
4.3.2.1.1 Use Case Diagram .................................................................69
4.3.2.1.2 Activity Diagram ...................................................................69
4.3.2.2 Analisis Sistem Usulan ...................................................................70
4.3.2.2.1 Daftar Pengguna Sistem ........................................................72
4.3.2.2.2 Use Case Diagram .................................................................74
4.3.2.2.3 Spesifikasi Naratif Use Case Tingkat Analisis ........................75
4.3.2.2.3.1 Spesifikasi Naratif Use Case Master Data Pelanggan ........76
4.3.2.2.3.2 Spesifikasi Naratif Use Case Master Data Kendaraan .......77
4.3.2.2.3.3 Spesifikasi Naratif Use Case Master Data Supir................77
4.3.2.2.3.4 Spesifikasi Naratif Use Case Master Status Kendaraan .....78
4.3.2.2.3.5 Spesifikasi Naratif Use Case Transaksi Cetak SO .............79
4.3.2.2.3.6 Spesifikasi Naratif Use Case Transaksi Bongkar Muat......79
4.3.2.2.3.7 Spesifikasi Naratif Use Case Transaksi Batal Muat...........80
4.3.2.2.3.8 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran
Ekspedisi ..........................................................................81
4.3.2.2.3.9 Spesifikasi Naratif Use Case SMS Server dan Broadcast ..81
4.3.2.2.3.10 Spesifikasi Naratif Use Case Master Pesan .....................84
xi
4.3.2.2.3.11 Spesifikasi Naratif Use Case Laporan Data Pelanggan....84
4.3.2.2.3.12 Spesifikasi Naratif Use Case Laporan Data Kendaraan ...85
4.3.2.2.3.13 Spesifikasi Naratif Use Case Laporan Data Supir............86
4.3.2.2.3.14 Spesifikasi Naratif Use Case Laporan Status Kendaraan .86
4.3.2.2.3.15 Spesifikasi Naratif Use Case Laporan Ekspedisi per
Periode ...........................................................................87
4.3.2.2.3.16 Spesifikasi Naratif Use Case Laporan Pembayaran
Ekspedisi per Periode......................................................88
4.3.2.2.3 Activity Diagram ...................................................................88
4.3.2.2.4.1 Kegiatan Pengiriman Barang Berbasis SMS .....................89
4.3.2.2.4.2 Use Case Master Data Pelanggan .....................................90
4.3.2.2.4.3 Use Case Master Data Kendaraan .....................................90
4.3.2.2.4.4 Use Case Master Data Supir .............................................91
4.3.2.2.4.5 Use Case Master Status Kendaraan...................................91
4.3.2.2.4.6 Use Case Transaksi Cetak SO...........................................92
4.3.2.2.4.7 Use Case Transaksi Bongkar Muat ...................................93
4.3.2.2.4.8 Use Case Transaksi Batal Muat ........................................93
4.3.2.2.4.9 Use Case Transaksi Cetak Pembayaran Ekspedisi.............94
4.3.2.2.4.10 Use Case SMS Server dan Broadcast ..............................95
4.3.2.2.4.11 Use Case Master data Pesan............................................97
4.3.2.2.4.12 Use Case Laporan Data Pelanggan..................................97
4.3.2.2.4.13 Use Case Laporan Data Kendaraan .................................98
4.3.2.2.4.14 Use Case Laporan Data Supir .........................................98
4.3.2.2.4.15 Use Case Laporan Data Status Kendaraan.......................99
4.3.2.2.4.16 Use Case Laporan Ekspedisi per Periode ........................99
4.3.2.2.4.17 Use Case Laporan Pembayaran per Periode ....................100
4.3.3 Perancangan Sistem ................................................................................100
4.3.3.1 Spesifikasi Naratif Use Case Tingkat Perancangan ............................101
4.3.3.1.1 Spesifikasi Naratif Use Case Master Data Pelanggan ................102
4.3.3.1.2 Spesifikasi Naratif Use Case Master Data Kendaraan ................104
4.3.3.1.3 Spesifikasi Naratif Use Case Master Data Supir ........................106
4.3.3.1.4 Spesifikasi Naratif Use Case Master Data Status Kendaraan......108
xii
4.3.3.1.5 Spesifikasi Naratif Use Case Transaksi Cetak SO......................110
4.3.3.1.6 Spesifikasi Naratif Use Case Transaksi Bongkar Muat ..............111
4.3.3.1.7 Spesifikasi Naratif Use Case Transaksi Batal Muat ...................113
4.3.3.1.8 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran
Ekspedisi...................................................................................115
4.3.3.1.9 Spesifikasi Naratif Use Case SMS Server dan Broadcast ...........117
4.3.3.1.10 Spesifikasi Naratif Use Case Master Data Pesan......................122
4.3.3.1.11 Spesifikasi Naratif Use Case Laporan Data Pelanggan.............124
4.3.3.1.12 Spesifikasi Naratif Use Case Laporan Data Kendaraan ............126
4.3.3.1.13 Spesifikasi Naratif Use Case Laporan Data Supir ....................128
4.3.3.1.14 Spesifikasi Naratif Use Case Laporan Data Status Kendaraan..130
4.3.3.1.15 Spesifikasi Naratif Use Case Laporan Ekspedisi per Periode ...132
4.3.3.1.16 Spesifikasi Naratif Use Case Laporan Pembayaran Ekspedisi
per Periode ..............................................................................135
4.3.3.2 Object Robustness Diagram ..............................................................138
4.3.3.2.1 Use Case Input Data Pelanggan ................................................138
4.3.3.2.2 Use Case Input Data Kendaraan ................................................139
4.3.3.2.3 Use Case Input Data Supir.........................................................139
4.3.3.2.4 Use Case Input Data Status Kendaraan......................................140
4.3.3.2.5 Use Case Transaksi Cetak SO ...................................................140
4.3.3.2.6 Use Case Transaksi Bongkar Muat ............................................141
4.3.3.2.7 Use Case Transaksi Batal Muat .................................................141
4.3.3.2.8 Use Case Transaksi Pembayaran Ekspedisi ...............................142
4.3.3.2.9 Use Case SMS Server dan Broadcast.........................................142
4.3.3.2.10 Use Case Master Data Pesan ...................................................145
4.3.3.2.11 Use Case Laporan Data Pelanggan ..........................................146
4.3.3.2.12 Use Case Laporan Data Kendaraan..........................................146
4.3.3.2.13 Use Case Laporan Data Supir ..................................................147
4.3.3.2.14 Use Case Laporan Data Status Kendaraan ...............................147
4.3.3.2.15 Use Case Laporan Data Ekspedisi per Periode.........................148
4.3.3.2.16 Use Case Laporan Data Pembayaran per Periode.....................149
4.3.3.3 Statechart Diagram ...........................................................................149
xiii
4.3.3.3.1 Use Case Master Data Pelanggan .............................................150
4.3.3.3.2 Use Case Master Data Kendaraan..............................................151
4.3.3.3.3 Use Case Master Data Supir ......................................................152
4.3.3.3.4 Use Case Input Data Status Kendaraan......................................153
4.3.3.3.5 Use Case Transaksi Cetak SO ...................................................154
4.3.3.3.6 Use Case Transaksi Bongkar Muat ............................................155
4.3.3.3.7 Use Case Transaksi Batal Muat .................................................156
4.3.3.3.8 Use Case Transaksi Cetak Pembayaran Ekspedisi .....................157
4.3.3.3.9 Use Case SMS Server dan Broadcast.........................................158
4.3.3.3.10 Use Case Master Pesan............................................................161
4.3.3.3.11 Use Case Laporan Data Pelanggan ..........................................162
4.3.3.3.12 Use Case Laporan Data Kendaraan..........................................162
4.3.3.3.13 Use Case Laporan Data Supir ..................................................163
4.3.3.3.14 Use Case Laporan Data Status Kendaraan ...............................163
4.3.3.3.15 Use Case Laporan Data Ekspedisi per Periode.........................164
4.3.3.3.16 Use Case Laporan Data Pembayaran per Periode.....................165
4.3.3.4 Sequence Diagram Class Diagram ....................................................165
4.3.3.4.1 Sequence Diagram Master Data Pelanggan................................166
4.3.3.4.2 Sequence Diagram Master Data Kendaraan ..............................167
4.3.3.4.3 Sequence Diagram Master Data Supir .......................................168
4.3.3.4.4 Sequence Diagram Master Data Status Kendaraan ....................169
4.3.3.4.5 Sequence Diagram Transaksi Cetak SO.....................................170
4.3.3.4.6 Sequence Diagram Transaksi Bongkar Muat ............................171
4.3.3.4.7 Sequence Diagram Transaksi Batal Muat ..................................172
4.3.3.4.8 Sequence Diagram Transaksi Cetak Pembayaran......................173
4.3.3.4.9 Sequence Diagram SMS Server dan Broadcast (admin).............174
4.3.3.4.10 Sequence Diagram SMS Server dan Broadcast (supir).............178
4.3.3.4.11 Sequence Diagram Server dan Broadcast (pelanggan) .............178
4.3.3.4.12 Sequence Diagram Master Pesan.............................................179
4.3.3.4.13 Sequence Diagram Laporan Ekspedisi per Periode ..................180
4.3.3.4.14 Sequence Diagram Laporan Pembayaran per Periode ..............181
4.3.3.4.15 Sequence Diagram Master (Pelanggan, Kendaraan, Supir,
xiv
Status Kendaraan) ...................................................................182
4.3.3.5 Class Diagram....................................................................................183
4.3.3.5.1 Entity Class Diagram.................................................................183
4.3.3.5.1 Control Class Diagram ..............................................................185
4.3.3.5.1 Boundary Class Diagram...........................................................186
4.3.3.6 Database ...........................................................................................187
4.3.3.7 Spesifikasi Basis Data........................................................................189
4.3.4 Implementasi Sistem ...............................................................................196
4.3.4.1 Pemrograman ....................................................................................197
4.3.4.2 Instalasi Perangkat .............................................................................198
4.3.4.2.1 Perangkat Keras ........................................................................198
4.3.4.2.2 Perangkat Lunak .......................................................................194
4.3.4.3 Pengujian...........................................................................................199
4.3.4.4 Cara Pengoperasian Aplikasi..............................................................212
4.3.4.5 Metode Kerja Sistem Usulan..............................................................220
4.3.4.5 Evaluasi Aplikasi ...............................................................................224
BAB 5 PENUTUP
5.1 Kesimpulan ......................................................................................................226
5.2 Saran................................................................................................................226
DAFTAR PUSTAKA ................................................................................................228
LAMPIRAN A WAWANCARA ..............................................................................230
LAMPIRAN B QUESIONER....................................................................................236
LAMPIRAN C TAMPILAN APLIKASI ...................................................................241
LAMPIRAN D SOURCE CODE...............................................................................262
LAMPIRAN E DOKUMEN-DOKUMEN .................................................................291
xv
DAFTAR GAMBAR
Gambar 1.1 Strategi Rapid Apllication Development (RAD) .............................. 8
Gambar 2.1 Strategi Rapid Apllication Development (RAD) .............................. 19
Gambar 2.2 Contoh Diagram Model Use Case.................................................... 23
Gambar 2.3 Skema Cara Kerja SMS ................................................................... 29
Gambar 2.4 Skema Format PDU Pengirim.......................................................... 34
Gambar 2.5 Skema Format PDU Penerima ......................................................... 39
Gambar 2.6 Tampilan Netbeans IDE 5.5............................................................. 46
Gambar 2.7 Tampilan MySQL-Front 2.5 ............................................................ 47
Gambar 3.1 Tahapan Metodologi Rapid Apllication Development (RAD) .......... 53
Gambar 4.1 Logo Perusahaan ............................................................................. 59
Gambar 4.2 Struktur Organisasi .......................................................................... 60
Gambar 4.3 Tahapan Metodologi Rapid Application Development (RAD) ......... 61
Gambar 4.4 Diagram Sistem Berjalan Pada PD. Guna Pratama ...........................68
Gambar 4.5 Use Case Diagram Analisis Sistem Berjalan .................................... 69
Gambar 4.6 Activity Diagram Untuk Kegiatan Pengiriman Barang Analisis
Sistem Yang Berjalan ......................................................................................... 70
Gambar 4.7 Diagram Sistem Usulan Pada PD. Guna Pratama ............................. 71
Gambar 4.8 Use Case Diagram Analisis Sistem Usulan ...................................... 75
Gambar 4.9 Activity Diagram Untuk Kegiatan Pengiriman Barang Berbasis SMS
Gateway ............................................................................................................. 89
Gambar 4.10 Activity Diagram Use Case Master Data Pelanggan ...................... 90
Gambar 4.11 Activity Diagram Use Case Master Data Kendaraan ...................... 90
Gambar 4.12 Activity Diagram Use Case Master Data Supir............................... 91
Gambar 4.13 Activity Diagram Use Case Master Status Kendaraan .................... 91
Gambar 4.14 Activity Diagram Use Case Transaksi Cetak SO ............................ 92
Gambar 4.15 Activity Diagram Use Case Transaksi Bongkar Muat .................... 93
Gambar 4.16 Activity Diagram Use Case Transaksi Batal Muat.......................... 93
Gambar 4.17 Activity Diagram Use Case Transaksi Cetak Pembayaran ............. 94
Gambar 4.18 Activity Diagram Use Case SMS Server dan Broadcast (Admin) ... 95
Gambar 4.19 Activity Diagram Use Case SMS Server dan Broadcast (Supir) ..... 96
Gambar 4.20 Activity Diagram Use Case SMS Server dan Broadcast (Pelanggan)96
xvi
Gambar 4.21 Activity Diagram Use Case Laporan Master Pesan ........................ 97
Gambar 4.22 Activity Diagram Use Case Laporan Data Pelanggan..................... 97
Gambar 4.23 Activity Diagram Use Case Laporan Data Kendaraan .................... 98
Gambar 4.24 Activity Diagram Use Case Laporan Data Supir ............................ 98
Gambar 4.25 Activity Diagram Use Case Laporan Status Kendaraan.................. 99
Gambar 4.26 Activity Diagram Use Case Laporan Ekspedisi Per Periode ........... 99
Gambar 4.27 Activity Diagram Use Case Laporan Pembayaran per Periode ....... 100
Gambar 4.28 Diagram Objek Parsial Use Case Master Data Pelanggan............... 138
Gambar 4.29 Diagram Objek Parsial Use Case Master Data Kendaraan .............. 139
Gambar 4.30 Diagram Objek Parsial Use Case Master Data Supir ...................... 139
Gambar 4.31 Diagram Objek Parsial Use Case Master Status Kendaraan............ 140
Gambar 4.32 Diagram Objek Parsial Use Case Transaksi Cetak SO.................... 140
Gambar 4.33 Diagram Objek Parsial Use Case Transaksi Bongkar Muat ........... 141
Gambar 4.34 Diagram Objek Parsial Use Case Transaksi Batal Muat ................. 141
Gambar 4.35 Diagram Objek Parsial Use Case Transaksi Pembayaran................ 142
Gambar 4.36 Diagram Objek Parsial Use Case Server dan Broadcast (Admin) ... 142
Gambar 4.37 Diagram Objek Parsial SMS Server dan Broadcast (Supir) ............ 143
Gambar 4.38 Diagram Objek Parsial SMS Server dan Broadcast (Pelanggan)..... 144
Gambar 4.39 Diagram Objek Parsial Use Case Master Pesan.............................. 145
Gambar 4.40 Diagram Objek Parsial Use Case Laporan Data Pelangan .............. 146
Gambar 4.41 Diagram Objek Parsial Use Case Laporan Data Kendaraan............ 146
Gambar 4.42 Diagram Objek Parsial Use Case Laporan Data Supir .................... 147
Gambar 4.43 Diagram Objek Parsial Use Case Laporan Data Status Kendaraan..147
Gambar 4.44 Diagram Objek Parsial Use Case Laporan Ekspedisi per Periode ... 148
Gambar 4.45 Diagram Objek Parsial Use Case Laporan Pembayaran per Periode149
Gambar 4.46 Diagram Statechart Use Case Master Data Pelanggan ................... 150
Gambar 4.47 Diagram Statechart Use Case Master Data Kendaraan ................... 151
Gambar 4.48 Diagram Statechart Use Case Master Data Supir............................ 152
Gambar 4.49 Diagram Statechart Use Case Master Data Status Kendaraan ......... 153
Gambar 4.50 Diagram Statechart Use Case Transaksi Cetak SO ......................... 154
Gambar 4.51 Diagram Statechart Use Case Transaksi Bongkar Muat.................. 155
Gambar 4.52 Diagram Statechart Use Case Transaksi Batal Muat ....................... 156
Gambar 4.53 Diagram Statechart Use Case Transaksi Pembayaran Ekspedisi ..... 157
xvii
Gambar 4.54 Diagram Statechart SMS Server dan Broadcast (Admin)................ 158
Gambar 4.55 Diagram Statechart SMS Server dan Broadcast (Supir) .................. 159
Gambar 4.56 Diagram Statechart SMS Server dan Broadcast (Pelanggan) .......... 160
Gambar 4.57 Diagram Statechart Use Case Master Pesan ................................... 161
Gambar 4.58 Diagram Statechart Use Case Laporan Data Pelanggan.................. 162
Gambar 4.59 Diagram Statechart Use Case Laporan Data Kendaraan ................. 162
Gambar 4.60 Diagram Statechart Use Case Laporan Data Supir.......................... 163
Gambar 4.61 Diagram Statechart Use Case Laporan Data Status Kendaraan....... 163
Gambar 4.62 Diagram Statechart Use Case Laporan Ekspedisi Per Periode ........ 164
Gambar 4.63 Diagram Statechart Use Case Laporan Pembayaran Per Periode .... 165
Gambar 4.64 Sequence Diagram Use Case Master Data Pelanggan .................... 166
Gambar 4.65 Sequence Diagram Use Case Master Data Kendaraan .................... 167
Gambar 4.66 Sequence Diagram Use Case Master Data Supir ............................ 168
Gambar 4.67 Sequence Diagram Use Case Master Data Status Kendaraan.......... 169
Gambar 4.68 Sequence Diagram Use Case Transaksi Cetak................................ 170
Gambar 4.69 Sequence Diagram Use Case Transaksi Bongkar Muat .................. 171
Gambar 4.70 Sequence Diagram Use Case Transaksi Batal Muat........................ 172
Gambar 4.71 Sequence Diagram Use Case Transaksi Pembayaran Ekspedisi...... 173
Gambar 4.72 Sequence Diagram SMS Server dan Broadcast (Admin) ................ 174
Gambar 4.73 Sequence Diagram Proses SMS Masuk.......................................... 175
Gambar 4.74 Sequence Diagram Proses Olah Request SMS................................ 176
Gambar 4.75 Sequence Diagram Proses Kirim SMS ........................................... 177
Gambar 4.76 Sequence Diagram SMS Server dan Broadcast (Supir)................... 178
Gambar 4.77 Sequence Diagram SMS Server dan Broadcast (Pelanggan) ........... 178
Gambar 4.78 Sequence Diagram Use Case Master Pesan .................................... 179
Gambar 4.79 Sequence Diagram Use Case Laporan Ekspedisi Per Periode ......... 180
Gambar 4.80 Sequence Diagram Use Case Laporan Pembayaran Per Periode ..... 181
Gambar 4.81 Sequence Diagram Use Case Laporan Master ................................ 182
Gambar 4.82 Entity Class Diagram Sistem Informasi Pengiriman Barang
Berbasis SMS Gateway Pada PD. Guna Pratama ................................................ 183
Gambar 4.83 Control Class Diagram Sistem Informasi Pengiriman Barang Ber-
basis SMS Gateway Pada PD. Guna Pratama ...................................................... 185
Gambar 4.84 Boundary Class Diagram Sistem Informasi Pengiriman Barang Ber
basis SMS Gateway Pada PD. Guna Pratama ...................................................... 186
xviii
Gambar 4.85 ERD Sistem Informasi Pengiriman Barang Berbasis SMS Gateway
Pada PD. Guna Pratama...................................................................................... 187
Gambar 4.86 LRS Database Sistem Informasi Pengiriman Barang Berbasis SMS
Gateway Pada PD. Guna Pratama ....................................................................... 188
Gambar 4.87 Deployment Diagram Sistem Informasi Pengiriman Barang Ber-
basis SMS Gateway Pada PD. Guna Pratama ...................................................... 197
Gambar 4.88 Menjalankan Hyper Terminal ........................................................ 212
Gambar 4.89 Connection Description ................................................................. 213
Gambar 4.90 Koneksi ke Serial Port ................................................................... 214
Gambar 4.91 Port Setting.................................................................................... 214
Gambar 4.92 Jendela Utama Hyper Terminal...................................................... 215
Gambar 4.93 Percobaan Penyambungan Terminal Menggunakan Perintah AT.... 216
Gambar 4.94 Menjalankan Database Server MySQL4.0.2................................... 217
Gambar 4.95 Ikon MySQL4.0.2 di Taskbar Windows......................................... 218
Gambar 4.96 Menjalankan MySQLFront2.5 ....................................................... 218
Gambar 4.97 Connection to MySQL................................................................... 219
Gambar 4.98 Pengiriman dan Penerimaan Request SMS .................................... 221
Gambar 4.99 Skema Pengiriman Broadcast SMS................................................ 222
xix
DAFTAR TABEL
Tabel 2.1 Service Center Address....................................................................................... 34
Tabel 2.2 PDU Type .......................................................................................................... 35
Tabel 2.3 Destination Address............................................................................................ 36
Tabel 2.4 Validity Period ................................................................................................... 37
Tabel 2.5 User Data............................................................................................................ 38
Tabel 2.6 Service Center Address....................................................................................... 39
Tabel 2.7 PDU Type .......................................................................................................... 40
Tabel 2.8 Originator Address ............................................................................................. 41
Tabel 2.9 Service Center Time Stamp ................................................................................ 42
Tabel 2.10 User Data.......................................................................................................... 42
Tabel 2.11 Kode ASCII...................................................................................................... 43
Tabel 2.13 Beberapa Jenis AT Command........................................................................... 44
Tabel 4.1 Daftar Pengguna Sistem...................................................................................... 73
Tabel 4.2 Spesifikasi Naratif Use Case Master Data Pelanggan Tingkat Analisis................ 76
Tabel 4.3 Spesifikasi Naratif Use Case Master Data Kendaraan Tingkat Analisis ............... 77
Tabel 4.4 Spesifikasi Naratif Use Case Master Data Supir Tingkat Analisis ....................... 77
Tabel 4.5 Spesifikasi Naratif Use Case Master Data Status Kendaraan Tingkat Analisis..... 78
Tabel 4.6 Spesifikasi Naratif Use Case Transaksi Cetak SO Tingkat Analisis..................... 79
Tabel 4.7 Spesifikasi Naratif Use Case Transaksi Bongkar Muat Tingkat Analisis ............. 79
Tabel 4.8 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat Analisis .................. 80
Tabel 4.9 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran Ekspedisi Tingkat
Analisis .............................................................................................................................. 81
Tabel 4.10 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Analisis dengan
Aktor sebagai Admin ........................................................................................................ 81
Tabel 4.11 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Analisis dengan
Aktor sebagai Supir ........................................................................................................... 82
Tabel 4.12 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Analisis dengan
Aktor sebagai Pelanggan ................................................................................................... 83
Tabel 4.13 Spesifikasi Naratif Use Case Master Pesan Tingkat Analisis ............................. 84
Tabel 4.14 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat Analisis............ 84
xx
Tabel 4.15 Spesifikasi Naratif Use Case Laporan Data Kendaraan Tingkat Analisis ........... 85
Tabel 4.16 Spesifikasi Naratif Use Case Laporan Data Supir Tingkat Analisis.....................86
Tabel 4.17 Spesifikasi Naratif Use Case Laporan Status Kendaraan Tingkat Analisis ......... 86
Tabel 4.18 Spesifikasi Naratif Use Case Laporan Ekspedisi Per Periode Tingkat Analisis .. 87
Tabel 4.19 Spesifikasi Naratif Use Case Laporan Pembayaran Ekspedisi Per Periode Tingkat
Analisis .............................................................................................................................. 88
Tabel 4.20 Spesifikasi Naratif Use Case Master Data Pelanggan Tingkat Perancangan....... 102
Tabel 4.21 Spesifikasi Naratif Use Case Master Data Kendaraan Tingkat Perancangan ...... 104
Tabel 4.22 Spesifikasi Naratif Use Case Master Data Supir Tingkat Perancangan .............. 106
Tabel 4.23 Spesifikasi Naratif Use Case Master Status Kendaraan Tingkat Perancangan.... 108
Tabel 4.24 Spesifikasi Naratif Use Case Transaksi Cetak SO Tingkat Perancangan............ 110
Tabel 4.25 Spesifikasi Naratif Use Case Transaksi Bongkar Muat Tingkat Perancangan .... 111
Tabel 4.26 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat Perancangan ......... 113
Tabel 4.27 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran Ekspedisi Tingkat
Perancangan ....................................................................................................................... 115
Tabel 4.28 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Perancangan
dengan Aktor sebagai Admin ............................................................................................ 117
Tabel 4.29 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Perancangan
dengan Aktor sebagai Supir ............................................................................................... 119
Tabel 4.30 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat Perancangan
dengan Aktor sebagai Pelanggan ....................................................................................... 120
Tabel 4.31 Spesifikasi Naratif Use Case Master Pesan Tingkat Perancangan...................... 122
Tabel 4.32 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat Perancangan..... 124
Tabel 4.33 Spesifikasi Naratif Use Case Laporan Data Kendaraan Tingkat Perancangan.... 126
Tabel 4.34 Spesifikasi Naratif Use Case Laporan Data Supir Tingkat Perancangan ............ 128
Tabel 4.35 Spesifikasi Naratif Use Case Laporan Status Kendaraan Tingkat Perancangan.. 130
Tabel 4.36 Spesifikasi Naratif Use Case Laporan Ekspedisi Per Periode Tingkat Perancangan
........................................................................................................................................... 132
Tabel 4.37 Spesifikasi Naratif Use Case Laporan Pembayaran Ekspedisi Per Periode Tingkat
Perancangan ....................................................................................................................... 135
Tabel 4.38 Spesifikasi Tabel Pelanggan.............................................................................. 189
Tabel 4.39 Spesifikasi Tabel SO......................................................................................... 190
Tabel 4.40 Spesifikasi Tabel SJ .......................................................................................... 191
Tabel 4.41 Spesifikasi Tabel Bayar .................................................................................... 191
xxi
Tabel 4.42 Spesifikasi Tabel Supir ..................................................................................... 192
Tabel 4.43 Spesifikasi Tabel Kendaraan............................................................................. 193
Tabel 4.44 Spesifikasi Tabel Detil Supir............................................................................. 193
Tabel 4.45 Spesifikasi Tabel Inbox..................................................................................... 194
Tabel 4.46 Spesifikasi Tabel Balas ..................................................................................... 195
Tabel 4.47 Spesifikasi Tabel Kirim ................................................................................... 195
Tabel 4.48 Spesifikasi Tabel Broadcast .............................................................................. 196
Tabel 4.49 List Hasil Pengujian Dengan Pendekatan Black-Box Testing ........................... 200
Tabel 4.50 Format SMS Untuk Mengakses Informasi Pengiriman Barang............................222
xxiii
DAFTAR SIMBOL
Use Case Diagram(Munawar, 2005)
No Nama Simbol Keterangan
1 Actor
Menggambarkan seseorang atau sesuatu (seperti perangkat, sistem lain) yang berinteraksi dengan sistem.
2 Use Case
Menggambarkan fungsionalitas dari suatu sistem, terdiri dari satu set urutan interaksi yang terjadi antara pengguna dan system didalam ruang lingkup tertentu.
3 Association
Menggambarkan hubungan antara actor dengan use case dimana sebuah interaksi terjadi diantara mereka.
4 Include <<include>>
Menggambarkan bahwa suatu use case seluruhnya merupakan fungsionalitas dari use case lainnya
xxiv
Activity Diagram(Munawar, 2005)
No Nama Simbol Keterangan
1 Start Point
Menggambarkan awal dari suatu aktivitas yang berjalan pada sistem.
2 End Point
Menggambarkan akhir dari suatu aktivitas yang berjalan pada sistem.
3 ActivityMenggambarkan aktivitas yang dilakukan pada sistem.
4 Decision Points
Menggambarkan pilihan untuk pengambilan keputusan, true atau false
5 Transition State
Menggambarkan hubungan antara dua state, dua activity ataupun antara state dan activity.
6Swimlane
Menggambarkan pembagian atau pengelompokan berdasarkan tugas dan fungsi tersendiri.
7Transition to
self
Menggambarkan hubungan antara state atau activity yang kembali pada state atau activity itu sendiri.
8State
Menggambarkan kondisi, situasi ataupun tempat untuk beberapa aktivitas.
xxv
Object Robustness Diagram(Munawar, 2005)
No Nama Simbol Keterangan
1 Entity Object
Suatu obyek yang berisi informasi kegiatan yang terkait yang tetap dan disimpan ke dalam suatu database.
2Interface/Boundary
Object
Menggambarkan interaksi antara satu atau lebih actor dengan sistem, memodelkan bagian dari sistem yang bergantung pada pihak lain disekitarnya dan merupakan pembatas sistem dengan dunia luar.
3 Control Object
Menggambarkan “perilaku mengatur”, mengkoordinasikan perilaku sistem dan dinamika dari suatu sistem, menangani tugas utama dan mengontrol alur kerja suatu sistem.
4 Transition State
Menggambarkan interaksi antar object untuk mengkomunikasikan pesan yang disampaikan.
xxvi
Sequence Diagram(Munawar, 2005)
No Nama Simbol Keterangan
1 Object
Kesatuan entitas (benda), baik yang berwujud nyata ataupun hanya suatu sistem atau konsep yang memiliki sifat karakteristik dan fungsi.
2 Simple MessageSimbol pengiriman pesan dari sebuah obyek ke obyek lain.
3 Recursive
Sebuah obyek yang mempunyai sebuah operation kepada dirinya sendiri.
4 Activation
Mewakili sebuah eksekusi operasi dari obyek, panjang kotak ini berbanding lurus dengan durasi aktivasi sebuah operasi.
5 Lifeline
Garis titik-titik yang terhubung dengan obyek, sepanjang lifelineterdapat activation.
xxvii
NewClass
namename2name3
opname()opname2()opname3()
Class Diagram(Munawar, 2005)
No Nama Simbol Keterangan
1 Class
Menggambarkan keadaan atribut atau properti dari suatu objek. Classmemiliki tiga area pokok, yaitu : nama, atribut, method.
2 Association
Menggambarkan mekanisme komunikasi suatu objek dengan objek lainnya, atau dapat juga menggambarkan ketergantungan antar kelas
3 Aggregate
Suatu obyek yang berisi logika aplikasi yang tidak memiliki tanggung jawab kepada entitas. Control object mengkoordinir pesan(message) antara boundarydengan entitas.
4 MultiplicityMenggambarkan banyaknya objek yang terhubung satu dengan yang lainnya.
xxviii
DAFTAR ISTILAH
No Istilah Penjelasan1. Desktop Komputer desktop atau desktop adalah jenis
komputer pribadi nonportabel yang antara
monitor, CPU, dan keyboard yang
digunakannya tidak terintegrasi (terpisah-
pisah) dan relatif berukuran besar.
Komputer jenis ini dirancang untuk
diletakkan dan digunakan di atas meja di
rumah atau kantor.
2. Database Kumpulan dari data atau fakta suatu
organisasi secara terstruktur dalam domain
tertentu untuk mendukung aplikasi pada
sistem tertentu
3. Hardware Perangkat lunak dapat juga dikatakan
sebagai 'penterjemah' perintah-perintah yang
dijalankan pengguna komputer untuk
diteruskan ke atau diproses oleh perangkat
keras.
4. Handpone Alat komunikasi dua arah yang memiliki
fasilitas teknologi tertentu.
5. Input Adalah segala sesuatu yang dibutuhkan agar
pelaksanaan kegiatan dan program dapat
berjalan atau dalam rangka menghasilkan
output, misalnya : sumber daya manusia,
dana, material, waktu, teknologi, dan
sebagainya.
6. Interface Tampilan yang menjadi perantara antar user
dengan software/program aplikasi.
xxix
7. Java Bahasa pemrograman tingkat tinggi yang
berorientasi objek dan bersifat multiplatform.
8. Object Kesatuan entitas baik yang berwujud nyata
ataupun hanya suatu sistem atau konsep yang
memiliki sifat karakteristik dan fungsi
9. Output Berupa produk/jasa (fisik dan /atau non fisik)
sebagai hasil langsung dari pelaksanaan
suatu kegiatan dan program berdasarkan
masukan yang digunakan.
10. Software Program komputer yang berfungsi sebagai
sarana interaksi antara pengguna dan
perangkat keras. Perangkat lunak dapat juga
dikatakan sebagai 'penterjemah' perintah-
perintah yang dijalankan pengguna komputer
untuk diteruskan ke atau diproses oleh
perangkat keras.
11. SMS Salah satu fitur dari GSM yang
dikembangkan dan distandarisasi oleh ETSI
sehingga kit dapat mengirim dan menerima
pesan dalam bentuk teks.
12. User Pengguna sistem/individu yang berhubungan
dengan sistem, baik admin ataupun end user.
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Teknologi komputer berkembang seiring dengan berkembangnya
ilmu pengetahuan dan kebutuhan manusia. Dengan adanya perkembangan
tersebut manusia menuntut adanya pelayanan yang cepat dan memuaskan.
Hal ini mengakibatkan beberapa perusahaan menggunakan sistem berbasis
komputer untuk mengolah data sehingga menghasilkan informasi yang
cepat, tepat dan akurat.
Selain itu berbagai fasilitas yang menggunakan teknologi maju,
banyak digunakan untuk mempermudah dan menghemat tenaga. Handphone
atau sering disebut HP adalah contoh fasilitas yang sangat berkembang
teknologinya, salah satu fasilitas yang banyak digunakan pengguna adalah
SMS (Short Message Service). SMS (Short Message Service) adalah layanan
yang disediakan oleh ponsel operator untuk mengirim dan menerima pesan
singkat. SMS dinilai sangat praktis, murah, dan efisien. Perilaku pengguna
ponsel yang pada umumnya dilakukan adalah membaca setiap sms yang
masuk karena sifat ponsel yang personal tadi, ditambah lagi secara psikologi
bahwa seseorang itu ingin selalu dianggap penting. Jadi apapun jenis sms
yang masuk, orang tersebut pasti akan membuka dan membacanya, sehingga
pesan dapat tersampaikan dengan cepat dan lebih efisien tanpa harus
memberitahukan melalui selebaran atau surat pemberitahuan yang belum
2
tentu akan dibaca. Selain untuk mengirim pesan antar pengguna ponsel,
SMS juga cocok untuk diterapkan dan berinteraksi dengan suatu sistem
informasi berbasis komputer.
Melalui sistem informasi pengiriman barang berbasis SMS yang
penulis ajukan diharapkan dapat memberikan peningkatan layanan kepada
pelanggan, seperti informasi mengenai keadaan barang yang dikirim, status
kendaraan dan transaksi pembayaran ekspedisi, serta bagi perusahaan yakni
dalam mengolah informasi serta pembuatan laporan yang dibutuhkan.
PD. Guna Pratama adalah perusahaan yang bergerak di bidang
pengiriman barang yakni menawarkan jasa ekspedisi atau pengiriman
barang, baik barang kering atau beku (baik kategori chiller atau frozen)
melalui jalur darat yang wilayah pemasarannya mulai dari pulau jawa dan
bali dengan waktu pelayanan 24 Jam. Dalam melakukan kegiatan sehari-hari
pada bagian ekspedisi terdapat permasalahan diantaranya :
1. Sistem pengiriman barang yang ada pada saat ini cenderung masih
manual, yakni pencatatan dilakukan berulang kali sehingga kurang
mendukung, kurang cepat dan fleksibel dalam menyajikan informasi.
Aplikasi yang digunakan untuk mengolah data juga masih sederhana
yaitu Microsoft Office Word dan Excel. Situasi ini berakibat pada
kurang lengkap dan akuratnya laporan ekspedisi yang disampaikan
kepada pihak manajemen sehingga sulit dalam mengambil keputusan
yang tepat.
3
2. Pelanggan, petugas marketing dan supir harus saling berhubungan untuk
memastikan informasi mengenai barang yang dikirim, seperti status
pengiriman barang apakah barang tersebut sudah sampai atau belum dan
juga mengenai transaksi pembayaran ekspedisi serta status kendaraan,
hal ini tentunya akan memakan waktu, biaya dan tenaga.
Berdasarkan masalah yang telah disebutkan diatas maka pada
skripsi ini penulis tertarik membahas tentang “Pembangunan Sistem
Informasi Pengiriman Barang Berbasis SMS Gateway pada PD. Guna
Pratama”.
1.2 Perumusan Masalah
Berdasarkan uraian latar belakang yang telah dikemukakan diatas,
penulis dapat merumuskan beberapa masalah yaitu :
1. Bagaimana membuat sistem yang dapat mempermudah dan
mempercepat pengolahan data ekspedisi atau pengiriman barang seperti
menambah, mengubah, menghapus, mencari data pelanggan, supir,
kendaraan, status kendaraan, status pengiriman barang dan transaksi
pembayaran ekspedisi serta menyediakan fitur-fitur laporan data tersebut
sehingga menghasilkan informasi yang tepat dan akurat.
2. Bagaimana meningkatkan suatu layanan dengan membuat fasilitas SMS
pada sistem yang berguna untuk mempercepat, mempermudah dan
menghemat biaya dalam pengaksesan informasi mengenai keadaan
barang yang dikirim, dan informasi transaksi pembayaran ekspedisi.
4
3. Bagaimana Sistem Informasi Pengiriman Barang berbasis SMS Gateway
ini dapat diterapkan pada PD. Guna Pratama di bagian marketing.
1.3 Batasan Masalah
Sesuai dengan waktu dan kesempatan yang dimiliki maka penulis
batasi ruang lingkup permasalahan :
1. Pengolahan data pelanggan, supir, kendaraan, status kendaraan,
penerimaan pesanan pengiriman barang, status pengiriman barang dan
transaksi pembayaran ekspedisi hingga pembuatan laporan mengenai
pengiriman barang yang akan diberikan kepada pihak manajemen.
2. SMS Gateway yang dibuat sebagai alat untuk meningkatkan kualitas
pelayanan PD. Guna Pratama yakni untuk mengakses informasi
mengenai pengiriman barang, pembayaran ekspedisi, status kendaraan,
serta terdapat fasilitas untuk broadcast SMS terhadap supir, dan layanan
pemberian saran dari pelanggan.
3. Aplikasi Sistem Informasi Pengiriman Barang berbasis SMS Gateway
ini berbasis Stand Alone. Semua aplikasi bekerja dalam lingkungan
sistem operasi Windows dengan bahasa pemrograman Java dan MySQL.
SMS ini menggunakan terminal telepon seluler atau GSM Modem yang
dihubungkan ke komputer melalui media kabel data. Pengguna hanya
perlu mengirim SMS dengan format yang telah ditentukan kemudian
sistem ini akan mengirimkan balasan SMS sesuai dengan informasi yang
dibutuhkan.
5
1.4 Tujuan dan Manfaat Penelitian
1.4.1 Tujuan Penelitian
Penelitian dilakukan dalam rangka menyelesaikan permasalahan yang
ada, oleh karena itu tujuan dari penelitian ini adalah :
1. Terciptanya Sistem Informasi Pengiriman Barang berbasis SMS
Gateway yang dapat memberikan dukungan dan memperbaiki sistem
yang cenderung masih manual, sehingga memudahkan user dalam
pengelolaan dan pengaksesan data pengiriman barang serta
meningkatkan kualitas pelayanan pada PD. Guna Pratama.
2. Menyediakan fitur-fitur laporan yang lengkap sehingga membantu pihak
manajemen dalam memperoleh informasi yang dibutuhkan untuk
pengambilan keputusan yang tepat dan akurat.
1.4.2 Manfaat Penelitian
Adapun manfaat penelitian untuk mahasiswa adalah :
1. Menerapkan ilmu yang diperoleh diperkuliahan pada dunia kerja
dengan segala kondisi nyata yang tidak didapatkan pada perkuliahan
2. Membandingkan teori yang didapat diperkuliahan dengan masalah
yang sebenarnya.
3. Dapat menganalisis dan membangun sistem informasi pengiriman
barang berbasis SMS gateway pada PD. Guna Pratama.
4. Untuk memenuhi salah satu syarat didalam menyelesaikan jenjang
pendidikan Strata Satu.
6
Adapun manfaat penelitian bagi PD. Guna Pratama adalah :
1. Pengembangan sistem yang berjalan sebelumnya menjadi Sistem
Informasi Pengiriman Barang Berbasis SMS Gateway yang dapat
meningkatkan pelayanan perusahaan dan menarik jumlah
pelanggan.
2. Memudahkan admin dalam mengontrol data masukan dan
keluaran, serta penyajian informasi pengiriman barang menjadi
lebih efektif dan efisien.
3. Adanya fasilitas layanan SMS pada sistem informasi pengiriman
barang sehingga dapat menghemat waktu, biaya dan tenaga.
Adapun manfaat penelitian bagi universitas adalah :
Dengan dilakukannya penelitian ini diharapkan dapat memberikan
kontribusi ide pemikiran bagi masyarakat pada umumnya dan civitas
akademia kampus UIN Syarif Hidayatullah Jakarta.
1.5 Metodologi Penulisan
Metodologi yang digunakan penulis dalam penulisan skripsi ini adalah
sebagai berikut:
1.5.1 Metodologi Pengumpulan Data
Berikut beberapa proses yang dilalui penulis dalam pengumpulan
data guna membantu dalam penulisan ini, yaitu : (Sarwono 2006 : 224)
1. Metode Observasi
Pengumpulan data dan informasi dengan cara meninjau dan
melakukan pengamatan secara langsung terhadap suatu kegiatan yang
7
sedang dilakukan, pengenalan data yang ada sehingga dapat diadakan
evaluasi dari sudut tertentu yang mendukung kebenaran.
2. Metode Studi Pustaka
Penulis melakukan studi pustaka sebagai bahan tambahan
guna melengkapi kekurangan-kekurangan data yang diperoleh dari
interview dan observasi. Pengumpulan data dengan cara mengambil
dari sumber-sumber media cetak maupun elektronik yang dapat
dijadikan acuan pembahasan masalah.
1.5.2 Metodologi Pengembangan Sistem
Pada pembahasan ini, penulis menggunakan metodologi Rapid
Application Development (RAD) / Pengembangan Aplikasi Cepat
yang telah menjadi rute yang populer dalam mengakselerasi
pengembangan sistem. Penulis menggunakan metode ini karna menurut
penulis, metode ini merupakan metode yang paling cocok dalam
pengembangan aplikasi ini karna lebih menekankan pada pembuatan
aplikasi/prototype dengan melakukan pendekatan kepada user atau
pengguna sistem ini dalam pencapaian solusi dari permasalahan yang
ada.
Adapun pengertian RAD yaitu sebuah strategi pengembangan
sistem yang menekankan kecepatan pengembangan melalui keterlibatan
pengguna yang ekstensif dalam konstruksi, cepat, berulang dan
bertambah serangkaian prototype bekerja sebuah sistem yang pada
akhirnya berkembang kedalam sistem final (atau sebuah versi). (Jeffrey
8
L. Whitten, Lonnie D. Bentley, Kevin C. Dittman, 2004 : 104). Berikut
diagram yang menerangkan rute dalam RAD, yaitu:
Gambar1.1 Strategi Rapid Apllication Development (RAD)
Penulis hanya melalui empat tahapan siklus pengembangan model
RAD (Rapid Application Development) (Jeffrey L. Whitten, Lonnie D.
Bentley, Kevin C. Dittman, 2004 : 104) yaitu :
1. Definisi Lingkup (Scope Definition)
Menentukan ukuran dari proyek atau penelitian. Batas-batas
dalam penelitian ini.
2. Analisis Sistem (Problem, Requirement, Decision Analysis)
Dalam tahap ini, penulis akan menjabarkan permasalahan
yang sering terjadi pada sistem yang sedang berjalan dan analisis
sistem yang diusulkan. Dalam analisis sistem yang diusulkan ini,
penulis menggunakan pendekatan analisis model driven yaitu
penggunaan gambar, diagram, atau grafis dalam
mengkomunikasikan suatu masalah, memecahkan masalah,
persyaratan-persyaratan bisnis, dan solusi-solusi bisnis. Adapun
metode yang digunakan adalah Analisis Berorientasi Objek /
9
Object-Oriented Analysis (OOA). Penulis menggunakan UML
(Unified Modelling Language) sebagai tools untuk analisis sistem
ini.
3. Perancangan Sistem (Design)
Perancangan sistem dilakukan setelah tahap analisis telah
rampung, pada perancangan ini penulis menggunakan pendekatan
model driven yaitu penggunaan gambar, diagram, atau grafis
dalam mengkomunikasikan suatu masalah, memecahkan masalah,
persyaratan-persyaratan bisnis, dan solusi-solusi bisnis. Adapun
metode yang digunakan adalah Desain Berorientasi Objek /
Object-Oriented Design (OOD). Penulis menggunakan UML
(Unified Modelling Language) sebagai tools untuk perancangan
dan pengembangan aplikasinya.
4. Implementasi Sistem (Construction & Testing)
Setelah melakukan analisis sistem dan perancangan sistem
secara rinci, maka dilakukan tahap konstruksi dan pengujian sistem
untuk membangun dan menguji bahwa sistem yang dibangun
memenuhi kebutuhan bisnis dan sesuai spesifikasi rancangan fisik
dan untuk mengimplementasikan antarmuka
1.6 Sistematika Penulisan
Dalam penulisan skripsi ini, pembahasan yang akan disampaikan
terbagi dalam lima bab, sebagai berikut :
10
BAB I PENDAHULUAN
Bab ini menjelaskan mengenai latar belakang, perumusan masalah,
batasan masalah, tujuan dan manfaat penelitian, metode penelitian
dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini penulis mencoba menguraikan teori yang dapat digunakan
ataupun diterapkan dalam penulisan skripsi dan pembuatan aplikasi
ini, seperti Konsep Dasar Sistem, Konsep Dasar Informasi, Konsep
Dasar Sistem Informasi, Konsep Dasar Sistem Informasi
Pengiriman Barang, Konsep Dasar UML, Konsep Dasar RAD,
Sejarah Singkat SMS, Konsep Dasar SMS Gateway, Protocol Data
Unit dan perangkat lunak pendukung.
BAB III METODOLOGI PENELITIAN
Bab ini berisi uraian tentang metodologi yang digunakan penulis
dalam penulisan skripsi ini yakni metode pengumpulan data, Alur
Proses Pengembangan Sistem dan metodologi pengembangan
sistem dengan RAD.
BAB IV HASIL DAN PEMBAHASAN
Bab ini membahas mengenai pengembangan Sistem Informasi
Pengiriman Barang Berbasis SMS Gateway pada PD. Guna
11
Pratama, seperti analisis sistem dan perancangan sistem, cara
pengoperasian aplikasi yang dikembangkan, serta evaluasi terhadap
sitem yang diusulkan.
BAB V PENUTUP
Bab ini berisi beberapa kesimpulan dari hasil penelitian yang telah
dilaksanakan serta saran-saran untuk pengembangan sistem yang
lebih baik lagi.
12
BAB II
LANDASAN TEORI
2.1 Konsep Dasar Sistem Informasi
2.1.1 Pengertian Sistem
Apa itu sistem? Sistem kebanyakan dapat didefinisikan secara
sederhana sebagai sekelompok elemen yang saling berhubungan atau
berinteraksi hingga membentuk satu kesatuan. Sistem adalah sekelompok
elemen-elemen yang terintegrasi dengan maksud yang sama untuk
mencapai suatu tujuan. Akan tetapi, konsep umum sistem berikut ini
memberikan konsep dasar yang lebih tepat untuk bidang sistem informasi.
Sistem adalah sekelompok elemen yang saling berhubungan, bekerja
bersama untuk mencapai tujuan bersama dengan menerima input serta
menghasilkan output dalam proses transformasi yang teratur. (O’brien
2005 : 29).
Suatu sistem mempunyai karakteristik atau sifat-sifat tertentu,
antara lain sebagai berikut :
1. Komponen Sistem (components)
Suatu sistem terdiri dari sejumlah komponen atau elemen yang saling
berinteraksi, artinya komponen atau elemen yang saling bekerja sama
dalam bentuk satu kesatuan. Komponen atau elemen sistem dapat
berupa subsistem atau bagian dari sistem. Setiap subsistem mempunyai
13
sifat-sifat dari sistem. Untuk menjalankan suatu fungsi tertentu dan
mempengaruhi proses sistem secara keseluruhan.
2. Batas Sistem (boundary)
Batas sistem merupakan daerah yang membatasi antara suatu sistem
dengan sistem yang lainnya atau dengan lingkungan luar. Batas suatu
sistem menunjukkan lingkup (scope) dari sistem tersebut.
3. Lingkungan luar (environments)
Lingkungan luar dari suatu sistem adalah apapun diluar batas dari
sistem yang mempengaruhi operasi dari sistem.
4. Penghubung (interface)
Penghubung sistem merupakan media penghubung antara satu
subsistem dengan subsistem yang lain untuk dapat berinteraksi
membentuk suatu kesatuan.
5. Masukan (input)
Masukan sistem merupakan energi yang dimasukan ke dalam sistem
yang berupa masukan perawatan (maintenance input) dan keluaran
sinyal (signal output). Maintenance input adalah energi yang
dimasukan supaya sistem tersebut dapat beroperasi. Signal output
adalah energi yang diproses untuk mendapatkan keluaran.
6. Keluaran (output)
Keluaran sistem adalah hasil dari energi yang diolah dan
diklasifikasikan menjadi keluaran yang berguna dan sisa pembuangan.
14
7. Pengolahan ( process )
Suatu sistem dapat mempunyai suatu bagian pengolahan yang akan
merubah masukan menjadi keluaran.
8. Sasaran ( objective )
Suatu sistem harus mempunyai sasaran, karena sasaran sangat
menentukan sekali masukan yang dibutuhkan oleh sistem dan keluaran
yang akan dihasilkan sistem. Suatu sistem dikatakan berhasil apabila
mengenai sasaran atau tujuan.
2.1.2 Pengertian Informasi
Informasi adalah data yang telah diproses sehinga lebih bermakna.
(McLeod 2004 : 12). Definisi lain menyebutkan bahwa informasi adalah
data yang telah diproses atau disusun kedalam suatu format lebih berarti
untuk seseorang. Informasi dibentuk dari data yang dengan penuh harapan
dapat mempunyai arti bagi penerimanya. (Whitten 2004 : 27). Adapun
kualitas dari uatu informasi tergantung pada beberapa hal, yaitu :
Adapun kualitas suatu informasi tergantung pada tiga hal, yaitu:
a. Akurat
Akurat berarti informasi harus bebas dari suatu kesalahan dan tidak
menyesatkan. Akurat juga berarti informasi harus jelas mencerminkan
maksudnya. Informasi harus akurat karena dari sumber informasi
sampai ke penerima informasi kemungkinan banyak terjadi gangguan
(noise) yang dapat merubah atau merusak informasi tersebut.
15
b. Tepat pada waktunya
Tepat pada waktunya berarti informasi yang datang pada penerima
tidak boleh terlambat, karena informasi merupakan landasan didalam
mengambil keputusan.
c. Relevan
Relevan berarti informasi tersebut mempunyai manfaat untuk
pemakainya. Relevansi nformasi untuk tiap-tiap orang satu dengan
lainnya berbeda.
2.1.3 Pengertian Sistem Informasi
Sistem informasi dapat didefinisikan sebagai suatu susunan dari
orang, data, proses dan teknologi informasi yang saling berhubungan
untuk mengumpulkan, memproses, menyimpan dan menyediakan keluaran
informasi yang diperlukan untuk mendukung suatu organisasi. (Whitten
2004:12). Sistem informasi dapat digolongkan menurut fungsinya, antara
lain sebagai berikut:
1. Transaction Processing System (TPS), suatu sistem informasi yang
menangkap dan memproses data tentang transaksi bisnis. Seperti
pesanan (order), katu catatan waktu, pembayaran, reservasi dan
sebagainya.
2. Management Information System (MIS), suatu sistem informasi yang
disediakan untuk menghasilkan laporan yang berorientasi pada
16
manajemen yang berdasarkan pada proses transaksidan operasi dari
organisasi
3. Decision Support System (DSS), suatu sistem informasi yang
membantu mengidentifikasi pengambilan keputusan yang mungkin
atau menyediakan informasi untuk membantu pengambilan keputusan
manajemen.
4. Executive Information System (EIS), suatu sistem informasi yang
mendukung perencanaan dan kebutuhan penilaian dari manajer
eksekutif.
5. Expert System (ES), suatu sistem informasi yang menangkap keahlian
dari para pekerja dan kemudian menirukan keahlian tersebut untuk
dimanfaatkan oleh orang yang tidak ahli
6. Communication and Collaboration System, suatu sistem informasi
yang memberikan peluang komunikasi yang lebih efektif antara para
pekerja, mitra, pelanggan, dan para penyalur untuk meningkatkan
kemampuan untuk bekerja sama.
7. Office Automation System, suatu sistem informasi yang mendukung
cakupan luas dari aktifitas kantor yang disediakan untuk meningkatkan
alur kerja (work flow) antara para pekerja dan membantu karyawan
membuat dan membagi dokumen yang dapat mendukung aktifitas
kantor sehari-hari.
17
2.2 Sistem Informasi Manajemen
Sistem Informasi Manajemen (SIM) adalah suatu sistem yang secara
spesifik dirancang untuk mengarahkan jumlah-jumlah besar dan banyaknya
jenis informasi dalam suatu organisasi. Dalam suatu SIM, data
dikumpulkan, diorganisasikan, diproses dan dibuat agar mudah diperoleh
bagi manajer agar informasi menjadi alat bantu bagi manajer dalam tugas
operasional sehari-hari para manajer. Banyak dari informasi ini dibuat dalam
bentuk laporan-laporan yang ditempatkan sesuai dengan jadwal yang telah
ditentukan. Sebagai contoh pengujian dana laporan penjualan dihasilkan atas
dasar mingguan atau bulanan atau laporan persediaan bulanan. Laporan-
laporan semacam itu memudahkan perusahaan untuk pengendalian dan juga
berfungsi sebagai sistem komunikasi yang menghubungkan berbagai unit
atau departemen dari suatu organisasi sehingga tindakan-tindakan manajerial
dapat saling mendukung dan bekerja sama dengan harmonis.
Komponen-komponen penting dari sistem informasi adalah
database, sistem komputer dan format informasi dari data yang
didistribusikan. Untuk memberikan gambaran tentang bagaimana sistem
informasi manajemen harus dikonstruksikan dan bagaimana
mengoperasikannya, kita akan membahas setiap komponen secara terpisah.
1. Pengumpulan dan Pengorganisasian
komponen pertama dalam sistem informasi manajemen adalah database,
yang merupakan pengumpulan berbagai informasi secara teratur. Agar
sistem informasi manajemen dapat berdaya guna dan tepat guna database
18
harus mencakup jumlah yang tepat dan jenis yang tepat dari informasi
yang relevan dan berkualitas. Informasi tersebut harus diorganisir
dengan benar. Karena kebanyakan organisasi modern dapat memperoleh
berbagai informasi dalam jumlah besar, untuk memelihara dan
mengorganisir database secara tepat yang diperlukan peralatan
komputer.
2. Sistem Komputer
Sistem informasi manajemen modern biasanya terkomputerisasi.
Ledakan jumlah data yang tersedia bagi perusahaan menyebabkan
komputer merupakan komponen penting bagi setiap sistem informasi
manajemen (walaupun sistem manual masih tetap ada dalam jenis
organisasi yang kecil). Untuk mengatur agar komputer melakukan suatu
tugas yang spesifik, harus menggunakan program aplikasi. Sejumlah
program juga disebut sebagai paket perangkat lunak (software packages)
yang mengorganisasikan dan mendistribusikan informasi dalam bentuk
laporan tersedia secara komersial dari pemasok perangkat lunak ini telah
dikembangkan secara spesifik untuk penggunaan komputer pribadi.
Program aplikasi dapat dikembangkan pula secara internal oleh
ilmuawan manajemen atau oral individu lain yang terampil dalam
pemrograman komputer.
3. Manajemen informasi
Komputer dalam SIM akan memproses data dan menghasilkan informasi
untuk digunakan oleh berbagai unit berbeda dalam suatu organisasi.
19
Arus informasi yang keluar dari komputer ke berbagai dapat terdiri dari
beberapa jenis dan berupa berbagai bentuk/format yang berbeda-beda.
Dapat berupa laporan-laporan yang meringkas dan mengorganisasikan
data. Laporan-laporan tersebut dapat memberikan informasi historis
yang mungkin relevan bagi pembuat keputsusan saat ini, maupun yang
akan datang.
2.3 Konsep Dasar Rapid Application Development (RAD)
RAD adalah sebuah strategi pengembangan sistem yang menekankan
kecepatan pengembangan melalui keterlibatan pengguna yang ekstensif
dalam konstruksi, cepat, berulang dan bertambah serangkaian prototype
bekerja sebuah sistem yang pada akhirnya berkembang kedalam sistem final
(atau sebuah versi). (Jeffrey L. Whitten, Lonnie D. Bentley, Kevin C.
Dittman, 2004 : 104). Pada gambar 2.1 merupakan diagram yang
menerangkan rute dalam RAD, yaitu:
Gambar 2.1 Strategi Rapid Application Development (RAD)
20
Sebagai respon pada kemajuan ekonomi pada umumnya, Rapid
Application Development (RAD) / pengembangan aplikasi cepat telah menjadi
rute yang populer untuk mengakselerasi pengembangan sistem. Gagasan-
gagasan RAD adalah (Jeffrey L. Whitten, Lonnie D. Bentley, Kevin C.
Dittman, 2004 : 104):
1. Lebih aktif melibatkan para pengguna sistem dalam aktifitas analisis,
desain, konstruksi.
2. Mengorganisasikan pengembangan sistem ke dalam rangkaian seminar
yang intensif dan berfokus dengan para pemilik, pengguna, analyst,
designer, pembangun sistem.
3. Mengakselerasi fase-fase analisis dan desain persyaratan melalui
pendekatan konstruksi berulang.
4. Memperpendek waktu yang diperlukan sebelum para pengguna mulai
melihat sebuah sistem yang bekerja.
2.4 Konsep Dasar Pendekatan Analisis Model Driven, OOA dan OOD
2.4.1 Pengertian Pendekatan Model Driven
Pendekatan model-driven analysis atau analisis model driven yaitu
pengguna gambar, diagram atau grafis dalam mengkomunikasikan suatu
masalah, memecahkan masalah, persyaratan-persyaratan bisnis dan solusi-
solusi bisnis (Jeffrey L.Whitten, Lonnie D. Bentley, Kevin C. Ditman
2004:177).
21
2.4.2 Pengertian Object Oriented Analysis (OOA)
Object Oriented Analysis atau Analisis Berorientasi Objek adalah
sebuah teknik model driven yang mengintegrasikan data dan proses kedalam
konstruksi yang disebut objek. Model-model OOA adalah gambar-gambar
yang mengilustrasikan objek-objek sistem dari berbagai macam perpsektif,
seperti srtuktur, kelakuan, dan interaksi objek-objek (Jeffrey L. Whitten,
Lonnie D. Bentley, Kevin C. Dittman, 2004 : 179). Objek adalah
pembungkusan data (disebut properti) yang mendeskripsikan orang, objek,
tempat, kejadian, atau sesuatu yang berlainan, dengan semua proses (disebut
metode) yang diizinkan untuk menggunakan atau memperbaharui data dan
properti-properti tersebut (Jeffrey L. Whitten, Lonnie D. Bentley, Kevin C.
Dittman, 2004 : 179). Tahapan analisis berorientasi objek menurut Metode
Jacobson yaitu : (Hariyanto 2004 : 379)
Identifikasi pemakai sistem dan semua tanggung jawabnya
Buat model kebutuhan
- Definisikan actor dan tanggung jawabnya
- Identifikasi use-cases untuk setiap actor
- Inisialisasi gambaran sistem objek dan hubungannya
Buat model analisis
- Identifikasi antarmuka objek
- Buat gambaran structural dari antarmuka objek
- Representasikan perilaku objek
- Isolasi sub-sistem dan buat masing-masing modelnya
22
2.4.3 Pengertian Object Oriented Design (OOD)
Object Oriented Design / Perancangan Berorientasi Objek adalah
sebuah pendekatan yang digunakan untuk menentukan solusi perangkat
lunak khususnya pada objek yang berkolaborasi, atribut mereka dan metode
mereka (Jeffrey L. Whitten, Lonnie D. Bentley, Kevin C. Dittman, 2004 :
648). Tahapan perancangan berorientasi objek menurut Metode Jacobson,
yaitu : (Hariyanto 2004 : 414)
Adaptasi terhadap model analisis agar dapat berada di lingkungan nyata
Perancangan kelas-kelas objek utama yang disebut blok, terbagi menjadi
blok antarmuka, blok entitas, dan blok kendali.
Pendefinisian komunikasi diantara blok-blok itu selama eksekusi.
Pengorganisasian blok-blok menjadi subsistem-subsistem.
2.5 Konsep Dasar Unified Modelling Language (UML)
2.5.1 Pengertian UML
The Unified Modelling Language (UML) adalah bahasa standar
untuk melakukan spesifikasi, visualisasi, konstruksi, dan dokumentasi dari
komponen-komponen perangkat lunak dan digunakan untuk pemodelan
bisnis. (Hariyanto 2004 : 259)
UML merupakan salah satu alat bantu yang sangat handal di dunia
analisa dan perancangan sistem informasi yang berorientasi obyek (Object
Oriented). Hal ini disebabkan karena UML menyediakan bahasa pemodelan
visual yang memungkinkan bagi pengembang sistem untuk membuat cetak
biru (Blue Print) atas visi mereka dalam bentuk yang baku, mudah dimengerti
23
serta dilengkapi dengan mekanisme yang efektif untuk berbagi (sharing) dan
mengkomunikasikan rancangan mereka dengan yang lain.
2.5.2 Diagram UML
UML menawarkan diagram yang dikelompokkan menjadi lima
perspektif berbeda untuk memodelkan suatu sistem. Diagram UML
menyajikan perspektif yang berbeda mengenai sistem informasi. Bagian
berikut menjelaskan berbagai diagram UML beserta pengertiannya (Jeffrey L.
Whitten, Lonnie D. Bentley, Kevin C. Dittman, 2004 : 418-419).
Grup 1 : Diagram Model Use-Case
a. Use Case Diagram
Diagram yang menggambarkan interaksi antara sistem dengan
sistem eksternal dan pengguna. Dengan kata lain, secara grafis
menggambarkan siapa yang akan menggunakan sistem dan dengan cara
pengguna mengharapkan untuk berinteraksi dengan sistem. Gambar 2.2
merupakan contoh diagram model use case.
Gambar 2.2 Contoh Diagram Model Use Case
24
b. Use Case Narrative
Deskripsi tekstual kegiatan bisnis dan bagaimana pengguna akan
berinteraksi dengan sistem dalam menyelesaikan suatu tugas. Berbeda
dengan use case diagram, use case desain sistem menggunakan sebuah
narasi dari pandangan pengguna sistem, use case desain sistem lebih
bersifat percakapan (dialog).
Grup 2 : Diagram Struktur Statis
a. Class Diagram
Diagram ini menunjukkan kelas objek yang menyusun sistem juga
hubungan antara kelas tersebut. Class diagram mendeskripsikan jenis-
jenis objek dalam sistem dan berbagai macam hubungan dan interaksi
diantara mereka
b. Object Diagram
Diagram ini digunakan untuk mengidentifikasi objek-objek
desain yang tercakup pada sebuah use case berikut interaksinya. Model
diagram ini merupakan perluasan dari sebuah model use case pada
UML. Diagram ini berisi simbol-simbol untuk menggambarkan aktor
dan antarmuka (interface), control, entity, dan anak panah untuk
mengkomunikasikan pesan atau interaksi antar objek.
Grup 3 : Diagram Interaksi
a. Sequence Diagram
Secara grafis menggambarkan bagaimana objek berinteraksi
dengan satu sama lain melalui pesan pada eksekusi sebuah use case atau
25
operasi. Diagram ini mengilustrasikan bagaimana pesan terkirim dan
diterima diantara objek.
b. Collaboration Diagram
Serupa dengan sequence diagram, tetapi tidak fokus pada timing
atau sekuensi pesan. Diagram ini menggambarkan interaksi atau
kolaborasi antara objek dalam format jaringan.
Grup 4 : Diagram State
a. Statechart Diagram
Digunakan untuk memodelkan behaviour objek khusus yang
dinamis. Diagram ini mengilustrasikan siklus hidup objek, berbagai
keadaan yang dapat diasumsikan oleh objek, dan event-event yang
menyebabkan objek beralih dari satu state ke state lain.
b. Activity Diagram
Secara grafis digunakan untuk menggambarkan rangkaian aliran
aktivitas baik proses bisnis atau use case. Diagram ini juga dapat
digunakan untuk memodelkan action yang akan dilakukan saat sebuah
operasi di eksekusi, dan memodelkan hasil dari action tersebut.
Grup 5 : Diagram Implementasi
a. Component Diagram
Digunakan untuk menggambarkan organisasi dan ketergantungan
komponen-komponen software sistem. Diagram ini digunakan untuk
26
menunjukkan bagaimana kode pemrograman dibagi menjadi modul-modul
atau komponen.
b. Deployment Diagram
digunakan untuk mendeskripsikan arsitektur fisik dalam istilah
“node” untuk hardware dan software dalam sistem. Diagram ini
menggambar konfigurasi komponen-komponen software run-time,
processor, dan peralatan yang membentuk arsitektur sistem.
2.6 Basis Data dan Sistem Manajemen Basis Data
Basis data (database) adalah kumpulan data (elementer) yang secara
logika berkaitan dalam merepresentasikan fenomena atau fakta secara
terstruktur dalam domain tertentu untuk mendukung aplikasi pada sistem
tertentu. (Hariyanto 2008:112)
Basis data mendeskripsikan state organisasi atau perusahaan atau
sistem. Saat satu kejadian muncul di dunia nyata mengubah state organisasi
atau perusahaan maka satu perubahan harus dilakukan terhadap data yang
disimpan di basis data. Basis data merupakan komponen utama sistem
informasi karena semua informasi untuk pengambilan keputusan berasal dari
basis data.
Sistem manajemen basis data atau DBMS (Database Management
System) adalah perangkat lunak untuk mendefinisikan, menciptakan,
mengelola dan mengendalikan pengaksesan basis data. (Hariyanto
2008:112)
27
Fungsi sistem manajemen basis data saat ini yang paling penting
adalah menyediakan basis untuk sistem informasi manajemen. Tujuan utama
dari DBMS adalah menyediakan lingkungan yang nyaman dan efisien untuk
penyimpanan dan pengambilan data dari basis data, DBMS berperan
memberi abstraksi data tingkat tinggi ke pemakai. Tujuan lain DBMS antara
lain:
1. Menghindari redudansi dan inkonsistensi data
2. Menghindari kesulitan pengaksesan data
3. Menghindari isolasi data
4. Menghindari masalah-masalah keamanan
5. Menghindari masalah-masalah integritas
2.7 Konsep Dasar Pengiriman barang
Pengiriman barang menurut kamus Bahasa Indonesia (1996:139)
adalah menyampaikan suatu barang dari satu tempat ketempat yang lain
melalui perantara. Jadi Pembangunan Sistem Informasi Pengiriman barang
berarti membangun suatu sistem informasi pengiriman barang sesuai dengan
metode pengembangan sistem yang mempertemukan kebutuhan pengolahan
data sebagai masukan kemudian diproses sampai akhirnya akan diperoleh
suatu informasi sebagai keluaran.
28
2.8 Sejarah Singkat SMS
SMS (Short Message Service) merupakan salah satu layanan pesan
teks yang dikembangkan dan distandarisasi oleh suatu badan yang bernama
ETSI (European Telecommunication Standards Institute). (Wahana 2005:12).
Fitur SMS ini memungkinkan perangkat Stasiun Seluler Digital
(Digital Cellular Terminal, seperti Ponsel) untuk dapat mengirim dan
menerima pesan-pesan teks dengan panjang sampai dengan 160 karakter
melalui jaringan GSM.
Dalam sistem SMS, mekanisme utama yang dilakukan dalam suatu
sistem adalah melakukan pengiriman short message dari satu terminal
customer ke terminal yang lain. Hal ini dapat dilakukan berkat adanya sebuah
entitas dalam sistem SMS yang bernama Short Message Service Center
(SMSC), disebut juga Message Center (MC). Pada saat pesan SMS dikirim
dari handphone (mobile orginated) pesan tersebut tidak langsung dikirim ke
handphone tujuan (mobile terminated), akan tetapi terlebih dahulu ke SMSC,
baru kemudian pesan tersebut dikirimkan ke handphone tujuan. SMSC
merupakan sebuah perangkat yang melakukan tugas store and forward trafik
short message. Di dalamnya termasuk penentuan atau pencarian rute tujuan
akhir dari short message. Sebuah SMSC biasanya didesain untuk dapat
menangani short message dari berbagai sumber seperti Voice Mail System
(VMS), Web-based messaging, Email Integration, External Short Message
Entities (ESME), dan lain-lain. Secara skematis cara kerja suatu telepon
selular dalam mengirim dan menerima pesan ditunjukkan pada gambar 2.3
29
Gambar 2.3 Skema cara kerja SMS.
2.9 Java
Java dikenal sebagai bahasa pemrograman tingkat tinggi yang berorientasi
objek, atau lazim disebut dengan istilah Object Oriented Programming
(OOP).
2.9.1 Sejarah Java
Sejarah Java berasal pada tahun 1991 ketika perusahaan Sun
Microsystem melalui Green Project, yakni penelitian untuk membuat bahasa
yang akan digunakan pada chip-chip embedded untuk device intelligent
cunsumer electronic. Bahasa tersebut bersifat multiplatform, tidak
tergantung kepada vendor yang memanufaktur chip tersebut. (Hermawan
2004:6)
Dalam penelitiannya, Project Green berhasil membuat prototype
semacam PDA (Personal Data Assistance) yang dapat berkomunikasi antara
satu dengan yang lain dan diberi nama Star 7. Ide berawal untuk membuat
sistem operasi bagi Star 7 berbasis C dan C++. Setelah berjalan beberapa
lama, James Gosling, salah seorang anggota team, merasa kurang puas
30
dengan beberpa karakteristik dari kedua bahasa tersebut berusaha
mengembangkan bahasa lain. Bahasa tersebut kemudian dinamakan OAK,
diinspirasi ketika dia melihat pohon di seberang kaca ruang kantornya.
Belakangan OAK beralih nama menjadi Java.
Karena pada awalnya ditujukan untuk pemrograman device kecil,
Java memiliki karakteristik berukuran kecil, efisien, dan portable untuk
berbagai hardware. Project Green sempat terancam terhenti karena dalam
perkembangannya, device ini belum memiliki pasar seperti yang diramalkan
semula. Selanjutnya Java diarahkan untuk pemrograman internet. Secara
kebetulan, fitur-fitur Java yang telah disebutkan sebelumnya sangat sesuai
bagi perkembangan internet sehingga dalam beberapa tahun belakangan ini
Java telah menjadi primadona untuk pemrograman yang berbasis internet.
2.9.2 Keunggulan Java
Java memiliki beberapa keunggulan bila dibandingkan dengan bahasa
pemrograman lainnya, yaitu :
1. Java bersifat sederhana dan relatif mudah
Java dimodelkan sebagian dari bahasa C++, namun dengan memperbaiki
beberapa karakteristik C++, seperti mengurangi kompleksitas beberapa
fitur, penambahan fungsionalitas, serta penghilangan beberapa aspek
pemicu ketidakstabilan system pada C++.
2. Java berorientasi pada objek (Object Oriented)
Java adalah bahasa pemrograman yang berorientasi objek (OOP), dalam
memecahkan masalah, Java membagi program menjadi objek-objek,
31
kemudian memodelkan sifat dan tingkah laku masing-masing.
Selanjutnya java menentukan dan mengatur interaksi antara objek yang
satu dengan yang lainnya
3. Java bersifat terdistribusi
Java memiliki library rutin yang lengkap untuk dirangkai pada protocol
TCP/IP, seperti HTTP dan FTP dengan mudah. Kemampuan jaringan
Java lebih kuat dan mudah dipakai. Java bahkan memudahkan
pembuatan CGI (Common Gateway Interface).
4. Java bersifat Multiplatform
Dewasa ini kita mengenal banyak platform Operating System, mulai dari
Windows, Apple, berbagai varian UNIX dan Linux, dan sebagainya.
Java bersifat multiplatform karena dapat diterjemahkan oleh Java
Interpreter pada berbagai sistem operasi.
5. Java bersifat MultiThread
Thread adalah proses yang dapat dikerjakan oleh program dalam suatu
waktu. Java bersifat Multithreaded, artinya dapat mengerjakan beberapa
proses dalam waktu yang hamper bersamaan.
2.10 SQL
SQL merupakan singkatan dari Structured Query Language. SQL
digunakan untuk berkomunikasi dengan database. Berdasarkan ANSI
(American National Standards Insitute), SQL merupakan bahasa standar
untuk relational database management systems. (Saputro 2005:3).
32
Pernyataan-pernyataan SQL digunakan untuk melakukan fungsi-fungsi
seperti update data pada database, atau pengambilan data dari database.
Beberapa Relational yang menggunakan SQL, antara lain : Oracle, Sybase,
Microsoft SQL Server, Access, Ingres, MySQL, Postgre dan masih banyak
lagi. Pernyataan-pernyataan SQL dapat dibagi menjadi 2 kategori, yaitu
pernyataan-pernyataan Data Manipulation Language (DML) dan Data
Definition Language (DDL).
Pernyataan-pernyataan DML berkaitan dengan data, baik pengambilan
atau pemodifikasian data supaya tetap up-to-date. Sedangkan pernyataan-
pernyataan DDL berkaitan dengan pembuatan atau pengubahan tabel dan
objek-objek database lainnya seperti view dan index.
Berikut ini merupakan pernyataan-pernyataan DML, antara lain:
SELECT
Digunakan untuk query dan menampilkan data dari sebuah database.
Pernyataan SELECT menspesifikasikan kolom mana yang termasuk dalam
result set (hasil query). Pernyataan SELECT ini merupakan pernyataan yang
paling sering digunakan dalam aplikasi-aplikasi database.
INSERT
Digunakan untuk mengisi tabel yang baru dibuat atau menambahkan
baris/record baru pada tabel yang sudah dibuat.
DELETE
Digunakan untuk menghapus sebuah baris tertentu atau sekumpulan baris
tertentu atau sekumpulan baris dari sebuah tabel.
33
Dibawah ini merupakan pernyataan-pernyataan DDL, antara lain:
CREATE : untuk membuat / menciptakan objek database
ALTER : untuk memodifikasi / mengubah objek database
DROP : untuk menghapus objek database
2.11 Protocol Data Unit (PDU)
Dalam pengiriman dan penerimaan pesan SMS terdapat dua mode,
yaitu mode teks dan mode Protocol Data Unit (PDU). Mode teks adalah
format pesan dalam bentuk teks asli yang dituliskan pada saat akan
mengirim pesan. Sesungguhnya mode teks ini adalah hasil pengkodean dari
mode PDU. Sedangkan mode PDU adalah format pesan dalam bentuk oktet
heksadesimal dan oktet semidesimal dengan panjang mencapai 160 (7 bit)
atau 140 (8 bit) karakter. Di Indonesia tidak semua operator GSM maupun
terminal mendukung mode teks, sehingga mode yang digunakan adalah
mode PDU. Pada pengiriman pesan terdapat dua jenis mobile, yaitu Mobile
Terminated (Handphone Penerima) dan Mobile Originated (Handphone
Pengirim). (Wahana 2005:12)
2.11.1 SMS PDU Pengirim (Mobile Originated)
SMS PDU Pengirim adalah pesan yang dikirim dari handphone ke
terminal yang kemudian dikirimkan ke SMSC. (Wahana 2005:13). Pada
prinsipnya apabila kita mengirim pesan ke nomor tujuan, pesan itu akan
melalui SMSC. Pesan yang akan dikirimkan oleh terminal masih dalam
bentuk teks, sedangkan dalam pengiriman ke SMSC harus dalam bentuk
34
PDU. Untuk itu sebelum dikirim, terminal atau handphone akan
melakukan perubahan teks menjadi format PDU, proses ini sering disebut
proses encodec. Skema dari format PDU Pengirim telah diatur dan
ditetapkan oleh ETSI yang ditunjukkan pada Gambar 2.4 :
SCA PDU Type
MR DA PID DCS VP UDL UD
Gambar 2.4 Skema Format PDU Pengirim
Contoh : Kita mengirim pesan ke nomor 628158894028 dengan isi pesan
“kirim sms” dengan batas waktu pengiriman (waktu penyimpanan pesan di
SMSC, jika nomor tujuan tidak dapat menerima pesan ) 5 hari. Maka
Format PDU Pengirmannya adalah sebagai berikut :
0011000C912618859804820000AA09EBB43CDD06CDDB73
1. Service Center Address (SCA)
SCA adalah informasi dari alamat (nomor) SMSC. SCA memiliki
tiga komponen utama, yaitu len, type of number, dan service center
number. Dalam pengiriman pesan SMS, nomor SMSC tidak
dicantumkan. (Wahana 2005:13)
Tabel 2.1 Service Center Address
Octet Keterangan NilaiLen Panjang informasi SMSC dalam octet 00Type of Number
Type of address dari SMSC81h = lokal format91h = internasional format
<none>
BCD Digits
Nomor SMSC. Jika panjangnya ganjil, pada akhir karakter tambahkan 0F hexa
<none>
35
2. PDU Type
Nilai default dari PDU Type untuk SMS pengirim adalah 11 hexa,
yang memiliki arti bahwa 11 hexa = 00010001. (Wahana 2005:14)
Tabel 2.2 PDU Type
Bit 7 6 5 4 3 2 1 0Nama RP UDHI SRI VPF VPF MMS MTI MTINilai 0 0 0 1 0 0 0 1
Keterangan :
RP : Reply Path. Parameter yang menunjukkan bahwa alur
jawaban ada.
UDHI : User Data Header Indicator. Bit ini bernilai 1 jika data
pengirim dimulai dengan suatu judul atau tema.
SRR : Status Report Request. Bit ini bernilai 1 jika laporan status
pengiriman diminta.
VPF : Validity Period Format. Format dari batas waktu
pengiriman jika pesan gagal diterima.
RD : Reject Duplicates. Parameter yang menandakan ya atau
tidaknya Service Center akan menerima suatu pengiriman
pesan SMS untuk suatu pesan yang masih disimpan dalam
Service Center tersebut. Ia mempunyai MR dan DA yang
sama sebagai pesan dikirimkan dari OA yang sama.
MTI : Message Type Indicator. Bit bernilai 0 untuk menunjukkan
bahwa PDU ini adalah suatu SMS-Deliver.
36
3. Message Reference (MR)
Message Reference adalah acuan dari pengaturan pesan SMS.
(Wahana 2005:14). Untuk membiarkan pengaturan pesan SMS
dilkukan sendiri oleh handphone tujuan, maka nilai yang diberikan
adalah “00”. Jadi pada Message Reference hasilnya adalah 00.
4. Destination Address (DA)
DA adalah alamat (nomor) tujuan, yang terdiri atas panjangnya
nomor tujuan (Len), format dari nomor tujuan (Type Number), dan
nomor tujuan (Detination Number). (Wahana 2005:15)
Tabel 2.3 Destination Address
5. Protocol Identifier (PID)
Protocol Identifier adalah tipe atau format dari cara pengiriman
pesan, biasanya diatur dari handphone pengirim. Nilai default PID
untuk standard teks adalah 00. (Wahana 2005:15)
6. Data Coding Scheme (DCS)
Data Coding Scheme adalah rencana dari pengkodean data untuk
menentukan kelas dari pesan tersebut apakah berupa SMS teks standar,
Octet Keterangan Nilai
Len Panjang informasi SMSC dalam octet
0C
Type of Number
Type of address dari SMSC81h = lokal format91h = internasional format
91
Destination Address
Nomor Destination Address. Jika panjangnya ganjil, pada akhir karakter tambahkan 0F hexa
261885980482
37
Flash SMS, atau Blinking SMS. (Wahana 2005:15). Untuk pesan SMS
yang dikirimkan berupa teks standar hasilnya 00.
7. Validity Period (VP)
Validity Period adalah lama waktu pesan SMS disimpan di SMSC
apabila pesan tersebut gagal diterima oleh handphone penerima. Pada
Tabel 2.4 nilai VP adalah AA h atau 170d, 170-166 – 4 hari. (Wahana
2005:15)
Tabel 2.4 Validity Period
Keterangan :
h = bilangan dan huruf dalam bilangan hexa
d = angka dalam bilangan desimal
8. User Data Length (UDL)
User Data Length adalah panjangnya pesan SMS yang akan
dikirim dalam bentuk teks standar. Pada Tabel 2.1 nilai dari UDL
adalah 09 h. (Wahana 2005:16)
9. User Data (UD)
User Data adalah isi pesan yang akan dikirim dalam format
heksadesimal. (Wahana 2005:16). Pesan “kirim sms” di-kodekan 7 bit
Nilai VP Nilai Validitas Periode
0 – 143 ( VP+1 ) * 5 menit ( interval 5 menit hingga 12 jam )
144 – 167 12 jam + ( ( TP – VP – 143 ) * 30 menit)
168 – 196 ( VP – 166 ) – 1 hari
197 – 255 ( VP – 192 ) * 1 minggu
38
Default alphabet (septet) Sehingga harus di-enkode menjadi 8 bit
(octet), yaitu ”EBB43CDD06CDDB73” untuk SMS-Deliver. Nilai UD
pada contoh PDU Pengiriman adalah “EBB43CDD06CDDB73” dapat
dilihat pada halaman 34. Pada tiap octet jika jumlah bit kurang dari 8,
maka diambil bit paling kanan pada septet selanjutnya dan
ditambahkan pada bagian kiri septet sebelumnya. Pengkodean dari
karakter ke decimal adalah dengan melihat kode ASCII pada tabel 2.1x
Perubahan dari format teks menjadi format heksadesimal dapat dilihat
pada tabel 2.5 :
Tabel 2.5 User Data
Karakter Desimal Septet(7 bit)
Octet(8 bit)
Nilai(Hexa)
K 107 1101011 11101011 EBI 105 1101001 10110100 B4R 114 1110010 00111100 3CI 105 1101001 11011101 DDM 109 1101101 00000110 06<spasi> 32 0100000 11001101 CDS 115 1110011 11011011 DBM 109 1101101 001110011 73S 115 1110011
2.11.2 SMS PDU Penerima (Mobile Terminated)
SMS PDU Penerima adalah terminal menerima pesan yang
datang atau masuk dari SMSC ke handphone dalam Format PDU. Pada
prinsipnya pesan yang kita terima dari SMSC masih dalam format PDU
setelah itu terminal handphone yang menerima pesan akan melakukan
pengkodean menjadi teks, proses ini sering disebut proses decodec.
39
(Wahana 2005:16). Cara pengkodean format PDU sudah diatur dan
distandarkan oleh ETSI. Format PDU dari SMS Penerima adalah :
SCA PDU-type OA PID DCS SCTS UDL UD
Gambar 2.5 Skema Format SMS PDU Penerima
Contoh : kita menerima pesan dari 628122888374 dengan isi pesan
SMS adalah “hellohello” pada tanggal 6 Januari 2004 pukul 16.22 wib.
Maka format PDU adalah :
06912618010000040C912618228838470000401060612202820AE8329B
FD4697D9EC37. Penjelasan masing-masing format adalah sebagai
berikut:
1. Service Center Address (SCA)
SCA adalah informasi dari alamat (nomor) SMSC. SCA memiliki tiga
komponen utama, yaitu len, type of number, dan service center
number. (Wahana 2005:17). Pada contoh diatas nilai dari SCA adalah
06912618010000.
Tabel 2.6 Service Center Address
Octet Keterangan NilaiLen Panjang informasi SMSC dalam octet 06Type of Number
Type of address dari SMSC81h = lokal format91h = internasional format
91
BCD Digits
Nomor SMSC. Jika panjangnya ganjil, pada akhir karakter tambahkan 0F hexa
2618010000
40
2. PDU Type
Nilai default dari PDU Type untuk SMS-Deliver adalah 04 hexa, yang
memiliki arti 04 hexa = 00000100. (Wahana 2005:17)
Tabel 2.7 PDU Type
Bit 7 6 5 4 3 2 1 0Nama RP UDHI SRI <none> <none> MMS MTI MTINilai 0 0 1 0 0 1 0 0
Keterangan :
RP : Reply Path. Parameter yang menunjukkan bahwa alur
jawaban ada.
UDHI : User Data Header Indicator. Bit ini bernilai 1 jika data
pengirim dimulai dengan suatu judul atau tema.
SRI : Status Report Indication. Bit ini bernilai 1 jika laporan akan
dikembalikan ke SME.
MMS : More Message to Send. Bit ini bernilai 0 jika ada pesan
lebih akan dikirim.
MTI : Message Type Indicator. Bit bernilai 0 untuk menunjukkan
bahwa PDU ini adalah suatu SMS-Deliver.
3. Originator Address (OA)
OA adalah alamat (nomor) dari pengirim, yang terdiri atas panjangnya
nomor pengirim (Len), format dari nomor pengirim (Type Number),
dan nomor pengirim (Originator Number). (Wahana 2005:18). Nilai
dari OA pada contoh adalah 0C91261822883847.
41
Tabel 2.8 Originator Address
Octet Keterangan NilaiLen Panjang nomor Originator
Address0C
Type of number
Tipe dari Originator Address81h = lokal91h = internasional
91
BCD Digits
Nomor Originator Address. Jika panjangnya ganjil, pada akhir karekter tambahkan 0F hexa
261822883847
4. Protocol Identifier (PID)
Protocol Identifier adalah tipe atau format dari cara pengiriman pesan,
biasanya diatur dari handphone pengirim. Nilai default PID untuk
standard teks adalah 00. (Wahana 2005:18)
5. Data Coding Scheme (DCS)
Data Coding Scheme adalah rencana dari pengkodean data untuk
menentukan kelas dari pesan tersebut apakah berupa SMS teks standar,
Flash SMS, atau Blinking SMS. Untuk pesan SMS yang dikirimkan
berupa teks standar hasilnya 00. (Wahana 2005:19)
6. Service Center Time Stamp (SCTS)
Service Center Time Stamp adalah waktu dari penerimaan pesan oleh
SMSC penerima. SCTS terdiri atas tahun, bulan, tanggal, jam, menit
dan detik serta zona waktu. Nilai SCTS pada contoh adalah
40106061220282. (Wahana 2005:19). Pada tabel 2.9
42
Tabel 2.9 Service Center Time Stamp
Tahun 40 menjadi 2004
Bulan 10 menjadi 05, Mei
Tanggal 60 menjadi 06
Jam 61 menjadi 16
Menit 22 menjadi 22
Detik 02 menjadi 20
Zona Waktu 82 menjadi 28, dimana 1 unit = 15 menit.(15 * 28) / 60 = 7, menjadi GMT+07.00
Dari tabel diatas terlihat bahwa pesan diterima oleh SMSC pada
tanggal 16 Mei 2004 pukul 16:22’:20” WIB.
7. User Data Length (UDL)
User Data Length adalah panjangnya pesan SMS yang akan dikirim
dalam bentuk teks standar. (Wahana 2005:19)
8. User Data (UD)
User Data adalah pesan yang diterima dalam format heksadesimal.
Pada contoh diatas nilainya adalah E8329BFD4697D9EC37.
Pengkodean dari nilai heksadesimal menjadi teks standar dengan
bantuan tabel kode ASCII pada tabel 2.11
Tabel 2.10 User Data
Nilai(Hexa)
Oktet(8 bit)
Septet(7 bit)
Dec Karakter
E8 11101000 1101000 104 h32 00110010 1100101 101 e9B 100 11011 1101100 108 lFD 11111101 1101100 108 l46 01000110 1101111 111 o97 10010111 1101000 104 hD9 11011001 1100101 101 eEC 11101100 1101100 108 l37 00110111 1101100 108 l
1101111 111 o
43
Pada tabel 2.10 diatas merupakan proses perubahan dari nilai
heksadesimal menjadi karakter, terlihat bahwa nilai heksadesimal dari
E829BFD4697D9EC37 adalah “hellohello”. Ini berarti pesan yang
diterima adalah “hellohello”. (Wahana 2005:20)
Tabel 2.11 Kode ASCII
Desimal 0 1 2 3 4 5 6 7 8 9
0
1 LF CR
2
3 SP ! “ # $ % & ‘
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ ‘ A b C
10 D e f G h i J K l M
11 N o p Q r s T U v W
12 X y z { | } ~
44
2.12 Perintah AT (AT Command)
Perintah AT (Hayes AT Command) digunakan untuk
berkomunikasi dengan terminal (modem) melalui gerbang serial pada
komputer. Dengan penggunaan perintah AT, dapat diketahui atau dibaca
kondisi dari terminal, seperti mengirim pesan, membaca pesan, menambah
item pada daftar telepon, dan sebagainya. Pada tabel 2.12 diperlihatkan
beberapa jenis perintah AT yang berhubungan dengan penanganan pesan-
pesan SMS. (Wahana 2005:26)
Tabel 2.12 Beberapa jenis AT Command
Daftar Perintah AT Fungsi
AT Mengecek apakah hanphone telah terhubung
AT+CMGF Menetapkan format mode dari terminal
AT+CSCS Menetapkan jenis encoding
AT+CNMI Mendeteksi pesan SMS baru masuk secara otomatis
AT+CMGL Membuka daftar SMS yang ada pada SIM Card
AT+CMGS Mengirim pesan SMS
AT+CMGR Membaca pesan SMS
AT+CMGD Menghapus pesan SS
2.13 SMS Gateway
SMS Gateway adalah suatu layanan dari komputer untuk mengirim
dan menerima pesan SMS dari dan ke dalam ponsel.
(http://www.winsms.com)
SMS Gateway merupakan pintu gerbang bagi penyebaran
Informasi dengan menggunakan SMS, anda dapat menyebarkan pesan ke
45
ratusan nomor secara otomatis dan cepat yang langsung terhubung dengan
database nomor-nomor ponsel saja tanpa harus mengetik ratusan nomor dan
pesan di ponsel anda karena semua nomor akan diambil secara otomatis dari
database tersebut. Selain itu, dengan adanya SMS Gateway anda dapat
mengustomisasi pesan-pesan yang ingin dikirim. Dengan menggunakan
program tambahan yang dapat dibuat sendiri, pengirim pesan dapat lebih
fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim
berbeda-beda untuk masing-masing penerimanya.
2.14 Perangkat Lunak Penunjang
2.14.1 NetBeans IDE 5.5
Netbeans adalah salah satu open source IDE berbasiskan Java dari
Sun Microsystems yang berjalan di atas Swing. Swing sebuah teknologi
Java untuk pengembangan aplikasi Desktop yang multiplatform. Netbeans
memiliki kemampuan yang tidak dimiliki Eclipse standard, yaitu adanya
GUI Designer yang membuat pembuatan aplikasi Java desktop menjadi
lebih cepat.
Netbeans memiliki beberapa explorer yang merupakan tempat kita
bekerja, yaitu file system explorer, runtime explorer. Netbeans memiliki
tiga mode editing, yaitu source editing, gui editing dan debug editing, di
mana untuk source dan gui editing, penulis tidak dapat melihat
perbedaannya, karena saat penulis hendak membuat sebuah aplikasi GUI
46
dengan Swing, ada folder tambahan di bawah setiap source code. Contoh
tampilan NetBeans IDE 5.5 dapat dilihat pada gambar 2.6:
Gambar 2.6 Tampilan NetBeans IDE 5.5
Untuk menginstall netbeans, install terlebih dahulu Java SDKnya, penulis
menyarankan menggunakan Java SDK 1.4.2 yang sudah terbukti stabil. Java
SDK dapat didownload dari http://java.sun.com, sedangkan untuk men-
download netbeans dapat men-downloadnya dari http://www.netbeans.com .
2.14.2 MySQL-Front 2.5
MySQL adalah multi user database yang menggunakan bahasa
Structure Query Language (SQL). Untuk menggunakan MySQL-Front
2.5 sebagai software pendukung dalam pembuatan database, terlebih
dahulu kita harus menginstal MySQL-4.0.20d-win disisi server,
47
kemudian baru install MySQL-Front 2.5 sebagai tools dalam pembuatan
database. Setelah program terinstal, maka kita aktifkan program MySQL
dengan melakukan perintah sebagai berikut:
C:\mysql\bin\ winmysqladmin.exe <enter>
Setelah itu baru kita dapat mengaktifkan program MySQL-Front,
dengan tampilan awal sebagai berikut:
Gambar 2.7 Tampilan MySQL-Front 2.5
2.15 Studi Sejenis
Dibawah ini akan dipaparkan penelitian dan aplikasi sejenis yang
ada yang digunakan penulis sebagai acuan dan perbandingan untuk
menyelesaikan tugas akhir.
RIA KUSUMA HANDAYANI (2005), dalam penelitiannnya yang
berjudul “Perancangan Sistem Informasi Pengiriman Barang pada PT. Ritra
Cargo Indonesia” penulis membahas tentang pembuatan suatu aplikasi
pengolahan data pada sistem pengiriman barang agar dapat menghasilkan
48
informasi yang cepat dan tepat, dan menghasilkan laporan yang dapat
digunakan oleh pihak manajemen dalam mengambil suatu keputusan.
Aplikasi yang dibuat oleh Ria Kusuma Handayani menggunakan Microsoft
Visual Basic 6.0.
Dari keterangan diatas penulis membuat sebuah perbandingan antara
Aplikasi Pengiriman Barang berbasis stand alone dengan Aplikasi
Pengiriman Barang berbasis SMS Gateway. Dengan adanya Aplikasi
berbasis SMS ini tentunya proses pengolahan data pengiriman barang
menjadi lebih cepat karena adanya fasilitas auto respons yakni SMS Server
dapat mengirimkan reply secara otomatis kepada user (supir, pelanggan,
admin) yang melakukan request mengenai informasi pengiriman barang, dan
juga sistem ini secara otomatis mengupdate status pengiriman barang dan
status kendaraan berdasarkan request SMS dari supir. Dengan demikian
laporan pengiriman barang yang diberikan kepada pihak manajemen
menjadi lebih cepat, tepat dan akurat. serta biaya informasi untuk
pemberitahuan kepada pelanggan dan supir menjadi lebih murah.
Penulis juga melakukan peninjauan dari dua buah skripsi yang terkait
dengan penelitian mengenai pembuatan aplikasi berbasis SMS Gateway :
Ratih Wahyuningrum, 2005. Aplikasi SMS untuk Permintaan Nilai
Akademik pada Fakultas Sains dan Teknologi. Metode yang digunakan
adalah RAD dengan 5 tahapan : model bisnis, model data, model proses,
generalisasi aplikasi, dan pengujian. Tools yang digunakan Visual Basic 6.0,
Ms. Access, ERD dan DFD.
49
Ahmad Lutfi, 2008. Pengembangan Sistem Informasi Angkutan
Umum Terminal Lebak Bulus Berbasis SMS Gateway. Menggunakan
metode linear sequence model dengan 4 tahapan : Analysis, Design, Code
dan Test. Tools yang digunakan PHP versi 5.2.3, MySQL 5.0.45, dan
Gammu sebagai engine SMS Gateway.
Berdasarkan penelitian diatas belum ada yang mengembangkan
aplikasi SMS Gateway Pengiriman Barang dengan tools Java, database
MySQL dan UML. Java merupakan bahasa pemrograman berorientasi
objek, dari segi security Java memungkinkan untuk membuat suatu program
yang bebas virus dan sistem yang bebas dari kerusakan, karena Java
membuat sistem yang mekanisme keamanannya benar-benar kuat. Suatu
kelas (class) Java yang datang dari sumber tidak terpercaya (untrusted
source) memiliki akses sumber daya yang terbatas.
Selain itu Java juga merupakan bahasa pemrograman yang andal dan
stabil untuk aplikasi berbasis SMS dan basis data, karena Java menekankan
pada pengecekan awal untuk menghindari kemungkinan terjadi masalah,
pengecekan pada saat run-time, dan mengurangi kemungkinan timbulnya
kesalahan (error), karena Java memiliki sebuah model pointer yang dapat
mengurangi kemungkinan terjadi penimpaan (overwriting) pada memori dan
kerusakan data (data corrupt). Disamping itu, bahasa pemrograman Java
memiliki kelebihan khusus, yaitu dapat dijalankan di berbagai platform
sistem operasi komputer.
50
BAB III
METODOLOGI PENELITIAN
Pada bab ini akan dibahas tentang metode penelitian, meliputi metode
pengumpulan data dan metode pengembangan sistem.
3.1 Metode Pengumpulan Data
Pada metode pengumpulan data ini penulis melakukan 3 cara yaitu
wawancara, observasi dan studi pustaka. (Sarwono 2006 : 224)
3.1.1 Pengamatan (observasi)
Pada metode ini, penulis mengumpulkan data dan informasi yaitu
dengan cara meninjau dan melakukan pengamatan secara langsung ke
lapangan terhadap kegiatan yang sedang dilakukan atau berjalan, untuk
memperoleh semua data yang dibutuhkan.
Penulis melakukan pengamatan selama data dan informasi yang
dibutuhkan dalam penelitian dibutuhkan. Pengamatan dilakukan pada :
Tempat : PD. Guna Pratama, Pertokoan Taman Kebon Jeruk Blok A III/5,
Meruya Ilir Jakarta Barat.
Waktu : 5 Januari – 21 Februari 2009
Wawancara dilakukan secara langsung kepada Bapak Sutomo
Wijaya selaku kepala divisi marketing PD. Guna Pratama, pada saat penulis
melakukan penelitian. Berdasarkan wawancara dan pengamatan yang
penulis lakukan, penulis mengumpulkan informasi mengenai :
51
a. Sejarah singkat PD. Guna Pratama
Memuat sejarah singkat tentang PD. Guna Pratama, mulai dari
sejarah berdirinya perusahaan, visi dan misi perusahaan sampai struktur
organisasi PD.Guna Pratama.
b. Sistem yang sedang berjalan
Wawancara ini dilakukan untuk mengetahui sistem yang berjalan
dan kebutuhan user untuk aplikasi yang akan dibangun nantinya. Dari
wawancara ini dapat diketahui permasalahan-permasalahan yang sering
muncul berkaitan dengan informasi pengiriman barang sehingga sistem
yang akan dibangun dapat meningkatkan kualitas informasi.
3.1.2 Studi Pustaka
Penulis melakukan studi pustaka untuk melengkapi data dan
informasi melalui buku-buku atau sumber bacaan lainnya serta beberapa
situs internet yang berkaitan dengan penyusunan skripsi dan aplikasi yang
sedang dianalisa dan dirancang. Adapun buku dan pencarian beberapa situs
internet yang digunakan dalam penulisan skripsi ini terdapat dalam daftar
pustaka.
3.2 Metodologi Pengembangan Sistem
Proses pengembangan sistem diartikan sebagai sekumpulan aktivitas,
metode, best practice, deliverable dan tools-tools otomatis yang digunakan
stakeholder untuk mengembangkan sistem informasi dan software secara
52
kontinu, artinya pengembangan yang dilakukan secara bertahap dari hal-hal
yang menjadi kendala sistem sampai hal-hal yang menjadi kebutuhan sistem
(Whitten, 2004:84).
Untuk mengembangkan suatu sistem informasi maka digunakan
suatu metodologi yang disebut metodologi pengembangan sistem.
Pada pembahasan ini penulis menggunakan metodologi Rapid
Application Development (RAD) / Pengembangan Aplikasi Cepat yang telah
menjadi rute yang populer dalam mengakselerasi pengembangan sistem.
Penulis menggunakan metode ini karena menurut penulis metode ini
merupakan metode yang paling cocok dalam pengembangan aplikasi ini,
karena lebih menekankan pada pembuatan aplikasi/prototype dengan
melakukan pendekatan kepada user atau pengguna sistem ini dalam
pencapaian solusi dari permasalahan yang ada.
Adapun pengertain RAD yaitu sebuah pegembangan sistem yang
menekankan kecepatan pengembangan melalui keterlibatan pengguna yang
ekstensif dan konstruksi, cepat, berulang dan bertambah serangkaian
prototype yang bekerja pada sebuah sistem yang pada akhirnya berkembang
kedalam sistem final (atau sebuah versi). (Whitten 2004:104). Berikut
diagram yang menerangkan rute dalam RAD, yaitu :
53
Gambar 3.1 Strategi Rapid Application Development (RAD)
Pada alur proses RAD diatas, penulis membatasi hanya melalui
beberapa tahapan yaitu dari Scope Definition sampai dengan tahapan
Construction dan Testing, selebihnya diserahkan pada pihak perusahaan
dalam mengelola aplikasi ini.
3.2.1 Mendefinisikan Lingkup (Scope Definition)
Pada tahap ini menentukan ukuran atau batas-batas proyek dan
juga menggambarkan pandangan umum yang diungkapkan dengan
jelas dan singkat tentang masalah, kesempatan atau perintah yang
memicu proyek.
3.2.2 Analisis Sistem
Tahapan analisis dimulai karena adanya permintaan terhadap
sistem yang baru atau karena diinginkannya pengembangan dari
sistem yang berjalan. Permintaan dapat datang dari seorang manajer
diluar departemen sistem informasi atau dari pihak eksekutif yang
melihat adanya masalah atau menemukan adanya peluang baru.
(Abdul Kadir, 2003:400). Analisis Sistem dalam metodologi RAD
54
yakni Analisis Masalah (Problem Analysis), Analisis Kebutuhan
(Requirement Analysis) dan Analisis Keputusan (Decision Analysis).
a. Analisis Masalah (Problem Analysis)
Mengidentifikasikan masalah adalah langkah pertama yang
dilakukan dalam tahap analisis sistem. Pada tahap ini akan
dijabarkan permasalahan yang terjadi pada sistem yang sedang
berjalan, masalah-masalah tersebut yang menyebabkan sasaran dari
system tidak dapat tercapai.
b. Analisis Kebutuhan (Requirement Analysis)
Tahap analisis kebutuhan mendefinisikan dan melakukan
prioritasisasi kebutuhan bisnis, untuk mengetahui apa yang
dibutuhkannya atau apa yang diinginkan sistem yang akan
dikembangkan. Pada tahap ini belum membahas teknologi yang
digunakan atau teknik implementasinya.
c. Analisis Keputusan (Decision Analysis)
Analisis keputusan merupakan tahapan transisi pada
pengguna sistem dengan masalah bisnisnya ke rancangan sistem
yang konsentrasi ke perancang sistem dan pembangun sistem. Pada
tahap ini penulis mengidentifikasikan solusi sistem yang diusulkan,
kemudian akan dianalisis kelayakan dari sistem tersebut untuk
ditindaklanjuti ke tahap perancangan sistem. Adapun pendekatan
yang digunakan adalah analisis berorientasi objek atau object
oriented analysis (OOA). Penulis menggunakan UML (Unified
55
Model Language) sebagai tools untuk analisis sistem ini. Adapun
tabel ataupun diagram UML yang digunakan oleh penulis pada tahap
ini adalah Use Case Diagram dan Activity Diagram.
3.2.3 Perancangan Sistem (Design)
Dalam perancangan sistem ini, penulis juga menggunakan
pendekatan model driven, sama pada pendekatan yang digunakan
adalah Desain berorientasi objek atau Object-Oriented Design
(OOD). Dengan UML (Unified Modelling Language) sebagai tools
untuk perancangan dan pengembangan aplikasinya.
UML adalah bahasa grafis untuk mendokumentasi,
menspesifikasi dan membangun sistem perangkat lunak. UML
adalah bahasa pemodelan untuk menspesifikasikan,
menvisualisasikan, membangun dan mendokumentasikan artifak-
artifak dari sistem (Hariyanto, 2004:259).
UML menyediakan diagram-diagram yang sangat kaya dan
dapat diperluas sesuai kebutuhan kita. Diagram adalah representasi
secara grafis dari elemen-elemen tertentu beserta hubungan-
hubungannya. Diagram penting karena diagram menyediakan
representasi secra grafis dari sistem atau bagiannya. Representasi
grafis sangat mempermudah pemahaman terhadap sistem.
Teknologi Pemodelan UML yang digunakan penulis dalam
perancangan sistem antara lain: Deskripsi Use Case Tingkat
Perancangan, Object Robustness Diagram, State Machine Diagram,
56
Class Diagram. Selain itu penulis juga menggunakan diagram lain
yang tentunya diluar dari diagram yang disediakan oleh UML,
namun peranannya cukup penting bagi penulis dalam mendukung
tahapan perancangan sistem ini, yaitu diagram database, dan
spesifikasi database.
3.2.4 Konstruksi dan Pengujian (Construction & Testing)
Setelah melakukan analisis sistem dan perancangan sistem
secara rinci, maka dilakukan tahap konstruksi dan pengujian sistem.
Tujuan dari tahap ini adalah untuk membangun dan menguji bahwa
sistem yang dibangun memenuhi kebutuhan bisnis dan sesuai
spesifikasi rancangan fisik dan untuk mengimplementasikan
antarmuka sistem. Dalam tahap ini juga bisa mencakup instalasi
software.
Berikut adalah tahap konstruksi dan pengujian yang penulis
lakukan :
a. Pemrograman
Pemrograman adalah aktivitas pembuatan program atau
sederetan instruksi yang digunakan untuk mengatur komputer agar
bekerja sesuai dengan maksud masing-masing instruksi.
Pada tahap pemrograman, penulis menggunakan bahasa
pemrograman tingkat tinggi (high level language) yaitu JAVA
sebagai bahasa pemrogramannnya, sedangkan software yang
digunakan dalam pembuatan aplikasi ini yaitu menggunakan
Netbeans 5.5 sebagai software untuk membuat Graphical User
57
Interface (GUI) dan sebagai software yang menunjang database
pada aplikasi ini, penulis menggunakan MySQL 4.0.20.
b. Spesifikasi Hardware dan Software
Pada tahap konstruksi sistem ini dibutuhkan beberapa
spesifikasi perangkat keras (hardware) dan perangkat lunak
(software) yang harus dipenuhi agar sistem dapat berjalan dengan
benar sesuai dengan apa yang diharapkan. Perangkat keras
(hardware) yang digunakan dalam penelitian ini adalah sebagai
berikut :
1. PC Intel Pentium 4 2.8 GHz
2. Memory 512 MB
3. Hardisk 80 GB
4. VGA 128 MB
5. Handphone Sony Ericsson K618i
6. SIM Card
7. Kabel Data
8. Printer Canon iP1300
Perangkat lunak yang digunakan dalam penelitian ini adalah :
1. Sistem Operasi Ms Windows XP SP2
2. Java 2 SDK 1.6
3. Netbeans 5.5
4. MySQL 4.0.20 dan MySQL-Front 2.5
5. Driver Sony Ericsson 618i
58
c. Pelaksanaan Pengujian
Pada tahap ini penulis melakukan pengujian sistem. Penulis
menggunakan metode pengujian unit dengan pendekatan black-box
testing. Pengujian unit yaitu pengujian secara individual terhadap
semua program untuk memastikan bahwa program bebas dari
kesalahan. Jika terjadi kesalahan, pemakai akan berusaha mencari
penyebabnya dan proses untuk melakukan pencarian kesalahan ini
dikenal dengan debugging. (Abdul Kadir, 2002:410)
Black-box testing adalah pengujian yang dilakukan untuk antar
muka perangkat lunak, pengujian ini dilakukan untuk memperlihatkan
bahwa fungsi-fungsi bekerja dengan baik dalam arti masukan yang
diterima dengan benar dan keluaran yang dihasilkan benar-benar
tepat, pengintegrasian dari eksternal data berjalan dengan baik.
d. Cara Pengoperasian Aplikasi
Pada tahap ini akan dijelaskan bagaimana cara
mengoperasikan sistem mulai dari instalasi software, koneksi antara
handphone sampai tampilan layar satu persatu yang akan ditemukan
pada saat menjalankan Sistem Informasi Pengiriman Barang Berbasis
SMS Gateway ini.
59
BAB IV
HASIL DAN PEMBAHASAN
4.1 Profil Perusahaan
4.1.1 Sejarah Perusahaan
PD. Guna Pratama adalah perusahaan yang bergerak di bidang
pengiriman barang. Perusahaan ini menawarkan jasa ekspedisi atau
pengiriman barang khususnya pengiriman melalui jalur darat, baik kering
dan beku (baik kategori chiller atau frozen). Wilayah pemasaran yang telah
dicapai adalah pulau Jawa, Sumatra dan Bali. Perusahaan ini mulai berdiri
pada tahun 2002 dengan jumlah kendaraan hanya sebanyak 6 dan 12
pengemudi. Dikarenakan kepercayaan yang begitu besar yang diberikan
kepada PD. Guna Pratama oleh para pelanggan, maka dalam waktu singkat
(tahun 2006), PD. Guna Pratama telah berkembang pesat dan mampu
bersaing dengan perusahan ekspedisi lain di Indonesia. (Marciano, Manajer
Umum PD. Guna Pratama).
4.1.2 Logo Perusahaan
Gambar 4.1 Logo Perusahaan
60
4.1.3 Visi dan Misi Perusahaan
4.1.3.1 Visi Perusahaan
Inovasi dan berimprovisasi mengadopsi teknologi-teknologi
terbaru sebagai upaya meningkatkan kualitas pelayanan.
4.1.3.2 Misi Perusahaan
Memberikan kecepatan, keamanan dan ketepatan dalam hal
pengiriman barang, dengan pelayanan secara total dan profesionalisme
tinggi sehingga memberikan kepuasan terhadap pelanggan.
4.1.4 Struktur Organisasi
(Marciano, Manajer Umum PD. Guna Pratama).
Gambar 4.2 Struktur Organisasi
61
4.2 Alur Proses Pengembangan Sistem
Pada pembahasan ini penulis mengunakan metodologi Rapid
Application Development (RAD) atau Pengembangan Aplikasi Cepat
yang telah menjadi rute yang populer dalam mengakselerasi pengembangan
sistem. Penulis menggunakan metode ini karena menurut penulis, metode ini
merupakan metode yang paling cocok dalam pengembangan aplikasi ini
karena lebih menekankan pada pembuatan aplikasi atau prototype dengan
melakukan pendekatan kepada user atau pengguna sistem ini dalam
pencapaian solusi dari permasalahan yang ada.
Gambar 4.3 berikut adalah diagram RAD yang menggambarkan
beberapa tahapan yang dilakukan penulis dalam pengembangan Sistem
Informasi Pengiriman Barang Berbasis SMS Gateway ini :
Gambar 4.3 Tahapan Pengembangan Sistem Dengan Metode Rapid
Application Development (RAD)
Pada alur proses RAD diatas, penulis membatasi dengan hanya
melalui beberapa tahapan yaitu dari Scope Definition sampai dengan
tahapan Construction & Testing selebihnya diserahkan pada pihak
perusahaan dalam mengelola aplikasi ini.
62
4.3 Metodologi Pengembangan Sistem
Adapun dalam tahap pengembangan sistem ini terdiri dari beberapa
aktifitas yang tentunya sesuai dengan tahapan yang sebelumnya telah
dijabarkan pada alur proses pengembangan sistem. Tahapan tersebut yaitu:
4.3.1 Mendefinisikan Lingkup (Scope Definition)
Untuk lebih memfokuskan penelitian ini, maka penulis akan
membatasi permasalahan dan lingkup penelitian yang ada pada PD. Guna
Pratama dengan pengembangan sistem informasi pengiriman barang hanya
pada bagian pemasaran ekspedisi saja yaitu mulai dari proses pemesanan
barang, status pengiriman barang (mulai dari siap muat sampai bongkar
muat), hingga transaksi pembayaran ekspedisi karena didalam pengolahan
data mengenai ekspedisi barang butuh pengolahan yang optimal untuk
mencapai data-data akurat didalam menangani berbagai macam pengiriman
barang yang dilakukan khususnya mengenai jadwal ekspedisi. Fasilitas SMS
yang akan yang diajukan juga hanya pada bagian marketing saja yakni untuk
mempercepat, mempermudah dan menghemat biaya dalam pengaksesan
informasi mengenai keadaan barang yang dikirim, status kendaraan dan
informasi transaksi pembayaran ekspedisi.
4.3.2 Analisis Sistem (Problem Analysis, Requirement Analysis, Decision
Analysis)
Pada tahap ini penulis melakukan analisis sistem yang tentunya sesuai
dengan scope yang telah didefinisikan sebelumnya, dengan melakukan
beberapa tahapan diantaranya :
63
a. Analisis Masalah (Problem Analysis)
Setelah penulis mengumpulkan semua data maupun informasi yang
dibutuhkan dengan metodologi pengumpulan data yakni observasi dan
wawancara dengan bagian marketing, sehingga penulis dapat merumuskan
suatu permasalahan yang ada pada bagian marketing atau ekspedisi.
PD. Guna Pratama adalah perusahaan yang bergerak dibidang
ekspedisi atau jasa pengiriman barang, yang mempunyai waktu pelayanan
24 jam. Oleh karenanya Admin harus siap siaga selama 24 jam untuk
memperoleh informasi mengenai ekspedisi barang, seperti status
ekspedisi, status kendaraan, dan juga pembayaran ekspedisi sehingga
diperlukan suatu konsep pengolahan data ekspedisi secara
terkomputerisasi lengkap dengan berbagai fitur laporan dan fasilitas SMS
yang disediakan sesuai dengan kebutuhan pihak yang berhubungan,
sehingga berbagai kesulitan yang berhubungan dengan pengolahan data
ekspedisi dapat diatasi, maka proses pengolahan data ekspedisi dapat
berjalan lebih efektif dan efisien.
Berdasarkan hasil analisis yang telah penulis lakukan, penulis
mendapati permasalahan yang sering terjadi pada sistem yang sedang
berjalan antara lain:
1. Sistem pengiriman barang yang ada pada saat ini cenderung masih
manual, yakni pencatatan dilakukan berulang kali sehingga kurang
mendukung, kurang cepat dan fleksibel dalam menyajikan informasi.
Aplikasi yang digunakan untuk mengolah data juga masih sederhana
yaitu Microsoft Office Word dan Excel, yang dinilai kurang handal.
64
Situasi ini berakibat pada kurang lengkap dan akuratnya laporan
ekspedisi yang disampaikan kepada pihak manajemen sehingga sulit
dalam mengambil keputusan yang tepat.
2. Pelanggan, petugas marketing dan supir harus saling berhubungan
untuk memastikan informasi mengenai barang yang dikirim, seperti
status pengiriman barang apakah barang tersebut sudah sampai atau
belum dan juga mengenai transaksi pembayaran ekspedisi, hal ini
tentunya akan memakan waktu, biaya dan tenaga. Hal ini menjadi
kendala bagi admin yang harus selalu stand by 24 jam untuk mengolah
informasi yang ia peroleh baik dari supir maupun pelanggan.
b. Analisis Kebutuhan (Requirement Analysis)
Penulis melakukan wawancara, observasi dan menyebar
kuesioner untuk mendapatkan data. Wawancara dilakukan dengan
Manajer Umum PD. Guna Pratama Bapak Marciano Suteja, dan
Kepala Divisi Marketing Bapak Sutomo Wijaya, pada tanggal 6
Januari 2009. Kesimpulan dari wawancara yang penulis lakukan
adalah sistem yang ada pada saat ini masih bersifat manual sehingga
pihak perusahaan sangat setuju dengan dilakukannya penelitian ini,
karena dapat membantu meningkatkan pelayanan perusahaan dengan
dibuatnya Sistem Informasi Pengiriman Barang berbasis SMS
Gateway. Hasil wawancara dapat dilihat pada lampiran.. halaman
Kemudian penulis melakukan observasi pada tanggal 8 Januari
2009 di bagian marketing, hasil observasi yaitu pengolahan data
ekspedisi atau pengiriman barang masih dilakukan secara manual
65
seperti pengolahan data ekspedisi, status kendaraan, dan pembayaran
ekspedisi serta pembuatan laporan. Hal ini mengakibatkan
keterlambatan dalam penyampaian informasi mengenai pengiriman
barang, seperti informasi mengenai barang yang telah sampai, status
mengenai kendaraan yang tersedia jika pelanggan ingin memesan
kendaraan, sehingga pihak manajemen sulit dalam mengambil
keputusan. Oleh karena itu diperlukan sistem yang mampu bekerja
dengan cepat memberikan informasi yang tepat dan akurat selama 24
jam, sehingga pelanggan merasa nyaman dan percaya berbisnis dengan
perusahaan.
Selain melakukan wawancara dan observasi penulis juga
mengajukan kuisioner untuk admin dan beberapa supir. Kuisioner
yang penulis ajukan untuk admin meliputi 5 pertanyaan, dan untuk
supir 6 pertanyaan mengenai aplikasi sistem informasi pengiriman
barang berbasis SMS Gateway yang penulis buat, apakah sistem ini
dapat diterapkan sehingga dapat meningkatkan kualitas pelayanan pada
PD. Guna Pratama.
Hasil kuisioner menunjukkan bahwa admin dan supir sangat
setuju dengan diterapkannya sistem informasi pengiriman barang
berbasis SMS Gateway ini karena informasi yang dihasilkan sangat
memadai, akses informasi menjadi lebih cepat, tepat dan akurat karena
dilakukan secara otomatis sehingga memudahkan admin dan supir
dalam melaksanakan tugasnya dan tentunya akan meningkatkan
kualitas pelayanan. Hasil kuisioner dapat dilihat pada Lampiran ...
66
c. Analisis keputusan (Decision Analysis)
Analisis keputusan merupakan tahapan transisi pada pengguna
sistem dengan masalah bisnisnya, dilanjutkan dengan rancangan sistem
yang konsentrasi kepada perancang dan pembangun sistem. Tahap transisi
tersebut akan dijelaskan pada analisis sistem berjalan dan analisis sistem
usulan.
Penulis tertarik membuat aplikasi sistem berbasis SMS Gateway ini
dikarenakan :
1. Pelayanan pada PD. Guna Pratama ini ialah 24 jam sehingga
proses pengolahan data yang cepat dan tepat sangat dibutuhkan
sehingga mempermudah admin dalam melaksanakan tugasnya.
Dengan adanya aplikasi berbasis SMS Gateway ini proses
pengolahan data pengiriman barang menjadi lebih cepat, tepat dan
akurat karena proses pengolahan data tidak lagi dilakukan secara
manual.
2. Admin, supir dan pelanggan harus saling berhubungan melalui
telepon untuk mengetahui informasi mengenai keadaan barang
yang dikirim dan informasi mengenai status kendaraan. Hal ini
tentunya akan memakan waktu, biaya dan tenaga. Dengan adanya
aplikasi berbasis SMS Gateway ini, SMS yang dikirim oleh supir
akan diterima dan langsung diproses oleh aplikasi secara otomatis,
kemudian aplikasi akan memberikan balasan (informasi berupa
SMS) sesuai dengan pesan yang diterima SMS server kepada
pelanggan supir, maupun admin. Dengan demikian biaya yang
67
dikeluarkan menjadi lebih murah dan juga informasi yang
diberikan tentunya akan lebih cepat, tepat dan akurat, sehingga
dapat meningkatkan kualitas pelayanan PD. Guna Pratama.
Penulis lebih memilih untuk membuat Sistem Informasi
pengiriman barang berbasis SMS Gateway dengan bahasa pemrograman
Java sebagai aplikasi desktop berbasis stand alone dikarenakan Java
merupakan bahasa pemrograman yang paling tepat untuk memenuhi
kebutuhan pembuatan aplikasi layanan SMS, dengan pertimbangan Java
merupakan bahasa pemrograman yang andal dan stabil untuk aplikasi
berbasis SMS dan juga sistem mekanisme keamanannya yang kuat.
4.3.2.1 Analisis Sistem Berjalan
Pada tahapan ini, penulis menggunakan pendekatan Model-
Driven dengan pendekatan Object Oriented Analysis (OOA) dan Unified
Modelling Language (UML) sebagai tools untuk menvisualisasikan
sistem yang sedang berjalan. Gambar 4.4 Berikut adalah diagram yang
digunakan penulis untuk menggambarkan sistem yang sedang berjalan.
68
Gambar 4.4 Diagram sistem yang berjalan pada PD. Guna Pratama
Keterangan gambar :
1 : Pelanggan menghubungi admin untuk melakukan pemesanan
kendaraan untuk pengiriman barang, terjadi transaksi penawaran
harga.
2 : Admin memasukkan data pemesanan kendaraan.
3 : Admin menghubungi supir untuk melakukan ekspedisi
4 : Supir menuju ke lokasi pelanggan untuk melakukan ekspedisi barang
5 : Jika telah selesai melakukan ekspedisi supir menghubungi admin
6 : Admin menghubungi pelanggan menginformasikan bahwa barang
telah sampai pada tujuan
7 : Admin menginputkan data transaksi ekspedisi barang yang telah
terkirim.
69
4.3.2.1.1 Use Case Diagram
Berikut adalah salah satu diagram yang disediakan oleh UML,
tentunya ada keterkaitan dengan context diagram yang sebelumnya telah
dibahas, untuk menggambarkan hubungan antara use case dengan aktor
pada sistem yang sedang berjalan. Berikut diagram tersebut:
initiates
initiates
Gambar 4.5 Use Case Diagram Analisis Sistem Berjalan
4.3.2.1.2 Activity Diagram
Activity diagram / diagram aktivitas untuk memodelkan
langkah-langkah proses atau kegiatan sistem. Diagram ini serupa dengan
flowchart dimana secara grafis diagram ini menggambarkan aliran dari
kegiatan suatu proses bisnis. Analisis sistem menggunakan diagram
aktivitas untuk memahami secara lebih baik aliran dan rangkaian
langkah-langkah use case. Karena itu, diagram ini sangat berguna untuk
memodelkan kegiatan yang akan dilakukan oleh suatu proses bisnis dari
Sistem Informasi Pengiriman Barang yang sedang berjalan pada PD.
70
Guna Pratama. Berikut adalah beberapa diagram aktivitas yang terbentuk
dari kegiatan bisnis dan use case diagram yang sebelumnya telah
dibahas.
Gambar 4.6 Activity Diagram Untuk Kegiatan PengirimanAnalisis Sistem Berjalan
4.3.2.2 Analisis Sistem Usulan
Sebelum masuk ke pembahasan dalam tahapan analisis sistem
dengan menggunakan metodologi analasis berorientasi Object Oriented
Analysis (OOA) dengan tools UML, ada baiknya kita menguraikan
terlebih dahulu solusi pengembangan sistem atau tujuan di lakukannya
penelitian ini yaitu:
71
1. Mengembangkan Sistem Informasi Pengiriman Barang yang masih
berbasis file menjadi sistem aplikasi menggunakan konsep database
sehingga memudahkan user untuk menggunakan aplikasi ini.
2. Adanya sistem berbasis SMS Gateway sebagai upaya untuk
meningkatkan pelayanan perusahaan, dengan adanya aplikasi SMS
Gateway ini diharapkan informasi yang diberikan lebih tepat dan
akurat.
3. Untuk memenuhi kebutuhan aplikasi ini maka adanya penambahan data
yakni No. SO (Nomor Surat Order) dan No. SJ (Nomor Surat Jalan)
4. Menyediakan fitur-fitur laporan yang lengkap sehingga membantu
pihak manajemen dalam memperoleh informasi yang dibutuhkan untuk
pengambilan keputusan yang tepat dan akurat.
Gambar 4.7 berikut adalah diagram yang digunakan penulis untuk
menggambarkan sistem yang diusulkan.
Gambar 4.7 Diagram sistem yang diusulkan pada PD. Guna Pratama
72
Keterangan Gambar :
1 : Pelanggan menghubungi admin untuk melakukan pemesanan
kendaraan untuk melakukan ekspedisi, terjadi transaksi penawaran
harga.
2 : Admin memasukkan data pemesanan kendaraan ke dalam Aplikasi
yang dibuat.
3 : Admin menghubungi supir untuk melakukan ekspedisi.
4 : Supir menuju ke lokasi pelanggan untuk melakukan ekspedisi barang
5 : Jika telah selesai melakukan ekspedisi barang supir SMS ke Ponsel
SMS server dengan format tertentu
6 : Sistem secara otomatis akan mengupdate transaksi ekspedisi yang
telah sampai pada tujuan kemudian SMS server otomatis akan
mengirim pesan ke pelanggan untuk menginformasikan barang yang
telah terkirim. Admin juga dapat menerima informasi barang yang
telah terkirim jika membutuhkannya pada malam hari.
Setelah uraian diatas dipaparkan, tiba saatnya bagi penulis untuk
menganalisis sistem dengan menggunakan pendekatan OOA dengan tools
UML, berikut pembahasannya.
4.3.2.2.1 Daftar Pengguna Sistem
Pada tahap ini adalah mengidentifikasi pelaku bisnis (pengguna
sistem). Dengan mengkonsentrasikan pada pelaku, kita dapat
mengetahui bagaimana sistem ini akan digunakan dan bagaimana sistem
ini akan dibangun, dan juga membantu menyaring dan mendefinisikan
lebih lanjut lingkup dan batasan sisten tersebut. Memang tabel ini tidak
73
termasuk dalam model yang disediakan oleh UML, namun menurut
penulis tabel berikut memiliki peran yang cukup penting untuk
mendokumentasikan pelaku yang nantinya akan digunakan dalam
perancangan use case. Berikut adalah daftar pelaku utama yang
berinteraksi dan memanfaatkan aplikasi sistem informasi pengiriman
barang berbasis SMS Gateway pada PD. Guna Pratama.
Tabel 4.1 Daftar Pengguna Sistem
Istilah Sinonim Deskripsi
1. Admin Marketing Individu atau bagian dari perusahaan
yaitu bagian pemasaran yang
memelihara dan memiliki akses penuh
terhadap seluruh fitur yang disediakan
aplikasi dan bertanggung jawab
terhadap pengolahan data ekspedisi
atau pengiriman barang.
2. Pelanggan Pelanggan Individu atau Perusahaan yang
melakukan pemesanan kendaraan
untuk dilakukan ekspedisi atau
pengiriman barang yang individu atau
perusahaan tersebut miliki.
3. Driver dan
Co.Driver
Supir Individu atau bagian dari perusahaan
yang melakukan ekspedisi barang
pelanggan, yakni mengambil barang
ke tempat pelanggan dan
mengirimkan barang tersebut sampai
ke tujuan yang telah ditentukan. Supir
mengirim SMS dengan format yang
telah ditentukan jika barang telah
sampai pada tujuan.
74
4. General
Manajer
Manajer Umum Individu atau bagian dari perusahaan
yaitu bagian manajemen, yang
mengakses seluruh laporan yang
disediakan aplikasi ini untuk
mendapatkan informasi yang
dibutuhkan dalam pengambilan
keputusan dan juga sebagai data untuk
evaluasi perusahaan.
4.3.2.2.2 Use Case Diagram
Salah satu diagram UML yang menggambarkan secara grafis
suatu sistem dengan kumpulan use case, pelaku (actor), dan hubungan
(relationship) keduanya. Penulis menggunakan diagram ini untuk
memberikan gambaran tentang hubungan action antara pelaku sistem
atau user sistem atau actor dengan use case nya.
75
Master Data Kendaraan
Master Data Pelanggan
Master Data Supir
SMS Server dan Broadcast
Master Pesan
Cetak SO
Bongkar Muat
Batal Muat
PelangganAdmin
Manajer
Master Data Status Kendaraan
Input SO
Laporan Data Kendaraan
Laporan Data Pelanggan
Laporan Data Supir
Laporan Data Status Kendaraan
Laporan Ekspedisi Per Periode
Supir
Laporan Pembayaran Ekspedisi per Periode
Input Pembayaran
initiates
initiatesinitiatesinitia tes
in itiates
ini tiate s
initiates
initi
ate
sini tiate s
initiatesinitiates
initiates
TransaksiCetak Pembayaran
Ekspedisiinitiates
initiates
initiates
initiates
initia
tes
initia
tes
init i
ates
initiates
initiates
initi
ates
initi
ates
ini ti
ate s
initi
ates
initi
ates
Transaksi
Transaksi
Transaksi
Gambar 4.8 Use Case Diagram Analisis Sistem Usulan
4.3.2.2.3 Deskripsi Use Case Tingkat Analisis
Setiap use case di atas harus dideskripsikan dalam dokumen
yang disebut dengan dokumen flow of event. Dokumentasi ini
mendefinisikan apa yang harus dilakukan oleh sistem ketika aktor
76
mengaktifkan use case. Struktur dari dokumen use case ini bisa
bermacam-macam, tetapi umumnya deskripsi ini paling tidak harus
mengandung: (Quantrani, 2000).
Brief Description (Deskripsi Singkat).
Aktor yang terlibat.
Precondition yang penting bagi use case untuk memulai.
Deskripsi rinci dari aliran kejadian yang mencakup :
o Basic Flow dari kejadian yang bisa dirinci lagi menjadi
o Alternative Flow untuk mendefinisikan situasi perkecualian
o Pos tcondition yang menjelaskan state dari sistem setelah use
case berakhir.
Selain hal diatas dapat dipakai juga beberapa deskripsi tambahan
untuk melengkapi pendeskripsian use case yang dibuat. Setelah
pembuatan use case pada sub bab sebelumnya kini penulis akan
menjelaskan spesifikasi use case yang telah penulis tentukan.
4.3.2.2.3.1 Spesifikasi Naratif Use Case Master Data Pelanggan Tingkat
Analisis
Tabel 4.2 Spesifikasi Naratif Use Case Master Data Pelanggan Tingkat Analisis
Use case name Master Data PelangganAktor Operator AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu menambah, mengubah, dan menghapus data pelanggan. Pada tahap penyelesaian, admin akan diberikan informasi data pelanggan yang sudah ter-update.
Basic Flow 1) Kode Pelanggan secara otomatis tampil2) Admin menambah, mengubah,
menghapus Nama, Nomor, Jalan, Kota, Kecamatan, Kelurahan, Kode Pos, No. HP, Contact Person.
3) Sistem memvalidasi Kode Pelanggan,
77
Nama, Alamat, No. HP, Contact Person.4) Sistem akan merespon dari proses
tersebut untuk memberikan keterangan.Alternatif flow Jika dalam menambah, mengubah Nama, Nomor,
Jalan, Kota, Kelurahan, Kecamatan, Kode Pos,No. HP, dan Contact Person tidak sesuai maka user harus mengisi kembali
Pre condition Admin harus Login terlebih dahulu sebelum Input Data Pelanggan.
Post condition Data Pelanggan telah disimpan ke database.
4.3.2.2.3.2 Spesifikasi Naratif Use Case Master Data Kendaraan Tingkat
Analisis
Tabel 4.3 Spesifikasi Naratif Use Case Master Data Kendaraan Tingkat Analisis
Use case name Master Data KendaraanAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu menambah, mengubah, dan menghapus data kendaraan. Pada tahap penyelesaian, admin akan diberikan informasi data kendaraan yang sudah ter-update.
Basic Flow 1) Kode Kendaraan secara otomatis tampil2) Admin menambah, mengubah, menghapus
No. Plat, Jenis Mobil, Berat Muatan, Volume.
3) Sistem memvalidasi Kode Kendaraan, No. Plat, Jenis Mobil, Berat Muatan, Volume.
4) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam menambah, mengubah No. Plat, Jenis Mobil, Berat Muatan dan Volume tidak sesuai maka user harus mengisi kembali
Pre condition Admin harus Login terlebih dahulu sebelum Input Data Kendaraan.
Post condition Data Kendaraan telah disimpan ke database.
4.3.2.2.3.3 Spesifikasi Naratif Use Case Master Data Supir Tingkat Analisis
Tabel 4.4 Spesifikasi Naratif Use Case Master Data Supir Tingkat Analisis
Use case name Master Data SupirAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu menambah, mengubah, dan menghapus
78
data supir. Pada tahap penyelesaian, admin akan diberikan informasi data supir yang sudah ter-update.
Basic Flow 1) Kode Supir secara otomatis tampil2) Admin menambah, mengubah, menghapus
Nama, Alamat, No. Hp.3) Sistem memvalidasi Nama, Nomor, Jalan,
Kota, Kelurahan, Kecamatan, Kode Pos, No. HP.
4) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam menambah, mengubah Nama, Nomor, Jalan, Kota, Kelurahan, Kecamatan, Kode Pos, No. Hp tidak sesuai maka user harus mengisi kembali
Pre condition Admin harus Login terlebih dahulu sebelum Input Data Supir.
Post condition Data Supir telah disimpan ke database.
4.3.2.2.3.4 Spesifikasi Naratif Use Case Master Data Status Kendaraan
Tingkat Analisis
Tabel 4.5 Spesifikasi Naratif Use Case Master Data Status Kendaraan Tingkat
Analisis
Use case name Master Data Status KendaraanAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu menambah, mengubah, dan menghapus data status kendaraan. Pada tahap penyelesaian, admin akan diberikan informasi data status kendaraan yang sudah ter-update.
Basic Flow 1) Admin menambah dan mengubah Status,Posisi, Driver, dan Co. Driver.
2) Sistem memvalidasi Status, Posisi, Driver, dan Co. Driver.
3) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam menambah, mengubah Status, Posisi, Driver, dan Co. Driver tidak sesuai maka user harus mengisi kembali
Pre condition Admin harus Login terlebih dahulu sebelum Input Data Status Kendaraan.
Post condition Data Status Kendaraan telah disimpan ke database.
79
4.3.2.2.3.5 Spesifikasi Naratif Use Case Transaksi Cetak SO Tingkat
Analisis
Tabel 4.6 Spesifikasi Naratif Use Case Transaksi Cetak SO Tingkat Analisis
Use case name Transaksi Cetak SOAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu menambah faktur pengiriman barang. Pada tahap penyelesaian, admin akan diberikan Cetak SO dengan format kertas, dan data pengiriman barang tersimpan ke database.
Basic Flow 1) No. faktur secara otomatis tampil2) Admin menambah Kode Pelanggan, Nama,
Jurusan, Penerima, Jenis Muatan, Berat Muatan, Harga Satuan, Tanggal Muat, No. Plat, Driver dan Co. Driver
3) Sistem memvalidasi Kode Pelanggan, Nama, Jurusan, Penerima, Jenis Muatan, Berat Muatan, Harga Satuan, Tanggal Muat, No. Plat, Driver dan Co. Driver .
4) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam menambah data SO pengiriman barangtidak sesuai maka user harus mengisi kembali
Pre condition Admin harus Login terlebih dahulu sebelum Cetak SO.
Post condition Menampilkan Cetak SO dan data so telah disimpan ke database .
4.3.2.2.3.6 Spesifikasi Naratif Use Case Transaksi Bongkar Muat Tingkat
Analisis
Tabel 4.7 Spesifikasi Naratif Use Case Transaksi Bongkar Muat Tingkat Analisis
Use case name Transaksi Bongkar MuatAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu mengupdate status ekspedisi bahwa barang yang dikirim telah sampai pada tujuan. Pada tahap penyelesaian, admin akan diberikan informasi transaksi bongkar muat telah di update.
Basic Flow 1) Tampil data SO yang belum terkirim2) Admin memilih data SO untuk mengupdate
80
data SJ yang telah terkirim3) Admin mengupdate data SJ dengan
memasukkan tanggal bongkar muat.4) Sistem memvalidasi tanggal bongkar muat5) Sistem akan merespon dari proses tersebut
untuk memberikan keterangan.Alternatif flow Jika dalam menambah data bongkar muat tidak
sesuai maka user harus mengisi kembaliPre condition Admin harus Login terlebih dahulu sebelum
Transaksi Bongkar MuatPost condition Data Bongkar Muat telah terupdate ke database.
4.3.2.2.3.7 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat
Analisis
Tabel 4.8 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat Analisis
Use case name Transaksi Batal MuatAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yaitu membatalkan pengiriman barang yang telah dipesan. Pada tahap penyelesaian, admin akan diberikan informasi transaksi batal muat telah di update.
Basic Flow 1) Tampil data SJ yang belum terkirim2) Admin memilih data SJ untuk membatalkan
pengiriman barang3) Sistem memvalidasi status SJ yang ingin
dibatalkan4) Sistem akan merespon dari proses tersebut
untuk memberikan keterangan.Alternatif flow Jika status SJ yang ingin dibatalkan tidak sesuai
maka dapat menekan tombol (No) pada konfirmasi dialog
Pre condition Admin harus Login terlebih dahulu sebelum Transaksi Batal Muat
Post condition Data Batal Muat telah terupdate ke database.
81
4.3.2.2.3.8 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran
Ekspedisi Tingkat Analisis
Tabel 4.9 Spesifikasi Naratif Use Case Transaksi Pembayaran Ekspedisi Tingkat
Analisis
Use case name Transaksi Pembayaran EkspedisiAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni menginput data pembayaran ekspedisi.Pada tahap penyelesaian, admin akan diberikan informasi transaksi pembayaran ekspedisi telah lunas dan cetak bukti transaksi pembayaran ekspedisi.
Basic Flow 1) Tampil data transaksi pembayaran yang belum lunas
2) Admin memilih data SO yang ingin di update transaksi pembayaran ekspedisi
3) Admin menginput data jumlah bayar dan keterangan bayar
4) Sistem memvalidasi data jumlah bayar dan keterangan bayar
5) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam menambah data transaksi ekspedisi tidak sesuai maka admin menginput kembali data transaksi
Pre condition Admin harus Login terlebih dahulu sebelum Transaksi Pembayaran Ekspedisi
Post condition Data Transaksi Pembayaran Ekspedisi telah terupdate di database dan secara otomatis tampil cetak pembayaran untuk pelanggan.
4.3.2.2.3.9 Spesifikasi Naratif Use Case SMS Server dan Broadcast
Ekspedisi Tingkat Analisis
Tabel 4.10 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat
Analisis dengan Aktor sebagai Admin
Use case name SMS Server dan BroadcastAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melakukan setting SMS Server dan Broadcast SMS sehingga aplikasi layanan berbasis SMS ini dapat digunakan.
82
Basic Flow 1) Admin melakukan setting SMS Server dengan menginputkan data Port, Bit Per Second, Data Bit, Parity, Stop Bits, Flow Control.
2) Sistem memvalidasi data Port, Bit Per Second, Data Bit, Parity, Stop Bits, Flow Control.
3) Sistem akan merespon dari proses tersebut untuk memberikan keterangan bahwa SMS Server telah terhubung
4) Admin dapat melakukan broadcast SMS dengan menginputkan data Judul Pesan, Isi Pesan, Kirim
5) Sistem memvalidasi data Judul Pesan, Isi Pesan, Kirim
6) Sistem akan merespon dari proses tersebut untuk memberikan keterangan.
Alternatif flow Jika dalam proses Setting SMS Server dan Broadcast tidak sesuai maka admin menginputkan kembali data Setting SMS Server dan Broadcast
Pre condition Admin harus Login terlebih dahulu sebelum Setting SMS Server dan Broadcast
Post condition SMS Server telah terhubung sehingga aplikasi dapat menerima dan mengolah SMS yang masuk, dan juga dapat melakukan Broadcast SMS.
Tabel 4.11 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat
Analisis dengan Aktor sebagai Supir
Use case name SMS Server dan BroadcastAktor SupirBriefDescription
Use case ini mendeskripsikan event dari seorang supir yakni mengirimkan request SMS ke ponsel SMS Server sesuai dengan format yang telah ditentukan. Layanan SMS Gateway yang tersedia untuk supir diantaranya ialah request mengenai status pengiriman barang dan status kendaraan
Basic Flow 1) Supir mengirim request SMS ke ponsel SMS Server.
2) Sistem akan merespon dengan menampilkan informasi dari SMS Center.
3) Sistem akan melakukan query pesan balasan sesuai dengan format SMS yang supir kirim
4) Sistem akan menampilkan informasi PDU pengiriman pada kolom proses yang menyatakan bahwa request SMS telah dibalas.
83
5) Sistem akan merespon dengan merubah status pesan balasan menjadi terkirim.
Alternatif flow Jika ada kesalahan format SMS maka Ponsel SMS Server akan mengirimkan balasan format SMS yang dikirim salah.
Pre condition Admin harus mendaftarkan No. HP Supir ke SistemPost condition Supir akan mendapatkan balasan SMS sesuai
dengan apa yang di request. Untuk request mengenai status pengiriman barang, sistem akan mengirimkan forward SMS ke pelanggan
Tabel 4.12 Spesifikasi Naratif Use Case SMS Server dan Broadcast Tingkat
Analisis dengan Aktor sebagai Pelanggan
Use case name SMS Server dan BroadcastAktor PelangganBriefDescription
Use case ini mendeskripsikan event dari seorang pelanggan yakni mengirimkan request SMS ke ponsel SMS Server sesuai dengan format yang telah ditentukan. Layanan SMS Gateway yang tersedia untuk pelanggan diantaranya ialah request mengenai info tagihan, pembayaran ekspedisi dan saran
Basic Flow 1) Pelanggan mengirim request SMS ke ponsel SMS Server.
2) Sistem akan merespon dengan menampilkan informasi dari SMS Center.
3) Sistem akan melakukan query pesan balasan sesuai dengan format SMS yang pelanggan kirim
4) Sistem akan menampilkan informasi PDU pengiriman pada kolom proses yang menyatakan bahwa request SMS telah dibalas.
5) Sistem akan merespon dengan merubah status pesan balasan menjadi terkirim.
Alternatif flow Jika ada kesalahan format SMS maka Ponsel SMS Server akan mengirimkan balasan format SMS yang dikirim salah.
Pre condition Admin harus mendaftarkan No. HP Pelanggan ke Sistem
Post condition Pelanggan akan mendapatkan balasan SMS sesuai dengan apa yang di request.
84
4.3.2.2.3.10 Spesifikasi Naratif Use Case Master Pesan Tingkat Analisis
Tabel 4.13 Spesifikasi Naratif Use Case Master Pesan Tingkat Analisis
Use case name Master PesanAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat daftar pesan yang masuk (Inbox) atau keluar (Outbox) berdasarkan periode.
Basic Flow 1) Admin menyeleksi tanggal, bulan dan tahun yang terdapat dalam combo list, kemudian admin memasukkan tanggal, bulan, atau tahun kedalam DateChooser.
2) Sistem memvalidasi seleksi tanggal, bulan atau tahun tersebut.
3) Sistem akan merespon dari proses tersebut dengan menampilkan data pesan masuk (Inbox) atau pesan keluar (Outbox) berdasarkan seleksi tanggal, bulan atau tahun
Alternatif flow Jika dalam proses pencarian tidak sesuai makasistem akan memberikan keterangan tidak ada pesan yang masuk atau keluar pada periode tersebut.
Pre condition Admin harus Login terlebih dahulu sebelum Master Pesan
Post condition Admin dapat melihat daftar pesan yang masuk dan keluar berdasarkan input tanggal, bulan atau tahun yang dimasukkan.
4.3.2.2.3.11 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat
Analisis
Tabel 4.14 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat Analisis
Use case name Laporan Data Pelanggan Aktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat seluruh data pelanggan yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data pelanggan dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
85
Basic Flow 1) Admin mengklik menu laporan data pelanggan.
2) Sistem menampilkan seluruh daftar pelanggan
3) Admin dapat menyimpan atau mencetak laporan data pelanggan
Alternatif flow Jika sistem tidak dapat menampilkan laporan data pelanggan maka periksa koneksi databasenya atau belum ada data pelanggan yang di masukkan, admin dapat meng-input data pelanggan.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Data Pelanggan
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data pelanggan untuk diberikan kepada pihak manajemen.
4.3.2.2.3.12 Spesifikasi Naratif Use Case Laporan Data Kendaraan Tingkat
Analisis
Tabel 4.15 Spesifikasi Naratif Use Case Laporan Data Kendaraan Tingkat
Analisis
Use case name Laporan Data Kendaraan Aktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat seluruh data kendaraan yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data kendaraan dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Basic Flow 1) Admin mengklik menu laporan data kendaraan.
2) Sistem menampilkan seluruh daftar kendaraan
3) Admin dapat menyimpan atau mencetak laporan data kendaraan
Alternatif flow Jika sistem tidak dapat menampilkan laporan data kendaraan maka periksa koneksi databasenya atau belum ada data kendaraan yang di masukkan, admin dapat meng-input data kendaraan.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Data Kendaraan
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data kendaraan untuk diberikan kepada pihak manajemen.
86
4.3.2.2.3.13 Spesifikasi Naratif Use Case Laporan Data Supir Tingkat
Analisis
Tabel 4.16 Spesifikasi Naratif Use Case Laporan Data Supir Tingkat Analisis
Use case name Laporan Data Supir Aktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat seluruh data supir yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data supir dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Basic Flow 1) Admin mengklik menu laporan data supir.2) Sistem menampilkan seluruh daftar supir3) Admin dapat menyimpan atau mencetak
laporan data supirAlternatif flow Jika sistem tidak dapat menampilkan laporan data
supir maka periksa koneksi databasenya atau belum ada data kendaraan yang di masukkan, admin dapat meng-input data supir.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Data Supir
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data supir untuk diberikan kepada pihak manajemen.
4.3.2.2.3.14 Spesifikasi Naratif Use Case Laporan Data Status Kendaraan
Tingkat Analisis
Tabel 4.17 Spesifikasi Naratif Use Case Laporan Data Status Kendaraan Tingkat
Analisis
Use case name Laporan Data Status Kendaraan Aktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat seluruh data status kendaraan yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data status kendaraan dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Basic Flow 1) Admin mengklik menu laporan data status kendaraan.
87
2) Sistem menampilkan laporan data status kendaraan
3) Admin dapat menyimpan atau mencetak laporan data status kendaraan
Alternatif flow Jika sistem tidak dapat menampilkan laporan data status kendaraan maka periksa koneksi databasenya atau belum ada data kendaraan yang di masukkan, admin dapat meng-input data status kendaraan.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Data Status Kendaraan
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data status kendaraan untuk diberikan kepada pihak manajemen.
4.3.2.2.3.15 Spesifikasi Naratif Use Case Laporan Ekspedisi Per Periode
Tingkat Analisis
Tabel 4.18 Spesifikasi Naratif Use Case Laporan Ekspedisi Per Periode Tingkat
Analisis
Use case name Laporan Ekspedisi Per PeriodeAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat data ekspedisi berdasarkan status pengiriman per periode yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data ekspedisi per periodedalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Basic Flow 1) Admin memasukan periode tanggal dan memilih status ekspedisi (terproses, terkirim, batal).
2) Sistem menampilkan laporan ekspedisi per periode berdasarkan periode tanggal dan status pengiriman barang
3) Admin dapat menyimpan atau mencetak laporan ekspedisi per periode
Alternatif flow Jika sistem tidak dapat menampilkan laporan data ekspedisi per periode maka periksa koneksi databasenya.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Ekspedisi per Periode
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data ekspedisi per periode untuk diberikan kepada pihak manajemen.
88
4.3.2.2.3.16 Spesifikasi Naratif Use Case Laporan Pembayaran Ekspedisi
Per Periode Tingkat Analisis
Tabel 4.19 Spesifikasi Naratif Use Case Laporan Pembayaran Ekspedisi Per
Periode Tingkat Analisis
Use case name Laporan Pembayaran Ekpedisi per PeriodeAktor AdminBriefDescription
Use case ini mendeskripsikan event dari seorang admin yakni melihat data pembayaran ekspedisi per periode yang berbentuk document format, admin diberikan fasilitas untuk menyimpan laporan data pembayaran ekspedisi per periode dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Basic Flow 1) Admin memasukan periode tanggal pembayaran ekspedisi
2) Sistem menampilkan laporan pembayaran ekspedisi per periode berdasarkan periode tanggal
3) Admin dapat menyimpan atau mencetak laporan pembayaran ekspedisi per periode
Alternatif flow Jika sistem tidak dapat menampilkan laporan data pembayaran ekspedisi per periode maka periksa koneksi databasenya.
Pre condition Admin harus Login terlebih dahulu sebelum melihat Laporan Pembayaran Ekspedisi per Periode
Post condition Admin dapat melihat, menyimpan dan mencetak laporan data pembayaran ekspedisi per periode untuk diberikan kepada pihak manajemen.
4.3.2.2.4 Activity Diagram
Berikut adalah beberapa diagram aktivitas yang terbentuk dari
kegiatan bisnis dan use case diagram yang sebelumnya telah dibahas.
89
4.3.2.2.4.1 Kegiatan Pengiriman Barang Berbasis SMS Gateway
Gambar 4.9 Activity Diagram Untuk Kegiatan Pengiriman Barang Berbasis SMS
Gateway
90
4.3.2.2.4.2 Use Case Master Data Pelanggan
Gambar 4.10 Activity Diagram Untuk Use Case Master Data Pelanggan
4.3.2.2.4.3 Use Case Master Data Kendaraan
Gambar 4.11 Activity Diagram Untuk Use Case Master Data Kendaraan
91
4.3.2.2.4.4 Use Case Master Data Supir
Gambar 4.12 Activity Diagram Untuk Use Case Master Data Supir
4.3.2.2.4.5 Use Case Master Data Status Kendaraan
Gambar 4.13 Activity Diagram Untuk Use Case Master Data
Status Kendaraan
92
4.3.2.2.4.6 Use Case Transaksi Cetak SO
Gambar 4.14 Activity Diagram Untuk Use Case Transaksi Cetak SO
93
4.3.2.2.4.7 Use Case Transaksi Bongkar Muat
Gambar 4.15 Activity Diagram Untuk Use Case Transaksi Bongkar Muat
4.3.2.2.4.8 Use Case Transaksi Batal Muat
Select SJ
Record Data Batal Muat
Menyimpan Data Batal Muat
Select SJ
[data batal muat yang diinputkan invalid]
[data batal muat yang diinputkan valid]
Select Transaksi Batal Muat
[memilih SJ yang ingin dibatalkan]
Cancel
[membatalkan transaksi]
End
Start
End
Gambar 4.16 Activity Diagram Untuk Use Case Transaksi Bongkar Muat
94
4.3.2.2.4.9 Use Case Transaksi Cetak Pembayaran Ekspedisi
Gambar 4.17 Activity Diagram Untuk Use Case Transaksi Cetak
Pembayaran Ekspedisi
95
4.3.2.2.4.10 Use Case SMS Server dan Broadcast
Input Port Settings SMS Server
Input Data Broadcast
Start
End
[else Gagal buka Koneksi]
Save Konfigurasi Setting terminal
[menyimpan konfigurasi settingterminal (SMS Server)]
Buka Koneksi
[membuka koneksi SMS Server, sehingga dapat melakukan
proses kirim dan terima SMS]
Select Tujuan Broadcast
Kirim SMS
Kirim Request SMS
Query Pesan Balasan Request SMS Admin
Display Info SMSC
Display PDU Pengiriman Pesan Balasan
Kirim SMS
Format SMS Salah
[else Format Request SMS yang dikirim salah ]
[ if Judul Pesan (Format SMS Admin) ]
[ if Buka Koneksi]
Select SMS Server dan Broadcast
End
Gambar 4.18 Activity Diagram Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Admin
96
Gambar 4.19 Activity Diagram Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Supir
Gambar 4.20 Activity Diagram Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Pelanggan
97
4.3.2.2.4.11 Use Case Master Pesan
Select Master Pesan
[valid]
Start
Menampilkan data Inbox atau Outbox
Input Date
[masukan range tanggal data inbox dan outbox(broadcast)]
Searching Data By Date
Back Input Date[data tidak ada]
[kembali masukan range tanggal data inbox atau
outbox(broadcast)]
Cancel
[membatalkan transaksi] [data tidak ada]
End
Select Inbox atau Outbox
[memilih jenis pesan yang ingin dilihat]
End
Gambar 4.21 Activity Diagram Untuk Use Case Master Pesan
4.3.2.2.4.12 Use Case Laporan Data Pelanggan
Gambar 4.22 Activity Diagram Untuk Use Case Laporan Data Pelanggan
98
4.3.2.2.4.13 Use Case Laporan Data Kendaraan
Gambar 4.23 Activity Diagram Untuk Use Case Laporan Data Kendaraan
4.3.2.2.4.14 Use Case Laporan Data Supir
Gambar 4.24 Activity Diagram Untuk Use Case Laporan Data Supir
99
4.3.2.2.4.15 Use Case Laporan Data Status Kendaraan
Gambar 4.25 Activity Diagram Untuk Use Case Laporan DataStatus Kendaraan
4.3.2.2.4.16 Use Case Laporan Ekspedisi per Periode
Gambar 4.26 Activity Diagram Untuk Use Case Laporan Ekspedisi per Periode
100
4.3.2.2.4.17 Use Case Laporan Pembayaran Ekspedisi per Periode
Gambar 4.27 Activity Diagram Untuk Use Case Laporan PembayaranEkspedisi per Periode
4.3.3 Perancangan Sistem (Design)
Pada bagian ini, akan dibahas secara detail dan terperinci mengenai
aplikasi sistem baru yang nantinya akan penulis implementasikan kedalam bahasa
pemrograman dan hasil tampilan yang dibuat dengan harapan dapat memberikan
hasil yang maksimal didalam menunjang kelancaran operasional perusahaan.
Sehingga dapat menyediakan data dan informasi yang cukup bagi pihak
perusahaan sebagai dasar pengambilan keputusan strategis dan operasional dalam
rangka meningkatkan omset pendapatan perusahaan tersebut.
101
Sebagaimana yang telah dijelaskan pada bab sebelumnya, pada tahapan
desain sistem ini penulis menggunakan pendekatan model driven yaitu
penggunaan gambar, diagram, atau grafis dalam mengkomunikasikan suatu
masalah, memecahkan masalah, persyaratan-persyaratan bisnis, dan solusi-solusi
bisnis. Adapun metode yang digunakan adalah Desain berorientasi objek /
Object-oriented design (OOD). Penulis menggunakan Unified Modelling
Language (UML) adalah sebagai tools pemodelan untuk perancangan dan
pengembangan aplikasi yang berorientasi objek.
Adapun terdapat tahapan-tahapan yang dilakukan oleh penulis dalam
perancangan sistem ini, tahapan-tahapan tersebut terdiri dari diagram dan tabel
tekstual yang memang disediakan oleh UML, namun ada juga beberapa diagram
atau gambar tambahan diluar UML yang bagi penulis memiliki peranan penting
dalam perancangan ini. Berikut tahapan-tahapan tersebut.
4.3.3.1 Deskripsi Use Case Tingkat Perancangan
Pada tahap ini yaitu mengimplementasikan use case diagram yang pada
sub-bab sebelumnya telah dibahas kedalam bentuk narasi atau kata-kata untuk
mendokumentasikan interaksi antara user sistem dan sistem itu sendiri. Sangat
detail dalam menggambarkan apa yang diperlukan. Berbeda dengan use case
diagram, use case desain sistem menggunakan sebuah narasi dari pandangan
pengguna sistem, use case desain sistem lebih bersifat percakapan (dialog).
102
4.3.3.1.1 Spesifikasi Naratif Use Case Master Data Pelanggan Tingkat
Perancangan
Tabel 4.20 Spesifikasi Use Case Naratif Master Data Pelanggan Tingkat
Perancangan
Nama Use Case : Master Data Pelanggan
Actor (s) Admin
Deskripsi : Use case ini mendeskripsikan event dari seorang admin yaitu menambah, mengubah, dan menghapus data Pelanggan. Pada tahap penyelesaian, admin akan diberikan informasi data pelanggan yang sudah ter-update.
Prakondisi : Seorang individu yang menambah, merubah dan menghapus data pelanggan haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk menambah, merubah dan menghapus data pelanggan.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan input data pelanggan untuk menambah, merubah dan menghapus data pelanggan Guna Pratama.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Master] [Data Pelanggan].
Langkah 3 : Admin memasukkan data pelanggan ke dalam field yang telah disediakan dengan benarLangkah 5 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 7 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Master data Pelanggan yang berisi field input data, Display informasi data pelanggan yang sebelumnya telah tersimpan, beberapa tombol navigasi,seperti [Simpan], [Ubah], [Hapus], [Batal], dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.
103
Langkah 6 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut ke dalam database sistem dan menampilkan kembali informasi yang telah terupdate ke dalam Display informasi data pelanggan.Langkah 8 : Sistem merespon dengan menutup Form Master data Pelanggan dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika Admin men-double klik pada salah satu data pada Display informasi data pelanggan, maka sistem secara otomatis akan menampilkan kembali data tersebut kedalam field input data dan melanjutkan ke Langkah 3. Alt-Langkah 3b : Admin mengklik tombol [Ubah] jika ingin menyimpan data pelanggan yang telah dirubah dan melanjutkan ke Langkah 6. Alt-Langkah 3c : Jika Admin mengklik tombol [Hapus], maka sistem akan menghapus data yang telah diseleksi tadi dan menampilkan kembali informasi yang telah terupdate ke dalam Display informasi Pelanggan Guna Pratama dan kembali ke Langkah 2. Alt-Step 5 : Jika Admin mengklik tombol [Batal] maka sistem akan mengosongkan field input data dan kembali ke langkah 2.Alt-Step 7 : Jika admin ingin menambah data pelanggan, kembali ke langkah 3.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Pelanggan Guna Pratama telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data pelanggan yang
valid
104
4.3.3.1.2 Spesifikasi Naratif Use Case Master Data Kendaraan Tingkat
Perancangan
Tabel 4.21 Spesifikasi Naratif Use Case Master Data Kendaraan
Tingkat Perancangan
Nama Use Case : Master Data KendaraanActor (s) AdminDeskripsi : Use ini mendeskripsikan event dari seorang admin
yaitu menambah, merubah, dan menghapus data Kendaraan. Pada tahap penyelesaian, admin akan diberikan informasi data kendaraan yang sudah ter-update.
Prakondisi : Seorang individu yang menambah, merubah dan menghapus data barang haruslah Admin.Admin harus meng-sign in ke sebuah ystem untuk menambah, merubah dan menghapus data kendaraan.
Pemicu : Use case ini diinisiasi saat admin menyeleksi pilihan master data kendaraan untuk menambah, merubah dan menghapus data kendaraan.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Master] [Data Kendaraan].Langkah 3 : Admin memasukkan data kendaraan ke dalam field yang telah disediakan dengan benarLangkah 5 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 7 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Master Data Kendaraan yang berisi field input data, Display informasi data pelanggan yang sebelumnya telah tersimpan, beberapa tombol navigasi, seperti [Simpan], [Ubah], [Hapus], [Batal], [Cari], dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 6 : Sistem merespon dengan menyimpan data yang
105
telah diinputkan tersebut ke dalam database sistem dan menampilkan informasi yang telah terupdate ke dalam Display informasi data kendaraan yang terdapat pada Form Data kendaraan.Langkah 8 : Sistem merespon dengan menutup Form Master Data Kendaraan dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Langkah 3a : Admin mengklik tombol [Cari] untuk melihat Form Data Kendaraan yang telah terupdate. Jika Admin men-double klik pada salah satu data pada Display informasi data kendaraan, maka sistem secara otomatis akan menampilkan kembali data tersebut kedalam field input data pada Form Master Data Kendaraan dan melanjutkan ke Langkah 3. Alt-Langkah 3b : Admin mengklik tombol [Ubah] jika ingin menyimpan data kendaraan yang telah dirubah dan melanjutkan ke Langkah 6. Alt-Langkah 3c : Jika Admin mengklik tombol [Hapus], maka sistem akan menghapus data yang telah diseleksi, maka pada Form Data Kendaraan akan menampilkan informasi yang telah terupdate kembali ke Langkah 2. Alt-Step 5 : Jika Admin mengklik tombol [Batal] maka sistem akan mengosongkan field input data dan kembali ke langkah 2.Alt-Step 7 : Jika admin ingin menambah data kendaraan, kembali ke langkah 3.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi : Data kendaraan Guna Pratama telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid Admin sudah menyiapkan data kendaraan yang
valid
106
4.3.3.1.3 Spesifikasi Naratif Use Case Master Data Supir Tingkat
Perancangan
Tabel 4.22 Spesifikasi Naratif Use Case Master Data Supir Tingkat
Perancangan
Nama Use Case : Master Data SupirActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu menambah, mengubah, dan menghapus data Supir/Driver. Pada tahap penyelesaian, admin akan diberikan informasi data supir yang sudah ter-update.
Prakondisi : Seorang individu yang menambah, merubah dan menghapus data supir haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk menambah, merubah dan menghapus data supir Guna Pratama.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan master data supir untuk menambah, merubah dan menghapus data supir Guna Pratama.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Master] [Data Supir].
Langkah 3 : Admin memasukkan data supir ke dalam field yang telah disediakan dengan benarLangkah 5 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 7 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Master Data Supir yang berisi field input data, Display informasi data supir yang sebelumnya telah tersimpan, beberapa tombol navigasi, seperti [Simpan], [Ubah], [Hapus], [Batal], dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 6 : Sistem merespon dengan menyimpan data yang
107
telah diinputkan tersebut ke dalam database sistem dan menampilkan kembali informasi yang telah terupdate ke dalam Display informasi data supir.Langkah 8 : Sistem merespon dengan menutup Form Master Data Supir dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika Admin men-double klik pada salah satu data pada Display informasi data supir, maka sistem secara otomatis akan menampilkan kembali data tersebut kedalam field input data dan melanjutkan ke Langkah 3. Alt-Langkah 3b : Admin mengklik tombol [Ubah] jika ingin menyimpan data supir yang telah dirubah dan melanjutkan ke Langkah 6. Alt-Langkah 3c : Jika Admin mengklik tombol [Hapus], maka sistem akan menghapus data yang telah diseleksi tadi dan menampilkan kembali informasi yang telah terupdate ke dalam Display Informasi Supir Guna Pratama dan kembali ke Langkah 2. Alt-Step 5 : Jika Admin mengklik tombol [Batal] maka sistem akan mengosongkan field input data dan kembali ke langkah 2.Alt-Step 7 : Jika admin ingin menambah data supir, kembali ke langkah 3.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Supir Guna Pratama telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data supir yang valid
108
4.3.3.1.4 Spesifikasi Naratif Use Case Master Data Status Kendaraan Tingkat
Perancangan
Tabel 4.23 Spesifikasi Naratif Use Case Master Data Status Kendaraan
Tingkat Perancangan
Nama Use Case : Master Data Status KendaraanActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu menambah, mengubah, dan menghapus data Status Kendaraan. Pada tahap penyelesaian, admin akan diberikan informasi data status kendaraan yang sudah ter-update.
Prakondisi : Seorang individu yang menambah, merubah dan menghapus data status kendaraan haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk menambah, merubah dan menghapus data status kendaraan Guna Pratama.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan master data status kendaraan untuk menambah, merubah dan menghapus data status kendaraan Guna Pratama
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Master]
[Data Status Kendaraan].Langkah 3 : Admin mendouble klik pada salah satu display informasi data status kendaraan.Langkah 5 : Admin memasukkan data status kendaraan.Langkah 7 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Update].Langkah 9 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Master Data Status Kendaraan yang berisi display informasi data status kendaraan yang sebelumnya telah tersimpan yang terdapat di dalam tabel. Terdapat tombol navigasi [Refresh] dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 6 : Sistem mengontrol setiap data
109
yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 8 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut ke dalam database sistem dan menampilkan kembali informasi yang telah terupdate ke dalam Display informasi data status kendaraan pada Form Master Data Status Kendaraan.Langkah 10 : Sistem merespon dengan menutup Form Master Data Supir dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Langkah 3a : Admin mengklik tombol refresh untuk meyakinkan bahwa isi display data status kendaraan adalah yang paling update. Kembali ke Langkah 2. Alt-Step 7 : Jika Admin mengklik tombol [Batal] maka sistem tidak akan merubah display data status kendaraan dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Status kendaraan Guna Pratama telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data status kendaraan
yang valid
110
4.3.3.1.5 Spesifikasi Naratif Use Case Transaksi Cetak SO Tingkat
Perancangan
Tabel 4.24 Spesifikasi Naratif Use Case Transaksi Ekspedisi Barang
Tingkat Perancangan
Nama Use Case : Transaksi Cetak SOActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu menambah data pengiriman barang/ekpedisi. Pada tahap penyelesaian, akan muncul print/cetakan SO atau Ekspedisi untuk Pelanggan.
Prakondisi : Seorang individu yang menyimpan sekaligus membuat surat pemesanan pengiriman barang haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk menambah data pengiriman barang Guna Pratama.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan Transaksi Pengiriman Barang untuk menyimpan dan membuat surat pemesanan pengiriman barang.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Transaksi] [Pengiriman Barang].Langkah 3 : Admin memasukkan data pengiriman barang ke dalam field yang telah disediakan dengan benar.Langkah 5 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 7 : Admin mencetak Surat Pemesanan Pengiriman Barang untuk Pelanggan.Langkah 9 : Admin mengklik tombol
Langkah 2 : Sistem merespon dengan menampilkan Form Transaksi Pengiriman Barang yang berisi field input data pengiriman barang. Terdapat tombol navigasi [Simpan], [Batal] dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan. Langkah 6: Sistem merespon dengan
111
[Keluar] bila tidak ada proses input data lagi.
menyimpan data yang telah diinputkan tersebut ke dalam database sistem dan sistem secara otomatis membuat surat pemesanan pengiriman barang untuk pelanggan.Langkah 8 :Sistem merespon dengan mencetak surat pemesanan pengiriman barang.Langkah 10 : Sistem merespon dengan menutup Form Transaksi Pengiriman Barangdan menampilkanForm Menu Utama.
Bidang Alternatif :
Alt-Step 5 : Jika Admin mengklik tombol [Batal] maka sistem tidak akan menyimpan data pengiriman barang dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Pengiriman Barang Guna Pratama telah disimpan dan menghasilkan cetakan surat pemesanan pengiriman barang. Sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data supir yang
valid
4.3.3.1.6 Spesifikasi Naratif Use Case Transaksi Bongkar Muat Tingkat
Perancangan
Tabel 4.25 Spesifikasi Naratif Use Case Transaksi Bongkar MuatTingkat Perancangan
Nama Use Case : Transaksi Bongkar MuatActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu mengupdate data transaksi bongkar muat, yakni mengubah data pengiriman barang yang masih terproses menjadi terkirim. dan. Pada tahap penyelesaian, admin akan diberikan
112
informasi data pengiriman barang yang masih terproses.
Prakondisi : Seorang individu yang mengupdate data bongkar muat haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk mengupdate data bongkar muat.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan transaksi bongkar muat untuk mengupdate status bongkar muat.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Transaksi] [Bongkar Muat].Langkah 3 : Admin mendouble klik pada salah satu display data SO.Langkah 5 : Admin mendouble klik pada salah satu display SJ yang telah sampai tujuan, untuk mengisi field tanggal bongkar muat.Langkah 7 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 9 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Transaksi Bongkar Muat yang berisi display informasi data status kendaraan yang sebelumnya telah tersimpan yang terdapat di dalam tabel. Terdapat tombol navigasi [Simpan], [Batal] dan [Keluar].Langkah 4 : Sistem merespon dengan menampilkan data SJ yang masih terproses atau belum sampai pada tujuan dari SO yang kita pilih.Langkah 6 : Sistem mengontrol setiap data yang dimasukkan, kemudian menampilkan pada display data SJLangkah 8 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut ke dalam database sistem, data SJ yang telah sampai pada tujuan tidak akan tampil lagi, sehingga yang terlihat
113
hanya SO yangbelum terselesaikan pada Form Transaksi Bongkar Muat.Langkah 10 : Sistem merespon dengan menutup Form Transaksi Bongkar Muat dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Step 5 : Jika Admin mengklik tombol [Batal] maka sistem tidak akan menyimpan data pengiriman barang dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Bongkar Muat telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin menyiapkan data bongkar muat yang
valid
4.3.3.1.7 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat
Perancangan
Tabel 4.26 Spesifikasi Naratif Use Case Transaksi Batal Muat Tingkat
Perancangan
Nama Use Case : Transaksi Batal MuatActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu mengupdate data transaksi batal muat, yakni membatalkan proses pengiriman barang. Pada tahap penyelesaian, admin akan diberikan informasi data pengiriman barang yang masih terproses.
Prakondisi : Seorang individu yang mengupdate data batal muat haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk mengupdate data batal muat.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan transaksi batal muat untuk mengupdate status batal muat.
114
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Transaksi] [Batal Muat].Langkah 3 : Admin mendouble klik pada salah satu display data SJ yang masih terproses dan ingin dibatalkan.Langkah 5 : Admin mengkonfirmasi message dialog tersebut denganopsi pilihan [yes].Langkah 7 : Admin mengklik tombol [Keluar] bila tidak ada proses input data lagi.
Langkah 2 : Sistem merespon dengan menampilkan Form Transaksi Batal Muat yang berisi display informasi data status kendaraan yang sebelumnya telah tersimpan yang terdapat di dalam tabel. Terdapat tombol navigasi [Keluar].Langkah 4 : Sistem merespon dengan menampilkan konfirmasi dialog, apakah akan dilakukan batal muat.Langkah 6 : Sistem merespon dengan menyimpan data yang telah dikonfirmasi, kedalam database sistem. Sehingga data SJ yang dibatalkan tidak akan tampil lagi.Langkah 8 : Sistem merespon dengan menutup Form Transaksi Batal Muatdan menampilkanForm Menu Utama.
Bidang Alternatif :
Alt-Step 5 : Jika admin mengkonfirmasi dengan pilihan [no] maka Kembali ke langkah 2
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar].
Postkondisi Data Batal Muat telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data batal muat yang
valid
115
4.3.3.1.8 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran
Ekspedisi Tingkat Perancangan
Tabel 4.27 Spesifikasi Naratif Use Case Transaksi Cetak Pembayaran
Ekspedisi Tingkat Perancangan
Nama Use Case : Transaksi Cetak Pembayaran EkspedisiActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu menginput data transaksi pembayaran oleh pelanggan. Pada tahap penyelesaian, admin akan diberikan informasi data transaksi pembayaran yang sudah ter-update dan cetakan berupa bukti pembayaran apabila pembayaran telah lunas.
Prakondisi : Seorang individu yang menginput data transaksi pembayaran ekspedisi haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk menginput data transaksi pembayaran ekspedisi.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan transaksi pembayaran ekspedisi untuk menginput transaksi pembayaran ekspedisi.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Transaksi] [Pembayaran Ekspedisi].Langkah 3 : Admin mendouble klik pada salah satu display data pembayaran ekspedisi.Langkah 5 : Admin memasukkan data transaksi pembayaran ekspedisi.Langkah 7 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Bayar].Langkah 9 : Admin mengklik tombol [Keluar] bila tidak ada
Langkah 2 : Sistem merespon dengan menampilkan Transaksi Pembayaran Ekspedisi yang berisi display informasi data pembayaran ekspedisi yang belum lunas yang sebelumnya telahtersimpan. Terdapat tombol navigasi [Update] dan [Keluar].Langkah 4 : Sistem merespon dengan menampilkan FormData Pembayaran Ekspedisi dari tabel data pembayaran yang telah dipilih. Terdapat tombol navigasi [Bayar] dan [Keluar].Langkah 6 : Sistem mengontrol setiap data
116
proses input data lagi, pada Form Data Pembayaran Ekspedisi. Langkah 11 : Admin mengklik tombol [Keluar], bila tidak ingin melakukan input Transaksi Pembayaran lagi.
yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 8 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut ke dalam database sistem dan menampilkan kembali informasi yang telah terupdate ke dalam Display informasi data status kendaraan pada Form Transaksi Pembayaran Ekspedisi.Jika lunas maka akan tampil Cetak Pembayaran EkspedisiLangkah 10 : Sistem merespon dengan menutup Form Data Pembayaran Ekspedisi dan menampilkanForm Transaksi Pembayaran Ekspedisi.Langkah 12 : Sistem merespon dengan menutup Form Data Pembayaran Ekspedisi dan menampilkanForm Menu Utama.
Bidang Alternatif :
Alt-Step 3 : Admin mengklik tombol Update untuk memastikan bahwa display data pembayaran ekspedisi adalah data yang paling update . Kembali ke langkah 2.Alt-Step 7 : Jika Admin mengklik tombol [Batal] maka sistem tidak akan merubah display data pembayaran ekspedisi yang telah terupdate sebelumnya. Kembali ke langkah 2.Alt-Step 9 : Jika ingin melakukan pembayaran kembali hingga status lunas maka Kembali ke langkah 5.
117
Kesimpulan : Use case ini diakhiri ketika admin mengklik tombol [Keluar] pada Form Transaksi Pembayaran Ekspedisi.
Postkondisi Data Transaksi Pembayaran Ekspedisi Guna Pratama telah disimpan dan telah terupdate, dan sistem menampilkan kembali Form Utama. Jika telah lunas maka akan tampil cetak pembayaran ekspedisi untuk pelanggan
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data transaksi
pembayaran yang valid
4.3.3.1.9 Spesifikasi Naratif Use Case Setting SMS Server dan Broadcast
Tingkat Perancangan
Tabel 4.28 Spesifikasi Naratif Use Case Setting SMS Server dan
Broadcast Tingkat Perancangan dengan Aktor sebagai
Admin
Nama Use Case : Setting SMS Server dan BroadcastActor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu men-setting SMS Server agar dapat terhubung antara Handphone dengan Aplikasi Sistem, serta menginput data broadcast bila ingin mengirim pesan kepada supir. Data Broadcast yang dikirim dapat dilihat pada Form Pesan Data Outbox
Prakondisi : Seorang individu yang men-setting Server dan menginput data Broadcast haruslah Admin.Admin harus meng-sign in ke sebuah sistem untuk men-setting Server dan menginput data Broadcast.
Pemicu : Use Case ini diinisiasi saat admin menyeleksi pilihan Setting Server dan Broadcast untuk men-setting Server dan menginput data Broadcast.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Setting SMS] [Server dan Broadcast].Langkah 3 : Admin mengklik TabbedPane Server dan memasukkan data Setting Terminal kedalam input data yang
Langkah 2 : Sistem merespon dengan menampilkan Form Setting SMS Server dan Broadcast. Pada TabbedPane Serverberisi Combo box untuk mengatur data Setting Terminal, juga
118
telah disediakan.Langkah 5 : Admin mengecek semua data yang telah dimasukkan, bila tidak ada perubahan maka Admin akan melanjutkan dengan mengklik tombol [Simpan].Langkah 7 : Admin mengklik tombol [Buka Koneksi].Langkah 9 : Admin menginput data broadcast yang telah disediakan dengan benar pada TabbedPane Broadcast lalu akan dilanjutkan dengan mengklik tombol [Kirim]. Langkah 11 : Admin mengklik tombol [Tutup Koneksi] dan dilanjutkan dengan mengklik tombol [Keluar], bila tidak ingin menggunakan fasilitas SMS gateway pada sistem ini.
terdapat radio button untuk memilih apakah admin juga ingin menerima pesan balasan atau tidak, Terdapat tombol navigasi [Simpan]. Kemudian pada TabbedPane Broadcast terdapat display data Supir dan field input data broadcast. Terdapat tombol navigasi [Kirim] dan [Hapus]. Pada Form Setting Server dan Broadcast terdapat pula tombol navigasi [Buka Koneksi], [Putus Koneksi], [Batal] dan [Keluar].Langkah 4 : Sistem mengontrol setiap data yang dimasukkan, dan sistem juga akan menganjurkan kepada admin untuk mengecek dan melakukan perubahan bila ada kesalahan.Langkah 6 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut untuk setting terminal.Langkah 8 : Sistem merespon dengan melakukan koneksi antara handphone dengan komputer.Langkah 10 : Sistem merespon dengan menyimpan data yang telah diinputkan tersebut ke dalam database sistem
119
dilanjutkan dengan mengirim sms broadcast kepada supir yang telah ditentukan sebelumnya.Langkah 12 : Sistem merespon dengan menutup Form Setting SMS Server dan Broadcast dan menampilkan Form Menu Utama.
Bidang Alternatif :
Alt-Step 9a : Admin mengklik tombol [Hapus] untuk membatalkan isi pesan yang ingin dikirimkan, kembali ke langkah 9.Alt-Step 9b : Admin mengklik tombol [Batal] untuk membatalkan pengiriman sms broadcast, Kembali ke langkah 9. Alt-Step 9c : Admin mengklik tombol [Tutup Koneksi] jika tidak ingin memakai fasilitas ini, Kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika sistem menampilkan SMS PDU pengiriman pada .
Postkondisi Data SMS inbox dan broadcast telah disimpan dan telah terupdate dapat dilihat pada Form Pesan Inbox dan Outbox, dan sistem menampilkan kembali Form Utama.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data setting SMS
server dan broadcast yang valid.
Tabel 4.29 Spesifikasi Naratif Use Case Setting SMS Server dan
Broadcast Tingkat Perancangan dengan Aktor sebagai
Supir
Nama Use Case : Setting SMS Server dan BroadcastActor (s) SupirDeskripsi : Use case ini mendeskripsikan event dari seorang
supir yaitu mengirim request SMS ke Ponsel SMS Server. Request SMS yang dikirim sesuai dengan format SMS yang telah ditentukan sebelumnya.
Prakondisi : Seorang yang mengirim request SMS harus terdaftar sebagai No. HP Supir.
Pemicu : Use Case ini diinisiasi saat Supir mengirim request SMS ke ponsel SMS Server.
120
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Supir me-
request SMS ke ponselSMS Server dengan format yang telah ditentukan sebelumnya.
Langkah 2 : Sistem merespon dengan menampilkan informasi dari SMS Center pada kolom proses. Sistem secara otomatis akan mencari pesan balasan dari request tersebut, kemudian sistem akan menampilkan pesan balasan tersebut dalam bentuk SMS PDU pengiriman. Kemudian Sistem secara otomatis akan mengirimkan SMS jawaban dari request SMS tersebut.
Bidang Alternatif :
Alt-Step 1 : Jika supir salah format SMS dalam request SMS maka sistem akan mengirimkan pesan balasan ke Supir “Format SMS Salah”.
Kesimpulan : Use case ini diakhiri ketika sistem menampilkan SMS PDU Pengiriman dan keterangan AT + CMGS = OK pada kolom proses Form SMS Server dan Broadcast.
Postkondisi SMS Request dari Supir telah dibalas sesuai dengan query pesan balasan dan data SMS inbox dan balasan dapat dilihat di Form Master Pesan.
Aturan Bisnis No. HP Supir harus terdaftar pada Master Data Supir.
Admin sudah melakukan Buka Koneksi pada Form SMS Server dan Broadcast .
Tabel 4.30 Spesifikasi Naratif Use Case Setting SMS Server dan
Broadcast Tingkat Perancangan dengan Aktor sebagai
Pelanggan
Nama Use Case : Setting SMS Server dan BroadcastActor (s) PelangganDeskripsi : Use case ini mendeskripsikan event dari seorang
pelanggan yaitu mengirim request SMS ke Ponsel SMS Server. Request SMS yang dikirim sesuai dengan format SMS yang telah ditentukan sebelumnya.
Prakondisi : Seorang yang mengirim request SMS harus terdaftar sebagai No. HP Pelanggan.
121
Pemicu : Use Case ini diinisiasi saat Pelanggan mengirim request SMS ke ponsel SMS Server.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Pelanggan
me-request SMS ke ponsel SMS Server dengan format yang telah ditentukan sebelumnya.
Langkah 2 : Sistem merespon dengan menampilkan informasi dari SMS Center pada kolom proses. Sistem secara otomatis akan mencari pesan balasan dari request tersebut, kemudian sistem akan menampilkan pesan balasan tersebut dalam bentuk SMS PDU pengiriman. Kemudian Sistem secara otomatis akan mengirimkan SMS jawaban dari request SMS tersebut.
Bidang Alternatif :
Alt-Step 1 : Jika pelanggan salah format SMS dalam request SMS maka sistem akan mengirimkan pesan balasan ke Pelanggan “Format SMS Salah”.
Kesimpulan : Use case ini diakhiri ketika sistem menampilkan SMS PDU Pengiriman dan keterangan AT + CMGS = OK pada kolom proses Form SMS Server dan Broadcast.
Postkondisi SMS Request dari Pelanggan telah dibalas sesuai dengan query pesan balasan dan data SMS inbox dan balasan dapat dilihat di Form Master Pesan.
Aturan Bisnis Admin harus memiliki password yang valid Admin sudah menyiapkan data setting SMS
server dan broadcast yang valid.
122
4.3.3.1.10 Spesifikasi Naratif Use Case Master Pesan Tingkat Perancangan
Tabel 4.31 Spesifikasi Naratif Use Case Master Pesan Tingkat
Perancangan
Nama Use Case : Master Pesan Actor (s) AdminDeskripsi : Use case ini mendeskripsikan event dari
seorang admin yaitu melihat data pesan yang masuk (inbox), dan data pesan broadcast (outbox).
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai pengguna sistem.Seorang individu yang dapat melihat data pesan yang masuk dan data broadcast yaitu admin. Admin harus me-log in ke sebuah sistem untuk melihat, melihat data pesan yang masuk (inbox), dan data pesan broadcast (outbox).
Pemicu : Use case ini diinisiasi saat admin atau manajemen menyeleksi pilihan Server Data Pesan.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Server] [Data Pesan].Langkah 3 : Admin menyeleksi tanggal, bulan dan tahun yang terdapat dalam combo list, kemudian admin memasukkan tanggal, bulan, atau tahun kedalam DateChooser dilanjutkan dengan mengklik tombol [update]. Langkah 5 : Admin men-double klik pada salah satu Display informasi data pesan inbox.Langkah 7: Admin mengklik tombol [Keluar] pada Form
Langkah 2 : Sistem merespon dengan menampilkan Form Server Data Pesan yang berisi TabbedPane Inbox dan Outbox yang berisi display data inbox dan outbox, terdapat tombol [update] dan [keluar].Langkah 4 : Sistem merespon denganmenerima serta mengontrol entri yang telah dimasukkan dan menampilkan display data pesan inbox atau outbox yang telah tersimpan sebelumnya dalam database sistem.Langkah 6 : Sistem merespon dengan menampilkan Form Detail Data Pesan Inbox yang berisi data
123
Detail Data Pesan Inbox . Langkah 9 : Admin men-double klik pada salah satu display data pesan outbox.Langkah 11 : Admin meng-klik tombol [Keluar] Form Detail Data Pesan Outbox.Langkah 13 : Admin meng-klik tombol [Keluar] pada Form Server Data Pesan.
pesan inbox dan display data pesan balasan serta tombol navigasi [Keluar]. Langkah 8 : Sistem merespon dengan menutup Form Detail Data Pesan Inbox dan kembali menampilkan Form Server Data Pesan. Lanjut Langkah 13Langkah 10 : Sistem merespon dengan menampilkan Form Detail Data Pesan Outbox yang outbox berisi data pesan serta tombol navigasi [Keluar].Langkah 12 : Sistem merespon dengan menutup Form Detail Data Pesan Outbox dan kembali menampilkan Form Server Data Pesan.Langkah 14 : Sistem merespon dengan menutup Form Server Data Pesan dan kembali menampilkan FormUtama.
Bidang Alternatif : Alt-Step 5 : Admin Mengklik TabbedPane Outbox untuk melihat display data pesan outbox. Kembali ke Langkah 9
Kesimpulan : Use case ini diakhiri ketika Admin mengkliktombol [Close].
Postkondisi : Admin dapat melihat data pesan yang masuk (inbox) berikut pesan balasan dan data pesan broadcast (outbox). Sistem menampilkan kembali Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid.Admin sudah menyiapkan data pesan yang valid
124
4.3.3.1.11 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat
Perancangan
Tabel 4.32 Spesifikasi Naratif Use Case Laporan Data Pelanggan Tingkat
Perancangan
Nama Use Case : Laporan Data PelangganActor (s) : Manajemen (alias kepala-kepala divisi, manajer dan
boarding director)Deskripsi : Use case ini mendeskripsikan event dari seorang
manajemen yaitu melihat seluruh data pelanggan yang berbentuk document format, manajemen diberikan fasilitas untuk menyimpan laporan data pelanggan dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai admin.Seorang individu yang melihat, menyimpan, dan mencetak laporan data pelanggan yaitu admin.Admin harus meng-sign in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan data pelanggan.
Pemicu : Use case ini diinisiasi saat manajemen menyeleksi pilihan laporan data pelanggan untuk melihat, menyimpan, dan mencetak laporan data pelanggan.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Data Pelanggan].Langkah 3 : Admin mengklik tombol [Print] Langkah 5 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem, dan kemudian meng-klik tombol [Print].Langkah 7 : Admin meng-klik tombol [Close] pada toolbar kanan atas.
Langkah 2 : Sistem merespon dengan menampilkan Display Laporan Data Pelanggan yang berupa page document yang berisikan data-data klasifikasi barang dan tombol [Save], [Print] dan [Close].Langkah 4 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].Langkah 6 : Sistem
125
merespon dengan otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan data pelanggan melalui media kertas.Langkah 8 : Sistem merespon dengan menutup Display Laporan Data Pelanggan dan kembali menampilkan Form Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 8.Alt-Langkah 3b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Save yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan menuju ke langkah 7.Alt-Langkah 3c : Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 2.Alt-Langkah 5 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan data pelanggan dalam media kertas.Tersimpan laporan data pelanggan dalam format softcopy kedalam directori komputer.Menampilkan Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid
126
4.3.3.1.12Spesifikasi Naratif Use Case Laporan Data Kendaraan Tingkat
Perancangan
Tabel 4.33 Spesifikasi Naratif Use Case Laporan Data Kendaraan
Tingkat Perancangan
Nama Use Case : Laporan Data KendaraanActor (s) : Manajemen (alias kepala-kepala divisi, manajer
dan boarding director)Deskripsi : Use case ini mendeskripsikan event dari seorang
admin yaitu melihat seluruh data kendaraan yang berbentuk document format, manajemen diberikan fasilitas untuk menyimpan laporan data pelanggan dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai admin.Seorang individu yang melihat, menyimpan, dan mencetak laporan data kendaraan yaitu admin.Admin harus meng-sign in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan data kendaraan.
Pemicu : Use case ini diinisiasi saat admin menyeleksi pilihan laporan data kendaraan untuk melihat, menyimpan, dan mencetak laporan data kendaraan.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Data Kendaraan].Langkah 3 : Admin mengklik tombol [Print] Langkah 5 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem, dan kemudian meng-klik tombol [Print].Langkah 7 : Admin meng-klik tombol [Close] pada toolbar kanan atas.
Langkah 2 : Sistem merespon dengan menampilkan Display Laporan Data Kendaraan yang berupa page document yang berisikan data-data kendaraan dan tombol [Save], [Print] dan [Close].Langkah 4 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].
127
Langkah 6 : Sistem merespon dengan otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan data kendaraan melalui media kertas.Langkah 8 : Sistem merespon dengan menutup Display Laporan Data Kendaraan dan kembali menampilkan Form Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 8.Alt-Langkah 3b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Save yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan menuju ke langkah 7.Alt-Langkah 3c : Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 2.Alt-Langkah 5 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan data kendaraan dalam media kertas.Tersimpan laporan data kendaraan dalam format softcopy kedalam directori komputer.Menampilkan Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid
128
4.3.3.1.13 Spesifikasi Naratif Use Case Laporan Data Supir Tingkat
Perancangan
Tabel 4.34 Spesifikasi Naratif Use Case Laporan Supir Tingkat
Perancangan
Nama Use Case : Laporan Data SupirActor (s) : Manajemen (alias kepala-kepala divisi, manajer
dan boarding director)Deskripsi : Use case ini mendeskripsikan event dari seorang
manajemen yaitu melihat seluruh data supir yang berbentuk document format, manajemen diberikan fasilitas untuk menyimpan laporan data supir dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai admin.Seorang individu yang melihat, menyimpan, dan mencetak laporan data supir yaitu admin.Manajemen harus meng-sign in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan data supir.
Pemicu : Use case ini diinisiasi saat manajemen menyeleksi pilihan laporan data supir untuk melihat, menyimpan, dan mencetak laporan data supir.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Data Supir].Langkah 3 : Admin mengklik tombol [Print] Langkah 5 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem, dan kemudian meng-klik tombol [Print].Langkah 7 : Admin meng-klik tombol [Close] pada toolbar kanan atas.
Langkah 2 : Sistem merespon dengan menampilkan Display Laporan Data Supir yang berupa page document yang berisikan data-data supir dan tombol [Save], [Print] dan [Close].Langkah 4 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].Langkah 6 : Sistem merespon dengan
129
otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan data supir melalui media kertas.Langkah 8 : Sistem merespon dengan menutup Display Laporan Data Supir dan kembali menampilkan Form Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 8.Alt-Langkah 3b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Save yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan menuju ke langkah 7.Alt-Langkah 3c : Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 2.Alt-Langkah 5 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan data supir dalam media kertas.Tersimpan laporan data supir dalam format softcopy kedalam directori komputer.Menampilkan Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid
130
4.3.3.1.14Spesifikasi Naratif Use Case Laporan Data Status Kendaraan
Tingkat Perancangan
Tabel 4.35 Spesifikasi Naratif Use Case Laporan Status Kendaraan
Tingkat Perancangan
Nama Use Case : Laporan Data Status KendaraanActor (s) : Manajemen (alias kepala-kepala divisi, manajer
dan boarding director)Deskripsi : Use case ini mendeskripsikan event dari seorang
manajemen yaitu melihat seluruh data status kendaraan yang berbentuk document format, manajemen diberikan fasilitas untuk menyimpan laporan data supir dalam format htm, txt, doc, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai admin.Seorang individu yang melihat, menyimpan, dan mencetak laporan data status kendaraan yaitu admin.Manajemen harus meng-sign in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan data status kendaraan.
Pemicu : Use case ini diinisiasi saat manajemen menyeleksi pilihan laporan data status kendaraan untuk melihat, menyimpan, dan mencetak laporan data status kendaraan.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Data Status Kendaraan].Langkah 3 : Admin mengklik tombol [Print] Langkah 5 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem,dan kemudian meng-klik tombol [Print].Langkah 7 : Admin meng-klik tombol [Close] pada toolbar kanan atas.
Langkah 2 : Sistem merespon dengan menampilkan Display Laporan Data Status Kendaraan yang berupa page document yang berisikan data-data status kendaraan dan tombol [Save], [Print] dan [Close].Langkah 4 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].
131
Langkah 6 : Sistem merespon dengan otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan data supir melalui media kertas.Langkah 8 : Sistem merespon dengan menutup Display Laporan Data Status Kendaraan dan kembali menampilkan Form Utama.
Bidang Alternatif :
Alt-Langkah 3a : Jika admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 8.Alt-Langkah 3b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Save yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan menuju ke langkah 7.Alt-Langkah 3c : Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 2.Alt-Langkah 5 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 2.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan data status kendaraan dalam media kertas.Tersimpan laporan data status kendaraan dalam format softcopy kedalam directori komputer.Menampilkan Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid
132
4.3.3.1.15 Spesifikasi Naratif Use Case Laporan Ekspedisi Per Periode
Tingkat Perancangan
Tabel 4.36 Spesifikasi Naratif Use Case Ekspedisi Per Periode Tingkat
Perancangan
Nama Use Case : Laporan Transaksi Pengiriman Barang per Periode
Actor (s) Manajemen (alias kepala-kepala divisi, manajer dan boarding director)
Deskripsi : Use case ini mendeskripsikan event dari seorang admin yaitu memasukkan data dengan menyeleksi berdasarkan status transaksi pengiriman barang dan jangka waktu tertentu untuk melihat data Transaksi Pengiriman Barang per periode yang berbentuk document format, dan juga admin diberikan fasilitas untuk menyimpan laporan data Transaksi Pengiriman Barang per periode dalam format htm, txt dll, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai pengguna sistem.Seorang individu yang menyeleksi data untuk melihat, menyimpan, dan mencetak laporan Transaksi Pengiriman Barang per periode yaitu admin dan manajemen. Admin harus me-log in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan Transaksi Pengiriman Barang per Periode.
Pemicu : Use case ini diinisiasi saat admin atau manajemen menyeleksi pilihan laporan Transaksi Pengiriman Barang per periode untuk melihat, menyimpan, dan mencetak laporan Transaksi Pengiriman Barang berdasarkan jangka waktu tertentu.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Laporan Pengiriman Barang].Langkah 3 : Manajemen atau pembelian memasukkan tanggal awal dan tanggal akhir ke dalam DateChooser
Langkah 2 : Sistem merespon dengan menampilkan Form Transaksi Pengiriman Barang per Periodeyang berisi DateChooser tanggal periode, radio button [Terkirim], [Terproses], [Batal] tombol [Tampil] dan tombol [Keluar].
133
dan memilih radio button yang diinginkan. Langkah 5 : Admin mengklik tombol [Cetak].Langkah 7: Admin mengklik tombol [Print]. Langkah 9 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem, dan kemudian meng-klik tombol [Print].Langkah 11 : Admin meng-klik tombol [Close] pada toolbar kanan atas.Langkah 13 : Admin meng-klik tombol [Keluar] pada form.
Langkah 4 : Sistem merespon dengan menerima serta mengontrol entri yang telah dimasukkan.Langkah 6 : Sistem merespon dengan menampilkan Display Laporan Transaksi Pengiriman Barang per Periode yang berupa page document yang berisikan seluruh data-data pengiriman barang berdasarkan status pengiriman, sesuai dengan jangka waktu yang telah ditentukkan manajemen dan tombol [Save], [Print] dan [Close].Langkah 8 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].Langkah 10 : Sistem merespon dengan otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan melalui media kertas.Langkah 12 : Sistem merespon dengan menutup DisplayLaporan Transaksi Pengiriman Barang per Periode dan kembali menampilkan Form Laporan Transaksi Pengiriman Barang per PeriodeLangkah 14 : Sistem merespon dengan
134
menutup Form Laporan Seluruh Transaksi Pengiriman Barang per Periode dan kembali menampilkan FormUtama.
Bidang Alternatif :
Alt-Langkah 5 : Admin mengklik tombol [Keluar], jika ingin membatalkan transaksi dan menuju ke langkah 14.Alt-Langkah 7a : Jika Admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 12.Alt-Langkah 7b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Export yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Alt-Langkah 7c : Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan kembali ke langkah 6.Alt-Langkah 7d : Jika Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 6.Alt-Langkah 9 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 6.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan Transaksi Pengiriman Barang per periode dalam media kertas.Tersimpan laporan Transaksi Pengiriman Barang per periode dalam format softcopy didalam directori komputer.Menampilkan Form Utama.
Aturan Bisnis : Admin harus memiliki password yang valid
135
4.3.3.1.16 Spesifikasi Naratif Use Case Laporan Transaksi Pembayaran
Ekspedisi Per Periode Tingkat Perancangan
Tabel 4.37 Spesifikasi Naratif Use Case Laporan Transaksi
Pembayaran Ekspedisi Per Periode Tingkat Perancangan
Nama Use Case : Laporan Transaksi Pembayaran Ekspedisi per Periode
Actor (s) Manajemen (bagian accounting, manajer)Deskripsi : Use case ini mendeskripsikan event dari
seorang admin yaitu memasukkan data dengan menyeleksi jangka waktu tertentu untuk melihat data Transaksi Pembayaran Ekspedisi/Pengiriman Barang per periode yang berbentuk document format, dan juga admin diberikan fasilitas untuk menyimpan laporan data Transaksi Pembayaran Ekspedisi per periode dalam format htm, txt dll, dan juga dapat langsung mencetak laporan dengan Printer yang sudah terinstall di komputer.
Prakondisi : Orang tersebut haruslah sudah terdaftar sebagai pengguna sistem.Seorang individu yang menyeleksi data untuk melihat, menyimpan, dan mencetak laporan Transaksi Pembayaran Ekspedisi per periode yaitu admin dan manajemen. Admin harus me-log in ke sebuah sistem untuk melihat, menyimpan, dan mencetak laporan Transaksi Pembayaran Ekspedisi per Periode.
Pemicu : Use case ini diinisiasi saat admin atau manajemen menyeleksi pilihan laporan Transaksi Pembayaran Ekspedisi per periode untuk melihat, menyimpan, dan mencetak laporan Transaksi Pengiriman Barang berdasarkan jangka waktu tertentu.
Kegiatan Pelaku Respons SistemBidang khas suatu event : Langkah 1 : Admin
mengklik menu [Laporan] [Laporan Pembayaran Ekspedisi].Langkah 3 : Admin memasukkan tanggal awal dan tanggal akhir ke dalam DateChooser.
Langkah 2 : Sistem merespon dengan menampilkan Form Transaksi Pembayaran Ekspedisi per Periode yang berisi DateChooser tanggal periode, tombol [Tampil] dan tombol
136
Langkah 5 : Admin mengklik tombol [Cetak].Langkah 7: Admin mengklik tombol [Print]. Langkah 9 : Admin memasukkan data dan menyeleksi data-data yang diminta Sistem, dan kemudian meng-klik tombol [Print].Langkah 11 : Admin meng-klik tombol [Close] pada toolbar kanan atas.Langkah 13 : Admin meng-klik tombol [Keluar] pada form.
[Keluar].Langkah 4 : Sistem merespon dengan menerima serta mengontrol entri yang telah dimasukkan.Langkah 6 : Sistem merespon dengan menampilkan Display Laporan Transaksi Pembayaran Ekspedisi per Periode yang berupa page document yang berisikan seluruh data-data transaksi pembayaran ekspedisisesuai dengan jangka waktu yang telah ditentukkan manajemen dan tombol [Save], [Print] dan [Close].Langkah 8 : Sistem merespon dengan menampilkan display Print yang berisikan Select Printer, Select Pages Range, Number of Copies, tombol [Print], dan tombol [Cancel].Langkah 10 : Sistem merespon dengan otomatis akan terkoneksi pada Printer yang sudah terinstall dikomputer, dan mencetak laporan melalui media kertas.Langkah 12 : Sistem merespon dengan menutup DisplayLaporan Transaksi Pembayaran Ekspedisi per Periode dan kembali menampilkan Form
137
Laporan Transaksi Pembayaran Ekspedisi per PeriodeLangkah 14 : Sistem merespon dengan menutup FormLaporan Seluruh Transaksi Pembayaran Ekspedisi per Periode dan kembali menampilkan FormUtama.
Bidang Alternatif :
Alt-Langkah 5 : Admin mengklik tombol [Keluar], jika ingin membatalkan transaksi dan menuju ke langkah 14.Alt-Langkah 7a : Jika Admin ingin membatalkan transaksi, maka admin cukup mengklik tombol [Close] pada toolbar kanan atas dan menuju ke langkah 12.Alt-Langkah 7b : Admin mengklik tombol [Save], jika ingin menyimpan laporan dalam bentuk softcopy, tentunya dalam format yang telah disediakan. Sistem merespon dengan menampilkan Display Save yang berisikan directori untuk menyimpan laporan, field input file name, select file type, page range, tombol [Save] dan tombol [Cancel]. Alt-Langkah 7c : Admin menyeleksi dan menginput data-data yang diminta, dan mengklik tombol [Save]. Sistem merespon dengan menyimpan laporan tersebut kedalam directori yang telah dipilih oleh Admin dan kembali ke langkah 6.Alt-Langkah 7d : Jika Admin mengklik tombol [Cancel] untuk membatalkan proses simpan laporan dan kembali ke langkah 6.Alt-Langkah 9 : Jika admin ingin membatalkan untuk mencetak, maka admin cukup mengklik tombol [Cancel] dan kembali ke langkah 6.
Kesimpulan : Use case ini diakhiri ketika Admin mengklik tombol [Close].
Postkondisi : Tercetak laporan Transaksi Pembayaran Ekspedisi per periode dalam media kertas.Tersimpan laporan Transaksi Pembayaran Ekspedisi per periode dalam format softcopy didalam directori komputer.
138
Menampilkan Form Utama.Aturan Bisnis : Admin harus memiliki password yang valid
4.3.3.2 Object Robustness Diagram
Diagram ini digunakan untuk mengidentifikasi objek-objek desain
yang tercakup pada sebuah use case berikut interaksinya. Model diagram ini
merupakan perluasan dari sebuah model usecase pada UML. Diagram ini
berisi simbol-simbol untuk menggambarkan aktor dan interfacenya
(antarmuka), kontrol, entity, dan anak panah untuk mengkomunikasikan pesan
atau interaksi antar objek.
4.3.3.2.1 Use Case Master Data Pelanggan
Admin
Form Input Data Pelanggan ctrlfrmPelanggan
Nama Pelanggan
Kode Pos
Kode Pelanggan
Nomor
Kota
Jalan
Kecamatan
Kelurahan
No. HP
Contact Person
Gambar 4.28 Diagram Objek Parsial Untuk Use Case Master Data Pelanggan
139
4.3.3.2.2 Use Case Master Data Kendaraan
Gambar 4.29 Diagram Objek Parsial Untuk Use Case Master Data Kendaraan
4.3.3.2.3 Use Case Master Data Supir
Gambar 4.30 Diagram Objek Parsial Untuk Use Case Master Data Supir
140
4.3.3.2.4 Use Case Master Data Status Kendaraan
Gambar 4.31 Diagram Objek Parsial Untuk Use Case Master Data Status Kendaraan
4.3.3.2.5 Use Case Transaksi Cetak SO
Gambar 4.32 Diagram Objek Parsial Untuk Use Case Transaksi Cetak SO
141
4.3.3.2.6 Use Case Transaksi Bongkar Muat
Gambar 4.33 Diagram Objek Parsial Untuk Use Case Transaksi Bongkar
Muat
4.3.3.2.7 Use Case Transaksi Batal Muat
Gambar 4.34 Diagram Objek Parsial Untuk Use Case Transaksi Batal
Muat
142
4.3.3.2.8 Use Case Transaksi Pembayaran Ekspedisi
Gambar 4.35 Diagram Objek Parsial Untuk Use Case Transaksi Pembayaran Ekspedisi
4.3.3.2.9 Use Case SMS Server dan Broadcast
Admin
ctrlfrmBroadcast
Form Master Broadcast
Kode Supir
Waktu Kirim
Nama Supir
Nomor HP
Judul
Pesan
Nomor Broadcast
Display Data Supir
Gambar 4.36 Diagram Objek Parsial Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Admin
143
Gambar 4.37 Diagram Objek Parsial Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Supir
144
Gambar 4.38 Diagram Objek Parsial Untuk Use Case SMS Server dan Broadcast dengan Aktor sebagai Pelanggan
145
4.3.3.2.10 Use Case Master Pesan
Gambar 4.39 Diagram Objek Parsial Untuk Use Case Master Pesan
146
4.3.3.2.11 Use Case Laporan Data Pelanggan
Gambar 4.40 Diagram Objek Parsial Untuk Use Case Laporan Data Pelanggan
4.3.3.2.12 Use Case Laporan Data Kendaraan
Gambar 4.41 Diagram Objek Parsial Untuk Use Case Laporan Data Kendaraan
147
4.3.3.2.13 Use Case Laporan Data Supir
Gambar 4.42 Diagram Objek Parsial Untuk Use Case Laporan Data Supir
4.3.3.2.14 Use Case Laporan Data Status Kendaraan
Gambar 4.43 Diagram Objek Parsial Untuk Use Case Laporan Data Status Kendaraan
148
4.3.3.2.15 Use Case Laporan Ekspedisi per Periode
Gambar 4.44 Diagram Objek Parsial Untuk Use Case Laporan Ekspedisiper Periode
149
4.3.3.2.16 Use Case Laporan Pembayaran Ekspedisi per Periode
Gambar 4.45 Diagram Objek Parsial Untuk Use Case Laporan Pembayaran Ekspedisi per Periode
4.3.3.3 Statechart Diagram
Sebuah diagram UML yang menggambarkan kombinasi state
yang dapat diasumsikan oleh objek selama masa hidupnya, kejadian-
kejadian yang memicu transisi antar state dan aturan yang mengatur
dari dan ke state yang mana sebuah objek dapat melakukan transisi
(Jeffery L. Whitten, Lonnie D. Bentley, Kevin C. Dittman, 2004 :
662).
Diagram ini menggambarkan state apa saja yang dapat
dimiliki sebuah objek, menyebabkan dari state mana sebuah objek
dapat berpindah ke state lain. Diagram ini juga mengidentifikasi state
awal dan akhir, jalur dari transisi state, pemicu yang menyebabkan
150
objek meninggalkan suatu state tertentu. Diagram ini juga memperluas
dari use case yang telah dibahas sebelumnya.
4.3.3.3.1 Master Data Pelanggan
Gambar 4.46 Diagram Statechart Master Data Pelanggan
151
4.3.3.3.2 Master Data Kendaraan
Tampilkan Form Master Kendaraan
add Kendaraan
entry/add No. Plat
entry/add Jenis
entry/add Beratentry/add Volume
data Kendaraan berhasil tersimpan
do/ data Kendaraan tersimpan kedalam database
check add Kendaraan
do/ check No. Plat
do/ check Jenis
do/ check Berat
do/ check Volume
data Kendaraan gagal tersimpan
do/ back to add Kendaraan
Tutup form Master Kendaraan
Keluar dari form Kendaraan
data Kendaraan ditampilkan
do/ tampilkan data kendaraan yang di inputkan
Gambar 4.47 Diagram Statechart Master Data Kendaraan
152
4.3.3.3.3 Master Data Supir
Gambar 4.48 Diagram Statechart Master Data Supir
153
4.3.3.3.4 Master Data Status Kendaraan
Tampilkan Form Master Status Kendaraan
add Status Kendaraan
entry/add Posisi
entry/add Status
data Status Kendaraan berhasil tersimpan
do/ data Status Kendaraan tersimpan kedalam database
check add Status Kendaraan
do/ check Posisi
do/ check Status
do/ check Driver
data Status Kendaraan gagal tersimpan
do/ back to add Status Kendaraan
Tutup form Status Kendaraan
Keluar dari form Status Kendaraan
entry/add Driverentry/add Co. Driver
do/ check Co. Driver
data Status Kendaraan ditampilkan
do/ tampilkan data status kendaraan yang di inputkan
Gambar 4.49 Diagram Statechart Master Status Kendaraan
154
4.3.3.3.5 Transaksi Cetak SO
Tampilkan Form Transaksi Pengiriman Barang
add Data Ekspedisi
entry/add Tgl. SO
entry/add Tgl. SJ
Simpan Data Ekspedisi
do/ data Ekspedisi tersimpan kedalam database
check data SO
do/ check No. Plgn
do/ check Tgl. SO
do/ check Tgl. SJ
data Ekspedisi invalid
do/ back to add Status Kendaraan
Tutup form Transaksi Pengiriman Barang
Keluar dari form Pengiriman Barang
entry/add Jurusan entry/add Penerima
do/ check Jurusan
entry/add Jenis Muatan
entry/add No. Plgn
entry/add Berat Muatanentry/add Harga Satuan
entry/add No. Perk
check data SJ
do/ check Penerima
do/ check Jenis Muatan
do/ check Berat Muatan
do/ check Harga Satuando/ check No. Perk
Ada SJ lain
do/ back to add data SJ
Tampil Faktur Ekspedisi
Print Faktur dalam format kertas
Gambar 4.50 Diagram Statechart Transaksi Cetak SO
155
4.3.3.3.6 Transaksi Bongkar Muat
Gambar 4.51 Diagram Statechart Transaksi Bongkar Muat
156
4.3.3.3.7 Transaksi Batal Muat
Tampilkan Form Transaksi Batal Muat
add Bongkar Muat
entry/ add Status Batal
Simpan Data Batal Muat
do/ data batal muat tersimpan kedalam database
check add Batal Muat
entry/ add Status batal
Gagal tersimpan
do/ back to add Batal Muat
Tutup form Transaksi Batal Muat
Keluar dari form Transaksi Batal Muat
Gambar 4.52 Diagram Statechart Transaksi Batal Muat
157
4.3.3.3.8 Transaksi Cetak Pembayaran Ekspedisi
Gambar 4.53 Diagram Statechart Transaksi Pembayaran Ekspedisi
158
4.3.3.3.9 SMS Server dan Broadcast
Tampilkan Form SMS Serverdan Broadcast
add Setting SMS Server
entry/ add Bits per second
Simpan Data SMS Server dan Koneksi Terhubung
do/ koneksi terhubung, proses terima SMS dan kirim SMS
check Setting SMS Server
Tutup form SMS Server dan Broadcast
Keluar dari form Broadcast dan SMS Server
entry/ add Data bitsentry/ add Parityentry/ add Stop Bitsentry/ add Flow Control
do/ check Bits per second do/ check Data bitsdo/ check Paritydo/ check Stop Bitsdo/ check Flow Control
add Broadcast
entry/ add no. HP
check Broadcast
entry/ add Waktu Kirim
do/ check no. HP do/ check Juduldo/ check Isi Pesando/ check Waktu Kirim
entry/ add Judul entry/ add Isi Pesan
Simpan Data Broadcast
do/ save data SMS Broadcast
Data Broadcast Invalid
do/ back add Broadcast
Gambar 4.54 Diagram Statechart SMS Server dan Broadcast dengan
Aktor sebagai Admin
159
Kirim SMS ke No. HP SMS Server
Format SMS yang Tersedia untuk Request Supir
Judul = “Pengiriman Terkirim” terkirim<spasi>no_sj
Judul = “Pengiriman Gagal” batal<spasi>no_sj
Judul = “Status Kendaraan” status<spasi>no_plat<spasi>
posisi<spasi>status
Judul = “Format SMS Supir” info<spasi>supir
If (Judul = “Pengiriman Terkirim”)Then (Query Pesan Balasan =
“Pengiriman <barang> <berat> <jurusan> telah terkirim”
Else If (Judul = “Pengiriman Gagal”)Then (Query Pesan Balasan = “Pengiriman <barang> <berat>
<jurusan> telah dibatalkan”
Else If (Judul = “Status Kendaraanl”)Then (Query Pesan Balasan = “Status
kendaraan berhasill di update” Else If (Judul = “Format SMS Supir”)
Then (Query Pesan Balasan = “ terkirim<spasi>no_sj, batal<spasi>no_sj,
status<spasi>no_plat<spasi>posisi<spasi>status”
Respon SMS Server
Display AT + CMTIDisplay AT + CMGR
Display PDU PenerimaDisplay AT+CMGD
Display PDU PengirimanDisplay AT+CMGS
Query Pesan Balasan
Query Pesan Balasan
Query Pesan Balasan = “Maaf, Format SMS yang
anda tulis salah”If Format SMS yang tersedia untuk request supir
else
Gambar 4.55 Diagram Statechart SMS Server dan Broadcast dengan
Aktor sebagai Supir
160
Kirim SMS ke No. HP SMS Server
Format SMS yang Tersedia untuk Request Pelanggan
Judul = “Bayar Ekspedisi” Bayar<spasi>no_so<spasi>
jumlah_bayar
Judul = “Cek Kendaraan” cek<spasi>kendaraan
If (Judul = “Bayar Ekspedisi”)Then (Query Pesan Balasan = “Tagihan :
<berat*harga>, Terbayar = <SUM(jumlah)> , Sisa = <tagihan-
terbayar>”
Else If (Judul = “Info Tagihan”)Then (Query Pesan Balasan = “No.
SO <no_so>, Sisa Tagihan <tagihan-terbayar>”
Else If (Judul = “Cek Kendaraan”)Then (Query Pesan Balasan = “<posisi>:<count(no_perk)>”
Else If (Judul = “Format SMS Supir”)Then (Query Pesan Balasan = “
bayar<spasi>no_so<spasi>jumlah_bayar, tagihan<spasi>no_so, info<spasi>pelanggan”
Respon SMS Server
Display AT + CMTIDisplay AT + CMGR
Display PDU PenerimaDisplay AT+CMGD
Display PDU PengirimanDisplay AT+CMGS
Query Pesan Balasan
Query Pesan Balasan
Query Pesan Balasan = “Maaf, Format SMS yanga
anda tulis salah”If Format SMS yang tersedia untuk request supir
else
Judul = “Info Tagihan” Tagihan<spasi>no_so
Judul = “Saran” Saran<spasi>Isi Saran
Judul = “Format SMS Pelanggan” Info<spasi>Pelanggan
Gambar 4.56 Diagram Statechart SMS Server dan Broadcast dengan
Aktor sebagai Pelanggan
161
4.3.3.3.10 Master Pesan (Inbox dan Outbox)
Gambar 4.57 Diagram Statechart Master Pesan
162
4.3.3.3.11 Laporan Data Pelanggan
Gambar 4.58 Diagram Statechart Laporan Data Pelanggan
4.3.3.3.12 Laporan Data Kendaraan
Gambar 4.59 Diagram Statechart Laporan Data Pelanggan
163
4.3.3.3.13 Laporan Data Supir
Gambar 4.60 Diagram Statechart Laporan Data Supir
4.3.3.3.14 Laporan Data Status Kendaraan
Gambar 4.61 Diagram Statechart Laporan Status Kendaraan
164
4.3.3.3.15 Laporan Ekspedisi per Periode
Gambar 4.62 Diagram Statechart Laporan Ekspedisi per Periode
165
4.3.3.3.16 Laporan Pembayaran Ekspedisi per Periode
Gambar 4.63 Diagram Statechart Laporan Pembayaran Ekspedisi per
Periode
4.3.3.4 Sequence Diagram
Sequence diagram adalah diagram interaksi yang disusun
berdasarkan urutan waktu. Diagram ini menunjukkan sejumlah contoh
obyek dan message (pesan) yang diletakkan diantara obyek-obyek ini di
dalam use case. Komponen utama sequence diagram terdiri dari obyek
166
yang dituliskan dengan kotak segi empat bernama. Message diwakili oleh
garis dengan tanda panah dan waktu yang ditunjukkan dengan progress
vertical.
4.3.3.4.1 Sequence Diagram Master Data Pelanggan
Gambar 4.64 Sequence Diagram Master Data Pelanggan
167
4.3.3.4.2 Sequence Diagram Master Data Kendaraan
Gambar 4.65 Sequence Diagram Master Data Kendaraan
168
4.3.3.4.3 Sequence Diagram Master Data Supi
Gambar 4.66 Sequence Diagram Master Data Supir
169
4.3.3.4.4 Sequence Diagram Master Data Status Kendaraan
: formStatusKendaraanAdmin
Open ()
: ctrlformStatusKendaraan : detil_kendaraan
Display tabel ()
Select tabel ()
Open ()get kendaraan ()
Select tabel ()get kendaraan ()
Display detilKendaraan ()
Input detilKendaraan ()
Update ()Update ()
Update ()
Display tabel ()
Batal ()
Set Awal ()
Input detilKendaraan ()
Keluar ()
Batal ()
Keluar ()
Gambar 4.67 Sequence Diagram Master Data Status Kendaraan
170
4.3.3.4.5 Sequence Diagram Transaksi Cetak SO
Gambar 4.68 Sequence Diagram Transaksi Cetak SO
171
4.3.3.4.6 Sequence Diagram Transaksi Bongkar Muat
Gambar 4.69 Sequence Diagram Transaksi Bongkar Muat
172
4.3.3.4.7 Sequence Diagram Transaksi Batal Muat
Gambar 4.70 Sequence Diagram Transaksi Batal Muat
173
4.3.3.4.8 Sequence Diagram Transaksi Cetak Pembayaran Ekspedisi
Gambar 4.71 Sequence Diagram Transaksi Cetak Pembayaran Ekspedisi
174
4.3.3.4.9 Sequence Diagram SMS Server dan Broadcast (Aktor : Admin)
: formSMSServerdanBroadcast
Open ()
Simpan NilaiPort ke file ()
:ctrlSMSServerdanBroadcast : inbox
Proses Pesan Balas ()
Kirim SMS ()
Set NilaiPort ()
Buka Koneksi ()
: balas : broadcast
Simpan Data Inbox ()
Simpan Data Balas ()
Simpan Data Broadcast ()
Simpan Data Kirim ()
Set NilaiPort ()
Buka Koneksi ()
: kirim
Open ()
display tabelSupir ()
Proses SMS Masuk ()
get supir ()
Select supir ()Select supir ()
: supir
Input Broadcast ()Input Broadcast ()
Kirim ()Kirim ()
Kirim SMS ()
: Admin
Gambar 4.72 Sequence Diagram SMS Server dan Broadcast dengan Aktor sebagai
Admin
175
Gambar 4.73 Sequence Diagram Proses SMS Masuk pada SMS Server dan
Broadcast
176
:ctrlProsesOlahRequestSMS
Ambil Pesan Pada Inbox ()
: formServerdanBroadcast
Query Pesan Balasan jika Format SMS berjudul “Bayar Ekspedisi” (pelanggan)
Query Pesan Balasan jika Format SMS berjudul “Cek Kendaraan” (pelanggan, admin)
Query Pesan Balasan jika Format SMS berjudul “Saran Pelanggan” (pelanggan)
Query Pesan Balasan jika Format SMS berjudul “Tagihan Pelanggan” (pelanggan)
Query Pesan Balasan jika Format SMS berjudul “Info Pelanggan” (pelanggan)
Query Pesan Balasan jika Format SMS berjudul “Pengiriman Terkirim” (supir)
Query Pesan Balasan jika Format SMS berjudul “Pengiriman Gagal” (supir)
Query Pesan Balasan jika Format SMS berjudul “Status Kendaraan” (supir)
Query Pesan Balasan jika Format SMS berjudul “Info Supir” (supir)
Query Pesan Balasan jika Format SMS berjudul “Cek Posisi” (admin)
: Admin
Buka Koneksi ()
Buka Koneksi ()
Gambar 4.74 Sequence Diagram Proses Olah Request SMS pada SMS
Server dan Broadcast
177
: ctrlProsesKirimSMS: formServerdanBroadcast
Ambil No.HP dan Pesan Balasan()
Ubah No.HP, pesan dari format teks menjadi format PDU
Jalankan AT Command untuk kirim SMS
Tambahkan Nilai PDU Type 11 ke format PDU
Tambahkan Nilai MR 00 ke format PDU
Hitung panjang No.HP
Ubah nilai panjang No.HP ke format heksadesimal
Tambahkan nilai type No.HP ke format PDU
Ubah Pesan dari 7 bit ke 8 bit
Admin
Buka Koneksi ()Buka Koneksi ()
Tambahkan nilai panjang No.HP ke format PDU
Balik karakter No.HP
Tambahkan Nilai PID 00 ke format PDU
Tambahkan Nilai DCS 00 ke format PDU
Tambahkan Nilai VP AB ke format PDU
Hitung Panjang Pesan
Ubah Nilai Panjang Pesan ke format Heksadesimal
Tambahkan Nilai Panjang Pesan ke Format PDU
Masukkan Isi pesan ke format PDU
Tulis Status Pesan di Tabel Balasan menjadi “Telah Terkirim”
Cetak Pesan ke Layar “Pesan Telah Dikirim”
Gambar 4.75 Sequence Diagram Proses Kirim SMS pada SMS Server dan Broadcast
178
4.3.3.4.10 Sequence Diagram SMS Server dan Broadcast (Aktor : Supir)
Gambar 4.76 Sequence Diagram SMS Server dan Broadcast dengan Aktor Supir
4.3.3.4.11 Sequence Diagram SMS Server dan Broadcast (Aktor : Pelanggan)
Gambar 4.77 Sequence Diagram SMS Server dan Broadcast dengan Aktor Sebagai Pelanggan
179
4.3.3.4.12 Sequence Diagram Master Pesan
Gambar 4.78 Sequence Diagram Master Pesan
180
4.3.3.4.13 Sequence Diagram Laporan Ekspedisi per Periode
Gambar 4.79 Sequence Diagram Laporan Ekspedisi per Periode
181
4.3.3.4.14 Sequence Diagram Laporan Pembayaran Ekspedisi per Periode
Gambar 4.80 Sequence Diagram Laporan Pembayaran Ekspedisi per Periode
182
4.3.3.4.15 Sequence Diagram Laporan Master (Data Pelanggan, Data
Kendaraan, Data Supir, dan Data Status Kendaraan)
: MenuLaporan Master : ctrlMenuLaporanMaster
Cetak ()
get pelanggan ()
: pelanggan : kendaraan: Admin
Open ()
Select Laporan Data Pelanggan ()
: supir
Select Laporan Data Pelanggan ()
get kendaraan ()
Select Laporan Data Kendaraan ()Select Laporan Data Kendaraan ()
get supir ()
Select Laporan Data Supir ()
Cetak ()
Select Laporan Data Supir ()
get kendaraan ()
Select Laporan Data Status Kendaran () Select Laporan Data Status
Kendaran ()
display cetak ()
display cetak ()
display cetak ()
display cetak ()
Open ()
Gambar 4.81 Sequence Diagram Laporan Master (Pelanggan, Supir, Kendaraan
dan Status Kendaraan)
183
4.3.3.5 Class Diagram
Class diagram menggambarkan struktur objek sistem,
diagram ini menunjukkan kelas objek yang menyusun sistem dan
juga hubungan antara kelas objek transisi tersebut (Jeffery L.
Whitten, Lonnie D. Bentley, Kevin C. Dittman, 2004 : 418).
Class diagram mendeskripsikan jenis-jenis objek dalam
sistem dan berbagai macam hubungan dan interaksi diantara mereka.
Diagram ini juga digunakan untuk mengorganisir objek-objek dari
pemodelan use case dan mendokumentasikan hubungan diantara
objek-objek tersebut. Bisa dibilang, class diagram adalah kumpulan
dari beberapa objek yang saling berhubungan.
Berikut ini adalah class diagram untuk usecase-usecase yang
terdapat pada Sistem Pengiriman Barang Berbasis SMS Gateway
pada PD. Guna Pratama.
4.3.3.5.1 Entity Class Diagram
Berikut ini adalah entity class diagram untuk use case-use
case yang terdapat pada Sistem Pengiriman Barang Berbasis SMS
Gateway pada PD. Guna Pratama.
184
Gambar 4.82 Entity Class Diagram Sistem Informasi Pengiriman
Barang Berbasis SMS Pada PD. Guna Pratama
185
4.3.3.5.2 Control Class Diagram
Berikut ini adalah control class diagram untuk usecase-usecase
yang terdapat pada Sistem Pengiriman Barang Berbasis SMS Gateway pada
PD. Guna Pratama.
Gambar 4.83 Control Class Diagram Sistem Informasi Pengiriman
Barang Berbasis SMS Pada PD. Guna Pratama
186
4.3.3.5.3 Boundary Class Diagram
Berikut ini adalah Boundary class diagram untuk usecase-usecase
yang terdapat pada Sistem Pengiriman Barang Berbasis SMS Gateway pada
PD. Guna Pratama.
Gambar 4.84 Boundary Class Diagram Sistem Informasi Pengiriman
Barang Berbasis SMS Pada PD. Guna Pratama
187
4.3.3.6 Database
Gambar ini, merupakan diagram tambahan yang tentunya diluar dari
UML yang digunakan oleh penulis untuk menggambarkan dan
mendokumentasikan data-data yang terdapat didalam Sistem Informasi
Pengiriman Barang Berbasis SMS Gateway ini berikut hubungan
(relationship) atau interaksi diantara data-data tersebut.
Gambar 4.85 ERD Sistem Informasi Pengiriman Barang Berbasis SMS Gatewaypada PD. Guna Pratama
188
Gambar 4.86 LRS Database Sistem Informasi Pengiriman Barang Berbasis SMS Gateway pada PD. Guna Pratama
189
4.3.3.7 Spesifikasi Basis Data
Spesifikasi basis data meliputi nama file, media penyimpanan yang
digunakan, isi yang disimpan, organisasi yang digunakan, primary key,
foreign key, struktur.
Spesifikasi basis data memberikan penjelasan secara detil tentang
masing-masing basis data yang digunakan dalam sistem informasi
pengiriman barang berbasis SMS gateway pada PD. Guna Pratama adalah
sebagai berikut:
1. Spesifikasi Tabel Pelanggan
Nama File : Pelanggan
Media : Harddisk
Isi : Data Pelanggan
Organisasi : Index Sequential
Primary Key : no_plgn
Foreign Key : -
Struktur :Tabel 4.38 Spesifikasi Tabel Pelanggan
Nama Field Tipe Data Ukuran Keterangan
no_plgn varchar 7 Nomor pelanggan
nm_plgn varchar 40 Nama pelanggan
Jalan varchar 20 Nama Jalan
nomor varchar 3 Nomor Rumah
Kota varchar 20 Kota
kelurahan varchar 20 Kelurahan
kecamatan varchar 20 Kecamatan
kode pos varchar 7 Kode Pos
Hp varchar 13 No. Handphone
Cp varchar 20 Contact Person
Status enum - Aktif/Tidak aktif
190
2. Spesifikasi Tabel SO (Surat Order)
Nama File : SO
Media : Harddisk
Isi : Data SO
Organisasi : Index Sequential
Primary Key : no_so
Foreign Key : no_plgn
Struktur :
Tabel 4.39 Spesifikasi Tabel SO
3. Spesifikasi Tabel SJ (Surat Jalan)
Nama File : SJ
Media : Harddisk
Isi : Data SJ
Organisasi : Index Sequential
Primary Key : no_sj
Foreign Key : no_so, no_perk
Struktur :
Nama Field Tipe Data Ukuran Keterangan
no_so varchar 7 Nomor SO
tgl_so date - Tanggal SO
Status enum - terproses / batal / terima
no_plgn varchar 7 Nomor Pelanggan
191
Tabel 4.40 Spesifikasi Tabel SJ
4. Spesifikasi Tabel Bayar
Nama File : Bayar
Media : Harddisk
Isi : Data Bayar
Organisasi : Index Sequential
Primary Key : no_supir
Foreign Key : -
Struktur :
Tabel 4.41 Spesifikasi Tabel Bayar
Nama Field Tipe Data Ukuran Keterangan
no_sj varchar 7 Nomor pelanggan
tgl_sj date - Tanggal SJ
tgl_tiba date - Tanggal tiba
Jurusan varchar 20 Jurusan
Penerima varchar 20 Penerima
Barang varchar 20 Barang yang dikirim
Berat int 3 Berat barang (kg)
harga int 3 Harga barang (per kg)
Status enum - aktif / nonaktif
no_so varchar 7 Nomor SO
no_perk varchar 7 Nomor kendaraan
Nama Field Tipe Data Ukuran Keterangan
no_bayar Varchar 7 Nomor bayar (PK)
tgl_bayar Datetime - Tanggal bayar
Jumlah Text - Jumlah bayar
keterangan Varchar 20 Keterangan bayar via
no_so Varchar 20 Waktu broadcast
192
5. Spesifikasi Tabel Supir
Nama File : Supir
Media : Harddisk
Isi : Data Supir
Organisasi : Index Sequential
Primary Key : no_supir
Foreign Key : -
Struktur :
Tabel 4.42 Spesifikasi Tabel Supir
6. Spesifikasi Tabel Kendaraan
Nama File : Kendaraan
Media : Harddisk
Isi : Data Kendaraan
Organisasi : Index Sequential
Nama Field Tipe Data Ukuran Keterangan
no_supir varchar 7 Nomor supir (PK)
nm_supir varchar 20 Nama supir
Jalan varchar 60 Alamat supir
Nomor varchar 3 Nomor Rumah
Kota varchar 20 Kota
kelurahan varchar 20 Kelurahan
kecamatan varchar 20 Kecamatan
kode pos varchar 7 Kode Pos
hp_supir varchar 13 Nomor Hp Supir
Status enum - aktif / nonaktif
193
Primary Key : no_so
Foreign Key : no_plgn
Struktur :
Tabel 4.43 Spesifikasi Tabel Kendaraan
7. Spesifikasi Tabel Detil Supir
Nama File : detil_supir
Media : Harddisk
Isi : Status Supir
Organisasi : Index Sequential
Primary Key : no_supir, no_perk
Foreign Key : -
Struktur :
Tabel 4.44 Spesifikasi Tabel Detil Supir
Nama Field Tipe Data Ukuran Keterangan
no_perk varchar 7 Nomor kendaraan (PK)
no_plat varchar 10 Nomor plat kendaraan
Jenis varchar 15 Jenis kendaraan
tonase int 3 Maks. tonase kendaraan
volume int 3 Maks. volume kendaran
posisi varchar 10 Posisi kendaraan
status_eks enum - tersewa/tersedia
status enum - aktif / nonaktif
Nama Field Tipe Data Ukuran Keterangan
no_sj varchar 7 Nomor SJ (PK)
no_supir varchar 7 Nomor supir (PK)
status Enum - driver / codriver
194
8. Spesifikasi Tabel Inbox
Nama File : inbox
Media : Harddisk
Isi : data inbox (SMS masuk)
Organisasi : Index Sequential
Primary Key : no_inbox
Foreign Key : no_supir
Struktur :
Tabel 4.45 Spesifikasi Tabel Inbox
9. Spesifikasi Tabel Balas
Nama File : balas
Media : Harddisk
Isi : data balas SMS
Organisasi : Index Sequential
Primary Key : no_balas, no_inbox
Foreign Key : -
Struktur :
Nama Field Tipe Data Ukuran Keterangan
no_inbox varchar 7 Nomor inbox
hp varchar 17 Nomor hp
judul varchar 20 Judul pesan
pesan text - Isi pesan
waktu datetime - Waktu
status_proses enum - ‘0’ / ‘1’
no_supir varchar 7 Nomor Supir
195
Tabel 4.46 Spesifikasi Tabel Balas
10. Spesifikasi Tabel Kirim
Nama File : Kirim
Media : Harddisk
Isi : data kirim SMS
Organisasi : Index Sequential
Primary Key : no_broadcast, no_supir
Foreign Key : no_supir
Struktur :
Tabel 4.47 Spesifikasi Tabel Kirim
11. Spesifikasi Tabel Broadcast
Nama File : broadcast
Media : Harddisk
Isi : data broadcast SMS
Organisasi : Index Sequential
Nama Field Tipe Data Ukuran Keterangan
no_balas Varchar 7 Nomor balas (PK)
no_inbox Varchar 7 Nomor inbox (PK)
pesan Text - Isi pesan
hp Varchar 17 Nomor hp
status_kirim Enum - ‘0’ / ‘1’ / ‘2’
Nama Field Tipe Data Ukuran Keterangan
no_broadcast varchar 7 Nomor broadcast (PK)
no_supir Text 7 Nomor supir (PK)
no_hp varchar 17 Nomor hp
status_kirim enum - ‘0’ / ‘1’
196
Primary Key : no_broadcast
Foreign Key : -
Struktur :
Tabel 4.48 Spesifikasi Tabel Broadcast
4.3.4 Implementasi Sistem (Construction dan Testing)
Pada tahapan implementasi ini, Unified Modelling Language (UML)
juga menyediakan diagram yang menggambarkan infrastruktur yang harus
dibangun oleh sistem ini yaitu Deployment Diagram.
Deployment diagram / diagram penguraian digunakan untuk
mendeskripsikan arsitektur fisik dalam istilah “node” untuk hardware dan
software dalam sistem. Diagram ini menggambar konfigurasi komponen-
komponen software run-time, processor, dan peralatan yang membentuk
arsitektur sistem (Jeffery L. Whitten, Lonnie D. Bentley, Kevin C. Dittman,
2004 : 419).
Berikut diagram yang menggambarkan arsitektur fisik dari perangkat
perangkat keras seperti processor, printer ataupun swicth beserta perangkat
lunak seperti sistem operasi, software-software pendukung dari sistem
informasi pengiriman barang berbasis SMS ini.
Nama Field Tipe Data Ukuran Keterangan
no_broadcast varchar 7 Nomor broadcast (PK)
judul varchar 20 Judul pesan
pesan text - Isi pesan
waktu datetime - Waktu broadcast
197
Gambar 4.87 Deployment Diagram Sistem Informasi Pengiriman Barang
berbasis SMS pada PD. Guna Pratama
Pada tahap implementasi ini terdapat beberapa aktivitas yang dilakukan.
Aktivitas-aktivitas yang dimaksud yaitu:
a. Pemrograman
b. Instalasi perangkat (infrastruktur).
c. Cara Pengoperasian Aplikasi
d. Pengujian
4.3.4.1 Pemrograman
Pemrograman adalah aktivitas pembuatan program atau sederetan
instruksi yang digunakan untuk mengatur komputer agar bekerja sesuai
dengan maksud masing-masing instruksi.
Pada tahap pemrograman, penulis menggunakan bahasa
pemrograman tingkat tinggi (high level language) yaitu JAVA sebagai
bahasa pemrogramannnya, sedangkan software yang digunakan dalam
pembuatan aplikasi ini yaitu menggunakan Netbeans 5.5 sebagai software
untuk membuat Graphical User Interface (GUI) dan sebagai software
198
yang menunjang database pada aplikasi ini, penulis menggunakan
MySQL 4.0.20.
4.3.4.2 Instalasi Perangkat (Infrastruktur)
Beberapa tahapan dalam penerapan aplikasi ini dibutuhkan
beberapa pengaturan agar aplikasi dapat berjalan dengan benar dan sesuai
dengan apa yang diharapkan. Tahapan tersebut antara lain:
4.3.4.2.1 Perangkat Keras
Pada tahap konstruksi sistem ini dibutuhkan beberapa
spesifikasi perangkat keras (hardware). Perangkat keras yang mendukung
aplikasi ini adalah suatu unit komputer dengan spesifikasi sebagai berikut:
1. PC Intel Pentium 4 2.8 GHz
2. Memory 512 MB
3. Hardisk 40 GB
4. Monitor
5. Keyboard
6. Mouse
7. Handphone Siemens C55
8. SIM Card
9. Kabel Data
10. Printer Canon iP1300
4.3.4.2.2 Perangkat Lunak
Perangkat keras yang mendukung aplikasi ini adalah suatu unit
komputer dengan spesifikasi sebagai berikut:
1. Sistem Operasi Ms Windows XP SP2
2. Java 2 SDK 1.6
3. MySQL 4.0.20
4. Java Communication Port (Java comm api) v2.0
5. Driver Siemens C55
199
4.3.4.3 Pengujian
Setiap program menjalani pengujian secara pribadi untuk memastikan
bahwa program yang telah kita buat bisa bebas dari kesalahan (bug), walaupun
tidak menutup kemungkinan masih terjadi sedikit bug atau tidak 100% bebas
dari bug, namun pengujian ini setidaknya bisa meminimalisasi kesalahan yang
akan terjadi.
Pada tahap ini, penulis menggunakan metode pengujian unit dengan
pendekatan black-box testing.
Pengujian unit yaitu pengujian secara individual terhadap semua
program untuk memastikan bahwa program bebas dari kesalahan. Jika terjadi
kesalahan, pemakai akan berusaha mencari penyebabnya dan proses untuk
melakukan pencarian kesalahan ini dikenal dengan debugging. (Abdul Kadir,
2002:410)
Black-box testing adalah pengujian yang dilakukan untuk antar muka
perangkat lunak, pengujian ini dilakukan untuk memperlihatkan bahwa fungsi-
fungsi bekerja dengan baik dalam arti masukan yang diterima dengan benar
dan keluaran yang dihasilkan benar-benar tepat, pengintegrasian dari eksternal
data berjalan dengan baik. (http://widiyati.wordpress.com/, 23 juli 2008)
Pengujian secara black box, yaitu suatu pendekatan untuk menguji
apakah setiap fungsi di dalam program dapat berjalan dengan benar. Berikut
beberapa proses yang dilakukan penulisan dalam pengujian ini, yaitu:
a. Fungsi-fungsi yang tidak benar, baik input maupun output
b. Kesalahan interface
c. Kesalahan dalam struktur data atau akses database
200
Dibawah ini merupakan tabel hasil pengujian dari aplikasi sistem
informasi pengiriman barang pada PD. Guna Pratama:
Table 4.49 List Hasil Pengujian dengan pendekatan Black-Box Testing
No. Rancangan Proses Hasil Yang Diharapkan Hasil Keterangan
1.Mulai jalankan program dengan meng-klik icon aplikasi
Masuk halaman Log In Sesuai
2.Mengisi form log indan klik tombol ‘LogIn’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
3. Klik tombol ‘OK’ Kembali ke halaman Log In Sesuai
4. Klik tombol ‘Kembali’
Menampilkan Halaman Utama Namun Hanya Menu File yang aktif, dan hanya sub menu Log In dan Exit yang aktif
Sesuai
5.Mengisi form log indan klik tombol ‘Log In’
Masuk Halaman Utama, semua pilihan menu aktif dan hanya sub menu Log in yang tidak aktif
Sesuai
6.Klik Menu ’File’→’Ubah HP Admin’
Masuk halaman Ubah HP Admin
Sesuai
7.Mengisi form ’Ubah HP Admin’ dan klik tombol ’Tambah’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
8. Klik tombol ’OK’Refresh field Ubah HP Admin Sesuai
9.Mengisi form UbahNo. HP Admin dan klik tombol ’Tambah’
Data tersimpan dalam database dan menampilkan data tersebut dalam fieldUbah No. HP Admin
Sesuai
10.Edit data pada field input data dan klik tombol ‘Ubah’
Data terupdate dalam database dan menampilkan data yang telah teredit tersebut dalam field Ubah No. Hp Admin
Sesuai
11.Klik tombol ‘Keluar’ pada halaman Ubah No. Hp Admin
Kembali ke Halaman Utama
Sesuai
12.Klik Menu ‘Master’ → ‘Data Pelanggan’
Masuk halaman Form Master Data Pelanggan
Sesuai
13.Mengisi field masterdata pelanggan dan klik tombol ‘Simpan’
Menampilkan box pesan kesalahan Sesuai
Nilai input invalid
201
14. Klik tombol ‘OK’Refresh field master data pelanggan
Sesuai
15.Mengisi field masterdata pelanggan dan klik tombol ‘Simpan’
Data tersimpan dalam database dan menampilkan data tersebut dalam display informasi pelanggan
Sesuai
16.
Pilih Combo Box ‘cari berdasarkan’ lalu Masukkan keyword pada field cari berdasarkan kategori
Menampilkan data yang dicari sesuai keyword yang dimasukkan dalam display informasi pelanggan
Sesuai
17.Double klik pada salah satu data dalam display informasi pelanggan
Otomatis data tersebut masuk kedalam field master data pelanggan
Sesuai
18.Edit data pada field master data pelanggandan klik tombol ‘Ubah’
Data terupdate dalam database dan menampilkan data yang telah teredit tersebut dalam display informasi
Sesuai
19.
Double klik, salah satu data pada display informasi dan klik tombol ‘Hapus’
Menampilkan box pesan konfirmasi Sesuai
20. Klik tombol ‘Yes’Data terupdate dalam database dan terhapus pada display informasi
Sesuai
21.Edit field master data pelanggan dan Klik Tombol ‘Batal’
Refresh field master data pelanggan
22. Klik tombol ‘Keluar’ Kembali halaman Utama Sesuai
23.Klik Menu ‘Master’ → ‘Data Kendaraan’
Masuk halaman Form Master Data Kendaraan
Sesuai
24.Mengisi field masterdata kendaraan dan klik tombol ‘Simpan’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
25. Klik tombol ‘OK’Refresh field master data kendaran
Sesuai
26.Mengisi field masterdata kendaraan dan klik tombol ‘Simpan’
Data tersimpan dalam database dan menampilkan data tersebut dalam display informasi kendaraan
27. Klik tombol ‘Cari’ Menampilkan display data kendaraan
Sesuai
28.Double klik pada salah satu data dalam display data kendaraan
Menampilkan form master Kendaraan dan otomatis data tersebut masuk kedalam field master data
Sesuai
202
kendaraan
29.Edit data pada field master data kendaraandan klik tombol ‘Ubah’
Data terupdate dalam database dan menampilkan data yang telah teredit tersebut dalam form display data kendaraan
Sesuai
30.
Double klik, salah satu data pada display data kendaraan dan klik tombol ‘Hapus’
Menampilkan box pesan konfirmasi Sesuai
31. Klik tombol ‘Yes’Data terupdate dalam database dan terhapus pada display data kendaraan
Sesuai
32.Edit data pada field master data kendaraandan klik tombol ‘Batal’
Refresh field display data kendaraan
Sesuai
33. Klik tombol ‘Keluar’ Kembali halaman Utama Sesuai
34.Klik Menu ‘Master’ → ‘Data Driver’
Menampilkan Form MasterData Driver
Sesuai
35.Mengisi field masterdata driver dan klik tombol ‘Simpan’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
36. Klik tombol ‘OK’Refresh field master data driver
Sesuai
37.Mengisi field masterdata driver dan klik tombol ‘Simpan’
Data tersimpan dalam database dan menampilkan data tersebut dalam display informasi driver
Sesuai
38.
Pilih Combo Box ‘cari berdasarkan’ lalu Masukkan keyword pada field cari berdasarkan kategori
Menampilkan data yang dicari sesuai keyword yang dimasukkan dalam display informasi driver
Sesuai
39.Double klik pada salah satu data dalam display informasi driver
Otomatis data tersebut masuk kedalam field master data driver
Sesuai
40.Edit data pada field master data driver dan klik tombol ‘Ubah’
Data terupdate dalam database dan menampilkan data yang telah teredit tersebut dalam display informasi driver
Sesuai
41.
Double klik, salah satu data pada display informasi driver dan klik tombol ‘Hapus’
Menampilkan box pesan konfirmasi Sesuai
42. Klik tombol ‘Yes’Data terupdate dalam database dan terhapus pada display informasi driver
Sesuai
203
43.Edit field master data driver dan Klik Tombol ‘Batal’
Refresh field master data driver
44. Klik tombol ‘Keluar’ Kembali halaman Utama Sesuai
45.Klik Menu ‘Master’ → ‘Status Kendaraan’
Menampilkan form masterstatus kendaraan Sesuai
46.Double Klik ‘Display Informasi Status Kendaraan’
Menampilkan form detil kendaraan yang berisi field data status kendaraan
Sesuai
47.Klik tombol ‘Cari’ pada field driver detil kendaraan
Menampilkan Display Data Driver
Sesuai
48.Double klik display data driver
Kembali ke Form Detil Kendaraan dan memasukkan data driver tersebut pada field driver detil kendaraan
Sesuai
49Klik tombol ‘Cari’ pada field co. driverdetil kendaraan
Menampilkan Display Data Driver
Sesuai
50.Double klik display data co.driver
Kembali ke Form Detil Kendaraan dan memasukkan data driver tersebut pada field co.driver detil kendaraan
Sesuai
51.Edit field data detil kendaraan dan klik tombol ‘Ubah’
Data terupdate dalam database dan menampilkan data tersebut dalam display informasi status kendaraan
Sesuai
52. Klik tombol ‘Kembali’
Menutup form detil kendaraan dan kembali ke form master status kendaraan
Sesuai
53. Klik tombol ’Update’Menampilkan display informasi status kendaraanyang terupdate saat ini
Sesuai
54. Klik tombol ‘Keluar’Menutup form status kendaraan dan kembali ke halaman utama
Sesuai
55.Klik Menu ‘Transaksi’ →’Pengirim an B arang’
Menampilkan form transaksi pengiriman barang
Sesuai
56.
Klik tombol ‘Cari’ pada field no. Plgn transaksi pengiriman barang
Menampilkan Display Data Pelanggan
Sesuai
57.Double klik display data pelanggan Kembali ke Form Detil
Sesuai
204
Kendaraan dan memasukkan data driver tersebut pada field co.driver detil kendaraan
58.
Klik tombol ‘Cari’ pada field no. Perk transaksi pengiriman barang
Menampilkan Display Data Status Kendaraan
Sesuai
59.Double klik display data status kendaraan
Kembali ke Form Transaksi Pengiriman Barang dan memasukkan data status kendaraan tersebut pada field no.perk, no.polisi, driver, co.driver
Sesuai
60.Mengisi field transaksi pengiriman barang dan klik tombol ‘OK’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
61. Klik tombol ‘OK’Refresh field master field transaksi pengiriman barang
Sesuai
62.Mengisi field transaksi pengiriman barang dan klik tombol ‘OK’
Menampilkan data tersebut dalam display informasi pengiriman barang, dan refresh data kendaraan, supir, dan SJ
Sesuai
63. Klik tombol ‘OK’
Data tersimpan dalam database dan menampilkan halaman Display Surat Pesanan Kendaraan
Sesuai
64. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
65.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
66. Klik tombol ‘Cancel’Kembali ke halaman Display Surat Pesanan Kendaraan
Sesuai
67. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
68.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
69. Klik tombol ‘Cancel’Kembali ke halaman Display Surat Pesanan Kendaraan
Sesuai
70. Klik tombol ‘Keluar’Kembali ke Form Transaksi Pengiriman
Sesuai
205
Barang
71. Klik tombol ‘Batal’Refresh display informasi Transaksi Pengiriman Barang
Sesuai
72. Klik tombol ‘Keluar’ Kembali halaman Utama Sesuai
73.Klik Menu ‘Transaksi’ →’Bongkar M uat’
Menampilkan Form Transaksi Bongkar Muat
Sesuai
74.Double Klik display informasi SO
Menampilkan data SJ yang belum terkirim pada display SJ
Sesuai
75.Double Klik display informasi SJ
Menampilkan box pesan konfirmasi Sesuai
76. Klik tombol ‘Yes’
Data terupdate pada table sjdalam database dan terhapus pada display sj, jika tak ada SJ yang terproses maka data terupdate pada table so dan terhapus pada display SO
Sesuai
77. Klik ‘Update’Refresh display informasi bongkar muat
Sesuai
78. Klik ‘Keluar’ Kembali ke halaman utama Sesuai
79.Klik Menu ‘Transaksi’ →’Batal M uat’
Menampilkan Form Transaksi Batal Muat
Sesuai
80.Double Klik display informasi SJ yang masih terproses
Menampilkan box pesan konfirmasi
Sesuai
81. Klik tombol ‘Yes’Data terupdate pada table sjdalam database dan terhapus pada display sj
Sesuai
83. Klik ‘Update’Refresh display informasi batal muat
Sesuai
84. Klik ‘Keluar’ Kembali ke halaman utama Sesuai
85.Klik Menu ‘Transaksi’ →’Pem bayaran Ekspedisi’
Menampilkan Form Transaksi Pembayaran Ekspedisi
Sesuai
86.
Double Klik display informasi pembayaran ekspedisi yang belum lunas
Menampilkan Form Data Pembayaran Ekspedisi
Sesuai
87.Mengisi field transaksi pembayaran ekspedisidan klik tombol ‘OK’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
88. Klik tombol ‘OK’Refresh field master field transaksi pembayaran ekspedisi
Sesuai
89. Mengisi field transaksi Menampilkan box pesan Sesuai
206
pembayaran ekspedisidan klik tombol ‘OK’
konfirmasi
90. Klik tombol ‘OK’
Data terupdate dalam database dan menampilkan data tersebut dalam display informasi transaksi pembayaran ekspedisi. Dan menampilkan halaman Display Surat Pembayaran Ekspedisi jika pembayaran telah lunas.
Sesuai
91. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
92.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
93. Klik tombol ‘Cancel’Kembali ke halaman Display Surat Pembayaran Ekspedisi
Sesuai
94. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
95.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
96. Klik tombol ‘Cancel’Kembali ke halaman Display Surat Pembayaran Ekspedisi
Sesuai
97. Klik tombol ‘Keluar’Kembali ke Form DataPembayaran Ekspedisi Sesuai
98.Double Klik display informasi pembayaran ekspedisi
Menampilkan box pesan konfirmasi, ‘apakah ingin membatalkan pembayaran’
Sesuai
99. Klik tombol ‘Yes’
Data terupdate dalam database dan terhapus pada display pembayaran ekspedisi
Sesuai
100. Klik tombol ‘Keluar’Kembali ke Form Transaksi Pembayaran Ekspedisi
Sesuai
101. Klik tombol ‘Keluar’Kembali ke Halaman Utama
Sesuai
102.Klik Menu ‘Laporan’ → ‘D ata Pelanggan’
Masuk halaman Display Laporan Data Pelanggan
Sesuai
103. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
104.Select printer, select page range, input number of copies dan
Mencetak laporan tersebut. Sesuai
207
klik tombol ‘Print’
105. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Pelanggan
Sesuai
106. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
107.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
108. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Pelanggan
Sesuai
109. Klik tombol ‘Keluar’Kembali ke Halaman Utama Sesuai
110.Klik Menu ‘Laporan’ → ‘D ata K endaraan’
Masuk halaman Display Laporan Data Kendaraan Sesuai
111. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
112
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
113. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Kendaraan
Sesuai
114. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
115.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
116. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Kendaraan
Sesuai
117. Klik tombol ‘Keluar’Kembali ke HalamanUtama
Sesuai
118.Klik Menu ‘Laporan’ → ‘D ata Supir’
Masuk halaman Display Laporan Data Supir
Sesuai
119. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
120.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
121. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Supir
Sesuai
122. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
123.Select Save in, input file name, select file as
Menyimpan laporan tersebut dalam format
Sesuai
208
type, dan klik tombol ‘Save’
softcopy.
124. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Data Supir
Sesuai
125. Klik tombol ‘Keluar’Kembali ke Halaman Utama
Sesuai
126.Klik Menu ‘Laporan’ → ‘Status K endaraan’
Masuk halaman Display Laporan Status Kendaraan
Sesuai
127. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
128.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
129. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Status Kendaraan
Sesuai
130. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
131.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
132. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Status Kendaraan
Sesuai
133. Klik tombol ‘Keluar’Kembali ke Halaman Utama Sesuai
134.Klik Menu ‘Laporan’ →’Ekspedisi’
Menampilkan Form Laporan Ekspedisi Sesuai
135.
Select Status Ekspedisi, Input tanggal awal, tanggal akhir transaksi dan klik tombol ‘Cetak’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
136. Klik tombol ‘OK’Kembali Form Transaksi Ekspedisi Per Periode
Sesuai
137.
Select Status Ekspedisi, Input tanggal awal, tanggal akhir transaksi dan klik tombol ‘Cetak’
Masuk halaman Display Laporan Ekspedisi Per Periode
Sesuai
138. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
139.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
140. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Ekspedisi
Sesuai
209
Per Periode141. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
142.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
143. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan EkspedisiPer Periode
Sesuai
144. Klik tombol ‘Keluar’Kembali ke halaman Utama
Sesuai
145.Klik Menu ‘Laporan’ →’Transaksi Pembayaran Ekspedisi’
Menampilkan Form Laporan Transaksi Pembayaran Ekspedisi
Sesuai
146.
Input tanggal awal, tanggal akhir transaksi dan klik tombol ‘Cetak’
Menampilkan box pesan kesalahan Sesuai
Nilai input invalid
147. Klik tombol ‘OK’Kembali Form Transaksi Ekspedisi Per Periode Sesuai
148.
Input tanggal awal, tanggal akhir transaksi dan klik tombol ‘Cetak’
Masuk halaman Display Laporan Transaksi Ekspedisi Per Periode
Sesuai
149. Klik tombol ‘Print’ Masuk ke jendela Print Sesuai
150.
Select printer, select page range, input number of copies dan klik tombol ‘Print’
Mencetak laporan tersebut. Sesuai
151. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Transaksi Ekspedisi Per Periode
Sesuai
152. Klik tombol ‘Save’ Masuk ke jendela Save Sesuai
153.
Select Save in, input file name, select file as type, dan klik tombol ‘Save’
Menyimpan laporan tersebut dalam format softcopy.
Sesuai
154. Klik tombol ‘Cancel’Kembali ke halaman Display Laporan Transaksi Ekspedisi Per Periode
Sesuai
155. Klik tombol ‘Keluar’Kembali ke halaman Utama
Sesuai
156.Klik Menu ‘Gateway’ → ‘SMS Server dan Broadcast’
Menampilkan form SMS Server dan Broadcast
Sesuai
157. Klik ‘Tab Server’Menampilkan Setting SMS Server
Sesuai
210
158.Mengisi field setting SMS Server dan klik tombol ‘Simpan’
Menampilkan box pesan konfirmasi
Sesuai
159. Klik ‘Yes’Setting terminal dengan data yang telah diinput Sesuai
160. Klik ‘Buka Koneksi’
Status Koneksi masih dalam status ‘terputus’ tidak berubah menjadi ‘terhubung’
Sesuai Invalid
161.Setting SMS Server dan Klik ‘Buka Koneksi’
Status Terhubung Sesuai
162.Mengisi field SMS Broadcast dan klik tombol ‘Kirim’
Menampilkan box pesan kesalahan
SesuaiNilai input invalid
163. Klik ‘OK’Refresh field data SMS Broadcast
Sesuai
164.Mengisi field SMS Broadcast dan klik tombol ‘Kirim’
Data tersimpan dalam database dan SMS tersebut akan dikirimkan kepada si penerima.
SesuaiNilai input invalid
165.
Supir Mengirim ’SMS’ yang berisi informasi status ekspedisi ke SMS Server, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut, kemudian SMS Server secara otomatis akan mengirimkan pesan balasan kepada supir mengenai kesalahan dalam format SMS yang dikirim oleh supir.
SesuaiNilai input invalid
166.
Supir Mengirim ’SMS’ yang berisi informasi status ekspedisi ke SMS Server, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut dan menyimpannya dalam database, kemudian SMS Server secara otomatis akan mengirimkan informasi ekspedisi tersebut ke pelanggan, dan juga admin jika membutuhkan informasi tersebut.
Sesuai
167.
Supir Mengirim ’SMS’ yang berisi informasi status kendaraan ke SMS Server, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut, kemudian SMS Server secara otomatis akan mengirimkan pesan balasan kepada supir mengenai kesalahan dalam format SMS yang dikirim oleh
SesuaiNilai input invalid
211
supir.
168.
Supir Mengirim ’SMS’ yang berisi informasi status kendaraan ke SMS Server, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut dan mengupdate dalam database, kemudian SMS Server mengirimkan pesan balasan bahwa status kendaraan telah terupdate.
Sesuai
169.
Pelanggan Mengirim Request SMS mengenai Transaksi Pembayaran Ekspedisi, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut, kemudian SMS Server secara otomatis akan mengirimkan pesan balasan kepada pelanggan mengenai kesalahan dalam format SMS yang dikirim oleh pelanggan.
Sesuai Invalid
170.
Pelanggan Mengirim Request SMS mengenai Transaksi Pembayaran Ekspedisi, dengan format yang telah ditentukan
SMS Server akan memproses SMS tersebut dan menyimpannya dalam database, kemudian SMS Server secara otomatis akan mengirim pesan balasan SMS tersebut
Sesuai
171.Klik Menu ‘Gateway’ → ‘M aster Pesan’
Menampilkan form Master Pesan Sesuai
172.
Pilih data inbox per tanggal, per bulan atau per tahun Kemudian Klik ‘Update’
Menampilkan informasi pesan masuk (inbox) berdasarkan tanggal, bulan atau tahun yang kita pilih
Sesuai
173.Double Klik display informasi pesan masuk (inbox)
Menampilkan Form Data Inbox yang berisi Detail Pesan tersebut dan Pesan Balasan yang di request
Sesuai
172.
Pilih data outbox per tanggal, per bulan atau per tahun Kemudian Klik ‘Update’
Menampilkan informasi pesan broadcast (outbox) berdasarkan tanggal, bulan atau tahun yang kita pilih
Sesuai
173.Double Klik display informasi pesan broadcast (outbox)
Menampilkan Form Data Broadcast (outbox) yang berisi Detail Pesan Broadcast tersebut
Sesuai
174.Klik Menu ‘File’ → ’Logout’
Menampilkan Halaman Utama Namun Hanya Menu File yang aktif, dan hanya sub menu Log In dan Exit yang aktif
Sesuai
175. Klik Menu ’File’ → Keluar dari program Sesuai
212
’Exit’ Aplikasi Sistem Informasi Pengiriman Barang Berbasis SMS Gateway
4.3.4.4 Cara Pengopersian Aplikasi
Untuk menjalankan aplikasi ini, yang pertama dilakukan adalah
menghubungkan komputer dengan handphone melalui perantara kabel
data dan port yang ada pada komputer. Pada aplikasi ini sistem akan
melakukan deteksi port COM yang ada. Untuk mengetahui bahwa
handphone dan kabel data yang akan digunakan dalam program SMS
Server berjalan dengan baik, penulis menggunakan program yang terdapat
pada Windows yaitu Hyper Terminal. Berikut adalah langkah-langkah
menggunakan program hyper terminal:
1. Menjalankan Hyper Terminal
Klik Start Program Accessories Communication Hyper
Terminal, seperti yang terlihat pada gambar 4.64
Gambar 4.88 Menjalankan Hyper Terminal
213
2. Pemberian nama koneksi (Connection Description)
Setelah mengklik ikon Hyper Terminal, akan muncul kotak dialog
seperti gambar 4.65
Gambar 4.89 Connection Description
Kemudian berikan nama pada kolom Name dan pilih ikon pada kolom
Icon, setelah itu tekan OK.
3. Koneksi ke Serial Port
Setelah mengklik OK pada form Connection Description akan muncul
tampilan pada gambar 4.66, yang meminta untuk melakukan koneksi
ke terminal menggunakan Serial Port. Karena dalam proses
penyambungan kita menggunakan port COM10, maka pada menu
Connect using, pilih COM10 Setelah itu klik OK untuk melanjutkan
ke langkah selanjutnya
214
Gambar 4.90 Koneksi ke Serial Port
4. Pengaturan Port Setting
Setelah mengklik OK pada form Connect to Serial Port maka akan
muncul kotak dialog pengaturan parameter port untuk melakukan
koneksi ke terminal yang dapat dilihat pada gambar 4.67 setelah
melakukan pengaturan port, langkah selanjutnya menekan tombol OK.
Gambar 4.91 Port Setting
215
5. Tampilan Jendela Utama Hyper Terminal
Setelah mengklik tombol OK maka akan tampil jendela utama Hyper
Terminal, seperti yang terlihat pada gambar 4.68
Gambar 4.92 Jendela Utama Hyper Terminal
6. Melakukan percobaan penyambungan ke terminal
Setelah jendela utama berhasil muncul, maka sekarang saatnya untuk
melakukan percobaan penyambungan ke terminal. Perintah yang
dipakai dalam mengoperasikan program Hyper Terminal ini adalah
perintah AT atau biasa disebut AT Command. AT Command adalah
perintah-perintah yang digunakan untuk berkomunikasi dengan
terminal melalui Serial Port pada komputer. Penulis hanya
menggunakan beberapa perintah AT yang ada hubungannya dengan
system kerja SMS Server yang telah dibuat. Adapun perintah yang
216
akan digunakan dapat dilihat pada gambar 4.69 Penjelasan dari
perintah AT tersebut dapat dilihat pada bab 2.
Gambar 4.93 Percobaan penyambungan ke terminal menggunakan
perintah AT
Setelah penyambungan antara handphone dan computer behasil langkah
selanjutnya ialah menambahkan paket kelas untuk hubungan dengan Serial
Port, karena pada Java 2 Standar Development Kit (Java 2 SDK) belum
disediakan fasilitas untuk hubungan dengan Serial Port. Nama kelas itu
adalah Java Communication Port. Adapun cara instalasinya adalah sebagai
berikut:
1. Ekstrak file javacomm20-win32.zip ke direktori sementara misalnya
C:\commapi.
217
2. Copy file win32com.dll ke direktori bin ditempat Java 2 SDK berada,
misalnya C:\Program Files\Java\jdk1.5.0_08\jre\bin
3. Copy file javax.comm.properties ke direktori lib di tempat Java 2
SDK berada, misalnya: C:\Program Files\Java\jdk1.5.0_08\jre\lib
4. Copy file comm.jar ke direktori ext di tempat Java 2 SDK berada,
misalnya C:\Program Files\Java\jdk1.5.0_08\jre\lib\ext
Setelah kita menambahkan paket kelas Java Communication Port,
maka langkah selanjutnya adalah mengaktifkan database server yang telah
diinstall terlebih dahulu sebelumnya, database server yang penulis
gunakan ialah MySQL4.0.2. Berikut adalah cara untuk menjalankan
database server MySQL4.0.2:
Klik My Computer Drive C: mysql bin winmysqladmin.exe
Seperti yang terlihat pada gambar 4.70
Gambar 4.94 Menjalankan Database Server MySQL4.0.2
218
Jika database server berhasil dijalankan maka ada tanda lampu
hijau di taskbar windows, seperti yang terlihat pada gambar 4.71
Gambar 4.95 ikon MySQL4.0.2 di taskbar windows
Database yang diperlukan telah terdapat pada database server, cara
untuk mengetahui bahwa database tersebut siap digunakan ialah dengan
menggunakan tools MySQLFront2.5 yang telah diinstall sebelumnya,
tools ini memudahkan kita dalam mengelola database server MySQL.
Berikut adalah langkah-langkah untuk menggunakan aplikasi
MySQLfront2.0
1. Menjalankan MySQLFront2.5
Klik Start All Programs MySQL-Front MySQL-Front2.5
seperti yang terlihat pada gambar 4.72
Gambar 4.96 Menjalankan MySQLFront2.5
219
2. Setting Connection MySQL
Sebelum terhubung dengan MySQL Database terlebih dahulu kita
mensetting Connection to MySQL supaya dapat menampilkan
informasi database dan table dari database server MySQL, seperti yang
terlihat pada gambar 4.73
Gambar 4.97 Connection to MySQL
Setelah itu isi Hostname dengan localhost karena kita
menggunakan database secara local. Isi User dengan root karena secara
default database MySQL menggunakan root sebagai user name dengan
hak akses sebagai administrator. Kosongkan password karena pertama
kali koneksi MySQLServer tidak memerlukan password. Kemudian tekan
tombol Connect agar dapat terhubung dengan database dbgp yang
digunakan untuk menyimpan semua data yang ada selama aplikasi ini
dijalankan. Setelah semua kebutuhan yang diperlukan dipenuhi yaitu
perangkat keras, perangkat lunak dan koneksi antara handphone dengan
komputer, maka sistem sudah dapat dijalankan.
220
4.3.4.5 Metode Kerja Sistem Usulan
Sistem aplikasi ini berbasis SMS Gateway yang dijalankan pada
sebuah komputer yang memiliki database dan terhubung dengan sebuah
handphone sebagai media untuk menerima dan membalas pesan. Pesan
yang diterima selanjutnya akan diproses oleh sistem dan akan secara
otomatis memberikan pesan balasan sesuai dengan pesan yang diterima.
Tahapan dalam menggunakan fasilitas SMS ini adalah sebagai berikut:
1) Supir dan Pelanggan harus mendaftarkan diri kepada bagian marketing
terlebih dahulu sebelum menggunakan fasilitas ini.
2) Setelah terdaftar maka Supir dan Pelanggan dapat mengirim pesan
dengan format yang telah ditentukan sebelumnya.
3) Pesan yang dikirim akan diterima dan langsung diproses oleh aplikasi
secara otomatis.
4) Aplikasi akan memberikan balasan sesuai dengan pesan yang diterima
SMS server kepada pelanggan supir, maupun admin.
Skema arsitektur SMS gateway yang digunakan untuk aplikasi ini
dapat dilihat pada Gambar 4.74 Arsitektur ini menggunakan hardware
yaitu PC/Laptop (SMS Server), ponsel Client (supir, pelanggan, dan
admin), kabel data USB, serta dibutuhkan juga ponsel SMS Server.
221
Gambar 4.98 : Pengiriman dan Penerimaan Request SMS
Keterangan gambar diatas :
1) Ponsel client (supir, pelanggan dan admin), ponsel yang telah terdaftar
pada aplikasi untuk mengirim dan menerima SMS dari dan ke ponsel
SMS server.
2) Ponsel SMS Server, untuk mengirim dan menerima dari dan ke ponsel
pengirim pada Gambar 4.71. Jenis telepon seluler yang digunakan
pada pembuatan program aplikasi ini adalah Sony Ericsson seri K618i.
3) Kabel data USB, sebagai perantara untuk mengirimkan data dari
telepon seluler yang terhubung dengan komputer SMS server.
4) Komputer, sebagai tempat aplikasi berbasis SMS gateway ini berjalan.
Sedangkan tahapan-tahapan yang dilakukan pada aplikasi
broadcast informasi barang melalui SMS adalah hampir sama seperti
aplikasi request, hanya saja client (supir dan pelanggan) tidak meminta
atau mengirim pesan dalam format tertentu. Administrator akan mengirim
informasi yang telah diinput pada tabel pesan broadcast, lalu computer
SMS server akan mencari nomor ponsel client yang telah terdaftar pada
222
database. Setelah mencari nomor ponsel client yang telah registrasi maka
ponsel SMS server akan mengirimkan pesan kepada ponsel client yang
bersangkutan. Untuk lebih jelasnya dapat dilihat pada Gambar 4.75 :
Gambar 4.99 : Skema Pengiriman Broadcast SMS
Agar memudahkan pengolahan data dan menghindarkan terjadinya
kesalahan pengiriman, maka dalam aplikasi request telah ditentukan
format yang digunakan dalam pengiriman SMS. Pada tabel 4.50 dapat
dilihat 10 format request yang tersedia dengan keterangannya untuk
masing-masing request.
Tabel 4.50 : Format SMS No. Format SMS Request Keterangan Forward1. TERKIRIM<spasi>No.SJ Supir Memberikan
informasi ekspedisi yang telah sampai pada tujuan
Pelanggan, Admin
2. BATAL<spasi>No.SJ Supir Memberikan informasi ekspedisi yang batal
Pelanggan, Admin
3. STATUS<spasi>No.Plat<spasi>Posisi
<spasi>StatusKendaraan
Supir Memberikan informasi tentang status kendaraan
-
4. BAYAR<spasi> No.SO<spasi>Jml.Bayar
Pelanggan Menginputpembayaran ekspedisi
-
223
5. TAGIHAN <spasi>No.SO Pelanggan Melihat sisa tagihan
-
6. CEK<spasi>kendaraan Pelanggan Melihat Kendaraan yang tersedia
7. SARAN<spasi>Isi Saran Pelanggan Fasilitas untuk memberi saran
-
8. CEKPOSISI<spasi>Posisi Admin Melihat kendaraanyang tersedia pada posisi tertentu
-
9. INFO<spasi>Pelanggan Pelanggan Info Format SMS untuk Pelanggan
-
10. INFO<spasi>Supir Supir Info Format SMS untuk Supir
-
Berikut ini adalah contoh pesan yang sesuai dengan format yang
telah ditentukan :
1. terkirim ex0001
2. batal ex0001
3. status b9514dp banyuwangi tersedia
4. bayar ps0001 1000000
5. tagihan ps0001
6. cek kendaraan
7. saran tolong diperluas wilayah pemasarannya
8. cekposisi jakarta
9. info pelanggan
10. info supir
224
4.3.4.6 Evaluasi Aplikasi
Evaluasi aplikasi dimaksudkan untuk menganalisa hasil yang telah
dicapai oleh program yang dikembangkan :
a. Kelebihan Aplikasi
Beberapa hal yang menjadi keunggulan pada aplikasi ini, diantaranya
adalah :
1) Aplikasi ini dibuat menggunakan bahasa pemrograman java yang
bersifat multi platform, sehingga dapat digunakan pada sistem operasi
yang berbeda.
2) User dapat menggunakan aplikasi ini dengan mudah karena tampilan
dibuat sesederhana mungkin.
3) Dalam aplikasi ini dapat diketahui status pesan yang dikirimkan
apakah berhasil terkirim atau tidak berhasil terkirim.
4) User dapat mengirim pesan dengan panjang maksimal lebih dari 160
karakter, hal ini dilakukan dengan cara membagi pesan kedalam
beberapa pengiriman setiap 160 karakter.
5) Aplikasi ini menggunakan satu buah HP untuk SMS Server dan
Broadcast, hal ini bertujuan meminimalkan biaya pembuatan.
b. Kekurangan Aplikasi
Ada beberapa hal yang menjadi kendala jika aplikasi ini dijalankan,
diantaranya adalah :
1) Biaya SMS balasan masih dibebankan kepada server, untuk mengatasi
kendala itu kita dapat melakukan kerja sama dengan provider untuk
mendapatkan sebuah nomor telepon yang bertarif premium, dengan
225
demikian biaya SMS balasan akan diambil dari nomor telepon
pengguna yang melakukan permintaan informasi kepada server.
2) Panjang maksimal pesan yang diterima dibatasi hanya 160 karakter, ini
dikarenakan aplikasi ini hanya dikhususkan bagi format pesan dengan
panjang maksimal 160 karakter, jika ada pesan masuk dengan panjang
lebih dari 160 karakter maka jalannya aplikasi akan terganggu.
3) Kondisi handphone yang sering digunakan pasti akan mengalami
gangguan, oleh karena itu kita perlu menyediakan backup. Handphone
yang sering digunakan akan mengurangi kondisi baterai dan sinyal dari
jenis simcard yang digunakan.
226
BAB V
PENUTUP
5.1 Kesimpulan
Berdasarkan uraian dan pembahasan pada bab-bab sebelumnya, maka
dapat ditarik kesimpulan bahwa :
1. Sistem Pengiriman Barang berbasis SMS Gateway akan lebih
memudahkan pekerjaan dan dapat meningkatkan kelancaran proses
pelayanan pengiriman barang di bagian marketing.
2. Dengan sistem berbasis database ini dapat mempercepat pengolahan data
dan pembuatan laporan, serta informasi yang dihasilkan lebih akurat, cepat
dan lengkap dan dapat dirancang sesuai keinginan, sehingga terjadinya
kesalahan-kesalahan yang disebabkan keterbatasan seperti human error
atau ketidaksengajaan dapat dikurangi
3. Penggunaan Sistem Pengiriman Barang berbasis SMS membantu dalam
menghasilkan keputusan-keputusan yang akurat dan cepat. Sehingga
pelayanan terhadap seluruh pelanggan dapat meningkat dan semakin
membaik.
5.2 Saran
Berdasarkan kesimpulan-kesimpulan yang telah dikemukakan, dapat
diajukan beberapa saran untuk pengembangan lebih lanjut antara lain :
1. Mengadakan suatu pelatihan bagi user yang menggunakan sistem ini
sehingga dalam pengoperasiannya mendapatkan hasil yang maksimal.
227
2. Karena aplikasi ini hanya mengolah data pada bagian marketing saja,
maka nantinya diharapkan adanya hubungan yang terintegrasi antara
bagian marketing ini dengan bagian-bagian lainnya dalam perusahaan
seperti: inventory, koordinator supir, accounting dan lain-lain, sehingga
menciptakan suatu aplikasi yang utuh.
3. Disarankan adanya pengembangan aplikasi ini yang tadinya berbasis stand
alone menjadi sistem berbasis web (internet) sehingga user dapat
mengakses aplikasi ini kapan saja dan dimana saja.
228
DAFTAR PUSTAKA
Hermawan, Benny. 2004. Mengusai Java 2 dan Object Oriented
Programming. Yogyakarta : Andi
Indrajani dan Martin. 2007. Pemrograman Berbasis Objek dengfan Bahasa
Java. Jakarta : PT. Elex Media Komputindo
Kadir, Abdul. 2003. Pengenalan Sistem Informasi. Jakarta : Graha Ilmu
Lutfi, Ahmad. 2008. Pengembangan Sistem Informasi Angkutan Umum Terminal
Lebak Bulus Berbasis SMS Gateway. Jakarta : Skripsi Jurusan Teknik
Informatika UIN Syarif Hidayatullah Jakarta.
Prasetyo, Didik Dwi. 2003. Belajar Sendiri Adminstrasi Database Server MySQL.
Jakarta : PT Elex Media Komputindo.
Purnomo, Adi. 2007. Pemrograman Java 2 : Membangun Beragam Aplikasi
Layanan SMS. Jakarta : Salemba Infotek
Ria Kusuma Handayani. 2005. Perancangan Sistem Informasi Pengiriman
Barang pada PT. Ritra Cargo Indonesia. Jakarta : Skripsi Jurusan
Teknik Informatika UIN Syarif Hidayatullah Jakarta.
Ratih Wahyuningrum, 2005. Aplikasi SMS untuk Permintaan Nilai
Akademik pada Fakultas Sains dan Teknologi. Jakarta : Skripsi
Jurusan Teknik Informatika UIN Syarif Hidayatullah Jakarta.
229
Raymond McLeod, Jr dan Georce Schell. 2004. Sistem Informasi
Manajemen. Jakarta : PT Indeks
Rickyanto, Isak. 2004. Pemrograman Database Java dengan JDBC.
Yogyakarta : Andi
Saputro, Wahyu T., 2005. MYSQL Untuk Pemula. Yogyakarta : Pena Media
Sarwono, Jonathan. 2006. Metode Penelitian Kuantitatif dan Kualitatif.
Bandung : Graha Ilmu
Sholiq. 2005. Pemodelan Sistem Informasi Berorientasi Objek dengan
UML. Yogyakarta : Graha Ilmu
Wahana Komputer. 2005. Pengembangan Aplikasi Sistem Informasi
Akademik Berbasis SMS dengan Java. Jakarta : Salemba Infotek
Whitten, Jeffery L, Lonnie D. Bentley, Kevin C. Dittman. 2004. System
Analysis and Design Methods 6th. New York : McGraw-Hill
www.winsms.com. 16 Desember 2010, pukul 15.18 WIB 2010
Matius Soesilo Wijono, G. Sri Hartati Wijono, B. Herry Suharto. 2005. JavaTM 2 SE
dengan J Builder. Yogyakarta : Andi.
230
LAMPIRAN A
WAWANCARA
Wawancara 1
Responden : Marciano Sutedja, S.Kom
Jabatan : Manajer Umum
Tanggal : 6 Januari 2009
Hal : Profil PD. Guna Pratama
Tujuan dari wawancara ini peneliti ingin mengetahui profil dari PD Guna Pratama
mulai dari latar belakang berdirinya PD. Guna Pratama hingga Visi dan Misi PD. Guna
Pratama
Berikut adalah hasil wawancara peneliti dengan Manajer Umum PD. Guna Pratama :
1. Q : Kapan awal berdirinya PD. Guna Pratama ?
A : Perusahaan ini mulai berdiri pada tahun 2002 dengan jumlah kendaraan
hanya sebanyak 6 dan 12 pengemudi. Akan tetapi dikarenakan kepercayaan
yang begitu besar yang diberikan kepada PD. Guna Pratama oleh para
pelanggan, maka dalam waktu singkat (tahun 2006), PD. Guna Pratama
telah berkembang pesat .
2. Q : PD. Guna Pratama bergerak di bidang ekspedisi, apakah perusahaan
ekspedisi itu?
A : Perusahaan Ekspedisi adalah perusahaan jasa yang menawarkan jasa
pengiriman barang. Dalam hal ini kami bergerak di bidang jasa angkut
muatan khususnya untuk jasa angkutan pendingin
3. Q : Daerah mana saja yang telah dicakup oleh PD. Guna Pratama ?
A : Untuk saat ini kami menyediakan jasa ekspedisi mulai dari pulau Jawa,
Bali, dan Sumatera Selatan
4. Q : Apa Keunggulan PD. Guna Pratama dibandingkan dengan Perusahaan
Ekspedisi Lain
231
A : Guna Pratama memiliki fasilitas yang sangat memanjakan pelanggan
seperti Ultra Foam, Thermoking cooler, Surrounding cold air, Temperature
Data Logger.
5. Q : Apa Visi dan Misi PD. Guna Pratama
A : Visi Guna Pratama yakni Inovasi dan berimprovisasi mengadopsi
teknologi-teknologi terbaru sebagai upaya meningkatkan kualitas
pelayanan. Sedangkan Misinya adalah Memberikan kecepatan, keamanan
dan ketepatan dalam hal pengiriman barang, dengan pelayanan secara total
dan profesionalisme tinggi sehingga memberikan kepuasan terhadap
pelanggan.
Wawancara 2
Responden : Sutomo Widjaya
Jabatan : Marketing
Tanggal : 8 Januari 2009
Hal : Deskripsi Tugas Marketing
Tujuan dari wawancara ini peneliti ingin mengetahui tugas apa saja yang dilakukan
oleh bagian marketing PD. Guna Pratama.
Berikut adalah hasil wawancara peneliti dengan Kepala Marketing PD. Guna Pratama :
1. Q : Sebagai bagian Marketing, tugas apa saja yang bapak kerjakan?
A : Tugas yang saya kerjakan cukup banyak karena posisi saya adalah sebagai
orang yang berhubungan langsung dengan pelanggan, supir, diantaranya
adalah :
1. Menghubungi pelanggan untuk mencari muatan.
2. Menerima pesanan pengiriman barang
3. Negoisasi harga dengan pelanggan
4. Menghubungi pelanggan jika muatan telah sampai pada tujuan
5. Cek posisi atau Status kendaraan
232
6. Menginput dan Mengupdate data pesanan ekspedisi
7. Memberikan laporan kendaraan yang jalan perhari
8. Menghubungi pelanggan jika pembayaran belum masuk
9. Cek data Testo atau Pendingin
10. Menghubungi Supir jika ada Muatan.
2. Q : Produk apa saja yang diekspedisi oleh PD Guna Pratama ?
A : Sebagian besar adalah produk makanan dan minuman seperti buah-buahan,
sayur-sayuran, keju, baso, sosis, daging, ikan, jus, udang.
3. Q : Bagaimana Prosedur Pemesanan Kendaraan?
A : Pelanggan dapat langsung menghubungi saya selaku customer service yang
selalu siap setiap saat. Kemudian saya akan menanyakan detail kebutuhan
pelanggan dan mengatur segala hal mulai dari menyiapkan kendaraan
mengatur pengemudi secepatnya, Pemesanan sebaiknya dilakukan satu atau
dua hari sebelum hari penyewaan agar dapat dipersiapkan sebaik-baiknya.
4. Q : Bagaimana jika terjadi kerusakan?
A : Supir akan membawa kendaraan ke bengkel terdekat, jika terjadi kerusakan
barang disebabkan kendaraan kami, kami akan mengganti kerugian
pelanggan.
5. Q : Bagaimana prosedur pembayaran yang berlaku ?
A : Pembayaran jasa kami dapat dilakukan dengan dua cara. Yang pertama
dapat melalui tunai (bayar di tempat atau tempat bongkar), cara yang ke
dua adalah transfer ke rekening Guna Pratama.
6. Q : Sebagai Kepala Marketing Apa yang menjadi keluhan bapak pada sistem
yang sedang berjalan pada PD. Guna Pratama
A : Banyaknya Tugas yang saya tangani tidak didukung dengan sistem yang
cepat dan akurat dan saya harus stand by pagi dan malam untuk
mengetahui informasi tentang ekspedisi.
233
Wawancara 3
Responden : Sutomo Widjaya
Jabatan : Marketing
Tanggal : 10 Januari 2009
Hal : Informasi yang dibutuhkan oleh Sistem Usulan
Tujuan dari wawancara ini peneliti ingin mengetahui apa saja yang dibutuhkan penulis
dalam pembuatan Aplikasi Berbasis SMS Gateway.
1. Q : Informasi apa saja yang biasa anda sampaikan kepada supir atau pelanggan?
A : Informasi yang saya sebarkan diantaranya :
Untuk Pelanggan :
1. Informasi ekspedisi barang yang akan dilakukan, yakni berisi informasi detil pengiriman barang yang akan dilakukan seperti : Jadwal Keberangkatan, Jurusan Ekspedisi, Jenis Muatan, Kendaraan dan Supir, serta Biaya Ekspedisi.
2. Informasi tentang status keadaan barang, Apakah barang yang dikirim telah sampai pada tujuan atau belum, dan bisa juga gagal karena suatu hal seperti kecelakaan.
3. Informasi tentang pembayaran ekpedisi, yang berisi informasi detil pembayaran apakah pembayaran ekspedisi telah lunas atau belum.
Untuk Supir :
1. Informasi mengenai waktu ekspedisi, lokasi pelanggan, dan surat jalan.2. Informasi mengenai pemberitahuan dan peringatan tentang ekspedisi.
2. Q : Dalam bentuk apa saja informasi tersebut disampaikan?
A : Informasi yang disampaikan kepada pelanggan mengenai ekspedisi barang yakni dalam bentuk surat dan telepon. Dalam bentuk surat seperti Surat Penawaran Harga Ekspedisi, Surat Pemesanan Ekspedisi Barang (SO), Transaksi Pembayaran Ekspedisi Barang (Faktur). Sedangkan dalam bentuk telepon seperti informasi mengenai status keadaan barang, seperti barang yang dikirim telah sampai pada tujuan dan informasi mengenai tagihan ekspedisi apakah sudah lunas atau belum. Informasi yang disampaikan kepada supir mengenai waktu ekspedisi, lokasi pelanggan, surat jalan dan peringatan tentang ekspedisi biasanya disampaikan melalui telepon atau SMS.
234
3. Q : Dari mana informasi berasal dan bagaimana alur pendistribusian informasi dari sumbernya kepada pihak yang dituju?
A : Pelanggan dapat langsung menghubungi saya selaku customer service yang selalu siap setiap saat. Kemudian saya akan menanyakan detail kebutuhan pelanggan dan mengatur segala hal mulai dari menyiapkan kendaraan mengatur pengemudi secepatnya, Pemesanan sebaiknya dilakukan satu atau dua hari sebelum hari penyewaan agar dapat dipersiapkan sebaik-baiknya.
4. Q : Apa saja kendala yang anda alami dalam proses penyebaran informasi yang telah dilakukan
A : Karena PD. Guna Pratama ini waktu pelayanannya adalah 24 jam, sehingga apabila pelanggan atau supir membutuhkan informasi di malam hari sering terjadi keterlambatan, seperti dalam proses pengolahan data dan pemberitahuan informasi terhadap pelanggan, dan juga sulit untuk menentukan keputusan jadwal ekspedisi untuk supir.
5. Q : Menurut Anda pekerjaan apa saja yang diharapkan dapat dikerjakan oleh sistem berbasis SMS Gateway ini dalam membantu proses penyebaran informasi?
A : Tentunya sistem diharapkan dapat membantu dalam mengolah data-data dan informasi mengenai ekspedisi atau pengiriman barang seperti status ekspedisi barang, status kendaraan, cek kendaraan, tagihan ekspedisi, pemberitahuan dan peringatan terhadap supir, sehingga lebih cepat dan efisien dari proses yang dilakukan selama ini.
6. Q : Data apa saja yang menurut anda perlu dilibatkan dalam sistem jika sistem tersebut benar-benar diterapkan?
A : Data-data yang perlu dilibatkan antara lain data pelanggan, supir, status kendaraan, pembayaran ekspedisi, dan informasi mengenai SMS Broadcast.
235
Wawancara 4
Responden : Supir PD. Guna Pratama
Tanggal : 12 Januari 2009
Hal : Mengetahui tugas yang dilakukan oleh supir PD. Guna Pratama
1. Kegiatan apa saja yang anda lakukan sebagai supir PD. Guna Pratama?
Jawab :
Kegiatan yang saya lakukan sebagai supir adalah:
1. Mengantar muatan atau barang milik pelanggan sampai tujuan yang telah ditentukan
2. Memberi informasi ke admin (petugas marketing) bahwa barang yang dikirim telah sampai pada tujuan
3. Memberikan Informasi kepada admin (petugas marketing) mengenai posisi stand by
4. Memberi informasi kepada admin (petugas marketing) mengenai barang yang akan siap muat
5. Memberi informasi kepada koordinator supir jika truck (kendaraan) mengalami kerusakan
6. Membawa surat jalan yang telah ditanda tangani oleh pelanggan
2. Kendala apa saja yang anda alami dalam melaksanakan tugas?
Jawab :
Kendala yang dialami adalah mengenai proses pemberitahuan mengenai informasi barang yang telah sampai dan juga status kendaraaan untuk menentukan posisi kendaraan (tersedia atau tersewa), karena kami harus selalu menginformasikan kepada admin melalui telepon (baik siang maupun malam). Namun admin (petugas marketing) tidak bekerja full selama 24 jam, maka sering terjadi keterlambatan dalam pemberitahuan informasi mengenai muatan, sehingga sering terjadi masalah mengenai pengaturan jadwal pelaksanaan ekspedisi.
3. Menurut anda apakah perlu dibuat sebuah aplikasi yang dapat memudahkan anda dalam melaksanakan tugas khususnya mengenai informasi pengiriman barang?
Jawab :
Ya, sehingga kita mudah dalam melaksanakan tugas khususnya mengenai proses pemberitahuan informasi muatan/barang, dan diharapkan tidak akan terjadi masalah dalam hal penjadwalan ekspedisi
236
LAMPIRAN B
KUESIONER
KUESIONER 1
Kuesioner ini bertujuan untuk meminta pendapat kepada Bapak Sutomo selaku
Pendapat Bapak Sutomo setelah mencoba aplikasi sistem pengiriman barang berbasis
SMS gateway yang penulis ajukan.
1. Bagaimanakah tampilan visualisasi dari aplikasi sistem yang saya buat?
a. Kurang baik b. Cukup Baik c. Baik d. Sangat Baik
2. Apakah fasilitas yang tersedia pada sistem ini sudah memadai?
a. Kurang Memadai b. Cukup Memadai c. Memadai d. Sangat Memadai
3. Bagaimanakah prosedur pengoperasian aplikasi sistem berbasis sms gateway ini?
a. Sangat Sulit b. Sulit c. Mudah d. Sangat Mudah
4. Apakah informasi yang dihasilkan dari aplikasi ini sudah memadai?
a. Kurang Memadai b. Cukup Memadai c. Memadai d. Sangat Memadai
5. Apakah aplikasi ini dapat digunakan sebagai bahan masukan bagi PD Guna
Pratama untuk menghasilkan informasi yang lebih cepat dan akurat serta
meningkatkan pelayanan bagi PD. Guna Pratama?
a. Ya b. Tidak
237
238
KUESIONER 2
Kuesioner ini bertujuan untuk meminta pendapat kepada para Supir PD. Guna Pratama
setelah mencoba aplikasi sistem pengiriman barang berbasis SMS gateway yang
penulis ajukan.
Nama :
Umur :
1. Apakah anda sudah mencoba pelayanan akses informasi ekspedisi barang menggunakan teknologi SMS Gateway?a. Ya b. Tidak
2. Apakah anda mengerti format perintah SMS yang harus dikirim ke sistem SMS Server?a. Ya b. Tidak
3. Bagaimana prosedur pengoperasian sistem berbasis SMS ini dalam menangani kegiatan anda?a. Sangat Mudah b. Mudah c. Sulit d. Sangat Sulit
4. Apakah, anda puas dan mengerti SMS balasan dari sistem?a. Ya, bermanfaat b. Tidak, Kurang bermanfaat
5. Apakah akses informasi yang diberikan oleh sistem berbasis SMS ini sudah memadai?a. Sangat Memadai b. Memadai c. Cukup memadai d. Kurang Memadai
6. Apakah waktu aplikasi ini anda gunakan pernah terjadi error atau tidak sesuai dengan request yang diminta?a. Pernah b. Tidak Pernah
7. Bagaimana tanggapan anda mengenai pengembangan aplikasi SMS Gateway ini, untuk mengakses informasi ekspedisi barang?a. Sangat Baik b. Baik c. Cukup d. Kurang
8. Menurut anda, apakah aplikasi ini layak untuk dijadikan sebagai media informasi pengiriman barang?a. Sangat Layak b. Layak c. Cukup Layak d. Kurang Layak
239
TRANSKIP KUESIONER B
Responden : 30 Supir PD. Guna Pratama
Jenis Kuesioner : Kuesioner tertutup, yaitu responden dimana untuk memilih jawaban
yang telah disediakan.
Tujuan : Meminta tanggapan dan pendapat kepada para supir mengenai
Sistem Informasi Berbasis SMS Gateway apakah sistem ini layak
untuk diterapkan.
Berikut Pertanyaan dan Hasil Persentasi Kuesioner yang didapat :
No PertanyaanJumlah Responden
yang memilihJumlah
Persentase %
1 Apakah anda sudah mencoba pelayanan akses informasi ekspedisi barang menggunakan teknologi SMS Gateway?
a. Ya
b. Tidak
30
0
100
0
2 Apakah anda mengerti format perintah SMS yang harus dikirim ke sistem SMS Server?
a. Ya
b. Tidak
30
0
100
0
3 Bagaimana prosedur pengoperasian sistem berbasis SMS ini dalam menangani kegiatan anda?
a. Sangat Mudah
b. Mudah
c. Sulit
d. Sangat Sulit
5
20
5
0
16,7
66,7
16,7
0
240
4 Apakah, anda puas dan mengerti SMS balasan dari sistem?
a. Ya, Bermanfaat
b. Tidak, Kurang Bermanfaat
30
0
100
0
5 Apakah akses informasi yang diberikan oleh sistem berbasis SMS ini sudah memadai?
a. Sangat Memadai
b. Memadai
c. Cukup Memadai
d. Kurang Memadai
3
20
7
0
10
66,7
23,3
0
6. Apakah waktu aplikasi ini anda gunakan pernah terjadi error atau tidak sesuai dengan request yang diminta?
a. Pernah
b. Tidak Pernah
30
0
100
0
7. Bagaimana tanggapan anda mengenai pengembangan aplikasi SMS Gateway ini, untuk mengakses informasi ekspedisi barang?
a. Sangat Baik
b. Baik
c. Cukup
d. Kurang
7
18
5
0
23,3
60
16,7
0
8. Menurut anda, apakah aplikasi ini layak untuk dijadikan sebagai media informasi pengiriman barang?
a. Sangat Layak
b. Layak
c. Cukup Layak
d. Kurang Layak
7
20
3
0
23,3
66,7
10
0
DEMO APLIKASI
1. Form Login User
2. Form Menu Utama
3. Form Menu File
4. Form Menu Master
5. Form Menu Transaksi
6. Form Menu Laporan
7. Form Menu SMS Server
8. Form Master Data Pelanggan
9. Form Master Data Kendaraan
10. Form Display Data Kendaraan
11. Form Master Data Supir
12. Form Master Data Status Kendaraan
13. Form Transaksi Pengiriman Barang
14. Display Surat Pesanan Kendaraan
15. Form Transaksi Bongkar Muat
16. Form Transaksi Batal Muat
17. Form Transaksi Pembayaran Ekspedisi
18. Display Bukti Pembayaran Ekspedisi
19. Form Gateway SMS Server dan Broadcast
20. Form Gateway Pesan (Inbox/Request)
21. Form Gateway Pesan (Outbox/Broadcast)
22. Form Ubah No. HP Admin
23. Display Laporan Data Pelanggan
24. Display Laporan Data Kendaraan
25. Display Laporan Data Supir
26. Display Laporan Data Status Kendaraan
27. Form Laporan Ekspedisi per Periode
28. Display Laporan Ekpedisi per Periode
29. Form Laporan Pembayaran Ekspedisi per Periode
30. Display Laporan Pembayaran Ekspedisi per Periode
31. Display SMS Request dan Balasan Ekspedisi Terkirim
32. Display Forward SMS Ekspedisi Terkirim Untuk Pelanggan dan Admin
33. Display Balasan Salah Format SMS Ekspedisi Terkirim
34. Display Balasan Supir Salah No. SJ Ekspedisi Terkirim
35. Display Balasan Supir Bukan Pengendara Kendaraan
36. Display Balasan No. Hp Supir Belum Terdaftar pada Aplikasi
37. Display SMS Request dan Balasan Ekspedisi Batal
38. Display Forward SMS Ekspedisi Terkirim Untuk Pelanggan dan Admin
39. Display SMS Request Update Status Kendaraan
40. Display Balasan Supir Salah Mengetik No.Plat Kendaraan
41. Display SMS Request Pembayaran Ekspedisi
42. Display Salah Format SMS Pembayaran Ekspedisi
A. Listing Main.java1. package gunapratama;
2. import java.awt.Dimension;3. import java.awt.Frame;4. import java.awt.Toolkit;5. import javax.swing.JOptionPane;6. import javax.swing.LookAndFeel;7. import javax.swing.UIManager;8. import javax.swing.UnsupportedLookAndFeelException;
9. public class Main {10. public Main() { }11. public static void main(String[] args) {12. try { 13. LookAndFeel lnf = new com.jtattoo.plaf.acryl.AcrylLookAndFeel();14. UIManager.setLookAndFeel(lnf); } 15. catch(UnsupportedLookAndFeelException err) {16. JOptionPane.showMessageDialog(null,"Error Loading look And Feel","Error",
JOptionPane.ERROR_MESSAGE);17. }18. try {19. MenuAwal mMenu = new MenuAwal();20. mMenu.setExtendedState(Frame.MAXIMIZED_BOTH);21. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();22. Dimension frameSize = screenSize.getSize();23. mMenu.setLocation( (screenSize.width - frameSize.width) / 2,24. (screenSize.height - frameSize.height) / 2);25. mMenu.setVisible(true); 26. } 27. catch(Exception err) {28. err.printStackTrace();29. JOptionPane.showMessageDialog(null,"Error Loading Main Menu","Error", 30. JOptionPane.ERROR_MESSAGE);}}}
B. Listing Koneksi.java
1. package kontrol;
2. import java.sql.*;
3. public class Koneksi { 4. String driver = "com.mysql.jdbc.Driver";5. String host = "jdbc:mysql://localhost/dbgp";6. String user = "root";7. String pass = "";
8. public Koneksi() {}9. public Connection openKoneksi()throws SQLException { 10. Connection con = null;11. try { 12. Class.forName(driver);13. con=DriverManager.getConnection(host,user,pass); 14. return con;15. }16. catch (SQLException se) {17. System.out.println("No Connection Open");
return null;18. }19. catch (Exception ex) {20. System.out.println("Could not open connection");
return null;21. }}}
C. Listing
1. package gunapratama;
2. import java.awt.Dimension;3. import java.awt.Toolkit;4. import java.awt.event.MouseAdapter;5. import java.awt.event.MouseEvent;6. import javax.swing.ImageIcon;7. import javax.swing.JOptionPane;8. import kontrol.ctrlTanggal;
9. public class MenuAwal extends javax.swing.JFrame {10. private ctrlTanggal tgl = new ctrlTanggal();11. private boolean login = false;12. private String user = "";13. private Splash mySplash;
14. public MenuAwal() {15. initComponents();16. showSplash();17. setPopUp();18. getContentPane().add(jdesktop, java.awt.BorderLayout.CENTER);19. tgl.setWaktu(lblJam);20. lblTanggal.setText(tgl.setTanggal(tgl.setActiveDate(),"dd MMMMM yyyy"));21. setIco();22. }
23. private void showSplash() {24. mySplash = new Splash(3000, false);25. mySplash.setVisible(true);26. mySplash.setStatus("Loading User Interface");27. for(int i=0; i<=100; i+=1) {
mySplash.stats.setValue(i);try {Thread.sleep(1);mySplash.sleep(i);} catch (InterruptedException ex) {ex.printStackTrace();}
28. }29. mySplash.dispose();30. }
31. public boolean openChildWindow (String title){// apakah ada internal frame yang judulnya title
32. childs = jdesktop.getAllFrames(); //menampung semua jinternalframe yang ada pada jdesktop
33. for (int i = 0; i < childs.length; i++) // looping sebanyak isi dari childs34. {
if (childs[i].getTitle().equalsIgnoreCase (title)) { childs[i].show ();
i. return true;}
35. }36. return false; 37. }
38. private void setPopUp(){39. addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){checkMouseTrigger(e);}public void mouseReleased(MouseEvent e){checkMouseTrigger(e);}private void checkMouseTrigger (MouseEvent e) {if (e.isPopupTrigger ())
popUp.show (e.getComponent (), e.getX (), e.getY ());}}
40. );41. }
42. private void setIco() {43. setIconImage(new ImageIcon("./image/LorryGreen.png").getImage());44. }45. private void jMiLaporanKendaraanJalanActionPerformed(java.awt.event.ActionEvent evt) { 46. lapKendaraanJalan(); 47. }
48. private void jMIExitActionPerformed(java.awt.event.ActionEvent evt) { 49. int x = JOptionPane.showConfirmDialog(null, "Apakah Anda Ingin Menutup Aplikasi Ini ?",
"Konfirmasi", JOptionPane.YES_NO_OPTION);50. if (x==JOptionPane.YES_OPTION){
System.exit(0);51. }52. }
53. private void btnLapPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 54. laporanPembayaran();55. }
56. private void btnPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 57. pembayaran();58. }
59. private void popLapPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 60. laporanPembayaran();61. }
62. private void jMiLaporanPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 63. laporanPembayaran();64. }
65. private void popPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 66. pembayaran();67. }
68. private void jMiPembayaranActionPerformed(java.awt.event.ActionEvent evt) { 69. pembayaran();
70. }
71. private void jMIupdateNoAdminActionPerformed(java.awt.event.ActionEvent evt) { 72. UbahNoHPAdmin();73. }
74. private void popStatusKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 75. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();76. cetak.daftarStatus();77. }
78. private void popDaftarSupirActionPerformed(java.awt.event.ActionEvent evt) { 79. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();80. cetak.daftarSupir();81. }
82. private void popDaftarPelangganActionPerformed(java.awt.event.ActionEvent evt) { 83. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();84. cetak.daftarPelanggan();85. }
86. private void popDaftarKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 87. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();88. cetak.daftarKendaraan();89. }
90. private void jMiStatusActionPerformed(java.awt.event.ActionEvent evt) { 91. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();92. cetak.daftarStatus();93. }
94. private void jMiDaftarSupirActionPerformed(java.awt.event.ActionEvent evt) { 95. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();96. cetak.daftarSupir();97. }
98. private void jMiDaftarPelangganActionPerformed(java.awt.event.ActionEvent evt) { 99. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();100. cetak.daftarPelanggan();101. }
102. private void jMiDaftarKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 103. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();104. cetak.daftarKendaraan();105. } 106. private void jMLaporanActionPerformed(java.awt.event.ActionEvent evt) { 107. // TODO add your handling code here:108. } 109. private void popStatusActionPerformed(java.awt.event.ActionEvent evt) { 110. statusKendaraan();111. }
112. private void btnStatusActionPerformed(java.awt.event.ActionEvent evt) { 113. statusKendaraan();114. } 115. private void jMiStatusKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 116. statusKendaraan();
117. } 118. private void popPesanActionPerformed(java.awt.event.ActionEvent evt) { 119. pesan();120. } 121. private void popBroadcastActionPerformed(java.awt.event.ActionEvent evt) { 122. broadcast();123. } 124. private void btnBroadcastActionPerformed(java.awt.event.ActionEvent evt) { 125. broadcast();126. } 127. private void btnPesanActionPerformed(java.awt.event.ActionEvent evt) { 128. pesan();129. } 130. private void jMiPesanActionPerformed(java.awt.event.ActionEvent evt) { 131. pesan();132. } 133. private void jMiBroadcastActionPerformed(java.awt.event.ActionEvent evt) { 134. broadcast();135. } 136. private void popLapTerkirimActionPerformed(java.awt.event.ActionEvent evt) { 137. ekspedisi();138. } 139. private void popBatalMuatActionPerformed(java.awt.event.ActionEvent evt) { 140. BatalMuat();141. } 142. private void popBongkarMuatActionPerformed(java.awt.event.ActionEvent evt) { 143. bongkarMuat();144. } 145. private void popSoActionPerformed(java.awt.event.ActionEvent evt) { 146. pengiriman();147. } 148. private void popPengemudiActionPerformed(java.awt.event.ActionEvent evt) { 149. pengemudi();150. } 151. private void popKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 152. kendaraan();153. } 154. private void popPelangganActionPerformed(java.awt.event.ActionEvent evt) { 155. pelanggan();156. } 157. private void btnCtkTerimaActionPerformed(java.awt.event.ActionEvent evt) { 158. ekspedisi();159. } 160. private void btnBatalPesananActionPerformed(java.awt.event.ActionEvent evt) { 161. BatalMuat();162. }
163. private void btnBongkarMuatActionPerformed(java.awt.event.ActionEvent evt) { 164. bongkarMuat();165. } 166. private void btnSoActionPerformed(java.awt.event.ActionEvent evt) { 167. pengiriman();168. } 169. private void btnKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 170. kendaraan();171. } 172. private void btnPelangganActionPerformed(java.awt.event.ActionEvent evt) {
173. pelanggan();174. } 175. private void btnDriverActionPerformed(java.awt.event.ActionEvent evt) { 176. pengemudi();177. } 178. private void jMILogoutActionPerformed(java.awt.event.ActionEvent evt) { 179. setLogin(false);180. } 181. private void jMILoginActionPerformed(java.awt.event.ActionEvent evt) { 182. login();183. } 184. private void formWindowOpened(java.awt.event.WindowEvent evt) { 185. setLogin(true);186. login();187. } 188. private void jMiExpedisiActionPerformed(java.awt.event.ActionEvent evt) { 189. ekspedisi();190. } 191. private void jMiBongkarMuatActionPerformed(java.awt.event.ActionEvent evt) { 192. bongkarMuat();193. } 194. private void jMiBatalMuatActionPerformed(java.awt.event.ActionEvent evt) { 195. BatalMuat();196. } 197. private void jMiPemesananActionPerformed(java.awt.event.ActionEvent evt) { 198. pengiriman();199. } 200. private void jMiDriverActionPerformed(java.awt.event.ActionEvent evt) { 201. pengemudi();202. } 203. private void jMiKendaraanActionPerformed(java.awt.event.ActionEvent evt) { 204. kendaraan();205. } 206. private void jMiPelangganActionPerformed(java.awt.event.ActionEvent evt) { 207. pelanggan();208. } 209. public static void main(String args[]) {210. java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {new MenuAwal().setVisible(true);}
211. });212. }213. private void pelanggan() {214. boolean b = openChildWindow("Master Data Pelanggan");215. if (!b){
pelanggan plg = new pelanggan(); jdesktop.add(plg);plg.show();plg.toFront();
216. }217. }218. private void kendaraan() {219. boolean b = openChildWindow("Master Kendaraan");220. if(!b){
kendaraan ken = new kendaraan();jdesktop.add(ken);
ken.show();ken.toFront();
221. }222. }223. private void pengemudi() {224. boolean b = openChildWindow("Master Driver");225. if(!b){
pengemudi mudi = new pengemudi();jdesktop.add(mudi);mudi.show();mudi.toFront();
226. }227. }228. private void pengiriman() {229. boolean b = openChildWindow("Pengiriman Barang");230. if(!b){
pengirimanBarang brg = new pengirimanBarang();jdesktop.add(brg);brg.show();brg.toFront();
231. }232. }233. private void suratJalan() {234. boolean b = openChildWindow("Surat Jalan");235. if(!b){236. }237. }238. private void BatalMuat() {239. boolean b = openChildWindow("Batal Muat");240. if(!b){
batalMuat sm = new batalMuat();jdesktop.add(sm);sm.show();sm.toFront();
241. }242. }243. private void bongkarMuat() {244. boolean b = openChildWindow("Bongkar Muat");245. if(!b){
bongkarMuat bkr = new bongkarMuat();jdesktop.add(bkr);bkr.show();bkr.toFront();
246. }247. }
248. private void ekspedisi() {249. boolean b = openChildWindow("Laporan Expedisi");250. if(!b){
lapBarangTerkirim exp = new lapBarangTerkirim();jdesktop.add(exp);exp.show();exp.toFront();
251. }252. }253. private void broadcast() {254. boolean b = openChildWindow("Master Broadcast & Server");
255. if(!b){masterBroadcast mB = new masterBroadcast();jdesktop.add(mB);mB.show();mB.toFront();
256. }257. }258. private void pesan() {259. boolean b = openChildWindow("Master Pesan");260. if(!b){
masterPesan mP = new masterPesan();jdesktop.add(mP);mP.show();mP.toFront();
261. }262. }263. private void daftarKendaraan(){264. }265. private void setLogin(boolean login) {266. if(login){
jMILogin.setEnabled(false); jMILogout.setEnabled(true);jMMaster.setEnabled(true);jMTransaksi.setEnabled(true);jMLaporan.setEnabled(true);jMServer.setEnabled(true);btnPelanggan.setEnabled(true);btnKendaraan.setEnabled(true);btnDriver.setEnabled(true);btnSo.setEnabled(true); btnBongkarMuat.setEnabled(true);btnBatalPesanan.setEnabled(true); btnCtkTerima.setEnabled(true);btnBroadcast.setEnabled(true);btnPesan.setEnabled(true);btnStatus.setEnabled(true);btnPembayaran.setEnabled(true);btnLapPembayaran.setEnabled(true);
popBatalMuat.setEnabled(true);popBongkarMuat.setEnabled(true);popKendaraan.setEnabled(true);popLapTerkirim.setEnabled(true);popPelanggan.setEnabled(true);popPengemudi.setEnabled(true);popSo.setEnabled(true);popBroadcast.setEnabled(true);popPesan.setEnabled(true);popStatus.setEnabled(true);popLaporanDaftar.setEnabled(true);popPembayaran.setEnabled(true);popLapPembayaran.setEnabled(true);
lblUserName.setText("User : "+this.user.toUpperCase());267. }268. else{
jMILogin.setEnabled(true);
jMILogout.setEnabled(false);
//menubarjMMaster.setEnabled(false);jMTransaksi.setEnabled(false);jMLaporan.setEnabled(false);jMServer.setEnabled(false);btnPelanggan.setEnabled(false);btnKendaraan.setEnabled(false);btnDriver.setEnabled(false);btnSo.setEnabled(false);btnBongkarMuat.setEnabled(false);btnBatalPesanan.setEnabled(false);btnCtkTerima.setEnabled(false);btnBroadcast.setEnabled(false);btnPesan.setEnabled(false);btnStatus.setEnabled(false);btnPembayaran.setEnabled(false);btnLapPembayaran.setEnabled(false);popBatalMuat.setEnabled(false);popBongkarMuat.setEnabled(false);popKendaraan.setEnabled(false);popLapTerkirim.setEnabled(false);popPembayaran.setEnabled(false);popLapPembayaran.setEnabled(false);popPelanggan.setEnabled(false);popPengemudi.setEnabled(false);popSo.setEnabled(false);popBroadcast.setEnabled(false);popPesan.setEnabled(false);popStatus.setEnabled(false);popLaporanDaftar.setEnabled(false);lblUserName.setText("User : NONE");
269. }270. }271. private void login(){272. Login lgn = new Login();273. lgn.setLocationRelativeTo(this);274. lgn.setVisible(true);275. this.login = lgn.login; 276. this.user = lgn.user;277. setLogin(login);278. }
279. private void statusKendaraan() {280. boolean b = openChildWindow("Status Kendaraan");281. if(!b){
statusKendaraan sK = new statusKendaraan();jdesktop.add(sK);sK.show();sK.toFront();
282. }283. }284. private void UbahNoHPAdmin() {285. boolean b = openChildWindow("Ubah No. HP Admin");286. if(!b){
ubahHpAdmin sK = new ubahHpAdmin();
jdesktop.add(sK);sK.show();sK.toFront();
287. }288. }
289. private void pembayaran() {290. boolean b = openChildWindow("Pembayaran Ekspedisi");291. if(!b){
pembayaranEkspedisi byr = new pembayaranEkspedisi();jdesktop.add(byr);byr.show();byr.toFront();
292. }293. }
294. private void laporanPembayaran(){295. boolean b = openChildWindow("Laporan Pembayaran");296. if(!b){
lapPembayaranEkspedisi byr = new lapPembayaranEkspedisi();jdesktop.add(byr);byr.show();byr.toFront();
297. }298. }
299. private void lapKendaraanJalan() {300. boolean b = openChildWindow("Laporan Kendaraan Jalan");301. if(!b){
lapKendaraanJalan kendjal = new lapKendaraanJalan();jdesktop.add(kendjal);kendjal.show();kendjal.toFront();
302. }303. }
304. private javax.swing.JInternalFrame childs[];305. private java.awt.Dimension uk = java.awt.Toolkit.getDefaultToolkit().getScreenSize();306. private javax.swing.JDesktopPane jdesktop = new javax.swing.JDesktopPane(){307. public void paintComponent(java.awt.Graphics g) {
try{ super.paintComponent(g);String background="";switch((int) uk.getWidth()){case 800 : background="background1.jpg";
break;case 1024 : background="background2.jpg";
break;case 1152 : background="background3.jpg";break;default : background="background3.jpg";
break;}java.awt.Image gm=new javax.swing.ImageIcon("./image/"+background).getImage();g.drawImage(gm,0,0,this); }
catch(Exception err){System.out.print(err);}
308. }
309. };310. }
D. Listing Login.java
1. package gunapratama;
2. import java.sql.*;3. import javax.swing.JOptionPane;4. import kontrol.Koneksi;5. import kontrol.ctrlText;
6. public class Login extends javax.swing.JDialog {
7. private ctrlText text = new ctrlText();8. private Koneksi k = new Koneksi();9. private Connection cn;10. private Statement st;11. public String user = "";12. public boolean login = false;
13. /** Creates new form Login */14. public Login() {15. super(new javax.swing.JDialog(),"Login User",true);16. initComponents();17. }
18. private void cekUserPassword(){ 19. try { 20. cn = k.openKoneksi();21. st = cn.createStatement();22. String SQL = "SELECT password='"+txtUserName.getText().trim()+"' "+23. "FROM admin "+24. "WHERE username='"+password.getText().trim()+"' ";25. ResultSet rs= st.executeQuery(SQL); 26. if(rs.next()) {27. login = true;28. dispose();29. JOptionPane.showMessageDialog(null,"<html>User <font
color=blue><b>"+txtUserName.getText().trim()+"</b></font> Berhasil Login</html>","Berhasil",1);;
30. this.user = txtUserName.getText();31. } 32. else{33. JOptionPane.showMessageDialog(null,"Anda tidak punya hak aksess !","Perhatian !",2);34. setAwal();35. login = false;36. } 37. rs.close();38. st.close();39. cn.close();40. } catch(Exception exc) {
System.err.println(exc.getMessage());
41. } 42. }43. private void setAwal(){44. txtUserName.setText("");45. password.setText("");46. txtUserName.requestFocus();47. } 48. private void passwordKeyPressed(java.awt.event.KeyEvent evt) { 49. if(evt.getKeyCode() == evt.VK_ENTER){50. cekUserPassword();51. }52. } 53. private void passwordKeyTyped(java.awt.event.KeyEvent evt) { 54. text.setLimit(this,evt,10,password);55. } 56. private void txtUserNameKeyTyped(java.awt.event.KeyEvent evt) { 57. text.setLimit(this,evt,15,txtUserName);58. } 59. private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) { 60. cekUserPassword();61. } 62. private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { 63. dispose();64. }
E. Listing Program Pelanggan.java1. package gunapratama;
2. import java.sql.Connection;3. import java.sql.ResultSet;4. import java.sql.Statement;5. import javax.swing.JOptionPane;6. import javax.swing.table.DefaultTableModel;7. import kontrol.Koneksi;8. import kontrol.ctrlGUI;9. import kontrol.setKode;10. import kontrol.textFilter;11. public class pelanggan extends javax.swing.JInternalFrame {12. private Koneksi k = new Koneksi();13. private ctrlGUI gui = new ctrlGUI();14. private setKode kd = new setKode();15. private String cariDengan;16. private Connection con;17. private Statement sta;18. private String noPlgn="", nmPlgn="", alamat="", noTelp="", noCP=""; 19.20. public pelanggan() {21. initComponents();22. tblPelanggan.setModel(Model);23. txtNama.requestFocus();24. setAwal();25. txtNoTelp.setDocument(new textFilter(textFilter.NUMERIC));26. gui.setingTabel(tblPelanggan,27. new int [] {90,150,180,90,90},28. new int [] {0,2,2,2,2}29. );30. }private void btnCariActionPerformed(java.awt.event.ActionEvent evt) { 31. setDefaultTable();
32. } 33. private void txtCariKeyPressed(java.awt.event.KeyEvent evt) { 34. if(evt.getKeyCode() == evt.VK_ENTER){35. setDefaultTable();36. }37. } 38. private void cmbCariItemStateChanged(java.awt.event.ItemEvent evt) { 39. txtCari.requestFocus();40. } 41. private void txtAlamatFocusLost(java.awt.event.FocusEvent evt) { 42. txtNoTelp.requestFocus();43. } 44. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 45. dispose();46. } 47. private void tblPelangganMouseClicked(java.awt.event.MouseEvent evt) { 48. if (evt.getClickCount()==2){49. int row = tblPelanggan.getSelectedRow();50. txtNoPelanggan.setText(tblPelanggan.getValueAt(row,0).toString());51. txtNama.setText(tblPelanggan.getValueAt(row,1).toString());52. txtAlamat.setText(tblPelanggan.getValueAt(row,2).toString());53. txtNoTelp.setText(tblPelanggan.getValueAt(row,3).toString());54. txtCP.setText(tblPelanggan.getValueAt(row,4).toString()); 55. btnSimpan.setEnabled(false);56. btnUbah.setEnabled(true);57. btnHapus.setEnabled(true);58. }59. } 60. private void txtNoPelangganKeyPressed(java.awt.event.KeyEvent evt) { 61. } 62. private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { 63. setAwal();64. } 65. private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) { 66. if(konfirmasi()){67. hapus(); 68. }69. setAwal();70. } 71. private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) { 72. ubah();73. setAwal();74. } 75. private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { 76. if(txtNama.getText().length()!=0 && txtAlamat.getText().length()!=0 &&
txtNoTelp.getText().length()!=0 && txtCP.getText().length()!=0){77. simpan();78. setAwal();79. }80. else{81. JOptionPane.showMessageDialog(this,"Isi data dengan lengkap !","peringatan !",2);82. }83. } 84. private void simpan() {85. dapatData();86. try{87. con =k.openKoneksi();
88. Statement sta = con.createStatement(); 89. String Insert = "INSERT INTO pelanggan VALUES ('"+noPlgn+"', '"+nmPlgn+"',
'"+alamat+"', '"+noTelp+"', '"+noCP+"', 'aktif');";90. sta.executeUpdate(Insert);91. sta.close();92. con.close();93. JOptionPane.showMessageDialog(null, "Proses Simpan Berhasil", "Berhasil",1); 94. }95. catch(Exception e){96. JOptionPane.showMessageDialog(null,"Proses Simpan Gagal", "Gagal",2);97. }98. }99. private void ubah() {100. dapatData();101. try{102. Connection con = k.openKoneksi();103. Statement sta = con.createStatement(); 104. String Update = "UPDATE pelanggan "+ 105. "SET nm_plgn = '"+nmPlgn+"', alamat = '"+alamat+"', telp =
'"+noTelp+"', cp = '"+noCP+"' "+106. "WHERE no_plgn = '"+noPlgn+"';";107. sta.executeUpdate(Update);108. 109. sta.close();110. con.close();111. 112. JOptionPane.showMessageDialog(null, "Proses Ubah Berhasil","Berhasil",1);113. }114. catch(Exception e){115. JOptionPane.showMessageDialog(null, "Proses Ubah Gagal","Gagal",2);116. }117. }118. private void hapus() {119. dapatData();120. try{121. Connection con = k.openKoneksi();122. Statement sta = con.createStatement();123. 124. String Delete = "UPDATE pelanggan "+125. "SET status = 'nonaktif' "+126. "WHERE no_plgn = '"+noPlgn+"'";127. sta.executeUpdate(Delete);128. sta.close();129. con.close();130. JOptionPane.showMessageDialog(null, "Proses Hapus Berhasil", "Berhasil",1); 131. }132. catch(Exception e){133. JOptionPane.showMessageDialog(null, "Proses Hapus Gagal", "Gagal",2);134. }135. }136. private void setDefaultTable() {137. cariBy();138. gui.hapusTabel(tblPelanggan,Model);139. Object data[]= new Object[5];140. try{141. con = k.openKoneksi();142. sta = con.createStatement();
143. String SQL = "SELECT no_plgn, nm_plgn, alamat, telp, cp "+144. "FROM pelanggan "+145. "WHERE status ='aktif' && "+cariDengan+" like
'%"+txtCari.getText()+"%'" ;146. 147. ResultSet rs = sta.executeQuery(SQL);148. while(rs.next()){149. data[0] = rs.getString(1);150. data[1] = rs.getString(2);151. data[2] = rs.getString(3);152. data[3] = rs.getString(4);153. data[4] = rs.getString(5); 154. Model.addRow(data);155. }156. rs.close();157. sta.close();158. con.close();159. }160. catch(Exception err){161. System.err.println("Ada Kesalahan Pada Method tabel Pelanggan");162. }163. }164. private void cariBy() {165. switch(cmbCari.getSelectedIndex()){ 166. case 0 : cariDengan="no_plgn"; break;167. case 1 : cariDengan="nm_plgn"; break;168. case 2 : cariDengan="telp"; break;169. default : cariDengan="no_plgn"; break;170. }171. }172. private void dapatData(){173. noPlgn = txtNoPelanggan.getText();174. nmPlgn = txtNama.getText();175. alamat = txtAlamat.getText();176. noTelp = txtNoTelp.getText();177. noCP = txtCP.getText();178. }179. private boolean konfirmasi(){180. String x = "<html><font color=blue><b>Apakah anda ingin menghapus data
pelanggan </b></font></html>";181. int tanya =
JOptionPane.showConfirmDialog(null,x,"Konfirmasi",JOptionPane.YES_NO_OPTION);182. if(tanya==JOptionPane.YES_OPTION) return true; 183. else return false; 184. }185. private void setAwal(){186. txtNama.requestFocus();187. txtNoPelanggan.setText(kd.setKodePelanggan());188. txtNoPelanggan.setEditable(false);189. txtNama.setText("");190. txtAlamat.setText("");191. txtNoTelp.setText("");192. txtCP.setText(""); 193. btnSimpan.setEnabled(true);194. btnUbah.setEnabled(false);195. btnHapus.setEnabled(false);196. setDefaultTable();
197. }198. private void cari(){199. dapatData();200. try{201. Connection con = k.openKoneksi();202. Statement sta = con.createStatement();203. 204. String SQL = "SELECT no_plgn, nm_plgn, alamat, telp, cp "+205. "FROM pelanggan "+206. "WHERE no_plgn = '"+noPlgn+"'"; 207. ResultSet rs = sta.executeQuery(SQL);208. if(rs.next()){209. txtNoPelanggan.setText(rs.getString(1));210. txtNama.setText(rs.getString(2));211. txtAlamat.setText(rs.getString(3));212. txtNoTelp.setText(rs.getString(4));213. txtCP.setText(rs.getString(5));214. btnUbah.setEnabled(true);215. btnHapus.setEnabled(true);216. }217. else {218. btnSimpan.setEnabled(true);219. } 220. txtNama.requestFocus();221. rs.close();222. sta.close();223. con.close();224. }225. catch(Exception e){226. System.out.println("ada Kesalahan pada method pencarian
data"+e.getMessage()); 227. } 228. }
F. Listing Program Status Kendaraan1. package gunapratama;2. import javax.swing.JOptionPane;3. import javax.swing.table.DefaultTableModel;4. import java.sql.*;5. import javax.swing.JTable;6. import javax.swing.table.TableModel;7. import kontrol.Koneksi;8. import kontrol.ctrlGUI;
9. public class statusKendaraan extends javax.swing.JInternalFrame {10. private ctrlGUI gui = new ctrlGUI();11. private Koneksi k = new Koneksi();12. private Connection con;13. private Statement sta;14. public String noPlgn="", nmPlgn="", alamat="", noTelp=""; 15. public statusKendaraan() {16. initComponents();17. tblKendaraan.setModel(Model);18. setDefaultTable();19. gui.setingTabel(tblKendaraan,20. new int [] {80,80,100,100,100,100},21. new int [] {0,0,2,2,2,2});
22. }23. private void setDefaultTable() {24. gui.hapusTabel(tblKendaraan,Model);25. Object data[]= new Object[6];26. try{27. con = k.openKoneksi();28. sta = con.createStatement();29. String SQL = "SELECT no_perk, no_plat "+30. "FROM kendaraan "+31. "WHERE status='aktif'; ";32. int row = 0;33. ResultSet rs = sta.executeQuery(SQL);34. while(rs.next()){35. data[0] = rs.getString(1);36. data[1] = rs.getString(2); 37. Model.addRow(data);38. setdata(rs.getString(1),row);39. row++;40. }41. rs.close();42. sta.close();43. con.close();44. }45. catch(Exception err){46. System.err.println("Ada Kesalahan Pada Method setDefaultTable pd class
statusKendaraan\n"+err);47. }48. }49. private void setdata(String noperk, int row){50. try{51. Connection con = k.openKoneksi();52. Statement sta = con.createStatement();53. String SQL = "SELECT status,posisi,driver,co_driver "+54. "FROM detil_kendaraan "+55. "WHERE no_perk='"+noperk+"'; ";56. ResultSet rs = sta.executeQuery(SQL);57. if(rs.next()){58. tblKendaraan.setValueAt(rs.getString(1),row,2);59. tblKendaraan.setValueAt(rs.getString(2),row,3);60. tblKendaraan.setValueAt(setNamaSupir(rs.getString(3)),row,4);61. tblKendaraan.setValueAt(setNamaSupir(rs.getString(4)),row,5);}62. rs.close();63. sta.close();64. con.close();65. }66. catch(Exception err){67. System.err.println("Ada Kesalahan Pada Method setdata pada class detilKendaraan\n"+err);68. }69. }70. private String setNamaSupir(String nosupir){71. String nmsupir = "";72. try{73. Connection con = k.openKoneksi();74. Statement sta = con.createStatement();75. String SQL = "SELECT nm_supir "+76. "FROM supir "+77. "WHERE no_supir='"+nosupir+"'; ";
78. ResultSet rs = sta.executeQuery(SQL);79. if(rs.next()){80. nmsupir = rs.getString(1);81. }82. rs.close();83. sta.close();84. con.close();85. }86. catch(Exception err){87. System.err.println("Ada Kesalahan Pada Method setNamaSupir pada class
detilKendaraan\n"+err);88. }89. return nmsupir;90. }91. private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) { 92. setDefaultTable();93. } 94.95. private void tblKendaraanMouseClicked(java.awt.event.MouseEvent evt) { 96. int row = tblKendaraan.getSelectedRow();97. if(evt.getClickCount() == 2){98. String noperk = tblKendaraan.getValueAt(row,0).toString();99. String noplat = tblKendaraan.getValueAt(row,1).toString();100. data.detilKendaraan detil = new data.detilKendaraan(noperk,noplat);101. detil.setVisible(true);102. detil.setLocationRelativeTo(null);103. setDefaultTable();104. }105. } 106.107. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 108. dispose();109. }
G. Listing DetilKendaraan.Java
1. package data;
2. import java.sql.*;3. import javax.swing.JOptionPane;4. public class detilKendaraan extends javax.swing.JDialog {5. private kontrol.Koneksi k = new kontrol.Koneksi();6. private String noperk="",status="",posisi="",driver="",codriver="";
7. /** Creates new form detilKendaraan */8. public detilKendaraan(String noperk, String noplat) {9. super(new javax.swing.JDialog(),"Detil Kendaraan",true); 10. initComponents();11. txtNoPerk.setText(noperk);12. txtNoPlat.setText(noplat);13. setdata();14. }
15. private void setdata(){16. try{17. Connection con = k.openKoneksi();18. Statement sta = con.createStatement();19. String SQL = "SELECT status,posisi,driver,co_driver "+
20. "FROM detil_kendaraan "+21. "WHERE no_perk='"+txtNoPerk.getText()+"'; ";22. ResultSet rs = sta.executeQuery(SQL);23. if(rs.next()){24. cmbStatus.setSelectedItem(rs.getString(1));25. txtPosisi.setText(rs.getString(2));26. txtNoDriver.setText(rs.getString(3));27. txtNamaDriver.setText(setNamaSupir(rs.getString(3)));28. txtNoCoDriver.setText(rs.getString(4));29. txtNamaCoDriver.setText(setNamaSupir(rs.getString(4)));}30. rs.close();31. sta.close();32. con.close();33. }34. catch(Exception err){35. System.err.println("Ada Kesalahan Pada Method setdata pada class detilKendaraan\n"+err);36. }37. }38. private void dapatData(){39. noperk = txtNoPerk.getText();40. status = cmbStatus.getSelectedItem().toString();41. posisi = txtPosisi.getText();42. driver = txtNoDriver.getText();43. codriver= txtNoCoDriver.getText();44. }45. private String setNamaSupir(String nosupir){46. String nmsupir = "";47. try{48. Connection con = k.openKoneksi();49. Statement sta = con.createStatement();50. String SQL = "SELECT nm_supir "+51. "FROM supir "+52. "WHERE no_supir='"+nosupir+"'; ";53. ResultSet rs = sta.executeQuery(SQL);54. if(rs.next()){55. nmsupir = rs.getString(1);}56. rs.close();57. sta.close();58. con.close();59. }60. catch(Exception err){61. System.err.println("Ada Kesalahan Pada Method setNamaSupir pada class
detilKendaraan\n"+err);62. }63. return nmsupir;64. }65. private void ubah() {66. try{67. Connection con = k.openKoneksi();68. Statement sta = con.createStatement();69. String Update = "UPDATE detil_kendaraan "+ 70. "SET status = '"+status+"', posisi = '"+posisi+"', driver = '"+driver+"',
co_driver='"+codriver+"'"+ 71. "WHERE no_perk = '"+noperk+"';";72. sta.executeUpdate(Update);73. sta.close();74. con.close();
75. JOptionPane.showMessageDialog(null, "Proses Ubah Berhasil","Berhasil",1);76. }77. catch(Exception e){78. JOptionPane.showMessageDialog(null, "Proses Ubah Gagal","Gagal",2);79. }80. }81. private void simpan(){82. try{83. Connection con = k.openKoneksi();84. Statement sta = con.createStatement();85. String Update = "INSERT INTO detil_kendaraan VALUES
('"+noperk+"','"+posisi+"','"+status+"','"+driver+"','"+codriver+"')";86. sta.executeUpdate(Update);87. sta.close();88. con.close();89. JOptionPane.showMessageDialog(null, "Proses Simpan Berhasil","Berhasil",1);90. }91. catch(Exception e){92. JOptionPane.showMessageDialog(null, "Proses Simpan Gagal","Gagal",2);93. } 94. }95. private void proses(){96. try{97. Connection con = k.openKoneksi();98. Statement sta = con.createStatement();99. String SQL = "SELECT no_perk "+100. "FROM detil_kendaraan "+101. "WHERE no_perk='"+txtNoPerk.getText()+"'; ";102. ResultSet rs = sta.executeQuery(SQL);103. if(rs.next()){104. ubah();105. }106. else{107. simpan();108. }109. rs.close();110. sta.close();111. con.close();112. }113. catch(Exception err){114. System.err.println("Ada Kesalahan Pada Method proses pada class
detilKendaraan\n"+err);115. }116. }117. private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) { 118. dapatData();119. if(posisi.length()!=0 && driver.length()!=0 && codriver.length()!=0){120. proses();121. dispose();122. }123. else{124. JOptionPane.showMessageDialog(null,"Isi data dengan lengkap
!","Peringatan",2);125. } 126. } 127. private void btnCariCoDriverActionPerformed(java.awt.event.ActionEvent evt) { 128. data.dataSupir data = new data.dataSupir();
129. data.setVisible(true);130. if(data.noSupir.length()!=0){131. txtNoCoDriver.setText(data.noSupir);132. txtNamaCoDriver.setText(data.nmSupir);133. }134. else{135. txtNoCoDriver.setText("");136. txtNamaCoDriver.setText("");137. }138. } 139. private void btnCariDriverActionPerformed(java.awt.event.ActionEvent evt) { 140. data.dataSupir data = new data.dataSupir();141. data.setVisible(true);142. if(data.noSupir.length()!=0){143. txtNoDriver.setText(data.noSupir);144. txtNamaDriver.setText(data.nmSupir);145. }146. else{147. txtNoDriver.setText("");148. txtNamaDriver.setText("");149. }150. } 151. private void btnKembaliActionPerformed(java.awt.event.ActionEvent evt) { 152. dispose();153. }
H. Listing Pengiriman Barang.java
1. package gunapratama;
2. import data.dataKendaraan;3. import data.dataPelanggan;4. import data.dataSupir;5. import java.sql.*;6. import javax.swing.JOptionPane;7. import javax.swing.table.DefaultTableModel;8. import kontrol.Koneksi;9. import kontrol.ctrlGUI;10. import kontrol.ctrlTanggal;11. import kontrol.setKode;12. public class pengirimanBarang extends javax.swing.JInternalFrame {13. private ctrlGUI gui = new ctrlGUI();14. private setKode kd = new setKode();15. private ctrlTanggal tgl = new ctrlTanggal();16. private Koneksi k = new Koneksi();17. private Connection con;18. private Statement sta;19. private String
noSo="",noSj="",tglSj="",no_plgn="",jurusan="",penerima="",berat="",barang="",harga="",no_perk="",tglSo="",no_supir="",no_coSupir="";
20. public pengirimanBarang() {21. initComponents();22. tblSJ.setModel(Model);23. //"No.SJ","tgl SJ","No.
Perk","Jurusan","Penerima","Barang","Berat","Harga","Driver","Co.Driver"24. gui.setingTabel(tblSJ,25. new int[]{128,70,110,120,100,100,100,100,100},26. new int[]{0,2,2,2,2,2,2,2,2}
27. );28. setAwal();29. }30. private void dapatData(){31. noSo = txtNoSo.getText();32. tglSo = tgl.setTanggal(dcTglSo.getDate(),"yyyy-MM-dd"); 33. tglSj = tgl.setTanggal(dcTglSj.getDate(),"yyyy-MM-dd");34. no_plgn = txtNoPlgn.getText();35. jurusan = txtJurusan.getText();36. penerima = txtPenerima.getText();37. berat = txtBerat.getText();38. barang = txtJnsMuatan.getText();39. harga = txtHarga.getText();40. no_perk = txtNoPerk.getText(); 41. no_supir = txtKdDriver.getText();42. no_coSupir = txtKdCoDriver.getText();43. } 44. private void setAwal(){45. txtNoSo.setText(kd.setKodePesanan());46. txtNoPlgn.setText("");47. txtNama.setText("");48. txtJurusan.setText("");49. txtPenerima.setText("");50. txtJnsMuatan.setText("");51. txtBerat.setText("");52. txtHarga.setText("");53. txtNoPerk.setText("");54. txtMobil.setText("");55. dcTglSo.setDate(tgl.setActiveDate()); 56. dcTglSj.setDate(tgl.setActiveDate()); 57. gui.hapusTabel(tblSJ,Model);58. }59. private void tambahData() {60. Object data[] = new Object[9];61. data[0] = tglSj;62. data[1] = no_perk;63. data[2] = jurusan;64. data[3] = penerima;65. data[4] = barang;66. data[5] = berat;67. data[6] = harga;68. data[7] = no_supir;69. data[8] = no_coSupir;70. Model.addRow(data);71. txtJurusan.requestFocus();72. txtNoPerk.setText("");73. txtJurusan.setText("");74. txtPenerima.setText("");75. txtBerat.setText("");76. txtJnsMuatan.setText("");77. txtHarga.setText("");78. txtMobil.setText("");79. txtKdDriver.setText("");80. txtNmDriver.setText("");81. txtKdCoDriver.setText("");82. txtNmCo.setText("");83. }
84. private void cetakSO(){85. kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();86. cetak.laporanSO(noSo);87. }88. private void simpanSO() {89. try {90. Connection cn = k.openKoneksi(); 91. Statement st = cn.createStatement();92. String Insert = "INSERT INTO so VALUES
('"+noSo+"','"+no_plgn+"','"+tglSo+"','terproses','belum lunas');";93. st.executeUpdate(Insert);94. st.close();95. cn.close(); 96. } 97. catch(Exception e) {98. JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+e,"Gagal",2);}99. }100. private void simpanSJ(){101. try {102. Connection cn = k.openKoneksi(); 103. Statement st = cn.createStatement();104. String Insert = "INSERT INTO sj VALUES
('"+noSj+"','"+noSo+"','"+no_perk+"','"+tglSj+"','0000-00-00','"+jurusan+"','"+penerima+"','"+barang+"','"+berat+"','"+harga+"','aktif');";
105. st.executeUpdate(Insert);106. st.close();107. cn.close(); 108. } 109. catch(Exception e) {110. JOptionPane.showMessageDialog(null,"Proses Simpan Gagal pd class Pengiriman BArang
methode simpanSj \n"+e,"Gagal",2);}111. } private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { 112. dapatData();113. simpanSO();114. 115. int row = tblSJ.getRowCount();116. for(int i=0; i<row; i++){117. tglSj = tblSJ.getValueAt(i,0).toString();118. no_perk = tblSJ.getValueAt(i,1).toString();119. jurusan = tblSJ.getValueAt(i,2).toString();120. penerima= tblSJ.getValueAt(i,3).toString();121. barang = tblSJ.getValueAt(i,4).toString();122. berat = tblSJ.getValueAt(i,5).toString();123. harga = tblSJ.getValueAt(i,6).toString();124. no_supir= tblSJ.getValueAt(i,7).toString();125. no_coSupir = tblSJ.getValueAt(i,8).toString();126. 127. 128. noSj = kd.setKodeSJ();129. simpanSJ(); 130. simpanDetilSupir(no_supir,"driver");131. simpanDetilSupir(no_coSupir,"co driver");132. }133. JOptionPane.showMessageDialog(this,"Data berhasil disimpan","Berhasil",1);134. cetakSO();135. setAwal();136. }
137. 138. private void btnOKActionPerformed(java.awt.event.ActionEvent evt) { 139. dapatData();140. if(jurusan.length()!=0 && penerima.length()!=0 && berat.length()!=0 &&
barang.length()!=0 && harga.length()!=0 && no_perk.length()!=0 && no_supir.length()!=0 && no_coSupir.length()!=0){
141. tambahData();142. }143. else{144. JOptionPane.showMessageDialog(this,"Isi data dengan lengkap
!","Peringatan",2);145. }146. } 147.148. private void btnNoPerkActionPerformed(java.awt.event.ActionEvent evt) { 149. data.dataStatusKendaraan sts = new data.dataStatusKendaraan();150. sts.setVisible(true);151. sts.setLocationRelativeTo(null);152. if(sts.noPerk.length()!=0){153. txtNoPerk.setText(sts.noPerk);154. txtMobil.setText(sts.noPlat);155. txtKdDriver.setText(sts.kdDriver);156. txtKdCoDriver.setText(sts.kdCoDriver);157. txtNmDriver.setText(sts.nmDriver);158. txtNmCo.setText(sts.nmCoDriver);159. }160. else{161. txtNoPerk.setText("");162. txtMobil.setText("");163. txtKdDriver.setText("");164. txtKdCoDriver.setText("");165. txtNmDriver.setText("");166. txtNmCo.setText("");167. }168. } 169.170. private void btnCariPlgnActionPerformed(java.awt.event.ActionEvent evt) { 171. dataPelanggan plg = new dataPelanggan();172. plg.setVisible(true);173. plg.setLocationRelativeTo(null);174. if(plg.noPlgn.length()!=0){175. txtNoPlgn.setText(plg.noPlgn);176. txtNama.setText(plg.nmPlgn);177. txtJurusan.requestFocus();178. }179. else{180. txtNoPlgn.setText("");181. txtNama.setText("");182. }183. } 184.185. private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { 186. setAwal();187. } 188.189. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 190. dispose();
191. } 192.193. private void simpanDetilSupir(String noSupir, String status) {194. try {//[]{"No.SJ","tgl SJ","No.
Perk","Jurusan","Penerima","Barang","Berat","Harga"});195. Connection cn = k.openKoneksi(); 196. Statement st = cn.createStatement();197.198. String Insert = "INSERT INTO detil_supir VALUES
('"+noSj+"','"+noSupir+"','"+status+"')";199. st.executeUpdate(Insert);200.201. st.close();202. cn.close(); 203. } 204. catch(Exception e) {205. JOptionPane.showMessageDialog(null,"Proses Simpan Gagal pd class
Pengiriman BArang methode simpanSj \n"+e,"Gagal",2);206. }207. }
I. Listing Bongkar Muat.java1. package gunapratama;
2. import data.setTiba;3. import java.sql.*;4. import javax.swing.JOptionPane;5. import javax.swing.table.DefaultTableModel;6. import kontrol.Koneksi;7. import kontrol.ctrlGUI;
8. public class bongkarMuat extends javax.swing.JInternalFrame {
9. private ctrlGUI gui = new ctrlGUI();10. private Koneksi k = new Koneksi();11. private Connection con;12. private Statement sta;13. public String no_so="",tujuan="",pengirim="",jurusan="";
14. /** Creates new form bongkarMuat */15. public bongkarMuat() {16. initComponents();17. setAwal();18. tblSo.setModel(ModelSo);19. gui.setingTabel(tblSo,
new int[]{70,128,200},new int[]{0,0,2}
20. );21. tblSj.setModel(ModelSj);22. gui.setingTabel(tblSj,
new int[]{85,150,150,100,100},new int[]{0,0,0,2,2});
23. private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { 24. setAwal();25. } 26. private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { 27. if(cekData()){
prosesSetTanggalTiba();setAwal();
28. }29. } 30. private void tblSjMouseClicked(java.awt.event.MouseEvent evt) { 31. if(evt.getClickCount() == 2){
int row = tblSj.getSelectedRow();setTiba tiba = new setTiba();tiba.setVisible(true);tiba.setLocationRelativeTo(null);if(tiba.tanggal.length()!=0){tblSj.setValueAt(tiba.tanggal,row,2);}
32. }33. } 34. private void tblSoMouseClicked(java.awt.event.MouseEvent evt) { 35. if(evt.getClickCount() == 2){
int row = tblSo.getSelectedRow();String no_so = tblSo.getValueAt(row,0).toString();String pengirim = tblSo.getValueAt(row,2).toString();txtNoSo.setText(no_so);txtPengirim.setText(pengirim);setTabelSJ(no_so);
36. }37. } 38. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 39. dispose();40. } 41. private void setAwal() {42. txtNoSo.setText("");43. txtPengirim.setText("");44. setDefaultTable(); 45. gui.hapusTabel(tblSj,ModelSj);46. }47. private void setDefaultTable() {48. gui.hapusTabel(tblSo,ModelSo);49. Object data[]= new Object[3];50. try{
con = k.openKoneksi();sta = con.createStatement();String SQL = "SELECT a.no_so,a.tgl_so,b.nm_plgn "+
"FROM so a, pelanggan b "+"WHERE a.no_plgn=b.no_plgn && a.status='terproses'; ";
ResultSet rs = sta.executeQuery(SQL);while(rs.next()){data[0] = rs.getString(1);data[1] = rs.getString(2);data[2] = rs.getString(3); ModelSo.addRow(data);}rs.close();sta.close();con.close();
51. }52. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method tabel SO");53. }
54. }55. private void setTabelSJ(String no_so) {56. gui.hapusTabel(tblSj,ModelSj);57. Object data[]= new Object[5];58. try{
con = k.openKoneksi();sta = con.createStatement();String SQL = "SELECT no_sj,tgl_sj ,jurusan,penerima, tgl_tiba "+
"FROM sj "+"WHERE no_so='"+no_so+"' && status='aktif' && tgl_tiba='0000-00-00'; ";
ResultSet rs = sta.executeQuery(SQL);while(rs.next()){data[0] = rs.getString(1);data[1] = rs.getString(2);data[2] = "";data[3] = rs.getString(3);data[4] = rs.getString(4);ModelSj.addRow(data);}rs.close();sta.close();con.close();
59. }60. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method tabel SJ \n"+err);61. }62. }63. private boolean cekData(){64. int row = tblSj.getRowCount();65. if(tblSj.getRowCount()==0){
JOptionPane.showMessageDialog(this,"isi data dengan lengkap !","peringatan !",2);return false;
66. }67. else{
for(int i=0; i<row; i++){if(tblSj.getValueAt(i,2).toString().length()!=0){
return true;}}JOptionPane.showMessageDialog(this,"isi data dengan lengkap !","peringatan !",2);return false;
68. } 69. }70. private void prosesSetTanggalTiba(){71. int row = tblSj.getRowCount();72. for(int i=0; i<row; i++){
setTanggal(tblSj.getValueAt(i,0).toString(),tblSj.getValueAt(i,2).toString());73. }74. setStatusSo();75. JOptionPane.showMessageDialog(this,"Data berhasil disimpan","Data berhasil disimpan",1);76. }77. private void setTanggal(String no_sj, String tanggal){78. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();String setSo = "UPDATE sj "+
"SET tgl_tiba='"+tanggal+"' "+
"WHERE no_sj='"+no_sj+"'; "; sta.executeUpdate(setSo);con.close();sta.close();
79. }80. catch(Exception err){
JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+err,"Gagal",2);81. }82. }83. private void setStatusSo(){//ubah status SO=terkirim jika semua pengiriman telah terporses84. boolean flag=true;85. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();
String statusSo = "SELECT a.no_so, b.no_sj "+//apakah ada sj yang masih terproses
"FROM so a, sj b "+"WHERE a.no_so=b.no_so && b.tgl_tiba='0000-00-00' && b.status='aktif' && a.no_so='"+txtNoSo.getText()+"' ";
String setSo = "UPDATE so "+"SET status='terima' "+"WHERE no_so='"+txtNoSo.getText()+"'; ";
ResultSet rs = sta.executeQuery(statusSo);if(rs.next()){flag = false;}
if(flag){sta.executeUpdate(setSo);}con.close();sta.close();
86. }87. catch(Exception err){
JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+err,"Gagal",2);88. }89. }
J. Listing Program Pembayaran.java1. package gunapratama;
2. import javax.swing.JOptionPane;3. import javax.swing.table.DefaultTableModel;4. import java.sql.*;5. import javax.swing.JTable;6. import javax.swing.table.TableModel;7. import kontrol.Koneksi;8. import kontrol.ctrlGUI;9. import kontrol.ctrlText;10.11. public class pembayaranEkspedisi extends javax.swing.JInternalFrame {12. private ctrlGUI gui = new ctrlGUI();13. private ctrlText text = new ctrlText();14. private Koneksi k = new Koneksi();15. private Connection con;16. private Statement sta;
17. public String noSO="",nmPlgn="", biaya="", terbayar="",sisa="";18. public pembayaranEkspedisi() {19. initComponents(); 20. tblPelunasan.setModel(Model);21. gui.setingTabel(tblPelunasan,
new int [] {80,170,80,80,80},new int [] {0,2,1,1,1});
22. setDefaultTable();23. }24. private void setDefaultTable() {25. gui.hapusTabel(tblPelunasan,Model);26. Object data[]= new Object[6];27. String biaya = "0";28. String terbayar = "0";29. try{
con = k.openKoneksi();sta = con.createStatement();String SQL = "SELECT a.no_so,nm_plgn "+
"FROM so a, pelanggan b "+"WHERE a.no_plgn=b.no_plgn && a.status_lunas='belum lunas' "+"ORDER BY a.no_so ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);while(rs.next()){data[0] = rs.getString(1);data[1] = rs.getString(2);data[2] = text.Formating(setBiaya(rs.getString(1)));data[3] = text.Formating(setTerbayar(rs.getString(1)));data[4] = setSisa(data[2].toString(),data[3].toString());Model.addRow(data);row++;}rs.close();sta.close();con.close();
30. }31. catch(SQLException err){
System.err.println("Ada Kesalahan Pada Method setDefaultTable pd class pembayaranEkspedisi\n"+err);
32. }33. }34. private String setBiaya(String no_so) {35. try{
con = k.openKoneksi();sta = con.createStatement();String SQL = "SELECT SUM(berat*harga) biaya "+
"FROM sj "+"WHERE no_so='"+no_so+"'; ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);if(rs.next()){return rs.getString(1);}rs.close();sta.close();con.close();
36. }37. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method setBiaya pd class pembayaranEkspedisi\n"+err);
38. }39. return "0";40. }41. private String setTerbayar(String no_so) {42. try{
con = k.openKoneksi();sta = con.createStatement();String SQL = "SELECT SUM(jumlah) terbayar "+
"FROM bayar "+"WHERE no_so='"+no_so+"'; ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);if(rs.next()){return rs.getInt(1)+"";}rs.close();sta.close();con.close();
43. }44. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method setTerbayar pd class pembayaranEkspedisi\n"+err);
45. }46. return "0";47. }48. private String setSisa(String biaya, String terbayar){49. int sisa = Integer.parseInt(biaya.replace(".","")) -
Integer.parseInt(terbayar.replace(".",""));50. return text.Formating(""+sisa);51. }private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) { 52. setDefaultTable();53. } 54. private void tblPelunasanMouseClicked(java.awt.event.MouseEvent evt) { 55. if(evt.getClickCount() == 2){
int row = tblPelunasan.getSelectedRow();String noso = tblPelunasan.getValueAt(row,0).toString();String plgn = tblPelunasan.getValueAt(row,1).toString();String biaya = tblPelunasan.getValueAt(row,2).toString();String terbayar = tblPelunasan.getValueAt(row,3).toString();String sisa = tblPelunasan.getValueAt(row,4).toString();data.dataPembayaran data = new data.dataPembayaran(noso,plgn,biaya,terbayar,sisa);data.setVisible(true);data.setLocationRelativeTo(null);setDefaultTable();
56. }57. } 58. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 59. dispose();60. }
K. Listing dataPembayaran.java1. package data;
2. import java.sql.*;3. import javax.swing.JOptionPane;4. import javax.swing.table.DefaultTableModel;5. public class dataPembayaran extends javax.swing.JDialog {6. private kontrol.ctrlGUI gui = new kontrol.ctrlGUI();7. private kontrol.ctrlTanggal tgl = new kontrol.ctrlTanggal();8. private kontrol.ctrlText text = new kontrol.ctrlText();9. private kontrol.setKode kd = new kontrol.setKode();10. private kontrol.fungsiCetak cetak = new kontrol.fungsiCetak();11. private kontrol.Koneksi k = new kontrol.Koneksi();12. private String noso="",tanggal="",keterangan="",bayar="";13. /** Creates new form dataPembayaran */14. public dataPembayaran(String noso, String plgn, String biaya, String terbayar, String sisa) {15. super(new javax.swing.JDialog(),"Data Pembayaran Ekspedisi",true); 16. initComponents();17. tblPelunasan.setModel(Model);18. setDefaultTable();19. gui.setingTabel(tblPelunasan,
new int [] {80,120,130,100},new int [] {0,0,2,1});
20. txtNoSO.setText(noso);21. txtNmPlgn.setText(plgn);22. txtBiaya.setText(biaya);23. txtTerbayar.setText(terbayar);24. txtSisa.setText(sisa);25. txtBayar.requestFocus();26. setDefaultTable();27. txtBayar.requestFocus();28. }29. private void ambilData(){30. noso = txtNoSO.getText();31. tanggal = tgl.setTanggal(dcTanggal.getDate(),"yyyy-MM-dd");32. keterangan = txtKtrgn.getText();33. bayar = txtBayar.getText();34. }35. private void setAwal(){36. txtBayar.setText("");37. txtKtrgn.setText(""); 38. txtBayar.requestFocus();39. setDefaultTable();40. }41. private boolean cekField(){42. if(keterangan.length()!=0 && bayar.length()!=0){
return true;43. }44. else{
JOptionPane.showMessageDialog(null,"Isi data dengan lengkap !","Peringatan !",2);return false;
45. }46. }47. private boolean cekKelebihanPembayaran(){48. int biaya = Integer.parseInt(setBiaya(noso));49. int terbayar= Integer.parseInt(setTerbayar(noso));
50. int bayar = 0;51. if(txtBayar.getText().length()!=0)bayar = Integer.parseInt(txtBayar.getText());52. if(terbayar + bayar > biaya){
int i = JOptionPane.showConfirmDialog(null,"<html>Pembayaran yang akan dilakukan sebesar <b>"+ text.Formating(String.valueOf(bayar))+"</b> melebihi sisa pembayaran yang dibutuhkan <b>"+txtSisa.getText()+"</b><br> Apakah anda ingin melanjutkan pembayaran ?</html>","Peringatan",JOptionPane.YES_NO_OPTION);if(i==JOptionPane.YES_OPTION) return true;else return false;
53. }54. return true;55. }56. private void cekStatusLunas(){57. int biaya = Integer.parseInt(setBiaya(noso));58. int terbayar= Integer.parseInt(setTerbayar(noso));59. if(terbayar>=biaya){
JOptionPane.showMessageDialog(null,"Pembayaran sudah lunas","Informasi",1);setStatusLunas();cetak.cetakPembayaran(noso);dispose();
60. }61. txtBiaya.setText(text.Formating(setBiaya(noso)));62. txtTerbayar.setText(text.Formating(setTerbayar(noso)));63. txtSisa.setText(text.Formating(setSisa(setBiaya(noso),setTerbayar(noso)))); 64. }65. private void setStatusLunas(){66. try {
Connection cn = k.openKoneksi(); Statement st = cn.createStatement()String ubah = "UPDATE so "+
"SET status_lunas='lunas' "+"WHERE no_so='"+noso+"'; ";
st.executeUpdate(ubah);st.close();cn.close();
67. } 68. catch(Exception e) {
JOptionPane.showMessageDialog(null,"Proses Ubah Gagal\n"+e,"Gagal",2);}
69. }70. private String setBiaya(String no_so){71. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();String SQL = "SELECT SUM(berat*harga) biaya "+
"FROM sj "+"WHERE no_so='"+no_so+"'; ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);if(rs.next()){return ""+rs.getInt(1);}rs.close();sta.close();con.close();
72. }
73. catch(Exception err){System.err.println("Ada Kesalahan Pada Method setBiaya pd class pembayaranEkspedisi\n"+err);
74. }75. return "0";76. }77. private String setTerbayar(String no_so){78. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();String SQL = "SELECT SUM(jumlah) terbayar "+
"FROM bayar "+"WHERE no_so='"+no_so+"'; ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);if(rs.next()){return ""+rs.getInt(1);}rs.close();sta.close();con.close();
79. }80. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method setTerbayar pd class pembayaranEkspedisi\n"+err);
81. }82. return "0";83. }84. private String setSisa(String biaya, String terbayar){85. int sisa = Integer.parseInt(biaya.replace(".","")) -
Integer.parseInt(terbayar.replace(".","")); 86. return sisa+"";87. }88. private void simpan(){89. String nobayar = kd.setKodeBayar();90. try {
Connection cn = k.openKoneksi(); Statement st = cn.createStatement();String simpan = "INSERT INTO bayar "+
91. "VALUES('"+nobayar+"','"+noso+"','"+tanggal+"','"+keterangan+"',"+bayar+"); ";st.executeUpdate(simpan);st.close();cn.close();JOptionPane.showMessageDialog(null,"Proses Simpan Berhasil","Berhasil",1);
92. } 93. catch(Exception e) {
JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+e,"Gagal",2);}
94. }95. private void hapus(String noBayar) {96. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();String Delete = "DELETE FROM bayar "+
"WHERE no_bayar='"+noBayar+"'; ";sta.executeUpdate(Delete);
sta.close();con.close();JOptionPane.showMessageDialog(null, "Proses Hapus Berhasil", "Berhasil",1);
97. }98. catch(Exception e){
JOptionPane.showMessageDialog(null, "Proses Hapus Gagal", "Gagal",2);99. }100. }101. private boolean konfirmasi(){102. String x = "<html><font color=blue><b>Apakah anda ingin menghapus data ini
</b></font></html>";103. int tanya =
JOptionPane.showConfirmDialog(null,x,"Konfirmasi",JOptionPane.YES_NO_OPTION);104. if(tanya==JOptionPane.YES_OPTION) return true; 105. else return false;106. }private void txtBayarKeyPressed(java.awt.event.KeyEvent evt) { 107. if(evt.getKeyCode()==evt.VK_ENTER){
txtKtrgn.requestFocus();108. }109. } 110. private void tblPelunasanMouseClicked(java.awt.event.MouseEvent evt) { 111. if(evt.getClickCount()==2){
int row = tblPelunasan.getSelectedRow();String noBayar = tblPelunasan.getValueAt(row,0).toString();if(konfirmasi()){hapus(noBayar);setDefaultTable();String terbayar = text.Formating(text.pembulatan(setTerbayar(txtNoSO.getText())));String sisa = text.Formating(text.pembulatan(setSisa(txtBiaya.getText(),terbayar)));txtTerbayar.setText(terbayar);txtSisa.setText(sisa);txtBayar.requestFocus();}
112. }113. } 114. private void btnBayarActionPerformed(java.awt.event.ActionEvent evt) { 115. ambilData();116. if(cekField()){
if(cekKelebihanPembayaran()){simpan();setAwal();cekStatusLunas();}
117. }118. } 119. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 120. dispose();121. } 122. private void txtNoSOActionPerformed(java.awt.event.ActionEvent evt) { 123. } 124. private void setDefaultTable() {125. gui.hapusTabel(tblPelunasan,Model);126. Object data[]= new Object[4];127. try{
Connection con = k.openKoneksi();Statement sta = con.createStatement();String SQL = "SELECT no_bayar,tgl_bayar,keterangan,jumlah "+
"FROM bayar "+"WHERE no_so='"+txtNoSO.getText()+"' ";
int row = 0;ResultSet rs = sta.executeQuery(SQL);while(rs.next()){data[0] = rs.getString(1);data[1] = tgl.setTanggal(rs.getDate(2),"dd MMMMM yyyy");data[2] = rs.getString(3);data[3] = text.Formating(rs.getString(4));Model.addRow(data);row++;}rs.close();sta.close();con.close();
128. }129. catch(Exception err){
System.err.println("Ada Kesalahan Pada Method setDefaultTable pd class dataPembayaran\n"+err);
130. }131. } private javax.swing.table.DefaultTableModel Model = (DefaultTableModel)
gui.getDefaultTabelModel(new String[]{"No. Bayar","Tgl. Bayar","Keterangan","Jumlah"});
L. Listing Progam masterBroadcast.java1. package gunapratama;
2. import java.util.regex.Pattern;3. import javax.swing.table.DefaultTableModel;4. import javax.swing.JOptionPane;5. import javax.comm.CommPortIdentifier;6. import java.util.Vector;7. import java.sql.*;
8. public class masterBroadcast extends javax.swing.JInternalFrame implements kontrol.interfaceServer{
9. private kontrol.Koneksi k = new kontrol.Koneksi();10. private kontrol.ctrlGUI gui = new kontrol.ctrlGUI(); 11. private kontrol.ctrlTanggal tgl = new kontrol.ctrlTanggal();12. private kontrol.setKode kode = new kontrol.setKode();13. private kontrol.server sms = null;14. private kontrol.simpanDataSMS simpan = new kontrol.simpanDataSMS();15. private kontrol.prosesTerimaSMS terima = new kontrol.prosesTerimaSMS();16. private kontrol.prosesBalasSMS balas = new kontrol.prosesBalasSMS(); 17. private int i=0;18. private Connection cn;19. private Statement st;20. private String cariDengan;21. private String check = "<html><body><input type='checkbox'
checked></body</html>";22. private String notcheck = "<html><body><input type='checkbox'></body></html>"; 23. private String status ="setting/StatusKoneksi.ini";24. private Vector dataNoHP = new Vector();25. private Vector dataNama = new Vector();
26. private Vector dataNoReg = new Vector();
27. /** Creates new form masterBroadcast */28. public masterBroadcast() {29. initComponents(); 30. //setting interface31. sms = new kontrol.server(this);32. //setting tabel dan jlist33. tblPelanggan.setModel(Model); 34. jlProses.setModel(listModel);35. gui.setingTabel(tblPelanggan,
new int [] {45,100,120,100},new int [] {0,0,2,0}//tengah,tengah,kiri,tengah
);36. //set tanggal & waktu37. tgl.setWaktu(lblWaktu);38. lblTanggal.setText(tgl.setTanggal(tgl.setActiveDate(),"dd-MM-yyyy"));39. //setting awal40. setAwal();41. cariPort();42. setSelectedCombo();43. setButton(false);44. }45. //fungsi stting server46. String filePath = "setting/SettingPort.ini";47. String namaPort = "";48. String nilaiBaud = "19200";49. String nilaiDataBits = "8";50. String nilaiParity = "None";51. String nilaiStopBits = "1"; 52. String nilaiFlowControl = "None";53. String balasanAdmin = "1";54. private void cariPort(){55. cmbPort.removeAllItems();56. java.util.Enumeration portList = CommPortIdentifier.getPortIdentifiers();57. while (portList.hasMoreElements()) 58. {
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
cmbPort.addItem(portId.getName());59. }60. namaPort = cmbPort.getItemAt(cmbPort.getItemCount()-1).toString();61. }62. private void setNilaiPort(){ 63. namaPort = cmbPort.getSelectedItem().toString();64. nilaiBaud = cmbBitPerSecond.getSelectedItem().toString();65. nilaiDataBits = cmbDataBit.getSelectedItem().toString();66. nilaiParity = cmbParity.getSelectedItem().toString();67. nilaiStopBits = cmbStopBit.getSelectedItem().toString();68. nilaiFlowControl= cmbFlowControl.getSelectedItem().toString();69. if(rdIya.isSelected())balasanAdmin="1";70. else balasanAdmin="0";71. }72. private void setSelectedCombo(){73. cmbPort.setSelectedItem(namaPort);74. cmbBitPerSecond.setSelectedItem(nilaiBaud);75. cmbDataBit.setSelectedItem(nilaiDataBits);
76. cmbParity.setSelectedItem(nilaiParity);77. cmbStopBit.setSelectedItem(nilaiStopBits);78. cmbFlowControl.setSelectedItem(nilaiFlowControl);79. if(balasanAdmin.equals("1"))rdIya.setSelected(true);80. else rdTidak.setSelected(true);81. }82. private void simpanSettingPort(){ 83. java.util.Vector save = new java.util.Vector();84. save.add(namaPort);85. save.add(nilaiBaud);86. save.add(nilaiFlowControl);87. save.add(nilaiDataBits);88. save.add(nilaiStopBits); 89. save.add(nilaiParity);90. save.add(balasanAdmin);91. try {
java.io.FileOutputStream in = new java.io.FileOutputStream(filePath);java.io.ObjectOutputStream out= new java.io.ObjectOutputStream(in);out.writeObject(save);out.flush();in.close();
92. } catch(Exception e) { JOptionPane.showMessageDialog(null,"file SettingPort ada masalah !\n"+e.toString(), "Kesalahan pada class setTerminal simpanSettingPort",2);
93. }94. }95. public void setList(String stat, int delay) {96. listModel.add(i,stat);97. jlProses.setSelectionInterval(i,i); // memilih index dengan interval98. jlProses.setSelectedIndex(i); // menset index yang dipilih99. jlProses.ensureIndexIsVisible(i); //agar scrol mengikuti index yang terpilih100. try {
Thread.sleep(delay);101. } catch (InterruptedException ex) {
ex.printStackTrace();102. }103. ++i;104. jlProses.requestFocus();105. }106. private boolean konvirmasi(String pesan){107. int hasil =
JOptionPane.showConfirmDialog(this,pesan,"Konvirmasi",JOptionPane.OK_CANCEL_OPTION);
108. if(hasil==JOptionPane.OK_OPTION)return true; 109. else return false;110. }111. private void setAwal(){112. rdSeluruhSupir.setSelected(true);113. cmbCari.setSelectedIndex(0);114. txtCari.setText("");115. txtPesan.setText("");116. txtJudulPesan.setText(""); 117. setDefaultTable();118. chekSemua();119. clearList();120. }121. private void cariBy(){
122. switch(cmbCari.getSelectedIndex()){ case 0 : cariDengan="no_supir"; break;case 1 : cariDengan="nm_supir"; break;case 2 : cariDengan="hp_spr"; break;default : cariDengan="no_supir"; break;
123. }124. }125. private void setDefaultTable() {126. cariBy();127. gui.hapusTabel(tblPelanggan,Model);128. Object data[] = new Object[4]; 129. try {
cn = k.openKoneksi();st = cn.createStatement();String SQL = "SELECT no_supir,nm_supir,hp_spr "+
"FROM supir "+"WHERE status='aktif' && "+cariDengan+" like '%"+txtCari.getText()+"%' " +"ORDER BY no_supir ";
ResultSet rs= st.executeQuery(SQL);String cek="";if(rdSeluruhSupir.isSelected())cek = check;else cek = notcheck;while(rs.next()) {data[0] = cek;data[1] = rs.getString(1);data[2] = rs.getString(2);data[3] = rs.getString(3);Model.addRow(data);}rs.close();st.close();cn.close();
130. } catch(Exception exc) {System.err.println("ada kesalahan pada class mstrBroadcast pd methode setDefaultTable()\n "+exc.getMessage());
131. } 132. }133. private void hapusChek(){134. int row = tblPelanggan.getRowCount();135. for(int i= 0; i<row; i++){
tblPelanggan.setValueAt(notcheck,i,0);136. }137. }138. private void chekSemua(){139. int row = tblPelanggan.getRowCount();140. for(int i= 0; i<row; i++){
tblPelanggan.setValueAt(check,i,0);141. }142. }143. private void clearList(){144. listModel.clear();145. jlProses.removeAll();146. jlProses.requestFocus();147. i = 0;148. }149. private void keluar(){
150. if(cekStatusKoneksi()){JOptionPane.showMessageDialog(this,"Status port masih terhubung, silahkan putuskan terlebih dahulu !","Peringatan !",2);
151. }152. else{
dispose();153. }154. }155. private boolean cekStatusKoneksi(){156. if(btnPutusKoneksi.isEnabled())return true;157. else return false;158. }159. private void dataKirim(){160. String cek="";161. int row = tblPelanggan.getRowCount(); 162. for(int i=0; i<row; i++){
cek = tblPelanggan.getValueAt(i,0).toString();if(cek.equals(check)){dataNoReg.add(tblPelanggan.getValueAt(i,1));dataNama.add(tblPelanggan.getValueAt(i,2));dataNoHP.add(tblPelanggan.getValueAt(i,3));}
163. }164. }165. public void clearVector() {166. dataNoReg.clear();167. dataNoReg.removeAllElements();168. dataNama.clear();169. dataNama.removeAllElements();170. dataNoHP.clear();171. dataNoHP.removeAllElements();172. }173. private void KirimSms(String pesan, Vector nohp, Vector noreg, String nobc){ 174. if(nohp!=null) {
for(int i=0; i<nohp.size(); i++) { try {
setList("Kiriman ke-"+(i+1)+" kepada : "+nohp.get(i).toString(),200);setList(noreg.get(i).toString()+" "+nobc+" "+nohp.get(i).toString(),400);simpan.simpanDataKirim(noreg.get(i).toString(),nobc,nohp.get(i).toString());sms.setNomorPesan(nobc,noreg.get(i).toString()); sms.prosesKirimSms(nohp.get(i).toString(),pesan);
} catch(Exception x) {
System.err.println(x.getMessage()); }}
175. } else {JOptionPane.showMessageDialog(this,"Pilih orang yang ingin dikirim !","Peringatan !",2);
176. } 177. }private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { 178. setAwal();179. } 180. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 181. keluar();182. }
183. private void btnPutusKoneksiActionPerformed(java.awt.event.ActionEvent evt) { 184. sms.prosesTutup();185. setList("Berhasil menutup koneksi terminal,",2000);186. } 187. private void btnBukaKoneksiActionPerformed(java.awt.event.ActionEvent evt) { 188. Thread t=new Thread() {
public void run() {setList("Mencoba koneksi terminal",1000);setList("Silahkan tunggu...",500);try {
sms.setTerminal();} catch (InterruptedException ex) {
ex.printStackTrace();}}
189. };190. t.start();191. } 192. private void btnOKActionPerformed(java.awt.event.ActionEvent evt) { 193. setNilaiPort();194. String pesan = "<html><head><body>" +
"<tr><td>Port</td><td>:<b> "+namaPort+"</b><td></tr>" +"<tr><td>Bit Per Seconds</td><td>:<b> "+nilaiBaud+"</b><td></tr>" +"<tr><td>Data Bit</td><td>:<b> "+nilaiDataBits+"</b><td></tr>" +"<tr><td>Parity</td><td>:<b> "+nilaiParity+"</b><td></tr>" +"<tr><td>Stop Bits</td><td>:<b> "+nilaiStopBits+"</b><td></tr>" +"<tr><td>Flow Control</td><td>:<b> "+nilaiFlowControl+"</b><td></tr>" +"</body></head></html>\n\n<html><font color=red><b>Apakah Terminal ingin di setting dengan data ini ?</b></font></html>";
195. if(konvirmasi(pesan)){simpanSettingPort();
196. }197. } 198. private void btnHapusProsesActionPerformed(java.awt.event.ActionEvent evt) { 199. clearList();200. } 201. private void tblPelangganMouseClicked(java.awt.event.MouseEvent evt) { 202. if(tblPelanggan.isEnabled()){
int row = tblPelanggan.getSelectedRow();if(evt.getClickCount() == 1){if(tblPelanggan.getValueAt(row,0).equals(check)){
tblPelanggan.setValueAt(notcheck,row,0);} else{
tblPelanggan.setValueAt(check,row,0);}}
203. }204. } 205. private void btnCariActionPerformed(java.awt.event.ActionEvent evt) { 206. setDefaultTable();207. } 208. private void cmbCariItemStateChanged(java.awt.event.ItemEvent evt) { 209. txtCari.requestFocus();210. } 211. private void txtCariKeyPressed(java.awt.event.KeyEvent evt) { 212. if(evt.getKeyCode() == evt.VK_ENTER){
setDefaultTable();
213. }214. } 215. private void txtJudulPesanKeyPressed(java.awt.event.KeyEvent evt) { 216. if(evt.getKeyCode() == evt.VK_ENTER){
txtPesan.requestFocus();217. }218. } 219. private void btnKirimActionPerformed(java.awt.event.ActionEvent evt) { 220. if(cekStatusKoneksi()){
Thread thread = new Thread() {public void run(){
dataKirim();//ambil data kirimString noBroadcast = kode.setKodeBroadcast();String judul = txtJudulPesan.getText().trim();String pesan = txtPesan.getText().trim();setList("Proses mengirim sms berlangsung pada "+tgl.setWaktu(),1000);setList("Broadcast : " +txtPesan.getText().trim() ,200);setList(noBroadcast+" "+judul+" "+pesan+" "+tgl.setWaktu(),400);simpan.simpanDataBroadcast(noBroadcast,judul,pesan,tgl.setWaktu());KirimSms(txtPesan.getText().trim(),dataNoHP,dataNoReg, noBroadcast);setList("Proses mengirim sms berakhir pada "+tgl.setWaktu(),500);clearVector();//membersihkan isi vector
}};thread.start();
221. } else{JOptionPane.showMessageDialog(this,"Status port belum terhubung, silahkan menghubungkan port dahulu !","Peringatan !",2);
222. }223. } 224. private void btnHapusPesanActionPerformed(java.awt.event.ActionEvent evt) { 225. // txtPesan.setText("");226. // txtJudulPesan.setText("");227. // txtJudulPesan.requestFocus();228. // test pesan masuk229. String nomor_telepon = txtJudulPesan.getText();230. String pesan = txtPesan.getText();231. String noInbox = kode.setKodeInbox();232. String waktu = tgl.setWaktu();233. pesan = pesan.replace("'","");234. simpan.simpanDataInbox(noInbox,nomor_telepon,pesan,waktu);//menyimpan data
inbox dengan status 0/belum 235. terima.prosesTerimaSMS();236. Pattern pattern = Pattern.compile("~");237. Vector kirim = balas.prosesBalasSMS();//mengambil semua data balas ke vector238. String[] hasil;239. if(kirim.size()!=0){
for(int i=0; i<kirim.size(); i++){hasil = pattern.split(kirim.get(i).toString());balas.updateStatusKirim(hasil[0].toString());//update status balas menjadi sudahsms.setNomorPesan(hasil[0].toString(),"");//menset nopesan masuk untuk setting status pengirimansms.prosesKirimSms(hasil[1].toString(),hasil[2].toString());//mengirim data balas}
240. }
241. } 242. private void txtPesanCaretUpdate(javax.swing.event.CaretEvent evt) { 243. } 244. private void rdSeluruhSupirItemStateChanged(java.awt.event.ItemEvent evt) { 245. if(rdSeluruhSupir.isSelected()){
tblPelanggan.setEnabled(false);tblPelanggan.clearSelection();chekSemua();
246. } else{tblPelanggan.setEnabled(true);hapusChek();
247. }248. } 249. public void pesanSMSMasuk(String nomor_telepon, String pesan) {250. //proses yang menangani sms masuk 251. String noInbox = kode.setKodeInbox();//mengambil nomor inbox252. String waktu = tgl.setWaktu();//mengambil waktu253. pesan = pesan.replace("'","");254. simpan.simpanDataInbox(noInbox,nomor_telepon,pesan,waktu);255. terima.prosesTerimaSMS();256. Pattern pattern = Pattern.compile("~");257. Vector kirim = balas.prosesBalasSMS();//mengambil semua data balas ke vector258. String[] hasil;259. if(kirim.size()!=0){
for(int i=0; i<kirim.size(); i++){hasil = pattern.split(kirim.get(i).toString());balas.updateStatusKirim(hasil[0].toString());//update status balas menjadi sudahsms.setNomorPesan(hasil[0].toString(),"");sms.prosesKirimSms(hasil[1].toString(),hasil[2].toString());//mengirim data balas}
260. }261. }262. public void responTerminal(String respon, int delay) {263. listModel.add(i,respon);264. jlProses.setSelectionInterval(i,i); // memilih index dengan interval265. jlProses.setSelectedIndex(i); // menset index yang dipilih266. jlProses.ensureIndexIsVisible(i); //agar scrol mengikuti index yang terpilih267. try {
Thread.sleep(delay);268. } catch (InterruptedException ex) {
ex.printStackTrace();269. }270. ++i;271. jlProses.requestFocus();272. }273. public void responTerminal(String respon) {274. listModel.add(i,respon);275. jlProses.setSelectionInterval(i,i); // memilih index dengan interval276. jlProses.setSelectedIndex(i); // menset index yang dipilih277. jlProses.ensureIndexIsVisible(i); //agar scrol mengikuti index yang terpilih 278. ++i;279. jlProses.requestFocus();280. }281. public void setButton(boolean status) {282. if(status){//status koneksi
btnBukaKoneksi.setEnabled(false);btnPutusKoneksi.setEnabled(true);
lblStatusKoneksi.setText("Terhubung");lblIconStatus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/Status tersambung.png")));
283. }284. else{
btnBukaKoneksi.setEnabled(true);btnPutusKoneksi.setEnabled(false);lblStatusKoneksi.setText("Terputus");lblIconStatus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/Status terputus.png")));
285. }286. } private javax.swing.table.DefaultTableModel Model = (DefaultTableModel)
gui.getDefaultTabelModel(new String [] {"Cek","No. Supir","Nama Supir", "No. HP"});287. private javax.swing.DefaultListModel listModel = new javax.swing.DefaultListModel();288. }
M. Listing masterPesan.java1. package gunapratama;
2. import javax.swing.JOptionPane;3. import javax.swing.table.DefaultTableModel;4. import java.sql.*;5. public class masterPesan extends javax.swing.JInternalFrame {
6. private kontrol.Koneksi k = new kontrol.Koneksi();7. private kontrol.ctrlGUI gui = new kontrol.ctrlGUI(); 8. private kontrol.ctrlTanggal tgl = new kontrol.ctrlTanggal();9. private Connection cn;10. private Statement st;11. private String tanggal="",bulan="",tahun="";
12. /** Creates new form masterPesan */13. public masterPesan() {14. initComponents();15. // Atur Tabel 16. tblInbox.setModel(modelInbox); 17. gui.setingTabel(tblInbox,
new int [] {30,100,80,140,140,80},new int [] {0,0,2,2,0,0,0}
);18. tblBroadcast.setModel(modelBroadcast); 19. gui.setingTabel(tblBroadcast,
i. new int [] {30,100,160,80,150},ii. new int [] {0,0,2,0,0}
);20. set Awal21. cmbCari.setSelectedIndex(1);22. setTanggal();23. setDataInboxByBulan();24. setDataBroadcastByBulan();25. }26. private void setDataInboxByTanggal() { 27. gui.hapusTabel(tblInbox,modelInbox);28. Object data[] = new Object[6]; 29. try { cn = k.openKoneksi();
st = cn.createStatement();
String SQL = "SELECT a.no_inbox,a.no_supir,a.judul,DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S'),b.status_kirim "+
"FROM inbox a, balas b "+"WHERE a.no_inbox=b.no_inbox && DATE_FORMAT(a.waktu,'%Y-%m-%d')='"+tanggal+"' "+"GROUP BY b.no_inbox "+"ORDER BY no_inbox; ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = setPengirim(rs.getString(2));data[3] = rs.getString(3);data[4] = rs.getString(4);data[5] = setStatusBalas(rs.getString(5));modelInbox.addRow(data);}rs.close();st.close();cn.close();
30. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataInboxByTanggal()\n"+exc.getMessage());
31. } 32. }33. private void setDataInboxByBulan() { 34. gui.hapusTabel(tblInbox,modelInbox);35. Object data[] = new Object[6];//"No.","No. Pesan","Nama Plg", "Judul", "Waktu", "Status
Bls"}36. try {
cn = k.openKoneksi();st = cn.createStatement();String SQL = "SELECT a.no_inbox,a.no_supir,a.judul,DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S'),b.status_kirim "+
"FROM inbox a, balas b "+"WHERE a.no_inbox=b.no_inbox && DATE_FORMAT(a.waktu,'%Y-%m')='"+bulan+"' " +"GROUP BY b.no_inbox "+"ORDER BY no_inbox ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = setPengirim(rs.getString(2));data[3] = rs.getString(3);data[4] = rs.getString(4); data[5] = setStatusBalas(rs.getString(5));modelInbox.addRow(data);}rs.close();st.close();cn.close();
37. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataInboxByBulan()\n"+exc.getMessage());
38. } 39. }40. private void setDataInboxByTahun() { 41. gui.hapusTabel(tblInbox,modelInbox);42. Object data[] = new Object[6]; 43. try {
cn = k.openKoneksi();st = cn.createStatement();String SQL = "SELECT a.no_inbox,a.no_supir,a.judul,DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S'),b.status_kirim "+
"FROM inbox a, balas b "+"WHERE a.no_inbox=b.no_inbox && DATE_FORMAT(a.waktu,'%Y')='"+tahun+"' "+"GROUP BY b.no_inbox "+"ORDER BY no_inbox; ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = setPengirim(rs.getString(2));data[3] = rs.getString(3);data[4] = rs.getString(4); data[5] = setStatusBalas(rs.getString(5));
modelInbox.addRow(data);}
rs.close();st.close();cn.close();
44. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataInboxByTahun()\n"+exc.getMessage());
45. } 46. }
47. private void setDataBroadcastByTanggal() { 48. gui.hapusTabel(tblBroadcast,modelBroadcast);49. Object data[] = new Object[5];50. try {
cn = k.openKoneksi();st = cn.createStatement();String SQL = "SELECT a.no_broadcast, a.judul, COUNT(b.no_broadcast), DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S') "+
"FROM broadcast a, kirim b "+"WHERE a.no_broadcast=b.no_broadcast && DATE_FORMAT(a.waktu,'%Y-%m-%d')='"+tanggal+"' "+"GROUP BY b.no_broadcast "+"ORDER BY a.no_broadcast; ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = rs.getString(2);data[3] = rs.getString(3);
data[4] = rs.getString(4);modelBroadcast.addRow(data);}rs.close();st.close();cn.close();
51. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataBroadcastByTanggal()\n"+exc.getMessage());
52. } 53. }54. private void setDataBroadcastByBulan() { 55. gui.hapusTabel(tblBroadcast,modelBroadcast);56. Object data[] = new Object[5]; 57. try {
cn = k.openKoneksi();st = cn.createStatement();//No.","No. Broadcast","Judul","Jml Krm","WaktuString SQL = "SELECT a.no_broadcast, a.judul, COUNT(b.no_broadcast), DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S') "+
"FROM broadcast a, kirim b "+"WHERE a.no_broadcast=b.no_broadcast && DATE_FORMAT(a.waktu,'%Y-%m')='"+bulan+"' "+"GROUP BY b.no_broadcast "+"ORDER BY a.no_broadcast; ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = rs.getString(2);data[3] = rs.getString(3);data[4] = rs.getString(4);modelBroadcast.addRow(data);}
rs.close();st.close();cn.close();
58. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataBroadcastByBulan()\n"+exc.getMessage());
59. } 60. }61. private void setDataBroadcastByTahun() { 62. gui.hapusTabel(tblBroadcast,modelBroadcast);63. Object data[] = new Object[5]; 64. try {
cn = k.openKoneksi();st = cn.createStatement();//No.","No. Broadcast","Judul","Jml Krm","WaktuString SQL = "SELECT a.no_broadcast, a.judul, COUNT(b.no_broadcast), DATE_FORMAT(waktu,'%Y-%m-%d %H:%i:%S') "+
"FROM broadcast a, kirim b "+"WHERE a.no_broadcast=b.no_broadcast && DATE_FORMAT(a.waktu,'%Y')='"+tahun+"' "+"GROUP BY b.no_broadcast "+
"ORDER BY a.no_broadcast; ";ResultSet rs= st.executeQuery(SQL); int baris = 1;while(rs.next()) {data[0] = baris++ +".";data[1] = rs.getString(1);data[2] = rs.getString(2);data[3] = rs.getString(3);data[4] = rs.getString(4);
modelBroadcast.addRow(data);}
rs.close();st.close();cn.close();
65. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setDataBroadcastByTahun()\n"+exc.getMessage());
66. } 67. }
68. private void setData(){69. int pilih = cmbCari.getSelectedIndex();70. switch(pilih){
case 0 : setDataInboxByTanggal();setDataBroadcastByTanggal();break;
case 1 : setDataInboxByBulan();setDataBroadcastByBulan();break;
case 2 : setDataInboxByTahun();setDataBroadcastByTahun();break;
default : setDataInboxByBulan();setDataBroadcastByBulan();break;
71. }72. }73. private void setTanggal(){74. tanggal = tgl.setTanggal(dcTanggal.getDate(),"yyyy-MM-dd");75. bulan = tgl.setTanggal(dcTanggal.getDate(),"yyyy-MM");76. tahun = tgl.setTanggal(dcTanggal.getDate(),"yyyy");77. }78. private String setPengirim(String no_id){79. try {
cn = k.openKoneksi();st = cn.createStatement();//No.","No. Broadcast","Judul","Jml Krm","WaktuString SQL = "SELECT nm_supir "+
"FROM supir "+"WHERE no_supir='"+no_id+"'; ";
String SQL2= "SELECT nm_plgn "+"FROM pelanggan "+ "WHERE no_plgn='"+no_id+"'; ";
ResultSet rs= st.executeQuery(SQL); int baris = 1;
if(rs.next()) {no_id = rs.getString(1);}else{rs = st.executeQuery(SQL2);if(rs.next()){
no_id = rs.getString(1);}}
rs.close();st.close();cn.close();
80. } catch(Exception exc) {System.err.println("ada kesalahan pada class masterPesan pd methode setPengirim()\n"+exc.getMessage());
81. }82. return no_id;83. }84. private String setStatusBalas(String bls){85. if(bls.equals("1")){
return "tdk terkirim";86. }87. else if(bls.equals("2")){
return "terkirim";88. }89. else{
return "ditunda";90. }91. }private void tblInboxMouseClicked(java.awt.event.MouseEvent evt) { 92. if(evt.getClickCount() == 2){//No.","No. Pesan","Nama Plg", "Judul", "Waktu", "Status
Bls"});int row = tblInbox.getSelectedRow();String no_inbox = tblInbox.getValueAt(row,1).toString();String pengirim = tblInbox.getValueAt(row,2).toString();String judul = tblInbox.getValueAt(row,3).toString();String waktu = tblInbox.getValueAt(row,4).toString();String statusBls= tblInbox.getValueAt(row,5).toString();data.dataInbox data = new data.dataInbox(pengirim,waktu,judul,statusBls,no_inbox);data.show();data.setLocationRelativeTo(null);
93. }94. }
95. private void tblBroadcastMouseClicked(java.awt.event.MouseEvent evt) { 96. if(evt.getClickCount() == 2){//No.","No. Broadcast","Judul","Jml Krm","Waktu"
int row = tblBroadcast.getSelectedRow();String no_broadcast = tblBroadcast.getValueAt(row,1).toString();String judul = tblBroadcast.getValueAt(row,2).toString();String waktu = tblBroadcast.getValueAt(row,4).toString();data.dataOutbox outbox = new data.dataOutbox(no_broadcast,waktu,judul);outbox.show();outbox.setLocationRelativeTo(null);
97. }98. }
99. private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) { 100. setTanggal();101. setData();102. }
103. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 104. dispose();105. } private javax.swing.table.DefaultTableModel modelInbox = (DefaultTableModel)
gui.getDefaultTabelModel(new String [] {"No.","No. Pesan","Pengirim", "Judul", "Waktu", "Status Bls"});
106. private javax.swing.table.DefaultTableModel modelBroadcast = (DefaultTableModel) gui.getDefaultTabelModel(new String [] {"No.","No. Broadcast","Judul","Jml Krm","Waktu"});
107. }
N. Listing laporanEkspedisi.java
1. package gunapratama;2. import java.io.File;3. import java.sql.*;4. import java.util.HashMap;5. import javax.swing.JOptionPane;6. import kontrol.Koneksi;7. import net.sf.jasperreports.engine.JRException;8. import net.sf.jasperreports.engine.JasperFillManager;9. import net.sf.jasperreports.engine.JasperPrint;10. import net.sf.jasperreports.engine.JasperReport;11. import net.sf.jasperreports.engine.util.JRLoader;12. import net.sf.jasperreports.view.JasperViewer;
13. public class lapBarangTerkirim extends javax.swing.JInternalFrame {
14. private String terkirim = "./laporan/laporan_pengiriman_terkirim.jasper";15. private String terproses = "./laporan/laporan_pengiriman_terproses.jasper";16. private String batal = "./laporan/laporan_pengiriman_batal.jasper";17. private String gambar = "./laporan/";18. private Koneksi k = new Koneksi();19. private Connection cn;20. private Statement st;21. private java.util.Date periode1,periode2;22. public lapBarangTerkirim() {23. initComponents();24. rdTerproses.setSelected(true);25. }26. public void cetakTerkirim() { 27. HashMap param = new HashMap(); 28. param.put("SUBREPORT_DIR",gambar);29. param.put("gambar",gambar);30. param.put("periode1",periode1);31. param.put("periode2",periode2);
32. try{cn = k.openKoneksi(); File report_file = new File(terkirim);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
33. }34. catch(JRException jre){
jre.printStackTrace();35. }36. catch(Exception e){
e.printStackTrace();37. }38. }39. public void cetakTerproses() {40. HashMap param = new HashMap(); 41. param.put("gambar",gambar);42. param.put("periode1",periode1);43. param.put("periode2",periode2);44. param.put("SUBREPORT_DIR",gambar);45. try{
cn = k.openKoneksi(); File report_file = new File(terproses);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn); JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
46. }47. catch(JRException jre){
jre.printStackTrace();48. }49. catch(Exception e){
e.printStackTrace();50. }51. }52. public void cetakBatal() {53. HashMap param = new HashMap(); 54. param.put("gambar",gambar);55. param.put("periode1",periode1);56. param.put("periode2",periode2);57. param.put("SUBREPORT_DIR",gambar);58. try{
cn = k.openKoneksi();
File report_file = new File(batal);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
59. }60. catch(JRException jre){
jre.printStackTrace();61. }62. catch(Exception e){
e.printStackTrace();63. }64. }65. private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) { 66. dispose();67. }
68. private void btnCetakActionPerformed(java.awt.event.ActionEvent evt) { 69. periode1 = dcPeriode1.getDate();70. periode2 = dcPeriode2.getDate();71. if(rdTerkirim.isSelected()){
cetakTerkirim();72. }73. else if(rdTerproses.isSelected()){
cetakTerproses();74. }75. else{
cetakBatal();76. }77. }
O. Listing fungsiCetak.java
1. package kontrol;
2. import java.io.File;3. import java.sql.*;4. import java.util.HashMap;5. import javax.swing.JOptionPane;6. import net.sf.jasperreports.engine.JRException;7. import net.sf.jasperreports.engine.JasperFillManager;8. import net.sf.jasperreports.engine.JasperPrint;9. import net.sf.jasperreports.engine.JasperReport;10. import net.sf.jasperreports.engine.util.JRLoader;11. import net.sf.jasperreports.view.JasperViewer;
12. public class fungsiCetak {
13. private String kendaraanJln = "./laporan/laporanKendaraanJalan.jasper";14. private String kendaraan = "./laporan/laporan_dataKendaraan.jasper";15. private String pelanggan = "./laporan/laporan_dataPelanggan.jasper";16. private String supir = "./laporan/laporan_dataSupir.jasper";17. private String status = "./laporan/laporan_statusKendaraan.jasper";18. private String so = "./laporan/laporan_so.jasper";19. private String pembayaran = "./laporan/cetak_pembayaran.jasper";20. private String lap_bayar = "./laporan/laporan_pembayaran.jasper";21. private String gambar = "./laporan/";
22. private Koneksi k = new Koneksi();23. private Connection cn;24. private Statement st;
25. public fungsiCetak() { 26. }
27. public void daftarKendaraan() {28. HashMap param = new HashMap(); 29. param.put("gambar",gambar);
30. try{cn = k.openKoneksi(); File report_file = new File(kendaraan);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
31. }32. catch(JRException jre){
jre.printStackTrace();33. }34. catch(Exception e){
e.printStackTrace();35. }36. }37. public void daftarPelanggan() {38. HashMap param = new HashMap(); 39. param.put("gambar",gambar);
40. try{cn = k.openKoneksi(); File report_file = new File(pelanggan);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn); JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
41. }42. catch(JRException jre){
jre.printStackTrace();43. }44. catch(Exception e){
e.printStackTrace();45. }46. }47. public void daftarSupir() {48. HashMap param = new HashMap(); 49. param.put("gambar",gambar);50. try{
cn = k.openKoneksi(); File report_file = new File(supir);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn); JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
51. }52. catch(JRException jre){
jre.printStackTrace();53. }54. catch(Exception e){
e.printStackTrace();55. }56. }57. public void daftarStatus() {58. HashMap param = new HashMap(); 59. param.put("gambar",gambar);60. try{
cn = k.openKoneksi();
File report_file = new File(status);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
61. }62. catch(JRException jre){
jre.printStackTrace();63. }64. catch(Exception e){
e.printStackTrace();65. }66. }67. public void laporanSO(String no_so) {68. HashMap param = new HashMap(); 69. param.put("gambar",gambar);70. param.put("no_so",no_so);
71. try{cn = k.openKoneksi(); File report_file = new File(so);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
72. }73. catch(JRException jre){
jre.printStackTrace();74. }75. catch(Exception e){
e.printStackTrace();76. }77. }78. public void cetakPembayaran(String no_so) {79. HashMap param = new HashMap(); 80. param.put("gambar",gambar);81. param.put("no_so",no_so);
82. try{cn = k.openKoneksi(); File report_file = new File(pembayaran);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
83. }84. catch(JRException jre){
jre.printStackTrace();85. }86. catch(Exception e){
e.printStackTrace();87. }88. }89. public void laporanPembayaran(java.util.Date periode1, java.util.Date periode2) {90. HashMap param = new HashMap(); 91. param.put("gambar",gambar);92. param.put("periode1",periode1);
93. param.put("periode2",periode2);
94. try{cn = k.openKoneksi();
File report_file = new File(lap_bayar);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn);
JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
95. }96. catch(JRException jre){
jre.printStackTrace();97. }98. catch(Exception e){
e.printStackTrace();99. }100. }101. public void laporanKendaraanJln(java.util.Date tanggal) {102. HashMap param = new HashMap(); 103. param.put("gambar",gambar);104. param.put("tanggal",tanggal);
105. try{cn = k.openKoneksi(); File report_file = new File(kendaraanJln);JasperReport jReport = (JasperReport)JRLoader.loadObject(report_file.getPath());JasperPrint jPrint = JasperFillManager.fillReport(jReport, param, cn); JasperViewer.viewReport(jPrint, false);JasperViewer.setDefaultLookAndFeelDecorated(true);
106. }107. catch(JRException jre){
jre.printStackTrace();108. }109. catch(Exception e){
e.printStackTrace();110. }}}
P. Listing server.java/* * server.java * * Created on October 26, 2007, 11:04 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */
package kontrol;
/** * * @author Andri */
import gunapratama.masterBroadcast;import javax.comm.*;import java.io.*;import java.util.*;import java.util.regex.Pattern;import java.sql.*;import javax.swing.JOptionPane;
public class server implements SerialPortEventListener{ private getSetting set = new getSetting(); private kontrol.Koneksi k = new kontrol.Koneksi(); private Connection cn; private Statement statment; private interfaceServer in = null; private String filePath = "setting/SettingPort.ini"; private masterBroadcast mstrBroadcast; private String nopesan="", noreg=""; /** Creates a new instance of server */ public server(interfaceServer in) { this.in = in; this.mstrBroadcast=mstrBroadcast; } public void setNomorPesan(String nopesan, String noreg){ this.nopesan = nopesan; this.noreg = noreg; } private void setStatusPesan(){ if(this.nopesan.toUpperCase().startsWith("BC")){ setStatusKirim(this.nopesan,this.noreg); } else{ setStatusBalas(this.nopesan); } } private void setStatusKirim(String nobc, String noreg){ try{
cn = k.openKoneksi(); statment = cn.createStatement(); String UpdateStatusKirim = "UPDATE kirim SET status_kirim='1' "+ "WHERE no_broadcast='"+nobc+"' && no_supir='"+noreg+"'; "; statment.executeUpdate(UpdateStatusKirim); statment.close(); cn.close(); } catch(Exception e ){ System.err.println("ada kesalahan pada class server pd methode setStatusKirim()\n"+e.getMessage()); } } private void setStatusBalas(String noib){ try{ cn = k.openKoneksi(); statment = cn.createStatement(); String UpdateStatusKirim = "UPDATE balas SET status_kirim='2' "+ "WHERE no_inbox='"+noib+"' "; statment.executeUpdate(UpdateStatusKirim); statment.close(); cn.close(); } catch(Exception e ){ System.err.println("ada kesalahan pada class server pd methode setStatusBalas()\n"+e.getMessage()); } } public void serialEvent(SerialPortEvent event){ try { // Apabila ada respons dari terminal, lakukan pembacaan while ( (n = input.available()) > 0) { n = input.read(bacaBuffer, bufferOffset, n); bufferOffset += n; // Jika ada respons "\15" (Line Feed Carriage Return), if ( (bacaBuffer[bufferOffset - 1] == 10) && (bacaBuffer[bufferOffset - 2] == 13)) { String buffer = new String(bacaBuffer, 0, bufferOffset - 2); // Berikan ke methode terimaAT terimaAT(buffer); bufferOffset = 0; } } } catch (IOException e) { } } private static int panjangKarakter = 0;
private static StringBuffer stringBuffer = null; private static String balikKarakter(String karakter){ panjangKarakter = karakter.length(); stringBuffer = new StringBuffer(panjangKarakter); for (int i = 0; (i + 1) < panjangKarakter; i = i + 2) { stringBuffer.append(karakter.charAt(i + 1)); stringBuffer.append(karakter.charAt(i)); } return new String(stringBuffer);
} private static char[] hexa; private static char[] karakter; private static String rubahKeHexa(int a){ char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D','E', 'F'};
karakter = new char[2]; a = a & 255; // Mengambil hanya 8 bit 255d = 11111111 b karakter[0] = hexa[a / 16]; // hasil pembagian dengan 16 karakter[1] = hexa[a % 16]; // sisa hasil pembagian dengan 16
return new String(karakter); } private static char[] gsmToAsciiMap; // GSM ==> ASCII private static String delapanKeTujuhBit(String pesan, int msglen){ int i, o, r = 0, rlen = 0, olen = 0, charcnt = 0; StringBuffer msg = new StringBuffer(160); int pesanlen = pesan.length(); String ostr; char c; for (i = 0; ( (i + 1) < pesanlen) && (charcnt < msglen); i = i + 2) // pengulangan hingga nilai terpenuhi { ostr = pesan.substring(i, i + 2); // mengambil dua digit Hexadesimal o = Integer.parseInt(ostr, 16); olen = 8; // berikan nilai olen = 8
o <<= rlen; // geser posisi semua bit ke kiri sebanyak rlen bit o |= r; // berikan sisa bit dari o ke r olen += rlen; // olen = olen + rlen
c = (char) (o & 127); // mendapatkan nilai o menjadi 7 bit o >>>= 7; // geser posis bit ke kanan sebanyak 7 bit olen -= 7;
r = o; // menaruh sisa bit dari o ke r. rlen = olen;
c = gsmToAsciiMap[c]; // rubah ke Text (kode ASCII) msg.append(c); // tambahkan ke msg charcnt++; // nilai charcnt ditambahkan 1
if (rlen >= 7) // jika rlen >= 7 { c = (char) (r & 127);
r >>>= 7; rlen -= 7; msg.append(c); charcnt++; } } if ( (rlen > 0) && (charcnt < msglen)) { msg.append( (char) r); } return msg.toString(); } private static char[] asciiToGsmMap; // ASCII ==> GSM private static String tujuhKeDelapanBit(String pesan){
StringBuffer msg = new StringBuffer(pesan);
StringBuffer encmsg = new StringBuffer(2 * 160); int bb = 0, bblen = 0, i; char o = 0, c = 0, tc;
for (i = 0; i < msg.length() || bblen >= 8; i++) { if (i < msg.length()) { c = msg.charAt(i); tc = asciiToGsmMap[c];
c = tc;
c &= ~ (1 << 7); bb |= (c << bblen); bblen += 7; }
while (bblen >= 8) { o = (char) (bb & 255); encmsg.append(rubahKeHexa(o)); bb >>>= 8; bblen -= 8; } } if ( (bblen > 0)) { encmsg.append(rubahKeHexa(bb)); } return encmsg.toString(); } static { final int lastindex = 255; gsmToAsciiMap = new char[lastindex + 1]; asciiToGsmMap = new char[lastindex + 1]; int i;
for (i = 0; i <= lastindex; i++) { gsmToAsciiMap[i] = asciiToGsmMap[i] = (char) i; } } private String infoSmsc = null; private int nilaiSmsc = 0; private int nomorSmsc = 0; private String panjangNotlp = null; private int nilaiPanjangNotlp= 0; private int nilaiNotlp = 0; private String Notlp = null; private String dapatNotlp = null; private String panjangPesan = null; private int nilaiPanjangPesan= 0; private String pesanPDU = null; private String pesan = null; private void PduTerimaSms(String smspdu) { int i = 0; try { infoSmsc = smspdu.substring(i, 2); // Mengambil nilai panjang informasi SMSC nilaiSmsc = Integer.parseInt(infoSmsc, 16); i = i + 4; // Format nomor dan nomor MSC dibuang nomorSmsc = i + (nilaiSmsc * 2) - 2; i = nomorSmsc + 2; // Nilai PDU Type dibuang panjangNotlp = smspdu.substring(i, i + 2); // Mengambil Panjang Nomor Telepon Pengirim nilaiPanjangNotlp = Integer.parseInt(panjangNotlp, 16); i = i + 4; // Format nomor pengirim dibuang nilaiNotlp = i + nilaiPanjangNotlp + nilaiPanjangNotlp % 2; Notlp = smspdu.substring(i, nilaiNotlp); // Nomor telepon pengirim dapatNotlp = balikKarakter(Notlp); i = nilaiNotlp; i = i + 18; // Nilai PID, DCS, dan SCTS dibuang panjangPesan = smspdu.substring(i, i + 2); // Mengambil Panjang Pesan SMS nilaiPanjangPesan = Integer.parseInt(panjangPesan, 16); i = i + 2; pesanPDU = smspdu.substring(i, smspdu.length()); pesan = delapanKeTujuhBit(pesanPDU, nilaiPanjangPesan); } catch (Exception e) {} }
private static StringBuffer pesanPDUKirim = null; private static int panjangNotlpTujuan = 0; private static int panjangPesanKirim = 0; private static String PduPesan = null; private static String PduKirimSms(String notlp, String pesan) { pesanPDUKirim = new StringBuffer(320); // 320 = 160 * 2 (panjang max) pesanPDUKirim.append("11"); // Tambahkan nilai PDU Type ---> Default = 11 pesanPDUKirim.append("00"); // Tambahkan nilai MR ---> Default = 00 panjangNotlpTujuan = notlp.length(); // Tambahkan nilai panjang nomor pengirim pesanPDUKirim.append(rubahKeHexa(panjangNotlpTujuan)); pesanPDUKirim.append("91"); // Tambah nilai format no. telepon --> format internasional = 91 if ( (notlp.length() % 2) == 1) // Tambahkan nomor telepon pengirim, Jika panjang notlp adalah ganjil { notlp = balikKarakter(notlp + "F"); } else // Jika panjang notlp adalah genap { notlp = balikKarakter(notlp); } pesanPDUKirim.append(notlp); pesanPDUKirim.append("00"); // tambahkan nilai PID ---> Default = 00 pesanPDUKirim.append("00"); // tambahkan nilai DCS ---> Default = 00 pesanPDUKirim.append("AA"); // tambahkan nilai VP = 4 hari ---> AA h panjangPesanKirim = pesan.length(); PduPesan = tujuhKeDelapanBit(pesan); pesanPDUKirim.append(rubahKeHexa(panjangPesanKirim)); pesanPDUKirim.append(PduPesan);
return new String(pesanPDUKirim);
} int bufferOffset = 0; byte[]bacaBuffer = new byte[100000]; int n; private String[] hasil; private int Index; private int panjangPDU; private int PDU = 0; private String respons;
private StringTokenizer st; private void terimaAT(String buffer){ st = new StringTokenizer(buffer, "\r\n"); // Menguraikan buffer berdasarkan karakter CRLF while (st.hasMoreTokens()) { respons = st.nextToken(); // mengambil token yang ada pada obyek
if(in != null){ in.responTerminal(respons,50); } try // Memproses respon yang diterima { if (respons.startsWith("RING")) // Jika Ada Telepon yang Masuk { kirimAT("ATH0" + "\15", 100); // Diputuskan } else if (respons.startsWith("+CMGS:")) // Jika pesan terkirim { setStatusPesan(); this.nopesan = ""; this.noreg = ""; } else if (respons.startsWith("+CMTI:")) // Jika ada Pesan Baru yang Masuk { Pattern pattern = Pattern.compile(","); hasil = pattern.split(respons.trim()); // split:mrubah jd array brdasarkan (",") Index = Integer.parseInt(hasil[1].trim()); kirimAT("AT+CMGR=" + Index + "\15", 1250); // Baca Pesan Baru yang Masuk } else if (respons.startsWith("+CMGR:")) // Jika ada Pesan Baru Yang dibaca { PDU = 1; } else if (respons.startsWith("+CMGL")) // Membaca Pesan Indox yang belum dibaca { Pattern pattern = Pattern.compile(":"); hasil = pattern.split(respons.trim()); pattern = Pattern.compile(","); hasil = pattern.split(hasil[1].trim()); Index = Integer.parseInt(hasil[0].trim()); PDU = 1; } else if (PDU == 1) { prosesTerimaSms(Index, respons.trim()); PDU = 0; } else {} } catch (Exception e) {} } } private void prosesTerimaSms(int Index, String Pdu) { try
{ PduTerimaSms(Pdu); // Rubah dari format PDU menjadi Format Teks } catch (Exception e) {} if (dapatNotlp.endsWith("F")) // Jika nomor telepon pengirim diakhiri dengan "F" { dapatNotlp = dapatNotlp.substring(0, dapatNotlp.length() - 1); // Buang karakter "F" } kirimAT("AT+CMGD=" + Index + "\15", 1250); // Hapus Pesan yang Telah dibaca if(in != null) { in.pesanSMSMasuk(dapatNotlp,pesan); } } SerialPort port = null; Enumeration portList = null; CommPortIdentifier portId = null; InputStream input; OutputStream output; String namaPort = ""; // Nama Port int nilaiBaud = 0; // Nilai Baud Rate int nilaiData = 0; // Nilai DATABITS int nilaiStop = 0; // Nilai STOPBITS int nilaiParitas = 0; // Nilai PARITY int nilaiFlow = 0; // Nilai FLOWCONTROL public void setTerminal() throws InterruptedException{ setNilaiPort(); //setting nilai port Enumeration portList = CommPortIdentifier.getPortIdentifiers(); // Mencari daftar port-port yang tersedia while (portList.hasMoreElements()) { CommPortIdentifier portId = (CommPortIdentifier)portList.nextElement();// ambil nilai port yang ditemukan if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){ // Hanya Port Serial yang diambil if (portId.getName().equals(namaPort)){ // Buka port berdasarkan port yang telah ditentukan try { in.responTerminal("Proses pembukaan port : "+namaPort,0); port = (SerialPort) portId.open("SMS", 5000); break; } catch (PortInUseException piue) { in.responTerminal("Port sedang digunakan oleh sytem lain",400); in.responTerminal("Gagal membuka port : "+namaPort,0); JOptionPane.showMessageDialog(null,"Port sedang digunakan oleh system lain !\n"+piue,"server",2); } } }
}
try { output = port.getOutputStream(); input = port.getInputStream(); } catch (IOException ioe) { in.responTerminal("gagal membuka stream",200); } try{ port.setSerialPortParams(nilaiBaud, nilaiData, nilaiStop, nilaiParitas); port.setFlowControlMode(nilaiFlow); port.notifyOnDataAvailable(true); // Menerima pemberitahuan jika ada data pada terminal in.responTerminal("hubungkan ke port : "+namaPort,800); in.responTerminal("Berhasil terhubung ke port : "+namaPort,300); in.responTerminal("proses setting terminal dengan port : "+namaPort,100); in.responTerminal("silahkan menunggu.....",1200); String cmgi = set.SettingATC("cmgi"); String cmgf = set.SettingATC("cmgf"); String cscs = set.SettingATC("cscs"); String cpms = set.SettingATC("cpms"); String cnmi = set.SettingATC("cnmi"); String cmgl = set.SettingATC("cmgl"); kirimAT("AT" + "\15", 1250); // Melakukan pengatur TERMINAL // Apakah terminal telah siap kirimAT(cmgi + "\15",1250); // Untuk mengetahui nama vendor terminal kirimAT(cmgf + "\15", 1250); // Menetapkan Format PDU Mode kirimAT(cscs + "\15", 1250); // Menetapkan Encoding kirimAT(cpms + "\15", 1250); // Membaca pesan dari memori hp kirimAT(cnmi + "\15", 1250); // Mendengarkan pesan secara Otomatis kirimAT(cmgl + "\15", 1250); // Membaca pesan yang belum dibaca yang ada di dalam Inbox
in.setButton(true); } catch (UnsupportedCommOperationException ucoe) { in.responTerminal("port tidak compatible",200); in.responTerminal("koneksi gagal",200); } try{ in.responTerminal("berhasil mensetting terminal",200); port.addEventListener(this); } catch (TooManyListenersException tmle) { in.responTerminal("gagal menambah EventListener pada port",200); } } private void kirimAT(String atCmd, int delay){ Boolean tungguDelay = new Boolean(true); boolean getDelay = false;
synchronized (tungguDelay){ // Membuat antrian proses try { output.write( (atCmd).getBytes()); // Menulis AT Commmand output.flush(); // Hapus OutputStream } catch (IOException e) {} try { tungguDelay.wait(delay); } catch (InterruptedException ie) { getDelay = true; } } }
public void prosesKirimSms(String notlp, String pesan) { //fungsi untuk membagi balasan 160 karakter int panjang = pesan.length(); String aaa=""; int x = panjang / 160; int y = panjang % 160; int karakter = 0; int halaman = 0; String kirim= ""; if(panjang>0){ if(y>0){ karakter = y; halaman = x+1; } else { karakter = 160; halaman = x; } for(int i=0; i<halaman; i++){ if(i+1==halaman){ kirim = pesan.substring(i*160).toString(); kirimSms(notlp,kirim); } else{ kirim = pesan.substring(i*160,i+1*160).toString(); kirimSms(notlp,kirim); } } } else{ System.out.print("Isi pesan kosong ! jadi tidak ada pengiriman"); } }
public void prosesTutup(){ try { if(port != null) port.close(); in.setButton(false); } catch(Exception e) { e.printStackTrace();
} }
public void setBaudRate(int kec){ nilaiBaud=kec; }
private void setNilaiPort() { String Paritas = "", Stop = "", Flow = ""; java.io.File file = new java.io.File(filePath); java.util.Vector read = null; if(!file.exists()) return; try { java.io.FileInputStream in = new java.io.FileInputStream(filePath); java.io.ObjectInputStream out= new java.io.ObjectInputStream(in); read = (java.util.Vector)out.readObject(); in.close(); out.close(); namaPort = read.get(0).toString(); nilaiBaud = Integer.parseInt(read.get(1).toString()); //nilai bit per second Flow = read.get(2).toString().toUpperCase(); Stop = read.get(4).toString(); Paritas = read.get(5).toString().toUpperCase(); } catch(Exception e) { JOptionPane.showMessageDialog(null,"Ada masalah dengan data vector port !\n"+e.toString(),"kesalahan pada class server setPort",2); }
if(read.get(3).toString().equals("5")) //nilai databits nilaiData = SerialPort.DATABITS_5; else if(read.get(3).toString().equals("6")) nilaiData = SerialPort.DATABITS_6; else if(read.get(3).toString().equals("7")) nilaiData = SerialPort.DATABITS_7; else if(read.get(3).toString().equals("8")) nilaiData = SerialPort.DATABITS_8; if (Paritas.equals("EVEN")) //nilai parity nilaiParitas = SerialPort.PARITY_EVEN; else if (Paritas.equals("ODD")) nilaiParitas = SerialPort.PARITY_ODD; else if (Paritas.equals("NONE")) nilaiParitas = SerialPort.PARITY_NONE; else if (Paritas.equals("MARK")) nilaiParitas = SerialPort.PARITY_MARK; else if (Paritas.equals("SPACE")) nilaiParitas = SerialPort.PARITY_SPACE; if (Stop.equals("1")) //nilai stop bits nilaiStop = SerialPort.STOPBITS_1; else if (Stop.equals("1,5")) nilaiStop = SerialPort.STOPBITS_1_5; else if (Stop.equals("2")) nilaiStop = SerialPort.STOPBITS_2; if (Flow.equals("NONE")) { //nilai flow control nilaiFlow = SerialPort.FLOWCONTROL_NONE;
} else if (Flow.equals("HARDWARE")) { nilaiFlow = SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT; } else if (Flow.equals("XOFF/XON")) { nilaiFlow = SerialPort.FLOWCONTROL_XONXOFF_IN | SerialPort.FLOWCONTROL_XONXOFF_OUT; } }
public void kirimSms(String notlp, String pesan){ //JOptionPane.showMessageDialog(null, pesan); try { String pesanPDUKirim = PduKirimSms(notlp.trim(), pesan.trim());
// Merubah pesan menjadi Format PDU kirimAT("AT+CMGS=" + (pesanPDUKirim.length() / 2) + "\15", 500); // Proses Mengirim Pesan kirimAT("00" + pesanPDUKirim, 2500); // Kirim Pesan Format PDU kirimAT("\032", 100); // Ctrl + Z // Berikan waktu sleep agar terminal siap kembali untuk mengirim pesan Thread.currentThread().sleep(10000); } catch (Exception e) { } } }
Q. Listing prosesTerimaSMS.java/* * prosesTerimaSMS.java * * Created on October 31, 2007, 2:07 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */
package kontrol;
/** * * @author Andri */
import java.sql.*;import java.util.regex.Pattern;import javax.swing.JOptionPane;
public class prosesTerimaSMS { private kontrol.Koneksi k = new kontrol.Koneksi(); private kontrol.ctrlText text = new kontrol.ctrlText(); private kontrol.setKode kode = new kontrol.setKode();
private kontrol.ctrlTanggal tgl = new kontrol.ctrlTanggal(); private Connection cn; private Statement st; private String noinbox="",noHP="",pesan="",balas=""; private String kode1="",kode2=""; private String[] hasil; private String no_reg="",no_supir="",judul=""; private String noperk=""; /** Creates a new instance of prosesTerimaSMS */ public prosesTerimaSMS() { } public void prosesTerimaSMS(){ try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT no_inbox,hp,pesan "+ "FROM inbox "+ "WHERE status_proses='0'; "; ResultSet rs= st.executeQuery(SQL); while(rs.next()) { this.noinbox = rs.getString(1); this.noHP = rs.getString(2); this.pesan = rs.getString(3); olahSMS(noHP,pesan); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode prosesTerimaSMS()\n"+exc.getMessage()); } } private void olahSMS(String hp, String pesan){ //parsing pesan dengan spasi Pattern pattern = Pattern.compile(" "); //membagi kalimat berdasarkan spasi hasil = pattern.split(pesan,2); this.judul = "Format SMS Salah"; this.no_reg = "Tidak dikenal"; this.noHP = hp; //cek apakah jml kata pesan < 2 if(hasil.length<2){ kode1 = "xxx"; kode2 = "XXX"; } else{ kode1 = hasil[0].trim().toString().toUpperCase(); kode2 = hasil[1].trim().toString().toUpperCase(); }
//proses format pesan if(cekPelanggan()){ if(kode1.equals("BAYAR")){//BAYAR<SPASI>NO.SO<SPASI>JUMLAH BAYAR pesanBayar(kode2); judul="Pesan Pembayaran"; } else if(kode1.equals("SARAN")){//Saran<SPASI>Isi balas = "Saran yang anda kirim akan kami perhatikan, Terima Kasih"; simpanDataBalas(balas,this.noHP); judul = "Saran Pelanggan"; } else if(kode1.equals("INFOPELANGGAN")){//Saran<SPASI>Isi balas = "format SMS untuk bayar : BAYAR<spasi>No.SO<spasi>Jml.Bayar\n" + "untuk cek tagihan : TAGIHAN <spasi>No.SO"; simpanDataBalas(balas,this.noHP); judul = "Info Pelanggan"; } else if(kode1.equals("TAGIHAN")){//TAGIHAN<SPASI>No.SO cariSisaTagihan(kode2); judul = "Tagihan"; } else{ judul = "Format sms tidak diketahui"; simpanDataBalas("Maaf, format sms tidak diketahui",this.noHP); } } else if(cekSupir()){//cek nomor supir if(kode1.equals("TERKIRIM")){//TERKIRIM<SPASI>NO.SJ pengirimanTerkirim(kode2); judul="Pengiriman Terkirim"; } else if(kode1.equals("GAGAL")){//GAGAL<SPASI>NO.SJ pengirimanGagal(kode2); judul="Pengiriman Gagal"; } else if(kode1.equals("TELAT")){//TELAT<SPASI>NO.SJ pengirimanTelat(kode2); judul="Pengiriman Telat"; } else if(kode1.equals("STATUS")){//STATUS<SPASI>NO PLAT<SPASI>POSISI<SPASI>STATUS statusMobil(kode2); judul="Update Status Kendaraan"; } else if(kode1.equals("INFOSUPIR")){//INFO<SPASI>SUPIR balas = "format SMS terkirim : TERKIRIM<spasi>No.SJ\n" + "untuk batal : BATAL<spasi>No.SJ\n" + "untuk status ekspedisi : STATUS<SPASI>NO.PLAT<SPASI>POSISI<SPASI>STATUS"; simpanDataBalas(balas,this.noHP); judul = "Info Supir"; } else{ judul = "Format sms tidak diketahui"; simpanDataBalas("Maaf, format sms tidak diketahui",this.noHP); } }
else{ simpanDataBalas(balas,this.noHP); } updateNoSupir(); } //================================ private void updateNoSupir(){ try{ Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String UpdateNoSupir = "UPDATE inbox SET no_supir='"+no_supir+"', judul='"+judul+"', status_proses='1' "+ "WHERE no_inbox='"+noinbox+"'; "; st.executeUpdate(UpdateNoSupir); st.close(); cn.close(); } catch(Exception e ){ System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode updateNoSupir()\n"+e.getMessage()); } } private void simpanDataBalas(String balas, String hp_tujuan){ String nobls = kode.setKodeBalas(noinbox); try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String simpanBalas = "INSERT INTO balas "+ "VALUES('"+noinbox+"','"+nobls+"','"+balas+"','"+hp_tujuan+"','0'); "; st.executeUpdate(simpanBalas); st.close(); cn.close(); } catch(Exception e) { System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode simpanDataBalas()\n"+e.getMessage()); } } private void kirimPesanAdmin(String pesan){ String hpadmin = ""; try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT nohp FROM admin; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { simpanDataBalas(pesan,rs.getString(1)); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); }
} private void pesanBalasanAdmin(String pesan){ String balasanAdmin = "1"; String filePath = "setting/SettingPort.ini"; java.io.File file = new java.io.File(filePath); java.util.Vector read = null; if(!file.exists()) return; try { java.io.FileInputStream in = new java.io.FileInputStream(filePath); java.io.ObjectInputStream out= new java.io.ObjectInputStream(in); read = (java.util.Vector)out.readObject(); in.close(); out.close(); balasanAdmin = read.get(6).toString(); } catch(Exception e) { System.err.println("Ada masalah dengan data vector port !\n"+e.toString()); } if(balasanAdmin.equals("1")){ kirimPesanAdmin(pesan); } } private boolean cekSupir(){ boolean hasil = false;
try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT no_supir "+ "FROM supir "+ "WHERE hp_spr='"+this.noHP+"'; "; JOptionPane.showMessageDialog(null,SQL); ResultSet rs= st.executeQuery(SQL); if(rs.next()) { no_supir= rs.getString(1); hasil = true; } else{ no_supir= "tidak dikenal"; balas = "Maaf nomor hp anda tidak terdaftar sebagai supir / pelanggan kami"; hasil = false; } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } private boolean cekPelanggan(){ boolean hasil = false; try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT no_plgn "+ "FROM pelanggan "+ "WHERE telp='"+this.noHP+"'; ";
ResultSet rs= st.executeQuery(SQL); if(rs.next()) { no_supir= rs.getString(1); hasil = true; } else{ no_supir= "tidak dikenal"; balas = "Maaf nomor hp anda tidak terdaftar sebagai PELANGGAN kami"; hasil = false; } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } private boolean cekSupirSJ(String nosj){ boolean hasil = true; try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT no_sj "+ "FROM detil_supir "+ "WHERE no_sj='"+nosj+"' && no_supir='"+this.no_supir+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { hasil = true; } else{ hasil = false; balas = "Maaf Nomor SJ salah, silahkan periksa kembali atau hubungi admin"; simpanDataBalas(balas,this.noHP); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } private boolean cekNoPlat(String noplat){ boolean hasil = true; try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT no_plat "+ "FROM kendaraan "+ "WHERE no_plat='"+noplat+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { hasil = true; } else{ hasil = false;
balas = "Maaf Nomor Plat Mobil yang anda masukan tidak tersedia di database kami"; simpanDataBalas(balas,this.noHP); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } private boolean cekMobilSupir(String noplat){ boolean hasil = true; try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT b.no_perk "+ "FROM detil_kendaraan a, kendaraan b "+ "WHERE a.no_perk=b.no_perk && ((b.no_plat='"+noplat+"'&&a.driver='"+no_supir+"')||(b.no_plat='"+noplat+"'&&a.co_driver='"+no_supir+"')) "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { this.noperk = rs.getString(1); hasil = true; } else{ hasil = false; balas = "Maaf Anda bukan supir pada kendaraan ini"; simpanDataBalas(balas,this.noHP); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } //================================ private void pengirimanTerkirim(String no_sj) { if(cekSupirSJ(no_sj)){ pesanPemberitahuanTerkirim(no_sj); setStatusSJ(no_sj); } } private void pengirimanGagal(String no_sj) { if(cekSupirSJ(no_sj)){ pesanPemberitahuanGagal(no_sj); setBatalSJ(no_sj); } } private void pengirimanTelat(String no_sj) { if(cekSupirSJ(no_sj)){ pesanPemberitahuanTelat(no_sj); }
} private void statusMobil(String pesan) { String hasil[] = pesan.split(" ",3); String noplat = hasil[0].toString(); String posisi = hasil[1].toString().toLowerCase(); String status = hasil[2].toString(); if(cekNoPlat(noplat)){ if(cekMobilSupir(noplat)){ setStatusMobil(posisi,status); } } } private void pesanBayar(String pesan){ String hasil[] = pesan.split(" ",2); String noso = hasil[0].toString(); String jumlah = hasil[1].toString();
double tagihan = jumlahTagihan(noso); double terbayar = jumlahTerbayar(noso, jumlah); double sisa = tagihan - terbayar;
String balas = "No.SO : "+noso+"\n" + "Tagihan : Rp."+text.Formating(text.pembulatan(tagihan+""))+"\n" + "Terbayar : Rp."+text.Formating(text.pembulatan(terbayar+""))+"\n" + "Sisa : Rp."+text.Formating(text.pembulatan(sisa+"")); simpanDataBalas(balas,this.noHP); } private void cariSisaTagihan(String noso){ String jumlah = hasil[1].toString();
double tagihan = jumlahTagihan(noso); double terbayar = jumlahTerbayar(noso, "0"); double sisa = tagihan - terbayar;
String balas = "No.SO : "+noso+"\n" + "Tagihan : Rp."+text.Formating(text.pembulatan(tagihan+""))+"\n" + "Terbayar : Rp."+text.Formating(text.pembulatan(terbayar+""))+"\n" + "Sisa : Rp."+text.Formating(text.pembulatan(sisa+"")); simpanDataBalas(balas,this.noHP); } //Pengiriman pesan private void pesanPemberitahuanTerkirim(String nosj){ String hp_tujuan = ""; try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT a.barang,a.berat,a.jurusan,c.telp "+ "FROM sj a, so b, pelanggan c "+ "WHERE a.no_so=b.no_so && b.no_plgn=c.no_plgn && a.no_sj='"+nosj+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { balas = "Pengiriman "+rs.getString(1)+" "+rs.getString(2)+"kg jurusan "+rs.getString(3)+" tlh sampai dg selamat"; hp_tujuan = rs.getString(4); }
simpanDataBalas("pesan berhasil diterima oleh server dan akan segera diberitahukan ke pelanggan",this.noHP);//simpan pesan balas untuk supir simpanDataBalas(balas,hp_tujuan);//simpan data balas ke pelanggan pesanBalasanAdmin(balas);//simpan data balas ke admin rs.close(); st.close(); cn.close(); } catch(Exception exc) { System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode pengirimanTerkirim()\n"+exc.getMessage()); } } private void pesanPemberitahuanGagal(String nosj){ String hp_tujuan = ""; try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT a.barang,a.berat,a.jurusan,c.telp "+ "FROM sj a, so b, pelanggan c "+ "WHERE a.no_so=b.no_so && b.no_plgn=c.no_plgn && a.no_sj='"+nosj+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { balas = "Pengiriman "+rs.getString(1)+" "+rs.getString(2)+"kg jurusan "+rs.getString(3)+" mengalami mslh, slhkn hbngi admin"; hp_tujuan = rs.getString(4); } simpanDataBalas("pesan berhasil diterima oleh server dan akan segera diberitahukan ke pelanggan",this.noHP); simpanDataBalas(balas,hp_tujuan); pesanBalasanAdmin(balas); rs.close(); st.close(); cn.close(); } catch(Exception exc) { System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode pengirimanTerkirim()\n"+exc.getMessage()); } } private void pesanPemberitahuanTelat(String nosj){ String hp_tujuan = ""; try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT a.barang,a.berat,a.jurusan,c.telp "+ "FROM sj a, so b, pelanggan c "+ "WHERE a.no_so=b.no_so && b.no_plgn=c.no_plgn && a.no_sj='"+nosj+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { balas = "Pengiriman "+rs.getString(1)+" "+rs.getString(2)+"kg jurusan "+rs.getString(3)+" mengalami keterlambatan, slhkn hbngi admin"; hp_tujuan = rs.getString(4); } simpanDataBalas("pesan berhasil diterima oleh server dan akan segera diberitahukan ke pelanggan",this.noHP); simpanDataBalas(balas,hp_tujuan);
pesanBalasanAdmin(balas); rs.close(); st.close(); cn.close(); } catch(Exception exc) { System.err.println("ada kesalahan pada class prosesTerimaSMS pd methode pengirimanTerkirim()\n"+exc.getMessage()); } } //Set Surat Jalan & Surat Order private void setStatusSJ(String nosj){ String tanggal = tgl.setTanggal(tgl.setActiveDate(),"yyyy-MM-dd"); setTanggal(nosj,tanggal); setStatusSOTerima(nosj); } private void setBatalSJ(String no_sj){ setStatusBatal(no_sj); String noso = cariNoSO(no_sj); if(cekNoSJ(noso)){ setStatusSOBatal(noso); } else{ setStatusSOTerima(no_sj); } } private void setTanggal(String no_sj, String tanggal){ try{ Connection con = k.openKoneksi(); Statement sta = con.createStatement(); String setSo = "UPDATE sj "+ "SET tgl_tiba='"+tanggal+"' "+ "WHERE no_sj='"+no_sj+"'; "; sta.executeUpdate(setSo); con.close(); sta.close(); } catch(Exception err){ JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+err,"Gagal",2); } } private void setStatusSOTerima(String nosj){//ubah status SO=terkirim jika semua pengiriman telah terporses boolean flag=true; String noso = cariNoSO(nosj); try{ Connection con = k.openKoneksi(); Statement sta = con.createStatement(); String statusSo = "SELECT a.no_so, b.no_sj "+//apakah ada sj yang masih terproses "FROM so a, sj b "+ "WHERE a.no_so=b.no_so && b.tgl_tiba='0000-00-00' && b.status='aktif' && a.no_so='"+noso+"' "; String setSo = "UPDATE so "+ "SET status='terima' "+ "WHERE no_so='"+noso+"'; ";
ResultSet rs = sta.executeQuery(statusSo); if(rs.next()){ flag = false; } if(flag){ sta.executeUpdate(setSo); } con.close(); sta.close(); } catch(Exception err){ JOptionPane.showMessageDialog(null,"Proses Simpan Gagal\n"+err,"Gagal",2); } } private void setStatusSOBatal(String no_so){ try{ Connection con = k.openKoneksi(); Statement sta = con.createStatement(); String Update = "UPDATE so "+ "SET status = 'batal' "+ "WHERE no_so = '"+no_so+"'; "; sta.executeUpdate(Update); con.close(); sta.close(); } catch(Exception err){ JOptionPane.showMessageDialog(null,"Proses Simpan Gagal pd class batalMuat methode setStatusSO \n"+err,"Gagal",2); } } private void setStatusBatal(String no_sj){ try{ Connection con = k.openKoneksi(); Statement sta = con.createStatement(); String Update = "UPDATE sj "+ "SET status = 'non aktif' "+ "WHERE no_sj = '"+no_sj+"'"; sta.executeUpdate(Update); con.close(); sta.close(); } catch(Exception err){ JOptionPane.showMessageDialog(null,"Proses Simpan Gagal pd class Penyelesaian methode setStatusSPS \n"+err,"Gagal",2); } } private void setStatusMobil(String posisi, String status){ try{ Connection con = k.openKoneksi();
Statement sta = con.createStatement(); String Update = "UPDATE detil_kendaraan "+ "SET posisi='"+posisi+"',status='"+status+"' "+ "WHERE no_perk='"+this.noperk+"'; "; sta.executeUpdate(Update); simpanDataBalas("Pesan Status Kendaraan telah di update",this.noHP); con.close(); sta.close(); } catch(Exception err){ JOptionPane.showMessageDialog(null,"Proses Simpan Gagal pd class Penyelesaian methode setStatusSPS \n"+err,"Gagal",2); } } private boolean cekNoSJ(String no_so){ try { Connection cn = k.openKoneksi(); Statement st = cn.createStatement(); String SQL = "SELECT no_sj "+ "FROM sj "+ "WHERE no_so='"+no_so+"' && status='aktif' && tgl_tiba!='0000-00-00'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { return false; } rs.close(); st.close(); cn.close(); } catch(Exception exc) { System.err.println("ada kesalahan pada class batalMuat pd methode cekBooking()\n"+exc.getMessage()); } return true; } private String cariNoSO(String nosj){ try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT no_so "+ "FROM sj "+ "WHERE no_sj='"+nosj+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { return rs.getString(1); } rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return ""; }
private double jumlahTagihan(String noso){ double hasil = 0; try { cn = k.openKoneksi(); st = cn.createStatement(); String SQL = "SELECT SUM(b.berat*b.harga) "+ "FROM so a, sj b "+ "WHERE a.no_so=b.no_so && a.no_so='"+noso+"'; "; ResultSet rs= st.executeQuery(SQL); if(rs.next()) { hasil = rs.getDouble(1); }
rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } private double jumlahTerbayar(String noso, String jumlah){ double hasil = 0; double jml = Double.parseDouble(jumlah+""); try { cn = k.openKoneksi();
st = cn.createStatement(); String SQL = "SELECT SUM(jumlah) "+ "FROM bayar "+ "WHERE no_so='"+noso+"'; "; JOptionPane.showMessageDialog(null, SQL); ResultSet rs= st.executeQuery(SQL); if(rs.next()) { hasil = rs.getDouble(1); } hasil = hasil + jml;
rs.close(); st.close(); cn.close(); } catch(SQLException exc) { System.err.println(exc.getMessage()); } return hasil; } }
R.
DOKUMEN-DOKUMEN
1. Buku Ekspedisi
2. Data Pelanggan
3. Foto-Foto Kendaraan PD. Guna Pratama
4. Foto- Foto Supir PD. Guna Pratama
5. Contoh Data Pribadi Supir