aplikasi mobile pemesanan makanan via bluetooth
TRANSCRIPT
PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS
J2ME DAN BLUETOOTH
MIFTAKH ARKHAN ZEIN TAPTOZANI NRP. 74 05 040 730
Dosen Pembimbing: Yuliana Setyowati, S.Kom, M.Kom
Harits Ar Rosyid, S.T, M.T
JURUSAN TEKNIK INFORMATIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA
2009
PROYEK AKHIR
PEMBUATAN APLIKASI MOBILE PEMESANAN
MAKANAN DAN MINUMAN BERBASIS
J2ME DAN BLUETOOTH
SOFTWARE DEVELOPMENT OF MOBILE APPLICATION
ON FOOD AND BEVERAGE ORDERING SYSTEM USING
J2ME AND BLUETOOTH
Miftakh Arkhan Zein Taptozani
NRP. 74 05 040 730
Dosen Pembimbing :
Yuliana Setyowati, S.Kom, M.Kom
NIP. 19780706.200212.2.003
Harits Ar Rosyid, S.T, M.T
JURUSAN TEKNIK INFORMATIKA
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
INSTITUT TEKNOLOGI SEPULUH NOPEMBER
SURABAYA
2009
PROYEK AKHIR
ii
PEMBUATAN APLIKASI MOBILE PEMESANAN
MAKANAN DAN MINUMAN BERBASIS
J2ME DAN BLUETOOTH
PROYEK AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Sains Terapan
pada
Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopember
Oleh:
MIFTAKH ARKHAN ZEIN TAPTOZANI NRP. 74 05 040 730
Disetujui oleh:
Tim Penguji Proyek Akhir:
Dosen Penguji I
Kholid Fathoni, S.Kom
NIP. 19801226.2008121.2.003
Dosen Pembimbing:
Dosen Pembimbing I
Yuliana Setyowati, S.Kom, M.Kom
NIP. 19780706.200212.2.003
Dosen Penguji II
Siyamta, S.Pd, S.ST, M.T
NIP. 19740926.200212.1.002
Dosen Pembimbing II
Harits Ar Rosyid, S.T, M.T
Dosen Penguji III
Farid Zuniawan, ST
Mengetahui,
Ketua Jurusan Teknologi Informasi
Arna Fariza, S.Kom., M.Kom
NIP. 19710708.199903.2.001
iii
PEMBUATAN APLIKASI MOBILE PEMESANAN
MAKANAN DAN MINUMAN BERBASIS
J2ME DAN BLUETOOTH
Nama Mahasiswa : MIFTAKH ARKHAN ZEIN TAPTOZANI
NRP : 74 05 040 730
Jurusan : Teknik Informatika
Dosen
Pembimbing :
1. YULIANA SETYOWATI, S.Kom, M.Kom
2. HARITS AR ROSYID, S.T, M.T
Abstrak
Penggunaan media bluetooth dan J2ME untuk restoran akan
memudahkan proses pemesanan dan administrasi, karena untuk media alat
tulis dan kertas untuk pemesanan makanan dan minuman menemui kendala-
kendala antara lain adanya pemesanan yang rangkap (redudansi), tidak
urutnya pembuatan pemesanan akibat bertumpuk nya nota pemesanan
terutama pada saat ramai pengunjung.
Aplikasi pemesanan makanan dan minuman via bluetooth
merupakan implementasi dari Java API (Application Programming
Interface) bluetooth (JSR-82) yang bertujuan untuk memberikan solusi
alternatif untuk pemesanan makanan dan minuman di foodcourt dengan
menggunakan telepon selular. Aplikasi ini terdiri dari dua bagian yaitu
aplikasi bluetooth server pada komputer dan aplikasi MIDlet bluetooth
client pada telepon selular yang mendukung JSR-82. Tipe jaringan
bluetooth yang digunakan adalah piconet. Aturan komunikasi client-server
yaitu client mengirimkan request message pada server dan server akan
membalas dengan reply message ke client.
Berdasarkan hasil pengujian lama waktu koneksi untuk pencarian
perangkat antara client dengan server berkisar antara 13,2 - 15,5 detik.
Sedangkan untuk transfer data berkisar antara 2 - 4 detik. Fitur-fitur yang
tersedia pada aplikasi ini melihat daftar restoran, melihat daftar menu dan
harga, melakukan pemesanan, melihat pesanan, melayani pembayaran, serta
melihat pesanan yang harus dilayani. Dengan menggunakan aplikasi ini,
pengguna dapat melakukan pemesanan makanan dan minuman dengan
mudah dan nyaman
Kata kunci : Bluetooth, Pemesanan Makanan, Java, Telepon Selular
iv
SOFTWARE DEVELOPMENT OF MOBILE APPLICATION
ON FOOD AND BEVERAGE ORDERING SYSTEM USING
J2ME AND BLUETOOTH
Name : MIFTAKH ARKHAN ZEIN TAPTOZANI
Student ID : 74 05 040 730
Departement : Informatics Engineering
Promotor :
1. YULIANA SETYOWATI, S.Kom, M.Kom
2. HARITS AR ROSYID, S.T, M.T
Abstract
The usage of bluetooth and J2ME for restaurant will facilitate the
ordering process and administration, because the uses of paper and
stationery for the ordering food and beverage meet constraints, for example
the redundancy of ordering which have double order, inappropriate between
ordering and result because the cumulative effect of ordering note,
especially at the time when many visitors come.
The food and beverage ordering via bluetooth application is
implementation of Java API (Application Programming of Interface)
bluetooth (JSR-82) to give alternative solution for the ordering of food and
beverage in foodcourt by using cellular telephone. This application consist
of two shares that is bluetooth server application at computer and MIDlet
bluetooth client at cellular telephone with JSR-82 support. Network
topology of bluetooth is use piconet. Communications process between
client-server is client deliver request message to server and server will
reciprocate with reply message to client.
From the trial result, time to make connection for the searching
bluetooth devices between client and server is with range from 13,2 to 15,5
second. While to the data transfer is with range from 2 to 4 second. Fitures
that available at this application is see restaurant list, see menu list and
price, do ordering food or drink, see order, serving payment, and also see
order which must serve. By using this application, consumer can do food
and beverafe ordering easily and balmy.
Keyword : Bluetooth, Ordering food system, Java, cellular telephone
v
KATA PENGANTAR
Alhamdulillah wa syukrulillah wash-shalatu wassalaamu
’alaa Rasulillah, Sayyidina Muhammadin wa’ala alihi wa shahbihi
wa sallim. Segala puji dan syukur, kehadirat Allah SWT yang telah
memberikan rahmat, cinta dan hidayah-Nya sehingga penulis dapat
menyelesaikan Tugas Akhir yang berjudul:
“PEMBUATAN APLIKASI MOBILE PEMESANAN
MAKANAN DAN MINUMAN BERBASIS
J2ME DAN BLUETOOTH”
Buku tugas akhir ini disusun dan diajukan sebagai salah satu
syarat untuk menyelesaikan program pendidikan Diploma IV di
Politeknik Elektronika Negeri Surabaya – Institut Teknologi Sepuluh
Nopember Surabaya.
Dalam penyusunan Tugas Akhir ini, penulis berusaha untuk
menerapkan ilmu yang telah didapat selama menjalani perkuliahan
dengan tidak terlepas dari petunjuk, bimbingan, bantuan dan
dukungan dari berbagai pihak. Tentu saja, dibalik semua usaha yang
telah dilakukan, penulis menyadari bahwa masih banyak kekurangan
di dalam penyusunan buku laporan proyek akhir ini, untuk itu
penulis mohon maaf dan mengharapkan saran – saran serta kritik
yang membangun dari pembaca. Dan tentunya semoga buku ini
dapat bermanfaat agar dapat menghasilkan sumber daya manusia
yang berkualitas, Amien.
Malang, Juli 2009
Penulis
vi
UCAPAN TERIMA KASIH
Dalam kesempatan ini penulis hendak menyampaikan
penghormatan dan terima kasih yang sebesar-besarnya kepada pihak-
pihak yang telah memberi bantuan moral, material maupun spiritual
secara langsung maupun tidak langsung, yaitu kepada:
1. Allah SWT dan Rasul-Nya Nabi Muhammad SAW.
2. Mursyid serta guru-guru yang kuhormati dan cintai. Semoga
Allah senantiasa memberikanku manfaat dari berkah guru-
guruku dan semoga Allah mencurahkan kesejahteraan dan
rahmat-Nya kepada Syekh Muhammad Nazim Adil Al Haqqani,
Syekh Muhammad Hisyam Kabbani, Syekh Muhammad Adnan
Kabbani, Syekh Mustofa Mas’ud dan Syekh Muhammad Sholeh
Hudi Muhyiddin Al Amin.
3. Ayah, Ibu dan adik-adik tercinta, yang selalu memberikan kasih
sayang, pendidikan, pengarahan, pengawasan, dukungan dan doa
kepada penulis.
4. Ibu Yuliana Setyowati S.Kom, M.Kom. dan Bapak Harits Ar
Rosyid, S.T, M.T selaku dosen pembimbing, yang telah
memberikan ide, masukan dan koreksi kepada penulis dalam
menyusun Tugas Akhir ini.
5. Segenap Bapak dan Ibu dosen Jurusan Teknik Informatika Joint
Program BA Malang dan Politeknik Elektronika ITS Surabaya
atas segala kesabaran dan keikhlasannya dalam memberikan
bimbingan, didikan dan perhatian serta ilmunya kepada penulis.
6. Iffa Zulfana, terima kasih atas perhatian dan kesabarannya.
7. Teman-teman “Begundal Tomini 24”, begur aang, hadi mesum,
gatut pak dhe, kakek udun fajar, mouse rio, hafez, nenjap, inoyla,
mbah farul, pras terima kasih atas persahabatan, kebersamaan,
canda tawa, susah senang, dan semangat kekeluargaannya.
8. Teman-teman teamwork di server pulsa, terima kasih atas semua
pengalaman yang tak terlupakan.
9. Teman-teman seangkatan V dan semua teman yang tidak dapat
penulis sebutkan satu per satu, terima kasih atas semangat dan
kebersamaannya.
vii
DAFTAR ISI
Halaman
HALAMAN JUDUL
HALAMAN PENGESAHAN ................................ ............... ii
ABSTRAK ................................ ................................ ............ iii
ABSTRACT ................................ ................................ .......... iv
KATA PENGANTAR ................................ ........................... v
UCAPAN TERIMA KASIH ................................ ................. vi
DAFTAR ISI ................................ ................................ ......... vii
DAFTAR GAMBAR ................................ ............................ xi
DAFTAR TABEL ................................ ................................ . xiv
BAB I PENDAHULUAN
1.1. Latar Belakang ................................ ......................... 1
1.2. Tujuan ................................ ................................ ...... 2
1.3. Rumusan Masalah ................................ .................... 2
1.4. Batasan Masalah ................................ ....................... 2
1.5. Metodologi ................................ ............................... 3
1.6. Sistematika Pembahasan ................................ .......... 4
BAB II TEORI PENUNJANG
2.1. Teknologi Bluetooth................................ .................. 5
2.1.1. Spesifikasi Bluetooth................................ ....... 5
2.1.2. Bluetooth Protokol Stack ................................ 6
2.1.2.1 Jaringan Bluetooth................................ ......... 7
2.1.2.2 Profile Bluetooth ................................ ........... 8
2.2. Java ................................ ................................ .......... 9
2.2.1. J2SE (Java 2 Second Edition) .......................... 10
2.2.2. J2ME (Java 2 Micro Edition) .......................... 11
2.2.2.1. Configuration................................ ................ 12
2.2.2.2. Profile ................................ ........................... 13
2.2.2.3. Optional Package................................ .......... 14
2.2.2.4. MIDP................................ ............................ 14
2.2.2.5. MIDlet ................................ .......................... 15
2.2.2.5.1. Siklus MIDlet ................................ ............ 16
2.2.3. Library Pendukung ................................ .......... 16
viii
2.3. JAVA API FOR BLUETOOTH WIRELESS
TECHNOLOGY (JABWT) ................................ ...... 17
2.3.1. JABWT Package ................................ ............. 19
2.3.2. Device Management API Pada JABWT .......... 21
2.3.2.1. Local Device................................ ................. 21
2.3.2.2. Remote Device ................................ ............. 22
2.3.2.3. Device Class ................................ ................. 23
2.3.2.4. Pencarian Device dan Service Pada JABWT
(device and service discovery)................................ ... 23
2.3.2.5. Discovery Agent ................................ ........... 24
2.3.2.6. Service Record................................ .............. 25
2.3.2.7. Komunikasi Bluetooth Menggunakan
RFCOMM ................................ ................................ . 27
2.4. DATABASE................................ .............................. 28
2.4.1. Entity Relation Diagram (ERD)....................... 29
2.4.2. Structured Query Language (SQL) .................. 30
2.4.3. Primary Key ................................ .................... 31
2.4.4. Foreign Key ................................ ..................... 32
2.4.5. MySQL................................ ............................ 32
2.5. CLIENT SERVER ................................ ................... 32
2.5.1. Karakteristik Client Server .............................. 34
2.5.2. Keuntungan Dan Kerugian Arsitektur
Client Server ................................ ............................. 34
BAB III PERANCANGAN DAN IMPLEMENTASI
PERANGKAT LUNAK
3.1. DESKRIPSI UMUM ................................ ................ 37
3.2. PERANCANGAN DATABASE APLIKASI ........... 38
3.3. PERANCANGAN DAN IMPLEMENTASI SISTEM
APLIKASI MENU PEMESANAN MAKANAN ..... 42
3.3.1. KOMUNIKASI CLIENT SERVER ................ 42
3.3.1.1. Sequnce Login ................................ .............. 43
3.3.1.2. Sequence Daftar Foodcourt .......................... 44
3.3.1.3. Sequence Daftar Menu ................................ . 44
3.3.1.4. Sequence Input Pesanan................................ 45
3.3.1.5. Sequence History dan Detil History.............. 46
ix
3.3.1.6. Sequence Input Pesanan ............................... 47
3.3.2. APLIKASI SERVER PADA KOMPUTER ... 47
3.3.2.1. User Interface Server ................................ .... 51
3.3.2.2. Koneksi Bluetooth Pada Server .................... 52
3.3.2.3. Koneksi Database Pada Server ..................... 57
3.3.2.4. Proses Login ................................ ................. 57
3.3.2.5. Proses Daftar Foodcourt ............................... 59
3.3.2.6. Proses Daftar Menu ................................ ...... 61
3.3.2.7. Proses Pemesanan Makanan dan Minuman .. 62
3.3.2.8. Proses Komplain................................ ........... 63
3.3.3. APLIKASI CLIENT................................ ........ 65
3.3.3.1. Aplikasi CLIENT PADA PELANGGAN .... 66
3.3.3.1.1. User Interface MIDlet client ...................... 70
3.3.3.1.2. Koneksi Bluetooth MIDlet client............... 73
3.3.3.1.3. Proses Login Pada MIDlet client ............... 76
3.3.3.1.4. Proses Menu Layanan, Daftar Foodcourt, dan
View Pesanan................................ ............................ 77
3.3.3.1.5. Proses Daftar Menu ................................ ... 79
3.3.3.1.6. Proses Input Pesanan ................................ . 81
3.3.3.1.7. Proses Komplain................................ ........ 82
3.3.3.2. APLIKASI CLIENT PADA RESTORAN ... 83
3.3.3.2.1. User Interface Web................................ .... 84
3.3.3.2.2. Login ................................ ......................... 84
3.3.3.2.3. Kasir ................................ .......................... 86
3.3.3.2.4. Foodcourt ................................ .................. 89
3.3.3.2.5. Komplain ................................ ................... 93
BAB IV UJI COBA DAN EVALUASI
4.1. Aplikasi Server (desktop)................................ .......... 95
4.1.1. Tampilan Server ................................ ............. 95
4.1.2. Tampilan Koneksi................................ ............ 96
4.1.3. Tampilan Add Foodcourt................................ . 96
4.2. Aplikasi Client Pelanggan (mobile)........................... 96
4.3. Aplikasi Client Restoran dan Kasir (web) ................ 98
4.3.1. Tampilan Login ................................ .............. 98
4.3.2. Tampilan Web Foodcourt Restoran ................. 98
4.3.3. Tampilan Web Foodcourt Kasir....................... 99
x
4.4. Proses Komunikasi Client Server .............................. 102
4.4.1. Proses Discovery Bluetooth ............................ 103
4.4.2. Proses Login ................................ .................... 104
4.4.3. Proses Daftar Restoran................................ ..... 106
4.4.4. Proses Daftar Menu ................................ ......... 106
4.4.5. Proses Masukkan Jumlah Pesanan................... 107
4.4.6. Proses Menu Lihat Pesanan ............................. 108
4.4.7. Proses Pengiriman Transaksi Ke Server .......... 109
4.4.8. Proses History Pesanan................................ .... 113
4.4.9. Proses Detil History................................ ......... 114
4.4.10. Proses Komplain................................ ........... 114
4.5. Hasil Percobaan Multi User................................ ....... 116
BAB V PENUTUP
5.1. Kesimpulan ................................ .............................. 119
5.2. Saran ................................ ................................ ......... 120
DAFTAR PUSTAKA ................................ .......................... 121
RIWAYAT HIDUP ................................ ............................. 122
xi
DAFTAR GAMBAR
Gambar 2.1 Bluetooth protocol stack ................................ .... 6
Gambar 2.2 Topologi jaringan bluetooth ............................... 8
Gambar 2.3 Platform java ................................ ...................... 10
Gambar 2.4 Arsitektur JAVA................................ ................. 12
Gambar 2.5 Daur hidup MIDlet ................................ ............. 16
Gambar 2.6 Struktur paket JSR82................................ .......... 18
Gambar 2.7 One to one relationship................................ ....... 30
Gambar 2.8 One to many relationship................................ .... 30
Gambar 2.9 Many to many relationship ................................ . 30
Gambar 2.10 Arsitektur umum client server .......................... 33
Gambar 3.1 Gambaran umum aplikasi pemesanan makanan . 37
Gambar 3.2 Rancangan database................................ ............ 38
Gambar 3.3 Sequence proses login................................ ......... 43
Gambar 3.4 Sequence daftar foodcourt ................................ .. 44
Gambar 3.5 Sequence daftart menu................................ ........ 45
Gambar 3.6 Sequence inpur pesanan................................ ...... 45
Gambar 3.7 Sequence history................................ ................. 46
Gambar 3.8 Sequence input komplain................................ .... 47
Gambar 3.9 Activity diagram server ................................ ...... 49
Gambar 3.10 Class diagram aplikasi server............................ 50
Gambar 3.11 Design form pada aplikasi server (J2SE).......... 51
Gambar 3.12 Hasil user interface aplikasi server (J2SE)........ 52
Gambar 3.13 Sequence bluetooth connection......................... 53
Gambar 3.14 Log koneksi aplikasi server (J2SE)................... 56
Gambar 3.15 Activity diagram proses login........................... 58
Gambar 3.16 Activity diagram daftar foodcourt..................... 60
Gambar 3.17 Activity diagram daftar makanan...................... 61
Gambar 3.18 Activity diagram input pesanan ........................ 62
Gambar 3.19 Activity diagram proses komplain .................... 64
Gambar 3.20 Use case diagram aplikasi client ....................... 65
Gambar 3.21 Activity diagram aplikasi client (J2ME)........... 67
Gambar 3.22 Sistem akses menu makanan oleh pelanggan.... 68
Gambar 3.23 Class diagram aplikasi client J2ME.................. 69
Gambar 3.24 Blok diagram tampilam MIDlet client .............. 70
xii
Gambar 3.25 Design form pada aplikasi pelanggan (J2ME) .. 72
Gambar 3.26 Tampilan aplikasi client di emulator .............. 73
Gambar 3.27 Activity diagram koneksi bluetooth client ........ 74
Gambar 3.28 Tampilan login................................ .................. 76
Gambar 3.29 Activity diagram menu layanan........................ 77
Gambar 3.30 Tampilan menu layanan dan tampilan restoran. 79
Gambar 3.31 Activity diagram proses menu makanan ........... 79
Gambar 3.32 Tampilan daftar menu makanan........................ 80
Gambar 3.33 Tampilan input jumlah................................ ...... 81
Gambar 3.34 Activity diagram proses komplain .................... 82
Gambar 3.35 Tampilan input komplain................................ .. 83
Gambar 3.36 Sistem akses makanan oleh makanan................ 83
Gambar 3.37 Menu atau link yang tersedia pada web
foodcourt client restoran................................ ......................... 84
Gambar 3.38 Login web foodcourt ................................ ........ 86
Gambar 3.39 Flowchart proses pembayaran di kasir .............. 87
Gambar 3.40 Tampilan kasir ................................ .................. 89
Gambar 3.41 Flowchart aplikasi foodcourt client restoran..... 90
Gambar 3.42 Tampilan daftar pesanan foodcourt................... 93
Gambar 3.43 Tampilan daftar komplain................................ . 94
Gambar 4.1 Tampilan server ................................ .................. 95
Gambar 4.2 Tampilan koneksi bluetooth................................ 96
Gambar 4.3 Tampilan sub menu add foodcourt...................... 97
Gambar 4.4 Tampilan shortcut client dan tampilan awal........ 97
Gambar 4.5 Form login aplikasi web foodcourt client............ 98
Gambar 4.6 Tampilan daftar pesanan................................ ..... 99
Gambar 4.7 Tampilan daftar menu................................ ......... 99
Gambar 4.8 Tampilan history daftar pesanan......................... 100
Gambar 4.9 Tampilan kasir ................................ .................... 100
Gambar 4.10 Tampilan daftar pelanggan................................ 101
Gambar 4.11 Tampilan daftar restoran................................ ... 101
Gambar 4.12 Tampilan daftar user ................................ ......... 102
Gambar 4.13 Diagram komunikasi client server .................... 102
Gambar 4.14 Proses discovery pada server dan client............ 103
Gambar 4.15 Proses server atau service tidak ditemukan....... 104
Gambar 4.16 Login tidak lengkap ................................ .......... 104
xiii
Gambar 4.17 Login yang dilakukan client invalid.................. 105
Gambar 4.18 Proses login yang valid pada client dan server.. 105
Gambar 4.19 Proses daftar restoran................................ ........ 106
Gambar 4.20 Proses daftar makanan atau minumann............. 107
Gambar 4.21 Proses memasukkan jumlah pesanan salah....... 107
Gambar 4.22 Proses pesanan telah dilakukan......................... 108
Gambar 4.23 Proses lihat pesanan................................ .......... 108
Gambar 4.24 Proses lihat pesanan kosong ............................. 109
Gambar 4.25 Proses input nomer meja................................ ... 109
Gambar 4.26 Proses pengiriman pesanan............................... 110
Gambar 4.27 Tampilan kasir,pelanggan belum membayar..... 111
Gambar 4.28 Tampilan kasir, pelanggan sudah membayar .... 111
Gambar 4.29 Tampilan foodcourt
belum bayar belum dilayani ................................ ................... 112
Gambar 4.30 Tampilan foodcourt
sudah bayar belum dilayani................................ .................... 112
Gambar 4.31 Tampilan foodcourt
sudah bayar sudah dilayani................................ ..................... 113
Gambar 4.32 Proses history pesanan................................ ...... 113
Gambar 4.33 Tampilan detil history server-client .................. 114
Gambar 4.34 Tampilan input komplain................................ .. 115
Gambar 4.35 Tampilan halaman komplain............................. 115
xiv
DAFTAR TABEL
Tabel 2.1 Kelas-kelas bluetooth ................................ ............. 5
Tabel 2.2 Platform java ................................ .......................... 11
Tabel 2.3 Interface pada javax.bluetooth package .................. 19
Tabel 2.4 Class pada javax.bluetooth package ....................... 20
Tabel 2.5 Exception pada javax.bluetooth package ................ 20
Tabel 3.1 tb_komplain................................ ............................ 39
Tabel 3.2 tb_detil_pesanan................................ ..................... 39
Tabel 3.3 tb_foodcourt ................................ ........................... 40
Tabel 3.4 tb_menu................................ ................................ .. 40
Tabel 3.5 tb_pegawai ................................ ............................. 40
Tabel 3.6 tb_pelanggan ................................ .......................... 41
Tabel 3.7 tb_pembayaran ................................ ....................... 41
Tabel 3.8 tb_pesan................................ ................................ .. 41
Tabel 3.9 tb_meja................................ ................................ ... 42
Tabel 4.1 Pengujian waktu pencarian perangkat menggunakan
HP Sony Ericsson K530i ................................ ........................ 116
Tabel 4.2 Pengujian waktu pencarian perangkat menggunakan
HP Nokia E50 ................................ ................................ ........ 116
Tabel 4.3 Pengujian transfer data client server....................... 117
Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak
2 meter........................................................................................... 117
1
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
Perkembangan teknologi saat ini telah memberikan pengaruh
yang sangat besar bagi dunia teknologi informasi dan telekomunikasi.
Munculnya beragam aplikasi memberikan pilihan dalam peningkatan
kinerja suatu pekerjaan, baik yang besifat dekstop based, web baseb
hingga yang sekarang ini munculnya aplikasi-aplikasi baru yang
berjalan dalam mobile device/handphone.
Pemilihan mobile device/handphone untuk salah satu
pengembangan aplikasi selain lebih mudah dalam pengoperasiannya,
sifat dari handphone yang fleksibel menjadi salah satu alasannya.
Saat ini muncul teknologi baru dimana komunikasi tanpa
menggunakan kabel, seperti dengan menggunakan media bluetooth
pada handphone. Sebagai pendatang baru yang sudah mulai popular
didunia komunikasi data wireless, bluetooth mulai memberikan
beberapa solusi dan layanan yang bisa diimplementasikan dalam
kehidupan sehari-hari. Bluetooth merupakan teknologi yang
berkembang sebagai jawaban atas kebutuhan komunikasi antar
perlengkapan elektronik agar dapat saling mempertukarkan data
dalam jarak yang terbatas menggunakan gelombang radio dengan
frekuensi 2,4 GHz. Salah satu implementasi bluetooth yang populer
adalah pada peralatan handphone yang digunakan untuk pertukaran
data.
Penggunaan media bluetooth dan J2ME untuk restoran akan
memudahkan proses pemesanan dan administrasi, karena untuk
media alat tulis dan kertas untuk pemesanan makanan dan minuman
menemui kendala-kendala antara lain adanya pemesanan yang
rangkap (redudansi), tidak urutnya pembuatan pemesanan akibat
bertumpuk nya nota pemesanan terutama pada saat ramai
pengunjung.
2
Aplikasi dikembangkan menggunakan J2ME, sehingga
aplikasi menu pemesanan makanan adalah platform bebas yang
dapat berjalan di setiap mobile phone yang mendukung JAVA
API yang dibutuhkan.
1.2 TUJUAN
Tujuan dari proyek akhir ini adalah :
1. Membangun koneksi antar komputer dengan telepon seluler
menggunakan bluetooth.
2. Membuat suatu aplikasi menu pemesanan makanan di
sebuah foodcourt.
3. Aplikasi memungkinkan para pelanggan foodcourt untuk
melihat semua menu dan harganya.
4. Pelanggan dapat melakukan pemesanan makanan secara
langsung melalui handphone-nya masing-masing dan data
pesanan tersebut akan langsung dikirim ke bagian server
untuk diteruskan kepada restoran.
1.3 RUMUSAN MASALAH
Berdasarkan latar belakang, rumusan masalah yang terdapat
pada proyek akhir ini adalah sebagai berikut:
1. Bagaimana proses perencanaan dan perancangan client?
2. Bagaimana proses perencanaan dan perancangan server?
3. Bagaimana proses implementasi aplikasi ini pada device
mobile yang sebenarnya?
1.4 BATASAN MASALAH
Adapun batasan masalah dalam pembangunan Proyek Akhir
ini adalah sebagai berikut :
1. Karena sistem ini menggunakan bluetooth, maka terdapat
keterbatasan range mobilitas handphone sesuai dengan
daerah cakupan yang mampu dijangkau oleh bluetooth.
2. Program ini hanya berjalan pada handphone yang memiliki
profil dan konfigurasi Java ME dan didukung bluetooth API.
3. Pelanggan harus terdaftar sebagai member untuk
menjalankan aktifitas pemesanan makanan melalui
handphone.
3
4. Foodcourt memiliki pembayaran (kasir) yang terpusat pada
satu kasir.
5. Tidak membahas tentang Sistem Informasi Manajemen
Foodcourt.
6. Tidak membahas tentang keamanan (security) didalam
aplikasi yang dibuat.
1.5 METODOLOGI
Metodologi pembahasan pada proyek akhir ini direncanakan
seperi berikut:
1. Pemahaman Sistem dan Studi Literatur
Mempelajari proses bisnis yang terjadi dan juga berbagai
macam literatur tentang konsep-konsep yang berkaitan dengan
rumusan masalah, termasuk di dalamnya mempelajari API-API
pada Java ME yang berkaitan dengan pembuatan tugas akhir.
2. Penampungan dan analisis data
Dalam tahap ini akan dilakukan penampungan dan analisis
terhadap data-data yang dibutuhkan.
3. Perancangan Perangkat Lunak
Tahap ini merupakan tahapan analisis dan desain perangkat
lunak yang akan dikembangkan dengan mengacu pada proses
bisnis dan data yang telah diperoleh dan dianalisa pada tahapan
sebelumnya.
4. Implementasi
Pada tahap ini akan dilakukan proses pembuatan perangkat
lunak yang akan dikembangkan.
5. Uji coba dan Evaluasi
Melakukan Uji coba dan evaluasi prototipe perangkat untuk
mencari masalah yang mungkin timbul, mengevaluasi jalannya
program, dan mengadakan perbaikan jika ada kekurangan.
6. Pembuatan Buku Tugas Akhir
Pada tahap terakhir ini disusun buku sebagai dokumentasi dari
pelaksanaan Tugas Akhir.
4
1.6 SISTEMATIKA PEMBAHASAN
Buku laporan proyek akhir ini terdiri dari 5 bab dengan
perincian sebagai berikut :
Bab I : Bab ini menjelaskan tentang latar belakang,
rumusan masalah, tujuan, metodologi
pengerjaan dan sistematika penulisan proyek
akhir.
Bab II : Bab ini menjelaskan tentang landasan teori yang
mendukung pembuatan proyek akhir.
Bab III : Bab ini menjelaskan tentang rancangan dan
pembuatan sistem yang meliputi perancangan
database, perancangan sistem, dan user
interface.
Bab IV : Bab ini menjelaskan pengujian dan analisa sistem
apakah hasil yang telah ditetapkan sesuai dengan
tujuan perancangan.
Bab V : Bab ini menjelaskan tentang kesimpulan dan
saran dari hasil pengamatan dan analisa terhadap
sistem yang telah dibuat.
5
BAB II
TEORI PENUNJANG
2.1 TEKNOLOGI BLUETOOTH
Teknologi Bluetooth dikembangkan oleh Bluetooth Special
Interest Group (SIG) yang diprakarsai oleh perusahaan-perusahaan
besar yaitu companies 3Com, Ericsson, Intel, IBM, Agere,
Microsoft, Motorola, Nokia dan Toshiba. Bluetooth telah didesain
bagi alat komunikasi personal yang mendukung komunikasi
tanpa kabel(wireless) seperti pada mobile phone maupun PDA
dengan jarak sampai 10 kilometer. Bluetooth adalah sebuah protokol
komunikasi yang beroperasi pada frekuensi 2.4 GHz. Sinyal dari
bluetooth adalah omni-directional serta dapat menerima data dan
juga suara.
Device yang mendukung komunikasi bluetooth dapat
dengan mudah menemukan koneksi dan juga berkomunikasi dengan
device yang lain secara otomatis. Bluetooth dapat digunakan untuk
mengirim file, membangun sebuah jaringan tertentu, sinkronisasi
data, mengkoneksikan sekitar misalnya dengan hands-free kits dan
juga digunakan untuk gaming. Sesuai dengan power serta
jangkauannya,bluetooth terbagi menjadi 3 kelas:
Tabel 2.1 Kelas-kelas Bluetooth
Kelas Maksimum Power yang
diijinkan Jangkauan Maksimal
Kelas 1 100 mW (20 dBm) 100 meter
Kelas 2 2,5 mW(4dBm) 10 meter
Kelas 3 1 mW (0 dBm) 1 meter
2.1.1 Spesifikasi Bluetooth
Bluetooth spesifikasi di sini mengacu pada Java
Specification Request 82 (JSR-82) dan juga Symbian Bluetooth API,
mendefinisikan API-API yang terdapat dalam protokol bluetooth.
6
2.1.2 Bluetooth Protocol Stack
Bluetooth Protocol Stack secara umum dapat dibagi menjadi
dua komponen yaitu: Bluetooth Host dan Bluetooth Controller yang
disebut juga Bluetooth Radio. Bluetooth Protocol Stack terdiri dari
protokol-protokol yang sejak dikembangkan sudah dimilikinya yaitu
protokol L2CAP dan SDP, serta protokol lain hasil dari adopsi yaitu
OBEX. Selain itu Bluetooth Protocol Stack dapat dibagi menjadi
empat layer sesuai dengan peruntukannya, sesuai dengan yang
ditunjukkan didalam gambar.
Gambar 2.1 Bluetooth Protocol Stack
Baseband yang berfungsi untuk mengaktifkan phisical RF
sehingga Bluetooth dapat membuat koneksi.
Link Manager Protocol (LMP) adalah protokol yang
bertanggung jawab untuk membangun koneksi antara
Bluetooth device serta mengatur sistem keamanan didalam
koneksi,seperti authentication dan encryption.
7
Logical Link Control and Adaptation Protocol (L2CAP)
adalah protocol yang mangadaptasikan layer protokol yang
ada di atas kepada baseband. Hal ini melibatkan banyak
bagian, yaitu bermacam-macam koneksi logical yang berada
pada layer diatasnya.
Service Discovery Protocol (SDP) digunakan untuk
mendapatkan informasi tentang atribut device, service yang
disediakan, dan berikut karakteristik dari service.
RFCOMM mengimplementasikan RS-232 kontrol dan data
signal melalui Bluetooth baseband, yang menyediakan
kemampuan transportasi untuk layer yang berada di atasnya
dengan menggunakan antar muka serial sebagai makanisme
transportasi.
TCS Binary mendefinisikan pemanggilan sinyal kontrol
untuk membuat panggilan data dan suara antara Bluetooth
device.
2.1.2.1 Jaringan Bluetooth
Bluetooth devices dibagi lagi menjadi group-group kecil
yang disebut piconet. Didalam piconet, ada sebuah master dan
satu atau lebih slaves. Sampai 7 buah slaves bisa diterima
didalam sebuah piconet. Sedangkan master unit adalah sesuatu
yang memulai proses komunikasi. Ia akan menggunakan komunikasi
point-to-multipoint.
Sebuah device didalam sebuah piconet mampu
berkomunikasi dengan bluetooth device didalam piconet yang lain.
Sebuah slave didalam piconet tertentu mungkin dapat menjadi
slave didalam piconet yang berbeda. Sebuah master didalam
sebuah piconet dapat menjadi slave pada piconet yang lain.
Komunikasi antar piconet tersebut dapat berasal dari jaringan
manapun.
Dalam rangka untuk pemeliharaan baterai, bluetooth
memiliki tiga low modus operasi yang hemat energi:
8
Pada modus sniff, sebuah slave device akan memperhatikan
berkurangnya level energi, dimana ia tidak berpengaruh terhadap
piconet.
Pada modus hold, sebuah device tidak hanya mengirimkan
data tetapi ia juga melakukan sinkronisasi secara konstan dengan
master. Ia bukanlah member aktif dari piconet, tetapi ia
menyimpan alamat member yang aktif. Sebuah device pada modus
park berlaku seperti device pada modus hold, akan tetapi ia tidak
menyimpan alamat member yang aktif.
Gambar 2.2 Topologi Jaringan Bluetooth
2.1.2.2 Profile Bluetooth
Profile dari bluetooth telah ditentukan dengan
memperhatikan interoperability antara device dan aplikasi dari
beberapa manufaktur. Sebuah profile mendefinisikan roles dan
kemampuan yang dimiliki oleh tipe aplikasi tertentu. Sebuah device
hanya dapat berkomunikasi dengan device yang lain apabila mereka
9
memiliki profile yang sama. Semua bluetooth device harus
menggunakan Generic Access Profile. Profile ini menentukan
prosedure koneksi, device discovery, dan management link.
Sebuah Service Discovery Profile mendefinisikan fitur
dan prosedur bagi aplikasi bluetooth untuk mengenali segala servis
yang telah ditentukan pada bluetooth device yang lain.
Sebuah profile sinkronisasi menentukan hal-hal apa saja
yang dibutuhkan pada dua atau lebih devices untuk
mensinkronisasikan data.
Profile bluetooth yang lain telah didefinisikan juga pada
spesifikasi bluetooth. Akan tetapi tidak akan dibicarakan dalam
materi ini.
2.2 JAVA
Java dibuat pada tahun 1991 oleh James Gosling. Pada
awalnya diberi nama Oak, dimana untuk menghormati pohon
yang ada di luar jendela Gosling. Kemudian namanya diubah
ke Java karena telah ada sebuah bahasa yang diberi nama Oak.
Motivasi sesungguhnya dari Java adalah kebutuhan akan
sebuah bahasa yang bisa digunakan pada berbagai platform yang
bisa dimasukkan ke dalam berbagai produk elektronik seperti
pemanggang roti dan lemari es. Salah satu dari proyek pertama yang
dikembangkan menggunakan Java adalah sebuah remote kontrol
yang diberi nama Star 7.
Pada saat yang sama, World Wide Web dan Internet
berkembang sangat cepat. Gosling menyadari bahwa Java dapat
digunakan untuk pemrograman Internet.
Dengan keluarnya versi 1.2, platform Java akhirnya dipilah-
pilah menjadi beberapa edisi, yaitu: The Standard Edition (Java SE),
Enterprise Edition (Java EE), Micro Edition (Java ME) dan
JavaCard API.
10
Tabel 2.2 Platform Java
Java SE – Java Standard
Edition
Aplikasi Desktop
Java EE – Java Enterprise
Edition
Aplikasi enterprise dengan fokus
pada pengembangan sisi web
server, termasuk servlet, JSP, EJB
dan XML
Java ME – Java Micro Edition Perangkat Mobile
JavaCard Smart Cards
Gambar 2 .3 Platform Java
2.2.1 J2SE (Java 2 Second Edition)
Java 2 Second Edition atau yang lebih dikenal dengan J2SE
adalah salah satu platform dari bahasa pemrogaman java yang
diimplementasikan untuk aplikasi desktop. J2SE terdiri dari Java
Runtime Environment (JRE) yang terdiri dari banyak library
11
standart. Sedangkan untuk Java Development Kit (JDK) adalah JRE
yang ditambahkan development Tools & API. Untuk membuat
aplikasi berbasis user interface, telah terdapat paket Abstract
Window Toolkit (AWT) yang bergantung dari sistem operasi yang
digunakan. User interface pada linux akan berbeda dengan user
interface pada open solaris. Untuk membangun aplikasi user
interface yang tidak bergantung pada sistem operasi yang digunakan
dapat menggunakan paket Swing. Tampilan user interface akan
selalu sama walaupun berpindah-pindah sistem operasi.
2.2.2 J2ME (Java 2 Micro Edition)
Java ME adalah satu set spesifikasi dan teknologi yang fokus
kepada perangkat mobile. Perangkat ini memiliki jumlah memori
yang terbatas, menghabiskan sedikit daya dari baterei, layar yang
kecil dan bandwith jaringan yang rendah.
Dengan perkembangan perangkat mobile dari telepon, PDA,
kotak permainan hingga peralatan-peralatan rumah, Java
menyediakan suatu lingkungan yang portable untuk mengembangkan
dan menjalankan aplikasi pada perangkat ini.
Program Java ME, seperti semua program Java adalah
diterjemahkan oleh Virtual Machine (VM). Program-program
tersebut dikompile ke dalam bytecode dan diterjemahkan oleh
Java Virtual Machine (JVM). Ini berarti bahwa program-program
tersebut tidak berhubungan langsung dengan perangkat keras. Java
ME menyediakan suatu interface yang sesuai dengan perangkat
keras. Aplikasi-aplikasi tersebut cukup dikompile sekali dan
mampu dijalankan pada mesin yang berbeda.
Inti dari Java ME terletak pada configuration dan profile-
profile. Suatu configuration menggambarkan lingkungan runtime
dasar dari suatu sistem Java ME. Ia menggambarkan core library,
virtual machine, fitur keamanan dan jaringan.
12
Gambar 2 -4 Arsitektur Java ME
Sebuah profile memberikan library tambahan untuk suatu
kelas tertentu pada sebuah perangkat. profile-profile menyediakan
user interface (UI) API, persistence, messaging library, dan
sebagainya.
Satu set library tambahan atau package tambahan
menyediakan kemampuan program tambahan. Pemasukan package
ini ke dalam perangkat Java ME dapat berubah-ubah karena
tergantung pada kemampuan sebuah perangkat. Sebagai contoh,
beberapa perangkat MIDP tidak memiliki Bluetooth built-in,
sehingga Bluetooth API tidak disediakan dalam perangkat ini.
2.2.2.1 Configuration
Suatu configuration menggambarkan fitur minimal dari
lingkungan lengkap Java runtime. Untuk menjamin kemampuan
portabilitas dan interoperabilitas yang optimal diantara berbagai
macam perangkat yang dibatasi sumber dayanya (memory, prosesor,
koneksi yang dibatasi), configuration tidak menggambarkan fitur
tambahan. Suatu configuration Java ME menggambarkan
suatu komplemen yang minimum dari teknologi Java. Adalah
merupakan tugas profile-profile untuk menggambarkan tambahan
library untuk suatu kategori perangkat tertentu. Configuration
menggambarkan:
Subset bahasa pemrograman Java
Kemampuan Java Virtual Machine (JVM)
Core platform libraries
Fitur sekuriti dan jaringan.
13
J2ME terdiri dari dua configuration yaitu :
1) Connected Limited Device Configuration (CLDC)
Digunakan pada device yang terbatas dalam hal memori
yang kecil dan prosesor yang tidak begitu cepat. Hanya
terdiri dari sebagian kecil class librari J2SE seperti java.lang
dan java.util, kemudian ditambahkan paket untuk aplikasi
mobile javax.microedition.io.CLDC banyak digunakan pada
handphone dan PDA (Personal Digital Asistants).
2) Connected Device Configuration (CDC)
Berisikan semua dari java virtual machine (JVM), dan
ditambahkan paket untuk aplikasi mobile sehingga
membutuhkan memori yang lebih besar dan prosesor yang
lebih cepat dari CLDC.CDC banyak digunakan pada internet
tv, car tv dan nokia communicator .
2.2.2.2 Profile
Suatu profile menggambarkan set-set tambahan dari API dan
fitur untuk pasar tertentu, kategori perangkat atau industri. Sementara
configuration menggambarkan library dasar, profile-profile
menggambarkan library yang penting untuk membuat aplikasi-
aplikasi efektif. Library ini memasukkan user interface, jaringan
dan penyimpanan API.
Profile merupakan class librari tambahan pada configuration yang
digunakan untuk pengelompokan spesifikasi tertentu (domain-
spesific), dan digunakan untuk mendukung paket-paket opsional agar
dapat mengakses virtual machine. Profile merupakan kebalikan dari
configuration yaitu mengatur hal-hal yang spesifik untuk sebuah
device. Terdapat beberapa profile, namun profile pertama yang
selesai dirilis adalah Mobile Information Device Profile (MIDP)
yang bertugas untuk menjalankan aplikasi pada handphone atau pada
pager. Satu device dapat terdiri dari beberapa profile seperti pada
PDA, terdapat MIDP, dan Personal Basis Profile (PBP) yang
digunakan untuk membuat tampilan grafik seperti window.
14
2.2.2.3 Optional Packages
Optional package adalah kumpulan API yang berisikan
fungsi-fungsi tertentu yang tidak terdapat pada configuration dan
profile. Optional package adalah kumpulan API yang berisikan
fungsi-fungsi tertentu yang tidak terdapat pada configuration dan
profile. Bluetooth optional package adalah salah satu contoh yang
didukung oleh MIDP, paket yang terdapat pada bluetooth optional
package ini seperti DiscoveryListener merupakan interface yang
diimplementasikan untuk mencari perangkat bluetooth, mencari
service pada perangkat bluetooth, LocalDevice merupakan class
yang digunakan untuk mendapatkan dan mengontrol perangkat
bluetooth.
2.2.2.4 MIDP
The Mobile Information Device Profile (MIDP) berada di
atas dari CLDC. Kita tidak bisa menulis aplikasi mobile hanya
dengan menggunakan CLDC API. Kita harus tetap memanfaatkan
MIDP yang mendefinisikan UI.
Spesifikasi MIDP, kebanyakan seperti CLDC dan API
lainnya sudah digambarkan melalui Java Community Process
(JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih
dari 50 perusahaan, yang terdiri atas pabrik perangkat mobile,
pengembang software. MIDP terus berkembang, dengan versi-versi
masa depan yang telah lulus dari proses ketat JCP.
Spesifikasi MIDP menggambarkan suatu perangkat MID
yang memiliki karakteristik-karateristik ini sebagai batas minimum:
Tampilan:
o Ukuran Layar: 96x54
o kedalaman tampilan: 1-bit
o Ketajaman pixel: sekitar 1:1
Masukan:
o Satu atau lebih mekanisme user-input: satu
keybboard, dua keyboard, atau touch screen
15
Memory:
o 256 kilobytes of non-volatile memory untuk
implementasi MIDP.
o 8 kilobytes of non-volatile memory for application-
created persistent data
o 128 kilobytes of volatile memory for the Java
runtime (e.g., the Java heap)
Jaringan:
o dua jalur, wireless, bandwidth terbatas
Sound:
o Kemampuan untuk memainkan nada-nada
MIDP menggambarkan model aplikasi, UI API, penyimpanan
dan jaringan yang kuat, permainan dan media API, kebijakan
keamanan, penyebaran aplikasi dan ketetapan over-the-air (OTA).
2.2.2.5 MIDlet
Suatu aplikasi MIDP disebut MIDlet. Perangkat application
management software (AMS) berinteraksi langsung dengan MIDlet
dengan method MIDlet create, start, pause, dan destroy. MIDlet
adalah bagian dari package javax.microedition.midlet. Sebuah
MIDlet harus di-extend dari class MIDlet. Dan dapat meminta
parameter dari AMS seperti dirumuskan dalam java application
descriptor (JAD).
Suatu MIDlet tidak harus memiliki (dan memang harus
tidak mempunyai) sebuah method public static void main(String[]
argv). Method tersebut tidak akan dikenal lagi oleh AMS sebagai titik
awal sebuah program.
16
2.2.2.5.1 Siklus MIDlet
Gambar 2.5 Daur hidup MIDlet
Kehidupan MIDlet dimulai ketika di-instantiate oleh
AMS. MIDlet pada awalnya masuk status “Pause” setelah
perintah baru dibuat. AMS memanggil constructor public tanpa
argumen dari MIDlet. Jika sebuah exception terjadi dalam
constructor, MIDlet memasuki status “Destroyed” dan
membuangnya segera.
MIDlet masuk ke dalam status “Active” atas pemanggilan
method startUp() oleh AMS. MIDlet masuk ke dalam status
“Destroyed” ketika AMS memanggil method destroyApp(). Status ini
juga kembali diakses ketika method notifyDestroyed() kembali
dengan sukses kepada aplikasi. Dengan catatan bahwa MIDlet hanya
bisa memasuki status “Destroyed” sekali dalam masa hidupnya.
2.2.3 Library Pendukung
Aplikasi ini memerlukan beberapa software pendukung untuk
menambah kebutuhan sistem. Software pendukung itu antara lain :
a) AvetanaOBEX
AvetanaOBEX adalah salah satu paket pendukung atau paket
tambahan yang ada pada bahasa pemrograman java, yang
berfungsi untuk membantu dalam pengiriman file. J2SE secara
17
default tidak mendukung JSR82, paket tambahan untuk JSR82
khusus untuk OBEX pada J2SE salah satunya adalah
AvetanaOBEX yang dapat didownload pada
http://avetana.sourceforge.net
b) Bluecove
Bluecove merupakah paket bluetooth API yang digunakan
untuk operating sistem window, bluecove
mengimplementasikan semua JSR82 tanpa OBEX. Bluecove
dapat didownload pada http://bluecove.sourceforge.net.
c) COMM API
COMM API juga merupakan paket tambahan pada program
java yang berfungsi untuk mengakses serial port yang ada
pada komputer. J2SE secara default tidak dapat melakukan
akses pada serial port seperti USB atau COM port.
Sedangkan device bluetooth yang digunakan adalah USB
bluetooth yang terinstal pada operating sistem, sehingga
dibutuhkan COMM API untuk melakukan kontrol hardware.
2.3 JAVA API FOR BLUETOOTH WIRELESS
TECHNOLOGY (JABWT)
JABWT merupakan J2ME optional package yang didefinisikan
Java Community Process JSR-82 (Java Specification Request).
JABWT digunakan untuk membuat aplikasi java pada mobile device
yang berhubungan dengan teknologi wireless pada bluetooth. Pada
J2SE (Java 2 Second Edition) library yang digunakan untuk
komunikasi bluetooth yaitu BlueCove. Method yang digunakan pada
BlueCove dan JABWT adalah sama. BlueCove merupakan Bluetooth
Stack yang menggunakan Java Native Interface (JNI) yang hanya
dapat dijalankan pada sistem operasi Wndows XP service pack 2
pada PC, sebab pada sistem operasi ini terdapat Microsoft Bluetooth
Stack yang digunakan untuk mengoperasikan USB Bluetooth
Dongle. JABWT terdiri atas dua package yaitu :
a) javax.bluetooth
Digunakan untuk menangani transaksi data dengan
menggunakan stream, banyak digunakan pada transaksi
18
pesan text atau transaksi bit per bit seperti audio. Terdiri dari
enam class dan empat interface.
b) javax.obex
Digunakan untuk menangani transaksi data dengan
menggunakan object, banyak digunakan untuk transfer data
berupa file karena dapat menambahakan nama file, ukuran
file, dan type data file. Terdiri dari tiga class dan lima
interface.
Gambar 2.6 Struktur Paket JSR82
Untuk menjalan koneksi client/server diperlukan beberapa langkah
yang harus dilakukan, yaitu :
1) Initialization
Pada saat menjalankan aplikasi bluetooth harus
menginisialisasikan bluetooth stack, dan melakukan
koneksi terhadap bluetooth device.
2) Server
Menciptakan service untuk client, menunggu client untuk
bergabung, dan memperbolehkan mereka menggunakan
layanan, mematikan service jika tidak dibutuhkan.
3) Client
Melakukan pencarian perangkat bluetooth yang ada
didaerahnya, masing-masing device yang ditemukan akan
javax.obex
19
dicari service yang ada pada server, melakukan koneksi
dengan server, mengakhiri koneksi jika tidak dibutuhkan.
2.3.1 JABWT Package
Telah dijelaskan pada subbab 2.3. mengenai JABWT
package yang terdiri atas dua package. Berikut adalah tabel yang
menjelaskan tentang interface, class, dan exception.
Tabel 2.3 Interface pada javax.bluetooth package
Interface Keterangan
DiscoveryListener mengijinkan aplikasi untuk
menerima device discovery dan
service discovery event.
L2CAPConnection mewakili connection-oriented pada
L2CAP channel.
L2CAPConnectionNotifier menyediakan connection notifier.
StreamConnection mewakili connection-oriented pada
RFCOMM
StreamConnectionNotifier menyediakan connection notifier
pada RFCOMM
ServiceRecord interface yang menjelaskan
karakteristik dari Bluetooth service
20
Tabel 2.4 Class pada javax.bluetooth package
Class Keterangan
DataElement Mendefinisikan berbagai macam
data dimana Bluetooth mungkin
mempunyai nilai service attribute.
DeviceClass Mewakili class of device (CoD)
record sebagai gambaran dari
Bluetooth spesifikasi
DiscoveryAgent Menyediakan method untuk
melakukan pencarian Bluetooth dan
service-nya (device discovery dan
service discovery).
LocalDevice Mendefinisikan fungsi dasar dari
Bluetooth Manager.
RemoteDevice Menggambarkan Bluetooth device
yang berada di sekitar lokal
Bluetooth device.
UUID Mendefinisikan universally unique
identifiers.
Tabel 2.5 Exception pada javax.bluetooth package
Exception Keterangan
BluetoothConnectionException BluetoothConnectionException
akan diberikan ketika koneksi
Bluetooth (L2CAP,
RFCOMM, atau OBEX
RFCOMM) tidak dapat
dibangun.
21
BluetoothStateException BluetoothStateException akan
diberikan ketika ada
permintaan ke Bluetooth
systemdimana sistem tersebut
tidak mendukung pada kondisi
saat itu.
ServiceRegistrationException ServiceRegistrationException
akan diberikan ketika terjadi
kegagalam dalam
menambahkan service record
ke dalam local Service
Discovery Database (SDDB)
atau pada saat merubah service
record yang telah ada di SDDB
2.3.2 Device Management API Pada JABWT
Class pada JABWT yang digunakan untuk device management
yaitu javax.bluetooth.LocalDevice, javax.bluetooth.RemoteDevice,
dan javax.bluetooth.DeviceClass, dimana class-class tersebut
merupakan bagian dari Generic AccessProfile (GAP).
2.3.2.1 Local Device
Local Bluetooth device diwakili oleh
javax.bluetooth.LocalDevice. Class ini menyediakan method
yang digunakan untuk mengatur dan mendapatkan local device dan
informasi seperti Bluetooth address, device class, dan discovery
agent. Beberapa method yang disediakan oleh
javax.bluetooth.LocalDevice:
static LocalDevice getLocalDevice()
static method yang digunakan untuk mendapatkan LocalDevice
object yang mewakili local Bluetooth device.
java.lang.String getBluetoothAddress()
22
Digunakan untuk mendapatkan alamat Bluetooth (Bluetooth
address) dari local device. Alamat Bluetooth ditunjukkan dalam
java.lang.String yang terdiri atas 12 karakter long desimal.
Java.lang.String getFriendlyName()
Digunakan untuk mendapatkan nama dari local device.
DiscoveryAgent getDiscoveryAgent()
Mengembalikan nilai discovery agent untuk Bluetooth device
yang digunakan.
boolean setDiscoverable(int mode)
Digunakan untuk mengatur discoverable mode dari device.
Static java.lang.String
getProperty(java.lang.String property)
Digunakan untuk mendapatkan Bluetooth system properties
2.3.2.2 Remote Device
Remote local Bluetooth diwakili oleh
javax.bluetooth.RemoteDevice. Class ini menyediakan
beberapa method untuk mendapatkan obyek RemoteDevice yang
bergabung dengan Bluetooth connection, method yang mempelajari
alamat dan alamat dari remote device, dan security-related method.
Beberapa method Class ini yaitu :
static RemoteDevice
getRemoveDevice(javax.microedition.io.Connection
)
static method yang digunkan untuk mendapatkan RemoteDevice
yang bergabung dengan koneksi sebelumnya.
java.lang.String getBluetoothAddress()
Digunakan untuk mendapatkan alamat Bluetooth dari remote
device. Alamat Bluetooth ditunjukkan dalam java.lang.String
yang terdiri atas 12 karakter long desimal.
java.lang.String getFriendlyName()
23
Digunakan untuk mendapatkan nama dari remoter device.
boolean authenticate()
Untuk mengetahui apakah remote device pada kondisi
authenticate atau tidak
2.3.2.3 Device Class
Class DeviceClass mewakili class of device (CoD) yang
ditetapkan di Bluetooth specification. Class device yang
mengidentifikasi menggunakan major, minor, dan service class.
DeviceClass mendefinisikan beberapa method yaitu :
int getMajorDeviceClass()
Digunakan untuk mendapatkan major device class
int getMinorDeviceClass()
Digunakan untuk mendapatkan minor device class.
int getServiceClasses()
Digunakan untuk mendapatkan major service classes
2.3.2.4 Pencarian Device dan Service Pada JABWT (device and
service discovery)
Pada proses discovery (device dan service) tahap-tahapnya
adalah sebagai berikut :
Proses inisialisasi
Proses ini merupakan proses untuk mendapatkan referensi objek
LocalDevice. Metode yang digunakan untuk proses ini yaitu
metode LocalDevice.getLocalDevice(). Objek
LocalDevice berfungsi untuk memberikan akses ke bluetooth
properties untuk device, seperti alamat bluetooth, nama
bluetooth, dan discovery mode. Untuk mendapatkan objek
DiscoveryAgent digunakan objek LocalDevice dengan
memanggil metode LocalDevice.getDiscoveryAgent()
24
Proses device discovery
Dengan menggunakan objek DiscoveryAgent, proses device
discovery dan service discovery dapat dikerjakan. Untuk
mendapatkan RemoteDevice yang telah ada, yang didapat dari
proses device discovery sebelumnya metode yang digunakan
yaitu metode retrieveDevices(). Jika ingin melakukan
device discovery dapat dilakukan dengan memanggil metode
startInquiry(), dan interface DiscoveryListener yang
mempunyai metode deviceDiscovered(), yang berfungsi
untuk mendeteksi apabila ada bluetooth device yang ditemukan.
Untuk Bluetooth device yang ditemukan akan disimpan pada
objek RemoteDevice
Proses service discovery
Dengan menggunakan objek DiscoveryAgent, proses service
discovery dapat dikerjakan. Metode untuk service discovery
yaitu searchServices(). Apabila service telah ditemukan,
maka metode servicesDiscovered() akan dipanggil.
servicesDiscovered() terdapat pada interface
DiscoveryListener. Bluetooth service yang ditemukan akan
disimpan pada objek ServiceRecord.
Proses koneksi bluetooth.
Dalam membangun koneksi via bluetooth diperlukan koneksi
URL (Uniform Resource Locator) dari bluetooth device yang
dipilih. Untuk mendapatkan koneksi URL metode yang
digunakan yaitu getConnectionURL(), yang mengambil
koneksi URL dari ServiceRecord. Setelah koneksi URL
didapatkan, dilanjutkan dengan proses membangun koneksi
dengan metode Connector.open(). Tipe koneksi yang
digunakan ada dua yaitu L2CAP dan RFCOMM. Untuk
mengetahui informasi dari remote device seperti nama bluetooth,
dan alamat, dapat menggunakan metode getRemoteDevice().
Jika koneksi telah dibangun maka pengiriman dan penerimaan
data siap untuk dilakukan
25
2.3.2.5 DiscoveryAgent
DiscoveryAgent menyediakan beberapa method untuk
menjalankan device dan service discovery. Berikut adalah method
dari DiscoveryAgent:
boolean cancelInquiry(DiscoveryListener
listener)
Digunakan untuk menghapus device dari inquiry mode.
boolean cancelServiceSearch(int transID)
Digunakan untuk membatalkan service search transaction yang
telah ada pada transaction ID.
RemoteDevice[] retrieveDevices(int option)
Digunakan untuk mengembalikan data array dari Bluetooth
device yang telah ditemukan oleh local device sebelum local
device melakukan proses inquiry atau dapat disebut sebagai pre-
known device.
int searchServices(int[] attrSet, UUID[]
uuidSet, RemoteDevice btDev,DiscoveryListener
discListener)
Digunakan untuk melakukan pencarian service pada remote
Bluetooth device yang mempunyai UUID yang telah ditetapkan
pada uuidSet.
java.lang.String selectService(UUID uuid, int
security, boolean master)
Digunakan untuk mengalokasikan sebuah service yang berisi
uuid yang ada pada ServiceClassIDList dari service record-nya.
boolean startInquiry(int accessCode,
DiscoveryListener listener)
Digunakan untuk menempatkan device pada kondisi inquiry
mode.
26
2.3.2.6 ServiceRecord
ServiceRecord merupakan gambaran dari remote service atau
RemoteDevice. ServiceRecord menyediakan method untuk
mendapatkan service attribute, connection URL, host remote device,
seperti halnya dalam merubah Service Discovery Database :
int[] getAttributeIDs()
Digunakan untuk mengembalikan service attribute ID dimana
nilainya dapat diperoleh kembali dengan memanggil
getAttributeValue().
DataElement getAttributeValue(int attrID)
Digunakan untuk mengembalikan nilai dari service attribute ID,
yang disediakan di service record. Dengan kata lain, method ini
kembali ke nilai null.
java.lang.String getConnectionURL(int
requiredSecurity, boolean mustBeMaster)
Digunakan untuk mengembalikan nilai String, termasuk
beberapa pilihan parameter dimana client dapat menggunakan
untuk melakukan koneksi ke service yang telah digambarkan
oleh ServiceRecord.
RemoteDevice getHostDevice()
Digunakan untuk mengembalikan remote Bluetooth device yang
ditempati service record dengan nilai attribute.
boolean populateRecord(int[] attrIDs)
Digunakan untuk mendapatkan kembali nilai-nilai dengan
menghubungi remote bluetooth device. Nilai-nilai yang
dikembalikan merupakan satu set dari service attribute ID untuk
sebuah service yang tersedia pada Bluetoothdevice.
boolean setAttributeValue(int attrID,
DataElement attrValue)
Digunakan untuk memodifikasi ServiceRecord ini yang untuk
mengisi service attribute yang ditunjukkan dengan attribute-
value pair(attrID,attrValue).
27
void setDeviceServiceClasses(int classes)
Digunakan oleh aplikasi server untuk mengindikasikan bit-bit
major service class yang diaktifkan oleh DeviceClass milik
server pada saat ServiceRecord ditambahkan pada SDDB
2.3.2.7 Komunikasi Bluetooth Menggunakan RFCOMM.
Setelah device discovery dan service discovery telah komplit
dilakukan oleh client untuk mendapatkan semua informasi yang
digunakan untuk mengatur communication link pada service di
server. L2CAP link merupakan basis dari semua komunikasi melalui
bluetooth. Format dari L2CAP link yaitu :
btl2cap://hostname:[PSM | UUID];parameters
PSM (Protocol/Service Multiplexer) merupakan suatu nilai yang
sama fungsinya dengan nomer port pada jaringan IP (Internet
Protocol) dan digunakan oleh client untuk koneksi dengan server.
Serial Port Profile menyediakan RFCOMM yang merupakan RS-
232 serial emulation protocol melalui L2CAP. Format dari
RFCOMM link yaitu :
btspp://hostname:[CN | UUID];parameters
CN (Channel Number) merupakan suatu nilai yang hampir sama
dengan nomor port service pada jaringan IP, yang digunakan oleh
client untuk berkoneksi dengan server
Contoh aplikasi berikut ini menggunakan protokol serial RFCOMM
untuk berkomunikasi dengan device bluetooth. Aplikasi ini adalah
tulang punggung dari sebuah information server dan client-nya.
Server pertama kali akan mendaftarkan service-nya:
localDevice = LocalDevice.getLocalDevice();
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
notifier = (StreamConnectionNotifier)
28
Connector.open(URL);
Kemudian ia akan menunggu koneksi:
StreamConnection conn = notifier.acceptAndOpen();
Sekali sebuah koneksi diterima, kemudian ia akan membaca
command dan menjawab dengan jawaban yang tepat dengan
menggunakan method untuk koneksi serial.
Client pertama kali akan mencari device yang tersedia untuk service
tersebut:
LocalDevice localDevice =
LocalDevice.getLocalDevice();
discoveryAgent = localDevice.getDiscoveryAgent();
discoveryAgent.startInquiry(DiscoveryAgent.GIAC,
this);
Client akan meng-implement DiscoveryListener dan meng-
override method yang diperlukan untuk menerima notifikasi dari
device. Sekali device ditemukan dan proses pencarian servis sudah
selesai dilaksanakan, kemudian command tertentu akan
dibutuhkan.
2.4 DATABASE
Database pada dasarnya memiliki pengertian kumpulan data-
data dan informasi yang terstruktur dalam suatu tabel dan relasi
sehingga memudahkan dalam pengolahan data. Database ini
digunakan khususnya untuk arus informasi atau data dalam jumlah
besar. Database dipakai untuk menyimpan data sehingga dapat
dimanipulasi dengan mudah. Database dipakai untuk aplikasi
sederhana sampai yang rumit dimana melibatkan beberapa user. Oleh
karena itu Database dibagi sesuai dengankompleksitasnya. Ada dua
model Database, yaitu:
29
1. Database yang berdiri sendiri (stand alone). Merupakan
database yang sangat sederhana karena disimpan dalam sistem
file lokal dan mengakses pada mesin yang sama. Database ini
hanya dipakai untuk satu aplikasi saja.
2. Database terbagi (file share). Hampir sama dengan database
stand-alone,tetapi dapat diakses oleh beberapa user. Database ini
akan mengalami masalah jika aplikasi memerlukan banyak
perhitungan dan pada saat yang bersamaan ada pengaksesan ke
dalam database.
2.4.1 Entity Relation Diagram (ERD)
Sebuah ERD mendokumentasikan data sebuah informasi dengan
cara menentukan data-data apa yang terdapat dalam setiap entity dan
bagaimana relationship (hubungan) antara sebuah entity dengan yang
lainnya. Dibawah ini akan dijelaskan beberapa hal yang dapat
digunakan dalam ERD :
Entity (obyek data) adalah “sesuatu” atau “obyek” yang ada
dalam dunia nyata yang dapat dibedakan dari objek lainnya.
Entity dapat berupa environmental element (elemen di
sekitar sistem yang berhubungan dengan sistem tersebut),
resource (sumber daya yang berhubungan dengan system
yang ada). Entity digambarkan dengan (kata benda tunggal)
di dalamnya.
Attribute adalah menguraikan bagian-bagian yang ada
berdasarkan jumlah dari entity yang mempunyai tipe yang
sama dan kemudian membagi-bagikan bagian-bagian
tersebut.
Identifier ialah atribut yang mengidentifikasikan sebuah
entity secara unik.
Relationship ialah hubungan yang terjadi antara dua buah
entity dan digambarkan dengan garis dan sebuah kata kerja
di sampingnya.
Connectivity ialah jumlah yang menunjukkan berapa kali
sebuah entity muncul dalam relasi dengan entiti lainnya. Ada
3 jenis hubungan, yaitu :
One-to-one relationship
30
Merupakan hubungan di mana suatu anggota entity
mempunyai hubungan dengan satu anggota entity pada
entity yang berbeda.
Gambar 2. 7. One to one relationship
One-to-many
Merupakan hubungan antara beberapa anggota entity
yang satu dengan beberapa anggota entity yang
lainnya.
Gambar 2.8. One to many relationship
Many-to-many
Merupakan hubungan antara beberapa anggota entity
yang satu dengan beberapa anggota entity yang
lainnya.
Gambar 2.9. Many to many relationship
31
2.4.2 Structured Query Language (SQL)
SQL adalah Cara berinteraksi/berkomunikasi antara pemakai
dengan basis data diatur dalam suatu bahasa khusus yang ditetapkan
oleh perusahaan pembuat DBMS. Bahasa itu disebut Bahasa Basis
Data. Bahasa Basis Data dapat dipilah ke dalam 2 bentuk yaitu:
Data Definition Language (DDL)
Dengan bahasa ini kita dapat membuat tabel baru, membuat
indeks, mengubah tabel dan sebagainya. Perintah DDL dalam
SQL meliputi :
o CREATE TABLE – membuat tabel baru dalam
database
o ALTER TABLE – mengubah definisi tabel
o DROP TABLE – menghapus tabel
o CREATE INDEX – membuat index (search key)
o DROP INDEX - menghapus index
Data Manipulation Language (DML)
Merupakan bentuk bahasa basis data yang berguna untuk
melakukan manipulasi dan pengambilan data pada suatu
basis data. Manipulasi data dapat berupa:
Penyisipan /Penambahan data baru ke suatu basis data
Penghapusan data dari suatu basis data
Pengubahan data di suatu basis data
Perintah SQl untuk DML (Data Manipulation Language)
antara lain :
o SELECT – Mengekstrak data dari tabel-tabel di
database
o UPDATE – Mengupdate data dalam tabel di
database
o DELETE – Menghapus data dari tabel di database
o INSERT INTO – Menyisipkan/menambah data baru
ke dalam tabel di database
32
2.4.3 Primary Key
Pada tabel dalam database yang didesain dengan baik,
terdapat sebuah atau lebih kolom yang digunakan sebagai primary
key. Primary key adalah suatu informasi yang menjadikan suatu satu
record adalah unik terhadap record yang lain dalam satu tabel.
Contoh informasi yang dapat digunakan sebagai primary key adalah
informasi Nomor Induk Pegawai atau Nomor Induk Mahasiswa.
Pada saat pembuatan tabel, primary key dibuat dari kolom unik yang
biasanya merupakan suatu tipe integer dan hindari untuk
menggunakan tipe yang lain. Sebab indeks yang dibuat untuk
primary key, ukurannnya menjadi besar. Dengan membuat informasi
tambahan yang berupa integer sebagai primary key selain indeks
yang digunakan berukuran kecil, juga meningkatkan kecepatan
proses query. Primary key yang ditambahkan ini sering juga disebut
kolom internalID.
2.4.4 Foreign Key
Tabel juga dapat berisi kolom foreign key. Foreign key pada
suatu tabel dapat digunakan untuk mengidentifiksi informasi pada
tabel yang lain. Foreign key juga digunakan untuk menciptakan
referenstial integrity, yaitu jika pada suatu tabel di-update, maka
tabel lain di update pula. Field yang menjadi foreign key pada tabel
pertama tidaklah unik, tetapi pada tabel lain field tersebut harus
menjadi primary key. Karena foreign key akan menjadi primary key
pada tabel kedua, maka primary key harus dibuat terlebih dahulu.
2.4.5 MySQL
MySQL adalah salah satu jenis database server yang sangat
terkenal. Kepopulerannya disebabkan MySQL menggunakan SQL
(Structured QueryLanguage) sebagai bahasa dasar untuk mengakses
database-nya. Selain itu software ini bersifat open source sehingga
tidak perlu membayar untuk menggunakannya. MySQL termasuk
jenis RDBMS (Relational Database Management System). Itulah
sebabnya istilah seperti tabel, baris dan kolom digunakan pada
MySQL. Pada MySQL, sebuah database mengandung satu atau
33
sejumlah tabel. Tabel terdiri dari sejumlah baris dan setiap baris
mengandung satu atau beberapa kolom.
2.5 CLIENT SERVER
Client-server merupakan arsitektur komputasi yang
memisahkan antara klien dengan server, dan kebanyakan arsitektur
ini diimplementasikan pada jaringan komputer. Namun bisa juga
diimplementasikan antar perangkat lain seperti juga handphone
dengan handphone, ataupun handphone dengan komputer. Setiap
klien atau server yang terhubung ke jaringan disebut sebagai node.
Umumnya arsitektur ini memiliki 2 tipe node yaitu: klien dan server.
Tipe ini biasanya disebut pula two-tier. Dengan arsitektur ini,
memungkinkan device untuk melakukan sharing files dan resources.
Gambar 2.10 Arsitektur Umum Client Server
Setiap instance dari software pada klien dapat mengirimkan
request kepada satu atau beberapa server yang terhubung kepadanya.
Server kemudian menerima request tersebut, memprosesnya, setelah
itu mengirimkan informasi yang dihasilkan kepada klien. Meskipun
34
konsep ini diaplikasikan pada berbagai jenis aplikasi, namun secara
garis besar pola request dan response nya tetap sama. Beberapa
penerapan arsitektur client server, yaitu pada web browser sebagai
klien, serta web server, database server, dan mail server sebagai
server.
2.5.1 Karakteristik Client Server
Secara umum karakteristik dari client adalah sebagai berikut:
Aktif
Menginisialisasi request
Menunggu balasan dari request
Umumnya terhubung dengan sedikit server dalam suatu
waktu
Umumnya berinteraksi secara langsung dengan end-user
menggunakan GUI (Graphical User Interface).
Sedangkan karakteristik server secara umum yaitu:
Pasif
Menunggu request dari klien
Seketika terdapat request yang masuk kepadanya, server
akan langsung memproses dan mengirimkan hasil
informasinya kepada klien yang memintanya
Umumnya menerima koneksi dari klien dalam jumlah yang
besar
Umumnya tidak berinteraksi secara langsung dengan end-
user.
Dapat bersifat stateless ataupun stateful.
2.5.2 Keuntungan dan Kerugian Arsitektur Client Server
Keuntungan dari penerapan arsitektur client server antara
lain:
Semua data disimpan pada server, sehingga manajemen
sekuritas penuh berada pada server, hal ini menjadi baik
dibandingkan dengan manajemen sekuritas data yang
35
tersebar, server menjamin siapa-siapa saja yang berhak
mengakses data.
Oleh karena storage terpusat, proses update data menjadi
mudah untuk dilakukan daripada melakukan update data
yang tersebar. Pada kasus peer to peer, update data
dilakukan di setiap peer, hal ini tentunya sangat memakan
waktu dan rentan terjadinya inkonsistensi data.
Sedangkan kerugian dari penerapan arsitektur klien server
antara lain:
Kongesti trafik menjadi masalah utama arsitektur klien
server. Semakin banyak jumlah request client secara
simultan, dapat mengakibatkan server dan jaringan kelebihan
beban.
Jika server mengalami kegagalan, maka request dari klien
tidak dapat dipenuhi, hal ini berlaku untuk semua klien yang
terkoneksi dengan server.
36
{Halaman sengaja dikosongkan}
37
BAB 3
PERANCANGAN DAN IMPLEMENTASI
PERANGKAT LUNAK
3.1 DESKRIPSI UMUM
Perangkat lunak yang akan dikembangkan dalam Tugas
akhir ini adalah mengenai sistem pemesanan makanan pada
foodcourt. Secara garis besar aplikasi ini nantinya terdiri dari 3
bagian utama yaitu: aplikasi pada handphone, aplikasi pada server
dan aplikasi pada agen rumah makan (restoran). Gambaran umum
dari aplikasi menu pemesanan makanan ini dapat dilihat pada
gambar 3.1.
Gambar 3.1 Gambaran umum aplikasi pemesanan makanan
Perangkat lunak pada server akan dibuat menggunakan J2SE
dan berbasis desktop. Aplikasi di sisi server berfungsi untuk
menangani koneksi bluetooth dengan client dan juga koneksi
database. Setiap request dari client akan ditangani dan dilayani oleh
aplikasi server. Perangkat lunak pada client (pelanggan) dibuat
menggunakan J2ME, aplikasi ini akan dipasang di telepon selular
38
pelanggan. Syarat dari handphone yang akan di gunakan adalah
harus mendukung MIDP2.0 dan bluetooth API (JSR-82). Aplikasi ini
berfungsi untuk melakukan pemesanan makanan terhadap restoran-
restoran yang ada di foodcourt. Sedangkan aplikasi di sisi client
restoran akan dibuat menggunakan PHP karena berbasiskan web,
aplikasi ini akan menampilkan daftar pesanan disertai dengan nomer
meja dan bill yang harus dibayar. Daftar pesanan yang tampil harus
di layani oleh restoran.
3.2 PERANCANGAN DATABASE APLIKASI
Pada bagian ini akan diberikan gambaran mengenai
rancangan database. Database yang digunakan diberi nama
“foodcourt”dan terdiri dari 9 tabel. Penjelasan dari masing-masing
tabel termasuk seluruh atribut dan kegunaannya yang digambarkan
pada model data fisik ini dapat dilihat pada tabel 3.1 sampai dengan
tabel 3.9. Rancangan model database ditunjukkan pada gambar 3.2
berikut:
Gambar 3.2 Rancangan database
39
tb_komplain digunakan untuk menyimpan komplain dari pelanggan.
tb_detil pesan dan tb_pesan digunakan untuk menangani proses
pemesanan dan pembayaran. tb_foodcourt digunakan untuk
menyimpan data nama-nama restoran. tb_pegawai berisi data
pegawa, tb_pelanggan berisi data pelanggan. Untuk penjelasan dari
masing-masing atribut untuk setiap tabel akan dijelaskan pada Tabel
3.1 sampai Tabel 3.9 di bawah ini:
Tabel 3.1 tb_komplain
Field Tipe Data Key Deskripsi ID_Komplain int(8) PRI Unique identifier
komplain
ID_Pelanggan int(8) Unique identifier
pelanggan
Isi_Komplain varchar(150) Isi komplain
Tanggal_Komplain datetime Tanggal komplain
Status smallint(1) status komplain sudah
selesai atau belum
Tabel 3.2 tb_detil_pesanan
Field Tipe Data Key Deskripsi
ID_Detil_Pesanan int(8) PRI Unique identifier detil
pesanan
ID_Pesan int(8) Unique identifier
pesan
ID_Menu int(8) Unique identifier menu
Jumlah int(4) Jumlah/banyaknya
pesanan
Total_Harga double(8,0) Harga total diperoleh
dari jumlah*harga
Status smallint(2) Status pesanan sudah
dilayani atau belum
Tanggal_Jam_Pesan datetime tanggal dan jam
pemesanan
Tanggal_Jam_Selesai datetime tanggal dan jam selesai
dilayani
40
Tabel 3.3 tb_foodcourt
Field Tipe Data Key Deskripsi
ID_Foodcourt int(8) PRI Unique identifier foodcourt
Nama_Foodcourt varchar(30) Nama restoran yang ada di
foodcourt
Pengelola varchar(25) Nama pemilik foodcourt
Telp varchar(25) Nomer telp pemilik
Tabel 3.4 tb_menu
Field Tipe Data Key Deskripsi
ID_Menu int(8) PRI Unique identifier menu
ID_Foodcourt int(8) Unique identifier foodcourt
Nama_Menu varchar(25) Nama makanan / minuman
Harga double(8,0) Harga makanan / minuman
Deskripsi varchar(35) Penjelasan singkat tentang
menu
Status_Aktif smallint(2) Status makanan tersedia atau
tidak
Tabel 3.5 tb_pegawai
Field Tipe Data Key Deskripsi
ID_Pegawai int(8) PRI Unique identifier pegawai
ID_Foodcourt int(8) Unique identifier foodcourt
Nama varchar(35) Nama pegawai
Jenis_Kelamin varchar(2) Jenis Kelamin
Alamat varchar(25) Alamat pegawai
Telpon varchar(20) Telpon pegawai
Username varchar(10) username untuk login ke
sistem
Password varchar(15) password untuk login ke
sistem
status_aktif smallint(1) Status pegawai aktif atau
tidak
41
Tabel 3.6 tb_pelanggan
Field Tipe Data Key Deskripsi
ID_Pelanggan int(8) PRI Unique identifier
pelanggan
Nama_Pelanggan varchar(30) Nama pelanggan
Alamat varchar(30) Alamat Pelanggan
Telp varchar(25) Telp pelanggan
Username varchar(10) username pelanggan untuk
pemesanan
Password varchar(10) password pelanggan untuk
pemesanan
MAC_ADDRESS varchar(30) MAC Address bluetooth
pelanggan
Tabel 3.7 tb_pembayaran
Field Tipe Data Key Deskripsi
ID_Pembayaran int(8) PRI Unique identifier
pembayaran
No_Nota varchar(10) nomer nota pembayaran
ID_Pesan int(8) Unique identifier pesan
Tanggal_Bayar datetime nomer nota pembayaran
Total_Bayar double(8,0) Total pembayaran
ID_Pegawai int(8) Unique identifier pegawai
Tabel 3.8 tb_pesan
Field Tipe Data Key Deskripsi
ID_Pesan int(8) PRI Unique identifier pesan
ID_Pelanggan int(8) Unique identifier
pelanggan
No_Meja int(8) nomer meja
Total_Bayar int(25) Total Pembayaran
Status smallint(1) Status pesan sudah selesai
atau belum
Tanggal varchar(10) Tanggal Pemesanan
MAC_ADDRESS varchar(30) MAC Address pelanggan
42
Tabel 3.9 tb_meja
Field Tipe Data Key Deskripsi
No_Meja int(3) PRI Nomer Meja (Unique)
Status smallint(1) Status meja sudah terisi
atau belum
3.3 PERANCANGAN DAN IMPLEMENTASI SISTEM
APLIKASI MENU PEMESANAN MAKANAN
Pengaksesan menu pemesanan makanan merupakan aplikasi
dan pengembangan dari komunikasi client-server via bluetooth dan
client-server via wired LAN. Tentunya ada yang bertindak sebagai
server dan ada yang menjadi client, dalam kasus ini komputer (PC)
sebagai server, dan telepon selular yang mendukung JSR-82 sebagai
client. Selain itu dibutuhkan juga aplikasi client yang menggunakan
komputer untuk digunakan oleh restoran. Sistem ini dapat diakses
oleh orang lebih dari satu. Dan sistem ini sering disebut Piconet.
3.3.1 KOMUNIKASI CLIENT SERVER
Pada komunikasi antara bluetooth MIDlet dan aplikasi
bluetooth server data akan dikirimkan melalui koneksi bluetooth. Di
mana MIDlet client mengirimkan request message (pesan
permintaan) ke server dan menerima reply message (pesan balasan)
dari aplikasi bluetooth server, sedangkan aplikasi bluetooth server
akan menerima request message dari client dan mengirim reply
message (pesan balasan) ke MIDlet client. Komunikasi data akan
terbangun dengan baik apabila antara MIDlet client dengan aplikasi
bluetooth server dapat menginterpretasikan setiap pesan yang
diterima di antara keduanya. Komunikasi yang terjadi antara client
server merupakan proses request data oleh client dan proses
pengolahan data serta reply data oleh server. Pada aplikasi ini proses
yang tarjadi yaitu proses login, proses permintaan daftar restoran dan
daftar menu makanan atau minuman, proses input pesanan, proses
permintaan history dan proses komplain.
43
3.3.1.1 Sequence Login
Dari Gambar 3.3. dapat dilihat bahwa pertama-tama client
akan mengirimkan username dan password-nya kepada server dalam
bentuk string. Setelah itu akan diterima oleh server, selanjutnya akan
diproses ke database. Pada bagian ini akan dilakukan proses validasi.
Dan hasil pengolahan oleh database akan dikirimkan kembali ke
server untuk kemudian disampaikan kepada client.
Foodcourt Client
Foodcourt Bluetooth Server
Database (mysql)
LOGIN_STATE: username, password
loginValidasi-proses query
LOGIN_INVALID
loginValidasi-hasil query
LOGIN
Menu Layanan
} OR
Gambar 3.3 Sequence proses login
Pada gambar 3.3 menunjukkan bahwa proses login yang
dilakukan oleh user. Jika login valid maka bluetooth application
server mengirimkan data LOGIN pada MIDlet Client sebagai reply
message. Yang kemudian MIDlet client akan menampilkan Menu
Layanan. Apabila username dan password yang dikirimkan tidak
sesuai maka data yang dikirikan ke client adalah LOGIN_INVALID.
Namun pada saat request message gagal di kirimkan, maka MIDlet
Client akan menampilkan pesan error.
44
3.3.1.2 Sequence Daftar Foodcourt
Pada gambar 3.4. merupakan message sequence dari proses
permintaan daftar nama-nama foodcourt yang aktif pada bluetooth
application server dari MIDlet client (request message). Bluetooth
application server akan mengirimkan reply message berupa data
foodcourt. Apabila pada saat MIDlet client mengirimkan request
message gagal, maka MIDlet Client akan menampilkan pesan error
Foodcourt Client
Foodcourt Bluetooth Server
Database(mysql)
DAFTAR_FOODCOURT;1;
sqlDaftarFoodcourt : proses query
sqlDaftarFoodcourt : hasil query
TampilanRestoranData Foodcourt aktif
Gambar 3.4 Sequence daftar foodcourt
3.3.1.3 Sequence Daftar Menu
Setelah proses menampilkan daftar foodcourt pada MIDlet
client, user akan memilih nama foodcourt dan kemudian dikirimkan
oleh MIDlet client ke bluetooth application server untuk
mendapatkan daftar menu makanan atau minuman. dan message
sequence dari proses ini ditunjukkan pada gambar 3.5. bluetooth
application server akan melakukan proses query untuk mengambil
data menu makanan atau minuman pada database. Daftar menu akan
dikirimkan pada MIDlet client sebagai reply message.
45
Foodcourt Client
Foodcourt Bluetooth Server
Database(mysql)
DAFTAR_MENU;ID,NamaResto,;
sqlDaftarMenu(ID) : proses query
sqlDaftarMenu : hasil query
Daftar Makanan RestoranTampilanMakanan
Gambar 3.5 Sequence daftar menu
3.3.1.4 Sequence Input Pesanan
Proses pemesanan makanan pada bluetooth server terdiri
atas dua proses query yaitu proses sqlInputPesanan() dan
sqlInputDetailPesanan() yang message sequence-nya
ditunjukkan pada gambar 3.6. Sebagai reply message dari bluetooth
application server yaitu data konfirmasi berupa ID Pesanan, nomer
meja dan total pembayaran.
Foodcourt
ClientFoodcourt
Bluetooth ServerDatabase(mysql)
INPUT_PESANAN (DataPesanan)
sqlInputPesanan()
sqlInputDetailPesan()
Input Transaksi Sukses
OrderConfirmation
Order ID, nomeja,total Bayar
Gambar 3.6 Sequence input pesanan
46
3.3.1.5 Sequence History dan Detil History
History dan detilhistory merupakan fasilitas yang disediakan
untuk melihat transaksi yang pernah dilakukan sebelumnya, Pada
gambar 3.7. merupakan message sequence dari proses permintaan
history dan detilhistory. Pertama client melakukan request
SHOW_HISTORY + id pelanggan dan Bluetooth application server
akan mengirimkan reply message berupa tanggal, Id pesanan, total
bayar dan status pembayaran. Selanjutnya client mengirimkan
request DETIL_HISTORY + id pesanan, dan server mengirimkan
reply berupa detil pemesanan dengan id pesanan tersebut.
Foodcourt Client
Foodcourt Bluetooth Server
Database (mysql)
SHOW_HISTORY;"idPelanggan ;
dataStringTransmit = history;
sqlHistoryPesanan(idPelanggan)
sqlHistoryPesanan-hasil query
DETIL_HISTORY;idPesanan;
sqlDetilHistory(idPesanan)
sqlDetilHistory-hasil query
dataStringTransmit = detilhistory
Gambar 3.7 Sequence history
47
3.3.1.6 Sequence Input Komplain
Pada proses komplain, client mengirimkan data
INPUT_KOMPLAIN + isi komplain. Kemudian bluetooth server
melakukan input pesanan dengan menjalankan fungsi
sqlInputKomplain(). Sebagai reply message dari bluetooth
application server yaitu data konfirmasi berupa ID Komplain.
Message sequence-nya ditunjukkan pada gambar 3.8.
Foodcourt Client
Foodcourt Bluetooth Server
Database(mysql)
INPUT_KOMPLAIN;idPlgn;komplain
sqlInputKomplain
Input Komplain Sukses
dataStringTransmit = IDkomplain
Gambar 3.8 Sequence input komplain
3.3.2 APLIKASI SERVER PADA KOMPUTER (J2SE)
Aplikasi server merupakan aplikasi yang berfungsi untuk
menangani koneksi bluetooth dengan client (pelanggan). Selain itu,
data yang dikirimkan dari client akan diolah oleh aplikasi server,
yang akan diteruskan dengan pengolahan ke database. Hasil
pengolahan itu akan di dikirimkan kembali ke client. Dalam
mendesain Foodcourt Bluetooth Server diperlukan beberapa hal agar
sebuah mobile device yang berkerja dengan menggunakan aplikasi
dari J2ME dapat berkomunikasi dengan PC (Personal Computer)
yang menggunakan aplikasi J2SE. Pemrograman Bluetooth pada java
hal terpenting yang harus dimiliki adalah Java Bluetooth Stack,
48
dimana stack ini akan menyediakan “jembatan” antara pemrograman
java dan bluetooth hardware. Salah satu cara untuk mendapatkan
Java Bluetooth Stack ialah dengan menggunakan Microsoft
Bluetooth Stack API dan BlueCove. Microsoft Bluetooth Stack API
adalah sebuah socket-style atau lebih sering disebut dengan WinSock.
Stack ini adalah sebuah aplikasi c-based untuk mengoperasikan
generic USB Bluetooth Dongle.BlueCove API dibuat berdasarkan
JSR-82 API, sehingga sifatnya sangat terbuka dan gratis terhadap
pengembang-pengembang Bluetooth. BlueCove dapat digunakan
untuk beberapa aplikasi seperti Serial Port Profile, General Access
Profile dan Service Discovery Profie.
Tabel 3.10 Kebutuhan Aplikasi server
No Kebutuhan Keterangan
1 Bluetooth device Alat untuk menerima dan mengirim
pesan
2 J2SDK-6.0 Kompiler untuk bahasa pemrograman
java
3 BlueCove Paket java untuk mengontrol
bluetooth device
4 CommAPI 2.0 Paket java untuk mengakses serial
port
5 JDBC-Connector Paket java untuk menghubungkan
dengan database, untuk mysql
menggunakan mysql-connector-java
Foodcourt Bluetooth Server dibuat dengan menggunakan
BlueCove stack yang dapat diperolah di http://sourceforge.net/
projects/bluecove/ dan Microsoft Bluetooth Stack.
Proses yang dilakukan oleh server diperlihatkan pada activity
diagram pada gambar 3.9. Yang pertama kali dilakukan oleh server
yaitu melakukan inisialisasi bluetooth device kemudian menjalankan
service setelah itu melakukan proses listening client. Jika ada client
yang terhubung dengan server maka server akan melakukan validasi
dan menunggu request data dari client. Data yang telah di terima
akan diolah oleh server kemudian mengirimkan jawaban ke client
sesuai dengan permintaan.
49
tampilkan pesan
Melakukan request koneksi ke server
Mengirim Data
ada client connect?
Login?
request restoran?
tidak
requestmenu?
tidak
requesthistory ?
tidak
inputpesanan?
tidak
inputkomplain?
tidak
hasil login ya
Menerima dan mengolah data
daftar menu
ya
daftar history ya
input komplain
input komplain
Tutup koneksi database
Tutup koneksi bluetooth
Buka koneksi database
Initial Bluetooth device
Menjalankan service
Menunggu koneksi client
Melakukan koneksi bluetooth
Daftar Restoran
ya
input pesanan ya
Kirim Pesan
ya
tidak
tidak
y a
ServerClient
Gambar 3.9 Activity diagram server
50
Berdasarkan activity diagram server pada gambar 3.9, maka dapat
dibuat class diagram. Class diagram server ini terdiri dari empat
buah class, yaitu class TaServer, class bluetoothConnection, class
logConnectionFrame dan class ClientThread. Hasil class diagram
yang telah dibuat dapat dilihat pada gambar 3.10 berikut ini.
Gambar 3.10 Class diagram aplikasi server
51
3.3.2.1 User Interface Server
Berdasarkan rancangan sistem pada gambar 3.9. maka pada
aplikasi Server dapat dibuat visualisasi design form pada gambar
3.11 berikut ini
Gambar 3.11 Design Form pada aplikasi Server (J2SE)
Untuk membuat tampilan dengan desain seperti diatas maka
digunakan JFrame yang kemudian dipanggil pada main() dan di
set dengan size 640x480. Form aplikasi server diberi title “Foodcourt
Desktop Server”. Source untuk membuat form aplikasi server adalah
sebagai berikut:
public static void main(String args[]) {
FoodCourtServer mainFrame = new
FoodCourtServer();
mainFrame.setSize( 640, 480 );
mainFrame.setLocation( 80,70 );
mainFrame.setTitle("Food Court Desktop
Server");
mainFrame.setVisible( true );
}
Dari source diatas akan menghasilkan tampilan form seperti gambar
3.12. Form tersebut memiliki menu file, koneksi, foodcourt dan help.
FoodCourt Desktop Server _ [ ] X File Koneksi FoodCourt Help Server > Create server.... Server> Menunggu koneksi client......
52
Gambar 3.12 Hasil user interface aplikasi server (J2SE)
3.3.2.2 Koneksi Bluetooth Pada Server
Aplikasi server digunakan untuk menangani koneksi
bluetooth, sehingga diperlukan sebuah tampilan log untuk
mengetahui dan memonitoring apakah ada client yang sedang konek
atau tidak. Server akan mendeteksi (listen) adanya perangkat yang
melakukan koneksi dengan server. Dan ketika ada client yang
melakukan koneksi dengan server maka server akan menangkap data
yang dikirimkan oleh user. Untuk menangani koneksi bluetooth
maka digunakan class javax.bluetooth.*;
Gambar 3.13 menunjukkan bagaimana proses discovery
Bluetooth pada server bakerja.sehingga dapat melakukan
pengaksesan terhadap sistem pemesanan makanan. Method-method
yang digunakan untuk melakukan koneksi bluetooth telah dijelaskan
sebelumnya di bab 2. Dari method-method tersebut dapat
digambarkan sequence diagram nya seperti pada gambar 3.13 berikut
ini.
53
ConnectorService Record Remote Device ConnectionMIDlet Local Device Discovery Agent
getLocalDevice()
getDisscoveryAgent()
retriveDevice()
startInquiry()
deviceDiscovered()
searchServices()
servicesDiscovered()
getConnectionURL()
Connector.open()
getBluetoothAddress()
Send()
Gambar 3.13 Sequence bluetooth connection
Berdasarkan Gambar 3.13, maka dapat di tentukan beberapa
class yang digunakan untuk koneksi bluetooth dalam pembangunan
aplikasi pemesanan makanan ini. Proses pertama yang dilakukan
untuk membangun koneksi client-server via bluetooth yaitu
melakukan inisialisasi pada local device bluetooth yang bertujuan
untuk mendapatkan informasi dari local device bluetooth dan untuk
mendapatkan akses ke bluetooth manager.
getLocalDevice() : berfungsi menyediakan akses untuk
mengontrol perangkat bluetooth yang ada pada sisi client pada tugas
akhir ini adalah berupa HandPhone. Class ini berfungsi untuk
mengambil informasi pada local device seperti bluetooth address,
device class dan discovery agent. Source code untuk proses
inisialisasi adalah sebagai berikut :
54
...
private LocalDevice localDevice;
// local bluetooth manager
...
//mendapatkan informasi dari local device dan untuk
dapat
//mengakses bluetooth manager
localDevice = LocalDevice.getLocalDevice();
//pengesetan discoverable mode GIAC pada server
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
...
Setelah melakukan proses inisialisasi, proses selanjutnya adalah
membuat koneksi server dengan menggunakan
Connector.open() method
/koneksi server
import javax.microedition.io.Connector;
private StreamConnectionNotifier notifier;
...
//membuat koneksi server menggunakan Serial Port
Profile URL,
//spesifik UUID, dan nama service
notifier =
(StreamConnectionNotifier)Connector.open(
"btspp://localhost:102030405060708090A0B0C0D0E0F010
;" +
"name=FOODCOURT;authenticate=false;encrypt=false");
...
Proses berikutnya yaitu mengeset attribute service record pada
Service Discovery Database (SDDB). Berikut potongan source code-
nya :
...
//mengambil record dari SDDB
ServiceRecord record =
localDevice.getRecord(notifier);
//mengeset service record ServiceAvailability
(0x0008)
55
//attribute yang mengindikasikan service tersedia,
record.setAttributeValue(0x0008,new DataElement(
DataElement.U_INT_1, 255 ) )
...
Agar client dapat membangun koneksi dengan server dengan service
yang disediakan oleh server, maka server perlu meregistrasikan
service record pada SDDB dan melakukan proses menunggu koneksi
dari client. Berikut source code pada proses ini :
...
// koneksi pada remote device
StreamConnection client = null;
try {
//memasukkan service record pada SDDB dan menunggu
koneksi dari client
client = notifier.acceptAndOpen();
...
} catch (IOException e) {…}
..
Apabila server menerima koneksi dari client, maka proses
selanjutnya yaitu proses penerimaan dan pengiriman data dari dan ke
client serta menginterpretasikan data yang diterima oleh server yang
digunakan sebagai variabel untuk proses query database dan proses
pemeriksaan untuk keperluan validasi. Berikut source code pada
proses ini :
...
try {
//memperoleh input stream dari client
DataInputStream in = conn.openDataInputStream();
//membaca input message yang berupa data string
String dataStringReceive = in.readUTF();
//menginterpretasikan data input dengan mengubah
data string ke array
string2array(dataStringReceive);
....
//proses pengiriman data pada client
56
DataOutputStream stream =
conn.openDataOutputStream();
stream.writeUTF( dataStringTransmit );
stream.flush();
conn.close();
}catch (Exception e) {}
Gambar 3.14. Merupakan hasil tampilan dari aplikasi server
untuk menangani proses koneksi bluetooth. Pada gambar 3.14
sebelah kiri menunjukkan error handling saat bluetooth tidak
ditemukan pada komputer server. Sedangkan pada gambar sebelah
kanan menunjukkan log saat server siap untuk menerima koneksi
dari client. Server akan terus melakukan listening sampai ada client
yang melakukan koneksi.
Gambar 3.14 Log koneksi aplikasi server (J2SE)
3.3.2.3 Koneksi Database Pada Server
Untuk melakukan insert, select, delete, dan update data,
tahapan pertama yang dilakukan yaitu melakukan koneksi dengan
database MySQL. Kemudian dilanjutkan dengan membuat objek
Statement dengan menggunakan objek Connection . Oleh
karena itu pernyataan (statement) SQL dibuat dan dalam bentuk
data string. Pernyataan SQL dijalankan dengan melalui dua metode
berdasarkan fungsinya. Jika ingin mengambil data (select)
57
pernyataan SQL dijalankan dengan metode executeQuery(),
sedangkan untuk membuat atau memodifikasi (create, insert, update,
delete) tabel data dari database metode yang digunakan yaitu executeUpdate().
Berikut source code untuk melakukan koneksi database maka
digunakan JDBC driver.
private void koneksi() throws Exception{
String driver = "com.mysql.jdbc.Driver";
String url =
"jdbc:mysql://127.0.0.1/foodcourt";
String username = "root";
String password = "tarantula";
try {
Class.forName( "com.mysql.jdbc.Driver" );
con = DriverManager.getConnection(
url,username,password );
System.out.println( "Terhubung
Database" );}
catch (ClassNotFoundException cnfex) {
System.err.println("Koneksi Driver JDBC
- ODBC Gagal");
cnfex.printStackTrace();
System.exit(1);}
catch (SQLException sqlex) {
System.err.println("Koneksi Tidak Dapat
Dilakukan");
sqlex.printStackTrace();}
}
3.3.2.4 Proses Login
Pada saat koneksi client-server dibangun, proses yang
dilakukan setelah koneksi terbangun adalah user melakukan login
yang bertujuan untuk pengidentifikasian pada user. Aplikasi client
akan mengirimkan data LOGIN_STATE disertai dengan username
dan password. Data tersebut kemudian oleh server diolah dan
dicocokkan dengan database. Jika login valid maka server akan
mengirimkan data LOGIN disertai dengan id pelanggan dan nama
pelanggan Sedangkan jika login salah atau tidak sesuai, maka pesan
58
yang dikirimkan oleh server adalah LOGIN_INVALID. Activity
diagram dari proses validasi login dapat dilihat pada gambar 3.15.
Melakukan Login
Discovery Bluetooth
Cek Kondisi
LOGIN_STATE;uname;passw
login valid?
koneksi database
proses loginValidasi
kirim pesan
LOGIN;idPelanggan,nmPelanggan
LOGIN_INVALID
tutup koneksi database
tampilkan pesan
tidakya
Serv erClient
Gambar 3.15 Activity diagram proses login
Data yang dikirimkan oleh client ke server yaitu kondisi
proses, username, dan password. Untuk proses login data kondisinya
yaitu LOGIN_STATE, yang dapat diketahui dengan proses
pemeriksaan kondisi. Berikut adalah source code proses login :
59
…
String dataStringReceive = in.readUTF();
string2array(dataStringReceive);
String no = null;
if (array[0].equals("miftakhz31n"))
{
no = "New_client";
dataStringTransmit = "miftakhz31n;";
}
else if (array[0].equals("LOGIN_STATE"))
{
String username = array[1];
char[] password = new char[array[2].length()];
for (int i = 0; i < array[2].length(); i++) {
password[i] = array[2].charAt(i);
}
if (loginValidasi(username, password))
{
dataStringTransmit = "LOGIN;" + tempId + ";"
+ tempNama + ";";
}
else
{
dataStringTransmit = "LOGIN_INVALID;";
}
....
3.3.2.5 Proses Daftar Foodcourt
Pada proses data daftar foodcourt, data kondisi yang
dikirimkan oleh client untuk proses ini yaitu
DAFTAR_FOODCOURT. Kondisi tersebut menunjukkan bahwa
client melakukan permintaan daftar nama-nama restoran yang ada di
foodcourt. Activity diagram dari proses data daftar foodcourt dapat
dilihat pada gambar 3.16.
Proses yang dilakukan yaitu, client akan megirimkan request
message, kemudian server akan menindaklanjuti dengan melakukan
proses pengambilan data daftar foodcourt yang aktif pada database
dengan menjalankan fungsi sqlDaftarFoodcourt() yaitu
dengan melakukan kueri ke database. Data yang ada kemudian
dikirimkan ke client. Data yang dikirim berisi id Fodcourt dan Nama
60
Foodcourt. Sedangkan bila data kosong, maka yang dikirimkan
adalah NULL_RESTORAN. Berikut ini adalah potongan sourcode
untuk proses daftar Foodcourt:
…
} else if (array[0].equals("DAFTAR_FOODCOURT")) {
String statusnya = array[1];
sqlDaftarFoodcourt(statusnya);
dataStringTransmit = gabungfc;
}
…
request daftar restoran
tampilkan pesan
Discovery Bluetooth
Cek Kondisi
DAFTAR_FOODCOURT;1;
ada data?
koneksi database
Jalankan fungsi sqlDaftarFoodcourt
kirim pesan
data = IdFoodcourt;NamaFoodcourt
data = NULL_RESTORAN
tutup koneksi database
ya tidak
Serv erClient
Gambar 3.16 Activity diagram daftar foodcourt
61
3.3.2.6 Proses Daftar Menu (Makanan atau Minuman)
Activity diagram pada proses informasi daftar makanan
dapat dilihat pada gambar 3.17. Pada proses info daftar makanan
untuk restoran yang diinginkan oleh pelanggan data kondisi pada
request message yaitu DAFTAR_MENU.
request daftar menu
tampilkan pesan
Discovery Bluetooth
Cek Kondisi
DAFTAR_MENU;idFoodcourt;
ada data?
koneksi database
Jalankan fungsi sqlDaftarMenu(idFoodcourt)
kirim pesan
data = IdMenu;NamaMenu;Harga
data = NULL_MAKANAN;
tutup koneksi database
ya tidak
Serv erClient
Gambar 3.17 Activity diagram daftar makanan
Selain data kondisi pada request message terdapat data
ID_Foodcourt yang digunakan untuk proses pengambilan data menu
makanan pada database. Hasil pengambilan data makanan atau
minuman dari database akan dikirimkan ke client. Sehingga
pelanggan akan dengan mudah mendapatkan informasi daftar menu
dan dapat menentukan menu makanan atau minuman mana yang
62
akan dipesan. Berikut source code pada proses informasi daftar
makanan
...
else if (array[0].equals("DAFTAR_MENU")) {
String statusnya = array[1];
sqlDaftarMenu(statusnya);
dataStringTransmit = gabungmenu; }
...
3.3.2.7 Proses Pemesanan Makanan dan Minuman
Activity diagram pada proses pemesanan dapat dilihat pada
gambar 3.18. Pada proses ini data kondisi pada request message
yaitu INPUT_PESANAN.
Melakukan Pesanan
tampilkan pesan
Discovery Bluetooth
Cek Kondisi
INPUT_PESANAN;idPelanggan,nomeja,total;idFoodcourt,idMenu,jml;
koneksi database
Jalankan fungsi sqlInputPesanan(array[1]); sqlInputDetail(array[2]);
kirim pesan
data = PESANAN_OK; idPesanan,noMeja,total;
tutup koneksi database
input sukses?ya
data = PESANAN_GAGAL;
tidak
Serv erClient
Gambar 3.18 Activity diagram input pesanan
63
Untuk proses pemesanan makanan dan minuman ada
beberapa data yang dikirimkan oleh client yaitu data kondisi, id
Pelanggan, nomer meja, Total pembelian, id Foodcourt, id Menu,
jumlah makanan yang dipesan. Data kondisi untuk proses pemesanan
yaitu INPUT_PESANAN.
Data yang masuk akan diubah menjadi data array. Pada
input pesanan terbagi menjadi 3 jenis, array[0] berisi data kondisi,
array[1] berisi id Pelanggan, nomer meja, Total pembelian.
Sedangkan pada data array[2] dan array[>2] berisi id Foodcourt, id
Menu, jumlah makanan. Jika proses pemeasan sukses maka server
akan mengirimkan order confirmation berupa bukti pemesanan ke
client. Berikut source code pada proses pemesanan.
…
} else if (array[0].equals("INPUT_PESANAN")) {
String pelanggan = array[1]; //1,2,35000,;
sqlInputPesanan(pelanggan);
for (int z = 2; z < array.length;z++){
if (array[z] == null){
break;
}else{
String detilnya = array[z];
//3,1,3,;3,2,3,;
sqlInputDetailPesan(idpesan,detilnya);
}
}
dataStringTransmit = balesan;
}
…
3.3.2.8 Proses Komplain
Untuk proses komplain, data yang dikirimkan oleh client
yaitu id Pelanggan dan isi komplain. Data kondisi untuk proses
pemesanan yaitu INPUT_KOMPLAIN. Kemudian server akan
menjalankan method sqlInputKomplain() sehingga data akan
dimasukkan ke database, setelah itu server memberikan reply berupa
id komplain. Activity diagram pada proses komplain dapat dilihat
pada gambar 3.19.
64
Komplain
tampilkan pesan
Discovery Bluetooth
Cek Kondisi
INPUT_KOMPLAIN; idPelanggan
koneksi database
Jalankan fungsi sqlInputKomplain(idPelanggan,komplain);
kirim pesan
data = KOMPLAIN_OK; idKomplain;
tutup koneksi database
input sukses?
data = KOMPLAIN_GAGAL;
yatidak
Serv erClient
Gambar 3.19 Activity diagram proses komplain
Untuk menangani proses komplain pada server, dapat dilihat pada
potongan source code berikut ini
…
else if (array[0].equals("INPUT_KOMPLAIN"))
{
sqlInputKomplain(array[1],array[2]);
dataStringTransmit = balesan;
}
…
65
3.3.3 APLIKASI CLIENT
Aplikasi pada client terdiri dari dua macam yaitu:
a. Aplikasi pada pelanggan (J2SE)
Untuk melihat menu dan melakukan pemesanan.
b. Aplikasi pada restoran (WEB)
Untuk melayani pemesanan dan menagani pembayaran.
Fungsi-fungsi yang dilakukan pada aplikasi client dapat dijelaskan
pada use case dibawah ini:
Mencari FoodcourtBluetooth Server
Memilih Restoran
Order Menu
Kirim Pesanan
close connection
Pembeli
Balasan
MenungguOrder
Terima Pesanan
Makanan & minuman
Foodcourt
set dilayani
Bayar
Kasir
set lunas
Gambar 3.20 Use case diagram aplikasi client
Penjelasan mengenai use case diagram:
• User / Pelanggan mencari device bluetooth server.
66
• User / Pelanggan memilih nama restoran.
• User / Pelanggan mendapat menu dan harga sesuai dengan
menu restoran.
• User / Pelanggan memilih menu makanan.
• User / Pelanggan mengirimkan pesanan dan No Meja yang
berarti melakukan input daftar pesanan dan nomer meja ke
sistem.
• User / Pelanggan mendapatkan balasan berupa List order dan
Total yang harus dibayar.
• Kasir melihat ada order baru dan belum membayar
• User / Pelanggan melakukan pembayaran ke kasir dan
menerima struk pembayaran.
• Kasir menginputkan biaya pembayaran ke sistem dan
memberikan status bahwa pemesanan dengan Id Pesan
tertentu telah membayar.
• Restoran / Penjual melihat daftar pesanan customer yang
sudah di sorting berdasarkan waktu pemesanan oleh sistem.
• Setelah koki restoran selesai membuat menu tersebut, maka
pelayan akan mengantarkan pesanan ke pelangggan.
• Restoran / Penjual memberikan status bahwa pemesanan
telah dilayani.
3.3.3.1 APLIKASI CLIENT PADA PELANGGAN
(HANDPHONE / J2ME)
Sistem akses aplikasi menu pemesanan makanan dapat
dilihat gambar 3.20 dimana pertama kali user dengan menggunakan
mobile device-nya yang sudah diperlengkapi dengan fasilitas
bluetooth, melakukan proses device inquery untuk mencari server
yang sedang aktif. Setelah pencarian berhasil, maka user akan secara
langsung berhubungan dengan Bluetooth server yang sudah ada.
Proses pertama kali dilakukan adalah proses login dimana user
diwajibkan untuk mendaftar terlebih dahulu di server. Username dan
password berfungsi sebagai pintu gerbang. Jika prosesnya berhasil,
maka user dapat melanjutkan pengaksesan. Namun jika tidak, maka
sistem akan memberikan pesan pada user. Proses yang dilakukan
client (J2ME) diperlihatkan pada actifity diagram pada gambar 3.20
berikut ini.
67
buka aplikasi client
inisialisasi bluetooth device
bluetoothaktif?
mencari foodcourt bluetooth server
ya
serverditemukan?
timeout?
melakukan koneksi ke server
ya
form login
kirim data login
tampil pesan bluetooth OFF
tidak
tampil pesan server tidak ditemukan
tidak
tampil pesan tidak bisa konek server
tidak
pilih restoranpilih menu
masukkan jumlah
kirim pesanan
receive billtutup koneksi bluetooth
login ok?
menunggu koneksi clienttidak
koneksi terbangun
input pesanan
proses validasi login
ya
tidak
Serv erclient
Gambar 3.21 Activity diagram aplikasi client (J2ME)
Dari gambar 3.21 dapat dilihat bahwa pengaksesan dapat
dilakukan lebih dari 1 orang. Akses menu pemesanan makanan dari
mobile device melalui Bluetooth ini berupa database MySql. Dengan
68
maksud agar susunan menu yang disajikan dalam aplikasi system ini
menyerupai dengan menu yang sudah ada pada database menu
pemesanan makanan. Jadi sistem yang dibuat hanya mengambil dan
memanggil data menu makanan dari nama foodcourt yang diinginkan
oleh user. Bahasa pemrograman yang digunakan adalah Java 2
Micro Edition (J2ME) pada sisi client dan Java 2 Standard Edition
(J2SE) pada sisi server sedangkan untuk mengakses database MySql
digunakan Java Database Connectivity (JDBC).
Gambar 3.22 Sistem akses menu makanan oleh pelanggan
Untuk membuat aplikasi client maka dirancanglah sebuah class
diagram untukmembuat aplikasi J2ME. Aplikasi menggunakan tiga
buah class. Yaitu class FcClient, class FcConnect dan class FcGUI.
Class FcGUI berisi method-method yang digunakan untuk membuat
tampilan dan form. Sedangkan class FcConnect berisi method-
method yang digunakan untuk menangani masalah koneksi bluetooth
dan juga berisi fungsi yang digunakan untuk menangani pertukaran
data antara client server. Class FcClient berisi method-method
default yang digunakan untuk membuat aplikasi J2ME.
69
Gambar3.23 Class diagram aplikasi client J2ME
70
3.3.3.1.1 User Interface MIDlet client
MIDlet client mempunyai beberapa layar atau tampilan yang
digunkan untuk menampilkan informasi yang dibutuhkan oleh user.
Berdasarkan rancangan sistem pada gambar 3.20 dan gambar 3.21
maka pada aplikasi pelanggan dapat dibuat blok diagram tampilan
seperti pada gambar 3.24
Gambar 3.24 Blok diagram tampilan MIDlet client
Layar-layar yang digunakan pada MIDlet client yaitu :
a. Tampilan Awal
Merupakan layar pembuka awal aplikasi.
b. Layar koneksi bluetooth
Merupakan layar yang digunakan untuk menampilkan informasi
inisialisasi pada local bluetooth telah berhasil dan pada layar ini
user dapat melanjutkan proses berikutnya dengan memilih
“connect” command untuk melakukan device dan service
discovery pada server serta membuka data tiket yang tersimpan
pada persistent storage pada telepon selular.
c. Layar Searching
Merupakan layar yang digunakan untuk menampikan informasi
untuk menunggu proses device dan service discovery. Jika
bluetooth device atau service server tidak ditemukan, maka layar
ini akan menampilkan informasinya.
d. Layar Login
71
Merupakan layar yang digunakan untuk menampilkan form
login, dimana user dapat memasukkan data nomor pelanggan,
username, password pada layar ini.
e. Layar Menu Layanan
Merupakan layat yang berisi daftar layanan yang terdiri dari
menu pilihan, yaitu Pilih foodcourt dan menu atau View Pesanan
f. Layar Daftar Foodcourt
Berisi tampilan daftar nama-nama foodcourt yang aktif dan
dikirim dari server.
g. Layar Daftar Makanan
Berisi tampilan daftar nama-nama makanan atau minuman yang
aktif dan dikirim dari server yang sesuai dengan nama foodcourt
yang dipilih.
h. Layar Input Jumlah pesanan
Tampilan untuk memasukkan jumlah pesanan sesuai dengan
menu yang dipilih
i. Layar daftar pesanan
Merupakan tampilan dari pesanan yang telah dilakukan user.
j. Layar input nomer meja
Merupakan tampilan saat melakukan input teradap nomer meja.
k. Layar pengiriman data pesanan
Merupakan tampilah saat melakukan proses pengiriman pesanan
ke server.
l. Layar History pemesanan
Tampilan untuk melihat pesanan yang lama.
Username :
Password :
Option Back
Pencarian Server….
Siap melakukan koneksi….
FoodCourt Client
Back Select
72
Gambar 3.25 Design form pada aplikasi pelanggan (J2ME)
Berdasarkan rancangan dan desain pada gambar 3.21 dan
gambar 3.22 maka hasil yang didapat adalah seperti Gambar 3.23
Source code dibawah ini merupakan penggalan source yang
digunakan untuk menampilkan proses pencarian perangkat.
public void commandAction(Command c, Displayable d)
{
if (c == CONNECT_CMD && d == formMenuDisplay) {
Form f = new Form("Pencarian...");
f.addCommand(SEARCH_CANCEL_CMD);
f.setCommandListener(this);
f.append(new Gauge("Pencarian perangkat...",
false, Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING));
Display.getDisplay(parent).setCurrent(f);
bc_client.searchRequest();
return;
}
if (c == BACK_CMD) {
destroy();
parent.show(null);
return;
}
if (c == BACK_LOGIN) {
Confirmation Pesanan anda dg order ID 445, meja 5, sebesar Rp 110.000 akan segera Kami antarkan. Terima Kasih Option Select
Daftar Pesanan: Dorayaki 4 Mie 2 No Meja:
Option Select
Pilih Menu Makanan View Pesanan History Pesanan Option Select
Dorayaki 20000 Jumlah :
Back Select
Pilih Menu : Dorayak 20000 Katsudon25000 Mie 5000
Back Select
Pilih Restoran: 1. Hoka hoka Bento 2. Jungle Juice 3. Bakso Sedap
Back Select
Pilih Menu Makanan View Pesanan History Pesanan Option Select
73
bc_client.Send_Req(null, 0);
parent.show(null);
return;
}
}
Gambar 3.26 Tampilan Aplikasi client di emulator
saat Pencarian perangkat
3.3.3.1.2 Koneksi Bluetooth MIDlet client
Pada client, proses koneksi bluetooth diawali dengan
melakukan inisialisasi pada local sevice, setelah itu melakukan
device discovery untuk mencari bluetooth yang ada disekitarnya
(Bluetooth Foodcourt server) kemudian melakukan service discovery
untuk mencari informasi bagaimana untuk melakukan koneksi
terhadap service pada setiap bluetooth yang ada.
74
Pilih menu melakukan koneksi
pembatalanproses?
pembatalanproses.?
tampilan login
tampilan error
tampilan awal
Proses device discovery
proses service discovery
bluetooth deviceditemukan?
bluetooth serviceditemukan?
tidak
ya
tidak
ya
tidak
ya
yatidak
System ClientUser
Gambar 3.27 Activity diagram koneksi bluetooth client
Pada proses inisialisasi pada local device untuk client sama
dengan proses inisialisasi pada server, tetapi pada client terdapat
tambahan yaitu terdapat objek DiscoveryAgent yang didapatkan dari
objek LocalDevice. Objek DiscoveryAgent digunakan untuk proses
device discovery dan service discovery. Source code untuk proses
inisialisasi pada client adalah sebagai berikut :
public void run() {
boolean LbBlue_Ok = false;
try {
75
LocalDevice localDevice =
LocalDevice.getLocalDevice();
discoveryAgent = localDevice.getDiscoveryAgent();
LbBlue_Ok = true;
} catch (Exception e) {
System.err.println("Tidak dapat di
inisialisasi...");
}
parent.completeInizialization(LbBlue_Ok);
if (!LbBlue_Ok) {
return;
}
…
}
Dalam sistem ini aplikasi yang dibuat, hanya ditujukan untuk
menangani sistem pemesanan pada foodcourt dengan menggunakan
bluetooth. Sehingga pada saat client melakukan proses inquiry,
deviceDiscovered() yang dibutuhkan hanyalah Foodcourt
Bluetooth server. Hal ini dapat dilakukan dengan cara men-setting
langsung address dari Foodcourt Bluetooth server (BT_ADDRESS).
public void deviceDiscovered(RemoteDevice
remoteDevice, DeviceClass deviceClass) {
int majorDeviceClass =
deviceClass.getMajorDeviceClass();
// Beberapa Bluetooth device telah ditemukan
dalam pencarian
if (devices.indexOf(remoteDevice) == -1) {
if
(remoteDevice.getBluetoothAddress().equals(BT_ADDRE
SS) &&
majorDeviceClass == 0x0100) {
devices.addElement(remoteDevice);
}
}
}
76
3.3.3.1.3 Proses Login Pada MIDlet Client
Setelah client berhasil mencari Foodcourt Bluetooth Server
dan melakukan koneksi terhadap server, proses berikutnya adalah
proses login pada sebuah form Login. Proses ini adalah mengirimkan
ID proses login, username dan password kepada server. Script dari
form tersebut adalah sebagai berikut :
//Tampilan Login //
private final Form formLoginDisplay = new
Form("Login");
private final Command Login_Send_CMD = new
Command("Kirim", Command.SCREEN, 2);
private final Command Login_Back_CMD = new
Command("Kembali", Command.BACK, 1);
private final TextField username = new
TextField("Username :", "", 9, TextField.ANY);
private final TextField password = new
TextField("Password :", "", 9, TextField.PASSWORD);
formLoginDisplay.setTitle("Login");
formLoginDisplay.append(username);
formLoginDisplay.append(password);
formLoginDisplay.addCommand(Login_Back_CMD);
formLoginDisplay.addCommand(Login_Send_CMD);
formLoginDisplay.setCommandListener(this);
formSendData.setCommandListener(this);
Source code diatas akan menampilkan form untuk melakukan proses
login dan juga command listener untuk proses mengirimkan ID
LOGIN_STATE, username dan password. Berikut adalah tampilan
proses login di client
Gambar 3.28 Tampilan login
77
3.3.3.1.4 Proses Menu Layanan, Daftar Foodcourt dan View
Pesanan
Jika proses login berhasil maka user akan mendapatkan
tampilan berupa menu layanan. Menu layanan digunakan untuk
melakukan pemilihan restoran dan menu atau melihat pesanan yang
sudah di lakukan.
tampilan menu layanan
lihatrestoran?
lihat pesanan?
lihathistory?
komplain?
kirim data
tampilan hasil
DAFTAR_FOODCOURT
HISTORY_PESANAN
INPUT_KOMPLAIN
Data Pesanan
pengolahan data dari client
kirim hasil pengolahan data
tidakya
ya
ya
tidak
tidak
tidak
ya
Serv erClient
Gambar 3.29 Activity diagram menu layanan
Saat user memilih menu ”Pilih Restoran dan Menu” maka
client akan mengirimkan string DAFTAR_FOODCOURT ke server
untuk mendapatkan informasi mengenai daftra foodcourt yang aktif.
Kemudian client akan menunggu proses pengiriman data. Data daftar
78
foodcourt yang diterima oleh client akan ditampilkan. Source code
berikut ini untuk menampilkan daftar menu layanan yang memiliki
dua buah sub menu. Serta source untuk menampilkan daftar
foodcourt
void TampilkanMenu(String[] xid) {
menuDiplayFoodcourt = new List("MENU LAYANAN ("+
momo +")", List.IMPLICIT);
menuDiplayFoodcourt.append("1.Pilih Restoran dan
Menu", null);
menuDiplayFoodcourt.append("2.Lihat Pesanan",
null);
menuDiplayFoodcourt.append("3.History Pesanan",
null);
menuDiplayFoodcourt.append("4.Komplain", null);
menuDiplayFoodcourt.addCommand(GET_FOODCOURT_CMD);
menuDiplayFoodcourt.addCommand(BACK_LOGIN1);
menuDiplayFoodcourt.setCommandListener(this);
Display.getDisplay(parent).setCurrent(menuDiplayFoo
dcourt);
}
void TampilanRestoran(String[]z){
String[] tampilan;
tempRestoran = z;
menuTampilkanNama = new List("DAFTAR RESTORAN",
List.IMPLICIT);
for (int i = 0;i< z.length; i++){
lokir(z[i]);
tampilan = mindah;
menuTampilkanNama.append(i+1 + " " +
tampilan[1] , null);
}
menuTampilkanNama.addCommand(GET_MAKANAN_CMD);
menuTampilkanNama.addCommand(BACK_MENU_CMD);
menuTampilkanNama.setCommandListener(this);
Display.getDisplay(parent).setCurrent(menuTampilkan
Nama);
}
79
Gambar 3.30 Tampilan menu layanan dan
tampilan daftar restoran
3.3.3.1.5 Proses Daftar Menu
Pada proses ini menampilkan daftar menu makanan atau
minuman sesuai dengan nama foodcourt yang dipilih. Data menu
makanan didapatkan dari reply message server. Dari layar tampilan
foodcourt dapat memilih menu makanan dan melakukan pemesanan.
Pilih Nama Restoran
tampilan daftar restoran
kirim data : DAFTAR_MENU; idFoodcourt
tampilan menu makanan / minuman
Cek Data dari client
proses daftar menu
kirim data menu
Serv erClient
Gambar 3.31 Activity diagram proses menu makanan
80
Command yang dipakai pada layar nama foodcourt yaitu :
“Pilih” dan “Back”. Pada command “Pilih” akan melakukan proses
pengiriman request message pada server untuk mendapatkan reply
message dari server yang berupa data daftar menu makanan atau
minuman. Untuk command “Back” akan melakukan proses untuk
kembali ke layar dafar makanan. Yang di tampilkan dari tampilan
menu makanan adalah nama makanan dan juga harganya per porsi.
Source code tampilan daftar makanan :
void TampilanMakanan(String[] food){
String[] tampilan; tempFood = food;
menuTampilMakanan = new List("Daftar
Makanan", List.IMPLICIT);
for (int i = 0; i< food.length; i++){
lokir(food[i]);
tampilan = mindah;
menuTampilMakanan.append(i+1 + " " +
tampilan[1] + " - " + tampilan[2], null);}
menuTampilMakanan.addCommand(DO_PESAN_CMD);
menuTampilMakanan.addCommand(BACK_FOODCOURT_CM
D);
menuTampilMakanan.setCommandListener(this);
Display.getDisplay(parent).setCurrent(menuTamp
ilMakanan); }
Gambar 3.32 Tampilan daftar menu makanan
81
3.3.3.1.6 Proses Input Pesanan Isi dari layar input pesanan terdiri atas informasi makanan,
dan textfield untuk memasukkan benyaknya pesanan yang dipilih
oleh pelanggan. Berikut ini source code untuk menampilkan input
pesanan.
void TampilanPesan(int indeks){
String isine;
String[] pecah;
isine = tempFood[indeks];
lokir(isine);
pecah = mindah;
buffFood= mindah;
StringItem as = new StringItem(null,
pecah[1] + " - " + pecah[2]);
inputPesanan = new Form("Masukkan Pesanan");
inputPesanan.append(as);
txtJmlh = new TextField("Jumlah : ", "", 3,
TextField.NUMERIC);
inputPesanan.append(txtJmlh);
inputPesanan.addCommand(GET_PESAN_CMD);
inputPesanan.addCommand(BACK_MAKANAN_CMD);
inputPesanan.setCommandListener(this);
Display.getDisplay(parent).setCurrent(inputPesanan)
;
}
Gambar 3.33 Tampilan input jumlah
82
3.3.3.1.7 Proses Komplain
Proses ini digunakan untuk melakukan komplain kepada
foodcourt, data komplain dikirimkan dari client ke server. Client
akan mengirimkan data kondisi INPUT_KOMPLAIN + id pelanggan
+ isi komplain. Kemudia reply message dari server berisi Id
Komplain yang telah di masukkan ke dalam database.
Pilih Komplain
tampilan menu layanan
kirim data : INPUT_KOMPLAIN; idPelanggan;isiKomplain
tampilan komplain telah diterima
Cek Data dari client
proses input client
kirim data id komplain
Serv erClient
Gambar 3.34 Activity diagram proses komplain
Source code yang digunakan untuk membuat tampilan input
komplain adalah sebagai berikut. Dan tampilannya dapat dilihat pada
gambar 3.35
inputKomplain = new Form("Masukkan Komplain");
txtKomplain = new
TextField("Isi Komplain : ", "", 150,
TextField.ANY);
inputKomplain.append(txtKomplain);
inputKomplain.addCommand(SEND_KOMPLAIN_CMD);
inputKomplain.addCommand(BACK_MENU_CMD);
83
inputKomplain.setCommandListener(this)
Display.getDisplay(parent).setCurrent(inputKomplain
);
Gambar 3.35 Tampilan input komplain
3.3.3.2 APLIKASI CLIENT PADA RESTORAN
Gambar 3.36 Sistem akses menu makanan oleh restoran
Dalam sistem aplikasi menu pemesanan makanan, pada
masing-masing restoran terdapat sebuah komputer yang melakukan
akses kepada server. Proses yang dilakukan pertama kali adalah
melakukan login, setelah itu restoran akan melakukan request data
pesanan kepada server.
84
3.3.3.2.1 User Interface web
Web untuk aplikasi foodcourt client restoran di buat dengan
menggunakan bahasa pemrograman PHP. Menu-menu yang ada pada
web terdiri dari beberapa macam yang berfungsi untuk melakukan
proses transaksi dan administrasi. Proses pada aplikasi web terbagi
menjadi dua bagian yaitu untuk menangani pembayaran (kasir) dan
menangani pesanan (foodcourt). Untuk lebih jelasnya dapat dilihat
pada gambar 3.37 yang merupakan bagan dari menu-menu yang
tersedia pada web.
Gambar 3.37 Menu atau link yang tersedia pada
web foodcourt client restoran
3.3.3.2.2 Login
Login digunakan untuk keamanan dan juga membedakan
hak akses dari masing-masing user. Sehingga tampilan yang di
tampilkan pada proses setelah login dapat diatur sesuai dengan hak
akses-nya. Login berfungsi untuk membagi username dan password
85
sesuai dengan Nama Foodcourt atau sebagai Kasir. Source code
untuk proses login adalah sebagai berikut
<?
include "conn.php";
$Pass=$_POST[passw];
$sql=mysql_query("select * from tb_pegawai where
ID_Foodcourt='$_POST[resid]' AND
username='$_POST[uname]' and password='$Pass' AND
status_aktif='1'");
$r=mysql_fetch_array($sql);
if($r[username]==$_POST[uname] &&
$r[password]==$Pass &&
$r[ID_Foodcourt]==$_POST[resid]){
session_start();
session_register('usernames');
session_register('namas');
session_register('passwords');
session_register('idfoodcourt');
$_SESSION[usernames]=$r[username];
$_SESSION[namas]=$r[Nama];
$_SESSION[passwords]=$r[password];
$_SESSION[idfoodcourt]=$r[ID_Foodcourt];
if ($r[ID_Foodcourt] == 0){
header("location:sys_admin/syskasir.php");
} else {
header("location:showpesanan.php"); }
} else {
?>
<center>Login Gagal<br><meta http-equiv="refresh"
content="2;url="index.php""></center>
<? } ?>
Pada gambar 3.38 merupakan tampilan dari form login untuk
aplikasi web. Dari tampilan tersebut, terlihat bahwa terdapat combo
box untuk melakukan pemilihan nama restoran dan terdapat text box
untuk memasukkan username dan password.
86
Gambar 3.38 Login web foodcourt client restoran
3.3.3.2.3 Kasir
Kasir menangani proses pembayaran. Setelah pelanggan
melakukan pemesanan dan mendapatkan ID Pesan, maka selanjutnya
adalah melakukan pembayaran ke kasir. Di kasir akan tampak daftar
para pelanggan yang telah melakukan pesanan dan terlihat mana saja
yang sudah membayar dan belum membayar. Jika pelanggan belum
membayar maka yang tampil pada kolom status adalah warna merah
dengan huruf ”B” dan jika pelanggan sudah membayar maka yang
tampil pada kolom status adalah huruf ”L”. Seperti pada gambar
3.39, maka pada kasir juga memiliki menu untuk melihat,
menambah, dan melakukan edit terhadap data pelanggan, restoran
dan user.
87
Start
Buka aplikasi restoran
Login
Login Kasir OK?
Start Monitoring pesanan
Ada Pesanan Baru?
Pembayaran Lunas?
Set Lunas
End
Y
Y
Y
N
N
N
Tampil Id Pesan, Nomer
Meja, Total Bayar
Pembayaran
Cetak Bon
Gambar 3.39 Flowchart proses pembayaran di kasir
Sebagian source code untuk membuat proses kasir adalah
sebagai berikut.
<?
…
$sql="select a.*,b.Nama_Pelanggan from tb_pesan
a,tb_pelanggan b where
a.ID_Pelanggan=b.ID_Pelanggan order by a.ID_Pesan
DESC";
$aio=mysql_query($sql);
…
88
echo "<br><table border=1 align='center'
bordercolor='#FFFFFF' style='border-collapse:
collapse'>";
echo "<tr bgcolor='CEBA94'>
<td>No</td><td>Tanggal</td><td>ID
Pesan</td><td>Meja</td>
<td>Pelanggan</td><td>Total Bayar</td><td>MAC
Address</td>
<td>Status</td><td>Detil</td></tr>";
$i=1;
while ($r=mysql_fetch_array($aio))
{
if ($i%2 == 1){ $warna='#E6E6E6'; }
else { $warna='#CFD9FF'; }
echo "<td bgcolor='$warna'>".$i."</td>";
echo "<td
bgcolor='$warna'>".$r[Tanggal]."</td>";
echo "<td
bgcolor='$warna'>".$r[ID_Pesan]."</td>";
echo "<td bgcolor='$warna'
align='center'>".$r[No_Meja]."</td>";
echo "<td
bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>";
echo "<td
bgcolor='$warna'>".$r[Total_Bayar]."</td>";
echo "<td
bgcolor='$warna'>".$r[Pengenal]."</td>";
if ($r[Status] == 1){
$tulisanstatus = "L";
echo "<td bgcolor='$warna'><img
src='../images/dolarkuning.gif'
title='Lunas'>".$tulisanstatus."</td>";
} else {
$tulisanstatus = "B";
echo "<td bgcolor='#FAA18C'><img
src='../images/dolarmerah.gif' title='Belum
Bayar'><a
href='syskasir.php?cmd=stts&&z=$r[Status]&&idne=$r[
ID_Pesan]'>".$tulisanstatus."</a></td>";
}
echo "<td bgcolor='$warna'> <a
href='syscetak.php?idne=$r[ID_Pesan]'
89
target='_blank'> <img
src='../images/printButton.png' border='0'
title='Print Version'></a> <a
href='sysdetil.php?idne=$r[ID_Pesan]'>Detil</a></td
>";
echo '</tr>';
$i++; }
?>
…
Hasil implementasi dari proses-proses pembayaran yang terjadi di
kasir tampak seperti pada tampilan gambar 3.40 berikut ini.
Gambar 3.40 Tampilan kasir
3.3.2.4 Foodcourt
Aplikasi restoran akan menampilkan daftar pesanan
pelanggan. Jika pelanggan melakukan pemesanan ke restoran 1,
maka data daftar pesanan itu akan masuk ke dalam waiting list
restoran 1, kemudian jika pesanan pelanggan sudah dilayani maka
pesanan itu akan di set statusnya menjadi sudah dilayani dan akan
hilang dari daftar waiting list restoran 1. Proses yang terjadi pada
90
aplikasi restoran dapat digambarkan dalam flowchart gambar 3.41
berikut ini:
Start
Buka aplikasi restoran
Login
Login OK?
Start Monitoring pesanan
Ada Pesanan?
Tampilkan daftar pesanan
Pesanan selesai?
Set sudah dilayani
End
Y
Y
Y
N
N
N
Gambar 3.41 Flowchart aplikasi foodcourt client restoran
Berikut ini merupakan source code yang menangani proses pada
foodcourt:
…
<?
$sss="SELECT tb_foodcourt.Nama_Foodcourt,
tb_menu.Nama_Menu,
tb_menu.Harga,tb_detil_pesan.ID_Detil_Pesanan,
tb_detil_pesan.Jumlah, tb_detil_pesan.Total_Harga,
tb_detil_pesan.Status AS sttsdetil, tb_pesan.Status
as sttspesan, tb_pesan.No_Meja,
tb_detil_pesan.Tanggal_Jam_Pesan,
91
tb_detil_pesan.Tanggal_Jam_Selesai,
tb_pelanggan.Nama_Pelanggan FROM tb_foodcourt
Inner Join tb_menu ON tb_foodcourt.ID_Foodcourt =
tb_menu.ID_Foodcourt
Inner Join tb_detil_pesan ON tb_menu.ID_Menu =
tb_detil_pesan.ID_Menu
Inner Join tb_pesan ON tb_pesan.ID_Pesan =
tb_detil_pesan.ID_Pesan
Inner Join tb_pelanggan ON
tb_pelanggan.ID_Pelanggan = tb_pesan.ID_Pelanggan
WHERE tb_foodcourt.ID_Foodcourt =
'$_SESSION[idfoodcourt]' AND
tb_detil_pesan.Tanggal_Jam_Pesan >= curdate() ORDER
BY tb_detil_pesan.Tanggal_Jam_Pesan DESC";
$aio=mysql_query($sss);
echo "<center><div color='white'>Daftar
Pesanan</div></center>";
echo "<table border=1 align='center'
bordercolor='#FFFFFF' style='border-collapse:
collapse'>";
echo "<tr bgcolor='CEDB9C' align='center'>
<td>No</td><td>Pelanggan</td><td>No Meja</td>
<td>Tanggal Jam Pesan</td><td>Tanggal Jam
Selesai</td>
<td>Nama Menu</td><td>Harga</td><td>Jumlah</td>
<td>Total Harga</td><td>Status</td> </tr>";
$i=1;
while ($r=mysql_fetch_array($aio))
{
if
($nomermeja==$r[No_Meja]){$warna='#E6E6E6'; }
else{ $warna='#CFD9FF'; }
if ($nomermeja==$r[No_Meja]){
echo "<tr>";
echo "<td bgcolor='$warna'> </td>";
echo "<td bgcolor='$warna'> </td>";
echo "<td bgcolor='$warna'> </td>";
echo "<td bgcolor='$warna'> </td>";
echo "<td bgcolor='$warna'> </td>";
} else {
echo "<tr>";
92
$nomermeja=$r[No_Meja];
echo "<td bgcolor='$warna'>".$i."</td>";
echo "<td
bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>";
echo "<td bgcolor='$warna'>".$r[No_Meja]."</td>";
echo "<td
bgcolor='$warna'>".$r[Tanggal_Jam_Pesan]."</td>";
echo "<td
bgcolor='$warna'>".$r[Tanggal_Jam_Selesai]."</td>";
$i++;
$nomermeja=$r[No_Meja];
}
echo "<td bgcolor='$warna'>".$r[Nama_Menu]."</td>";
echo "<td bgcolor='$warna'>".$r[Harga]."</td>";
echo "<td bgcolor='$warna'>".$r[Jumlah]."</td>";
echo "<td
bgcolor='$warna'>".$r[Total_Harga]."</td>";
if ($r[sttspesan] == 0){
$bss=" <img src='images/dolarmerah.gif'
title='Belum Bayar'>";}
else{
$bss=" <img src='images/dolarkuning.gif'
title='Lunas'>";}
if ($r[sttsdetil] == 1){
$tulisanstatus = "OK";
echo "<td
bgcolor='$warna'>$bss".$tulisanstatus."</td>";
} else {
$tulisanstatus = "NOT OK";
echo "<td bgcolor='#CC3333'>$bss<a
href='gantistatus.php?idne=$r[ID_Detil_Pesanan]'>".
$tulisanstatus."</a></td>";s
}
echo '</tr>'; }}
?>
…
93
Gambar 3.42 Tampilan daftar pesanan foodcourt
3.3.2.5 Komplain
Aplikasi web juga menampilkan daftar komplain yang
dikirimkan oleh pelanggan.
<?
$sql="select * from tb_komplain a,tb_pelanggan b
WHERE a.ID_Pelanggan=b.ID_Pelanggan limit 0,10";
$aio=mysql_query($sql);
echo "<table border=1 align='center'
bordercolor='#FFFFFF' style='border-collapse:
collapse'>";
echo "<tr><td colspan='5'><div id='menu3'>";
echo "<tr bgcolor='CEBA94'>
<td>No</td>
<td>Tgl Komplain</td>
<td>Pelanggan</td>
<td>Isi Komplain</td>
<td>Status</td>
</tr>";
$i=1;
while ($r=mysql_fetch_array($aio))
{
94
if ($i%2 == 1){
$warna='#E6E6E6'; }
else{
$warna='#CFD9FF';
}
echo "<td bgcolor='$warna'>".$i."</td>";
//echo "<td
bgcolor='$warna'>".$r[Tanggal_Komplain]."</td>";
$tgl_b=substr("$r[Tanggal_Komplain]",8,2);
$bln_b=substr("$r[Tanggal_Komplain]",5,2);
$thn_b=substr("$r[Tanggal_Komplain]",0,4);
$jame=substr("$r[Tanggal_Komplain]",10,9);
echo "<td bgcolor='$warna'>$tgl_b-$bln_b-
$thn_b $jame</td>";
echo "<td
bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>";
echo "<td
bgcolor='$warna'>".$r[Isi_Komplain]."</td>";
}
...
Gambar 3.43 Tampilan daftar komplain
95
BAB 4
UJICOBA DAN ANALISA
Aplikasi untuk sistem pemesanan makanan pada foodcourt
dengan memanfaatkan bluetooth pada telepon selular terdiri atas
aplikasi pada server (komputer), aplikasi MIDlet pada client
pelanggan (telepon selular) dan aplikasi Web PHP pada client
restoran. Oleh karena itu pengujian akan dilakukan pada ketiga
aplikasi pada saat pengolahan data, modifikasi data, dan proses
komunikasi client-server via bluetooth.
4.1 Aplikasi Server (desktop)
4.1.1 Tampilan Server
Gambar 4.1 Tampilan Server
Pada gambar 4.1. dapat dilihat bahwa layanan yang tersedia
di server terdiri dari File, Koneksi, Foodcourt dan About dimana
pada bagian File berisi sub menu exit untuk keluar aplikasi, Koneksi
berisikan jenis koneksi yang akan dipilih, dalam kasus ini Bluetooth,
Foodcourt berisikan sub menu Add Foodcourt untuk menambahkan
restoran baru. Sedangkan pada bagian Help, berisikan sub menu
About dan sub menu info hanya berisikan mengenai data dari
pembuat program ini.
96
4.1.2 Tampilan Koneksi
Pada gambar 4.2. merupakan tampilan yang akan muncul
ketika dipilih Bluetooth pada Connection. Dan ketika menekan
mulai, maka server akan secara otomatis menunggu apakah ada
client yang mencoba untuk koneksi dengan server dan menggunakan
layanan yang ditawarkan.
Gambar 4.2 Tampilan koneksi Bluetooth
4.1.3 Tampilan Add Foodcourt
Aplikasi server memiliki fasilitas untuk mendaftarkan nama
foodcourt yang baru. Tampilan form pada gambar 4.3 ini digunakan
untuk melakukan input data terhadap foodcourt yang baru.
97
Gambar 4.3 Tampilan sub menu add foodcourt
4.2 Aplikasi Client Pelanggan (mobile)
Tampilan yang ada tentunya dipengaruhi oleh jenis dari mobile
device yang digunakan. Mobile device yang dapat menjalankan
layanan ini adalah yang merupakan MIDP 2.0. Namun sebelumnya
layanan ini harus terlebih dahulu di install di mobile device yang ada.
Gambar 4.4 Tampilan shortcut client dan tampilan awal
Gambar 4.4 merupakan tampilan saat installasi dan tampilan
awal dari layanan Foodcout Client pada mobile device. Pada gambar
98
4.4 belum terjadi proses koneksi dan pengiriman data baik dari
server maupun dari client.
4.3 Aplikasi Client Restoran dan Kasir (web)
4.3.1 Tampilan Login
Tampilan yang muncul saat pertama kali melakukan akses ke
aplikasi web adalah tampilan login. Sebelum melakukan proses-
proses yang lain, yang harus dilakukan terlebih dulu adalah proses
login.
Gambar 4.5 Form login aplikasi web foodcourt client
4.3.2 Tampilan Web Foodcourt Restoran
Jika user melakukan login ke sistem foodcourt restoran,
maka yang akan tampil adalah tampilan daftar pesanan yang harus
dilayani oleh restoran, dan menu-menu yang tersedia adalah : Daftar
Pesanan, Daftar Menu, History Daftar Pesanan. Daftar Pesanan berisi
pesanan yang terjadi pada hari itu.
99
Gambar 4.6 Tampilan daftar pesanan
Pada Daftar Menu berisi nama-nama menu yang disediakan
oleh restoran, disini user bisa melakukan perubahan harga,
menambah menu dan melakukan aktifasi maupun deaktifasi dari
menu makanan atau minuman yang disediakan oleh restoran.
Gambar 4.7 Tampilan daftar menu
History pesanan berisi daftar pesanan yang telah lalu, jika
pada Daftar Pesanan hanya berisi pesanan pada hari ini. Maka pada
History Daftar Pesanan berisi seluruh data pesanan yang harus
dilayani oleh restoran.
100
Gambar 4.8 Tampilan history daftar pesanan
4.3.3 Tampilan Web Foodcourt Kasir
Jika user melakukan login ke sistem foodcourt kasir, maka
yang akan tampil adalah tampilan daftar pembayaran yang harus
dilayani oleh kasir, dan menu-menu yang tersedia adalah : Kasir,
Daftar Pelanggan, Daftar Restoran, Daftar User.
Menu kasir berisi pesanan yang harus melakukan pembayaran yang
terjadi pada hari itu. Gambar dolar ($) berwarna merah dengan huruf
“B” pada kolom status menunjukkan bahwa pelanggan belum
melakukan pembayaran. Sedangkan gambar dolar ($) dengan warna
kuning dengan huruf “L” menunjukkan bahwa pelanggan telah
melakukan pembayaran dan lunas.
Gambar 4.9 Tampilan kasir
101
Pada Daftar Pelanggan berisi nama-nama pelanggan yang
terdaftar dalam sistem pemesanan bluetooth. Di dalam menu daftar
pelanggan, user bisa melakukan penambahan pelanggan baru. Proses
aktifasi dan juga deaktifasi pelanggan juga bisa dilakukan di sini.
Sehingga pelanggan yang statusnya non aktif tidak bisa melakukan
pemesanan.
Gambar 4.10 Tampilan daftar pelanggan
Daftar Restoran berisi daftar restoran yang ada di dalam
foodcourt. Di sini user bisa melakukan aktifasi dan deaktifasi
restoran. User juga dapat melakukan penambahan restoran baru.
Gambar 4.11 Tampilan daftar restoran
Daftar user berisi daftar nama-nama user atau pegawai yang
berhak melakukan akses terhadap web foodcourt.
102
Gambar 4.12 Tampilan daftar user
4.4 Proses Komunikasi Client Server
Pada pengujian komunikasi client-server terdiri atas proses
Bluetooth Discovery dan proses-proses yang berkaitan dengan
proses transaksi untuk pemesanan makanan. Ketika ingin
memanfaatkan layanan yang ada, maka perlu melakukan proses
koneksi dengan server. Dimana client akan berusaha mencari apakah
ada server yang ada di sekitarnya. Proses ini terus berjalan sampai
client terhubung dengan server Berikut ini adalah diagram blok
proses komunikasi client server.
Gambar 4.13 Diagram komunikasi client server
103
4.4.1 Proses Discovery Bluetooth
Dalam membangun komunikasi client-server, client akan
melakukan device discovery dan service discovery, sedangkan pada
server akan menyediakan service untuk koneksi dengan client.
Server akan menunggu koneksi dari client, apabila client telah
menemukan bluetooth device dan service maka koneksi client-server
akan terbangun dan pada MIDlet client akan menampilkan form
untuk login. Proses discovery client pada server ditunjukkan pada
gambar 4.14
Gambar 4.14 Proses discovery pada server dan client
Apabila client tidak menemukan server bluetooth device,
maka layar search (proses pencarian) akan menampilkan pesan ”No
Bluetooth Service Found” yang menunjukkan bahwa server
bluetooth device tidak ditemukan. Pesan tersebut juga tampil jika
client sudah menemukan server tetapi service yang di maksudkan
tidak tersedia.
104
Gambar 4.15 Proses server atau service tidak ditemukan
4.4.2 Proses Login
Pada proses login pelanggan akan mengisi form login untuk
selanjutnya MIDlet client akan mengirimkan ke server. Jika data
pada form login tidak di isi secara lengkap atau ada salah satu data
yang kosong maka akan muncul alert bahwa Login tidak lengkap
sehingga data tidak bisa dikirim ke server.
Gambar 4.16 Login tidak lengkap
Apabila ada salah satu data login (username, dan password)
yang dikirimkan oleh client salah pada saat validasi login, maka
server akan mengirimkan pesan bahwa login invalid. Sehingga
aplikasi MIDlet client akan menampilkan alert bahwa username atau
password salah.
105
Gambar 4.17 Login yang dilakukan client invalid
Apabilia data login yang dikirimkan oleh client valid, maka
server akan mengirimkan data bahwa login valid dan kemudian
client akan menampilkan pada layar sebuah MENU LAYANAN
yang dapat dilihat pada gambar 4.18.
Gambar 4.18 Proses login yang valid pada client dan server
106
4.4.3 Proses Daftar Restoran
Menu layanan yang memiliki beberapa macam menu. Saat
pelanggan memilih menu ”Pilih Restoran dan Menu” maka client
akan mengirimkan data permintaan DAFTAR_FOODCOURT ke
server. Kemudian server akan mengirimkan data pada client yang
berupa data nama-nama restoran yang aktif dan MIDlet client akan
menampilkan daftar restoran tersebut pada layar daftar restoran. Dari
sini pelanggan akan memilih nama restoran untuk melihat menu
makanan atau minuman yang tersedia.
Gambar 4.19 Proses Daftar Restoran
4.4.4 Proses Daftar Menu
Setelah daftar restoran ditampilkan, selanjutnya pelanggan
memilih salah satu nama restoran yang tersedia untuk melihat menu
makanan atau minuman yang bisa di pesan. Proses yang terjadi
adalah client mengirimkan permintaan DAFTAR_MENU dari
restoran yang dipilih, kemudian server akan membalas dengan
mengirimkan data daftar makanan atau minuman sesuai dengan
permintaan client.
107
Gambar 4.20 Proses daftar makanan atau minuman
4.4.5 Proses Masukkan Jumlah Pesanan
Setelah memilih menu, selanjutnya adalah memasukkan
jumlah pesanan. Jumlah pesanan harus dimasukkan dengan benar .
Jika data jumlah pesanan yang di inputkan salah maka akan tampil
alert seperti pada gambar 4.21
Gambar 4.21 Proses memasukkan jumlah pesanan salah
108
Jika jumlah pesanan dimasukkan dengan benar, maka akan muncul
info yang memberitahukan bahwa pesanan tersebut sudah
dimasukkan dalam daftar pesanan, seperti terlihat pada gambar 4.22
berikut ini.
Gambar 4.22 Proses pesanan telah ditambahkan
4.4.6 Proses Menu Lihat Pesanan
Pada menu lihat pesanan akan ditampilkan nama-nama
makanan yang telah di pesan dan di kelompokkan berdasarkan nama
foodcourt. Selain itu juga terdapat jumlah total yang harus
dibayarkan.
Gambar 4.23 Proses lihat pesanan
109
Jika pemilihan menu makanan belum dilakukan maka yang muncul
adalah tampilan kosong berupa tulisan bahwa pesanan belum
dilakukan.
Gambar 4.24 Proses lihat pesanan kosong
4.4.7 Proses Pengiriman Transaksi Pesanan ke Server
Jika pesanan yang dilakukan pelanggan sudah selesai,
kemudian pelanggan melihat isi pesanan yang telah dilakukannya di
menu Lihat Pesanan. Maka yang dilakukan selanjutnya adalah
mengirimkan pesanan ke server. Sebelum pengiriman transaksi
pesanan dilakukan, pelanggan akan dimintai nomer meja terlebih
dulu seperti gambar 4.25 berikut ini.
Gambar 4.25 Proses input nomer meja
110
Setelah nomer meja dimasukkan maka pesanan akan di
kirimkan ke server. Data akan dimasukkan ke dalam database,
kemudian diakses oleh kasir dan masing-masing restoran.
Gambar 4.26 Proses pengiriman pesanan
Setelah proses input pesanan selesai, maka server akan
mengirimkan data berupa ID Pesanan, yang kemudian client akan
manampilkan konfirmasi yang menunjukkan bahwa pesanan telah
diterima dan segera di layani. Pesanan yang telah dikirimkan ke
server, akan di tampilkan di kasir. Yang ditampilkan adalah tanggal,
id Pesan, nomer meja, nama pelanggan, total bayar, MAC Address
dan status pembayaran. Jika pembayaran belum dilakukan, maka
yang keluar adalaha gambar dolar($) berwarna merah dengan huruf
”B”, seperti pada gambar 4.27.
111
Gambar 4.27 Tampilan kasir, pelanggan belum membayar
Pelanggan yang telah memesan akan, melakukan
pembayaran ke kasir, kemudian jika pelanggan telah membayar
maka pada kolom status, yang muncul adalah gambar dolar($)
berwarna kuning dengan huruf ”L”, seperti pada gambar 4.28.
Gambar 4.28 Tampilan kasir, pelanggan sudah membayar
112
Selain tampil pada kasir, pesanan yang baru saja dilakukan oleh
pelanggan juga tampil di restoran. Pesanan yang belum dilayani oleh
restoran statusnya akan berwarna merah. Namun Setelah dilayani
maka statusnya akan berubah menjadi OK.
Gambar 4.29 Tampilan Foodcourt belum bayar belum dilayani
Gambar 4.30 Tampilan Foodcourt sudah bayar belum dilayani
113
Gambar 4.31 Tampilan Foodcourt sudah bayar sudah dilayani
4.4.8 Proses History Pesanan
History pesanan merupakan menu yang digunakan untuk
melihat pesanan yang pernah dilakukan oleh pelanggan. Namun
history yang dapat ditampilkan hanya lima buah history terbaru.
Gambar 4.32 Proses history pesanan
114
4.4.9 Proses Detil History
Detil history digunakan untuk melihat isi pesanan yang
pernah dilakukan sesuai dengan ID pesanannya. Server akan
melakukan query sesuai dengan ID pesanan yang di kirimkan oleh
client. Yang ditampilkan pada detil history adalah ID pesanan, total
pembelian, jumlah pembelian, dan nama-nama menu yang dipesan.
Tampilan detil history dikelompokkan berdasarkan nama restoran.
Gambar 4.33 Tampilan Detil History server-client
4.4.10 Proses Komplain
Proses komplain digunakan oleh client untuk melakukan
komplain terhadap foodcourt. Komplain yang diterima server akan
ditampilkan di halaman web. Halaman web akan menampilkan
banyaknya komplain dengan warna merah. Dan jika link komplain di
klik maka akan muncul daftar komplain.
115
Gambar 4.34 Tampilan input komplain
Komplain yang telah ditangani diberi status ”OK” sedangkan
komplain yang belum ditangani akan memiliki status ”NOK”.
Komplain dapat dilihat oleh kasir maupun oleh restoran.
Gambar 4.35 Tampilan halaman komplain
116
4.5 Hasil percobaan Multi User
Proses pengujian pada koneksi Multi client ke server pada saat
yang bersamaan, dengan USB bluetooth dongle dihubungkan ke PC
(Personal Computer), jarak client ke server adalah maksimal sampai
10 meter dan tanpa penghalang. Untuk melakukan pengujian ini di
gunakan beberapa jenis handphone yaitu: Nokia E50, Nokia 6120,
dan Sony Ericsson K530i.
Tabel 4.1 Pengujian waktu pencarian perangkat
menggunakan HP Sony Ericsson K530i
Proses Pencarian Perangkat (detik) Percobaan
1m 2m 5m 7m 10m
1 14,7 14,1 14,6 14 Error
2 13,9 14 13,9 error 17,4
3 13,8 13,9 13,9 26,5 14
4 13,9 13,9 13,9 13,9 21,7
5 13,9 13,9 13,9 14 13,6
Rata-rata 14,04 13,96 14,04 17,1 16,675
Tabel 4.2 Pengujian waktu pencarian perangkat
menggunakan HP Nokia E50
Proses Pencarian Perangkat (detik) Percobaan
1m 2m 5m 7m 10m
1 16,2 15 14,7 14,4 15,6
2 14,6 14,5 14,7 error 14,5
3 14,3 14,3 14,7 15,2 14,7
4 14,3 14,6 14,2 14,6 14,9
5 14,2 14,6 14,6 14,6 14,5
Rata-rata 14,72 14,6 14,58 14,7 14,84
Dari data tabel 4.1 dan tabel 4.2 terlihat bahwa proses pencarian
perangkat tergantung kepada merk HP yang digunakan. Berdasakan
117
rata-rata waktu pencarian perangkat, penggunaan HP Sony Ericsson
lebih cepat namun tidak terlalu stabil, sedangkan Nokia lebih stabil
walaupun agak lambat 0,475 detik.
Tabel 4.3 Pengujian transfer data client server
Transfer Data (detik) Percobaan
1m 2m 5m 7m 10m
1 2,4 3 3 3,1 3,2
2 2,8 3,4 3,4 3,3 3,4
3 3,5 3,2 3,3 3,4 3,4
4 3 3,1 3,4 3,2 3,2
5 3,1 3,1 3,1 3,1 3,3
Rata-rata 2,96 3,16 3,24 3,22 3,3
Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak 2
meter
Pencarian Perangkat Transfer Data Percobaan
E50 K530i 6120 E50 K530i 6120
1 18,2 14,2 14 2,8 2,5 3
2 15 14,1 15,5 3,4 2,4 3,4
3 14,8 14 14,4 3,3 2,6 3,2
4 14,8 13,9 14,3 3,4 2,4 3,1
5 14,8 14 14,3 3,4 2,4 3,1
Rata-rata 15,52 14,04 14,5 3,26 2,46 3,16
Jika dilihat dari hasil pengujian yang ditunjukkan pada tabel 4.3 dan
4.4, koneksi satu client dengan server dibandingkan koneksi antara
tiga client dengan server menunjukkan perbedaan waktu yang tidak
terlalu mencolok, hal ini dikarenakan penggunaan koneksi
RFCOMM untuk membangun komunikasi client-server via
bluetooth, dimana RFCOMM merupakan komunikasi point-to-point
yang dapat menangani sampai tujuh client secara bersamaan tetapi
koneksinya dilakukan satu-persatu seperti antrian, sehingga waktu
118
yang diperlukan untuk antara client satu dengan yang lain adalah
berbeda walaupun pengiriman data dari client ke server adalah
secara bersamaan. Layanan bluetooth ini mempunyai karakteristik
dimana 1 bluetooth dongle hanya dapat diakses oleh 7 user.
Mengingat bahwa foodcourt memiliki jumlah pengunjung yang
banyak, maka salah satu cara agar semua pengunjung dapat
menikmati layanan ini adalah disiapkan server lebih dari 1. Hal ini
dikarenakan 1 server hanya dapat memiliki 1 bluetooth dongle.
Pembatasan jumlah bluetooth dongle pada server bertujuan agar
tidak terjadi bentrok pada saat pengiriman dan penerimaan data dari
client yang berbeda
119
BAB V
PENUTUP
5.1 KESIMPULAN
Berdasarkan hasil ujicoba perangkat lunak dalam pengerjaan
tugas akhir ini, dapat diambil beberapa kesimpulan yaitu:
1. Untuk membangun koneksi antara komputer dan telepon
seluler menggunakan bluetooth dapat digunakan bahasa
pemrograman JAVA. Perangkat lunak pada telepon seluler
dibuat menggunakan J2ME, aplikasi ini akan dipasang di
telepon selular. Syarat dari telepon seluler yang akan di
gunakan adalah harus mendukung MIDP2.0 dan bluetooth
API (JSR-82). Sedangkan untuk membuat perangkat lunak
pada komputer diperlukan Java Bluetooth Stack dengan
menggunakan Microsoft Bluetooth Stack API dan BlueCove.
Microsoft Bluetooth Stack API adalah sebuah socket-style
atau lebih sering disebut dengan WinSock. Stack ini adalah
sebuah aplikasi untuk mengoperasikan generic USB
Bluetooth Dongle.
2. Sistem pemesanan makanan dan minuman dengan
menggunakan bluetooth ini terdiri dari tiga buah aplikasi,
yaitu server (J2SE), client pelanggan (J2ME), dan client
restoran(Web). Yang memiliki fitur untuk melihat daftar
restoran, melihat daftar menu dan harga, melakukan
pemesanan, melihat pesanan, melayani pembayaran, serta
melihat pesanan yang harus dilayani.
3. Transaksi pemesanan makanan dan minuman dapat berjalan
dengan baik, dimana menu makanan dan minuman masing-
masing restoran yang ada di foodcourt dapat diakses oleh
pelanggan. Transaksi pembayaran dapat di layani oleh kasir
dan pesanan dapat dipantau dan dilayani dengan baik oleh
restoran.
4. Layanan pengaksesan pemesanan makanan dan minuman
menggunakan Bluetooth ini, dapat diakses oleh setiap user
yang memiliki mobile device dengan kemampuan Bluetooth.
120
Tentunya harus mendukung teknologi Java MIDP 2.0 serta
Java APIs for Bluetooth Wireless Technology (JSR)
5. Jarak rentang kerja bluetooth antara client-server sampai
sejauh 10 meter tidak menurunkan performa transfer data
untuk transaksi pemesanan.
6. Waktu yang diperlukan oleh seorang user untuk mengakses
server (melakukan request data dan menerima replay data)
dengan menggunakan koneksi RFCOMM, dipengaruhi oleh
jumlah user yang sedang mengakses server tersebut.
5.2 SARAN
Untuk perbaikan dan pengembangan aplikasi ini di masa yang
akan datang, disarankan untuk :
1. Komunikasi client-server diperlukan acknowledge untuk
mengetahui sukses tidaknya data yang dikirim oleh client
maupun server.
2. Sistem pemesanan menggunakan media bluetooth bisa di
kembangkan dengan mengganti atau menambah media
komunikasinya menggunakan protokol TCP/IP dengan
memanfaatkan WIFI atau langsung menggunakan jaringan
internet (GPRS, EDGE, 3G).
3. Penambahan Sistem Informasi Manajemen untuk foodcourt
sehingga aplikasi yang dibuat menjadi lebih sempurna.
4. Diperlukan proses enkripsi data pada request message dan
reply message yang bertujuan untuk kerahasiaan data, dan
juga diperlukan proses otentikasi yang bertujuan untuk
mengetahui keaslian data.
121
DAFTAR PUSTAKA
[1]. Shalahuddin, M dan Rosa AS. “Pemrograman J2ME
Belajar Cepat Pemrograman Perangkat Telekomunikasi
Mobile”, Informatika, Bandung 2008.
[2]. Raharjo, Budi, Imam Heryanto dan Arif Aryono.
“Tuntunan Pemrograman JAVA Untuk Handphone”,
Informatika, Bandung 2007.
[3]. Hopkins, Bruce and Ranjith Antony. “Bluetooth for Java”,
Apress, New York 2003
[4]. Kadir, Abdul. “Dasar Pemrograman Web Dinamis
Menggunakan PHP”, Andi, Yogyakarta 2002.
[5]. Murthi, Philipus Bayu. “Sistem Keamanan Bluetooth”,
2004.
<http://www.budi.insan.co.id/courses/el7010/2004/bayu-
proposal.doc>
[6]. Wikipedia, February 2007. BLUETOOTH
<http://en.wikipedia.org/wiki/Bluetooth#Bluetooth>
[7]. Ortiz, C, and Enrique. “Using the Java APIs for Bluetooth
Wireless Technology Part 1 - API Overview”, Desember
2004,
<http://developers.sun.com/techtopics/mobility/apis/article
s/bluetoothintro/>
122
{Halaman ini sengaja dikosongkan}
115
BIODATA PENULIS
Miftakh Arkhan Zein Taptozani
TTL :
Lumajang, 11 April 1985.
E-mail :
Blogg :
http://z31nt.wordpress.com
http://mif2.blogspot.com
Pendidikan :
SD Negeri Klakah 01 ( 1991 - 1997)
SLTPN 1 Sukodono Lumajang (1997 - 2000)
SMK Telekomunikasi Sandhy Putra Malang (2002 - 2005)
Joint Program D4 (PENS-ITS,VEDC Malang) Jurusan Teknik
Informatika (2005 – 2009)
Selama dua tahun sebelum masuk ke SMK, penulis menjadi anak jalanan
yang kemudian bertobat dan melanjutkan sekolah. Menjelang kuliah-kuliah
akhir, penulis melakukan aktifitas kuliah sambil bekerja selama satu
setengah tahun untuk mengatasi kejenuhan kuliah. Penulis bercita-cita
menjadi pengusaha dan memiliki Yayasan sosial untuk anak-anak yatim dan
kurang mampu. Semoga Allah Al Ghoniy Al Halim memberi ridho,
kekuatan dan kemudahan. Amin