X – SYNC ( XML SYNCRONIZATION )
Transcript of X – SYNC ( XML SYNCRONIZATION )
X – SYNC ( XML SYNCRONIZATION )
PADA SISTEM PENJUALAN PERUSAHAAN
(Studi Kasus di PT. NKI Prembun)
SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik Jurusan Teknik Informatika
Disusun Oleh:
Henricus Eko Prabowo
035314004
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2007
X – SYNC ( XML SYNCRONIZATION )
IN COMPANY SELLING SYSTEM
(Case Study in PT. NKI Prembun)
A Thesis
Presented as Partial Fulfillment of the Rrequirements
to Obtain the Sarjana Teknik Degree
in Department of Informatics Technology
Created By :
Henricus Eko Prabowo
035314004
DEPARTMENT OF INFORMATICS TECHNOLOGY FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY YOGYAKARTA
2007
HALAMAN PERSETUJUAN
SKRIPSI
X – SYNC ( XML SYNCRONIZATION )
PADA SISTEM PENJUALAN PERUSAHAAN (Studi Kasus di PT. NKI Prembun)
Disusun Oleh :
Nama : Henricus Eko Prabowo
NIM : 035314004
Telah disetujui oleh : Dosen Pembimbing I, Ridowati Gunawan, S.Kom, M.T. Pada tanggal 09 November 2007
SKRIPSI
X – SYNC ( XML SYNCRONIZATION )
PADA SISTEM PENJUALAN PERUSAHAAN (Studi Kasus di PT. NKI Prembun)
Dipersiapkan dan disusun oleh :
Nama : Henricus Eko Prabowo
NIM : 035314004
Telah dipertahankan di depan panitia penguji
pada tanggal 12 Desember 2007
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji : Nama Lengkap Tanda Tangan
Ketua : Ridowati Gunawan, S.Kom., M.T. ....................
Anggota : Alb. Agung Hadhiatma, S.T., M.T. ....................
Anggota : St. Wisnu Wijaya, S.T., M.T. ....................
Yogyakarta, ............................................................ Fakultas Teknik Universitas Sanata Dharma Dekan, (Ir. Gregorius Heliarko SJ, SS, BST, MA, M.Sc.)
PERNYATAAN KEASLIAN KARYA
Dengan ini saya sebagai penulis menyatakan dengan sesungguhnya bahwa
judul, isi dan gagasan yang tertuang dalam skripsi ini belum pernah dipakai untuk
mendapatkan gelar kesarjanaan di tempat lain baik di Indonesia maupun di luar
negeri. Pemikiran, metode atau hasil penelitian orang lain yang diambil
disebutkan dengan jelas sebagai acuan. Hasil – hasil penelitian, jurnal, makalah,
buku, termasuk informasi di internet yang dipakai sebagai acuan dan bahan
literatur ditulis dalam daftar pustaka.
Yogyakarta, Desember 2007
Penulis
Henricus Eko Prabowo
HALAMAN PERSEMBAHAN
Karya ini kupersembahkan untuk:
...
Yesus-ku yang selalu memberikan anugerah, jalan, dan
senantiasa menemaniku terutama dikala aku merasa patah dan
putus asa,
...
Kedua orang tuaku yang telah membesarkan dan mendidik aku
dengan cinta dan kelembutan,
...
Kedua adikku dan saudara-saudaraku yang selalu menyayangi
dan memberikan semangat,
...
Adhek yang kucintai dan kusayangi,
...
Dan seluruh teman-temanku yang memberikan kehangatan
dalam hari-hariku.
HALAMAN MOTTO
Keberhasilan Terbesar Dalam Hidup Adalah Dapat Bangkit
Kembali Dari Kegagalan
Memahami Ilmu Pengetahuan dengan Kesungguhan Hati
akan Melahirkan Kebijaksanaan Dalam Diri
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Henricus Eko Prabowo Nomor Mahasiswa : 035314004 Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
“X-SYNC ( XML-SYNCRONIZATION ) PADA SISTEM PENJUALAN PERUSAHAAN”
Studi Kasus di PT. NKI Prembun beserta perangkat yang diperlukan ( bila ada ). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis. Demikian pernyataan ini yang saya buat dengan sebenar – benarnya. Dibuat di Yogyakarta Pada tanggal : 15 Februari 2008 Yang menyatakan
( Henricus Eko Prabowo )
ABSTRAKSI
Sebuah perusahaan dagang suatu ketika pasti akan berkembang menjadi perusahaan yang mempunyai cabang di beberapa lokasi. Sebuah sistem informasi yang tadinya hanya ditujukan untuk menangani data pada satu lokasi kantor akan menjadi tidak relevan lagi mengingat semakin besarnya volume transaksi yang terjadi dan lokasi yang terdistribusi. Sistem sinkronisasi ini dibuat untuk menangani siklus penjualan pada suatu perusahaan yang memiliki beberapa kantor cabang. Sistem ini dibangun menggunakan teknologi XML sebagai format pertukaran data yang akan menjadi sarana antara aplikasi Java Client dan Java Server untuk berkomunikasi. Sistem menggunakan MySQL Server sebagai databasenya sedangkan komunikasi dibangun diatas jaringan TCP / IP. Tujuan sistem ini adalah untuk efisiensi proses pertukaran data antar kantor yang terpisah secara geografis agar data pada setiap kantor dapat selalu sinkron.
Kata kunci: penjualan,java,socket, XML,internet.
ABSTRACT
Someday, The commerce company will develop become the company which has subdivision in some locations. The information system at the begining is only to handle data in one office will become not relevant again considering bigger and bigger the volume of transaction which is happened and location which is distributed. This synchonization system is made to handle the selling cyclus in the company which has some subdivision office. This system is built use the XML technology as the format of exchange data which will be the medium between Java client and java server application to communicate. The system use MySQL server as its database while communication is built base on TCP / IP network. The aim of this system is to efficiency the process of exchange data between separated office in a geography manner so that data in every office can always synchronous.
Kata kunci: Selling,java,socket, XML,internet.
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa
yang telah melimpahkan berkat-Nya sehingga penulis dapat menyelesaikan
Laporan Tugas Akhir ini. Penulisan tugas akhir ini ditujukan untuk memenuhi
salah satu syarat memperoleh gelar Sarjana Teknik Jurusan Teknik Informatika.
Terselesaikannya penulisan tugas akhir ini tidak lepas dari peran serta
beberapa pihak, baik secara langsung maupun secara tidak langsung. Oleh karena
itu, penulis ingin menyampaikan terima kasih kepada pihak-pihak yang telah ikut
membantu dalam penulisan tugas akhir ini, baik dalam memberikan bimbingan,
semangat, kasih sayang, kritikan, maupun saran, antara lain kepada:
1. Ir. Gregorius Heliarko, S.J., S.S., B.S.T., M.A., M.Sc, Selaku Dekan Fakultas
Teknik Universitas Sanata Dharma Yogyakarta.
2. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Ketua Jurusan Teknik
Informatika Universitas Sanata Dharma.
3. Ibu Ridowati Gunawan, S.Kom., M.T., selaku Dosen Pembimbing I, yang
telah banyak membantu terutama dalam memberikan bimbingan, dukungan,
dan penyediaan sarana yang mendukung, sehingga penulis dapat
menyelesaikan laporan tugas akhir ini.
4. Bapak St. Wisnu Wijaya, S.T., M.T. dan Bapak Alb. Agung Hadhiatma, S.T.,
M.T., selaku panitia penguji pada ujian pendadaran penulis.
5. Seluruh staff dan dosen pengajar di Universitas Sanata Dharma pada
umumnya dan Jurusan Teknik Informatika pada khususnya.
6. Pak Bele yang telah memberikan bantuannya terutama pada saat menjelang
dan pada saat pendadaran.
7. Kedua orang tua dan kedua adik penulis, yang selalu mendoakan, memberikan
semangat dan dorongan kepada penulis untuk dapat menyelesaikan penulisan
laporan tugas akhir ini.
8. Patricia Wenny Megarani, yang selalu ada untuk menemani dan memberikan
keceriaan terutama saat stress mulai datang.
9. Teman – teman terdekat dan seperjuangan yang selama kuliah selalu memberi
semangat, keceriaan dan kehangatan, Diean, Nug, Ciblek, Breg.
10. Teman – teman yang membantu dalam proses penyusunan tugas akhir, Abe,
Jansen, Arie, Pakdhe.
11. Teman – teman yang hadir saat penulis ujian pendadaran, Ruth, Diean, Breg,
Ipil, acied, Gepenk, Dhea, Nug, Anice, Hana, Hendro yang memberi pinjaman
jas.
12. Teman – teman jurusan Teknik Informatika angkatan 2003 yang telah
berjuang bersama, Albert CP (Abe), Jun (Odol), Bergas, Hendrik (Ciblek),
Elen, Jeje, Dion, Adwi, Danang, Heni, Angga Thukul, Marchel, Irvan,
Hendro, Diean, Isti, Nug, Acied, Kristina, Ruth, Ones, Sarah, Ina, Ratih, Gina,
Dea, Agus Gepenk, Devi, Anis, Evi Ephot, Dani, Wikan Erross, Linda, Risa,
Santhos, Amin, Arie, Albert K (Padhe), Winda, Fendi, Seno, Chandra, Hana,
David, Ticka, Mery, Monic, Yeyen, Ako, Nur, Rubin, Esther, Oscar, Ria,
Achel, serta teman – teman Teknik Informatika lainnya.
13. Pak Darmadi, yang selalu ramah dan menghibur penulis ketika memasuki area
laboratorium.
14. Dan seluruh pihak yang telah ikut ambil bagian dalam penyelesaian laporan
tugas akhir ini.
Penulis menyadari segala keterbatasan dalam menyelesaikan laporan
tugas akhir ini. Oleh karena itu, penulis ingin menyampaikan mohon maaf apabila
terdapat kesalahan dan kekurangan. Untuk itu, penulis mengharapkan kritik dan
saran yang membangun dari seluruh pihak yang membutuhkan laporan tugas akhir
ini.
Akhir kata, semoga laporan tugas akhir ini dapat memberikan manfaat
bagi siapa saja yang membutuhkannya. Atas segala perhatiannya dan
kerjasamanya, penulis ucapkan terima kasih.
Yogyakarta, Desember 2007
Penulis
DAFTAR ISI
HALAMAN JUDUL i
HALAMAN JUDUL ii
HALAMAN PERSETUJUAN iii
HALAMAN PENGESAHAN iv
PERNYATAAN KEASLIAN KARYA v
HALAMAN PERSEMBAHAN vi
HALAMAN MOTTO vii
ABSTRAKSI viii
ABSTRACT ix
KATA PENGANTAR x
DAFTAR ISI xiii
DAFTAR GAMBAR xviii
DAFTAR TABEL xxii
BAB 1. PENDAHULUAN
I. Latar Belakang Masalah 1
II. Rumusan Masalah 2
III. Batasan Masalah 2
IV. Tujuan dan Manfaat Penelitian 3
V. Metodologi Penelitian 4
VI. Sistematika Penulisan 5
BAB 2. LANDASAN TEORI
2.1. Sinkronisasi Database 7
2.2. Struktur Dasar XML 7
2.3. Struktur XML 8
2.4. Sintaks XML 9
2.5. Jenis Dokumen XML 13
2.6. Keuntungan dan Keunggulan XML 13
2.7. Pengertian Sistem Informasi 14
2.8. Pengertian Sistem Penjualan 16
2.9. Pengembangan Perangkat Lunak Berorientasi Objek 17
2.9.1. Konsep Objek 17
2.9.1.1. Object Oriented Analysis (OOA) 17
2.9.1.2. Object Oriented Design (OOD) 18
2.9.2. UML (Unified Modelling Languange)
2.9.2.1. Use Case
2.9.2.2. Class Diagram
2.9.2.3. Sequence Diagram
20
20
22
22
2.10. Perancangan Database 22
2.11. TCP / IP 23
2.12. Pemrograman Berorientasi Objek menggunakan Java 25
2.13. Pemrograman Client / Server dengan Java 37
2.13.1. Pemrograman Client / Server
2.13.2. Java Socket
2.13.3. Socket
2.13.4. Server Socket
37
38
39
39
2.14. MySQL 40
2.14.1. DDL
2.14.2. DML
41
41
2.15. Parser dan DOM 42
BAB 3. ANALISIS DAN DESAIN
3.1. Analisis Sistem 45
3.1.1 Gambaran Umum Sistem Lama 45
3.1.2. Orang Yang Terlibat Dalam Sistem 46
3.1.3. Analisis Masalah 46
3.1.4. Gambaran Umum Sistem Baru 47
3.1.5. Use Case Diagram 48
3.2. Desain Sistem 52
3.2.1. ER Diagram 52
3.2.1.1. Use Case Diagram Kantor Cabang 52
3.2.2.2. Use Case Diagram Kantor Pusat 53
3.2.2. Class Diagram 54
3.2.2.1. Class Diagram Kantor Cabang 54
3.2.2.2. Class Diagram Kantor Pusat 55
3.2.3. Sequence Diagram 56
3.2.3.1. Sequence Digram Kantor Cabang 56
3.2.3.2. Sequence Diagram Kantor Pusat 61
3.2.3.3. Sequence Diagram Penjualan 70
3.2.4. Perancangan Database 72
3.2.4.1. Desain Fisik Database 72
3.2.4.1.1. Kantor Cabang 72
3.2.4.1.2. Kantor Pusat 73
3.2.4.2. Struktur Tabel Database 74
3.2.5. Perancangan Proses Pertukaran Data 81
3.2.6. Perancangan Dokumen XML 83
3.2.7. Perancangan Input 87
3.2.7.1. Kantor Cabang 87
3.2.7.2. Kantor Pusat 93
BAB 4. IMPLEMENTASI SISTEM
4.1. Karakteristik Sistem 99
4.2. Perangkat Lunak yang Digunakan Dalam Pembuatan
Sistem 103
4.3. Implementasi Database 103
4.4. Setting Koneksi dari Java ke MySQL (koneksi.java) 105
4.5. Query dari Java ke MySQL (QueryHandler.java) 106
4.6. Aplikasi Client 106
4.6.1. Komunikasi Client Server (FileSender_Client.java) 106
4.6.2. Form Login (LoginDulu.java) 110
4.6.3. Form Menu Utama (MainMenu_cabang.java) 111
4.6.4. Form Data Customer (IframeDataCustomer.java) 113
4.6.5. Form Tambah Customer 116
(FrameTambahCustomer.java)
4.6.6. Form Data Barang (IframeDataBarang.java) 119
4.6.7. Form Penjualan (IFrameDataPenjualan.java) 123
4.6.8. Form Laporan (IFramelaporan.java) 125
4.7. Aplikasi Server 126
4.7.1. Komunikasi Client Server
(SocketConnectionServer.java) 126
4.7.2. Form Login (LginDulu.java) 130
4.7.3. Form Menu Utama (MainMenu_Pusat.java) 131
4.7.4. Form Data Customer (IFrameDataCustomer.java) 133
4.7.5. Form Tambah Customer
(FrameTambahCustomer.java) 133
4.7.6. Form Data Barang (IFrameDataBarang.java) 134
4.7.7. Form Tambah Barang (FrameTambahBarang.java) 136
4.7.8. Form Petugas (FramePetugas.java) 138
4.7.9. Form Kantor (FrameKantor.java) 140
4.7.10. Form Penjualan (IFramePenjualan.java) 142
4.7.11. Form Laporan (LaporanIFrame.java) 143
4.8. Tampilan Halaman Output 143
4.8.1. Nota Penjualan 143
4.8.2. Laporan Penjualan 144
BAB 5. ANALISIS HASIL
5.1. Hasil Pengujian Sistem 146
5.2. Kelebihan Sistem 146
5.3. Kekurangan Sistem 147
5.4. Prospek Pengembangan Sistem 147
BAB 6. PENUTUP
6.1. Kesimpulan 149
6.2. Saran 150
DAFTAR PUSTAKA
DAFTAR GAMBAR
Gambar 2. 1. Struktur XML 8
Gambar 2. 2. Diagram Hirarki XML 10
Gambar 2. 3. Simbol Entity Object 18
Gambar 2. 4. Simbol Interface Object 19
Gambar 2. 5. Simbol Control Object 20
Gambar 2. 6. Simbol Use-Case 21
Gambar 2. 7. Simbol Actor 21
Gambar 2. 8. Simbol Association 22
Gambar 2. 9. Struktur Pohon DOM 44
Gambar 3. 1. Use Case Diagram 48
Gambar 3. 2. Use Case Diagram Administrasi Cabang 49
Gambar 3. 3. Use Case Diagram Adminstrasi Kantor Pusat 50
Gambar 3. 4. Use Case Diagram Input Penjualan 51
Gambar 3. 5. ER Diagram Kantor Cabang 52
Gambar 3. 6. ER Diagram Kantor Pusat 53
Gambar 3. 7. Class Diagram Kantor Cabang 54
Gambar 3. 8. Class Diagram Kantor Pusat 55
Gambar 3. 9. Sequence Diagram Login Petugas 56
Gambar 3. 10. Sequence Diagram Maintain Customer : View Data 56
Gambar 3. 11. Sequence Diagram Maintain Customer : Edit Data 57
Gambar 3. 12. Sequence Diagram Maintain Customer : Insert Data 57
Gambar 3. 13. Sequence Diagram Cek Persediaan Barang 58
Gambar 3. 14. Sequence Diagram Buat Order Barang 58
Gambar 3. 15. Sequence Diagram Cek Pengiriman Barang 59
Gambar 3. 16. Sequence Diagram Buat Laporan 60
Gambar 3. 17. Sequence Diagram Login Petugas Pusat 61
Gambar 3. 18. Sequence Diagram Maintain Data Customer : View Data 61
Gambar 3. 19. Sequence Diagram Maintain Customer : Edit Data 62
Gambar 3. 20. Sequence Diagram Maintain Customer : Insert Data 62
Gambar 3. 21. Sequence Diagram Maintain Data Petugas : Insert Petugas 63
Gambar 3. 22. Sequence Diagram Maintain Data Petugas : Edit Petugas 63
Gambar 3. 23. Sequence Diagram Maintain Data Petugas : Delete
Petugas 64
Gambar 3. 24. Sequence Diagram Maintain Data Kantor : Insert Kantor 65
Gambar 3. 25. Sequence Diagram Maintain Data Kantor : Edit Kantor 66
Gambar 3. 26. Sequence Diagram Cek Order 67
Gambar 3. 27. Sequence Diagram Maintain Data Barang 68
Gambar 3. 28. Sequence Diagram Cetak Laporan 69
Gambar 3. 29. Sequence Diagram Lihat Data Customer 70
Gambar 3. 30. Sequence Diagram Cek Persediaan Barang 70
Gambar 3. 31. Sequence Diagram Input Penjualan 71
Gambar 3. 32. Struktur Fisik Database Cabang 72
Gambar 3. 33. Struktur Fisik Database Pusat 73
Gambar 3. 34. Proses Pertukaran Data 82
Gambar 3. 35. User Interface Cabang Login Petugas 87
Gambar 3. 36. User Interface Menu Utama Kantor Cabang 88
Gambar 3. 37. User Interface Cabang Data Customer – Data Umum 88
Gambar 3. 38. User Interface Cabang Data Customer – Lokasi Tempat
Tinggal 89
Gambar 3. 39. User Interface Cabang Tambah Customer – Data Pribadi 89
Gambar 3. 40. User Interface Cabang Tambah Customer – Data Tempat
Tinggal 90
Gambar 3. 41. User Interface Cabang Data Barang – Data Umum 90
Gambar 3. 42. User Interface Cabang Data Barang – Order Barang 91
Gambar 3. 43. User Interface Cabang Data Barang – Pengiriman 91
Gambar 3. 44. User Interface Cabang Penjualan 92
Gambar 3. 45. User Interface Cabang Laporan 92
Gambar 3. 46. User Interface Login Pusat 93
Gambar 3. 47. User Interface Menu Utama Kantor Pusat 93
Gambar 3. 48. User Interface Data Customer Pusat – Data Umum 94
Gambar 3. 49. User Interface Data Customer Pusat – Lokasi Tempat
Tinggal 94
Gambar 3. 50. User Interface Tambah Customer Pusat – Data Pribadi 95
Gambar 3. 51. User Interface Tambah Customer Pusat – Data Tempat
Tinggal 95
Gambar 3. 52. User Interface Data Barang Pusat – Data Umum 96
Gambar 3. 53. User Interface Data Barang Pusat – Proses Order 96
Gambar 3. 54. User Interface Tambah Barang – Data Umum 97
Gambar 3. 55. User Interface Tambah Barang – Info Stok 97
Gambar 3. 56. User Interface Data Kantor 98
Gambar 3. 57. User Interface Data Petugas 98
Gambar 3. 58. User Interface Penjualan Pusat 99
Gambar 3. 59. User Interface Laporan Pusat 99
Gambar 3. 60. Output Nota Penjualan 100
Gambar 3. 61. Output Laporan Penjualan 101
Gambar 4. 1. Form Login Aplikasi Cabang 110
Gambar 4. 2. Form Menu Utama Aplikasi Cabang 111
Gambar 4. 3. Form Data Customer Aplikasi Cabang 114
Gambar 4. 4. Form Tabel Search Customer Aplikasi Cabang 115
Gambar 4. 5. Form Tambah Customer Aplikasi Cabang 117
Gambar 4. 6. Form Data Barang Tab Data Umum Aplikasi Cabang 119
Gambar 4. 7. Form Data Barang Tab Order Barang Aplikasi Cabang 120
Gambar 4. 8. Form Data Barang Tab Pengiriman Aplikasi Cabang 122
Gambar 4. 9. Form Data Penjualan Aplikasi Cabang 123
Gambar 4. 10. Form Laporan Aplikasi Cabang 125
Gambar 4. 11. Form Menu Utama Aplikasi Server 131
Gambar 4. 12. Form Data Barang Tab Data Umum Aplikasi Server 134
Gambar 4. 13. Form Data Barang Tab Proses Order Barang Aplikasi
Server 135
Gambar 4. 14. Form Tambah Data Barang Aplikasi Server 136
Gambar 4. 15. Dialog Tambah Group Aplikasi Server 137
Gambar 4. 16. Dialog Tambah Kategori Aplikasi Server 137
Gambar 4. 17. Dialog Tambah Kelompok Aplikasi Server 137
Gambar 4. 18. Form Data Petugas Aplikasi Server 138
Gambar 4. 19. Dialog Input Petugas Aplikasi Server 140
Gambar 4. 20. Frame Data Lokasi Kantor Aplikasi Server 141
Gambar 4. 21. Dialog Input Data Kantor Aplikasi Server 142
Gambar 4. 22. Print Out Nota Penjualan 144
Gambar 4. 23. Print Out Laporan Penjualan 145
DAFTAR TABEL
Tabel 2. 1. Operator Aritmatika dalam Java 27
Tabel 2. 2. Operator Aritmatika yang lain dalam Java 27
Tabel 2. 3. Operator Relasional dalam Java 27
Tabel 2. 4. Operator Kondisional dalam Java 28
Tabel 2. 5. Operator Shift dalam Java 28
Tabel 2. 6. Operator Bitwise dalam Java 29
Tabel 2. 7. Operator Assignment dalam Java 30
Tabel 2. 8. Operator Precedence dalam Java 45
Tabel 3. 1. Customer ( Cabang ) 74
Tabel 3. 2. Tabel Customer ( Pusat ) 74
Tabel 3. 3. Tabel Lokasi_Tempat_Tinggal (Cabang & Pusat) 75
Tabel 3. 4. Tabel Jual ( Cabang ) 75
Tabel 3. 5. Tabel Jual ( Pusat ) 76
Tabel 3. 6. Tabel Detil_Penjualan ( Cabang & Pusat ) 76
Tabel 3. 7. Tabel Barang( Cabang & Pusat ) 76
Tabel 3. 8. Tabel Group( Cabang & Pusat ) 77
Tabel 3. 9. Tabel Kategori ( Cabang & Pusat ) 77
Tabel 3. 10. Tabel Kelompok ( Cabang & Pusat ) 78
Tabel 3. 11. Tabel Info_Stok ( Cabang ) 78
Tabel 3. 12. Tabel Info_Stok ( Pusat ) 78
Tabel 3. 15. Tabel Satuan ( Cabang & Pusat ) 79
Tabel 3. 16. Tabel OrderBarang ( Cabang ) 80
Tabel 3. 17. Tabel OrderBarang ( Pusat ) 80
Tabel 3. 18. Tabel Detil_Order ( Cabang & Pusat ) 80
Tabel 3. 19. Tabel Petugas ( Pusat ) 81
Tabel 3. 20. Tabel LokasiKantor ( Pusat ) 81
Tabel 4. 1. Fungsi Menu File Aplikasi Cabang 111
Tabel 4. 2. Fungsi Menu Master Aplikasi Cabang 112
Tabel 4. 3. Fungsi Menu Transaksi Aplikasi Cabang 112
Tabel 4. 4. Fungsi Menu Help Aplikasi Cabang 112
Tabel 4. 5. Fungsi Menu File Aplikasi Server 132
Tabel 4. 6. Fungsi Menu Master Aplikasi Server 132
Tabel 4. 7. Fungsi Menu Transaksi Aplikasi Server 132
Tabel 4. 8. Fungsi Menu Help Aplikasi Server 132
1
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Pada perusahan dagang terlebih perusahaan dengan banyak cabang,
keunggulan komputer dibutuhkan untuk meningkatkan kinerja perusahaan.
Dengan kemudahan dan kecepatan akses informasi, maka manajemen
perusahaan dapat menentukan langkah - langkah yang harus diambil secara
cepat dan tepat. Dari sisi penjualan, penggunaan teknologi komputer
diharapkan dapat meningkatkan kualitas pelayanan dan kuantitas penjualan.
Pada penulisan tugas akhir ini, diambil studi kasus di PT. NKI
Prembun. Perusahaan ini adalah perusahaan yang bergerak di bidang
perdagangan dan pendistribusian onderdil kendaraan bermotor dan alat –
alat pertanian. Lokasi perusahaan ini adalah di kota Prembun, Jawa Tengah.
Perusahaan ini adalah perusahaan yang memiliki beberapa cabang, tetapi
sebagai sebuah perusahaan yang cukup besar ternyata pencatatan data
penjualannya masih dilakukan secara manual yaitu dengan menggunakan
Microsoft Excel. Dengan cara ini, terdapat banyak kelemahan misalnya
ketidaktepatan informasi stok barang dan arus peneriman kas.
Pengorganisasian data juga akan mengalami kendala dengan semakin
banyaknya file yang disimpan, resiko data hilang juga akan semakin besar.
Dengan model perusahaan yang tersebar seperti ini, permasalahan
lain yang muncul adalah kantor pusat akan mengalami kesulitan dalam
memonitor data – data penjualan dan customer di masing – masing cabang.
2
Berdasarkan kenyataan tersebut, penulis tertarik untuk mengambil
topik “X – Sync ( XML Syncronization ) Pada Sistem Penjualan
Perusahaan”.
1.2 Rumusan Masalah
Dalam penulisan tugas akhir ini ada dua permasalahan, yaitu :
1. Bagaimana menganalisis, mendesain, dan mengimplementasikan
Sistem Informasi Siklus Penjualan.
2. Bagaimana cara agar aplikasi pada kantor cabang dan aplikasi pada
kantor pusat dapat saling bertukar data dan kemudian menyimpan data
tersebut ke database.
1.3 Batasan Masalah
Dalam penulisan tugas akhir ini, batasan masalah meliputi hal – hal sebagai
berikut :
1. Perangkat lunak yang digunakan adalah Java sebagai bahasa
pemrograman, XML sebagai format pertukaran data dan MySQL
sebagai database servernya.
2. Sistem yang dibuat menitikberatkan pada aspek pertukaran data antar
aplikasi dalam format XML.
3. Sistem yang dibangun hanya menangani transaksi penjualan tunai
perusahaan.
4. Sistem berjalan pada jaringan komputer dengan protokol TCP / IP.
3
5. Sistem tidak menangani masalah yang disebabkan oleh fisik jaringan
dan oleh pihak ketiga.
1.4 Tujuan dan Manfaat Penelitian
Tujuan dari penulisan Tugas Akhir “X – Sync ( XML Syncronization )
Sinkronisasi Data Berbasis XML Pada Sistem Penjualan Perusahaan” ini
adalah :
1. Mengimplementasikan sistem penjualan berbasis komputer dengan
menggunakan Java dan MySQL pada perusahaan distribusi
menggunakan tahap rekayasa perangkat lunak berorientasi obyek.
2. Mengimplementasikan pertukaran data antar aplikasi client server Java
dengan menggunakan format data XML.
Manfaat dari pembuatan sistem ini adalah :
Bagi pengguna sistem, akan dicapai efisiensi dan kemudahan dalam proses
pengiriman dan penerimaan data antar kantor karena dilakukan secara on-
line. Efisiensi dan kecepatan tercapai karena proses sinkronisasi dilakukan
setiap ada perubahan data di database sehingga file XML yang dibuat
berukuran kecil dan tidak membebani jaringan.
4
1.5 Metodologi Penelitan
Metodologi yang akan digunakan dalam penyusunan tugas akhir
ini adalah sebagai berikut :
1. Peninjauan (survey) kebutuhan program.
Pengumpulan data – data dan informasi dari perusahaan yang
bersangkutan mengenai proses penjualan dan siklus pendapatan yang
dibutuhkan untuk pembuatan sistem yang baru.
2. Studi literatur, meliputi :
a. Pendalaman konsep.
Memahami dan mendalami konsep tentang XML dan aplikasinya,
juga tentang cara pembuatan dokumen XML dari suatu database di
kantor pusat untuk kemudian dipertukarkan dengan database di
kantor cabang.
b. Mempelajari perangkat lunak yang terlibat.
Mempelajari konsep – konsep bahasa pemrograman Java untuk
membangun suatu aplikasi bisnis dengan tampilan GUI (graphical
User Interface). Pemahaman tentang pengaksesan database server
melalui Java, sehingga diperoleh data yang dibutuhkan dan
kemudian mengkonversi data tersebut ke dalam format XML.
3. Pengembangan perangkat lunak dengan metode pengembangan
perangkat lunak berorientasi objek (Whitten, 2004), dengan langkah-
langkah sebagai berikut:
a. Analisis dan Desain Sistem Berorientasi Obyek
5
1. Pembuatan Use Case Diagram, Class Diagram, dan Sequence
Diagram.
2. Perancangan database.
3. Perancangan user interface.
b. Implementasi
1.6 Sistematika Penulisan
Sistematika yang dipakai dalam penulisan tugas akhir ini terbagi dalam
enam bagian dengan garis besarnya sebagai berikut :
BAB 1 PENDAHULUAN
Berisi tentang latar belakang, rumusan masalah, batasan masalah,
tujuan penulisan, metodologi penelitian dan sistematika penulisan.
BAB 2 LANDASAN TEORI
Bab ini berisi landasan teori yang dipakai untuk pembahasan
penulisan tugas akhir.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
Bab ini merupakan bab yang membahas tentang analisis dan
perancangan sistem yang akan dibuat.
BAB 4 IMPLEMENTASI SISTEM
Bab ini berisi implementasi tiap tampilan atau antarmuka dari
rancangan yang dibuat pada bab sebelumnya dan menganalisis
program pada masing – masing tampilan antarmuka.
6
BAB 5 ANALISIS IMPLEMENTASI
Bab ini bersi tentang analisis implementasi dari aplikasi yang
dibuat dan berisi tentang kelebihan dan kekurangan program.
BAB 6 KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang menjawab tujuan tugas akhir dan
berisi saran yang berguna untuk pengembangan program.
7
BAB 2
Landasan Teori
2.1. Sinkronisasi Database
Sinkronisasi database adalah proses yang melibatkan dua atau
lebih database yang dilakukan untuk menjaga agar pertukaran informasi atau
data antar database dapat mencapai suatu fungsi sesuai dengan aturan yang
telah ditetapkan.
2.2. Struktur dasar XML
XML ( eXtensible Markup Languange ) adalah markup languange
yang menyediakan format untuk mendeskripsikan data terstruktur atau
terurut. Fasilitas yang disediakan XML ini membuat isi ( content ) sebuah
data menjadi lebih mudah dimengerti. Seperti halnya HTML, XML jug
menggunakan elemen yang ditandai tag pembuka ( diawali dengan ‘<’ dan
diakhiri dengan ‘>’ ), tag penutup ( diawali dengan ‘</’ diakhiri ‘>’ ) dan
atribut elemen ( parameter yang dinyatakan dalam tag pembuka ). Hanya
bedanya, HTML mendefinisikan dari awal tag dan atribut yang dipakai di
dalamnya, sedangkan pada XML user bisa menggunakan tag dan atribut
sesuai dengan kehendak user.
Tag – tag dalam XML adalah case sensitive, sehingga tag <Buku>
berbeda dengan tag <buku>. Jika dalam penulisan program di dalam XML
sama dengan eberapa tanda yang dipakai di XML, maka penulisan program
akan memanfaatkan entity reference untuk mengkodekan beberapa karakter.
8
2.3. Struktur dasar XML
Struktur dasar dokumen XML pada gambar 2.1 berikut :
<?xml version=”1.0” encoding=”iso-8859-1”?>
<!-Dokumen Ini menjelaskan tentang isi buku-->
<Buku
Judul=”Pengenalan XML”
Penulis=”Moh Junaedi”>
<pengantar/>
<Bab No=”1”>Berkenalan Dengan XML</Bab>
<Bab No=”2”>Lebih Dekat Dengan XML</Bab>
<Bab No=”3”>Elemen - Elemen XML</Bab>
. . . .
</Buku>
Gambar 2.1 Struktur XML
Sebuah struktur atau dokumen XML terdiri dari bagian yang
disebut dengan node. Node – node itu adalah :
1. Root node adalah node yang melimgkupi keseluruhan dokumen.
Dalam satu dokumen XML hanya ada satu root node. Node – node
yang lainnya berada dalam root node.
2. Element node adalah bagian dari dokumen XML yang ditandai dengan
tag pembuka dan tag penutup, atau bisa juga sebuah tag tunggal
elemen kosong seperti<anggota nama=”Henry”/>. Root node biasa
juga disebut root element.
Comment Standard Header
Attribute
root Node
Elemen Kosong
9
3. Atribute node adalah node yang termasuk nama dan nilai atribut ditulis
pada tag awal sebuah elemen atau pada tag tunggal.
4. Text node adalah text yang merupakan isi dari sebuah elemen, ditulis
diantara tag pembuka dan tag penutup.
5. Comment node adalah baris yang tidak dieksekusi oleh parser.
2.4. Sintaks XML
Dibandingkan dengan HTML, XML lebih banyak aturan. Kalau
user menulis sebuah dokumen HTML, beberapa kesalahan penulisan masih
ditolerir. Ketika menulis suatu dokumen XML, sintaks – sintaks yang ada
tidak boleh dilanggar, sintaks – sintaks tersebut antara lain :
1. Heading standard untuk Document XML
Setiap membuat dokumen XML diawali dengan heading standard
XML. Formatnya adalah sebagai berikut :
<?xml version=”1.0” encoding=”iso-8859-1”?>
Penjelasan : xml version=”1.0” berarti bahwa file xml ini dibuat sesuai
dengan aturan versi 1.0 dan encoding menunjukkan bahwa file XML
ini ditulis berdasarkan kode iso-8859-1.
2. Dokumen XML harus memiliki root tag
Sebuah dokumen XML yang baik harus memiliki root tag. Yaitu tag
tag yang melingkupi keseluruhan dari dokumen. Tag – tag yang lain,
disebut child tag, berada di dalam root membentuk hirarki. Formatnya
adalah sebagai berikut :
10
<root> <child> <subchild></subchild> </child> </root>
Bentuk Mengenai diagram hirarki XML tampak pada Gambar 2.2
Gambar 2.2 Diagram Hirarki XML ( Moh Junaedi, Pengantar XML,Ilmu Komputer.com, hlm 8 )
3. Tag pada XML harus lengkap berpasangan.
Pada HTML beberapa elemen tidak harus berpasangan. Contoh berikut
merupakan kesalahan yang masih dapat ditoleransi oleh HTML.
<p> paragraph pertama
<p> paragraph kedua
Dalam XML, beberapa elemen harus berpasangan. User harus menulis
tag pembuka dan penutup untuk setiap tag yang dibuat. Format
penulisan elemen berpasangan adalah sebagai berikut :
<p> paragraph pertama</p>
<p> paragraph kedua</p>
Root Element
Child element 1 Child element 3 Child element 2 Child element 4
Subchild element
Subchild element
11
Tag tunggal hanya diperbolehkan untuk elemen kosong. Contoh
penulisan elemen kosong adalah sebagai berikut :
<anggota nama=”Henry”/>
4. XML membedakan antara huruf besar dan huruf kecil.
Pada XML, <tanggal> berbeda dengan <Tanggal>. Tag pembuka dan
tag penutup harus sama susunan huruf besar dan kecilnya. Format
penulisannya adalah sebagai berikut :
<contoh>Penulisan yang salah</Comtoh>
<contoh>Penulisan betul</contoh>
5. Penyarangan tag harus benar.
Penulisan tag pada XML harus mengikuti aturan Last In First Out
(LIFO). Pada XML user tidak diperbolehkan membuat tag yang saling
bersilangan seperti format berikut :
<p><b>Huruf tebal</p><b>
Tetapi harus disusun seperti format berikut :
<p><b>Huruf tebal</b></p>
Bila tetap dipaksakan juga, browser akan menampilkan pesan error.
6. XML mempertahankan spasi seperti apa adanya.
Berbeda dengn HTML, XML menampilkan spasi persis seperti data
yang ditulis. Misalnya dalam HTML terdapat kalimat sebagai berikut :
Kami pergi bersama
Akan ditampilkan sebagai berikut ini :
Kami pergi bersama
12
Dalam contoh kalimat “Kami pergi bersama” meskipun digunakan
spasi beberapa kali, tetap akan dianggap sebagai satu spasi. Sedangkan
pada XML akan ditampilkan sama persis dengan kalimat asalnya.
7. Nilai atribut harus diletakkan diantara tanda petik.
Seperti HTML, XML memiliki atribut. Nilai atribut harus diletakkan
diantara dua tanda petik. Tanda petik yang digunakan bisa tanda petik
tunggal ataupun tanda petik ganda. Contoh format penulisannya
sebagai berikut :
<pesan dari=”Henry”> atau
<pesan dari=’Henry’>
8. Penamaan tag dan atribut.
Nama tag bisa terdiri dari huruf, angka dan underscore(“_”). Karakter
awal nama tag harus berupa huruf atau underscore(“_”), tidak diawali
dengan kata xml atau XML, (misalnya:<xmlstring>) dan tidak
mengandung spasi. Aturan penamaan atribut sama dengan aturan
penamaan tag.
9. Menyisipkan komentar
Pada bahasa pemrograman atau scripting, dikenal adanya komentar (
comment ). Komentar adalah baris yang tidak dieksekusi oleh
compiler, browser, atau parser. Untuk menyisipkan komentar pada
dokumen XML caranya adalah sebagai berikut :
<!-- Baris ini tidak akan dieksekusi -->
13
2.5. Jenis Dokumen XML
Ada dua jenis dokumen XML, yaitu dokumen XML yang well
formed dan dokumen XML yang valid. Dokumen XML yang well formed
adalah dokumen yang memenuhi standar dan aturan sintaks pada XML.
Dokumen XML yang valid adalah yang memenuhi aturan DTD.
DTD adalah suatu aturan yang mendefinisikan bagaimana seharusnya
struktur isi suatu dokumen XML. Sesuai namanya DTD berfungsi untuk
mendefinisikan tipe dokumen XML. Pada saat mempelajari salah satu bahas
pemrograman atau scripting, user diperkenalkan dengan deklarasi variabel,
deklarasi fungsi dan deklarasi tipe data. Serupa dengan itu, DTD
mendefinisikan struktur dokumen XML dengan daftar elemen yang
digunakan.
Di dalam tulisan ini yang akan digunakan adalah dokumen XML
yang well formed.
2.6. Keuntungan dan Keunggulan XML
Berikut adalah keuntungan dan keunggulan XML :
1. Ekstensibilitas
Artinya bebas menentukan tag – tag sendiri sesuai dengan kebutuhan.
2. Memisahkan data dengan presentasi
Merupakan keunggulan lain dari XML, yaitu pemisahan antara
data dan presentasi. Maksudnya, sebuah data itu hanya berisi data saja,
tidak ada informasi lain mengenai cara menampilkannya. Sebuah
14
dokumen XML merupakan data yang menerangkan data itu sendiri.
Tag – tag pada XML menjelaskan mengenai isi datanya. Berbeda
dengan HTML yang mencampurkan antara data dan presentasi data
tersebut. Misalnya ada tag di HTML yang menjelaskan bagaimana
browser menampilkan data untuk ditulis miring.
Contoh :
<i>dono</i>
Namun tag di XML menjelaskan data itu sendiri.
<nama>dono</nama>
Di contoh HTML, tidak diketahui apakah dono adalah suatu kota,
julukan atau nama seseorang. Namun di XML, sangat jelas bahwa dono
merupakan nama.
3. Penyederhanaan Aplikasi
Saat ini, banyak aplikasi memiliki ukuran besar dan menghabiskan
sumber daya memori. Biasanya aplikasi pengolah kata maupun gambar
harus mengakomodasikan berbagai format file. XML, yang terbuka,
akan memudahkan aplikasi untuk mengolah data.
2.7. Pengertian Sistem Informasi
Sistem adalah kumpulan obyek atau komponen yang saling
berinteraksi menjadi satu kesatuan dan bekerjasama sesuai dengan aturan
untuk mencapai tujuan tertentu. Sistem sendiri dapat dibagi menjadi sistem
yang lebih kecil yang disebut dengan subsistem – subsistem dengan maksud
untuk memudahkan penanganan suatu masalah.
15
Karakteristik dari suatu sistem adalah ( Jogiyanto.H M, 1995 ) :
1. Komponen sistem
Suatu sistem terdiri dari sejumlah komponen yang saling berinteraksi
yang artinya saling bekerjasama membentuk satu kesatuan.
2. Batas sistem
Merupakan daerah yang membatasi antara suatu sistem dengan sistem
yang lainnya atau lingkungan luarnya.
3. Lingkungan luar sistem
Lingkungan luar dapat bersifat menguntungkan dan dapat juga bersifat
merugikan dimana keduanya dapat mempengruhi operasi sistem.
4. Penghubung sistem
Merupakan media penghubung antara satu subsistem dengan subsistem
yang lainnya sehingga dapat berintegrasi membentuk satu kesatuan.
Melaui penghubung ini memungkinkan sumber – sumber daya mengalir
dari satu subsistem ke subsistem yang lain. Keluaran dari suatu subsistem
akan menjadi masukan untuk subsistem yang lain melalui penghubung.
5. Masukan sistem
Adalah sesuatu yang dimasukkan ke dalam sistem yang berupa
maintenance input supaya sistem dapat beroperasi untuk memproses
sinyal - sinyal inputan sehingga dihasilkan keluaran.
6. Keluaran sistem
Merupakan hasil dari inputan sistem yang diolah dan diklarifikasikan
menjadi keluaran yang berguna.
16
7. Pengolah sistem
Merupakan pengolah inputan sehingga menjadi keluaran yang berguna.
8. Sasaran sistem
Suatu sistem mempunyai tujuan atau sasaran dimana sasaran dari sistem
ini sangat menentukan sekali masukan yang dibutuhkan sistem dan
keluaran yang akan dihasilkan sistem.
Informasi adalah data yang telah disaring dan diorganisasikan oleh
suatu proses dan untuk maksud tertentu menjadi sebuah bentuk yang berarti
bagi penerimanya dan bermanfaat dalam pengambilan keputusan pada saat
ini ataupun pada saat yang akan datang. Data adalah fakta mentah mengenai
orang, kejadian, dan hal-hal penting dalam organisasi. Tiap fakta dengan
sendirinya secara relatih tidak ada artinya ( Whitten, 2004).
Sistem Informasi adalah suatu sistem di dalam organisasi yang
mempertemukan kebutuhan pengolahan transaksi harian, mendukung
operasi, bersifat managerial dan kegiatan strategi dari suatu organisasi dan
menyediakan pihak luar tertentu dengan laporan-laporan yang diperlukan
(Robert Leitch dan Roscoe Davis, 1983).
2.8. Pengertian Sistem Penjualan
Penjualan merupakan suatu sistem yang menyediakan informasi
penjualan harian, minguan, bulanan, sampai dengan tahunan dari masing –
masing jenis barang dan supplier secara rinci. Sistem penjualan ini terkait
erat dengan sistem persediaan barang, karena setiap penjualan akan
17
mengurangi persediaan barang. Proses yang membentuk sistem penjualan
adalah :
2.8.1. Prosedur order penjualan
2.8.2. Prosedur pencatatan penjualan
2.8.3. prosedur stok barang
Informasi yang umumnya diperlukan oleh manager dari kegiatan
transaksi penjualan adalah :
1. Jumlah pendapatan penjualan menurut jenis produk atau kelompok
produk selama jangka waktu tertentu.
2. Jumlah harga produk yang dijual selama jangka waktu tertentu.
2.9. Pengembangan Perangkat Lunak Berorientasi Objek
2.9.1. Konsep Objek
Pendekatan berorientasi obyek pada pengembangan sistem
didasarkan pada konsep tentang obyek yang telah ada pada sebuah
lingkungan sistem.
Obyek sendiri dapat diartikan sesuatu yang dapat dilihat, disentuh
atau dirasakan, dan user menyimpan data serta mencatat perilaku
mengenai sesuatu itu.
2.9.1.1.Object Oriented Analysis (OOA)
Sebuah teknik model driven yang mengintegrasikan data dan
proses ke dalam konstruksi yang disebut obyek. Model ini berisikan
18
gambar-gambar yang mengintruksikan obyek-obyek sistem dari
berbagai macam perspektif, seperti struktur, behavior, dan interaksi
obyek.
2.9.1.2.Object Oriented Design (OOD)
Pendekatan yang digunakan untuk menentukan solusi
perangkat lunak dalam hal menggabungkan obyek, attribute, dan
metodenya.
Pada Object Oriented Design (OOD) ini dibagi menjadi tiga obyek
yaitu:
1. Entity Object
Adalah sebuah obyek yang berisikan informasi yang berhubungan
dengan bisnis yang bersifat menetap dan disimpan pada sebuah
database. Entity object memuat informasi tentang tentang obyek
tersebut yang disebut attribute. Entity object bersifat
menetap/persisten yang dapat diartikan bahwa obyek tersebut
“aktif/hidup” setelah mengeksekusi sebuah progam dan disimpan
dalam database.
Simbol Entity Object:
: Object Entit y
Gambar 2.3 Simbol Entity Object
19
2. Interface Object
Adalah sebuah obyek yang menyediakan media di mana
pengguna dapat berkomunikasi dengan sistem. Pengguna dapat
berkomunikasi menggunakan antarmuka/interface.
Tugas dari Interface Entity adalah:
1. Menterjemah inputan dari pengguna ke dalam informasi sehingga dapat
dipahami oleh sistem dan digunakan untuk memproses peristiwa bisnis.
2. Mengambil data yang berkaitan dengan peristiwa bisnis dan menterjemahkan
data tersebut kepada pengguna.
Simbol Interface Object:
: Inte rface Object
Gambar 2.4 Simbol Interface Object
3. Control Object
Adalah obyek yang berisi aplikasi logika yang bukan
merupakan tanggung jawab entity object.
Simbol Control Object
20
: Control Obj ect
Gambar 2.5 Simbol Control Object
2.9.2. UML (Unified Modelling Language)
UML merupakan konfensi/perjanjian tentang sekumpulan
modeling digunakan untuk menspesifikan dan menjelaskan sustem
software dan hardware dalam bentuk objek (Whitten, 2004). UML tidak
menemukan sebuah metode untuk mengembangkan sistem tetapi hanya
berupa notasi.
UML mendefinisikan diagram-diagram berikut:
1. Use-Case
Use-Case adalah permodelan yang mengidentifikasikan dan
menggambarkan fungsi-fungsi sistem dengan menggunakan alat (Whitten,
2004). Use-Case Diagram ini menggambarkan interaksi sistem, eksternal
sistem dengan actor. Dengan kata lain menggambarkan secara grafis siapa
yang menggunakan sistem dan dengan cara apa pengguna mengharapkan
untuk berinteraksi dengan sistem.
21
Komponen-komponen use-case diagram adalah:
1. Use-Case menggambarkan langkah-langkah yang secara tindakan
saling terkait (skenario), baik terotomatisasi maupun secara manual,
untuk tujuan melengkapi satu tugas bisnis tunggal(Whitten, 2004).
Gambar 2.6 Simbol Use-Case
2. Actor adalah segala sesuatu yang perlu berinteraksi dengan sistem
untuk pertukaran informasi (Whitten,2004).
Gambar 2.7 Simbol Actor
3. Association (Gabungan) adalah hubungan antara pelaku/actor
dengan use case di mana terjadi interaksi di antara mereka (Whitten,
2004).
UseCase
Actor
22
Gambar 2.8 Simbol Association
2. Class Diagram
Merupakan gambar grafis mengenai struktur objek statis dari suatu
sistem, menunjukan kelas-kelas objek yang menyusun sebuah sistem dan juga
hubungan antar kelas objek tersebut (Whitten, 2004).
3. Sequence Diagram
Menjelaskan interaksi objek yang disusun dalam suatu urutan waktu.
Diagram ini secara khusus berasosiasi dengan use case.
Sequence Diagram memperlihatkan tahap demi tahap apa yang seharusnya
terjadi untuk menghasilkan sesuatu didalam use case (Whitten, 2004).
2.10. Perancangan Database
Merancang database merupakan suatu hal yang sangat penting.
Kesulitan utama dalam merancang database adalah bagaimana merancang
struktur database sehingga database dapat memfasilitasi keperluan saat ini
dan saat mendatang. Perancangan model konseptual akan menunjukkan
entity dan relasinya berdasarkan proses yang diinginkan oleh organisasi.
Actor UseCase
23
Ketika menentukan entity dan relasinya dibutuhkan analisis data tentang
informasi yang ada dalam spesifikasi mendatang (Harianto, 1994).
Pada perancangan model konseptual penekanan tinjauan dilakukan
pada struktur data dan relasi antar file. Pendekatan yang dilakukan pada
perancangan model konseptual adalah menggunakan model data relational.
Terdapat dua buah teknik yaitu :
- Teknik Normalisasi
- Teknik Entity Relationship
Di laporan ini hanya akan dibahas teknik entity relationship karena
teknik entity relationship merupakan teknik yang sederhana karena relasi
tidak perlu diuji secara terus menerus. Pada teknik ini hubungan antara file
direlasikan dengan kunci relasi ( relation key), yang merupakan kunci utama
dari masing-masing file.
2.11. TCP / IP
TCP / IP bekerja pada 2 layer network yang berbeda, TCP
(Transfer control Protokol) bekerja pada layer 4 (Transport layer) dan IP
(Internet Protocol) yang bekerja pada layer 3(network layer). Prinsip kerja
IP adalah melakukan pemotongan data menjadi paket – paket yang
berukuran lebih kecil. Paket data ini akan ditransmisikan dari satu komputer
ke komputer lain tanpa tergantung pada media komuniksi yang digunakan.
Paket data akan dilepaskan dalam jaringan komputer dan akan mencari
sendiri rute yang harus ditempuh ke komputer tujuannya, sehingga ketika
24
sampai ke tujuan sangat dimungkinkan bahwa data yang sampai tidak urut.
Tipe koneksi seperti ini disebut dengan connectionless. Komputer Pengirim
tidak akan mengetahui apakah data sampai di tujuan atau tidak.
Untuk membantu mencapai komputer tujuan, setiap komputer dalam
jaringan TCP/IP harus diberikan IP address. IP address harus unik untuk setiap
komputer, tetapi tidak menjadi halangan bila sebuah komputer mempunyai
beberapa IP address. IP address terdiri atas 8 byte data yang mempunyai nilai
dari 0-255 yang sering ditulis dalam bentuk [xx.xx.xx.xx] (xx mempunyai nilai
dari 0-255).
Berbeda dengan InterNet Protokol (IP), TCP mempunyai prinsip
kerja seperti "virtual circuit" pada jaringan telepon. TCP lebih mementingkan
tata-cara dan keandalan dalam pengiriman data antara dua komputer dalam
jaringan. Dalam hal ini, TCP mengatur bagaimana cara membuka hubungan
komunikasi, jenis aplikasi apa yang akan dilakukan dalam komunikasi tersebut
(misalnya mengirim e-mail, transfer file dsb.) Di samping itu, juga mendeteksi
dan mengoreksi jika ada kesalahan data. TCP mengatur seluruh proses koneksi
antara satu komputer dengan komputer yang lain dalam sebuah jaringan
komputer. TCP inilah yang akan melakukan pengecekan apakah data yang
dikirimkan melalui IP telah sampai ke penerima dengan benar dan lengkap, dan
kemudian menyusun ulang paket – paket data yang tidak berurutan menjad
sebuah data yang lengkap. Bentuk hubungan TCP adalah full duplex, karena
adanya multiplexing yang dilakukan.
25
2.12. Pemrograman Berorientasi Object Menggunakan Java
Java merupakan pemrograman berorientasi objek (OOP), dengan
kata lain rancangan java merupakan suatu teknik yang memusatkan
rancangan pada data (objek) dan interface.
1. Objek
Objek merupakan perangkat lunak yang berisikan variabel serta kumpulan
dari metode-metode.
2. Message
Objek melakukan interaksi serta komunikasi menggunakan message atau
pesan.
3. Class
Class merupakan bentuk dasar yang mendefiniskan variabel serta meode-
metode dari semua objek.
Sintaks-sintaks Dasar Bahasa Pemrograman JavaTM adalah :
1. Variabel dalam Java
a) Tipe Variabel
Variabel merupakan container yang digunakan untuk menyimpan
suatu nilai pada sebuah program dengan tipe tertentu. Pada dasarnya
ada 2 macam tipe variabel data dalam bahasa Java, yakni tipe primitif
dan tipe reference. Adapun tipe primitif meliputi:
1. boolean
2. byte
3. short
26
4. int
5. long
6. char
7. float
8. double
Sedangkan tipe variabel reference, meliputi tipe class, tipe array, dan
tipe interface. Ada pula tipe variabel data yang khusus yang disebut
dengan null types, namun variabel dalam Java tidak akan pernah
memiliki tipe null ini.
b) Konstanta
Variabel dalam Java bisa dijadikan konstanta, sehingga nilainya tidak
akan dapat diubah-ubah dengan mendeklarasikan variabel tersebut
sebagai variabel final. Berikut cara pendeklarasian variabel yang
dijadikan konstanta:
final <tipe data> <nama variabel> = <nilai>
2. Operator dalam Java
a) Operator Aritmatika
Sama halnya dengan semua bahasa pemrograman, Java menyediakan
operator-operator aritmatika untuk manipulasi variabel data numerik.
Tabel penggunaan dan jenis operator aritmatika dalam Java bisa dilihat
di bawah ini:
Operator Penggunaan Deskripsi + op1 + op2 Menambahkan op1 dengan op2 - op1 - op2 Mengurangkan op1 dengan op2 * op1 * op2 Mengalikan op1 dengan op2
27
/ op1 / op2 Membagi op1 dengan op2 % op1 % op2 Menghasilkan sisa hasil bagi antara
op1 dengan op2
Tabel 2.1 Operator Aritmatika dalam Java
Selain operator di atas, operator berikut juga termasuk dalam operator
aritmatika:
Operator Penggunaan Deskripsi ++ op++ nilai op dinaikkan 1 setelah dilakukan
operasi pada op ++ ++op nilai op dinaikkan 1 sebelum
dilakukan operasi pada op -- op-- nilai op diturunkan 1 setelah
dilakukan operasi pada op -- --op nilai op diturunkan 1 sebelum
dilakukan operasi pada op - -op mengubah nilai op menjadi
negatifnya, jika op positif maka menjadi negatif, jika op negatif maka menjadi positif
Tabel 2.2 Operator Aritmatika yang lain dalam Java
b) Operator Relasional
Operator relasional dalam Java dapat digunakan untuk
membandingkan dua variabel data, lebih lengkapnya dapat dilihat
dalam tabel berikut:
Operator Penggunaan Deskripsi > op1 > op2 menghasilkan true jika nilai op1 lebih
besar dari nilai op2 < op1 < op2 menghasilkan true jika nilai op1 lebih
kecil dari nilai op2 >= op1 >= op2 menghasilkan true jika nilai op1 lebih
besar atau sama dengan nilai op2 <= op1 <= op2 menghasilkan true jika nilai op1 lebih
kecil atau sama dengan nilai op2 == op1 == op2 menghasilkan true jika nilai op1
28
sama dengan dari nilai op2 != op1 != op2 Menghasilkan true jika nilai op1
tidak sama dengan nilai op2
Tabel 2.3 Operator Relasional dalam Java
c) Operator Kondisional
Operator kondisional dalam Java terdiri dari 6 jenis sebagaimana
digambarkan dalam tabel berikut:
Operator Penggunaan Deskripsi && op1 && op2 menghasilkan true jika op1 dan
op2, keduanya bernilai true || op1 || op2 menghasilkan true jika op1 atau
op2, salah satunya bernilai true ! !op1 menghasilkan true jika op1 bernilai
false & op1 & op2 bitwise AND, menghasilkan true
jika op1 dan op2, keduanya bernilai true
| op1 | op2 bitwise OR, menghasilkan true jika op1 atau op2, salah satunya bernilai true
^ op1 ^ op2 menghasilkan true jika salah satu di antara op1 atau op2 bernilai true, namun tidak keduanya
Tabel 2.4 Operator Kondisional dalam Java
d) Operator Shift
Operator shift dalam Java digunakan untuk manipulasi bit. Operator ini
digunakan untuk menggeser bit-bit sesuai yang diinginkan. Ada 3
operator shift dalam Java, yaitu:
Operator Penggunaan Deskripsi >> op1 >> op2 menggeser bit op1 ke kanan sejauh
op2 << op1 << op2 menggeser op1 ke kiri sejauh op2
>>> op1 >>> op2 Menggeser bit op1 ke kanan sejauh
29
op2
Tabel 2.5 Operator Shift dalam Java
e) Operator Bitwise
Operator bitwise dalam Java juga digunakan untuk manipulasi bit.
Ada 4 operator bitwise dalam Java, yaitu:
Operator Penggunaan Deskripsi & op1 & op2 bitwise AND | op1 | op2 bitwise OR ^ op1 ^ op2 bitwise XOR ~ ~op1 bitwose complement
Tabel 2.6 Operator Bitwise dalam Java
f) Operator Assignment
Operator assignment dalam Java digunakan untuk memberikan sebuah
nilai ke sebuah variabel. Operator assignment hanya ‘=’, namun selain
itu dalam Java dikenal beberapa shortcut assignment operator yang
penting, yang digambarkan dalam tabel berikut:
Operator Penggunaan Deskripsi += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2 |= op1 |= op2 op1 = op1 | op2 ^= op1 ^= op2 op1 = op1 ^ op2
<<= op1 <<= op2 op1 = op1 << op2 >>= op1 >>= op2 op1 = op1 >> op2
>>>= op1 >>>= op2 op1 = op1 >>> op2
Tabel 2.7 Operator Assignment dalam Java
30
g) Urutan Precedence Operator
Adapun urutan operator precedence dalam Java, secara lengkap
digambarkan dalam tabel berikut:
postfix operators [] . (params) expr++ expr-- unary operators ++expr –expr +expr –expr ~ ! creation or cast new (type)expr multiplicative * / % additive + - shift << >> >>> relational < > <= >= istanceof equality == != bitwise AND & bitwise XOR ^ bitwise OR | logical AND && logical OR || conditional ? : assignment = += -= *= /= %= &= ^= |= <<=
>>= >>>=
Tabel 2.8 Operator Precedence dalam Java
3. Control Flow dalam Java
a) Operasi Pengulangan
2. while
Operasi while digunakan untuk mengeksekusi sebuah blok secara
berulang selama memenuhi kondisi tertentu. Sintaks
penggunaannya sebagai berikut:
while (ekspresi) { // ........................ }
Jadi, selama ekspresi menghasilkan nilai true, pernyataan yang ada
di dalam blok akan dieksekusi terus menerus.
31
3. do-while
Sama halnya dengan operasi while, operasi do-while digunakan
untuk mengeksekusi sebuah blok secara berulang sampai tidak
memenuhi kondisi tertentu. Pada penggunaan while, ekspresi
diperiksa pada saat awal operasi perulangan, jadi ada kemungkinan
pernyataan di dalam blok tidak pernah dieksekusi. Pada
penggunaan do-while, ekspresi tidak diperiksa pada awal operasi
perulangan, jadi operasi do-while dapat menjalankan operasi
perulangan pertama kali tanpa ekspresi apapun. Sintaks
penggunaannya sebagai berikut:
do { // ........................ } while (ekspresi);
4. for
Operasi for digunakan untuk mengeksekusi sebuah blok secara
berulang dalam sebuah range nilai tertentu. Sintaks penggunaannya
sebagai berikut:
for (inisialisasi; terminasi; increment) { // ........................ }
Inisialisasi dalam operasi for merupakan ekspresi yang dieksekusi
pada saat pengeksekusian for. Terminasi digunakan untuk
menentukan kapan operasi perulangan akan dihentikan. Increment
merupakan ekspresi yang akan dieksekusi setiap selesai melakukan
satu kali perulangan. Ketiga bagian di dalam for bersifat opsional,
32
jadi dapat dikosongkan. Namun jika ketiga bagiab tersebut kosong,
akan menyebabkan terjadinya perulangan tanpa henti (loop
forever).
b) Operasi Kondisional
2. if – else
Operasi if digunakan untuk mengeksekusi sebuah blok jika
memenuhi sebuah kondisi tertentu. Sintaks penggunaannya
sebagai berikut:
if (ekspresi) { // ........................ }
Jika kondisi bernilai true, pernyataan di dalam blok akan
dieksekusi. Jika menggunakan if-else, sintaks penggunaannya
sebagai berikut:
if (kondisi) { // ...... pernyataan 1 .... } else { // ...... pernyataan 2 .... }
Jika kondisi bernilai true, pernyataan 1 akan dijalankan.
Sebaliknya, jika kondisi bernilai false, pernyataan 2 yang akan
dijalankan. Jika menggunakan if-elseif-else, sintaks
penggunaannya sebagai berikut:
if (kondisi1) { // ...... pernyataan 1 .... } else if (kondisi2) { // ...... pernyataan 2 .... } else {
// ...... pernyataan 3 ....
33
}
3. switch-case
Operator switch digunakan untuk mengeksekusi sebuah blok jika
memenuhi sebuah kondisi tertentu. Sintaks penggunaannya sebagai
berikut:
switch (ekspresi) { case (kondisi1): // ..... pernyataan 1 ..... break; case (kondisi2): // ..... pernyataan 2 ..... break; case (kondisin): // ..... pernyataan n ..... break; default: // ..... pernyataan default ..... break; }
Kondisi default bersifat opsional, artinya boleh ada atau tidak ada,
yang berfungsi sebagai else, pada kasus if-else dengan banyak
percabangan, yakni ketika ditemukan kondisi yang tidak memenuhi
semua pengecekan kondisi sebelumnya.
Pernyataan break pada operator switch di atas, digunakan untuk
terminasi (menghentikan) eksekusi pernyataan di dalam blok
switch, namun bersifat opsional. Jika pada suatu case tidak
diberikan pernyataan break, proses pengecekan akan diteruskan
pada case berikutnya.
34
c) Break, Label, Return, Continue
Operator break ada 2 macam, yakni:
1. break with label
2. break without label
Penggunaan break tanpa label umumnya dalam switch. Fungsi
break adalah untuk menghentikan eksekusi sebuah blok program,
sebagai contoh untuk memaksa keluar dari sebuah perulangan.
Penggunaan break dengan label digunakan pada perualangan yang
berkalang, yakni perulangan dalam perulangan, yang mungkin
berada dalam perulangan yang lain, dan seterusnya, akan
menyebabkan setelah eksekusi sebuah blok pernyataan terhenti,
aliran eksekusi akan berlanjut ke posisi perulangan tempat label
berada.
Berbeda dengan break, continue digunakan untuk melewatkan
eksekusi pada perulangan yang ada, dan melanjutkan ke perulangan
berikutnya.
Pada operator continue, juga dapat digunakan label dengan aturan
yang sama dengan break. Pernyataan return digunakan untuk
keluar dari sebuah fungsi, dan dapat diberikan parameter nilai
untuk menunjukkan return value dari sebuah fungsi.
35
4. Array/Larik
Larik atau array merupakan struktur data yang penting dalam bahasa
pemrograman. Sebuah larik terdiri atas himpunan beberapa nilai data
dengan tipe data yang sama, di mana jumlah anggota dari himpunan
dalam larik itu ditentukan saat deklarasi larik atau array. Tiap anggota
himpunan dalam larik tersebut akan diacu sebagai elemen dengan
menunjuk nomor indeks.
idx[0] idx[1] idx[2] idx[3] idx[4] idx[5] ...
Penggambaran di atas menunjukkan sebuah larik, yaitu elemen
pertama akan diacu sebagai elemen ke-0, elemen kedua diacu sebagai
elemen ke-1, begitu seterusnya. Jika Anda pernah memprogram
dengan bahasa lain seperti PHP, ASP, Pascal, C/C++, Perl larik pada
Java sama saja dengan larik dengan bahasa-bahasa pemrograman
tersebut, hanya saja mungkin pengacuan elemennya berbeda, ada
bahasa pemrograman yang mengacu elemen pertama sebagai elemen
ke-1 dan bukan ke-0.
Untuk mendefinisikan tipe variabel yang bertipe array digunakan cara
seperti ini:
Type[] namaVariabel;
Type menunjukkan bahwa array ini terdiri atas nilai-nilai bertipe data
Type. Berikut contoh penggunakan array dalam Java:
// Membuat array data bertipe data integer int[] my ArrayOfInteger;
36
// Membuat array data bertipe data float float[] my ArrayOfFloat; // Membuat array data bertipe data String String[] my ArrayOfString;
Setelah mendeklarasikan array dengan cara di atas, langkah
selanjutnya adalah menginisialisasi array tersebut. Ada dua cara yang
umum digunakan, yaitu:
1. Dengan operator new
Formatnya adalah sebagai berikut:
new <type>[ukuran]
Contoh:
int my ArrayOfInteger = new int[10];
Dengan menggunakan cara ini, array yang ada belum mempunyai
nilai awal. Sebelum dapat digunakan, terlebih dahulu array
tersebut harus memiliki nilai awal.
2. Dengan langsung memberikan nilai-nilai awal
Nilai awal dari array ditempatkan di antara ‘{‘ dan ‘}’ yang
elemen-elemenya dipisahkan tanda koma, sperti berikut:
int my ArrayOfInteger = { 1, 2, 3, 4, 5 };
5. Java Exception
1. Pengertian Exception
Secara definitif, exception merupakan sebuah kejadian yang terjadi
ketika program menemukan suatu kesalahan saat instruksi program
37
dijalankan. Banyak hal yang dapat menyebabkan terjadinya
kesalahan, sebagai contoh crash, hard disk rusak dengan tiba-tiba.
Dalam Java, ketika terjadi kesalahan, otomatis akan dilemparkan
sebuah objek yang disebut dengan exception, yang kemudian dapat
diproses lebih lanjut oleh fungsi-fungsi yang siap menangani
kesalahan tersebut. Proses pelemparan exception tersebut sering
dikenal dengan istilah throwing exception, sedangkan proses
penerimaan exception yang bersangkutan dikenal dengan istilah
catch exception.
2. try - catch - finally
Berikut struktur blok try - catch - finally:
try { // .................... } catch (Exception xxx) { // .................... } catch (Exception xxx) { // .................... } finally { // .................... }
Blok try digunakan untuk menempatkan kode-kode program Java
yang mengandung kode program yang mungkin melemparkan
exception. Blok catch, digunakan untuk menempatkan kode-kode
program Java yang digunakan untuk menangani sebuah exception
tertentu. Blok finally, digunakan untuk clean-up.
2.13. Pemrograman Client / Server Dengan Java
2.13.1. Pemrograman Client / Server
38
Suatu model umum yang diterapkan untuk pemrograman
jaringan adalah model client/server. Konsepnya sederhana, sebuah
proses / aplikasi client melakukan permintaan untuk suatu
informasi atau mengirim sebuah perintah ke aplikasi server.
Aplikasi sever akan menerima perminataan dari client, kemudian
memproses berdasarkan permintaan tersebut, dan akan
mengembalikan sesuatu ke client sebagai hasil dari pemrosesan
yang sudah dilakukan. Sehingga tugas server adalah melakukan
listen untuk suatu koneksi, sedangkan client mencoba membuat
koneksi ke server.
Setelah koneksi terbentuk, hubungan pertukaran data antara
client dan server diwakili dengan suatu stream input dan output.
2.13.2. Java Socket
Socket adalah sebuah abstraksi perangkat lunak yang
digunakan sebgai suatu “terminal” dari suatu hubungan antara dua
mesinatau proses yang saling berinterkoneksi. Di setiap mesin yang
berinterkoneksi, harus terpasang socket. Pada Java, anda
membutuhkan socket untuk membuat suatu hubungan ke mesin
atau proses lain, baru kemudian anda akan mendapatkan input
stream dan output stream untuk pertukaran data.
Terdapat dua buah kelas yang sudah tersedia pada Java
yang mendukung tipe koneksi Connection-Oriented, yaitu
java.net.ServerSocket yang digunakan server untuk listen
39
koneksi dan java.net.Socket yang digunakan oleh client untuk
menginisialisasi koneksi.
2.13.3. Socket
Kelas Socket adalah sebuah kelas yang dirancang sebagai
“wakil” sebuah koneksi menggunakan protokol TCP. Ketika
sebuah socket dibuat, sebuah koneksi akan terbentuk ke suatu
mesin atau proses yang dituju. Pada Java 2, kelas Socket memiliki
8 konstruktor, yang sering dipakai adalah :
a. Socket(InetAdress adress, int port)
Membuat sebuah stream socket dan koneksi ke suatu nomor port
pada sebuah komputer yang memiliki alamat IP.
b. Socket(String host, int port)
Membuat sebuah stream socket dan koneksi ke suatu nomor port
pada sebuah komputer berdasarkan namanya.
Selain itu, juga ada dua method dari kelas socket yang pasti
akan digunakan, yaitu getInputStream() dan
getOutputStream() , dimana keduanya mengembalikan suatu
objek stream yang dapat digunakan untuk berkomunikasi dengan
socket. Method close() digunakan untuk memberitahukan
kepada protokol untuk menutup koneksi.
2.13.4. ServerSocket
Kelas ini menyatakan suatu koneksi TCP yang berfungsi
untuk listen yang siap menerima suatu permintaan dari proses lain.
40
Kelas ServerSocket ini digunakan ketika akan membangun
aplikasi server yang menerapakan tipe koneksi Connection
Oriented.
Ketika dibuat sebuah objek baru dari kelas ServerSocket ,
untuk dapat mengirim dan menerima melaui stream, tetap perlu
InputStream dan outputStream dari objek socket yang dihasilkan
ketika dari kelas ServerSocket menerima permintaan dari client
melalui method accept() .
Kelas ServerSocket memiliki konstruktor yang menerima
sebuh nomor port yang akan digunakan sebagai nomor akses
layanan yang disediakannya.
2.14. MySQL
MySQL (My Strukture Query Language) adalah sebuah program
pembuat database yang bersifat open source dan merupakan program
pengakses database yang bersifat jaringan sehingga dapat digunakan untuk
aplikasi multi user (banyak pengguna). Kelebihan lain dari MySQL adalah
menggunakan bahasa Query standar yang dimiliki oleh SQL (Stucture Query
Language). SQL adalah suatu bahasa permintaan yang terstruktur, yang telah
distandarkan untuk semua program pengakses database seperti Oracle,
Posgres SQL, SQL Server, dan lain-lain. SQL dibagi menjadi dua bentuk
perintah, yaitu :
41
1. DDL (Data Manipulation Language)
DDL (Data Manipulation Language) adalah suatu bentuk bahasa yang
digunakan untuk melakukan pendefinisian data, adapun perintah yang
digunakan adalah:
a. CREATE
Perintah ini digunakan untuk membuat tabel dan database.
b. DROP :
Perintah ini digunakan menghapus tabel maupun database.
c. ALTER :
Perintah ini digunakan untuk mengubah struktur tabel yang telah
dibuat, baik menambah field (add), mengganti nama field (change)
ataupun menamakan kembali (rename), serta menghapus field
(drop).
2. DML (Data Manipulation Language)
DML (Data Manipulation Language) adalah suatu bahasa yang digunakan
untuk memanipulasi data, adapun query yang digunakan adalah:
d. SELECT
Perintah ini digunakan untuk melihat data dalam tabel.
e. INSERT
Perintah ini digunakan untuk menambah data ke suatu tabel.
f. UPDATE
42
Perintah ini digunakan untuk mengubah suatu data dalam suatu
tabel.
g. DELETE
Perintah ini digunakan untuk menghapus data dalam suatu tabel
2.15. Parser dan DOM ( Document Object Model )
2.13.1. Parser
Parser adalah tool XML yang paling penting dan mendasar. Setiap
aplikasi XML didasarkan pada parser. Parser adalah suatu komponen
software yang diposisikan diantara aplikasi dan dokumen XML. Tujuan
parser adalah untuk melindungi pengembang dari kerumitan dokumen
XML. Jadi dengan parser, pengembang tidak perlu bersusah – payah untuk
membuat fungsi pembacaan dokumen XML.
Dokumen XML bisa berupa dokumen yang well formed atau
dokumen yang valid, sehingga ada dua jenis parser XML yaitu :
a. Nonvalidating Parser
Jenis parser ini bisa membaca dokumen XML yang valid maupun
yang well formed tetapi tidak akan melakukan validasi untuk tipe
dokumen valid.
b. Validating Parser
Jenis parser ini bisa membaca dokumen XML yang valid maupun
yang well formed tetapi untuk dokumen yang well formed parser
akan berfungsi seperti Nonvalidating Parser.
43
2.13.2. DOM
Pendekatan yang umum dalam memproses dokumen XML adalah
dengan menggunakan object-based interface. Dengan pendekatan ini,
parser membuat object tree yang memuat seluruh struktur dokumen XML
secara eksplisit di memori. Aplikasi sangat cocok untuk memproses XML
dengan cara ini.
DOM ( Document Object Model ) adalah salah satu model API (
Application Programming Interface ) yang digunakan untuk mengakses
dokumen XML. Dengan API ini, programer dapat mrngakses suatu
dokumen XML tanpa harus mempedulikan sintaks dokumen tersebut.
Sesuai spesifikasi dari W3C, tujuan yang paling penting dari DOM adalah
untuk menyediakan standar antar muka pemrograman yang bisa digunakan
pada berbagai variasi lingkungan pemrograman.
Contoh :
Diberikan suatu dokumen HTML seperti berikut,
<TABLE> <TBODY> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </TBODY> </TABLE>
Secara grafis, DOM akan merepresentasikan struktur diatas sebagai
berikut :
44
Gambar 2.9 Struktur Pohon DOM
Pada DOM, dokumen mempunyai struktur logika yang mirip sebuah
pohon. Setiap dokumen mempunyai nol atau satu doctype nodes, satu
element node dan nol atau lebih dari satu comment. Element dari
dokumen berlaku sebagai root dari pohon.
45
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
3.1.1. Gambaran Umum Sistem Lama
CV. NKI Prembun adalah sebuah perusahaan distribusi yang
bergerak dalam penjualan alat – alat pertanian, onderdil kendaraan dan
jasa bengkel. Perusahaan ini sudah berkembang sehingga memiliki
beberapa cabang di beberapa lokasi. Kantor pusat maupun kantor cabang
sama – sama melayani penjualan kepada customer. Walaupun perusahaan
ini sudah sedemikian berkembang, perusahaan ini masih menggunakan
sistem yang sederhana untuk menangani data – data pentingnya. Data
customer dan data transaksi penjualan perusahaan hanya dicatat dengan
bantuan Microsoft Excel yang tentu saja mempunyai banyak keterbatasan
dalam penggunaannya sebagai pengolah data. Setelah data – data baru
dicatat, kemudian data tersebut akan dikirimkan ke bagian administrasi di
kantor pusat secara hard copy atau masih menggunakan kertas. Dengan
menggunakan cara pengiriman data seperti ini, maka akan terjadi
pemborosan dalam hal biaya dan waktu. Kerugian lain adalah data tidak
bisa dijamin keamanan dan itegritasnya.
46
3.1.2. Orang Yang Terlibat Dalam Sistem
Dalam sistem penjualan CV. NKI Prembun melibatkan tiga aktor,
yaitu :
1. Petugas Pusat
Orang yang bertanggung jawab penuh untuk mengelola sistem di
kantor pusat, termasuk memberikan hak akses ke sistem bagi aktor
lain. Dalam sistem ini diasumsikan bahwa data – data barang akan
ditangani oleh petugas pusat.
2. Kasir Penjualan
Orang yang memasukkan dan menangani data-data yang
berhubungan dengan penjualan di kantor pusat.
3. Petugas Cabang
Orang yang bertanggung jawab untuk menginputkan data
pelanggan baru di kantor pusat dan menangani administrasi di kantor
cabang.
3.1.3. Analisis Masalah
Permasalahan yang timbul pada model perusahaan terdistribusi
seperti ini bagaimana agar data penjualan dan data customer di kantor
cabang bisa disimpan juga di kantor pusat dan data barang dari kantor
pusat dapat sama dengan data barang di kantor cabang. Kantor cabang
harus bisa mengirimkan data customer baru, data transaksi penjualan dan
data order barang yang habis stok ke kantor pusat sedangkan pada sisi lain
47
bagaiman cara kantor pusat dapat mengirimkan data update barang serta
data barang yang akan dikirim ke kantor cabang sebagai pemenuhan order.
Masalah yang lain adalah bagaimana cara pengiriman data yang efisien
agar data – data tersebut dapat sampai ke tujuan secara efisien.
3.1.4. Gambaran Umum Sistem Baru
Untuk menangani permasalahan di atas, maka akan dibuat sebuah
sistem baru yang bisa mengkoneksikan masing – masing kantor cabang
dengan kantor pusat. Sistem baru ini menerapkan teknologi XML yang
akan menjembatani komunikasi dan pertukaran data antara database di
kantor cabang dengan database di kantor pusat sehingga data – data di
setiap bagian dapat selalu sinkron.
Sinkronisasi akan dilakukan setiap ada perubahan data yang terjadi
pada database di kantor cabang maupun database di kantor pusat.
Penggunaan teknologi XML sebagai sarana sinkronisasi akan
menjamin keakuratan data sekaligus akan menyingkat waktu pengiriman
data sehingga karyawan pada level management akan dapat menentukan
langkah bisnis mereka dengan cepat.
48
<<depend on>>
Petugas Pusat Petugas
Cabang
Kasir
3.1.5. Use Case Diagram
Use Case Diagram Secara Umum
Gambar 3.1 Use Case Diagram
Cabang
Pusat
Login
Administrasi Pusat
Administrasi Cabang
Penjualan
49
3.1.5.1. Use Case Diagram Kantor Cabang
<<Depend On>>
Login
(f rom Use Cases)
Cek Persediaan Barang
(f rom Bagian Kasir)
Buat Order Barang
(f rom Bagian Kasir)
+theBuat Order Barang
Cek Pengiriman
(f rom Bagian Kasir)
Buat Laporan
(f rom Bagian Kasir)
Petugas Cabang
(f rom Actors)
Maintain Data Customer
(f rom BagianPetugasCabang)
Gambar 3.2 Use Case Diagram Administrasi Cabang
50
3.1.5.2. Use Case Diagram Kantor Pusat
Login
(f rom Use Cases)
Maintain Data Barang
(f rom BagianDepo)
Membuat Laporan
(f rom BagianDepo)
Lihat Data Transaksi
(f rom BagianDepo)
Maintain Data Petugas
(f rom BagianDepo)
Maintain Data Customer Pusat
(f rom BagianDepo)
Maintain Data Kantor
(f rom BagianDepo)
Petugas Pusat
(f rom Actors)
Cek Order
(f rom BagianDepo)
Gambar 3.3 Use Case Diagram Adminstrasi Kantor Pusat
<<depend On>>
51
3.1.5.3. Use Case Diagram Penjualan
Cetak Data Transaksi
(f rom Penjualan)
Login
(f rom Use Cases)
Cek Persediaan Barang
(f rom Bagian Kasir)
Masukkan Data PenjualanBaru
(f rom Penjualan)
Petugas Kasi r
(f rom Actors)
Lihat Data Customer
(f rom Use Cases)
Gambar 3.4 Use Case Diagram Input Penjualan
<<depend On>>
52
3.2. Design Sistem
3.2.1. ER Diagram
3.2.1.1. ER Diagram Kantor Cabang
Gambar 3.5 ER Diagram Kantor Cabang
53
3.2.1.2. ER Diagram Kantor Pusat
Gambar 3.6 ER Diagram Kantor Pusat
54
3.2.2. Class Diagram
3.2.2.1. Class Diagram Kantor Cabang
Gambar 3.7 Class Diagram Kantor Cabang
55
3.2.2.2. Class Diagram kantor Pusat
Gambar 3.8 Class Diagram Kantor Pusat
56
3.2.3. Sequence Diagram
3.2.3.1. Sequence Diagram Kantor Cabang
Proses Login Petugas
: Petugas Cabang 5. viewStaus : Layar_login : Login_control : Petugas
1. input name,password
3. getDataByVal()
2. cekLogin()
4. konfirmasiStatus()
5. viewStatus()
Gambar 3.9 Sequence Diagram Login Petugas
Proses Maintain Data Customer
: Petugas Cabang : LayarCustomer : CustomerControl : Customer
2. Lihat data
3. getCustomerInPos()
1. selectAll()
4. showCurentCust()
4. dataPerCustomer()
Gambar 3.10 Sequence Diagram Maintain Customer : View Data
57
Gambar 3.11 Sequence Diagram Maintain Customer : Edit Data
Gambar 3.12 Sequence Diagram Maintain Customer : Insert Data
58
Proses Cek Persediaan Barang
Gambar 3.13 Sequence Diagram Cek Persediaan Barang
Proses Buat Order Barang
Gambar 3.14 Sequence Diagram Buat Order Barang
59
Proses Cek Pengiriman Barang
Gambar 3.15 Sequence Diagram Cek Pengiriman Barang
60
Proses Buat Laporan
Gambar 3.16 Sequence Diagram Buat Laporan
61
3.2.3.2. Sequence Diagram Kantor Pusat
Proses Login
Gambar 3.17 Sequence Diagram Login Petugas Pusat
Proses Maintain Data Customer
Gambar 3.18 Sequence Diagram Maintain Data Customer : View Data
62
Gambar 3.19 Sequence Diagram Maintain Customer : Edit Data
Gambar 3.20 Sequence Diagram Maintain Customer : Insert Data
63
Proses Maintain Data Petugas
Gambar 3.21 Sequence Diagram Maintain Data Petugas : Insert Petugas
Gambar 3.22 Sequence Diagram Maintain Data Petugas : Edit Petugas
64
Gambar 3.23 Sequence Diagram Maintain Data Petugas : Delete Petugas
65
Proses Maintain Data Kantor
Gambar 3.24 Sequence Diagram Maintain Data Kantor : Insert Kantor
66
Gambar 3.25 Sequence Diagram Maintain Data Kantor : Edit Kantor
67
Proses Cek Order
Gambar 3.26 Sequence Diagram Cek Order
68
Proses Maintain Data Barang
Gambar 3.27 Sequence Diagram Maintain Data Barang
69
Proses Lihat Data Transaksi & Cetak Laporan
Gambar 3.28 Sequence Diagram Cetak Laporan
70
3.2.3.3. Sequence Diagram Penjualan
Proses Lihat Data Customer
Gambar 3.29 Sequence Diagram Lihat Data Customer
Proses Cek Persediaan Barang
Gambar 3.30 Sequence Diagram Cek Persediaan Barang
71
Proses Input Data Penjualan Baru & Cetak Transaksi
Gambar 3.31 Sequence Diagram Input Penjualan
72
3.2.4. Perancangan Database
Pada sistem terdapat 2 buah database, yaitu database untuk menangani
data di kantor cabang dan database yang menangani data di kantor pusat.
Kedua database tersebut mirip dalam hal struktur, tetapi ada beberapa
perbedaan jumlah field antara keduanya untuk tabel – tabel tertentu.
3.2.4.1. Desain Fisik Database
3.2.4.1.1. Kantor Cabang
Gambar 3.32 Struktur Fisik Database Cabang
73
3.2.4.1.2. Kantor Pusat
Gambar 3.33 Struktur Fisik Database Pusat
74
3.2.4.2. Struktur Tabel Database
3.2.4.2.1. Tabel Customer ( Cabang )
Tabel Customer merupakan tabel yang digunakan untuk menyimpan
data customer yang terdaftar pada suatu kantor, dengan format sebagai
berikut:
Field Type Null Key Default Extra
Kode_customer varchar(11) NO PRI
Nama_customer varchar(45) YES (NULL)
Tgl_lahir date YES (NULL)
No_telp varchar(25) YES (NULL)
Alamat varchar(50) YES (NULL)
Kota varchar(20) YES (NULL)
Kecamatan varchar(20) YES (NULL)
Tagl_terdaftar date YES (NULL)
Mulai_usaha date YES (NULL)
Klasifikasi_cust int(11) YES (NULL)
status_bangunan int(11) YES (NULL)
id_lokasi int(11) YES MUL (NULL)
No_KTP varchar(14) YES UNI (NULL)
Tabel 3.1 Tabel Customer ( Cabang )
3.2.4.2.2. Tabel Customer ( Pusat )
Field Type Null Key Default Extra
Kode_customer varchar(11) NO PRI
Nama_customer varchar(45) YES (NULL)
Tgl_lahir date YES (NULL)
No_telp varchar(25) YES (NULL)
Alamat varchar(50) YES (NULL)
Kota varchar(20) YES (NULL)
Kecamatan varchar(20) YES (NULL)
Tgl_terdaftar date YES (NULL)
Mulai_usaha date YES (NULL)
Klasifikasi_cust int(11) YES (NULL)
75
status_bangunan int(11) YES (NULL)
id_lokasi int(11) YES MUL (NULL)
No_KTP varchar(14) YES UNI (NULL)
Tabel 3.2 Tabel Customer ( Pusat )
3.2.4.2.3. Tabel Lokasi_tempat_tinggal ( Cabang & Pusat )
Tabel ini digunakan untuk menyimpan detail lokasi tempat tinggal dari
seorang customer, dengan format sebagai berikut :
Field Type Null Key Default Extra
Kode_Lokasi_tempat_tinggal varchar(11) NO PRI
kode_customer varchar(11) YES MUL (NULL)
Alamat varchar(45) YES (NULL)
kota varchar(45) YES (NULL)
kecamatan varchar(45) YES (NULL)
kelurahan varchar(45) YES (NULL)
No_telpon varchar(25) YES (NULL)
Tabel 3.3 Tabel Lokasi_Tempat_Tinggal (Cabang & Pusat)
3.2.4.2.4. Tabel Jual ( Cabang )
Tabel ini digunakan untuk menyimpan data umum penjualan dari
suatu kantor, dengan format sebagai berikut :
Field Type Null Key Default Extra
kode_penjualan varchar(12) NO PRI
Kode_customer varchar(11) YES MUL (NULL)
type_pembayaran int(11) YES (NULL)
tanggal_transaksi datetime NO
Tabel 3.4 Tabel Jual ( Cabang )
76
3.2.4.2.5. Tabel Jual ( Pusat )
Field Type Null Key Default Extra
kode_penjualan varchar(12) NO PRI
Kode_customer varchar(11) YES MUL (NULL)
type_pembayaran int(11) YES (NULL)
tanggal_transaksi datetime NO
kode_lokasi int(11) NO MUL
Tabel 3.5 Tabel Jual ( Pusat )
3.2.4.2.6. Tabel Detil_Penjualan ( Cabang & Pusat )
Tabel ini digunakan untuk menyimpan data detail penjualan utuk tiap
customer, dengan format sebagai berikut :
Field Type Null Key Default Extra
kode_penjualan varchar(12) NO MUL
kode_barang varchar(11) NO MUL
jumlah_item int(11) NO
Tabel 3.6 Tabel Detil_Penjualan ( Cabang & Pusat )
3.2.4.2.7. Tabel Barang ( Cabang & Pusat )
Tabel ini digunakan untuk menyimpan data – data umum barang yang
terdapat di kantor cabang maupun kantor pusat.
Field Type Null Key Default Extra
Kode_barang varchar(15) NO PRI
Kode_info_stok int(10) unsigned NO MUL
id_kelompok int(11) YES MUL (NULL)
Nama_barang varchar(45) YES (NULL)
id_Satuan varchar(10) YES (NULL)
Harga_Beli double YES (NULL)
Harga_Jual double YES (NULL)
77
Discount float NO
DiscountDistributor float NO
DiscountAgen float NO
DiscountSubAgen float NO
DiscountPengecer float NO
Tabel 3.7 Tabel Barang( Cabang & Pusat )
3.2.4.2.8. Tabel Group ( Cabang & Pusat )
Tabel ini menyimpan data group untuk setiap kategori barang.
Field Type Null Key Default Extra
id_group int(11) NO PRI
nama_Group varchar(20) YES (NULL)
Tabel 3.8 Tabel Group( Cabang & Pusat )
3.2.4.2.9. Tabel Kategori ( Cabang & Pusat )
Tabel ini menyimpan data kategori untuk setiap kelompok barang.
Field Type Null Key Default Extra
id_kategori int(11) NO PRI
nama_kategori varchar(45) YES (NULL)
id_group int(11) YES MUL (NULL)
Tabel 3.9 Tabel Kategori ( Cabang & Pusat )
3.2.4.2.10. Tabel Kelompok ( Cabang & Pusat )
Tabel ini menyimpan data kelompok untuk setiap item barang.
78
Field Type Null Key Default Extra
id_kelompok int(11) NO PRI
nama_kelompok varchar(40) YES (NULL)
id_kategori int(11) YES MUL (NULL)
Tabel 3.10 Tabel Kelompok ( Cabang & Pusat )
3.2.4.2.11. Tabel Info_Stok ( Cabang )
Tabel ini digunakan untuk menyimpan data stok sari sebuah barang,
dengan format sebagai berikut :
Field Type Null Key Default Extra
Kode_info_stok int(10) unsigned NO PRI (NULL) auto_increment
Jumlah int(10) unsigned YES (NULL)
Reorder_point int(10) unsigned YES (NULL)
Per_tanggal date YES (NULL)
status_order int(11) YES (NULL)
Tabel 3.11 Tabel Info_Stok ( Cabang )
3.2.4.2.12. Tabel Info_Stok ( Pusat )
Field Type Null Key Default Extra
Kode_info_stok int(10) unsigned NO PRI (NULL) auto_increment
Jumlah int(10) unsigned YES (NULL)
Reorder_point int(10) unsigned YES (NULL)
Per_tanggal date YES (NULL)
Tabel 3.12 Tabel Info_Stok ( Pusat )
3.2.4.2.13. Tabel Satuan ( Cabang & Pusat )
Tabel ini digunakan untuk menyimpan satuan setiap item barang yang
ada di kantor pusat maupun di kantor cabang.
79
Field Type Null Key Default Extra
id_satuan int(4) NO PRI (NULL) auto_increment
Nama_Satuan varchar(9) YES (NULL)
Tabel 3.13 Tabel Satuan ( Cabang & Pusat )
3.2.4.2.14. Tabel Pengiriman ( Cabang & Pusat )
Tabel ini digunakan unuk meyimpan data umum pengiriman. Data
yang disimpan sama antara kantor pusat maupun kantor cabang.
Field Type Null Key Default Extra
kode_kirim varchar(14) NO PRI
tgl_kirim date YES (NULL)
kode_order varchar(11) YES MUL (NULL)
kode_lokasi int(11) YES MUL (NULL)
Tabel 3.14 Tabel Pengiriman ( Cabang & Pusat )
3.2.4.2.15. Tabel Detil_Pengiriman ( Cabang & Pusat )
Tabel ini menyimpan detil barang dari pengiriman yang dilakukan.
Data yang disimpan sama antara kantor pusat dan kantor cabang.
Field Type Null Key Default Extra
kode_kirim varchar(14) NO PRI
kode_barang varchar(15) NO PRI
jumlah int(11) YES (NULL)
Tabel 3.15 Tabel Detil_Pengiriman( Cabang & Pusat )
80
3.2.4.2.16. Tabel OrderBarang ( Cabang )
Tabel ini digunakan untuk menyimpan data order barang dari kantor
cabang ke kantor pusat.
Field Type Null Key Default Extra
kode_order varchar(11) NO PRI
tanggal date NO
Stat_Kirim int(11) YES (NULL)
Tabel 3.16 Tabel OrderBarang ( Cabang )
3.2.4.2.17. Tabel OrderBarang ( Pusat )
Field Type Null Key Default Extra
kode_order varchar(11) NO PRI
tanggal date NO
kode_lokasi int(11) YES MUL (NULL)
Stat_Order int(11) YES (NULL)
Tabel 3.17 Tabel OrderBarang ( Pusat )
3.2.4.2.18. Tabel Detil_Order ( Cabang & Pusat )
Tabel ini digunakan untuk menyimpan data item barang yang di-order
oleh kantor pusat menuju kantor cabang.
Field Type Null Key Default Extra
kode_order varchar(11) NO PRI
kode_barang varchar(11) NO PRI
jumlah int(11) YES (NULL)
Tabel 3.18 Tabel Detil_Order ( Cabang & Pusat )
81
3.2.4.2.19. Tabel Petugas ( Pusat )
Tabel ini menyimpan data – data petugas yang terdaftar pada
perusahaan.
Field Type Null Key Default Extra
NIP varchar(10) NO PRI
nama varchar(45) YES (NULL)
password_2 varchar(20) YES (NULL)
hak_akses int(10) unsigned YES (NULL)
Kode_lokasi int(11) NO MUL
Tabel 3.19 Tabel Petugas ( Pusat )
3.2.4.2.20. Tabel LokasiKantor ( Pusat )
Tabel ini menyimpan informasi masing – masing lokasi dari kantor
cabang maupun kantor pusat.
Field Type Null Key Default Extra
kode_lokasi int(11) NO PRI
alamat_lokasi varchar(45) YES (NULL)
kecamatan_lokasi varchar(45) YES (NULL)
kota_lokasi varchar(45) YES (NULL)
telpon_lokasi varchar(45) YES (NULL)
Tabel 3.20 Tabel LokasiKantor ( Pusat )
3.2.5. Perancangan Proses Pertukaran Data
Pada masing – masing kantor, terdapat sebuah aplikasi dan sebuah
database server. Aplikasi cabang bertugas untuk menangani data – data
penjualan yang terjadi di kantor cabang dan data customer yang terdaftar di
82
kantor cabang tersebut kemudian menyimpannya di database kantor cabang.
Sedangkan aplikasi pusat bertugas untuk menangani data – data penjualan dan
data – data customer dari seluruh kantor, dalam hal ini kantor pusat dan
kantor cabang untuk kemudian menyimpannya di database kantor pusat.
Pertukaran data dari kantor cabang dan kantor pusat dilakukan dengan
menggunakan dokumen XML melalui jaringan internet menggunakan
protokol TCP / IP. Data customer, data penjualan dan data order barang dari
kantor cabang akan dikirimkan ke kantor pusat untuk disimpan di database
kantor pusat. Kemudian kantor pusat akan mengirimkan data barang baru,
data update barang dan data barang yang di-order oleh kantor cabang.
Gambar 3.34 Proses Pertukaran Data
83
3.2.6. Perancangan Dokumen XML
Dokumen XML yang dibuat akan memperlihatkan struktur tabel pada
database untuk setiap data.
<?xml version="1.0" encoding="UTF-8" standalone="ye s"?> <root> <nama_table> <Row> <nama_field/> <nama_field/> </Row> </nama_table> <nama_table> <Row> <nama_field/> <nama_field> </Row> </nama_table> ............. </root>
3.2.6.1. XML Customer
Dokumen ini akan dibuat dan dikirimkan oleh kantor cabang setiap
terjadi penambahan customer baru atau terjadi pengeditan data customer.
<?xml version="1.0" encoding="UTF-8" standalone="ye s"?> <Brach_Data> <Customer> <Row> <Kode_customer/> <Nama_customer/> <Tanggal_lahir/> <No_telpon/> <Alamat/> <Kota/> <Kecamatan/> <Tanggal_terdaftar/> <Mulai_usaha/> <Status_Bangunan/> <Klasifikasi_langganan/> <noKTP/> </Row> </Customer> <Lokasi_tempat_tinggal/> </Brach_Data>
84
3.2.6.2. XML Penjualan
Dokumen XML ini akan dibuat oleh kantor cabang untuk setiap
penjualan yang terjadi.
<?xml version="1.0" encoding="ISO-8859-1" standalon e="yes"?> <Penjualan_Data> <jual> <Row> <no_penjualan/> <Kode_customer/> <type_pembayaran/> <tanggal_transaksi/> </Row> </jual> <detil_penjualan> <Row> <no_penjualan/> <kode_barang/> <jumlah_item/> </Row> </Penjualan_Data>
3.2.6.3. XML Order Barang
Dokumen ini akan dibuat oleh kantor cabang ketika akan mengirimkan
order barang untuk item – item barang yang telah memasuki reorder point.
<?xml version="1.0" encoding="ISO-8859-1" standalon e="yes"?> <Order_Data> <Order> <Row> <kode_order/> <tanggal/> <statKirim/> </Row> </Order> <detil_Order> <Row> <kode_order/> <kode_barang/> <jumlah/> </Row> </detil_Order> </Order_Data>
85
3.2.6.4. XML Data Barang
Dokumen ini akan dibuat oleh kantor pusat dan akan dikirimkan ke
seluruh kantor cabang yang ada untuk setiap atribut barang yang baru.
<?xml version="1.0" encoding="ISO-8859-1" standalon e="yes"?> <dataBarang> <group> <Row> <id_group/> <nama_group/> </Row> </group> <kategori> <Row> <id_kategori/> <nama_kategori/> </Row> </kategori> <kelompok> <Row> <id_kelompok/> <nama_kelompok/> </Row> </kelompok> </dataBarang>
3.2.6.5. XML Item Barang
Dokumen ini akan dibuat ketika kantor pusat memasukkan item
barang baru ke database. Dokuemn ini akan dikirimkan untuk masing –
masing kantor cabang yang terkoneksi.
<?xml version="1.0" encoding="UTF-8" standalone="ye s"?> <dataBarang> <info_stok> <Row> <Kode_info_stok/> <Jumlah/> <Reorder_point/> <Per_tanggal/> </Row> </info_stok> <barang> <Row> <Kode_barang/> <Kode_info_stok/> <id_kelompok/>
86
<Nama_barang/> <Satuan/> <Harga_Beli/> <Harga_Jual/> <Discount/> <DiscountDistributor/> <DiscountAgen/> <DiscountSubAgen/> <DiscountPengecer/> </Row> </barang> </dataBarang>
3.2.6.6. XML Pengiriman
Dokumen ini dibuat oleh kantor pusat sebagai respon dari order yagn
dikirimkan oleh kantor cabang. Dokumen ini akan dikirimkan untuk
kantor cabang yang bersangkutan.
<?xml version="1.0" encoding="ISO-8859-1" standalon e="yes"?> <kirim_Data> <Pengiriman> <Row> <Kode_Pengiriman/> <Tanggal_Pengiriman/> <Kode_Order/> </Row> </Pengiriman> <Detil_pengiriman> <Row> <Kode_Pengiriman/> <Kode_barang/> <jumlah/> </Row> </Detil_pengiriman> </kirim_Data>
87
3.2.7. Perancangan Input
3.2.7.1. Kantor Cabang
3.2.7.1.1. Login Petugas
Gambar 3.35 User Interface Cabang Login Petugas
88
3.2.7.1.2. Menu Utama Kantor Cabang
Gambar 3.36 User Interface Menu Utama Kantor Cabang
3.2.7.1.3. Form Data Customer
Gambar 3.37 User Interface Cabang Data Customer – Data Umum
DATA CUSTOMER
File Master Transaksi Help
login logout
CLIENT SIDE PENJUALAN
PT NKI PREMBUN
<XML Sync/>
Connection status Active user
Data Umum Tmpt Tinggal
Prev
Next Edit
Simpan
Show Table
Kode cust
Nama Cust
No. tlp No. KTP
Alamat Kecamatan
Kota
Tgl lahir Tgl terdaftar Mulai usaha
Klasifikasi langganan Status bangunan
89
Gambar 3.30 User Interface Data Customer – Lokasi Tempat Tinggal
3.2.7.1.4. Data Barang
Gambar 3.31 User Interface Data Barang – Data Umum
Gambar 3.32 User Interface Data Barang -- Order Barang
Gambar 3.38 User Interface Cabang Data Customer – Lokasi Tempat Tinggal
3.2.7.1.5. Form Tambah Customer
Gambar 3.39 User Interface Cabang Tambah Customer – Data Pribadi
DATA CUSTOMER
Data Umum Tmpt Tinggal
Prev
Next Edit
Simpan
Show Table
Kode Lokasi
Alamat
Kota
Kecamatan Kelurahan No. telpon
Add
Lokasi Pribadi
Simpan Clear Cancel
Kode Customer
Nama
Tgl Lahir
Telpon
Alamat Usaha
Kecamatan Usaha
Kota Usaha
Mulai Usaha
No KTP
Klasifikasi Langganan
Status Bangunan
90
Gambar 3.40 User Interface Cabang Tambah Customer – Data Tempat Tinggal
3.2.7.1.4. Form Data Barang
Gambar 3.41 User Interface Cabang Data Barang – Data Umum
Jumlah
DATA BARANG
Data Umum Order Barang
Prev
Next Show Table
Pengiriman
Info Barang Info Stok
Kode Barang
Harga Beli
Group
Kategori
Nama Barang
Harga Jual
Disc.
Kelompok
Satuan
Total Harga
Per Tanggal
Reorder Point
Pribadi
Simpan Clear Cancel
Lokasi
Kode Lokasi
Alamat Tinggal
Kota Tinggal
Kecamatan Tinggal
Kelurahan Tinggal
No Telpon
Jumlah
91
Gambar 3.42 User Interface Cabang Data Barang – Order Barang
Gambar 3.43 User Interface Cabang Data Barang – Pengiriman
Kirim Order
DATA BARANG
Data Umum
Pengiriman Order Barang
Kode Order
Tanggal
Kode Barang Nama Barang Jml Stok Jml Order
DATA BARANG
Data Umum
Order Barang
Kode Order
Tanggal
Kode Barang Nama Barang Jml Order
Pengiriman
Kode Barang Nama Barang Jml Kirim
Kode Kirim
Tanggal Kirim
Ok
92
3.2.7.1.5. Form Penjualan
Gambar 3.44 User Interface Cabang Penjualan
3.2.7.1.6. Form Laporan
Gambar 3.45 User Interface Cabang Laporan
INPUT TRANSAKSI TUNAI
Nota
Customer Barang
Kode Customer
Nama Customer
Alamat
Kota
Klasifikasi Langganan
Telpon
Kode Barang
Nama Barang
Jml
Harga
Disc.
Sub Total
Kode Barang
Harga
Disc
Jml Item
Sub Total
Total
Bayar
Kembali
LAPORAN
Tanggal Awal
Tanggal Akhir
Cetak
Lihat
No Jual Tgl Kode Brg Jumlah Nama Brg Harga Disc Sub Total
93
3.2.7.2. Kantor Pusat
3.2.7.2.1. Login Petugas
Gambar 3.46 User Interface Login Pusat
3.2.7.2.2. Menu Utama Kantor Pusat
Gambar 3.47 User Interface Menu Utama Kantor Pusat
File Master Transaksi Help
login logout
Server SIDE PENJUALAN
PT NKI PREMBUN
<XML Sync/>
Client Status
Server Status
94
3.2.7.2.3. Form Data Customer
Gambar 3.48 User Interface Data Customer Pusat – Data Umum
Gambar 3.49 User Interface Data Customer Pusat – Lokasi Tempat Tinggal
Data Umum Tmpt Tinggal
Prev
Next Edit
Simpan
Show Table
Kode cust
Nama Cust
No. tlp No. KTP
Alamat Kecamatan
Kota
Tgl lahir Tgl terdaftar Mulai usaha
Klasifikasi langganan Status bangunan
Data Umum Tmpt Tinggal
Prev
Next Edit
Simpan
Show Table
Kode Lokasi
Alamat
Kota
Kecamatan Kelurahan No. telpon
Add
95
3.2.7.2.4. Form Tambah Customer
Gambar 3.50 User Interface Tambah Customer Pusat – Data Pribadi
Gambar 3.51 User Interface Tambah Customer Pusat – Data Tempat Tinggal
Lokasi Pribadi
Simpan Clear Cancel
Kode Customer
Nama
Tgl Lahir
Telpon
Alamat Usaha
Kecamatan Usaha
Kota Usaha
Mulai Usaha
No KTP
Klasifikasi Langganan
Status Bangunan
Pribadi
Simpan Clear Cancel
Lokasi
Kode Lokasi
Alamat Tinggal
Kota Tinggal
Kecamatan Tinggal
Kelurahan Tinggal
No Telpon
96
3.2.7.2.5. Form Data Barang
Gambar 3.52 User Interface Data Barang Pusat – Data Umum
Gambar 3.53 User Interface Data Barang Pusat – Proses Order
DATA BARANG
Data Umum Proses Order
Prev
Next Show Table
Info Barang Info Stok
Kode Barang
Harga Beli
Group
Kategori
Nama Barang
Harga Jual
Disc.
Kelompok
Satuan
Total Harga
Per Tanggal
Reorder Point
Jumlah
ADD
DATA BARANG
Data Umum Proses Order
Lokasi Cabang
Kode Order
Tgl Order
Edit Save Edit Save
Proses
Kode Barang
Nama Barang
Jml Stok
Jml Order
Jml Kirim
97
3.2.7.2.6. Form Tambah Barang
Gambar 3.54 User Interface Tambah Barang – Data Umum
Gambar 3.55 User Interface Tambah Barang – Info Stok
Stok Umum
Simpan Clear Cancel
Kode Barang
Group New
Harga Beli
Satuan
Kategori New
Harga Jual
Kelompok New
Discount
Nama Barang
Umum
Simpan Clear Cancel
Stok
Kode Stok
Jumlah Barang
Reorder Point
Per Tanggal
98
3.2.7.2.7. Form Data Kantor
Gambar 3.56 User Interface Data Kantor
3.2.7.2.8. Form Data Petugas
3.2.7.2.9.
Gambar 3.57 User Interface Data Petugas
DATA LOKASI KANTOR …
ID Kantor
Alamat Kantor
Kota
Kecamatan
Telpon
Next Prev
ADD
DATA PETUGAS …
ID Petugas
Nama
Privilege
Lokasi Kantor
Edit Save
ADD
Edit Save
Del Exit
ID P etugas N ama P rivileges Lo kasi Kanto r
99
3.2.7.2.9. Form Penjualan
Gambar 3.58 User Interface Penjualan Pusat
3.2.7.2.10. Form Laporan
Gambar 3.59 User Interface Laporan Pusat
INPUT TRANSAKSI TUNAI
Nota
Customer Barang
Kode Customer
Nama Customer
Alamat
Kota
Klasifikasi Langganan
Telpon
Kode Barang
Nama Barang
Jml
Harga
Disc.
Sub Total
Kode Barang
Harga
Disc
Jml Item
Sub Total
Total
Bayar
Kembali
LAPORAN
Tanggal Awal
Tanggal Akhir
Cetak
Lihat
No Jual Tgl Kode Brg Jumlah Nama Brg Harga Disc Sub Total
Lokasi
100
3.2.8. Perancangan Output
3.2.8.1. Nota Penjualan
Gambar 3.60 Output Nota Penjualan
NKI PREMBUN
Alamat
No. Telpon
Nota Penjualan
Tanggal / Jam
Kode Customer
Nama Customer
Kode
Penjualan
N ama B arang H arga Jml D isc Sub T o ta l
Jumlah :
Bayar :
Kembali :
101
3.2.8.2. Laporan Penjualan
Gambar 3.61 Output Laporan Penjualan
LAPORAN PENJUALAN
PT. NKI PREMBUN
Periode tgl/bln/thn Sampai tgl/bln/thn
no_penjualan Tgl_Penjualan Kode_brg Jml_item Nama_barang Hrg_jual discount Sub_total
Tanggal_Cetak halaman
102
BAB 4
IMPLEMENTASI SISTEM
4.1. Karakteristik Sistem
Sistem yang dibuat terdiri dari dua bagian yaitu sistem di kantor
pusat yang berfungsi sebagai server aplikasi dan sistem di kantor cabang
yang berfungsi sebagai client aplikasi. Pada implementasinya, dimungkinkan
dalam sebuah kantor cabang terdapat lebih dari satu aplikasi client yang
berjalan tergantung keperluan. Aplikasi server dan aplikasi client dibedakan
dari struktur database dan metode untuk penanganan koneksinya.
Dari aplikasi client akan dilakukan input data penjualan baru, data
customer baru dan data order barang ke database client, membuat file XML
untuk setiap data tersebut, kemudian mengirimkan file tersebut ke aplikasi
server melalui jaringan internet. Aplikasi client juga dapat mengirimkan
perubahan data customer yang terjadi di database dan mengirimkan
perubahan tersebut dalam bentuk file XML ke server. Aplikasi client juga
dapat menerima dan memproses file XML dari server. Client akan
melakukan pengecekan terhadap nama file dari server untuk menentukan
langkah selanjutnya.
Pada sisi server, begitu terdeteksi ada file baru yang ditujukan
untuknya, maka server akan melakukan pengecekan nama file tersebut untuk
menentukan langkah yang harus diambil selanjutnya dan dari kantor mana
103
file tersebut berasal. Bila file tersebut adalah file penjualan, maka server
akan menyimpan data dari XML tersebut ke tabel penjualan.
4.2. Perangkat Lunak yang Digunakan Dalam Pembuatan Sistem
Perangkat lunak yang digunakan untuk membangun sistem ini adalah :
1. Sistem Operasi : Sistem Operasi Windows XP
2. IDE : NetBeans 5.5
3. Java Development Kit : J2SDK 1.6
4. Server Data Base : MySQL Server 5.018
5. Database Tool : SQLyog 5.14
4.3. Implementasi Database
Database Server yang digunakan dalam implementasi sistem ini
adalah MySQL Server 5.018. Database dan tabel – tabel yang digunakan
dibuat dengan menggunakan tool SQLyog 5.14. Database yang dibuat ada
dua macam yaitu :
a. Tabel yang dibuat untuk kantor cabang sesuai dengan desain antara lain:
1. Tabel Customer
2. Tabel Lokasi_Tempat_Tinggal
3. Tabel Barang
4. Tabel Gruopb
5. Tabel Kategori
6. Tabel Kelompok
104
7. Tabel Info_Stok
8. Tabel Satuan
9. Tabel Jual
10. Tabel Detil_Penjualan
11. Tabel OrderBarang
12. Tabel Detil_Order
13. Tabel Faktur
14. Tabel Detil_faktur
b. Tabel yang dibuat untuk kantor Pusat sesuai dengan desain antara lain:
1. Tabel Customer
2. Tabel Lokasi_Tempat_Tinggal
3. Tabel Barang
4. Tabel Groupb
5. Tabel Kategori
6. Tabel Kelompok
7. Tabel Info_Stok
8. Tabel Satuan
9. Tabel Jual
10. Tabel Detil_Penjualan
11. Tabel OrderBarang
12. Tabel Detil_Order
13. Tabel Faktur
14. Tabel Detil_faktur
105
15. Tabel LokasiKantor
16. Tabel Petugas
4.4. Setting koneksi dari Java ke MySQL ( koneksi.java )
Untuk melakukan koneksi antara Java dengan MySQL server,
maka harus digunakan suatu driver / interface JDBC ( Java DataBase
Connectivity ) yang berisi kelas – kelas untuk mengakses database server
pada level bawah pemrograman. Driver yang digunakan pada sistem ini
adalah mysql-connector-java-5.0.4-bin.jar. Berikut ini adalah langkah-
langkah serta method untuk koneksi dari Java ke database :
1. Lakukan loading Connector/J Driver.
Proses ini dimulai dengan pemaggilan method Class.forName(parameter);
2. Menggunakan DriverManager untuk melakukan koneksi ke database.
Proses ini adalah proses yang sangat penting karena di proses ini terjadi
pembuatan koneksi antara program dengan MySQL. Method yang
dipangil adalah DriverManager.getConnection(urldb,user,password);
Parameter untuk koneksi ke database kantorCabang adalah :
urldb = "jdbc:mysql://localhost:3306/kantorcabang" user = “root”; password = “”;
Parameter untuk koneksi ke database kantorPusat adalah :
urldb = "jdbc:mysql://localhost:3306/kantorpusat" user = “root”; password = “”;
public Connection try2ConnectMySQL(){ try { Class.forName("org.gjt.mm.mysql.Driver" ); } catch(ClassNotFoundException cnfe) { System.err.println("Error Loading Drive r: "+cnfe);
106
} try{ String urldb="jdbc:mysql://localhost:33 06/kantorcabang"; koneksi = DriverManager.getConnection(u rldb,"root",""); statusKoneksi=true; } catch(Exception e){ System.err.println("Error Database: Ga Bisa Connect"); JOptionPane.showMessageDialog(null,"<ht ml>Koneksi DataBase Gagal,<br>Cek DataBase Server Anda!!</html>") ; } return koneksi; }
4.5. Query dari Java ke MySQL ( QueryHandler.java )
Perintah – perintah query yang digunakan dalam sistem merupakan
sintaks dasar SQL misalnya insert, select ,update, delete.
try{ connect=koneksi.try2ConnectMySQL(); Statement st=connect.createStatement(); int success=st.executeUpdate(insertStat ement); st.close(); connect.close(); return success; } catch(SQLException ex){ ex.printStackTrace(); return 0; }
Perintah executeUpdate(sql) digunakan untuk melakukan insert
maupun update ke database. Untuk select menggunakan perintah
executeQuery(sql) Sedangkan untuk delete menggunakan perintah
execute(sql) dimana sql adalah parameter perintah query-nya.
4.6. Aplikasi Client
4.6.1. Komunikasi Client Server ( FileSender_Client.java )
Kelas ini digunakan untuk menangani koneksi dan komunikasi
antara aplikasi Server dan aplikasi Client. Empat langkah pembuatan client :
107
1. Membuat object socket untuk client.
Fungsi tryToConnect() pada kelas fileSender_Client :
public Boolean tryToConnect(){ labelStat.setText("Connecting.."); try { socket = new Socket(opt.getServerURL(), 4711); JOptionPane.showMessageDialog(null,"Kon eksi ke Kantor Pusat Berhasil!!!"); labelStat.setForeground(new java.awt.Co lor(255,0,0)); labelStat.setText("Connected"); return true; } catch(Exception e){ JOptionPane.showMessageDialog(null,"<ht ml>Koneksi Ke Server <strong><font color='red'>Gagal!!!</html>","Connect ion Failed",JOptionPane.ERROR_MESSAGE); labelStat.setText("Failed"); labelStat.setForeground(new java.awt.Co lor(255,0,0)); return false; } }
Bagian utama dalam fungsi diatas adalah pembuatan objek socket
dengan memanggil konstruktor kelas Socket dengan parameter alamat IP
dari server dan nomor port server.
2. Mendapatkan ObjectInputStream dan ObjectOutputStream dari socket
Fungsi runClient() pada kelas fileSender_Client :
public void runClient() { try { System.out.println("Client Run"); InputStream in = socket.getInputStream(); OIS=new ObjectInputStream(in); do{ String file_name = (String) OIS.readObjec t(); if(file_name.endsWith("2.xml")||file_name.e ndsWith("All.xml")){ File file=new File(file_name); FileOutputStream FOS=new FileOutputStream(u serDir+file); byte[] outBuffer = new byte[socket.getRecei veBufferSize()]; int bytesReceived = 0; while((bytesReceived = OIS.read(outBuff er)) > 0||!OIS.readObject().equals("END")) { FOS.write(outBuffer,0,bytesReceived ); } JOptionPane.showMessageDialog(null,"Fil e Nyampe ==>"+file_name);
108
} while(true); }
Objek InputStream digunakan untuk mengambil data – data
sederhana dari socket. Untuk kemudahan dan fleksibilitas dalam
pembacaan data dari socket, maka digunakan objek ObjekInputStream .
FungsikirimFile() pada kelas fileSender_Client :
try { OutputStream os = socket.getOutputStrea m(); if(OOS==null){ OOS=new ObjectOutputStream(os); OOS.flush(); }
Objek OutputStream digunakan untuk menuliskan data – data
sederhana ke socket. Untuk kemudahan dan fleksibilitas dalam penulisan
data ke socket, maka digunakan objek ObjekOutputStream .
3. Memproses komunikasi
Fungsi runClient() pada kelas fileSender_Client :
while((bytesReceived = OIS.read(outBuffer)) > 0||!OIS.readObject().equals("END")) { FOS.write(outBuffer,0,bytesReceived ); } JOptionPane.showMessageDialog(null,"Fil e Nyampe ==>"+file_name);
Fungsi diatas akan melakukan looping sampai ditemukan object
yang berupa nama file pada socket. File kemudian akan dibaca per byte
dari socket dan menuliskannya pada harddisk sampai ditemukan string END
yang berarti file sudah selesai dibaca dan fungsi akan melanjutkan looping.
109
Fungsi kirimFile() pada kelas fileSender_Client :
public void kirimFile(){ try { OutputStream os = socket.getOutputStrea m(); if(OOS==null){ OOS=new ObjectOutputStream(os); OOS.flush(); } int cnt_files = 1; for (int cur_file=0; cur_file<cnt_files ; cur_file++) { OOS.writeObject(fileName); OOS.flush(); JOptionPane.showMessageDialog(null,"And a akan mengirim file -> "+fileName); FIS=new FileInputStream(new File(userDi r+fileName)); byte[] nextBytes = new byte[socket.getS endBufferSize()]; int bytesRead = 0; while((bytesRead = FIS.read(nextBytes)) > 0) { OOS.write(nextBytes,0,bytesRead); OOS.flush(); } OOS.writeObject("END"); JOptionPane.showMessageDialog(null,"Fil e Terkirim"); } } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null,"Error Kir im File"); } }
Ketika baris OOS.writeObject(fileName) dijalankan, fungsi akan
menuliskan nama file ke socket sebagai parameter awal bagi server.
Kemudian, fungsi akan membaca file dari harddisk byte per byte kemudian
menuliskannya ke socket melalui objek ObjekOutputStream . Setelah file
selesai dituliskan, fungsi akan menuliskan string END ke socket sebagai
informasi bahwa file sudah selesai dituliskan.
4. Menutup koneksi.
110
4.6.2. Form Login ( LoginDulu.java )
Gambar 4.1 Form Login Aplikasi Cabang
Halaman diatas ditampilkan ketika program pertama kali
dijalankan. Ketika tombol login di-klik, maka akan dilakukan pengecekan
terhadap user name, password dan hak akses dari user yang bersangkutan.
Ada empat jenis hak akses yaitu : petugas cabang, kasir cabang, petugas
pusat, kasir pusat. Kasir cabang, kasir pusat dan petugas cabang hanya bisa
login ke sistem melalui kantornya saja sedangkan petugas pusat bisa login
di semua kantor.
try { String sql="select nama,hak_akses from kanto rpusat.petugas where NIP like '"+user+"' and password_2 like '"+psswd+"' ;"; Statement st=koneksi.createStatement(); rs=st.executeQuery(sql); if(rs.next()){ uName=rs.getString(1); hakAkses=rs.getInt(2); s=true; } }
111
4.6.3. Form Menu Utama ( MainMenu_cabang.java )
Halaman ini akan tampil ketika user telah berhasil melewati proses
login. Pada kelas ini pertama kali akan dicek hak akses dari user yang
login untuk mementukan menu program yang bisa digunakan.
Gambar 4.2 Form Menu Utama Aplikasi Cabang
Terdapat empat menu utama program ini, yaitu menu File, Master,
Transaksi, Help. Fungsi masing – masing menu adalah :
1. File
Nama Menu Item Fungsi
Switch User Berganti User
Exit Keluar dari program
Tabel 4.1 Fungsi Menu File Aplikasi Cabang
112
2. Master
Nama Menu Item Fungsi
Customer Memanggil form data Customer
Barang Memanggil form data Barang
Tabel 4.2 Fungsi Menu Master Aplikasi Cabang
3. Transaksi
Nama Menu Item Fungsi
Penjualan Memanggil form Penjualan
Laporan Memanggil form Laporan
Tabel 4.3 Fungsi Menu Transaksi Aplikasi Cabang
4. Help
Nama Menu Item Fungsi
User Manual Memanggil user Manual program
About Informasi tentang sistem
Tabel 4.4 Fungsi Menu Help Aplikasi Cabang
Fungsi openMenu() pada kelas MainMenu_cabang :
private static void openMenu(){ fileMenu.setEnabled(true); masterMenu.setEnabled(true); transaksiMenu.setEnabled(true); helpMenu.setEnabled(true); if(hakAkses == 4){ butAddCust.setVisible(false); } else{ butAddCust.setVisible(true); } }
Dari halaman utama ini, fungsi koneksi dari client ke server mulai
diinisialisasi. Aplikasi akan mencoba melakukan koneksi ke client, jika
113
berhasil maka koneksi ini akan dipelihara sampai program ditutup. Jika
tidak berhasil melakukan koneksi, maka program harus di – restart.
Koneksi ini ditangani oleh kelas fileSender_Client. Ketika koneksi sudah
terbentuk, maka fungsi runClient() akan dijalankan untuk menunggu file
yang dikirimkan dari server. Contoh pemrosesan file XML adalah :
Fungsi getDataSatuanFromXML() pada kelas GetDataBarangFromXML :
public void getDataSatuanFromXML(String fileName){ BarangHandler barangHandler = new BarangHan dler(); File file = new File(userDir+fileName); DocumentBuilderFactory docBuildFac=DocumentBuilderFactory.newInstance(); DocumentBuilder docBuild = null; Document doc = null; try { docBuild=docBuildFac.newDocumentBuilder (); } catch (ParserConfigurationException ex) { ex.printStackTrace(); } try { doc=docBuild.parse(file); } catch (SAXException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } NodeList node=doc.getElementsByTagName("Dat aSatuan"); Element tabSatuan = (Element) node.item(0); NodeList rowTable = tabSatuan.getElementsBy TagName("Row"); Vector vSat = new Vector(); for(int i=0;i<dataSatuan.length;i++){ Element elementDSatuan = (Element) rowT able.item(0); NodeList nodeDSatuan = elementDSatuan.getElementsByTagName((String) dataSa tuan[i]); Element isiData = (Element) nodeDSatuan .item(0); String result = getCharacterDataFromEle ment(isiData); vSat.add(result); } System.out.println("result "+vSat); barangHandler.insertSatuanFromXML(vSat); }
4.6.4. Form Data Customer ( IframeDataCustomer.java )
Kelas ini menangani antar muka dan tampilan program ketika
melakukan penanganan data customer. Di dalam kelas ini terdapat instance
114
dari objek kelas CustomerHandler yang menampung method – method
untuk penanganan data customer.
Gambar 4.3 Form Data Customer Aplikasi Cabang
Data customer yang ditangani oleh program adalah data umum dan
data lokasi tempat tinggal karena seorang customer bisa saja memiliki
lokasi tempat tinggal yang berbeda dengan lokasi usaha. Halaman ini
hanya digunakan untuk menampilkan data customer dan mengedit data
tersebut. Tombol berikut digunakan untuk menampilkan data customer
selanjutnya sedangkan tombol sebelum digunakan untuk menampilkan
data customer pada posisi sebelumnya.
115
Fungsi getDataFromCustomer() pada kelas CustomerHandler :
public Vector getDataFromCustomer(){ Vector v=new Vector(); String sql="SELECT kode_customer,nama_customer,alamat,kota,no_telpon,k ecamatan,tanggal_lahir,tanggal_terdaftar,Mulai_usaha,status_bangunan,klas ifikasi_langganan,noKTP from customer;"; try { v=QH.getData(sql); this.setVector(v); } catch (Exception ex) { ex.printStackTrace(); } return v; }
Fungsi diatas akan dijalankan ketika halaman data customer
dibuka. Fungsi ini akan mengambil seluruh data customer dari database
dan kemudian akan disimpan pada sebuah variabel vector untuk
mempermudahkan proses navigasi yaitu untuk menampilkan data sebelum
atau sesudah posisi yang ditentukan.
Pada halaman ini disediakan fasilitas untuk melakukan pencarian
data berdasarkan kode atau nama customer. Ketika pencarian memberikan
hasil, maka sebuah tabel yang menampung data customer yang dicari akan
ditampilkan.
Gambar 4.4 Form Tabel Search Customer Aplikasi Cabang
116
Fungsi ambilData pada kelas TabelCustomer :
private void ambilData(int kat,String paramSearch) { data=new Object[tF.getRowCount()][22]; data=(Object[][]) tF.getDataFromCustomer(k at,paramSearch); }
Fungsi diatas dipanggil pada saat pada konstruktor kelas
TabelCustomer dijalankan. Fungsi akan mengambil data customer dari
database dan menyimpannya ke variabel array[][] .
Fungsi updateCustData() pada kelas CustomerHandler :
int succ=QH.updateDataCustomer(sql); try { getDataCust=new GetData_Cust_Loc_2_ XML(); getDataCust.CreateXML(0,kode_Cust); } catch (IOException ex) { ex.printStackTrace(); }
Tombol edit digunakan untuk membuka field – field data pada
tampilan. Setelah data baru dimasukkan dan tombol save diklik, fungsi
yang dikerjakan adalah fungsi diatas.
Pada fungsi ini juga dilakukan pembuatan file XML yang isinya
adalah tentang data customer baru setelah di-edit. Yaitu pada baris
getDataCust.CreateXML(0,kode_Cust). Parameter dengan nilai 0 berarti
file yang dibuat akan berisi data edit customer.
4.6.5. Form Tambah Customer ( FrameTambahCustomer.java )
Form ini bisa diakses dari menu utama maupun dari halaman data
customer. Pada form ini ada beberapa kelas yang terlibat yaitu kelas
FrameTambahCustomer yang akan menangani tampilan, CustomerHandler
yang akan menangani fungsi insert ke database, kelas
117
GetData_Cust_Loc_2_XML yang akan menagani pembuatan file XML dan
kelas fileSender_Client untuk menangani pengiriman data.
Gambar 4.5 Form Tambah Customer Aplikasi Cabang
Ketika tombol Simpan diklik, maka aplikasi akan menyimpan data
customer baru ke dalam database, dan kemudian fungsi pembuatan XML
customer baru akan dijalankan.
Fungsi createXML() Pada Kelas GetData_Cust_Loc_2_XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder =factory.newDocumentB uilder(); Document doc = builder.newDocument(); Element results = doc.createElement("Brach_Da ta"); doc.appendChild(results); Element tab1 = doc.createElement("Customer"); results.appendChild(tab1); sql = "select * from customer where kode_cus tomer like '"+paramKodeCust+"'"; stmt = con.createStatement(); rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int colCount = rsmd.getColumnCount(); while (rs.next()) {
118
kode_cust=rs.getString(1); Element row = doc.createElement("Row"); tab1.appendChild(row); for (int ii = 1; ii <= colCount; ii++) { String columnName = rsmd.getColumnName(i i); Object value = rs.getObject(ii); Element node = doc.createElement(columnN ame); node.appendChild(doc.createTextNode(valu e.toString())); row.appendChild(node); } } Element tab2 = doc.createElement("Lokasi_tem pat_tinggal"); results.appendChild(tab2); Vector v=QH.getData("select * from lokasi_tem pat_tinggal where kode_customer like '"+paramKodeCust+"'"); int kol=QH.getMaxCol(); ResultSetMetaData RS=QH.getRSMD(); for(int baris=1;baris<=kol;baris++){ Element row2 = doc.createElement("Row"); tab2.appendChild(row2); int b=1; for(int a=0;a<=6;a++){ String columnName = RS.getColumnName(b) ; Element node = doc.createElement(column Name); node.appendChild(doc.createTextNode((St ring) EkstrakResultVector.getValueFromVector(v,baris-1,a) )); row2.appendChild(node); b++; } } System.out.println(getDocumentAsXml(doc)); fileoutput.println(getDocumentAsXml(doc));
Fungsi ini akan membuat dokumen XML secara DOM ( Document
Object Model ). Fungsi akan melakukan dua kali seleksi database, yaitu
untuk tabel customer dan untuk tabel lokasi_tempat_tinggal. Struktur
XML ini akan dipakai untuk data customer baru dan untuk data customer
edit.
Setelah file selesai dibuat, maka akan dikirimkan ke server dengan
memanggil fungsi kirimFile(String file) dari kelas fileSender_Client.
119
4.6.6. Form Data Barang ( IframeDataBarang.java )
Dari form ini user dapat melihat data barang yang akan ditampilkan
satu per satu secara berurutan, user dapat menekan tombol next untuk
melihat data selanjutnya atau tombol prev untuk melihat data sebelumnya.
Pada form ini juga disediakan fasilitas pencarian barang berdasarkan kode
barang, nama barang atau barang yang harus diorder.
Gambar 4.6 Form Data Barang Tab Data Umum Aplikasi Cabang
Fungsi getAllDataBarang_joinTable() pada kelas BarangHandler :
public Vector getAllDataBarang_joinTable(){ Vector vBarang=new Vector(); String sql="select b.kode_barang,b.nama_barang,b.harga_beli,b.harga_j ual,b.discount,b.discountDistributor,"+ "b.discountAgen,b.discountSubAgen,b.discountpengece r,g.nama_group,"+ "kat.nama_kategori,k.nama_kelompok,i.jumlah,i.per_t anggal,i.reorder_point,s.satuanbarang"+
120
" from barang b,kelompok k,kat egori kat,groupb g,info_stok i,satuan s"+ " where b.id_kelompok=k.id_kelo mpok "+ " and k.id_kategori = kat.i d_kategori and kat.id_group= g.id_group"+ " and b.kode_info_stok = i. kode_info_stok and b.satuan=s.id_satuan"; try { vBarang=QH.getData2(sql); vJoinBarang=vBarang; } catch (Exception ex) { ex.printStackTrace(); } return vBarang; }
Fungsi diatas akan memanggil fungsi lain yang ada di kelas
QueryHandler untuk melakukan query ke database. Query yang akan
dieksekusi dipassingkan dari kelas BarangHandler . Hasil query akan
disimpan pada variabel vector .
Gambar 4.7 Form Data Barang Tab Order Barang Aplikasi Cabang
121
Form ini tidak bisa diakses ketika user login sebagai kasir, harus
bertipe akses petugas cabang. Dari form ini petugas dapat melihat data
barang yang telah memasuki reorder point. Petugas akan mengisikan
jumlah order untuk masing – masing item barang. Ketika tombol kirim
order diklik, terjadi proses penyimpanan data order ke tabel order dan
detil order.
Fungsi saveJTableOrder2DBase() pada kelas OrderHandler :
public boolean saveJTableOrder2DBase(String orderID,javax.swing.table.TableModel model){ String sqlOrder="insert into OrderBarang values('"+orderID+"',now(),0)"; if(queryHandler.insert(sqlOrder)!=0){ for(int baris=0;baris<model.getRowCount();b aris++){ String sqlDetilOrder="insert into detil _order values('"+orderID+"','"+model.getValueAt(baris,0)+" ','"+model.getValueAt(baris,3)+"')"; queryHandler.insert(sqlDetilOrder); } updateStatusOrder(); return true; } else{ return false; } }
Fungsi diatas meminta parameter yang bertipe TableModel,
sehingga tabel order pada tampilan akan dikirimkan ke fungsi ini sebagai
parameternya. Fungsi akan melakukan looping untuk tiap baris dari tabel
order untuk mengambil data – data yang diperlukan dan kemudian
menyimpan ke database.
Fungsi yang dijalankan selanjutnya adalah fungsi pembuatan XML
getDataOrder.CreateXMLFromBDase(Field_OrderID.getTe xt()); dan
fungsi pengiriman file kirim.setName("DataOrderBranch--");
kirim.kirimFile(); .
122
Gambar 4.8 Form Data Barang Tab Pengiriman Aplikasi Cabang
Dari form ini bisa dilihat data order yang pernah dikirim ke kantor
pusat. Ada dua macam data yang bisa ditampilkan yaitu data order barang
yang belum diproses oleh kantor pusat dan data order barang yang sudah
diproses oleh kantor pusat beserta data pengirimannya tetapi belum di-
approve oleh kantor cabang.
User akan memilih kode order, bila order tersebut sudah diproses
oleh kantor pusat, maka data pengiriman akan tertampil. Ketika tombol
OK diklik, maka akan dilakukan update jumlah data barang pada tabel
info_Stok dengan memanggil fungsi orderHandler.updateInfoStok(); .
Setelah data jumlah berhasil diupdate, maka akan dilakukan update status
123
pada tabel order dengan nilai 1 yang artinya order telah dipenuhi dengan
menjalankan baris orderHandler.updateStatKirim(kodeorder).
4.6.7. Form Penjualan ( IframeDataPenjualan.java )
Ini adalah form yang akan selalu dijalankan oleh kasir, terdapat tiga
bagian utama tampilan ini yaitu bagian customer, bagian barang dan
bagian tabel penjualan. User bisa mengisikan data ID customer bila
pembeli yang dilayani sudah terdaftar pada sistem, tetapi jika belum maka
field bisa dibiarkan kosong.
Gambar 4.9 Form Data Penjualan Aplikasi Cabang
Dengan menekan tombol enter ketika kursor masih berada pada
field ID Customer, program akan melakukan pengecekan apakah kode
124
yang dimasukan valid, bila ya maka data customer ditampilkan. Baris
program yang dieksekusi adalah customerHandler.getDataFromCustomer2(
kode );
Kursor kemudian akan berpindah ke field kode barang, setelah
diisi dan menekan enter, maka akan dilakaukan pengecekan kode barang
dan jumlah stok barang. Jika kode yang dimasukkan benar, maka data
barang dan jumlah stok-nya akan ditampilkan.
Baris program yang dijalankan adalah
barangHandler.getDataFromBarangTable_Jual(fieldKode Barang.getText(
),fieldIDCustomer.getText()).
Parameter kode customer diperlukan untuk menentukan jumlah
discount yang akan diterima oleh pembeli.
Setelah field jumlah diisi dan tombol enter ditekan, maka
dilakukan kalkulasi harga dan pengurangan stok sementara. Jika enter
ditekan sekali lagi, maka data tersebut akan tersimpan pada tabel
penjualan.
Setelah transaksi dilakukan dan tombol nota ditekan, maka
aplikasi akan mencetak nota penjualan, membuat file XML penjualan dan
mengirimnya ke server.
Fungsi cetakNotaPenjualan() pada kelas PenjualanHandler :
private void cetakNotaPenjualan(String noPenjualan) { Connection conn=null; koneksi=new Koneksi(); conn=koneksi.try2ConnectMySQL(); HashMap map = new HashMap(); map.put("no_penjualan",noPenjualan); map.put("total_hrg",getTotalHarga()); map.put("bayar",jumBayar); map.put("kembali",kembalian);
125
JasperReport jasperReport=null; JasperPrint jasperPrint=null; String jasperFile = System.getProperty("use r.dir")+ System.getProperty("file.separator") + "Report" + System.getProperty("file.separator")+ "notaPj2.jasp er"; try { jasperPrint = JasperFillManager.fillRep ort(jasperFile, map, conn); } catch (JRException ex) { ex.printStackTrace(); } JasperViewer v=new JasperViewer(jasperPrint); v.viewReport(jasperPrint,false); }
Untuk fasilitas pencetakan digunakan Jasper Report, yang
merupakan paket open source untuk data printing. HasMap digunakan
untuk menampung parameter – parameter yang diperlukan oleh jasper.
jasperPrint akan menangani pengaksesan printer dan kemudian
melakukan pencetakan nota. JasperViewer akan membuat tampilan secara
print Preview.
4.6.8. Form Laporan ( IframeLaporan.java )
Gambar 4.10 Form Laporan Aplikasi Cabang
126
Dari form ini bisa dilihat dan dicetak data – data penjualan
berdasarkan waktu terjadinya. User bisa mengisikan variabel tanggal awal
dan tanggal akhir penjualan yang akan dicetak. Tombol tampil akan
menampilkan data penjualan pada tabel, sedangkan tombol print
digunakan untuk mencetak data tersebut.
4.7. Aplikasi Server
Secara garis besar, aplikasi server mempunyai cara kerja dan fungsi – fungsi
yang sama dengan aplikasi client. Pada server terdapat beberapa kemampuan
tambahan yang akan dijelaskan di bawah.
4.7.1. Komunikasi Client Server ( SocketConnectionServer.java )
Kelas ini digunakan untuk menangani proses komunikasi antara
client dengan server dari sisi server. Lima langkah pembuatan server
adalah :
1. ServerSocket object
Menentukan nomor port yang akan dipakai.
Fungsi listenerClient pada kelas SocketConnectionServer :
public void ListenerClient(){ try { listener = new ServerSocket(port); labelServer.setText("Listening Client..."); while (true) { socket[count] = listener.accept(); labelServer.setText("New Connection From "+socket[count].getInetAddress()); System.out.println("Connection "+count+" Wi th Socket "+count+" --> "+socket[count]+" Active!!"); new Thread(this).start(); labelServer.setText("Listening Client....") ;
127
count=count+1;
untuk aplikasi server, akan digunakan dua jenis objek socket yaitu
ServerSocket untuk menangani koneksi dari client dan socket untuk
melakukan komunikasi.
2. Setiap koneksi dari Client akan ditangani oleh object socket .
Server akan melakukan looping sampai ada client yang terkoneksi.
Fungsi listenerClient pada kelas SocketConnectionServer :
public void ListenerClient(){ try { listener = new ServerSocket(port); labelServer.setText("Listening Client..."); while (true) { socket[count] = listener.accept(); labelServer.setText("New Connection From "+socket[count].getInetAddress()); System.out.println("Connection "+count+" Wi th Socket "+count+" --> "+socket[count]+" Active!!"); new Thread(this).start(); labelServer.setText("Listening Client....") ; count=count+1;
Ketika dideteksi ada client yang ingin melakukan koneksi, maka
akan diberikan sebuah objek socket untuk menangani komunikasi dengan
client tersebut. Karena aplikasi ini akan menangani banyak client
sekaligus, maka socket disimpan dalam variabel array . Setelah socket
diinisialisasi, maka baris new Thread(this).start(); dieksekusi.
Penggunaan thread dimaksudkan agar koneksi dapat berjalan bersamaan
untuk semua client.
128
3. Mendapatkan ObjectInputStream dan ObjectOutputStream dari socket.
Fungsi run() pada kelas SocketConnectionServer :
public void run() { int a=count; System.out.println("Socket "+a); System.out.println("Thread "+a); try { JOptionPane.showMessageDialog(null,"memproses Stream.."); InputStream in = socket[a-1].getInputStream() ; OIS=new ObjectInputStream(in); do{ file_Name = (String) OIS.readObject(); File file=new File(userDir+file_Name); FileOutputStream FOS=new FileOutputStream(f ile); byte[] outBuffer = new byte[socket[a-1].get ReceiveBufferSize()]; int bytesReceived = 0; while((bytesReceived = OIS.read(outBuff er)) > 0||!OIS.readObject().equals("END")) { FOS.write(outBuffer,0,bytesReceived ); //System.out.println("Writing....." ); }
Digunakan ObjectInputStream untuk menerima data dari socket
karena dapat menerima data yang berupa objek dari socket .
ObjectInputStream ini diturunkan dari object InputStream .
Fungsi kirim() pada kelas SocketConnectionServer :
public void kirim(String file) { for(int i=0;i<count;i++){ if(socket[i]!=null&&!socket[i].isClosed ()){ try { JOptionPane.showMessageDialog(null,"Kirim k e Socket -> "+socket[i]+" soket ke "+i); System.out.println(socket[i]+" Sockettt"); OutputStream os = socket[i].getOutputSt ream(); if(OOS[i]==null){ OOS[i]=new ObjectOutputStream(os); OOS[i].flush(); }
Digunakan ObjectOutputStream untuk menuliskan data pada socket .
ObjectOutputStream merupakan turunan dari OutputStream yang
menggunakan method getInputStream pada socket.
129
4. Fase Proses
Server dan Client berkomunikasi via stream
Fungsi run() pada kelas SocketConnectionServer :
public void run() { int a=count; System.out.println("Socket "+a); System.out.println("Thread "+a); try { JOptionPane.showMessageDialog(null,"memproses Stream.."); InputStream in = socket[a-1].getInputStream() ; OIS=new ObjectInputStream(in); do{ file_Name = (String) OIS.readObject(); File file=new File(userDir+file_Name); FileOutputStream FOS=new FileOutputStream(f ile); byte[] outBuffer = new byte[socket[a-1].get ReceiveBufferSize()]; int bytesReceived = 0; while((bytesReceived = OIS.read(outBuff er)) > 0||!OIS.readObject().equals("END")) { FOS.write(outBuffer,0,bytesReceived ); //System.out.println("Writing....." ); }
Fungsi diatas akan melakukan looping sampai ditemukan object yang
berupa nama file pada socket. File kemudian akan dibaca per byte dari socket dan
menuliskannya pada harddisk sampai ditemukan string END yang berarti file sudah
selesai dibaca dan fungsi akan melanjutkan looping.
Fungsi kirim() pada kelas SocketConnectionServer :
for (int cur_file=0; cur_file<cnt_files; cur_file++ ) { OOS[i].writeObject(file); OOS[i].flush(); JOptionPane.showMessageDialog(null,"Anda a kan mengirim file -> "+file); FileInputStream FIS=new FileInputStream(new File(userDir+file)); byte[] nextBytes = new byte[socket[i].getSe ndBufferSize()]; int bytesRead = 0; while((bytesRead = FIS.read(nextBytes)) > 0) { OOS[i].write(nextBytes,0,bytesRead); OOS[i].flush(); } OOS[i].writeObject("END"); }
130
Ketika baris OOS.writeObject(fileName) dijalankan, fungsi akan
menuliskan nama file ke socket sebagai parameter awal bagi server.
Kemudian, fungsi akan membaca file dari harddisk byte per byte
kemudian menuliskannya ke socket melalui objek ObjekOutputStream .
Setelah file selesai dituliskan, fungsi akan menuliskan string END ke socket
sebagai informasi bahwa file sudah selesai dituliskan.
Pola pengiriman dari server ke client adalah secara broadcast atau
disebar ke seluruh socket yang ada. Sehingga parameter nama file menjadi
sangat penting agar file tersebut tidak salah alamat.
5. Menutup koneksi
try { socket[a-1].close(); } catch (IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null, "Cannot Closing.."); }
Proses ini menggunakan fungsi close yang dilakukan pada socket .
4.7.2. Form Login ( LoginDulu.java )
Cara kerja kelas ini sama dengan kelas login pada aplikasi client.
User yang bisa login ke aplikasi server hanya user dengan tipe akses
petugas pusat dan kasir pusat.
Fungsi doEvent() pada kleas LoginDulu :
connected=koneksi.login(IDField.getText(),psswdFiel d.getText()); if(connected&&lokasiKantor==1){ System.out.println("User : "+koneksi. getUser()+" ,Hak Akses : "+koneksi.getAkses()); statusLogin=connected; userName=koneksi.getUser(); hakAkses=koneksi.getAkses();
131
Baris koneksi.login(IDField.getText(),psswdField.getText ());
Akan melakukan pengecekan terhadap status login dari user, kemudian
akan dicek lagi apakah user yang bersangkutan merupakan petugas yang
terdaftar pada kantor pusat.
4.7.3. Form Menu Utama ( MainMenu_Pusat.java )
Gambar 4.11 Form Menu Utama Aplikasi Server
Halaman ini adalah menu utama pada aplikasi server, fungsi utama
dari aplikasi server sebagian sama dengan aplikasi client. Perbedaan utama
dari fungsi ini adalah pada kemampuannya melayani koneksi dari client,
dan fasilitas untuk mengupdate serta menambahkan data barang, petugas
dan lokasi kantor.
Terdapat empat menu utama program ini, yaitu menu File, Master,
Transaksi, Help. Fungsi masing – masing menu adalah :
132
5. File
Nama Menu Item Fungsi
Exit Keluar dari program
Tabel 4.5 Fungsi Menu File Aplikasi Server
6. Master
Nama Menu Item Fungsi
Customer Memanggil form data Customer
Barang Memanggil form data Barang
Petugas Memanggil form data petugas
Kantor Memanggil form data kantor
Tabel 4.6 Fungsi Menu Master Aplikasi Server
7. Transaksi
Nama Menu Item Fungsi
Penjualan Memanggil form Penjualan
Laporan Memanggil form Laporan
Tabel 4.7 Fungsi Menu Transaksi Aplikasi Server
8. Help
Nama Menu Item Fungsi
User Manual Memanggil user Manual program
About Informasi tentang sistem
Tabel 4.8 Fungsi Menu Help Aplikasi Server
Pada halaman ini akan dilakukan pengecekan terhadap status login
user. Bila user login sebagai petugas pusat maka fungsi server akan aktif,
bila user login sebagai petugas kasir maka fungsi server tidak diaktifkan.
133
Ketika server aktif, maka aplikasi siap menerima koneksi dari
client dan kemudian memproses file yang dikirimkan oleh client. Fungsi
server ini ditagani oleh kelas SocketConnectionServer . Metode
pemrosesan file XML pada sisi server sama dengan metode pemrosesan
pada client.
4.7.4. Form Data Customer ( IframeDataCustomer.java )
Kelas ini mempunyi cara kerja yang sama dengan kelas
IframeDataCustomer pada aplikasi client. Satu perbedaan adalah pada
kelas ini tidak ada fungsi pembuatan dan pengiriman file XML untuk
setiap perubahan data customer.
4.7.5. Form Tambah Customer ( FrameTambahCustomer.java )
Cara kerja kelas ini serupa dengan kelas FrameTambahCustomer
pada aplikasi client. Satu perbedaannya adalah bahwa pada kelas ini tidak
terdapat fungsi untuk membuat file XML dan fungsi pengiriman file
tersebut.
134
4.7.6. Form Data Barang ( IframeDataBrang.java )
Gambar 4.12 Form Data Barang Tab Data Umum Aplikasi Server
Perbedaan form ini dengan form data barang yang ada pada
aplikasi client adalah pada kemampuannya dalam mengedit data barang
dan data stok masing – masing item barang. Untuk setiap data barang yang
diedit, aplikasi akan membut file XML barang dan mengirimkannya ke
client untuk mengupdate data barang di client.
Fungsi createUpdatedItem() pada Kelas DataItemBarang_Into_XML :
DocumentBuilder builder = factory.newDocumentBuilde r(); Document doc=builder.newDocument(); Element result=doc.createElement("dataU pdatedBarang"); doc.appendChild(result); Element tabBrg=doc.createElement("baran g"); result.appendChild(tabBrg); Vector v=QH.getData("select * from bara ng where kode_barang like '"+kodeBar+"'"); int kol=QH.getMaxCol(); ResultSetMetaData RS=QH.getRSMD();
135
for(int baris=1;baris<=kol;baris++){ Element row = doc.createElement("Ro w"); tabBrg.appendChild(row); int b=1; for(int a=0;a<=11;a++){ String columnName = RS.getColum nName(b); Element node = doc.createElemen t(columnName); node.appendChild(doc.createText Node((String) EkstrakResultVector.getValueFromVector(v,baris-1,a) )); row.appendChild(node); b++; } } fileoutput.println(getDocumentAsXml(doc ));
Cara kerja potongan program diatas adalah pertama kali dilakukan
seleksi data ke database, hasil seleksi ini ditampung pada sebuah variabel.
Langkah selanjutnya adalah membuat DOM dari data tersebut. Pada
langkah ini, struktur XML sudah dibuat di memori. Untuk menyimpannya
ke dalam file, maka digunakan fungsi getDocumentAsXml(doc) yang akan
mengubah struktur di memori tersebut ke dalam tipe String dan sekaligus
melakukan pemformatan tampilan dokumen XML.
Gambar 4.13 Form Data Barang Tab Proses Order Barang Aplikasi Server
136
Pada form ini, petugas pusat bisa melihat semua order yang
dikirimkan oleh kantor cabang yang belum diproses. Petugas memilih
kode order yang ada untuk melihat detil ordernya untuk kemudian mengisi
jumlah barang yang akan dikirimkan sebagai pemenuhan order.
Ketika tombol proccess diklik, fungsi yang aka dijalankan adalah
fungsi untuk mengurangi jumlah stok di database kantor pusat untuk
masing – masing item barang, membuat file XML pengiriman. Fungsi
yang menangani hal ini adalah processOrder((String)
comboLokasi.getSelectedItem(),fieldTanggalOrder.get Text(),
data,tableOrder.getModel()). Fungsi yang dikerjakan selanjutnya
adalah pengiriman file XML pada baris socketServer.kirim("Datafaktur-
-"+lokasiKantor.substring(0,1)+".xml"); Penamaan file XML untuk
pengiriman akan tergantung dari kantor cabang mana order berasal.
4.7.7. Form Tambah Barang ( FrameTambahBarang.java )
Gambar 4.14 Form Tambah Data Barang Aplikasi Server
137
Pada form ini, petugas pusat akan mengisikan data barang – barang
baru beserta jumlah stok ke database pusat. Ketika link Group baru
diklik, maka akan tampil sebuah kotak dialog yang meminta input nama
group baru.
Gambar 4.15 Dialog Tambah Group Aplikasi Server
Ketika link kategori baru dikik, maka akan ditampilkan kotak
dialog yang meminta input Kategori baru beserta group untuk kategori
tersebut.
Gambar 4.16 Dialog Tambah Kategori Aplikasi Server
Ketika link Kelompok Baru diklik, maka akan ditampilkan kotak
dialog yang meminta input kelompok baru beserta kategorinya.
Gambar 4.17 Dialog Tambah Kelompok Aplikasi Server
Untuk setiap Group, Kategori dan Kelompok baru yang
ditambahkan, akan dibuat file XML yang akan dikirim ke client.
138
Setelah semua data yang diminta olek form data barang diisi dan
petugas melakukan klik tombol simpan, maka data baru tesebut akan
disimpan ke database. Proses selanjutnya adalah membuat file XML
barang untuk dikirimkan ke seluruh client.
4.7.8. Form Petugas ( FramePetugas.java )
Gambar 4.18 Form Data Petugas Aplikasi Server
Form ini digunakan untuk menangani data – data karyawan yang
terdaftar pada sistem. Dari form ini bisa dilakukan penambahan karyawan
baru, pemberian hak akses pada karyawan, mengubah data karyawan dan
menghapus karyawan.
Pertama kali form ini dibuka, akan dilakukan pengambilan seluruh
data karyawan dan kemudian menampilkannya dalam bentuk tabel.
Fungsi ambilData() pada kelas FramePetugas :
private void ambilData(int posisiCombo,String pSear ch) { petugasHandler=new PetugasHandler(); data=new Object[petugasHandler.getRowCount( )][4];
139
data=(Object[][]) petugasHandler.getDataFromPetugasTable(posisiCombo, pSearch); tablePetugas.setModel(new javax.swing.table.DefaultTableModel(data,namaKolom) { Class[] types = new Class [] { java.lang.String.class, java.lang.S tring.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, false, false, false }; public Class getColumnClass(int columnI ndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIn dex, int columnIndex) { return canEdit [columnIndex]; } }); tablePetugas.setAutoResizeMode(JTable.AUTO_ RESIZE_NEXT_COLUMN); Object ukuran[]={"70","240","80","40"}; for(int i=0;i<4;i++){ tablePetugas.getColumnModel().getColumn(i). setMaxWidth(800); tablePetugas.getColumnModel().getColumn(i).setPrefe rredWidth(Integer.parseInt((String) ukuran[i])); } }
Cara kerja fungsi diatas adalah mengambil seluruh data dari
database dan menyipan data tersebut ke dalam array dua dimensi. Array
dua dimensi tersebut kemudian dikirimkan sebagai parameter pembuatan
tampilan tabel.
Ketika tombol ADD diklik maka akan muncul sebuah kotak dialog
yang meminta input data – data karyawan baru.
140
Gambar 4.19 Dialog Input Petugas Aplikasi Server
Data – data harus diisi dengan lengkap agar proses penyimpaan
data ke dtabase dapat berjalan. Penyimpanan ke database ditangani oleh
baris program petugasHandler.insertPetugas().
Tombol edit digunakan untuk membuka field – field data
customer, kemudian tombol simpan digunakan untuk menyimpan
perubahan data.
4.7.9. Form Kantor ( FrameKantor.java )
Form ini digunakan untuk menangani data kantor – kantor yang
nemjadi bagian dari perusahaan. Yang bisa dilakukan dengan form ini
adalah penambahan data kantor baru dan edit data kantor.
Data kantor ini kan berhubungan dengan data penjualan, sehingga
kantor yang belum terdaftar tidak akan bisa melakukan koneksi.
Form ini akan menampilkan data kantor secara berurutan sehingga
disediakan tombol navigasi next dan prev untuk melihat data sebelumnya
atau sesudahnya. Terdapat fasilitas pencarian sederhana berdasarkan ID
kantor.
141
Gambar 4.20 Frame Data Lokasi Kantor Aplikasi Server
Fungsi ambilData() pada kelas FrameKantor :
private void ambilData(int selector,String value) { lokasiHandler = new LokasiKantorHandler(); lokasiHandler.getDataLokasi(selector,value) ; jumlah = lokasiHandler.getJumlahData(); if(jumlah!=0){ lokasiHandler.setAllVariabel(pos); setField(); if(jumlah==1){ nextBut.setEnabled(false); } else{ nextBut.setEnabled(true); } editBut.setEnabled(true); } else{ }}
Fungsi ini akan mengambil data berdasarkan parameter yang
diberikan. Yaitu ID kantor .
Ketika tombol ADD diklik maka akan ditampilkan dialog yang
meminta input data kantor. Isi data dengan lengkap agar proses
penyimpanan data dapat berjalan.
142
Gambar 4.21 Dialog Input Data Kantor Aplikasi Server
Fungsi simpan() pada kelas DialogTambahKantor :
lokasiHandler = new LokasiKantorHandler(); lokasiHandler.setIDLokasi(fieldIDKantor.get Text()); lokasiHandler.setAlamatLokasi(fieldAlamatKa ntor.getText()); lokasiHandler.setKecamatanLokasi(fieldKecam atanKantor.getText()); lokasiHandler.setKotaLokasi(fieldKotaKantor .getText()); lokasiHandler.setTelponLokasi(fieldTelponKa ntor.getText()); lokasiHandler.simpanLokasiBaru(); this.dispose();
4.7.10. Form Penjualan ( IframePenjualan.java )
Fungsi – fungsi pada kelas ini sama dengan fungsi – fungsi yang
ada pada IframePenjualan di aplikasi client. Pada form penjualan ini tidak
ada fungsi untuk membuat dan mengirimkan file XML penjualan.
Fungsi tambahRow() pada kelas IframePenjualan :
if(0==countModel){ model.addRow(data); } else{ for(int i=0;i<countModel;i++){ if(data[0].equals(jTableTransaksi.getModel().getVal ueAt(i,0))){ System.out.println(data[0]); model.setValueAt(Integer.valueOf(jTableTransaksi.ge tModel().getValueAt(i,3).toString())+Integer.valueOf(data[3].toString()), i,3); model.setValueAt(Integer.valueOf(jTableTransaksi.ge tModel().getValueAt(i,4).toString())+Integer.valueOf(data[4].toString()), i,4); break; }
143
if(i==countModel-1){ model.addRow(data); } } }
Fungsi diatas berguna untuk menambahkan item barang yang akan
dibeli oleh customer ke dalam tampilan Jtable . Pertama kali akan dicek
apakah tabel masih kosong, jika ya maka akan langsung ditambahkan satu
baris data. Ini diakukan dengna mengeksekusi baris model.addRow(data);
Jika tabel sudah ada isinya, maka akan dicek kesamaan kode
barang dari baris sebelumnya dengan kode barang yang akan ditambahkan
ke tabel. Jika cocok, maka yang akan ditambahkan hanya jumlah item dan
total harganya saja.
4.7.11. Form Laporan ( LaporanIFrame.java )
Fungsi – fungsi dan kegunaan form ini sama saja dengan Form
Laporan di aplikasi client. Terdapat sebuah parameter tambahan yang
harus diinputkan selain tanggal awal dan tanggal akhir yaitu lokasi kantor.
Jadi dari kantor pusat bisa dilihat laporan penjualan untuk masing –
maasing kantor cabang.
4.8. Tampilan Halaman Output
4.8.1. Nota Penjualan
Nota penjualan berfungsi sebagai tanda bukti barang – barang yang
telah dijual kepada customer. Berikut ini adalah tampilan Nota Penjualan.
144
Gambar 4.22 Print Out Nota Penjualan
4.8.2. Laporan Penjualan
Laporan penjualan berisi data – data penjualan dalam jangka waktu
tertentu.
145
Gambar 4.23 Print Out Laporan Penjualan
146
BAB 5
ANALISIS HASIL
5. 1. Hasil Pengujian Sistem
Pengujian sistem “X – Sync ( XML Syncronize ) Untuk Sistem
Penjualan” ini dilakukan pada jaringan intranet dengan satu domain. Pengujian
dilakukan dengan memasang beberapa aplikasi client dan satu aplikasi server
dimana pada masing – masing aplikasi yang berjalan terhubung dengan
database yang terinstall secara lokal di komputer tersebut. Server dapat
menerima koneksi dan membangun komunikasi dengan banyak client
sekaligus karena adanya fungsi thread. Koneksi yang dibagun berdasarkan
pada protokol TCP/IP sehingga file yang dikirimkan dari server ataupun dari
client dijamin keutuhannya.
Sistem ini diharapkan dapat diimplementasikan pada jaringan
internet yang sesungguhnya sehingga dapat membantu proses sinkronisasi data
pada perusahaan khususnya untuk data – data penjualan. Dengan kecepatan
dan efisiensi pengiriman data seperti ini, maka karyawan pada level
manajemen untuk mengetahui informasi dari masing – masing kantor cabang
cepat pula sehingga keputusan bisnis juga dapat dibuat secara cepat.
5. 2. Kelebihan Sistem
Sistem “X – Sync ( XML Syncronize ) Untuk Sistem Penjualan” ini
memiliki kelebihan antara lain:
147
1. Untuk pengiriman data, sistem ini menggunakan dokumen XML. Dengan
demikian pemrosesan data dapat dilakukan oleh beberapa model alikasi.
2. Jaringan client server dibangun diatas protokol TCP/IP dan menggunakan
Java Socket yang merupakan tipe koneksi connection Oriented, jadi data
yang dikirimkan akan benar – benar terjamin keutuhannya.
3. Teknologi Java yang digunakan bersifat multiplatform, sehingga bisa
diimplementasikan pada beberapa jenis sistem operasi dengan sedikit
penyesuaian.
5. 3. Kekurangan Sistem
Sistem “X – Sync ( XML Syncronize ) Untuk Sistem Penjualan” ini
memiliki kekurangan antara lain :
1. Sistem ini dibangun dengan Java Socket sehingga koneksi yang didukung
hanya koneksi antar aplikasi Java saja.
2. Sistem hanya menjamin keutuhan file saja, tetapi tidak menangani masalah
keamanan file di jaringan.
3. Dokumen XML yang dikirimkan dari client ke server ataupun dari server
ke client, bukan merupakan format dokumen XML yang valid karena tidak
menggunakan Document Type Definition (DTD).
5. 4. Prospek Pengembangan Sistem
Sistem ini merupakan sistem client server yang dibangun diatas
arsitektur Java socket sehingga komunikasi hanya terbatas antar aplikasi Java
148
saja. Sistem ini bisa dikembangkan dengan menggunakan arsitektur yang lain
misalnya CORBA ( Common Object Request Brokker Application ) sehingga
aplikasi yang bisa saling berkomunikasi tidak terbatas pada satu model saja.
149
BAB 6
PENUTUP
6. 1. Kesimpulan
Sistem “X – Sync ( XML Syncronize ) Untuk Sistem Penjualan”
ini dibangun dengan tujuan untuk mengefisienkan proses pengiriman data
antara kantor cabang dan kantor pusat dalam sebuah perusahaan. Data
yang sebelumnya dikirim secara manual, diganti dengan proses
pengiriman secara otomatis memanfaatkan jaringan internet dan dokumen
XML.
Berdasarkan hasil implementasi dan simulasi yang telah dilakukan,
maka terdapat beberapa hal yang dapat disimpulkan yaitu:
1. Penggunaan teknologi jaringan dan XML sebagai format pertukaran data
sangat tepat dilakukan pada saat sekarang ini karena kemudahan akses
jaringan internet. XML yang dikirimkan berukuran kecil karena dibuat
setiap ada event di database sehingga tidak membebani jaringan.
2. JavaTM Platform dapat digunakan untuk mengimplementasikan sistem ini,
baik pada aplikasi server maupun pada aplikasi client. Komunikasi yang
dibangun berdasarkan Java socket.
3. Dari sisi aplikasi, sistem “X – Sync ( XML Syncronize ) Untuk Sistem
Penjualan” sangat potensial untuk dikembangkan. Sistem bisa
dikembangkan sehingga bisa untuk menagani seluruh data – data
perusahaan misalnya proses pembelian atau bahkan bisa juga
dikembangkan untuk menangani komunikasi antar perusahaan.
150
6. 2. Saran
Sistem ini dibangun berdasarkan kondisi ideal dimana fisik
jaringan yang digunakan dalam keadaan baik dan tidak ada pihak ketiga
yang sengaja mengganggu. Ketika harus diterapkan pada kondisi jaringan
internet yang merupakan jaringan publik, maka hal ini merupakan celah
keamanan tersendiri. Enkripsi merupakan hal yang bisa ditambahkan pada
pengembangan selanjutnya untuk membuat sistem lebih handal dan aman.
Hal lain yang bisa ditambahkan dalam sistem ini adalah
kemampuan untuk menagani siklus pembelian, siklus Sumber Daya
Manusia, siklus keuangan dan lain – lain sehingga sistem menjadi sebuah
system yang terintegrasi yang memanfatkan jaringan internet dan XML
sebagai keunggulan utama.
151
DAFTAR PUSTAKA
Benoit Marchal, XML By Example, Edisi 2, Que, 2000
Budi Susanto, Pemrograman Client/Server Dengan Java 2, Edisi 1, Elex Media
Komputindo, 2003
Bahan Kuliah Pemrograman Java Lanjut, Bahan Kuliah RPL I, Dokumentasi
MySQL 5
Elliotte Rusty Harold, W. Scott Means, XML in a Nutshell, 2nd Edition, Edisi 2,
O’Reilly & Associates Inc., 2002
Jeffery L. Whitten, Lennie D. Bentley, Kevin C. Dittman, Systems Analysis and
Design Methods, 6th Edition, The McGraw-Hill Companies, 2004
Mark Mattews. Jim Cole, Joseph D. Gradecki, MySQLTM And JAVATM Developer’s
Guide, Edisi 1, Wiley Publishing Inc., 2003
Artikel-artikel dari Internet:
1. http://www.developerfusion.co.uk/xml
2. http://forum.java.sun.com/
3. http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20020409