08.06.2013 Views

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN ...

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN ...

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>PEMBUATAN</strong> <strong>APLIKASI</strong> <strong>MOBILE</strong> <strong>PEMESANAN</strong><br />

<strong>MAKANAN</strong> <strong>DAN</strong> MINUMAN BERBASIS<br />

J2ME <strong>DAN</strong> BLUETOOTH<br />

MIFTAKH ARKHAN ZEIN TAPTOZANI<br />

NRP. 74 05 040 730<br />

Dosen Pembimbing:<br />

Yuliana Setyowati, S.Kom, M.Kom<br />

Harits Ar Rosyid, S.T, M.T<br />

PROYEK AKHIR<br />

JURUSAN TEKNIK INFORMATIKA<br />

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA<br />

INSTITUT TEKNOLOGI SEPULUH NOPEMBER<br />

SURABAYA<br />

2009


<strong>PEMBUATAN</strong> <strong>APLIKASI</strong> <strong>MOBILE</strong> <strong>PEMESANAN</strong><br />

<strong>MAKANAN</strong> <strong>DAN</strong> MINUMAN BERBASIS<br />

J2ME <strong>DAN</strong> BLUETOOTH<br />

SOFTWARE DEVELOPMENT OF <strong>MOBILE</strong> APPLICATION<br />

ON FOOD AND BEVERAGE ORDERING SYSTEM USING<br />

J2ME AND BLUETOOTH<br />

Miftakh Arkhan Zein Taptozani<br />

NRP. 74 05 040 730<br />

Dosen Pembimbing :<br />

Yuliana Setyowati, S.Kom, M.Kom<br />

NIP. 19780706.200212.2.003<br />

Harits Ar Rosyid, S.T, M.T<br />

PROYEK AKHIR<br />

JURUSAN TEKNIK INFORMATIKA<br />

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA<br />

INSTITUT TEKNOLOGI SEPULUH NOPEMBER<br />

SURABAYA<br />

2009


<strong>PEMBUATAN</strong> <strong>APLIKASI</strong> <strong>MOBILE</strong> <strong>PEMESANAN</strong><br />

<strong>MAKANAN</strong> <strong>DAN</strong> MINUMAN BERBASIS<br />

J2ME <strong>DAN</strong> BLUETOOTH<br />

PROYEK AKHIR<br />

Diajukan Untuk Memenuhi Salah Satu Syarat<br />

Memperoleh Gelar Sarjana Sains Terapan<br />

pada<br />

Politeknik Elektronika Negeri Surabaya<br />

Institut Teknologi Sepuluh Nopember<br />

Oleh:<br />

MIFTAKH ARKHAN ZEIN TAPTOZANI<br />

NRP. 74 05 040 730<br />

Tim Penguji Proyek Akhir:<br />

Dosen Penguji I<br />

Kholid Fathoni, S.Kom<br />

NIP. 19801226.2008121.2.003<br />

Dosen Penguji II<br />

Siyamta, S.Pd, S.ST, M.T<br />

NIP. 19740926.200212.1.002<br />

Dosen Penguji III<br />

Farid Zuniawan, ST<br />

Disetujui oleh:<br />

ii<br />

Dosen Pembimbing:<br />

Dosen Pembimbing I<br />

Yuliana Setyowati, S.Kom, M.Kom<br />

NIP. 19780706.200212.2.003<br />

Mengetahui,<br />

Ketua Jurusan Teknologi Informasi<br />

Arna Fariza, S.Kom., M.Kom<br />

NIP. 19710708.199903.2.001<br />

Dosen Pembimbing II<br />

Harits Ar Rosyid, S.T, M.T


<strong>PEMBUATAN</strong> <strong>APLIKASI</strong> <strong>MOBILE</strong> <strong>PEMESANAN</strong><br />

<strong>MAKANAN</strong> <strong>DAN</strong> MINUMAN BERBASIS<br />

J2ME <strong>DAN</strong> BLUETOOTH<br />

Nama Mahasiswa : MIFTAKH ARKHAN ZEIN TAPTOZANI<br />

NRP : 74 05 040 730<br />

Jurusan : Teknik Informatika<br />

Dosen<br />

Pembimbing<br />

: 1. YULIANA SETYOWATI, S.Kom, M.Kom<br />

2. HARITS AR ROSYID, S.T, M.T<br />

Abstrak<br />

Penggunaan media bluetooth dan J2ME untuk restoran akan<br />

memudahkan proses pemesanan dan administrasi, karena untuk media alat<br />

tulis dan kertas untuk pemesanan makanan dan minuman menemui kendalakendala<br />

antara lain adanya pemesanan yang rangkap (redudansi), tidak<br />

urutnya pembuatan pemesanan akibat bertumpuk nya nota pemesanan<br />

terutama pada saat ramai pengunjung.<br />

Aplikasi pemesanan makanan dan minuman via bluetooth<br />

merupakan implementasi dari Java API (Application Programming<br />

Interface) bluetooth (JSR-82) yang bertujuan untuk memberikan solusi<br />

alternatif untuk pemesanan makanan dan minuman di foodcourt dengan<br />

menggunakan telepon selular. Aplikasi ini terdiri dari dua bagian yaitu<br />

aplikasi bluetooth server pada komputer dan aplikasi MIDlet bluetooth<br />

client pada telepon selular yang mendukung JSR-82. Tipe jaringan<br />

bluetooth yang digunakan adalah piconet. Aturan komunikasi client-server<br />

yaitu client mengirimkan request message pada server dan server akan<br />

membalas dengan reply message ke client.<br />

Berdasarkan hasil pengujian lama waktu koneksi untuk pencarian<br />

perangkat antara client dengan server berkisar antara 13,2 - 15,5 detik.<br />

Sedangkan untuk transfer data berkisar antara 2 - 4 detik. Fitur-fitur yang<br />

tersedia pada aplikasi ini melihat daftar restoran, melihat daftar menu dan<br />

harga, melakukan pemesanan, melihat pesanan, melayani pembayaran, serta<br />

melihat pesanan yang harus dilayani. Dengan menggunakan aplikasi ini,<br />

pengguna dapat melakukan pemesanan makanan dan minuman dengan<br />

mudah dan nyaman<br />

Kata kunci : Bluetooth, Pemesanan Makanan, Java, Telepon Selular<br />

iii


SOFTWARE DEVELOPMENT OF <strong>MOBILE</strong> APPLICATION<br />

ON FOOD AND BEVERAGE ORDERING SYSTEM USING<br />

J2ME AND BLUETOOTH<br />

Name : MIFTAKH ARKHAN ZEIN TAPTOZANI<br />

Student ID : 74 05 040 730<br />

Departement : Informatics Engineering<br />

Promotor<br />

:<br />

1. YULIANA SETYOWATI, S.Kom, M.Kom<br />

2. HARITS AR ROSYID, S.T, M.T<br />

Abstract<br />

The usage of bluetooth and J2ME for restaurant will facilitate the<br />

ordering process and administration, because the uses of paper and<br />

stationery for the ordering food and beverage meet constraints, for example<br />

the redundancy of ordering which have double order, inappropriate between<br />

ordering and result because the cumulative effect of ordering note,<br />

especially at the time when many visitors come.<br />

The food and beverage ordering via bluetooth application is<br />

implementation of Java API (Application Programming of Interface)<br />

bluetooth (JSR-82) to give alternative solution for the ordering of food and<br />

beverage in foodcourt by using cellular telephone. This application consist<br />

of two shares that is bluetooth server application at computer and MIDlet<br />

bluetooth client at cellular telephone with JSR-82 support. Network<br />

topology of bluetooth is use piconet. Communications process between<br />

client-server is client deliver request message to server and server will<br />

reciprocate with reply message to client.<br />

From the trial result, time to make connection for the searching<br />

bluetooth devices between client and server is with range from 13,2 to 15,5<br />

second. While to the data transfer is with range from 2 to 4 second. Fitures<br />

that available at this application is see restaurant list, see menu list and<br />

price, do ordering food or drink, see order, serving payment, and also see<br />

order which must serve. By using this application, consumer can do food<br />

and beverafe ordering easily and balmy.<br />

Keyword : Bluetooth, Ordering food system, Java, cellular telephone<br />

iv


KATA PENGANTAR<br />

Alhamdulillah wa syukrulillah wash-shalatu wassalaamu<br />

’alaa Rasulillah, Sayyidina Muhammadin wa’ala alihi wa shahbihi<br />

wa sallim. Segala puji dan syukur, kehadirat Allah SWT yang telah<br />

memberikan rahmat, cinta dan hidayah-Nya sehingga penulis dapat<br />

menyelesaikan Tugas Akhir yang berjudul:<br />

“<strong>PEMBUATAN</strong> <strong>APLIKASI</strong> <strong>MOBILE</strong> <strong>PEMESANAN</strong><br />

<strong>MAKANAN</strong> <strong>DAN</strong> MINUMAN BERBASIS<br />

J2ME <strong>DAN</strong> BLUETOOTH”<br />

Buku tugas akhir ini disusun dan diajukan sebagai salah satu<br />

syarat untuk menyelesaikan program pendidikan Diploma IV di<br />

Politeknik Elektronika Negeri Surabaya – Institut Teknologi Sepuluh<br />

Nopember Surabaya.<br />

Dalam penyusunan Tugas Akhir ini, penulis berusaha untuk<br />

menerapkan ilmu yang telah didapat selama menjalani perkuliahan<br />

dengan tidak terlepas dari petunjuk, bimbingan, bantuan dan<br />

dukungan dari berbagai pihak. Tentu saja, dibalik semua usaha yang<br />

telah dilakukan, penulis menyadari bahwa masih banyak kekurangan<br />

di dalam penyusunan buku laporan proyek akhir ini, untuk itu<br />

penulis mohon maaf dan mengharapkan saran – saran serta kritik<br />

yang membangun dari pembaca. Dan tentunya semoga buku ini<br />

dapat bermanfaat agar dapat menghasilkan sumber daya manusia<br />

yang berkualitas, Amien.<br />

v<br />

Malang, Juli 2009<br />

Penulis


UCAPAN TERIMA KASIH<br />

Dalam kesempatan ini penulis hendak menyampaikan<br />

penghormatan dan terima kasih yang sebesar-besarnya kepada pihakpihak<br />

yang telah memberi bantuan moral, material maupun spiritual<br />

secara langsung maupun tidak langsung, yaitu kepada:<br />

1. Allah SWT dan Rasul-Nya Nabi Muhammad SAW.<br />

2. Mursyid serta guru-guru yang kuhormati dan cintai. Semoga<br />

Allah senantiasa memberikanku manfaat dari berkah guruguruku<br />

dan semoga Allah mencurahkan kesejahteraan dan<br />

rahmat-Nya kepada Syekh Muhammad Nazim Adil Al Haqqani,<br />

Syekh Muhammad Hisyam Kabbani, Syekh Muhammad Adnan<br />

Kabbani, Syekh Mustofa Mas’ud dan Syekh Muhammad Sholeh<br />

Hudi Muhyiddin Al Amin.<br />

3. Ayah, Ibu dan adik-adik tercinta, yang selalu memberikan kasih<br />

sayang, pendidikan, pengarahan, pengawasan, dukungan dan doa<br />

kepada penulis.<br />

4. Ibu Yuliana Setyowati S.Kom, M.Kom. dan Bapak Harits Ar<br />

Rosyid, S.T, M.T selaku dosen pembimbing, yang telah<br />

memberikan ide, masukan dan koreksi kepada penulis dalam<br />

menyusun Tugas Akhir ini.<br />

5. Segenap Bapak dan Ibu dosen Jurusan Teknik Informatika Joint<br />

Program BA Malang dan Politeknik Elektronika ITS Surabaya<br />

atas segala kesabaran dan keikhlasannya dalam memberikan<br />

bimbingan, didikan dan perhatian serta ilmunya kepada penulis.<br />

6. Iffa Zulfana, terima kasih atas perhatian dan kesabarannya.<br />

7. Teman-teman “Begundal Tomini 24”, begur aang, hadi mesum,<br />

gatut pak dhe, kakek udun fajar, mouse rio, hafez, nenjap, inoyla,<br />

mbah farul, pras terima kasih atas persahabatan, kebersamaan,<br />

canda tawa, susah senang, dan semangat kekeluargaannya.<br />

8. Teman-teman teamwork di server pulsa, terima kasih atas semua<br />

pengalaman yang tak terlupakan.<br />

9. Teman-teman seangkatan V dan semua teman yang tidak dapat<br />

penulis sebutkan satu per satu, terima kasih atas semangat dan<br />

kebersamaannya.<br />

vi


DAFTAR ISI<br />

HALAMAN JUDUL<br />

HALAMAN PENGESAHAN ................................ ............... ii<br />

ABSTRAK ................................ ................................ ............ iii<br />

ABSTRACT ................................ ................................ .......... iv<br />

KATA PENGANTAR ................................ ........................... v<br />

UCAPAN TERIMA KASIH ................................ ................. vi<br />

DAFTAR ISI ................................ ................................ ......... vii<br />

DAFTAR GAMBAR ................................ ............................ xi<br />

DAFTAR TABEL ................................ ................................ . xiv<br />

BAB I PENDAHULUAN<br />

1.1. Latar Belakang ................................ ......................... 1<br />

1.2. Tujuan ................................ ................................ ...... 2<br />

1.3. Rumusan Masalah ................................ .................... 2<br />

1.4. Batasan Masalah ................................ ....................... 2<br />

1.5. Metodologi ................................ ............................... 3<br />

1.6. Sistematika Pembahasan ................................ .......... 4<br />

BAB II TEORI PENUNJANG<br />

2.1. Teknologi Bluetooth................................ .................. 5<br />

2.1.1. Spesifikasi Bluetooth................................ ....... 5<br />

2.1.2. Bluetooth Protokol Stack ................................ 6<br />

2.1.2.1 Jaringan Bluetooth................................ ......... 7<br />

2.1.2.2 Profile Bluetooth ................................ ........... 8<br />

2.2. Java ................................ ................................ .......... 9<br />

2.2.1. J2SE (Java 2 Second Edition).......................... 10<br />

2.2.2. J2ME (Java 2 Micro Edition) .......................... 11<br />

2.2.2.1. Configuration................................ ................ 12<br />

2.2.2.2. Profile................................ ........................... 13<br />

2.2.2.3. Optional Package................................ .......... 14<br />

2.2.2.4. MIDP................................ ............................ 14<br />

2.2.2.5. MIDlet ................................ .......................... 15<br />

2.2.2.5.1. Siklus MIDlet ................................ ............ 16<br />

2.2.3. Library Pendukung ................................ .......... 16<br />

vii


2.3. JAVA API FOR BLUETOOTH WIRELESS<br />

TECHNOLOGY (JABWT) ................................ ...... 17<br />

2.3.1. JABWT Package ................................ ............. 19<br />

2.3.2. Device Management API Pada JABWT .......... 21<br />

2.3.2.1. Local Device................................ ................. 21<br />

2.3.2.2. Remote Device ................................ ............. 22<br />

2.3.2.3. Device Class ................................ ................. 23<br />

2.3.2.4. Pencarian Device dan Service Pada JABWT<br />

(device and service discovery)................................ ... 23<br />

2.3.2.5. Discovery Agent ................................ ........... 24<br />

2.3.2.6. Service Record................................ .............. 25<br />

2.3.2.7. Komunikasi Bluetooth Menggunakan<br />

RFCOMM ................................ ................................ . 27<br />

2.4. DATABASE................................ .............................. 28<br />

2.4.1. Entity Relation Diagram (ERD)....................... 29<br />

2.4.2. Structured Query Language (SQL) .................. 30<br />

2.4.3. Primary Key ................................ .................... 31<br />

2.4.4. Foreign Key ................................ ..................... 32<br />

2.4.5. MySQL................................ ............................ 32<br />

2.5. CLIENT SERVER ................................ ................... 32<br />

2.5.1. Karakteristik Client Server .............................. 34<br />

2.5.2. Keuntungan Dan Kerugian Arsitektur<br />

Client Server ................................ ............................. 34<br />

BAB III PERANCANGAN <strong>DAN</strong> IMPLEMENTASI<br />

PERANGKAT LUNAK<br />

3.1. DESKRIPSI UMUM ................................ ................ 37<br />

3.2. PERANCANGAN DATABASE <strong>APLIKASI</strong> ........... 38<br />

3.3. PERANCANGAN <strong>DAN</strong> IMPLEMENTASI SISTEM<br />

<strong>APLIKASI</strong> MENU <strong>PEMESANAN</strong> <strong>MAKANAN</strong> ..... 42<br />

3.3.1. KOMUNIKASI CLIENT SERVER ................ 42<br />

3.3.1.1. Sequnce Login ................................ .............. 43<br />

3.3.1.2. Sequence Daftar Foodcourt .......................... 44<br />

3.3.1.3. Sequence Daftar Menu ................................ . 44<br />

3.3.1.4. Sequence Input Pesanan................................ 45<br />

3.3.1.5. Sequence History dan Detil History.............. 46<br />

viii


3.3.1.6. Sequence Input Pesanan ............................... 47<br />

3.3.2. <strong>APLIKASI</strong> SERVER PADA KOMPUTER ... 47<br />

3.3.2.1. User Interface Server................................ .... 51<br />

3.3.2.2. Koneksi Bluetooth Pada Server .................... 52<br />

3.3.2.3. Koneksi Database Pada Server ..................... 57<br />

3.3.2.4. Proses Login ................................ ................. 57<br />

3.3.2.5. Proses Daftar Foodcourt ............................... 59<br />

3.3.2.6. Proses Daftar Menu ................................ ...... 61<br />

3.3.2.7. Proses Pemesanan Makanan dan Minuman .. 62<br />

3.3.2.8. Proses Komplain................................ ........... 63<br />

3.3.3. <strong>APLIKASI</strong> CLIENT................................ ........ 65<br />

3.3.3.1. Aplikasi CLIENT PADA PELANGGAN .... 66<br />

3.3.3.1.1. User Interface MIDlet client...................... 70<br />

3.3.3.1.2. Koneksi Bluetooth MIDlet client............... 73<br />

3.3.3.1.3. Proses Login Pada MIDlet client ............... 76<br />

3.3.3.1.4. Proses Menu Layanan, Daftar Foodcourt, dan<br />

View Pesanan................................ ............................ 77<br />

3.3.3.1.5. Proses Daftar Menu ................................ ... 79<br />

3.3.3.1.6. Proses Input Pesanan ................................ . 81<br />

3.3.3.1.7. Proses Komplain................................ ........ 82<br />

3.3.3.2. <strong>APLIKASI</strong> CLIENT PADA RESTORAN ... 83<br />

3.3.3.2.1. User Interface Web................................ .... 84<br />

3.3.3.2.2. Login ................................ ......................... 84<br />

3.3.3.2.3. Kasir ................................ .......................... 86<br />

3.3.3.2.4. Foodcourt ................................ .................. 89<br />

3.3.3.2.5. Komplain ................................ ................... 93<br />

BAB IV UJI COBA <strong>DAN</strong> EVALUASI<br />

4.1. Aplikasi Server (desktop)................................ .......... 95<br />

4.1.1. Tampilan Server ................................ ............. 95<br />

4.1.2. Tampilan Koneksi................................ ............ 96<br />

4.1.3. Tampilan Add Foodcourt................................ . 96<br />

4.2. Aplikasi Client Pelanggan (mobile)........................... 96<br />

4.3. Aplikasi Client Restoran dan Kasir (web) ................ 98<br />

4.3.1. Tampilan Login ................................ .............. 98<br />

4.3.2. Tampilan Web Foodcourt Restoran ................. 98<br />

4.3.3. Tampilan Web Foodcourt Kasir....................... 99<br />

ix


4.4. Proses Komunikasi Client Server.............................. 102<br />

4.4.1. Proses Discovery Bluetooth ............................ 103<br />

4.4.2. Proses Login ................................ .................... 104<br />

4.4.3. Proses Daftar Restoran................................ ..... 106<br />

4.4.4. Proses Daftar Menu ................................ ......... 106<br />

4.4.5. Proses Masukkan Jumlah Pesanan................... 107<br />

4.4.6. Proses Menu Lihat Pesanan ............................. 108<br />

4.4.7. Proses Pengiriman Transaksi Ke Server .......... 109<br />

4.4.8. Proses History Pesanan................................ .... 113<br />

4.4.9. Proses Detil History................................ ......... 114<br />

4.4.10. Proses Komplain................................ ........... 114<br />

4.5. Hasil Percobaan Multi User................................ ....... 116<br />

BAB V PENUTUP<br />

5.1. Kesimpulan ................................ .............................. 119<br />

5.2. Saran ................................ ................................ ......... 120<br />

DAFTAR PUSTAKA ................................ .......................... 121<br />

RIWAYAT HIDUP ................................ ............................. 122<br />

x


DAFTAR GAMBAR<br />

Gambar 2.1 Bluetooth protocol stack ................................ .... 6<br />

Gambar 2.2 Topologi jaringan bluetooth ............................... 8<br />

Gambar 2.3 Platform java ................................ ...................... 10<br />

Gambar 2.4 Arsitektur JAVA................................ ................. 12<br />

Gambar 2.5 Daur hidup MIDlet ................................ ............. 16<br />

Gambar 2.6 Struktur paket JSR82................................ .......... 18<br />

Gambar 2.7 One to one relationship................................ ....... 30<br />

Gambar 2.8 One to many relationship................................ .... 30<br />

Gambar 2.9 Many to many relationship ................................ . 30<br />

Gambar 2.10 Arsitektur umum client server .......................... 33<br />

Gambar 3.1 Gambaran umum aplikasi pemesanan makanan . 37<br />

Gambar 3.2 Rancangan database................................ ............ 38<br />

Gambar 3.3 Sequence proses login................................ ......... 43<br />

Gambar 3.4 Sequence daftar foodcourt ................................ .. 44<br />

Gambar 3.5 Sequence daftart menu................................ ........ 45<br />

Gambar 3.6 Sequence inpur pesanan................................ ...... 45<br />

Gambar 3.7 Sequence history................................ ................. 46<br />

Gambar 3.8 Sequence input komplain................................ .... 47<br />

Gambar 3.9 Activity diagram server ................................ ...... 49<br />

Gambar 3.10 Class diagram aplikasi server............................ 50<br />

Gambar 3.11 Design form pada aplikasi server (J2SE).......... 51<br />

Gambar 3.12 Hasil user interface aplikasi server (J2SE)........ 52<br />

Gambar 3.13 Sequence bluetooth connection......................... 53<br />

Gambar 3.14 Log koneksi aplikasi server (J2SE)................... 56<br />

Gambar 3.15 Activity diagram proses login........................... 58<br />

Gambar 3.16 Activity diagram daftar foodcourt..................... 60<br />

Gambar 3.17 Activity diagram daftar makanan...................... 61<br />

Gambar 3.18 Activity diagram input pesanan ........................ 62<br />

Gambar 3.19 Activity diagram proses komplain.................... 64<br />

Gambar 3.20 Use case diagram aplikasi client....................... 65<br />

Gambar 3.21 Activity diagram aplikasi client (J2ME)........... 67<br />

Gambar 3.22 Sistem akses menu makanan oleh pelanggan.... 68<br />

Gambar 3.23 Class diagram aplikasi client J2ME.................. 69<br />

Gambar 3.24 Blok diagram tampilam MIDlet client.............. 70<br />

xi


Gambar 3.25 Design form pada aplikasi pelanggan (J2ME) .. 72<br />

Gambar 3.26 Tampilan aplikasi client di emulator .............. 73<br />

Gambar 3.27 Activity diagram koneksi bluetooth client ........ 74<br />

Gambar 3.28 Tampilan login................................ .................. 76<br />

Gambar 3.29 Activity diagram menu layanan........................ 77<br />

Gambar 3.30 Tampilan menu layanan dan tampilan restoran. 79<br />

Gambar 3.31 Activity diagram proses menu makanan ........... 79<br />

Gambar 3.32 Tampilan daftar menu makanan........................ 80<br />

Gambar 3.33 Tampilan input jumlah................................ ...... 81<br />

Gambar 3.34 Activity diagram proses komplain .................... 82<br />

Gambar 3.35 Tampilan input komplain................................ .. 83<br />

Gambar 3.36 Sistem akses makanan oleh makanan................ 83<br />

Gambar 3.37 Menu atau link yang tersedia pada web<br />

foodcourt client restoran................................ ......................... 84<br />

Gambar 3.38 Login web foodcourt ................................ ........ 86<br />

Gambar 3.39 Flowchart proses pembayaran di kasir.............. 87<br />

Gambar 3.40 Tampilan kasir ................................ .................. 89<br />

Gambar 3.41 Flowchart aplikasi foodcourt client restoran..... 90<br />

Gambar 3.42 Tampilan daftar pesanan foodcourt................... 93<br />

Gambar 3.43 Tampilan daftar komplain................................ . 94<br />

Gambar 4.1 Tampilan server ................................ .................. 95<br />

Gambar 4.2 Tampilan koneksi bluetooth................................ 96<br />

Gambar 4.3 Tampilan sub menu add foodcourt...................... 97<br />

Gambar 4.4 Tampilan shortcut client dan tampilan awal........ 97<br />

Gambar 4.5 Form login aplikasi web foodcourt client............ 98<br />

Gambar 4.6 Tampilan daftar pesanan................................ ..... 99<br />

Gambar 4.7 Tampilan daftar menu................................ ......... 99<br />

Gambar 4.8 Tampilan history daftar pesanan......................... 100<br />

Gambar 4.9 Tampilan kasir ................................ .................... 100<br />

Gambar 4.10 Tampilan daftar pelanggan................................ 101<br />

Gambar 4.11 Tampilan daftar restoran................................ ... 101<br />

Gambar 4.12 Tampilan daftar user ................................ ......... 102<br />

Gambar 4.13 Diagram komunikasi client server .................... 102<br />

Gambar 4.14 Proses discovery pada server dan client............ 103<br />

Gambar 4.15 Proses server atau service tidak ditemukan....... 104<br />

Gambar 4.16 Login tidak lengkap ................................ .......... 104<br />

xii


Gambar 4.17 Login yang dilakukan client invalid.................. 105<br />

Gambar 4.18 Proses login yang valid pada client dan server.. 105<br />

Gambar 4.19 Proses daftar restoran................................ ........ 106<br />

Gambar 4.20 Proses daftar makanan atau minumann............. 107<br />

Gambar 4.21 Proses memasukkan jumlah pesanan salah....... 107<br />

Gambar 4.22 Proses pesanan telah dilakukan......................... 108<br />

Gambar 4.23 Proses lihat pesanan................................ .......... 108<br />

Gambar 4.24 Proses lihat pesanan kosong ............................. 109<br />

Gambar 4.25 Proses input nomer meja................................ ... 109<br />

Gambar 4.26 Proses pengiriman pesanan............................... 110<br />

Gambar 4.27 Tampilan kasir,pelanggan belum membayar..... 111<br />

Gambar 4.28 Tampilan kasir, pelanggan sudah membayar .... 111<br />

Gambar 4.29 Tampilan foodcourt<br />

belum bayar belum dilayani ................................ ................... 112<br />

Gambar 4.30 Tampilan foodcourt<br />

sudah bayar belum dilayani................................ .................... 112<br />

Gambar 4.31 Tampilan foodcourt<br />

sudah bayar sudah dilayani................................ ..................... 113<br />

Gambar 4.32 Proses history pesanan................................ ...... 113<br />

Gambar 4.33 Tampilan detil history server-client .................. 114<br />

Gambar 4.34 Tampilan input komplain................................ .. 115<br />

Gambar 4.35 Tampilan halaman komplain............................. 115<br />

xiii


DAFTAR TABEL<br />

Tabel 2.1 Kelas-kelas bluetooth ................................ ............. 5<br />

Tabel 2.2 Platform java ................................ .......................... 11<br />

Tabel 2.3 Interface pada javax.bluetooth package.................. 19<br />

Tabel 2.4 Class pada javax.bluetooth package ....................... 20<br />

Tabel 2.5 Exception pada javax.bluetooth package................ 20<br />

Tabel 3.1 tb_komplain................................ ............................ 39<br />

Tabel 3.2 tb_detil_pesanan................................ ..................... 39<br />

Tabel 3.3 tb_foodcourt ................................ ........................... 40<br />

Tabel 3.4 tb_menu................................ ................................ .. 40<br />

Tabel 3.5 tb_pegawai ................................ ............................. 40<br />

Tabel 3.6 tb_pelanggan ................................ .......................... 41<br />

Tabel 3.7 tb_pembayaran ................................ ....................... 41<br />

Tabel 3.8 tb_pesan................................ ................................ .. 41<br />

Tabel 3.9 tb_meja................................ ................................ ... 42<br />

Tabel 4.1 Pengujian waktu pencarian perangkat menggunakan<br />

HP Sony Ericsson K530i................................ ........................ 116<br />

Tabel 4.2 Pengujian waktu pencarian perangkat menggunakan<br />

HP Nokia E50 ................................ ................................ ........ 116<br />

Tabel 4.3 Pengujian transfer data client server....................... 117<br />

Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak<br />

2 meter........................................................................................... 117<br />

xiv


BAB I<br />

PENDAHULUAN<br />

1.1 LATAR BELAKANG<br />

Perkembangan teknologi saat ini telah memberikan pengaruh<br />

yang sangat besar bagi dunia teknologi informasi dan telekomunikasi.<br />

Munculnya beragam aplikasi memberikan pilihan dalam peningkatan<br />

kinerja suatu pekerjaan, baik yang besifat dekstop based, web baseb<br />

hingga yang sekarang ini munculnya aplikasi-aplikasi baru yang<br />

berjalan dalam mobile device/handphone.<br />

Pemilihan mobile device/handphone untuk salah satu<br />

pengembangan aplikasi selain lebih mudah dalam pengoperasiannya,<br />

sifat dari handphone yang fleksibel menjadi salah satu alasannya.<br />

Saat ini muncul teknologi baru dimana komunikasi tanpa<br />

menggunakan kabel, seperti dengan menggunakan media bluetooth<br />

pada handphone. Sebagai pendatang baru yang sudah mulai popular<br />

didunia komunikasi data wireless, bluetooth mulai memberikan<br />

beberapa solusi dan layanan yang bisa diimplementasikan dalam<br />

kehidupan sehari-hari. Bluetooth merupakan teknologi yang<br />

berkembang sebagai jawaban atas kebutuhan komunikasi antar<br />

perlengkapan elektronik agar dapat saling mempertukarkan data<br />

dalam jarak yang terbatas menggunakan gelombang radio dengan<br />

frekuensi 2,4 GHz. Salah satu implementasi bluetooth yang populer<br />

adalah pada peralatan handphone yang digunakan untuk pertukaran<br />

data.<br />

Penggunaan media bluetooth dan J2ME untuk restoran akan<br />

memudahkan proses pemesanan dan administrasi, karena untuk<br />

media alat tulis dan kertas untuk pemesanan makanan dan minuman<br />

menemui kendala-kendala antara lain adanya pemesanan yang<br />

rangkap (redudansi), tidak urutnya pembuatan pemesanan akibat<br />

bertumpuk nya nota pemesanan terutama pada saat ramai<br />

pengunjung.<br />

1


2<br />

Aplikasi dikembangkan menggunakan J2ME, sehingga<br />

aplikasi menu pemesanan makanan adalah platform bebas yang<br />

dapat berjalan di setiap mobile phone yang mendukung JAVA<br />

API yang dibutuhkan.<br />

1.2 TUJUAN<br />

Tujuan dari proyek akhir ini adalah :<br />

1. Membangun koneksi antar komputer dengan telepon seluler<br />

menggunakan bluetooth.<br />

2. Membuat suatu aplikasi menu pemesanan makanan di<br />

sebuah foodcourt.<br />

3. Aplikasi memungkinkan para pelanggan foodcourt untuk<br />

melihat semua menu dan harganya.<br />

4. Pelanggan dapat melakukan pemesanan makanan secara<br />

langsung melalui handphone-nya masing-masing dan data<br />

pesanan tersebut akan langsung dikirim ke bagian server<br />

untuk diteruskan kepada restoran.<br />

1.3 RUMUSAN MASALAH<br />

Berdasarkan latar belakang, rumusan masalah yang terdapat<br />

pada proyek akhir ini adalah sebagai berikut:<br />

1. Bagaimana proses perencanaan dan perancangan client?<br />

2. Bagaimana proses perencanaan dan perancangan server?<br />

3. Bagaimana proses implementasi aplikasi ini pada device<br />

mobile yang sebenarnya?<br />

1.4 BATASAN MASALAH<br />

Adapun batasan masalah dalam pembangunan Proyek Akhir<br />

ini adalah sebagai berikut :<br />

1. Karena sistem ini menggunakan bluetooth, maka terdapat<br />

keterbatasan range mobilitas handphone sesuai dengan<br />

daerah cakupan yang mampu dijangkau oleh bluetooth.<br />

2. Program ini hanya berjalan pada handphone yang memiliki<br />

profil dan konfigurasi Java ME dan didukung bluetooth API.<br />

3. Pelanggan harus terdaftar sebagai member untuk<br />

menjalankan aktifitas pemesanan makanan melalui<br />

handphone.


4. Foodcourt memiliki pembayaran (kasir) yang terpusat pada<br />

satu kasir.<br />

5. Tidak membahas tentang Sistem Informasi Manajemen<br />

Foodcourt.<br />

6. Tidak membahas tentang keamanan (security) didalam<br />

aplikasi yang dibuat.<br />

1.5 METODOLOGI<br />

Metodologi pembahasan pada proyek akhir ini direncanakan<br />

seperi berikut:<br />

1. Pemahaman Sistem dan Studi Literatur<br />

Mempelajari proses bisnis yang terjadi dan juga berbagai<br />

macam literatur tentang konsep-konsep yang berkaitan dengan<br />

rumusan masalah, termasuk di dalamnya mempelajari API-API<br />

pada Java ME yang berkaitan dengan pembuatan tugas akhir.<br />

2. Penampungan dan analisis data<br />

Dalam tahap ini akan dilakukan penampungan dan analisis<br />

terhadap data-data yang dibutuhkan.<br />

3. Perancangan Perangkat Lunak<br />

Tahap ini merupakan tahapan analisis dan desain perangkat<br />

lunak yang akan dikembangkan dengan mengacu pada proses<br />

bisnis dan data yang telah diperoleh dan dianalisa pada tahapan<br />

sebelumnya.<br />

4. Implementasi<br />

Pada tahap ini akan dilakukan proses pembuatan perangkat<br />

lunak yang akan dikembangkan.<br />

5. Uji coba dan Evaluasi<br />

Melakukan Uji coba dan evaluasi prototipe perangkat untuk<br />

mencari masalah yang mungkin timbul, mengevaluasi jalannya<br />

program, dan mengadakan perbaikan jika ada kekurangan.<br />

6. Pembuatan Buku Tugas Akhir<br />

Pada tahap terakhir ini disusun buku sebagai dokumentasi dari<br />

pelaksanaan Tugas Akhir.<br />

3


4<br />

1.6 SISTEMATIKA PEMBAHASAN<br />

Buku laporan proyek akhir ini terdiri dari 5 bab dengan<br />

perincian sebagai berikut :<br />

Bab I : Bab ini menjelaskan tentang latar belakang,<br />

rumusan masalah, tujuan, metodologi<br />

pengerjaan dan sistematika penulisan proyek<br />

akhir.<br />

Bab II : Bab ini menjelaskan tentang landasan teori yang<br />

mendukung pembuatan proyek akhir.<br />

Bab III : Bab ini menjelaskan tentang rancangan dan<br />

pembuatan sistem yang meliputi perancangan<br />

database, perancangan sistem, dan user<br />

interface.<br />

Bab IV : Bab ini menjelaskan pengujian dan analisa sistem<br />

apakah hasil yang telah ditetapkan sesuai dengan<br />

tujuan perancangan.<br />

Bab V : Bab ini menjelaskan tentang kesimpulan dan<br />

saran dari hasil pengamatan dan analisa terhadap<br />

sistem yang telah dibuat.


BAB II<br />

TEORI PENUNJANG<br />

2.1 TEKNOLOGI BLUETOOTH<br />

Teknologi Bluetooth dikembangkan oleh Bluetooth Special<br />

Interest Group (SIG) yang diprakarsai oleh perusahaan-perusahaan<br />

besar yaitu companies 3Com, Ericsson, Intel, IBM, Agere,<br />

Microsoft, Motorola, Nokia dan Toshiba. Bluetooth telah didesain<br />

bagi alat komunikasi personal yang mendukung komunikasi<br />

tanpa kabel(wireless) seperti pada mobile phone maupun PDA<br />

dengan jarak sampai 10 kilometer. Bluetooth adalah sebuah protokol<br />

komunikasi yang beroperasi pada frekuensi 2.4 GHz. Sinyal dari<br />

bluetooth adalah omni-directional serta dapat menerima data dan<br />

juga suara.<br />

Device yang mendukung komunikasi bluetooth dapat<br />

dengan mudah menemukan koneksi dan juga berkomunikasi dengan<br />

device yang lain secara otomatis. Bluetooth dapat digunakan untuk<br />

mengirim file, membangun sebuah jaringan tertentu, sinkronisasi<br />

data, mengkoneksikan sekitar misalnya dengan hands-free kits dan<br />

juga digunakan untuk gaming. Sesuai dengan power serta<br />

jangkauannya,bluetooth terbagi menjadi 3 kelas:<br />

Kelas<br />

Tabel 2.1 Kelas-kelas Bluetooth<br />

Maksimum Power yang<br />

Jangkauan Maksimal<br />

diijinkan<br />

Kelas 1 100 mW (20 dBm) 100 meter<br />

Kelas 2 2,5 mW(4dBm) 10 meter<br />

Kelas 3 1 mW (0 dBm) 1 meter<br />

2.1.1 Spesifikasi Bluetooth<br />

Bluetooth spesifikasi di sini mengacu pada Java<br />

Specification Request 82 (JSR-82) dan juga Symbian Bluetooth API,<br />

mendefinisikan API-API yang terdapat dalam protokol bluetooth.<br />

5


6<br />

2.1.2 Bluetooth Protocol Stack<br />

Bluetooth Protocol Stack secara umum dapat dibagi menjadi<br />

dua komponen yaitu: Bluetooth Host dan Bluetooth Controller yang<br />

disebut juga Bluetooth Radio. Bluetooth Protocol Stack terdiri dari<br />

protokol-protokol yang sejak dikembangkan sudah dimilikinya yaitu<br />

protokol L2CAP dan SDP, serta protokol lain hasil dari adopsi yaitu<br />

OBEX. Selain itu Bluetooth Protocol Stack dapat dibagi menjadi<br />

empat layer sesuai dengan peruntukannya, sesuai dengan yang<br />

ditunjukkan didalam gambar.<br />

Gambar 2.1 Bluetooth Protocol Stack<br />

Baseband yang berfungsi untuk mengaktifkan phisical RF<br />

sehingga Bluetooth dapat membuat koneksi.<br />

Link Manager Protocol (LMP) adalah protokol yang<br />

bertanggung jawab untuk membangun koneksi antara<br />

Bluetooth device serta mengatur sistem keamanan didalam<br />

koneksi,seperti authentication dan encryption.


Logical Link Control and Adaptation Protocol (L2CAP)<br />

adalah protocol yang mangadaptasikan layer protokol yang<br />

ada di atas kepada baseband. Hal ini melibatkan banyak<br />

bagian, yaitu bermacam-macam koneksi logical yang berada<br />

pada layer diatasnya.<br />

Service Discovery Protocol (SDP) digunakan untuk<br />

mendapatkan informasi tentang atribut device, service yang<br />

disediakan, dan berikut karakteristik dari service.<br />

RFCOMM mengimplementasikan RS-232 kontrol dan data<br />

signal melalui Bluetooth baseband, yang menyediakan<br />

kemampuan transportasi untuk layer yang berada di atasnya<br />

dengan menggunakan antar muka serial sebagai makanisme<br />

transportasi.<br />

TCS Binary mendefinisikan pemanggilan sinyal kontrol<br />

untuk membuat panggilan data dan suara antara Bluetooth<br />

device.<br />

2.1.2.1 Jaringan Bluetooth<br />

Bluetooth devices dibagi lagi menjadi group-group kecil<br />

yang disebut piconet. Didalam piconet, ada sebuah master dan<br />

satu atau lebih slaves. Sampai 7 buah slaves bisa diterima<br />

didalam sebuah piconet. Sedangkan master unit adalah sesuatu<br />

yang memulai proses komunikasi. Ia akan menggunakan komunikasi<br />

point-to-multipoint.<br />

Sebuah device didalam sebuah piconet mampu<br />

berkomunikasi dengan bluetooth device didalam piconet yang lain.<br />

Sebuah slave didalam piconet tertentu mungkin dapat menjadi<br />

slave didalam piconet yang berbeda. Sebuah master didalam<br />

sebuah piconet dapat menjadi slave pada piconet yang lain.<br />

Komunikasi antar piconet tersebut dapat berasal dari jaringan<br />

manapun.<br />

Dalam rangka untuk pemeliharaan baterai, bluetooth<br />

memiliki tiga low modus operasi yang hemat energi:<br />

7


8<br />

Pada modus sniff, sebuah slave device akan memperhatikan<br />

berkurangnya level energi, dimana ia tidak berpengaruh terhadap<br />

piconet.<br />

Pada modus hold, sebuah device tidak hanya mengirimkan<br />

data tetapi ia juga melakukan sinkronisasi secara konstan dengan<br />

master. Ia bukanlah member aktif dari piconet, tetapi ia<br />

menyimpan alamat member yang aktif. Sebuah device pada modus<br />

park berlaku seperti device pada modus hold, akan tetapi ia tidak<br />

menyimpan alamat member yang aktif.<br />

Gambar 2.2 Topologi Jaringan Bluetooth<br />

2.1.2.2 Profile Bluetooth<br />

Profile dari bluetooth telah ditentukan dengan<br />

memperhatikan interoperability antara device dan aplikasi dari<br />

beberapa manufaktur. Sebuah profile mendefinisikan roles dan<br />

kemampuan yang dimiliki oleh tipe aplikasi tertentu. Sebuah device<br />

hanya dapat berkomunikasi dengan device yang lain apabila mereka


memiliki profile yang sama. Semua bluetooth device harus<br />

menggunakan Generic Access Profile. Profile ini menentukan<br />

prosedure koneksi, device discovery, dan management link.<br />

Sebuah Service Discovery Profile mendefinisikan fitur<br />

dan prosedur bagi aplikasi bluetooth untuk mengenali segala servis<br />

yang telah ditentukan pada bluetooth device yang lain.<br />

Sebuah profile sinkronisasi menentukan hal-hal apa saja<br />

yang dibutuhkan pada dua atau lebih devices untuk<br />

mensinkronisasikan data.<br />

Profile bluetooth yang lain telah didefinisikan juga pada<br />

spesifikasi bluetooth. Akan tetapi tidak akan dibicarakan dalam<br />

materi ini.<br />

2.2 JAVA<br />

Java dibuat pada tahun 1991 oleh James Gosling. Pada<br />

awalnya diberi nama Oak, dimana untuk menghormati pohon<br />

yang ada di luar jendela Gosling. Kemudian namanya diubah<br />

ke Java karena telah ada sebuah bahasa yang diberi nama Oak.<br />

Motivasi sesungguhnya dari Java adalah kebutuhan akan<br />

sebuah bahasa yang bisa digunakan pada berbagai platform yang<br />

bisa dimasukkan ke dalam berbagai produk elektronik seperti<br />

pemanggang roti dan lemari es. Salah satu dari proyek pertama yang<br />

dikembangkan menggunakan Java adalah sebuah remote kontrol<br />

yang diberi nama Star 7.<br />

Pada saat yang sama, World Wide Web dan Internet<br />

berkembang sangat cepat. Gosling menyadari bahwa Java dapat<br />

digunakan untuk pemrograman Internet.<br />

Dengan keluarnya versi 1.2, platform Java akhirnya dipilahpilah<br />

menjadi beberapa edisi, yaitu: The Standard Edition (Java SE),<br />

Enterprise Edition (Java EE), Micro Edition (Java ME) dan<br />

JavaCard API.<br />

9


10<br />

Java SE – Java Standard<br />

Edition<br />

Java EE – Java Enterprise<br />

Edition<br />

Tabel 2.2 Platform Java<br />

Aplikasi Desktop<br />

Aplikasi enterprise dengan fokus<br />

pada pengembangan sisi web<br />

server, termasuk servlet, JSP, EJB<br />

dan XML<br />

Java ME – Java Micro Edition Perangkat Mobile<br />

JavaCard Smart Cards<br />

Gambar 2 .3 Platform Java<br />

2.2.1 J2SE (Java 2 Second Edition)<br />

Java 2 Second Edition atau yang lebih dikenal dengan J2SE<br />

adalah salah satu platform dari bahasa pemrogaman java yang<br />

diimplementasikan untuk aplikasi desktop. J2SE terdiri dari Java<br />

Runtime Environment (JRE) yang terdiri dari banyak library


standart. Sedangkan untuk Java Development Kit (JDK) adalah JRE<br />

yang ditambahkan development Tools & API. Untuk membuat<br />

aplikasi berbasis user interface, telah terdapat paket Abstract<br />

Window Toolkit (AWT) yang bergantung dari sistem operasi yang<br />

digunakan. User interface pada linux akan berbeda dengan user<br />

interface pada open solaris. Untuk membangun aplikasi user<br />

interface yang tidak bergantung pada sistem operasi yang digunakan<br />

dapat menggunakan paket Swing. Tampilan user interface akan<br />

selalu sama walaupun berpindah-pindah sistem operasi.<br />

2.2.2 J2ME (Java 2 Micro Edition)<br />

Java ME adalah satu set spesifikasi dan teknologi yang fokus<br />

kepada perangkat mobile. Perangkat ini memiliki jumlah memori<br />

yang terbatas, menghabiskan sedikit daya dari baterei, layar yang<br />

kecil dan bandwith jaringan yang rendah.<br />

Dengan perkembangan perangkat mobile dari telepon, PDA,<br />

kotak permainan hingga peralatan-peralatan rumah, Java<br />

menyediakan suatu lingkungan yang portable untuk mengembangkan<br />

dan menjalankan aplikasi pada perangkat ini.<br />

Program Java ME, seperti semua program Java adalah<br />

diterjemahkan oleh Virtual Machine (VM). Program-program<br />

tersebut dikompile ke dalam bytecode dan diterjemahkan oleh<br />

Java Virtual Machine (JVM). Ini berarti bahwa program-program<br />

tersebut tidak berhubungan langsung dengan perangkat keras. Java<br />

ME menyediakan suatu interface yang sesuai dengan perangkat<br />

keras. Aplikasi-aplikasi tersebut cukup dikompile sekali dan<br />

mampu dijalankan pada mesin yang berbeda.<br />

Inti dari Java ME terletak pada configuration dan profile-<br />

profile. Suatu configuration menggambarkan lingkungan runtime<br />

dasar dari suatu sistem Java ME. Ia menggambarkan core library,<br />

virtual machine, fitur keamanan dan jaringan.<br />

11


12<br />

Gambar 2 -4 Arsitektur Java ME<br />

Sebuah profile memberikan library tambahan untuk suatu<br />

kelas tertentu pada sebuah perangkat. profile-profile menyediakan<br />

user interface (UI) API, persistence, messaging library, dan<br />

sebagainya.<br />

Satu set library tambahan atau package tambahan<br />

menyediakan kemampuan program tambahan. Pemasukan package<br />

ini ke dalam perangkat Java ME dapat berubah-ubah karena<br />

tergantung pada kemampuan sebuah perangkat. Sebagai contoh,<br />

beberapa perangkat MIDP tidak memiliki Bluetooth built-in,<br />

sehingga Bluetooth API tidak disediakan dalam perangkat ini.<br />

2.2.2.1 Configuration<br />

Suatu configuration menggambarkan fitur minimal dari<br />

lingkungan lengkap Java runtime. Untuk menjamin kemampuan<br />

portabilitas dan interoperabilitas yang optimal diantara berbagai<br />

macam perangkat yang dibatasi sumber dayanya (memory, prosesor,<br />

koneksi yang dibatasi), configuration tidak menggambarkan fitur<br />

tambahan. Suatu configuration Java ME menggambarkan<br />

suatu komplemen yang minimum dari teknologi Java. Adalah<br />

merupakan tugas profile-profile untuk menggambarkan tambahan<br />

library untuk suatu kategori perangkat tertentu. Configuration<br />

menggambarkan:<br />

Subset bahasa pemrograman Java<br />

Kemampuan Java Virtual Machine (JVM)<br />

Core platform libraries<br />

Fitur sekuriti dan jaringan.


J2ME terdiri dari dua configuration yaitu :<br />

13<br />

1) Connected Limited Device Configuration (CLDC)<br />

Digunakan pada device yang terbatas dalam hal memori<br />

yang kecil dan prosesor yang tidak begitu cepat. Hanya<br />

terdiri dari sebagian kecil class librari J2SE seperti java.lang<br />

dan java.util, kemudian ditambahkan paket untuk aplikasi<br />

mobile javax.microedition.io.CLDC banyak digunakan pada<br />

handphone dan PDA (Personal Digital Asistants).<br />

2) Connected Device Configuration (CDC)<br />

Berisikan semua dari java virtual machine (JVM), dan<br />

ditambahkan paket untuk aplikasi mobile sehingga<br />

membutuhkan memori yang lebih besar dan prosesor yang<br />

lebih cepat dari CLDC.CDC banyak digunakan pada internet<br />

tv, car tv dan nokia communicator .<br />

2.2.2.2 Profile<br />

Suatu profile menggambarkan set-set tambahan dari API dan<br />

fitur untuk pasar tertentu, kategori perangkat atau industri. Sementara<br />

configuration menggambarkan library dasar, profile-profile<br />

menggambarkan library yang penting untuk membuat aplikasiaplikasi<br />

efektif. Library ini memasukkan user interface, jaringan<br />

dan penyimpanan API.<br />

Profile merupakan class librari tambahan pada configuration yang<br />

digunakan untuk pengelompokan spesifikasi tertentu (domainspesific),<br />

dan digunakan untuk mendukung paket-paket opsional agar<br />

dapat mengakses virtual machine. Profile merupakan kebalikan dari<br />

configuration yaitu mengatur hal-hal yang spesifik untuk sebuah<br />

device. Terdapat beberapa profile, namun profile pertama yang<br />

selesai dirilis adalah Mobile Information Device Profile (MIDP)<br />

yang bertugas untuk menjalankan aplikasi pada handphone atau pada<br />

pager. Satu device dapat terdiri dari beberapa profile seperti pada<br />

PDA, terdapat MIDP, dan Personal Basis Profile (PBP) yang<br />

digunakan untuk membuat tampilan grafik seperti window.


14<br />

2.2.2.3 Optional Packages<br />

Optional package adalah kumpulan API yang berisikan<br />

fungsi-fungsi tertentu yang tidak terdapat pada configuration dan<br />

profile. Optional package adalah kumpulan API yang berisikan<br />

fungsi-fungsi tertentu yang tidak terdapat pada configuration dan<br />

profile. Bluetooth optional package adalah salah satu contoh yang<br />

didukung oleh MIDP, paket yang terdapat pada bluetooth optional<br />

package ini seperti DiscoveryListener merupakan interface yang<br />

diimplementasikan untuk mencari perangkat bluetooth, mencari<br />

service pada perangkat bluetooth, LocalDevice merupakan class<br />

yang digunakan untuk mendapatkan dan mengontrol perangkat<br />

bluetooth.<br />

2.2.2.4 MIDP<br />

The Mobile Information Device Profile (MIDP) berada di<br />

atas dari CLDC. Kita tidak bisa menulis aplikasi mobile hanya<br />

dengan menggunakan CLDC API. Kita harus tetap memanfaatkan<br />

MIDP yang mendefinisikan UI.<br />

Spesifikasi MIDP, kebanyakan seperti CLDC dan API<br />

lainnya sudah digambarkan melalui Java Community Process<br />

(JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih<br />

dari 50 perusahaan, yang terdiri atas pabrik perangkat mobile,<br />

pengembang software. MIDP terus berkembang, dengan versi-versi<br />

masa depan yang telah lulus dari proses ketat JCP.<br />

Spesifikasi MIDP menggambarkan suatu perangkat MID<br />

yang memiliki karakteristik-karateristik ini sebagai batas minimum:<br />

Tampilan:<br />

o Ukuran Layar: 96x54<br />

o kedalaman tampilan: 1-bit<br />

o Ketajaman pixel: sekitar 1:1<br />

Masukan:<br />

o Satu atau lebih mekanisme user-input: satu<br />

keybboard, dua keyboard, atau touch screen


15<br />

Memory:<br />

o 256 kilobytes of non-volatile memory untuk<br />

implementasi MIDP.<br />

o 8 kilobytes of non-volatile memory for applicationcreated<br />

persistent data<br />

o 128 kilobytes of volatile memory for the Java<br />

runtime (e.g., the Java heap)<br />

Jaringan:<br />

o dua jalur, wireless, bandwidth terbatas<br />

Sound:<br />

o Kemampuan untuk memainkan nada-nada<br />

MIDP menggambarkan model aplikasi, UI API, penyimpanan<br />

dan jaringan yang kuat, permainan dan media API, kebijakan<br />

keamanan, penyebaran aplikasi dan ketetapan over-the-air (OTA).<br />

2.2.2.5 MIDlet<br />

Suatu aplikasi MIDP disebut MIDlet. Perangkat application<br />

management software (AMS) berinteraksi langsung dengan MIDlet<br />

dengan method MIDlet create, start, pause, dan destroy. MIDlet<br />

adalah bagian dari package javax.microedition.midlet. Sebuah<br />

MIDlet harus di-extend dari class MIDlet. Dan dapat meminta<br />

parameter dari AMS seperti dirumuskan dalam java application<br />

descriptor (JAD).<br />

Suatu MIDlet tidak harus memiliki (dan memang harus<br />

tidak mempunyai) sebuah method public static void main(String[]<br />

argv). Method tersebut tidak akan dikenal lagi oleh AMS sebagai titik<br />

awal sebuah program.


16<br />

2.2.2.5.1 Siklus MIDlet<br />

Gambar 2.5 Daur hidup MIDlet<br />

Kehidupan MIDlet dimulai ketika di-instantiate oleh<br />

AMS. MIDlet pada awalnya masuk status “Pause” setelah<br />

perintah baru dibuat. AMS memanggil constructor public tanpa<br />

argumen dari MIDlet. Jika sebuah exception terjadi dalam<br />

constructor, MIDlet memasuki status “Destroyed” dan<br />

membuangnya segera.<br />

MIDlet masuk ke dalam status “Active” atas pemanggilan<br />

method startUp() oleh AMS. MIDlet masuk ke dalam status<br />

“Destroyed” ketika AMS memanggil method destroyApp(). Status ini<br />

juga kembali diakses ketika method notifyDestroyed() kembali<br />

dengan sukses kepada aplikasi. Dengan catatan bahwa MIDlet hanya<br />

bisa memasuki status “Destroyed” sekali dalam masa hidupnya.<br />

2.2.3 Library Pendukung<br />

Aplikasi ini memerlukan beberapa software pendukung untuk<br />

menambah kebutuhan sistem. Software pendukung itu antara lain :<br />

a) AvetanaOBEX<br />

AvetanaOBEX adalah salah satu paket pendukung atau paket<br />

tambahan yang ada pada bahasa pemrograman java, yang<br />

berfungsi untuk membantu dalam pengiriman file. J2SE secara


17<br />

default tidak mendukung JSR82, paket tambahan untuk JSR82<br />

khusus untuk OBEX pada J2SE salah satunya adalah<br />

AvetanaOBEX yang dapat didownload pada<br />

http://avetana.sourceforge.net<br />

b) Bluecove<br />

Bluecove merupakah paket bluetooth API yang digunakan<br />

untuk operating sistem window, bluecove<br />

mengimplementasikan semua JSR82 tanpa OBEX. Bluecove<br />

dapat didownload pada http://bluecove.sourceforge.net.<br />

c) COMM API<br />

COMM API juga merupakan paket tambahan pada program<br />

java yang berfungsi untuk mengakses serial port yang ada<br />

pada komputer. J2SE secara default tidak dapat melakukan<br />

akses pada serial port seperti USB atau COM port.<br />

Sedangkan device bluetooth yang digunakan adalah USB<br />

bluetooth yang terinstal pada operating sistem, sehingga<br />

dibutuhkan COMM API untuk melakukan kontrol hardware.<br />

2.3 JAVA API FOR BLUETOOTH WIRELESS<br />

TECHNOLOGY (JABWT)<br />

JABWT merupakan J2ME optional package yang didefinisikan<br />

Java Community Process JSR-82 (Java Specification Request).<br />

JABWT digunakan untuk membuat aplikasi java pada mobile device<br />

yang berhubungan dengan teknologi wireless pada bluetooth. Pada<br />

J2SE (Java 2 Second Edition) library yang digunakan untuk<br />

komunikasi bluetooth yaitu BlueCove. Method yang digunakan pada<br />

BlueCove dan JABWT adalah sama. BlueCove merupakan Bluetooth<br />

Stack yang menggunakan Java Native Interface (JNI) yang hanya<br />

dapat dijalankan pada sistem operasi Wndows XP service pack 2<br />

pada PC, sebab pada sistem operasi ini terdapat Microsoft Bluetooth<br />

Stack yang digunakan untuk mengoperasikan USB Bluetooth<br />

Dongle. JABWT terdiri atas dua package yaitu :<br />

a) javax.bluetooth<br />

Digunakan untuk menangani transaksi data dengan<br />

menggunakan stream, banyak digunakan pada transaksi


18<br />

pesan text atau transaksi bit per bit seperti audio. Terdiri dari<br />

enam class dan empat interface.<br />

b) javax.obex<br />

Digunakan untuk menangani transaksi data dengan<br />

menggunakan object, banyak digunakan untuk transfer data<br />

berupa file karena dapat menambahakan nama file, ukuran<br />

file, dan type data file. Terdiri dari tiga class dan lima<br />

interface.<br />

Gambar 2.6 Struktur Paket JSR82<br />

javax.obex<br />

Untuk menjalan koneksi client/server diperlukan beberapa langkah<br />

yang harus dilakukan, yaitu :<br />

1) Initialization<br />

Pada saat menjalankan aplikasi bluetooth harus<br />

menginisialisasikan bluetooth stack, dan melakukan<br />

koneksi terhadap bluetooth device.<br />

2) Server<br />

Menciptakan service untuk client, menunggu client untuk<br />

bergabung, dan memperbolehkan mereka menggunakan<br />

layanan, mematikan service jika tidak dibutuhkan.<br />

3) Client<br />

Melakukan pencarian perangkat bluetooth yang ada<br />

didaerahnya, masing-masing device yang ditemukan akan


19<br />

dicari service yang ada pada server, melakukan koneksi<br />

dengan server, mengakhiri koneksi jika tidak dibutuhkan.<br />

2.3.1 JABWT Package<br />

Telah dijelaskan pada subbab 2.3. mengenai JABWT<br />

package yang terdiri atas dua package. Berikut adalah tabel yang<br />

menjelaskan tentang interface, class, dan exception.<br />

Tabel 2.3 Interface pada javax.bluetooth package<br />

Interface Keterangan<br />

DiscoveryListener mengijinkan aplikasi untuk<br />

menerima device discovery dan<br />

service discovery event.<br />

L2CAPConnection mewakili connection-oriented pada<br />

L2CAP channel.<br />

L2CAPConnectionNotifier menyediakan connection notifier.<br />

StreamConnection mewakili connection-oriented pada<br />

RFCOMM<br />

StreamConnectionNotifier menyediakan connection notifier<br />

pada RFCOMM<br />

ServiceRecord interface yang menjelaskan<br />

karakteristik dari Bluetooth service


20<br />

Tabel 2.4 Class pada javax.bluetooth package<br />

Class Keterangan<br />

DataElement Mendefinisikan berbagai macam<br />

data dimana Bluetooth mungkin<br />

mempunyai nilai service attribute.<br />

DeviceClass Mewakili class of device (CoD)<br />

record sebagai gambaran dari<br />

Bluetooth spesifikasi<br />

DiscoveryAgent Menyediakan method untuk<br />

melakukan pencarian Bluetooth dan<br />

service-nya (device discovery dan<br />

service discovery).<br />

LocalDevice Mendefinisikan fungsi dasar dari<br />

Bluetooth Manager.<br />

RemoteDevice Menggambarkan Bluetooth device<br />

yang berada di sekitar lokal<br />

Bluetooth device.<br />

UUID Mendefinisikan universally unique<br />

identifiers.<br />

Tabel 2.5 Exception pada javax.bluetooth package<br />

Exception Keterangan<br />

BluetoothConnectionException BluetoothConnectionException<br />

akan diberikan ketika koneksi<br />

Bluetooth (L2CAP,<br />

RFCOMM, atau OBEX<br />

RFCOMM) tidak dapat<br />

dibangun.


BluetoothStateException BluetoothStateException akan<br />

diberikan ketika ada<br />

permintaan ke Bluetooth<br />

systemdimana sistem tersebut<br />

tidak mendukung pada kondisi<br />

saat itu.<br />

ServiceRegistrationException ServiceRegistrationException<br />

akan diberikan ketika terjadi<br />

kegagalam dalam<br />

menambahkan service record<br />

ke dalam local Service<br />

Discovery Database (SDDB)<br />

atau pada saat merubah service<br />

record yang telah ada di SDDB<br />

2.3.2 Device Management API Pada JABWT<br />

Class pada JABWT yang digunakan untuk device management<br />

yaitu javax.bluetooth.LocalDevice, javax.bluetooth.RemoteDevice,<br />

dan javax.bluetooth.DeviceClass, dimana class-class tersebut<br />

merupakan bagian dari Generic AccessProfile (GAP).<br />

2.3.2.1 Local Device<br />

Local Bluetooth device diwakili oleh<br />

javax.bluetooth.LocalDevice. Class ini menyediakan method<br />

yang digunakan untuk mengatur dan mendapatkan local device dan<br />

informasi seperti Bluetooth address, device class, dan discovery<br />

agent. Beberapa method yang disediakan oleh<br />

javax.bluetooth.LocalDevice:<br />

static LocalDevice getLocalDevice()<br />

static method yang digunakan untuk mendapatkan LocalDevice<br />

object yang mewakili local Bluetooth device.<br />

java.lang.String getBluetoothAddress()<br />

21


22<br />

Digunakan untuk mendapatkan alamat Bluetooth (Bluetooth<br />

address) dari local device. Alamat Bluetooth ditunjukkan dalam<br />

java.lang.String yang terdiri atas 12 karakter long desimal.<br />

Java.lang.String getFriendlyName()<br />

Digunakan untuk mendapatkan nama dari local device.<br />

DiscoveryAgent getDiscoveryAgent()<br />

Mengembalikan nilai discovery agent untuk Bluetooth device<br />

yang digunakan.<br />

boolean setDiscoverable(int mode)<br />

Digunakan untuk mengatur discoverable mode dari device.<br />

Static java.lang.String<br />

getProperty(java.lang.String property)<br />

Digunakan untuk mendapatkan Bluetooth system properties<br />

2.3.2.2 Remote Device<br />

Remote local Bluetooth diwakili oleh<br />

javax.bluetooth.RemoteDevice. Class ini menyediakan<br />

beberapa method untuk mendapatkan obyek RemoteDevice yang<br />

bergabung dengan Bluetooth connection, method yang mempelajari<br />

alamat dan alamat dari remote device, dan security-related method.<br />

Beberapa method Class ini yaitu :<br />

static RemoteDevice<br />

getRemoveDevice(javax.microedition.io.Connection<br />

)<br />

static method yang digunkan untuk mendapatkan RemoteDevice<br />

yang bergabung dengan koneksi sebelumnya.<br />

java.lang.String getBluetoothAddress()<br />

Digunakan untuk mendapatkan alamat Bluetooth dari remote<br />

device. Alamat Bluetooth ditunjukkan dalam java.lang.String<br />

yang terdiri atas 12 karakter long desimal.<br />

java.lang.String getFriendlyName()


Digunakan untuk mendapatkan nama dari remoter device.<br />

boolean authenticate()<br />

Untuk mengetahui apakah remote device pada kondisi<br />

authenticate atau tidak<br />

2.3.2.3 Device Class<br />

Class DeviceClass mewakili class of device (CoD) yang<br />

ditetapkan di Bluetooth specification. Class device yang<br />

mengidentifikasi menggunakan major, minor, dan service class.<br />

DeviceClass mendefinisikan beberapa method yaitu :<br />

int getMajorDeviceClass()<br />

Digunakan untuk mendapatkan major device class<br />

int getMinorDeviceClass()<br />

Digunakan untuk mendapatkan minor device class.<br />

int getServiceClasses()<br />

Digunakan untuk mendapatkan major service classes<br />

2.3.2.4 Pencarian Device dan Service Pada JABWT (device and<br />

service discovery)<br />

Pada proses discovery (device dan service) tahap-tahapnya<br />

adalah sebagai berikut :<br />

Proses inisialisasi<br />

Proses ini merupakan proses untuk mendapatkan referensi objek<br />

LocalDevice. Metode yang digunakan untuk proses ini yaitu<br />

metode LocalDevice.getLocalDevice(). Objek<br />

LocalDevice berfungsi untuk memberikan akses ke bluetooth<br />

properties untuk device, seperti alamat bluetooth, nama<br />

bluetooth, dan discovery mode. Untuk mendapatkan objek<br />

DiscoveryAgent digunakan objek LocalDevice dengan<br />

memanggil metode LocalDevice.getDiscoveryAgent()<br />

23


24<br />

Proses device discovery<br />

Dengan menggunakan objek DiscoveryAgent, proses device<br />

discovery dan service discovery dapat dikerjakan. Untuk<br />

mendapatkan RemoteDevice yang telah ada, yang didapat dari<br />

proses device discovery sebelumnya metode yang digunakan<br />

yaitu metode retrieveDevices(). Jika ingin melakukan<br />

device discovery dapat dilakukan dengan memanggil metode<br />

startInquiry(), dan interface DiscoveryListener yang<br />

mempunyai metode deviceDiscovered(), yang berfungsi<br />

untuk mendeteksi apabila ada bluetooth device yang ditemukan.<br />

Untuk Bluetooth device yang ditemukan akan disimpan pada<br />

objek RemoteDevice<br />

Proses service discovery<br />

Dengan menggunakan objek DiscoveryAgent, proses service<br />

discovery dapat dikerjakan. Metode untuk service discovery<br />

yaitu searchServices(). Apabila service telah ditemukan,<br />

maka metode servicesDiscovered() akan dipanggil.<br />

servicesDiscovered() terdapat pada interface<br />

DiscoveryListener. Bluetooth service yang ditemukan akan<br />

disimpan pada objek ServiceRecord.<br />

Proses koneksi bluetooth.<br />

Dalam membangun koneksi via bluetooth diperlukan koneksi<br />

URL (Uniform Resource Locator) dari bluetooth device yang<br />

dipilih. Untuk mendapatkan koneksi URL metode yang<br />

digunakan yaitu getConnectionURL(), yang mengambil<br />

koneksi URL dari ServiceRecord. Setelah koneksi URL<br />

didapatkan, dilanjutkan dengan proses membangun koneksi<br />

dengan metode Connector.open(). Tipe koneksi yang<br />

digunakan ada dua yaitu L2CAP dan RFCOMM. Untuk<br />

mengetahui informasi dari remote device seperti nama bluetooth,<br />

dan alamat, dapat menggunakan metode getRemoteDevice().<br />

Jika koneksi telah dibangun maka pengiriman dan penerimaan<br />

data siap untuk dilakukan


2.3.2.5 DiscoveryAgent<br />

DiscoveryAgent menyediakan beberapa method untuk<br />

menjalankan device dan service discovery. Berikut adalah method<br />

dari DiscoveryAgent:<br />

boolean cancelInquiry(DiscoveryListener<br />

listener)<br />

Digunakan untuk menghapus device dari inquiry mode.<br />

boolean cancelServiceSearch(int transID)<br />

Digunakan untuk membatalkan service search transaction yang<br />

telah ada pada transaction ID.<br />

RemoteDevice[] retrieveDevices(int option)<br />

Digunakan untuk mengembalikan data array dari Bluetooth<br />

device yang telah ditemukan oleh local device sebelum local<br />

device melakukan proses inquiry atau dapat disebut sebagai preknown<br />

device.<br />

int searchServices(int[] attrSet, UUID[]<br />

uuidSet, RemoteDevice btDev,DiscoveryListener<br />

discListener)<br />

Digunakan untuk melakukan pencarian service pada remote<br />

Bluetooth device yang mempunyai UUID yang telah ditetapkan<br />

pada uuidSet.<br />

java.lang.String selectService(UUID uuid, int<br />

security, boolean master)<br />

Digunakan untuk mengalokasikan sebuah service yang berisi<br />

uuid yang ada pada ServiceClassIDList dari service record-nya.<br />

boolean startInquiry(int accessCode,<br />

DiscoveryListener listener)<br />

Digunakan untuk menempatkan device pada kondisi inquiry<br />

mode.<br />

25


26<br />

2.3.2.6 ServiceRecord<br />

ServiceRecord merupakan gambaran dari remote service atau<br />

RemoteDevice. ServiceRecord menyediakan method untuk<br />

mendapatkan service attribute, connection URL, host remote device,<br />

seperti halnya dalam merubah Service Discovery Database :<br />

int[] getAttributeIDs()<br />

Digunakan untuk mengembalikan service attribute ID dimana<br />

nilainya dapat diperoleh kembali dengan memanggil<br />

getAttributeValue().<br />

DataElement getAttributeValue(int attrID)<br />

Digunakan untuk mengembalikan nilai dari service attribute ID,<br />

yang disediakan di service record. Dengan kata lain, method ini<br />

kembali ke nilai null.<br />

java.lang.String getConnectionURL(int<br />

requiredSecurity, boolean mustBeMaster)<br />

Digunakan untuk mengembalikan nilai String, termasuk<br />

beberapa pilihan parameter dimana client dapat menggunakan<br />

untuk melakukan koneksi ke service yang telah digambarkan<br />

oleh ServiceRecord.<br />

RemoteDevice getHostDevice()<br />

Digunakan untuk mengembalikan remote Bluetooth device yang<br />

ditempati service record dengan nilai attribute.<br />

boolean populateRecord(int[] attrIDs)<br />

Digunakan untuk mendapatkan kembali nilai-nilai dengan<br />

menghubungi remote bluetooth device. Nilai-nilai yang<br />

dikembalikan merupakan satu set dari service attribute ID untuk<br />

sebuah service yang tersedia pada Bluetoothdevice.<br />

boolean setAttributeValue(int attrID,<br />

DataElement attrValue)<br />

Digunakan untuk memodifikasi ServiceRecord ini yang untuk<br />

mengisi service attribute yang ditunjukkan dengan attributevalue<br />

pair(attrID,attrValue).


void setDeviceServiceClasses(int classes)<br />

Digunakan oleh aplikasi server untuk mengindikasikan bit-bit<br />

major service class yang diaktifkan oleh DeviceClass milik<br />

server pada saat ServiceRecord ditambahkan pada SDDB<br />

2.3.2.7 Komunikasi Bluetooth Menggunakan RFCOMM.<br />

Setelah device discovery dan service discovery telah komplit<br />

dilakukan oleh client untuk mendapatkan semua informasi yang<br />

digunakan untuk mengatur communication link pada service di<br />

server. L2CAP link merupakan basis dari semua komunikasi melalui<br />

bluetooth. Format dari L2CAP link yaitu :<br />

btl2cap://hostname:[PSM | UUID];parameters<br />

PSM (Protocol/Service Multiplexer) merupakan suatu nilai yang<br />

sama fungsinya dengan nomer port pada jaringan IP (Internet<br />

Protocol) dan digunakan oleh client untuk koneksi dengan server.<br />

Serial Port Profile menyediakan RFCOMM yang merupakan RS-<br />

232 serial emulation protocol melalui L2CAP. Format dari<br />

RFCOMM link yaitu :<br />

btspp://hostname:[CN | UUID];parameters<br />

CN (Channel Number) merupakan suatu nilai yang hampir sama<br />

dengan nomor port service pada jaringan IP, yang digunakan oleh<br />

client untuk berkoneksi dengan server<br />

Contoh aplikasi berikut ini menggunakan protokol serial RFCOMM<br />

untuk berkomunikasi dengan device bluetooth. Aplikasi ini adalah<br />

tulang punggung dari sebuah information server dan client-nya.<br />

Server pertama kali akan mendaftarkan service-nya:<br />

localDevice = LocalDevice.getLocalDevice();<br />

localDevice.setDiscoverable(DiscoveryAgent.GIAC);<br />

notifier = (StreamConnectionNotifier)<br />

27


28<br />

Connector.open(URL);<br />

Kemudian ia akan menunggu koneksi:<br />

StreamConnection conn = notifier.acceptAndOpen();<br />

Sekali sebuah koneksi diterima, kemudian ia akan membaca<br />

command dan menjawab dengan jawaban yang tepat dengan<br />

menggunakan method untuk koneksi serial.<br />

Client pertama kali akan mencari device yang tersedia untuk service<br />

tersebut:<br />

LocalDevice localDevice =<br />

LocalDevice.getLocalDevice();<br />

discoveryAgent = localDevice.getDiscoveryAgent();<br />

discoveryAgent.startInquiry(DiscoveryAgent.GIAC,<br />

this);<br />

Client akan meng-implement DiscoveryListener dan mengoverride<br />

method yang diperlukan untuk menerima notifikasi dari<br />

device. Sekali device ditemukan dan proses pencarian servis sudah<br />

selesai dilaksanakan, kemudian command tertentu akan<br />

dibutuhkan.<br />

2.4 DATABASE<br />

Database pada dasarnya memiliki pengertian kumpulan datadata<br />

dan informasi yang terstruktur dalam suatu tabel dan relasi<br />

sehingga memudahkan dalam pengolahan data. Database ini<br />

digunakan khususnya untuk arus informasi atau data dalam jumlah<br />

besar. Database dipakai untuk menyimpan data sehingga dapat<br />

dimanipulasi dengan mudah. Database dipakai untuk aplikasi<br />

sederhana sampai yang rumit dimana melibatkan beberapa user. Oleh<br />

karena itu Database dibagi sesuai dengankompleksitasnya. Ada dua<br />

model Database, yaitu:


1. Database yang berdiri sendiri (stand alone). Merupakan<br />

database yang sangat sederhana karena disimpan dalam sistem<br />

file lokal dan mengakses pada mesin yang sama. Database ini<br />

hanya dipakai untuk satu aplikasi saja.<br />

2. Database terbagi (file share). Hampir sama dengan database<br />

stand-alone,tetapi dapat diakses oleh beberapa user. Database ini<br />

akan mengalami masalah jika aplikasi memerlukan banyak<br />

perhitungan dan pada saat yang bersamaan ada pengaksesan ke<br />

dalam database.<br />

2.4.1 Entity Relation Diagram (ERD)<br />

Sebuah ERD mendokumentasikan data sebuah informasi dengan<br />

cara menentukan data-data apa yang terdapat dalam setiap entity dan<br />

bagaimana relationship (hubungan) antara sebuah entity dengan yang<br />

lainnya. Dibawah ini akan dijelaskan beberapa hal yang dapat<br />

digunakan dalam ERD :<br />

29<br />

Entity (obyek data) adalah “sesuatu” atau “obyek” yang ada<br />

dalam dunia nyata yang dapat dibedakan dari objek lainnya.<br />

Entity dapat berupa environmental element (elemen di<br />

sekitar sistem yang berhubungan dengan sistem tersebut),<br />

resource (sumber daya yang berhubungan dengan system<br />

yang ada). Entity digambarkan dengan (kata benda tunggal)<br />

di dalamnya.<br />

Attribute adalah menguraikan bagian-bagian yang ada<br />

berdasarkan jumlah dari entity yang mempunyai tipe yang<br />

sama dan kemudian membagi-bagikan bagian-bagian<br />

tersebut.<br />

Identifier ialah atribut yang mengidentifikasikan sebuah<br />

entity secara unik.<br />

Relationship ialah hubungan yang terjadi antara dua buah<br />

entity dan digambarkan dengan garis dan sebuah kata kerja<br />

di sampingnya.<br />

Connectivity ialah jumlah yang menunjukkan berapa kali<br />

sebuah entity muncul dalam relasi dengan entiti lainnya. Ada<br />

3 jenis hubungan, yaitu :<br />

One-to-one relationship


30<br />

Merupakan hubungan di mana suatu anggota entity<br />

mempunyai hubungan dengan satu anggota entity pada<br />

entity yang berbeda.<br />

Gambar 2. 7. One to one relationship<br />

One-to-many<br />

Merupakan hubungan antara beberapa anggota entity<br />

yang satu dengan beberapa anggota entity yang<br />

lainnya.<br />

Gambar 2.8. One to many relationship<br />

Many-to-many<br />

Merupakan hubungan antara beberapa anggota entity<br />

yang satu dengan beberapa anggota entity yang<br />

lainnya.<br />

Gambar 2.9. Many to many relationship


2.4.2 Structured Query Language (SQL)<br />

SQL adalah Cara berinteraksi/berkomunikasi antara pemakai<br />

dengan basis data diatur dalam suatu bahasa khusus yang ditetapkan<br />

oleh perusahaan pembuat DBMS. Bahasa itu disebut Bahasa Basis<br />

Data. Bahasa Basis Data dapat dipilah ke dalam 2 bentuk yaitu:<br />

Data Definition Language (DDL)<br />

Dengan bahasa ini kita dapat membuat tabel baru, membuat<br />

indeks, mengubah tabel dan sebagainya. Perintah DDL dalam<br />

SQL meliputi :<br />

o CREATE TABLE – membuat tabel baru dalam<br />

database<br />

o ALTER TABLE – mengubah definisi tabel<br />

o DROP TABLE – menghapus tabel<br />

o CREATE INDEX – membuat index (search key)<br />

o DROP INDEX - menghapus index<br />

Data Manipulation Language (DML)<br />

Merupakan bentuk bahasa basis data yang berguna untuk<br />

melakukan manipulasi dan pengambilan data pada suatu<br />

basis data. Manipulasi data dapat berupa:<br />

31<br />

Penyisipan /Penambahan data baru ke suatu basis data<br />

Penghapusan data dari suatu basis data<br />

Pengubahan data di suatu basis data<br />

Perintah SQl untuk DML (Data Manipulation Language)<br />

antara lain :<br />

o SELECT – Mengekstrak data dari tabel-tabel di<br />

database<br />

o UPDATE – Mengupdate data dalam tabel di<br />

database<br />

o DELETE – Menghapus data dari tabel di database<br />

o INSERT INTO – Menyisipkan/menambah data baru<br />

ke dalam tabel di database


32<br />

2.4.3 Primary Key<br />

Pada tabel dalam database yang didesain dengan baik,<br />

terdapat sebuah atau lebih kolom yang digunakan sebagai primary<br />

key. Primary key adalah suatu informasi yang menjadikan suatu satu<br />

record adalah unik terhadap record yang lain dalam satu tabel.<br />

Contoh informasi yang dapat digunakan sebagai primary key adalah<br />

informasi Nomor Induk Pegawai atau Nomor Induk Mahasiswa.<br />

Pada saat pembuatan tabel, primary key dibuat dari kolom unik yang<br />

biasanya merupakan suatu tipe integer dan hindari untuk<br />

menggunakan tipe yang lain. Sebab indeks yang dibuat untuk<br />

primary key, ukurannnya menjadi besar. Dengan membuat informasi<br />

tambahan yang berupa integer sebagai primary key selain indeks<br />

yang digunakan berukuran kecil, juga meningkatkan kecepatan<br />

proses query. Primary key yang ditambahkan ini sering juga disebut<br />

kolom internalID.<br />

2.4.4 Foreign Key<br />

Tabel juga dapat berisi kolom foreign key. Foreign key pada<br />

suatu tabel dapat digunakan untuk mengidentifiksi informasi pada<br />

tabel yang lain. Foreign key juga digunakan untuk menciptakan<br />

referenstial integrity, yaitu jika pada suatu tabel di-update, maka<br />

tabel lain di update pula. Field yang menjadi foreign key pada tabel<br />

pertama tidaklah unik, tetapi pada tabel lain field tersebut harus<br />

menjadi primary key. Karena foreign key akan menjadi primary key<br />

pada tabel kedua, maka primary key harus dibuat terlebih dahulu.<br />

2.4.5 MySQL<br />

MySQL adalah salah satu jenis database server yang sangat<br />

terkenal. Kepopulerannya disebabkan MySQL menggunakan SQL<br />

(Structured QueryLanguage) sebagai bahasa dasar untuk mengakses<br />

database-nya. Selain itu software ini bersifat open source sehingga<br />

tidak perlu membayar untuk menggunakannya. MySQL termasuk<br />

jenis RDBMS (Relational Database Management System). Itulah<br />

sebabnya istilah seperti tabel, baris dan kolom digunakan pada<br />

MySQL. Pada MySQL, sebuah database mengandung satu atau


sejumlah tabel. Tabel terdiri dari sejumlah baris dan setiap baris<br />

mengandung satu atau beberapa kolom.<br />

2.5 CLIENT SERVER<br />

Client-server merupakan arsitektur komputasi yang<br />

memisahkan antara klien dengan server, dan kebanyakan arsitektur<br />

ini diimplementasikan pada jaringan komputer. Namun bisa juga<br />

diimplementasikan antar perangkat lain seperti juga handphone<br />

dengan handphone, ataupun handphone dengan komputer. Setiap<br />

klien atau server yang terhubung ke jaringan disebut sebagai node.<br />

Umumnya arsitektur ini memiliki 2 tipe node yaitu: klien dan server.<br />

Tipe ini biasanya disebut pula two-tier. Dengan arsitektur ini,<br />

memungkinkan device untuk melakukan sharing files dan resources.<br />

Gambar 2.10 Arsitektur Umum Client Server<br />

Setiap instance dari software pada klien dapat mengirimkan<br />

request kepada satu atau beberapa server yang terhubung kepadanya.<br />

Server kemudian menerima request tersebut, memprosesnya, setelah<br />

itu mengirimkan informasi yang dihasilkan kepada klien. Meskipun<br />

33


34<br />

konsep ini diaplikasikan pada berbagai jenis aplikasi, namun secara<br />

garis besar pola request dan response nya tetap sama. Beberapa<br />

penerapan arsitektur client server, yaitu pada web browser sebagai<br />

klien, serta web server, database server, dan mail server sebagai<br />

server.<br />

2.5.1 Karakteristik Client Server<br />

Secara umum karakteristik dari client adalah sebagai berikut:<br />

Aktif<br />

Menginisialisasi request<br />

Menunggu balasan dari request<br />

Umumnya terhubung dengan sedikit server dalam suatu<br />

waktu<br />

Umumnya berinteraksi secara langsung dengan end-user<br />

menggunakan GUI (Graphical User Interface).<br />

Sedangkan karakteristik server secara umum yaitu:<br />

Pasif<br />

Menunggu request dari klien<br />

Seketika terdapat request yang masuk kepadanya, server<br />

akan langsung memproses dan mengirimkan hasil<br />

informasinya kepada klien yang memintanya<br />

Umumnya menerima koneksi dari klien dalam jumlah yang<br />

besar<br />

Umumnya tidak berinteraksi secara langsung dengan enduser.<br />

Dapat bersifat stateless ataupun stateful.<br />

2.5.2 Keuntungan dan Kerugian Arsitektur Client Server<br />

Keuntungan dari penerapan arsitektur client server antara<br />

lain:<br />

Semua data disimpan pada server, sehingga manajemen<br />

sekuritas penuh berada pada server, hal ini menjadi baik<br />

dibandingkan dengan manajemen sekuritas data yang


tersebar, server menjamin siapa-siapa saja yang berhak<br />

mengakses data.<br />

Oleh karena storage terpusat, proses update data menjadi<br />

mudah untuk dilakukan daripada melakukan update data<br />

yang tersebar. Pada kasus peer to peer, update data<br />

dilakukan di setiap peer, hal ini tentunya sangat memakan<br />

waktu dan rentan terjadinya inkonsistensi data.<br />

Sedangkan kerugian dari penerapan arsitektur klien server<br />

antara lain:<br />

35<br />

Kongesti trafik menjadi masalah utama arsitektur klien<br />

server. Semakin banyak jumlah request client secara<br />

simultan, dapat mengakibatkan server dan jaringan kelebihan<br />

beban.<br />

Jika server mengalami kegagalan, maka request dari klien<br />

tidak dapat dipenuhi, hal ini berlaku untuk semua klien yang<br />

terkoneksi dengan server.


36<br />

{Halaman sengaja dikosongkan}


BAB 3<br />

PERANCANGAN <strong>DAN</strong> IMPLEMENTASI<br />

PERANGKAT LUNAK<br />

3.1 DESKRIPSI UMUM<br />

Perangkat lunak yang akan dikembangkan dalam Tugas<br />

akhir ini adalah mengenai sistem pemesanan makanan pada<br />

foodcourt. Secara garis besar aplikasi ini nantinya terdiri dari 3<br />

bagian utama yaitu: aplikasi pada handphone, aplikasi pada server<br />

dan aplikasi pada agen rumah makan (restoran). Gambaran umum<br />

dari aplikasi menu pemesanan makanan ini dapat dilihat pada<br />

gambar 3.1.<br />

Gambar 3.1 Gambaran umum aplikasi pemesanan makanan<br />

Perangkat lunak pada server akan dibuat menggunakan J2SE<br />

dan berbasis desktop. Aplikasi di sisi server berfungsi untuk<br />

menangani koneksi bluetooth dengan client dan juga koneksi<br />

database. Setiap request dari client akan ditangani dan dilayani oleh<br />

aplikasi server. Perangkat lunak pada client (pelanggan) dibuat<br />

menggunakan J2ME, aplikasi ini akan dipasang di telepon selular<br />

37


38<br />

pelanggan. Syarat dari handphone yang akan di gunakan adalah<br />

harus mendukung MIDP2.0 dan bluetooth API (JSR-82). Aplikasi ini<br />

berfungsi untuk melakukan pemesanan makanan terhadap restoranrestoran<br />

yang ada di foodcourt. Sedangkan aplikasi di sisi client<br />

restoran akan dibuat menggunakan PHP karena berbasiskan web,<br />

aplikasi ini akan menampilkan daftar pesanan disertai dengan nomer<br />

meja dan bill yang harus dibayar. Daftar pesanan yang tampil harus<br />

di layani oleh restoran.<br />

3.2 PERANCANGAN DATABASE <strong>APLIKASI</strong><br />

Pada bagian ini akan diberikan gambaran mengenai<br />

rancangan database. Database yang digunakan diberi nama<br />

“foodcourt”dan terdiri dari 9 tabel. Penjelasan dari masing-masing<br />

tabel termasuk seluruh atribut dan kegunaannya yang digambarkan<br />

pada model data fisik ini dapat dilihat pada tabel 3.1 sampai dengan<br />

tabel 3.9. Rancangan model database ditunjukkan pada gambar 3.2<br />

berikut:<br />

Gambar 3.2 Rancangan database


tb_komplain digunakan untuk menyimpan komplain dari pelanggan.<br />

tb_detil pesan dan tb_pesan digunakan untuk menangani proses<br />

pemesanan dan pembayaran. tb_foodcourt digunakan untuk<br />

menyimpan data nama-nama restoran. tb_pegawai berisi data<br />

pegawa, tb_pelanggan berisi data pelanggan. Untuk penjelasan dari<br />

masing-masing atribut untuk setiap tabel akan dijelaskan pada Tabel<br />

3.1 sampai Tabel 3.9 di bawah ini:<br />

Tabel 3.1 tb_komplain<br />

Field Tipe Data Key Deskripsi<br />

ID_Komplain int(8) PRI Unique identifier<br />

komplain<br />

ID_Pelanggan int(8) Unique identifier<br />

pelanggan<br />

Isi_Komplain varchar(150) Isi komplain<br />

Tanggal_Komplain datetime Tanggal komplain<br />

Status smallint(1) status komplain sudah<br />

selesai atau belum<br />

Tabel 3.2 tb_detil_pesanan<br />

Field Tipe Data Key Deskripsi<br />

ID_Detil_Pesanan int(8) PRI Unique identifier detil<br />

pesanan<br />

ID_Pesan int(8) Unique identifier<br />

pesan<br />

ID_Menu int(8) Unique identifier menu<br />

Jumlah int(4) Jumlah/banyaknya<br />

pesanan<br />

Total_Harga double(8,0) Harga total diperoleh<br />

dari jumlah*harga<br />

Status smallint(2) Status pesanan sudah<br />

dilayani atau belum<br />

Tanggal_Jam_Pesan datetime tanggal dan jam<br />

pemesanan<br />

Tanggal_Jam_Selesai datetime tanggal dan jam selesai<br />

dilayani<br />

39


40<br />

Tabel 3.3 tb_foodcourt<br />

Field Tipe Data Key Deskripsi<br />

ID_Foodcourt int(8) PRI Unique identifier foodcourt<br />

Nama_Foodcourt varchar(30) Nama restoran yang ada di<br />

foodcourt<br />

Pengelola varchar(25) Nama pemilik foodcourt<br />

Telp varchar(25) Nomer telp pemilik<br />

Tabel 3.4 tb_menu<br />

Field Tipe Data Key Deskripsi<br />

ID_Menu int(8) PRI Unique identifier menu<br />

ID_Foodcourt int(8) Unique identifier foodcourt<br />

Nama_Menu varchar(25) Nama makanan / minuman<br />

Harga double(8,0) Harga makanan / minuman<br />

Deskripsi varchar(35) Penjelasan singkat tentang<br />

menu<br />

Status_Aktif smallint(2) Status makanan tersedia atau<br />

tidak<br />

Tabel 3.5 tb_pegawai<br />

Field Tipe Data Key Deskripsi<br />

ID_Pegawai int(8) PRI Unique identifier pegawai<br />

ID_Foodcourt int(8) Unique identifier foodcourt<br />

Nama varchar(35) Nama pegawai<br />

Jenis_Kelamin varchar(2) Jenis Kelamin<br />

Alamat varchar(25) Alamat pegawai<br />

Telpon varchar(20) Telpon pegawai<br />

Username varchar(10) username untuk login ke<br />

sistem<br />

Password varchar(15) password untuk login ke<br />

sistem<br />

status_aktif smallint(1) Status pegawai aktif atau<br />

tidak


Tabel 3.6 tb_pelanggan<br />

Field Tipe Data Key Deskripsi<br />

ID_Pelanggan int(8) PRI Unique identifier<br />

pelanggan<br />

Nama_Pelanggan varchar(30) Nama pelanggan<br />

Alamat varchar(30) Alamat Pelanggan<br />

Telp varchar(25) Telp pelanggan<br />

Username varchar(10) username pelanggan untuk<br />

pemesanan<br />

Password varchar(10) password pelanggan untuk<br />

pemesanan<br />

MAC_ADDRESS varchar(30) MAC Address bluetooth<br />

pelanggan<br />

Tabel 3.7 tb_pembayaran<br />

Field Tipe Data Key Deskripsi<br />

ID_Pembayaran int(8) PRI Unique identifier<br />

pembayaran<br />

No_Nota varchar(10) nomer nota pembayaran<br />

ID_Pesan int(8) Unique identifier pesan<br />

Tanggal_Bayar datetime nomer nota pembayaran<br />

Total_Bayar double(8,0) Total pembayaran<br />

ID_Pegawai int(8) Unique identifier pegawai<br />

Tabel 3.8 tb_pesan<br />

Field Tipe Data Key Deskripsi<br />

ID_Pesan int(8) PRI Unique identifier pesan<br />

ID_Pelanggan int(8) Unique identifier<br />

pelanggan<br />

No_Meja int(8) nomer meja<br />

Total_Bayar int(25) Total Pembayaran<br />

Status smallint(1) Status pesan sudah selesai<br />

atau belum<br />

Tanggal varchar(10) Tanggal Pemesanan<br />

MAC_ADDRESS varchar(30) MAC Address pelanggan<br />

41


42<br />

Tabel 3.9 tb_meja<br />

Field Tipe Data Key Deskripsi<br />

No_Meja int(3) PRI Nomer Meja (Unique)<br />

Status smallint(1) Status meja sudah terisi<br />

atau belum<br />

3.3 PERANCANGAN <strong>DAN</strong> IMPLEMENTASI SISTEM<br />

<strong>APLIKASI</strong> MENU <strong>PEMESANAN</strong> <strong>MAKANAN</strong><br />

Pengaksesan menu pemesanan makanan merupakan aplikasi<br />

dan pengembangan dari komunikasi client-server via bluetooth dan<br />

client-server via wired LAN. Tentunya ada yang bertindak sebagai<br />

server dan ada yang menjadi client, dalam kasus ini komputer (PC)<br />

sebagai server, dan telepon selular yang mendukung JSR-82 sebagai<br />

client. Selain itu dibutuhkan juga aplikasi client yang menggunakan<br />

komputer untuk digunakan oleh restoran. Sistem ini dapat diakses<br />

oleh orang lebih dari satu. Dan sistem ini sering disebut Piconet.<br />

3.3.1 KOMUNIKASI CLIENT SERVER<br />

Pada komunikasi antara bluetooth MIDlet dan aplikasi<br />

bluetooth server data akan dikirimkan melalui koneksi bluetooth. Di<br />

mana MIDlet client mengirimkan request message (pesan<br />

permintaan) ke server dan menerima reply message (pesan balasan)<br />

dari aplikasi bluetooth server, sedangkan aplikasi bluetooth server<br />

akan menerima request message dari client dan mengirim reply<br />

message (pesan balasan) ke MIDlet client. Komunikasi data akan<br />

terbangun dengan baik apabila antara MIDlet client dengan aplikasi<br />

bluetooth server dapat menginterpretasikan setiap pesan yang<br />

diterima di antara keduanya. Komunikasi yang terjadi antara client<br />

server merupakan proses request data oleh client dan proses<br />

pengolahan data serta reply data oleh server. Pada aplikasi ini proses<br />

yang tarjadi yaitu proses login, proses permintaan daftar restoran dan<br />

daftar menu makanan atau minuman, proses input pesanan, proses<br />

permintaan history dan proses komplain.


3.3.1.1 Sequence Login<br />

Dari Gambar 3.3. dapat dilihat bahwa pertama-tama client<br />

akan mengirimkan username dan password-nya kepada server dalam<br />

bentuk string. Setelah itu akan diterima oleh server, selanjutnya akan<br />

diproses ke database. Pada bagian ini akan dilakukan proses validasi.<br />

Dan hasil pengolahan oleh database akan dikirimkan kembali ke<br />

server untuk kemudian disampaikan kepada client.<br />

Foodcourt<br />

Client<br />

LOGIN_STATE: username, password<br />

Menu Layanan<br />

LOGIN<br />

LOGIN_INVALID<br />

Foodcourt Bluetooth<br />

Server<br />

} OR<br />

loginValidasi-proses query<br />

loginValidasi-hasil query<br />

Gambar 3.3 Sequence proses login<br />

Database<br />

(mysql)<br />

Pada gambar 3.3 menunjukkan bahwa proses login yang<br />

dilakukan oleh user. Jika login valid maka bluetooth application<br />

server mengirimkan data LOGIN pada MIDlet Client sebagai reply<br />

message. Yang kemudian MIDlet client akan menampilkan Menu<br />

Layanan. Apabila username dan password yang dikirimkan tidak<br />

sesuai maka data yang dikirikan ke client adalah LOGIN_INVALID.<br />

Namun pada saat request message gagal di kirimkan, maka MIDlet<br />

Client akan menampilkan pesan error.<br />

43


44<br />

3.3.1.2 Sequence Daftar Foodcourt<br />

Pada gambar 3.4. merupakan message sequence dari proses<br />

permintaan daftar nama-nama foodcourt yang aktif pada bluetooth<br />

application server dari MIDlet client (request message). Bluetooth<br />

application server akan mengirimkan reply message berupa data<br />

foodcourt. Apabila pada saat MIDlet client mengirimkan request<br />

message gagal, maka MIDlet Client akan menampilkan pesan error<br />

Foodcourt<br />

Client<br />

DAFTAR_FOODCOURT;1;<br />

TampilanRestoran<br />

Foodcourt<br />

Bluetooth Server<br />

sqlDaftarFoodcourt : proses query<br />

sqlDaftarFoodcourt : hasil query<br />

Data Foodcourt aktif<br />

Gambar 3.4 Sequence daftar foodcourt<br />

Database<br />

(mysql)<br />

3.3.1.3 Sequence Daftar Menu<br />

Setelah proses menampilkan daftar foodcourt pada MIDlet<br />

client, user akan memilih nama foodcourt dan kemudian dikirimkan<br />

oleh MIDlet client ke bluetooth application server untuk<br />

mendapatkan daftar menu makanan atau minuman. dan message<br />

sequence dari proses ini ditunjukkan pada gambar 3.5. bluetooth<br />

application server akan melakukan proses query untuk mengambil<br />

data menu makanan atau minuman pada database. Daftar menu akan<br />

dikirimkan pada MIDlet client sebagai reply message.


Foodcourt<br />

Client<br />

DAFTAR_MENU;ID,NamaResto,;<br />

TampilanMakanan<br />

Foodcourt<br />

Bluetooth Server<br />

sqlDaftarMenu(ID) : proses query<br />

sqlDaftarMenu : hasil query<br />

Daftar Makanan Restoran<br />

Gambar 3.5 Sequence daftar menu<br />

Database<br />

(mysql)<br />

3.3.1.4 Sequence Input Pesanan<br />

Proses pemesanan makanan pada bluetooth server terdiri<br />

atas dua proses query yaitu proses sqlInputPesanan() dan<br />

sqlInputDetailPesanan() yang message sequence-nya<br />

ditunjukkan pada gambar 3.6. Sebagai reply message dari bluetooth<br />

application server yaitu data konfirmasi berupa ID Pesanan, nomer<br />

meja dan total pembayaran.<br />

Foodcourt<br />

Client<br />

INPUT_PESANAN (DataPesanan)<br />

OrderConfirmation<br />

Order ID, nomeja,total Bayar<br />

Foodcourt<br />

Bluetooth Server<br />

sqlInputPesanan()<br />

sqlInputDetailPesan()<br />

Input Transaksi Sukses<br />

Gambar 3.6 Sequence input pesanan<br />

Database<br />

(mysql)<br />

45


46<br />

3.3.1.5 Sequence History dan Detil History<br />

History dan detilhistory merupakan fasilitas yang disediakan<br />

untuk melihat transaksi yang pernah dilakukan sebelumnya, Pada<br />

gambar 3.7. merupakan message sequence dari proses permintaan<br />

history dan detilhistory. Pertama client melakukan request<br />

SHOW_HISTORY + id pelanggan dan Bluetooth application server<br />

akan mengirimkan reply message berupa tanggal, Id pesanan, total<br />

bayar dan status pembayaran. Selanjutnya client mengirimkan<br />

request DETIL_HISTORY + id pesanan, dan server mengirimkan<br />

reply berupa detil pemesanan dengan id pesanan tersebut.<br />

Foodcourt<br />

Client<br />

SHOW_HISTORY;"idPelanggan ;<br />

dataStringTransmit = history;<br />

DETIL_HISTORY;idPesanan;<br />

dataStringTransmit = detilhistory<br />

Foodcourt Bluetooth<br />

Server<br />

sqlHistoryPesanan(idPelanggan)<br />

sqlHistoryPesanan-hasil query<br />

sqlDetilHistory(idPesanan)<br />

sqlDetilHistory-hasil query<br />

Gambar 3.7 Sequence history<br />

Database<br />

(mysql)


3.3.1.6 Sequence Input Komplain<br />

Pada proses komplain, client mengirimkan data<br />

INPUT_KOMPLAIN + isi komplain. Kemudian bluetooth server<br />

melakukan input pesanan dengan menjalankan fungsi<br />

sqlInputKomplain(). Sebagai reply message dari bluetooth<br />

application server yaitu data konfirmasi berupa ID Komplain.<br />

Message sequence-nya ditunjukkan pada gambar 3.8.<br />

Foodcourt<br />

Client<br />

INPUT_KOMPLAIN;idPlgn;komplain<br />

dataStringTransmit = IDkomplain<br />

Foodcourt<br />

Bluetooth Server<br />

sqlInputKomplain<br />

Input Komplain Sukses<br />

Gambar 3.8 Sequence input komplain<br />

Database<br />

(mysql)<br />

3.3.2 <strong>APLIKASI</strong> SERVER PADA KOMPUTER (J2SE)<br />

Aplikasi server merupakan aplikasi yang berfungsi untuk<br />

menangani koneksi bluetooth dengan client (pelanggan). Selain itu,<br />

data yang dikirimkan dari client akan diolah oleh aplikasi server,<br />

yang akan diteruskan dengan pengolahan ke database. Hasil<br />

pengolahan itu akan di dikirimkan kembali ke client. Dalam<br />

mendesain Foodcourt Bluetooth Server diperlukan beberapa hal agar<br />

sebuah mobile device yang berkerja dengan menggunakan aplikasi<br />

dari J2ME dapat berkomunikasi dengan PC (Personal Computer)<br />

yang menggunakan aplikasi J2SE. Pemrograman Bluetooth pada java<br />

hal terpenting yang harus dimiliki adalah Java Bluetooth Stack,<br />

47


48<br />

dimana stack ini akan menyediakan “jembatan” antara pemrograman<br />

java dan bluetooth hardware. Salah satu cara untuk mendapatkan<br />

Java Bluetooth Stack ialah dengan menggunakan Microsoft<br />

Bluetooth Stack API dan BlueCove. Microsoft Bluetooth Stack API<br />

adalah sebuah socket-style atau lebih sering disebut dengan WinSock.<br />

Stack ini adalah sebuah aplikasi c-based untuk mengoperasikan<br />

generic USB Bluetooth Dongle.BlueCove API dibuat berdasarkan<br />

JSR-82 API, sehingga sifatnya sangat terbuka dan gratis terhadap<br />

pengembang-pengembang Bluetooth. BlueCove dapat digunakan<br />

untuk beberapa aplikasi seperti Serial Port Profile, General Access<br />

Profile dan Service Discovery Profie.<br />

Tabel 3.10 Kebutuhan Aplikasi server<br />

No Kebutuhan Keterangan<br />

1 Bluetooth device Alat untuk menerima dan mengirim<br />

pesan<br />

2 J2SDK-6.0 Kompiler untuk bahasa pemrograman<br />

java<br />

3 BlueCove Paket java untuk mengontrol<br />

bluetooth device<br />

4 CommAPI 2.0 Paket java untuk mengakses serial<br />

port<br />

5 JDBC-Connector Paket java untuk menghubungkan<br />

dengan database, untuk mysql<br />

menggunakan mysql-connector-java<br />

Foodcourt Bluetooth Server dibuat dengan menggunakan<br />

BlueCove stack yang dapat diperolah di http://sourceforge.net/<br />

projects/bluecove/ dan Microsoft Bluetooth Stack.<br />

Proses yang dilakukan oleh server diperlihatkan pada activity<br />

diagram pada gambar 3.9. Yang pertama kali dilakukan oleh server<br />

yaitu melakukan inisialisasi bluetooth device kemudian menjalankan<br />

service setelah itu melakukan proses listening client. Jika ada client<br />

yang terhubung dengan server maka server akan melakukan validasi<br />

dan menunggu request data dari client. Data yang telah di terima<br />

akan diolah oleh server kemudian mengirimkan jawaban ke client<br />

sesuai dengan permintaan.


Client<br />

Melakukan request<br />

koneksi ke server<br />

Mengirim Data<br />

tampilkan<br />

pesan<br />

tidak<br />

hasil login<br />

Daftar<br />

Restoran<br />

daftar<br />

menu<br />

Kirim Pesan<br />

Tutup koneksi<br />

database<br />

Tutup koneksi<br />

bluetooth<br />

Server<br />

Initial Bluetooth<br />

device<br />

Menjalankan<br />

service<br />

Menunggu<br />

koneksi client<br />

ada client<br />

connect?<br />

Melakukan<br />

koneksi bluetooth<br />

ya<br />

ya<br />

daftar history ya<br />

input komplain<br />

ya<br />

input pesanan ya<br />

Menerima dan<br />

mengolah data<br />

Buka koneksi<br />

database<br />

tidak<br />

tidak<br />

tidak<br />

tidak<br />

tidak<br />

Gambar 3.9 Activity diagram server<br />

y a<br />

ya<br />

tidak<br />

Login?<br />

request<br />

restoran?<br />

request<br />

menu?<br />

request<br />

history ?<br />

input<br />

pesanan?<br />

input<br />

komplain?<br />

49


50<br />

Berdasarkan activity diagram server pada gambar 3.9, maka dapat<br />

dibuat class diagram. Class diagram server ini terdiri dari empat<br />

buah class, yaitu class TaServer, class bluetoothConnection, class<br />

logConnectionFrame dan class ClientThread. Hasil class diagram<br />

yang telah dibuat dapat dilihat pada gambar 3.10 berikut ini.<br />

Gambar 3.10 Class diagram aplikasi server


3.3.2.1 User Interface Server<br />

Berdasarkan rancangan sistem pada gambar 3.9. maka pada<br />

aplikasi Server dapat dibuat visualisasi design form pada gambar<br />

3.11 berikut ini<br />

FoodCourt Desktop Server _ [ ] X<br />

File Koneksi FoodCourt Help<br />

Server > Create server....<br />

Server> Menunggu koneksi client......<br />

Gambar 3.11 Design Form pada aplikasi Server (J2SE)<br />

Untuk membuat tampilan dengan desain seperti diatas maka<br />

digunakan JFrame yang kemudian dipanggil pada main() dan di<br />

set dengan size 640x480. Form aplikasi server diberi title “Foodcourt<br />

Desktop Server”. Source untuk membuat form aplikasi server adalah<br />

sebagai berikut:<br />

public static void main(String args[]) {<br />

FoodCourtServer mainFrame = new<br />

FoodCourtServer();<br />

mainFrame.setSize( 640, 480 );<br />

mainFrame.setLocation( 80,70 );<br />

mainFrame.setTitle("Food Court Desktop<br />

Server");<br />

mainFrame.setVisible( true );<br />

}<br />

Dari source diatas akan menghasilkan tampilan form seperti gambar<br />

3.12. Form tersebut memiliki menu file, koneksi, foodcourt dan help.<br />

51


52<br />

Gambar 3.12 Hasil user interface aplikasi server (J2SE)<br />

3.3.2.2 Koneksi Bluetooth Pada Server<br />

Aplikasi server digunakan untuk menangani koneksi<br />

bluetooth, sehingga diperlukan sebuah tampilan log untuk<br />

mengetahui dan memonitoring apakah ada client yang sedang konek<br />

atau tidak. Server akan mendeteksi (listen) adanya perangkat yang<br />

melakukan koneksi dengan server. Dan ketika ada client yang<br />

melakukan koneksi dengan server maka server akan menangkap data<br />

yang dikirimkan oleh user. Untuk menangani koneksi bluetooth<br />

maka digunakan class javax.bluetooth.*;<br />

Gambar 3.13 menunjukkan bagaimana proses discovery<br />

Bluetooth pada server bakerja.sehingga dapat melakukan<br />

pengaksesan terhadap sistem pemesanan makanan. Method-method<br />

yang digunakan untuk melakukan koneksi bluetooth telah dijelaskan<br />

sebelumnya di bab 2. Dari method-method tersebut dapat<br />

digambarkan sequence diagram nya seperti pada gambar 3.13 berikut<br />

ini.


MIDlet Local Device Discovery<br />

Agent<br />

getLocalDevice()<br />

getDisscoveryAgent()<br />

retriveDevice()<br />

startInquiry()<br />

deviceDiscovered()<br />

searchServices()<br />

servicesDiscovered()<br />

getConnectionURL()<br />

Connector.open()<br />

getBluetoothAddress()<br />

53<br />

Service Record Connector Remote Device Connection<br />

Send()<br />

Gambar 3.13 Sequence bluetooth connection<br />

Berdasarkan Gambar 3.13, maka dapat di tentukan beberapa<br />

class yang digunakan untuk koneksi bluetooth dalam pembangunan<br />

aplikasi pemesanan makanan ini. Proses pertama yang dilakukan<br />

untuk membangun koneksi client-server via bluetooth yaitu<br />

melakukan inisialisasi pada local device bluetooth yang bertujuan<br />

untuk mendapatkan informasi dari local device bluetooth dan untuk<br />

mendapatkan akses ke bluetooth manager.<br />

getLocalDevice() : berfungsi menyediakan akses untuk<br />

mengontrol perangkat bluetooth yang ada pada sisi client pada tugas<br />

akhir ini adalah berupa HandPhone. Class ini berfungsi untuk<br />

mengambil informasi pada local device seperti bluetooth address,<br />

device class dan discovery agent. Source code untuk proses<br />

inisialisasi adalah sebagai berikut :


54<br />

...<br />

private LocalDevice localDevice;<br />

// local bluetooth manager<br />

...<br />

//mendapatkan informasi dari local device dan untuk<br />

dapat<br />

//mengakses bluetooth manager<br />

localDevice = LocalDevice.getLocalDevice();<br />

//pengesetan discoverable mode GIAC pada server<br />

localDevice.setDiscoverable(DiscoveryAgent.GIAC);<br />

...<br />

Setelah melakukan proses inisialisasi, proses selanjutnya adalah<br />

membuat koneksi server dengan menggunakan<br />

Connector.open() method<br />

/koneksi server<br />

import javax.microedition.io.Connector;<br />

private StreamConnectionNotifier notifier;<br />

...<br />

//membuat koneksi server menggunakan Serial Port<br />

Profile URL,<br />

//spesifik UUID, dan nama service<br />

notifier =<br />

(StreamConnectionNotifier)Connector.open(<br />

"btspp://localhost:102030405060708090A0B0C0D0E0F010<br />

;" +<br />

"name=FOODCOURT;authenticate=false;encrypt=false");<br />

...<br />

Proses berikutnya yaitu mengeset attribute service record pada<br />

Service Discovery Database (SDDB). Berikut potongan source codenya<br />

:<br />

...<br />

//mengambil record dari SDDB<br />

ServiceRecord record =<br />

localDevice.getRecord(notifier);<br />

//mengeset service record ServiceAvailability<br />

(0x0008)


attribute yang mengindikasikan service tersedia,<br />

record.setAttributeValue(0x0008,new DataElement(<br />

DataElement.U_INT_1, 255 ) )<br />

...<br />

Agar client dapat membangun koneksi dengan server dengan service<br />

yang disediakan oleh server, maka server perlu meregistrasikan<br />

service record pada SDDB dan melakukan proses menunggu koneksi<br />

dari client. Berikut source code pada proses ini :<br />

...<br />

// koneksi pada remote device<br />

StreamConnection client = null;<br />

try {<br />

//memasukkan service record pada SDDB dan menunggu<br />

koneksi dari client<br />

client = notifier.acceptAndOpen();<br />

...<br />

} catch (IOException e) {…}<br />

..<br />

Apabila server menerima koneksi dari client, maka proses<br />

selanjutnya yaitu proses penerimaan dan pengiriman data dari dan ke<br />

client serta menginterpretasikan data yang diterima oleh server yang<br />

digunakan sebagai variabel untuk proses query database dan proses<br />

pemeriksaan untuk keperluan validasi. Berikut source code pada<br />

proses ini :<br />

...<br />

try {<br />

//memperoleh input stream dari client<br />

DataInputStream in = conn.openDataInputStream();<br />

//membaca input message yang berupa data string<br />

String dataStringReceive = in.readUTF();<br />

//menginterpretasikan data input dengan mengubah<br />

data string ke array<br />

string2array(dataStringReceive);<br />

....<br />

//proses pengiriman data pada client<br />

55


56<br />

DataOutputStream stream =<br />

conn.openDataOutputStream();<br />

stream.writeUTF( dataStringTransmit );<br />

stream.flush();<br />

conn.close();<br />

}catch (Exception e) {}<br />

Gambar 3.14. Merupakan hasil tampilan dari aplikasi server<br />

untuk menangani proses koneksi bluetooth. Pada gambar 3.14<br />

sebelah kiri menunjukkan error handling saat bluetooth tidak<br />

ditemukan pada komputer server. Sedangkan pada gambar sebelah<br />

kanan menunjukkan log saat server siap untuk menerima koneksi<br />

dari client. Server akan terus melakukan listening sampai ada client<br />

yang melakukan koneksi.<br />

Gambar 3.14 Log koneksi aplikasi server (J2SE)<br />

3.3.2.3 Koneksi Database Pada Server<br />

Untuk melakukan insert, select, delete, dan update data,<br />

tahapan pertama yang dilakukan yaitu melakukan koneksi dengan<br />

database MySQL. Kemudian dilanjutkan dengan membuat objek<br />

Statement dengan menggunakan objek Connection . Oleh<br />

karena itu pernyataan (statement) SQL dibuat dan dalam bentuk<br />

data string. Pernyataan SQL dijalankan dengan melalui dua metode<br />

berdasarkan fungsinya. Jika ingin mengambil data (select)


pernyataan SQL dijalankan dengan metode executeQuery(),<br />

sedangkan untuk membuat atau memodifikasi (create, insert, update,<br />

delete) tabel data dari database metode yang digunakan yaitu<br />

executeUpdate().<br />

Berikut source code untuk melakukan koneksi database maka<br />

digunakan JDBC driver.<br />

private void koneksi() throws Exception{<br />

String driver = "com.mysql.jdbc.Driver";<br />

String url =<br />

"jdbc:mysql://127.0.0.1/foodcourt";<br />

String username = "root";<br />

String password = "tarantula";<br />

try {<br />

Class.forName( "com.mysql.jdbc.Driver" );<br />

con = DriverManager.getConnection(<br />

url,username,password );<br />

System.out.println( "Terhubung<br />

Database" );}<br />

catch (ClassNotFoundException cnfex) {<br />

System.err.println("Koneksi Driver JDBC<br />

- ODBC Gagal");<br />

cnfex.printStackTrace();<br />

System.exit(1);}<br />

catch (SQLException sqlex) {<br />

System.err.println("Koneksi Tidak Dapat<br />

Dilakukan");<br />

sqlex.printStackTrace();}<br />

}<br />

3.3.2.4 Proses Login<br />

Pada saat koneksi client-server dibangun, proses yang<br />

dilakukan setelah koneksi terbangun adalah user melakukan login<br />

yang bertujuan untuk pengidentifikasian pada user. Aplikasi client<br />

akan mengirimkan data LOGIN_STATE disertai dengan username<br />

dan password. Data tersebut kemudian oleh server diolah dan<br />

dicocokkan dengan database. Jika login valid maka server akan<br />

mengirimkan data LOGIN disertai dengan id pelanggan dan nama<br />

pelanggan Sedangkan jika login salah atau tidak sesuai, maka pesan<br />

57


58<br />

yang dikirimkan oleh server adalah LOGIN_INVALID. Activity<br />

diagram dari proses validasi login dapat dilihat pada gambar 3.15.<br />

Client<br />

Melakukan<br />

Login<br />

tampilkan<br />

pesan<br />

Discovery<br />

Bluetooth<br />

Cek Kondisi<br />

LOGIN_STATE;<br />

uname;passw<br />

koneksi<br />

database<br />

proses<br />

loginValidasi<br />

ya<br />

kirim pesan<br />

login valid?<br />

LOGIN;idPelangg<br />

an,nmPelanggan<br />

tutup koneksi<br />

database<br />

Serv er<br />

tidak<br />

LOGIN_INVALID<br />

Gambar 3.15 Activity diagram proses login<br />

Data yang dikirimkan oleh client ke server yaitu kondisi<br />

proses, username, dan password. Untuk proses login data kondisinya<br />

yaitu LOGIN_STATE, yang dapat diketahui dengan proses<br />

pemeriksaan kondisi. Berikut adalah source code proses login :


…<br />

String dataStringReceive = in.readUTF();<br />

string2array(dataStringReceive);<br />

String no = null;<br />

if (array[0].equals("miftakhz31n"))<br />

{<br />

no = "New_client";<br />

dataStringTransmit = "miftakhz31n;";<br />

}<br />

else if (array[0].equals("LOGIN_STATE"))<br />

{<br />

String username = array[1];<br />

char[] password = new char[array[2].length()];<br />

for (int i = 0; i < array[2].length(); i++) {<br />

password[i] = array[2].charAt(i);<br />

}<br />

if (loginValidasi(username, password))<br />

{<br />

dataStringTransmit = "LOGIN;" + tempId + ";"<br />

+ tempNama + ";";<br />

}<br />

else<br />

{<br />

dataStringTransmit = "LOGIN_INVALID;";<br />

}<br />

....<br />

3.3.2.5 Proses Daftar Foodcourt<br />

Pada proses data daftar foodcourt, data kondisi yang<br />

dikirimkan oleh client untuk proses ini yaitu<br />

DAFTAR_FOODCOURT. Kondisi tersebut menunjukkan bahwa<br />

client melakukan permintaan daftar nama-nama restoran yang ada di<br />

foodcourt. Activity diagram dari proses data daftar foodcourt dapat<br />

dilihat pada gambar 3.16.<br />

Proses yang dilakukan yaitu, client akan megirimkan request<br />

message, kemudian server akan menindaklanjuti dengan melakukan<br />

proses pengambilan data daftar foodcourt yang aktif pada database<br />

dengan menjalankan fungsi sqlDaftarFoodcourt() yaitu<br />

dengan melakukan kueri ke database. Data yang ada kemudian<br />

dikirimkan ke client. Data yang dikirim berisi id Fodcourt dan Nama<br />

59


60<br />

Foodcourt. Sedangkan bila data kosong, maka yang dikirimkan<br />

adalah NULL_RESTORAN. Berikut ini adalah potongan sourcode<br />

untuk proses daftar Foodcourt:<br />

…<br />

} else if (array[0].equals("DAFTAR_FOODCOURT")) {<br />

String statusnya = array[1];<br />

sqlDaftarFoodcourt(statusnya);<br />

dataStringTransmit = gabungfc;<br />

}<br />

…<br />

Client<br />

request daftar<br />

restoran<br />

tampilkan<br />

pesan<br />

Discovery<br />

Bluetooth<br />

Cek Kondisi<br />

DAFTAR_FOOD<br />

COURT;1;<br />

koneksi<br />

database<br />

Jalankan fungsi<br />

sqlDaftarFoodcourt<br />

ya<br />

kirim pesan<br />

ada data?<br />

data = IdFoodcourt;<br />

NamaFoodcourt<br />

tutup koneksi<br />

database<br />

Serv er<br />

tidak<br />

data =<br />

NULL_RESTORAN<br />

Gambar 3.16 Activity diagram daftar foodcourt


3.3.2.6 Proses Daftar Menu (Makanan atau Minuman)<br />

Activity diagram pada proses informasi daftar makanan<br />

dapat dilihat pada gambar 3.17. Pada proses info daftar makanan<br />

untuk restoran yang diinginkan oleh pelanggan data kondisi pada<br />

request message yaitu DAFTAR_MENU.<br />

Client<br />

request daftar<br />

menu<br />

tampilkan<br />

pesan<br />

Discovery<br />

Bluetooth<br />

Cek Kondisi<br />

DAFTAR_MENU;<br />

idFoodcourt;<br />

koneksi<br />

database<br />

Jalankan fungsi<br />

sqlDaftarMenu(idFoodcourt)<br />

ya<br />

kirim pesan<br />

ada data?<br />

data = IdMenu;<br />

NamaMenu;Harga<br />

tutup koneksi<br />

database<br />

Serv er<br />

tidak<br />

data =<br />

NULL_<strong>MAKANAN</strong>;<br />

Gambar 3.17 Activity diagram daftar makanan<br />

Selain data kondisi pada request message terdapat data<br />

ID_Foodcourt yang digunakan untuk proses pengambilan data menu<br />

makanan pada database. Hasil pengambilan data makanan atau<br />

minuman dari database akan dikirimkan ke client. Sehingga<br />

pelanggan akan dengan mudah mendapatkan informasi daftar menu<br />

dan dapat menentukan menu makanan atau minuman mana yang<br />

61


62<br />

akan dipesan. Berikut source code pada proses informasi daftar<br />

makanan<br />

...<br />

else if (array[0].equals("DAFTAR_MENU")) {<br />

String statusnya = array[1];<br />

sqlDaftarMenu(statusnya);<br />

dataStringTransmit = gabungmenu; }<br />

...<br />

3.3.2.7 Proses Pemesanan Makanan dan Minuman<br />

Activity diagram pada proses pemesanan dapat dilihat pada<br />

gambar 3.18. Pada proses ini data kondisi pada request message<br />

yaitu INPUT_PESANAN.<br />

Client<br />

Melakukan<br />

Pesanan<br />

tampilkan<br />

pesan<br />

Discovery<br />

Bluetooth<br />

Cek Kondisi<br />

INPUT_PESANAN;idPelanggan,no<br />

meja,total;idFoodcourt,idMenu,jml;<br />

koneksi<br />

database<br />

Jalankan fungsi sqlInputPesanan(array[1]);<br />

sqlInputDetail(array[2]);<br />

ya<br />

data = PESANAN_OK;<br />

idPesanan,noMeja,total;<br />

tutup koneksi<br />

database<br />

kirim pesan<br />

Serv er<br />

input sukses?<br />

tidak<br />

Gambar 3.18 Activity diagram input pesanan<br />

data =<br />

PESANAN_GAGAL;


Untuk proses pemesanan makanan dan minuman ada<br />

beberapa data yang dikirimkan oleh client yaitu data kondisi, id<br />

Pelanggan, nomer meja, Total pembelian, id Foodcourt, id Menu,<br />

jumlah makanan yang dipesan. Data kondisi untuk proses pemesanan<br />

yaitu INPUT_PESANAN.<br />

Data yang masuk akan diubah menjadi data array. Pada<br />

input pesanan terbagi menjadi 3 jenis, array[0] berisi data kondisi,<br />

array[1] berisi id Pelanggan, nomer meja, Total pembelian.<br />

Sedangkan pada data array[2] dan array[>2] berisi id Foodcourt, id<br />

Menu, jumlah makanan. Jika proses pemeasan sukses maka server<br />

akan mengirimkan order confirmation berupa bukti pemesanan ke<br />

client. Berikut source code pada proses pemesanan.<br />

…<br />

} else if (array[0].equals("INPUT_PESANAN")) {<br />

String pelanggan = array[1]; //1,2,35000,;<br />

sqlInputPesanan(pelanggan);<br />

for (int z = 2; z < array.length;z++){<br />

if (array[z] == null){<br />

break;<br />

}else{<br />

String detilnya = array[z];<br />

//3,1,3,;3,2,3,;<br />

sqlInputDetailPesan(idpesan,detilnya);<br />

}<br />

}<br />

dataStringTransmit = balesan;<br />

}<br />

…<br />

3.3.2.8 Proses Komplain<br />

Untuk proses komplain, data yang dikirimkan oleh client<br />

yaitu id Pelanggan dan isi komplain. Data kondisi untuk proses<br />

pemesanan yaitu INPUT_KOMPLAIN. Kemudian server akan<br />

menjalankan method sqlInputKomplain() sehingga data akan<br />

dimasukkan ke database, setelah itu server memberikan reply berupa<br />

id komplain. Activity diagram pada proses komplain dapat dilihat<br />

pada gambar 3.19.<br />

63


64<br />

Client<br />

Komplain<br />

tampilkan<br />

pesan<br />

Discovery<br />

Bluetooth<br />

Cek Kondisi<br />

INPUT_KOMPLAIN;<br />

idPelanggan<br />

koneksi<br />

database<br />

Jalankan fungsi<br />

sqlInputKomplain(idPelanggan,komplain);<br />

ya<br />

data = KOMPLAIN_OK;<br />

idKomplain;<br />

tutup koneksi<br />

database<br />

kirim pesan<br />

Serv er<br />

input sukses?<br />

tidak<br />

data =<br />

KOMPLAIN_GAGAL;<br />

Gambar 3.19 Activity diagram proses komplain<br />

Untuk menangani proses komplain pada server, dapat dilihat pada<br />

potongan source code berikut ini<br />

…<br />

else if (array[0].equals("INPUT_KOMPLAIN"))<br />

{<br />

sqlInputKomplain(array[1],array[2]);<br />

dataStringTransmit = balesan;<br />

}<br />


3.3.3 <strong>APLIKASI</strong> CLIENT<br />

Aplikasi pada client terdiri dari dua macam yaitu:<br />

a. Aplikasi pada pelanggan (J2SE)<br />

Untuk melihat menu dan melakukan pemesanan.<br />

b. Aplikasi pada restoran (WEB)<br />

Untuk melayani pemesanan dan menagani pembayaran.<br />

Fungsi-fungsi yang dilakukan pada aplikasi client dapat dijelaskan<br />

pada use case dibawah ini:<br />

Pembeli<br />

Mencari Foodcourt<br />

Bluetooth Server<br />

Memilih Restoran<br />

Order Menu<br />

Kirim Pesanan<br />

close connection<br />

Bayar<br />

Balasan<br />

Makanan & minuman<br />

Menunggu<br />

Order<br />

Terima Pesanan<br />

set dilayani<br />

set lunas<br />

Gambar 3.20 Use case diagram aplikasi client<br />

Penjelasan mengenai use case diagram:<br />

• User / Pelanggan mencari device bluetooth server.<br />

Foodcourt<br />

Kasir<br />

65


66<br />

• User / Pelanggan memilih nama restoran.<br />

• User / Pelanggan mendapat menu dan harga sesuai dengan<br />

menu restoran.<br />

• User / Pelanggan memilih menu makanan.<br />

• User / Pelanggan mengirimkan pesanan dan No Meja yang<br />

berarti melakukan input daftar pesanan dan nomer meja ke<br />

sistem.<br />

• User / Pelanggan mendapatkan balasan berupa List order dan<br />

Total yang harus dibayar.<br />

• Kasir melihat ada order baru dan belum membayar<br />

• User / Pelanggan melakukan pembayaran ke kasir dan<br />

menerima struk pembayaran.<br />

• Kasir menginputkan biaya pembayaran ke sistem dan<br />

memberikan status bahwa pemesanan dengan Id Pesan<br />

tertentu telah membayar.<br />

• Restoran / Penjual melihat daftar pesanan customer yang<br />

sudah di sorting berdasarkan waktu pemesanan oleh sistem.<br />

• Setelah koki restoran selesai membuat menu tersebut, maka<br />

pelayan akan mengantarkan pesanan ke pelangggan.<br />

• Restoran / Penjual memberikan status bahwa pemesanan<br />

telah dilayani.<br />

3.3.3.1 <strong>APLIKASI</strong> CLIENT PADA PELANGGAN<br />

(HANDPHONE / J2ME)<br />

Sistem akses aplikasi menu pemesanan makanan dapat<br />

dilihat gambar 3.20 dimana pertama kali user dengan menggunakan<br />

mobile device-nya yang sudah diperlengkapi dengan fasilitas<br />

bluetooth, melakukan proses device inquery untuk mencari server<br />

yang sedang aktif. Setelah pencarian berhasil, maka user akan secara<br />

langsung berhubungan dengan Bluetooth server yang sudah ada.<br />

Proses pertama kali dilakukan adalah proses login dimana user<br />

diwajibkan untuk mendaftar terlebih dahulu di server. Username dan<br />

password berfungsi sebagai pintu gerbang. Jika prosesnya berhasil,<br />

maka user dapat melanjutkan pengaksesan. Namun jika tidak, maka<br />

sistem akan memberikan pesan pada user. Proses yang dilakukan<br />

client (J2ME) diperlihatkan pada actifity diagram pada gambar 3.20<br />

berikut ini.


tampil pesan<br />

bluetooth OFF<br />

tampil pesan server<br />

tidak ditemukan<br />

tampil pesan tidak<br />

bisa konek server<br />

pilih menu<br />

masukkan<br />

jumlah<br />

tutup koneksi<br />

bluetooth<br />

client<br />

tidak<br />

buka aplikasi<br />

client<br />

inisialisasi<br />

bluetooth device<br />

ya<br />

bluetooth<br />

aktif?<br />

mencari foodcourt<br />

bluetooth server<br />

tidak<br />

ya<br />

server<br />

ditemukan?<br />

melakukan<br />

koneksi ke server<br />

tidak<br />

tidak<br />

form login<br />

kirim data<br />

login<br />

timeout?<br />

tidak<br />

ya<br />

pilih restoran<br />

kirim pesanan<br />

receive bill<br />

login<br />

ok?<br />

Serv er<br />

menunggu<br />

koneksi client<br />

koneksi<br />

terbangun<br />

proses validasi<br />

login<br />

input pesanan<br />

Gambar 3.21 Activity diagram aplikasi client (J2ME)<br />

Dari gambar 3.21 dapat dilihat bahwa pengaksesan dapat<br />

dilakukan lebih dari 1 orang. Akses menu pemesanan makanan dari<br />

mobile device melalui Bluetooth ini berupa database MySql. Dengan<br />

67


68<br />

maksud agar susunan menu yang disajikan dalam aplikasi system ini<br />

menyerupai dengan menu yang sudah ada pada database menu<br />

pemesanan makanan. Jadi sistem yang dibuat hanya mengambil dan<br />

memanggil data menu makanan dari nama foodcourt yang diinginkan<br />

oleh user. Bahasa pemrograman yang digunakan adalah Java 2<br />

Micro Edition (J2ME) pada sisi client dan Java 2 Standard Edition<br />

(J2SE) pada sisi server sedangkan untuk mengakses database MySql<br />

digunakan Java Database Connectivity (JDBC).<br />

Gambar 3.22 Sistem akses menu makanan oleh pelanggan<br />

Untuk membuat aplikasi client maka dirancanglah sebuah class<br />

diagram untukmembuat aplikasi J2ME. Aplikasi menggunakan tiga<br />

buah class. Yaitu class FcClient, class FcConnect dan class FcGUI.<br />

Class FcGUI berisi method-method yang digunakan untuk membuat<br />

tampilan dan form. Sedangkan class FcConnect berisi methodmethod<br />

yang digunakan untuk menangani masalah koneksi bluetooth<br />

dan juga berisi fungsi yang digunakan untuk menangani pertukaran<br />

data antara client server. Class FcClient berisi method-method<br />

default yang digunakan untuk membuat aplikasi J2ME.


Gambar3.23 Class diagram aplikasi client J2ME<br />

69


70<br />

3.3.3.1.1 User Interface MIDlet client<br />

MIDlet client mempunyai beberapa layar atau tampilan yang<br />

digunkan untuk menampilkan informasi yang dibutuhkan oleh user.<br />

Berdasarkan rancangan sistem pada gambar 3.20 dan gambar 3.21<br />

maka pada aplikasi pelanggan dapat dibuat blok diagram tampilan<br />

seperti pada gambar 3.24<br />

Gambar 3.24 Blok diagram tampilan MIDlet client<br />

Layar-layar yang digunakan pada MIDlet client yaitu :<br />

a. Tampilan Awal<br />

Merupakan layar pembuka awal aplikasi.<br />

b. Layar koneksi bluetooth<br />

Merupakan layar yang digunakan untuk menampilkan informasi<br />

inisialisasi pada local bluetooth telah berhasil dan pada layar ini<br />

user dapat melanjutkan proses berikutnya dengan memilih<br />

“connect” command untuk melakukan device dan service<br />

discovery pada server serta membuka data tiket yang tersimpan<br />

pada persistent storage pada telepon selular.<br />

c. Layar Searching<br />

Merupakan layar yang digunakan untuk menampikan informasi<br />

untuk menunggu proses device dan service discovery. Jika<br />

bluetooth device atau service server tidak ditemukan, maka layar<br />

ini akan menampilkan informasinya.<br />

d. Layar Login


Merupakan layar yang digunakan untuk menampilkan form<br />

login, dimana user dapat memasukkan data nomor pelanggan,<br />

username, password pada layar ini.<br />

e. Layar Menu Layanan<br />

Merupakan layat yang berisi daftar layanan yang terdiri dari<br />

menu pilihan, yaitu Pilih foodcourt dan menu atau View Pesanan<br />

f. Layar Daftar Foodcourt<br />

Berisi tampilan daftar nama-nama foodcourt yang aktif dan<br />

dikirim dari server.<br />

g. Layar Daftar Makanan<br />

Berisi tampilan daftar nama-nama makanan atau minuman yang<br />

aktif dan dikirim dari server yang sesuai dengan nama foodcourt<br />

yang dipilih.<br />

h. Layar Input Jumlah pesanan<br />

Tampilan untuk memasukkan jumlah pesanan sesuai dengan<br />

menu yang dipilih<br />

i. Layar daftar pesanan<br />

Merupakan tampilan dari pesanan yang telah dilakukan user.<br />

j. Layar input nomer meja<br />

Merupakan tampilan saat melakukan input teradap nomer meja.<br />

k. Layar pengiriman data pesanan<br />

Merupakan tampilah saat melakukan proses pengiriman pesanan<br />

ke server.<br />

l. Layar History pemesanan<br />

Tampilan untuk melihat pesanan yang lama.<br />

FoodCourt<br />

Client<br />

Back Select<br />

Siap<br />

melakukan<br />

koneksi….<br />

Pencarian<br />

Server….<br />

Username :<br />

Password :<br />

Option Back<br />

71


72<br />

Pilih Menu<br />

Makanan<br />

View Pesanan<br />

History<br />

Pesanan<br />

Option Select<br />

Pilih Menu<br />

Makanan<br />

View Pesanan<br />

History<br />

Pesanan<br />

Option Select<br />

Pilih Restoran:<br />

1. Hoka hoka<br />

Bento<br />

2. Jungle Juice<br />

3. Bakso Sedap<br />

Back Select<br />

Daftar Pesanan:<br />

Dorayaki 4<br />

Mie 2<br />

No Meja:<br />

Option Select<br />

Pilih Menu :<br />

Dorayak 20000<br />

Katsudon25000<br />

Mie 5000<br />

Back Select<br />

Confirmation<br />

Pesanan anda<br />

dg order ID 445,<br />

meja 5, sebesar<br />

Rp 110.000<br />

akan segera<br />

Kami antarkan.<br />

Terima Kasih<br />

Gambar 3.25 Design form pada aplikasi pelanggan (J2ME)<br />

Option Select<br />

Dorayaki 20000<br />

Jumlah :<br />

Back Select<br />

Berdasarkan rancangan dan desain pada gambar 3.21 dan<br />

gambar 3.22 maka hasil yang didapat adalah seperti Gambar 3.23<br />

Source code dibawah ini merupakan penggalan source yang<br />

digunakan untuk menampilkan proses pencarian perangkat.<br />

public void commandAction(Command c, Displayable d)<br />

{<br />

if (c == CONNECT_CMD && d == formMenuDisplay) {<br />

Form f = new Form("Pencarian...");<br />

f.addCommand(SEARCH_CANCEL_CMD);<br />

f.setCommandListener(this);<br />

f.append(new Gauge("Pencarian perangkat...",<br />

false, Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING));<br />

Display.getDisplay(parent).setCurrent(f);<br />

bc_client.searchRequest();<br />

return;<br />

}<br />

if (c == BACK_CMD) {<br />

destroy();<br />

parent.show(null);<br />

return;<br />

}<br />

if (c == BACK_LOGIN) {


}<br />

}<br />

bc_client.Send_Req(null, 0);<br />

parent.show(null);<br />

return;<br />

Gambar 3.26 Tampilan Aplikasi client di emulator<br />

saat Pencarian perangkat<br />

3.3.3.1.2 Koneksi Bluetooth MIDlet client<br />

Pada client, proses koneksi bluetooth diawali dengan<br />

melakukan inisialisasi pada local sevice, setelah itu melakukan<br />

device discovery untuk mencari bluetooth yang ada disekitarnya<br />

(Bluetooth Foodcourt server) kemudian melakukan service discovery<br />

untuk mencari informasi bagaimana untuk melakukan koneksi<br />

terhadap service pada setiap bluetooth yang ada.<br />

73


74<br />

Pilih menu<br />

melakukan koneksi<br />

ya<br />

tampilan awal<br />

pembatalan<br />

proses?<br />

ya<br />

User<br />

tidak<br />

tampilan error<br />

tampilan login<br />

pembatalan<br />

proses.?<br />

tidak<br />

tidak<br />

ya<br />

ya<br />

System Client<br />

Proses device<br />

discovery<br />

tidak<br />

bluetooth device<br />

ditemukan?<br />

proses service<br />

discovery<br />

bluetooth service<br />

ditemukan?<br />

Gambar 3.27 Activity diagram koneksi bluetooth client<br />

Pada proses inisialisasi pada local device untuk client sama<br />

dengan proses inisialisasi pada server, tetapi pada client terdapat<br />

tambahan yaitu terdapat objek DiscoveryAgent yang didapatkan dari<br />

objek LocalDevice. Objek DiscoveryAgent digunakan untuk proses<br />

device discovery dan service discovery. Source code untuk proses<br />

inisialisasi pada client adalah sebagai berikut :<br />

public void run() {<br />

boolean LbBlue_Ok = false;<br />

try {


LocalDevice localDevice =<br />

LocalDevice.getLocalDevice();<br />

discoveryAgent = localDevice.getDiscoveryAgent();<br />

LbBlue_Ok = true;<br />

} catch (Exception e) {<br />

System.err.println("Tidak dapat di<br />

inisialisasi...");<br />

}<br />

parent.completeInizialization(LbBlue_Ok);<br />

if (!LbBlue_Ok) {<br />

return;<br />

}<br />

…<br />

}<br />

Dalam sistem ini aplikasi yang dibuat, hanya ditujukan untuk<br />

menangani sistem pemesanan pada foodcourt dengan menggunakan<br />

bluetooth. Sehingga pada saat client melakukan proses inquiry,<br />

deviceDiscovered() yang dibutuhkan hanyalah Foodcourt<br />

Bluetooth server. Hal ini dapat dilakukan dengan cara men-setting<br />

langsung address dari Foodcourt Bluetooth server (BT_ADDRESS).<br />

public void deviceDiscovered(RemoteDevice<br />

remoteDevice, DeviceClass deviceClass) {<br />

int majorDeviceClass =<br />

deviceClass.getMajorDeviceClass();<br />

// Beberapa Bluetooth device telah ditemukan<br />

dalam pencarian<br />

if (devices.indexOf(remoteDevice) == -1) {<br />

if<br />

(remoteDevice.getBluetoothAddress().equals(BT_ADDRE<br />

SS) &&<br />

majorDeviceClass == 0x0100) {<br />

devices.addElement(remoteDevice);<br />

}<br />

}<br />

}<br />

75


76<br />

3.3.3.1.3 Proses Login Pada MIDlet Client<br />

Setelah client berhasil mencari Foodcourt Bluetooth Server<br />

dan melakukan koneksi terhadap server, proses berikutnya adalah<br />

proses login pada sebuah form Login. Proses ini adalah mengirimkan<br />

ID proses login, username dan password kepada server. Script dari<br />

form tersebut adalah sebagai berikut :<br />

//Tampilan Login //<br />

private final Form formLoginDisplay = new<br />

Form("Login");<br />

private final Command Login_Send_CMD = new<br />

Command("Kirim", Command.SCREEN, 2);<br />

private final Command Login_Back_CMD = new<br />

Command("Kembali", Command.BACK, 1);<br />

private final TextField username = new<br />

TextField("Username :", "", 9, TextField.ANY);<br />

private final TextField password = new<br />

TextField("Password :", "", 9, TextField.PASSWORD);<br />

formLoginDisplay.setTitle("Login");<br />

formLoginDisplay.append(username);<br />

formLoginDisplay.append(password);<br />

formLoginDisplay.addCommand(Login_Back_CMD);<br />

formLoginDisplay.addCommand(Login_Send_CMD);<br />

formLoginDisplay.setCommandListener(this);<br />

formSendData.setCommandListener(this);<br />

Source code diatas akan menampilkan form untuk melakukan proses<br />

login dan juga command listener untuk proses mengirimkan ID<br />

LOGIN_STATE, username dan password. Berikut adalah tampilan<br />

proses login di client<br />

Gambar 3.28 Tampilan login


3.3.3.1.4 Proses Menu Layanan, Daftar Foodcourt dan View<br />

Pesanan<br />

Jika proses login berhasil maka user akan mendapatkan<br />

tampilan berupa menu layanan. Menu layanan digunakan untuk<br />

melakukan pemilihan restoran dan menu atau melihat pesanan yang<br />

sudah di lakukan.<br />

tampilan menu<br />

layanan<br />

ya<br />

lihat<br />

restoran?<br />

DAFTAR_FOO<br />

DCOURT<br />

Data Pesanan<br />

tampilan hasil<br />

ya<br />

HISTORY_PE<br />

SANAN<br />

kirim data<br />

Client<br />

tidak<br />

ya<br />

lihat<br />

pesanan?<br />

tidak<br />

INPUT_KOMP<br />

LAIN<br />

lihat<br />

history?<br />

tidak<br />

ya<br />

tidak<br />

komplain?<br />

Serv er<br />

pengolahan<br />

data dari client<br />

kirim hasil<br />

pengolahan data<br />

Gambar 3.29 Activity diagram menu layanan<br />

Saat user memilih menu ”Pilih Restoran dan Menu” maka<br />

client akan mengirimkan string DAFTAR_FOODCOURT ke server<br />

untuk mendapatkan informasi mengenai daftra foodcourt yang aktif.<br />

Kemudian client akan menunggu proses pengiriman data. Data daftar<br />

77


78<br />

foodcourt yang diterima oleh client akan ditampilkan. Source code<br />

berikut ini untuk menampilkan daftar menu layanan yang memiliki<br />

dua buah sub menu. Serta source untuk menampilkan daftar<br />

foodcourt<br />

void TampilkanMenu(String[] xid) {<br />

menuDiplayFoodcourt = new List("MENU LAYANAN ("+<br />

momo +")", List.IMPLICIT);<br />

menuDiplayFoodcourt.append("1.Pilih Restoran dan<br />

Menu", null);<br />

menuDiplayFoodcourt.append("2.Lihat Pesanan",<br />

null);<br />

menuDiplayFoodcourt.append("3.History Pesanan",<br />

null);<br />

menuDiplayFoodcourt.append("4.Komplain", null);<br />

menuDiplayFoodcourt.addCommand(GET_FOODCOURT_CMD);<br />

menuDiplayFoodcourt.addCommand(BACK_LOGIN1);<br />

menuDiplayFoodcourt.setCommandListener(this);<br />

Display.getDisplay(parent).setCurrent(menuDiplayFoo<br />

dcourt);<br />

}<br />

void TampilanRestoran(String[]z){<br />

String[] tampilan;<br />

tempRestoran = z;<br />

menuTampilkanNama = new List("DAFTAR RESTORAN",<br />

List.IMPLICIT);<br />

for (int i = 0;i< z.length; i++){<br />

lokir(z[i]);<br />

tampilan = mindah;<br />

menuTampilkanNama.append(i+1 + " " +<br />

tampilan[1] , null);<br />

}<br />

menuTampilkanNama.addCommand(GET_<strong>MAKANAN</strong>_CMD);<br />

menuTampilkanNama.addCommand(BACK_MENU_CMD);<br />

menuTampilkanNama.setCommandListener(this);<br />

Display.getDisplay(parent).setCurrent(menuTampilkan<br />

Nama);<br />

}


Gambar 3.30 Tampilan menu layanan dan<br />

tampilan daftar restoran<br />

3.3.3.1.5 Proses Daftar Menu<br />

Pada proses ini menampilkan daftar menu makanan atau<br />

minuman sesuai dengan nama foodcourt yang dipilih. Data menu<br />

makanan didapatkan dari reply message server. Dari layar tampilan<br />

foodcourt dapat memilih menu makanan dan melakukan pemesanan.<br />

Client<br />

tampilan daftar<br />

restoran<br />

Pilih Nama<br />

Restoran<br />

kirim data : DAFTAR_MENU;<br />

idFoodcourt<br />

tampilan menu<br />

makanan / minuman<br />

Serv er<br />

Cek Data dari<br />

client<br />

proses daftar<br />

menu<br />

kirim data<br />

menu<br />

Gambar 3.31 Activity diagram proses menu makanan<br />

79


80<br />

Command yang dipakai pada layar nama foodcourt yaitu :<br />

“Pilih” dan “Back”. Pada command “Pilih” akan melakukan proses<br />

pengiriman request message pada server untuk mendapatkan reply<br />

message dari server yang berupa data daftar menu makanan atau<br />

minuman. Untuk command “Back” akan melakukan proses untuk<br />

kembali ke layar dafar makanan. Yang di tampilkan dari tampilan<br />

menu makanan adalah nama makanan dan juga harganya per porsi.<br />

Source code tampilan daftar makanan :<br />

void TampilanMakanan(String[] food){<br />

String[] tampilan; tempFood = food;<br />

menuTampilMakanan = new List("Daftar<br />

Makanan", List.IMPLICIT);<br />

for (int i = 0; i< food.length; i++){<br />

lokir(food[i]);<br />

tampilan = mindah;<br />

menuTampilMakanan.append(i+1 + " " +<br />

tampilan[1] + " - " + tampilan[2], null);}<br />

menuTampilMakanan.addCommand(DO_PESAN_CMD);<br />

menuTampilMakanan.addCommand(BACK_FOODCOURT_CM<br />

D);<br />

menuTampilMakanan.setCommandListener(this);<br />

Display.getDisplay(parent).setCurrent(menuTamp<br />

ilMakanan); }<br />

Gambar 3.32 Tampilan daftar menu makanan


3.3.3.1.6 Proses Input Pesanan<br />

Isi dari layar input pesanan terdiri atas informasi makanan,<br />

dan textfield untuk memasukkan benyaknya pesanan yang dipilih<br />

oleh pelanggan. Berikut ini source code untuk menampilkan input<br />

pesanan.<br />

void TampilanPesan(int indeks){<br />

String isine;<br />

String[] pecah;<br />

isine = tempFood[indeks];<br />

lokir(isine);<br />

pecah = mindah;<br />

buffFood= mindah;<br />

StringItem as = new StringItem(null,<br />

pecah[1] + " - " + pecah[2]);<br />

inputPesanan = new Form("Masukkan Pesanan");<br />

inputPesanan.append(as);<br />

txtJmlh = new TextField("Jumlah : ", "", 3,<br />

TextField.NUMERIC);<br />

inputPesanan.append(txtJmlh);<br />

inputPesanan.addCommand(GET_PESAN_CMD);<br />

inputPesanan.addCommand(BACK_<strong>MAKANAN</strong>_CMD);<br />

inputPesanan.setCommandListener(this);<br />

Display.getDisplay(parent).setCurrent(inputPesanan)<br />

;<br />

}<br />

Gambar 3.33 Tampilan input jumlah<br />

81


82<br />

3.3.3.1.7 Proses Komplain<br />

Proses ini digunakan untuk melakukan komplain kepada<br />

foodcourt, data komplain dikirimkan dari client ke server. Client<br />

akan mengirimkan data kondisi INPUT_KOMPLAIN + id pelanggan<br />

+ isi komplain. Kemudia reply message dari server berisi Id<br />

Komplain yang telah di masukkan ke dalam database.<br />

Client<br />

tampilan menu<br />

layanan<br />

Pilih Komplain<br />

kirim data : INPUT_KOMPLAIN;<br />

idPelanggan;isiKomplain<br />

tampilan komplain telah<br />

diterima<br />

Serv er<br />

Cek Data dari<br />

client<br />

proses input<br />

client<br />

kirim data id<br />

komplain<br />

Gambar 3.34 Activity diagram proses komplain<br />

Source code yang digunakan untuk membuat tampilan input<br />

komplain adalah sebagai berikut. Dan tampilannya dapat dilihat pada<br />

gambar 3.35<br />

inputKomplain = new Form("Masukkan Komplain");<br />

txtKomplain = new<br />

TextField("Isi Komplain : ", "", 150,<br />

TextField.ANY);<br />

inputKomplain.append(txtKomplain);<br />

inputKomplain.addCommand(SEND_KOMPLAIN_CMD);<br />

inputKomplain.addCommand(BACK_MENU_CMD);


inputKomplain.setCommandListener(this)<br />

Display.getDisplay(parent).setCurrent(inputKomplain<br />

);<br />

Gambar 3.35 Tampilan input komplain<br />

3.3.3.2 <strong>APLIKASI</strong> CLIENT PADA RESTORAN<br />

Gambar 3.36 Sistem akses menu makanan oleh restoran<br />

Dalam sistem aplikasi menu pemesanan makanan, pada<br />

masing-masing restoran terdapat sebuah komputer yang melakukan<br />

akses kepada server. Proses yang dilakukan pertama kali adalah<br />

melakukan login, setelah itu restoran akan melakukan request data<br />

pesanan kepada server.<br />

83


84<br />

3.3.3.2.1 User Interface web<br />

Web untuk aplikasi foodcourt client restoran di buat dengan<br />

menggunakan bahasa pemrograman PHP. Menu-menu yang ada pada<br />

web terdiri dari beberapa macam yang berfungsi untuk melakukan<br />

proses transaksi dan administrasi. Proses pada aplikasi web terbagi<br />

menjadi dua bagian yaitu untuk menangani pembayaran (kasir) dan<br />

menangani pesanan (foodcourt). Untuk lebih jelasnya dapat dilihat<br />

pada gambar 3.37 yang merupakan bagan dari menu-menu yang<br />

tersedia pada web.<br />

Gambar 3.37 Menu atau link yang tersedia pada<br />

web foodcourt client restoran<br />

3.3.3.2.2 Login<br />

Login digunakan untuk keamanan dan juga membedakan<br />

hak akses dari masing-masing user. Sehingga tampilan yang di<br />

tampilkan pada proses setelah login dapat diatur sesuai dengan hak<br />

akses-nya. Login berfungsi untuk membagi username dan password


sesuai dengan Nama Foodcourt atau sebagai Kasir. Source code<br />

untuk proses login adalah sebagai berikut<br />

<br />

Login Gagal<br />

<br />

Pada gambar 3.38 merupakan tampilan dari form login untuk<br />

aplikasi web. Dari tampilan tersebut, terlihat bahwa terdapat combo<br />

box untuk melakukan pemilihan nama restoran dan terdapat text box<br />

untuk memasukkan username dan password.<br />

85


86<br />

Gambar 3.38 Login web foodcourt client restoran<br />

3.3.3.2.3 Kasir<br />

Kasir menangani proses pembayaran. Setelah pelanggan<br />

melakukan pemesanan dan mendapatkan ID Pesan, maka selanjutnya<br />

adalah melakukan pembayaran ke kasir. Di kasir akan tampak daftar<br />

para pelanggan yang telah melakukan pesanan dan terlihat mana saja<br />

yang sudah membayar dan belum membayar. Jika pelanggan belum<br />

membayar maka yang tampil pada kolom status adalah warna merah<br />

dengan huruf ”B” dan jika pelanggan sudah membayar maka yang<br />

tampil pada kolom status adalah huruf ”L”. Seperti pada gambar<br />

3.39, maka pada kasir juga memiliki menu untuk melihat,<br />

menambah, dan melakukan edit terhadap data pelanggan, restoran<br />

dan user.


N<br />

N<br />

Start<br />

Buka aplikasi<br />

restoran<br />

Login<br />

Login Kasir<br />

OK?<br />

Y<br />

Start Monitoring<br />

pesanan<br />

Ada Pesanan<br />

Baru?<br />

Y<br />

N<br />

Tampil Id<br />

Pesan, Nomer<br />

Meja, Total<br />

Bayar<br />

Pembayaran<br />

Pembayaran<br />

Lunas?<br />

Y<br />

Set Lunas<br />

Cetak Bon<br />

End<br />

Gambar 3.39 Flowchart proses pembayaran di kasir<br />

Sebagian source code untuk membuat proses kasir adalah<br />

sebagai berikut.<br />


88<br />

echo "";<br />

echo "<br />

NoTanggalID<br />

PesanMeja<br />

PelangganTotal BayarMAC<br />

Address<br />

StatusDetil";<br />

$i=1;<br />

while ($r=mysql_fetch_array($aio))<br />

{<br />

if ($i%2 == 1){ $warna='#E6E6E6'; }<br />

else { $warna='#CFD9FF'; }<br />

echo "".$i."";<br />

echo "".$r[Tanggal]."";<br />

echo "".$r[ID_Pesan]."";<br />

echo "".$r[No_Meja]."";<br />

echo "".$r[Nama_Pelanggan]."";<br />

echo "".$r[Total_Bayar]."";<br />

echo "".$r[Pengenal]."";<br />

if ($r[Status] == 1){<br />

$tulisanstatus = "L";<br />

echo "".$tulisanstatus."";<br />

} else {<br />

$tulisanstatus = "B";<br />

echo "".$tulisanstatus."";<br />

}<br />

echo "


target='_blank'> Detil";<br />

echo '';<br />

$i++; }<br />

?><br />

…<br />

Hasil implementasi dari proses-proses pembayaran yang terjadi di<br />

kasir tampak seperti pada tampilan gambar 3.40 berikut ini.<br />

Gambar 3.40 Tampilan kasir<br />

3.3.2.4 Foodcourt<br />

Aplikasi restoran akan menampilkan daftar pesanan<br />

pelanggan. Jika pelanggan melakukan pemesanan ke restoran 1,<br />

maka data daftar pesanan itu akan masuk ke dalam waiting list<br />

restoran 1, kemudian jika pesanan pelanggan sudah dilayani maka<br />

pesanan itu akan di set statusnya menjadi sudah dilayani dan akan<br />

hilang dari daftar waiting list restoran 1. Proses yang terjadi pada<br />

89


90<br />

aplikasi restoran dapat digambarkan dalam flowchart gambar 3.41<br />

berikut ini:<br />

N<br />

N<br />

Start<br />

Buka aplikasi<br />

restoran<br />

Login<br />

Login OK?<br />

Y<br />

Start Monitoring<br />

pesanan<br />

Ada<br />

Pesanan?<br />

Y<br />

N<br />

Tampilkan<br />

daftar pesanan<br />

Pesanan<br />

selesai?<br />

Y<br />

Set sudah<br />

dilayani<br />

End<br />

Gambar 3.41 Flowchart aplikasi foodcourt client restoran<br />

Berikut ini merupakan source code yang menangani proses pada<br />

foodcourt:<br />

…<br />


tb_detil_pesan.Tanggal_Jam_Selesai,<br />

tb_pelanggan.Nama_Pelanggan FROM tb_foodcourt<br />

Inner Join tb_menu ON tb_foodcourt.ID_Foodcourt =<br />

tb_menu.ID_Foodcourt<br />

Inner Join tb_detil_pesan ON tb_menu.ID_Menu =<br />

tb_detil_pesan.ID_Menu<br />

Inner Join tb_pesan ON tb_pesan.ID_Pesan =<br />

tb_detil_pesan.ID_Pesan<br />

Inner Join tb_pelanggan ON<br />

tb_pelanggan.ID_Pelanggan = tb_pesan.ID_Pelanggan<br />

WHERE tb_foodcourt.ID_Foodcourt =<br />

'$_SESSION[idfoodcourt]' AND<br />

tb_detil_pesan.Tanggal_Jam_Pesan >= curdate() ORDER<br />

BY tb_detil_pesan.Tanggal_Jam_Pesan DESC";<br />

$aio=mysql_query($sss);<br />

echo "Daftar<br />

Pesanan";<br />

echo "";<br />

echo "<br />

NoPelangganNo Meja<br />

Tanggal Jam PesanTanggal Jam<br />

Selesai<br />

Nama MenuHargaJumlah<br />

Total HargaStatus ";<br />

$i=1;<br />

while ($r=mysql_fetch_array($aio))<br />

{<br />

if<br />

($nomermeja==$r[No_Meja]){$warna='#E6E6E6'; }<br />

else{ $warna='#CFD9FF'; }<br />

if ($nomermeja==$r[No_Meja]){<br />

echo "";<br />

echo "&nbsp;";<br />

echo "&nbsp;";<br />

echo "&nbsp;";<br />

echo "&nbsp;";<br />

echo "&nbsp;";<br />

} else {<br />

echo "";<br />

91


92<br />

$nomermeja=$r[No_Meja];<br />

echo "".$i."";<br />

echo "".$r[Nama_Pelanggan]."";<br />

echo "".$r[No_Meja]."";<br />

echo "".$r[Tanggal_Jam_Pesan]."";<br />

echo "".$r[Tanggal_Jam_Selesai]."";<br />

$i++;<br />

$nomermeja=$r[No_Meja];<br />

}<br />

echo "".$r[Nama_Menu]."";<br />

echo "".$r[Harga]."";<br />

echo "".$r[Jumlah]."";<br />

echo "".$r[Total_Harga]."";<br />

if ($r[sttspesan] == 0){<br />

$bss=" ";}<br />

else{<br />

$bss=" ";}<br />

if ($r[sttsdetil] == 1){<br />

$tulisanstatus = "OK";<br />

echo "$bss".$tulisanstatus."";<br />

} else {<br />

$tulisanstatus = "NOT OK";<br />

echo "$bss".<br />

$tulisanstatus."";s<br />

}<br />

echo ''; }}<br />

?><br />


Gambar 3.42 Tampilan daftar pesanan foodcourt<br />

3.3.2.5 Komplain<br />

Aplikasi web juga menampilkan daftar komplain yang<br />

dikirimkan oleh pelanggan.<br />


94<br />

if ($i%2 == 1){<br />

$warna='#E6E6E6'; }<br />

else{<br />

$warna='#CFD9FF';<br />

}<br />

echo "".$i."";<br />

//echo "".$r[Tanggal_Komplain]."";<br />

$tgl_b=substr("$r[Tanggal_Komplain]",8,2);<br />

$bln_b=substr("$r[Tanggal_Komplain]",5,2);<br />

$thn_b=substr("$r[Tanggal_Komplain]",0,4);<br />

$jame=substr("$r[Tanggal_Komplain]",10,9);<br />

echo "$tgl_b-$bln_b-<br />

$thn_b $jame";<br />

echo "".$r[Nama_Pelanggan]."";<br />

echo "".$r[Isi_Komplain]."";<br />

}<br />

...<br />

Gambar 3.43 Tampilan daftar komplain


BAB 4<br />

UJICOBA <strong>DAN</strong> ANALISA<br />

Aplikasi untuk sistem pemesanan makanan pada foodcourt<br />

dengan memanfaatkan bluetooth pada telepon selular terdiri atas<br />

aplikasi pada server (komputer), aplikasi MIDlet pada client<br />

pelanggan (telepon selular) dan aplikasi Web PHP pada client<br />

restoran. Oleh karena itu pengujian akan dilakukan pada ketiga<br />

aplikasi pada saat pengolahan data, modifikasi data, dan proses<br />

komunikasi client-server via bluetooth.<br />

4.1 Aplikasi Server (desktop)<br />

4.1.1 Tampilan Server<br />

Gambar 4.1 Tampilan Server<br />

Pada gambar 4.1. dapat dilihat bahwa layanan yang tersedia<br />

di server terdiri dari File, Koneksi, Foodcourt dan About dimana<br />

pada bagian File berisi sub menu exit untuk keluar aplikasi, Koneksi<br />

berisikan jenis koneksi yang akan dipilih, dalam kasus ini Bluetooth,<br />

Foodcourt berisikan sub menu Add Foodcourt untuk menambahkan<br />

restoran baru. Sedangkan pada bagian Help, berisikan sub menu<br />

About dan sub menu info hanya berisikan mengenai data dari<br />

pembuat program ini.<br />

95


96<br />

4.1.2 Tampilan Koneksi<br />

Pada gambar 4.2. merupakan tampilan yang akan muncul<br />

ketika dipilih Bluetooth pada Connection. Dan ketika menekan<br />

mulai, maka server akan secara otomatis menunggu apakah ada<br />

client yang mencoba untuk koneksi dengan server dan menggunakan<br />

layanan yang ditawarkan.<br />

Gambar 4.2 Tampilan koneksi Bluetooth<br />

4.1.3 Tampilan Add Foodcourt<br />

Aplikasi server memiliki fasilitas untuk mendaftarkan nama<br />

foodcourt yang baru. Tampilan form pada gambar 4.3 ini digunakan<br />

untuk melakukan input data terhadap foodcourt yang baru.


Gambar 4.3 Tampilan sub menu add foodcourt<br />

4.2 Aplikasi Client Pelanggan (mobile)<br />

Tampilan yang ada tentunya dipengaruhi oleh jenis dari mobile<br />

device yang digunakan. Mobile device yang dapat menjalankan<br />

layanan ini adalah yang merupakan MIDP 2.0. Namun sebelumnya<br />

layanan ini harus terlebih dahulu di install di mobile device yang ada.<br />

Gambar 4.4 Tampilan shortcut client dan tampilan awal<br />

Gambar 4.4 merupakan tampilan saat installasi dan tampilan<br />

awal dari layanan Foodcout Client pada mobile device. Pada gambar<br />

97


98<br />

4.4 belum terjadi proses koneksi dan pengiriman data baik dari<br />

server maupun dari client.<br />

4.3 Aplikasi Client Restoran dan Kasir (web)<br />

4.3.1 Tampilan Login<br />

Tampilan yang muncul saat pertama kali melakukan akses ke<br />

aplikasi web adalah tampilan login. Sebelum melakukan prosesproses<br />

yang lain, yang harus dilakukan terlebih dulu adalah proses<br />

login.<br />

Gambar 4.5 Form login aplikasi web foodcourt client<br />

4.3.2 Tampilan Web Foodcourt Restoran<br />

Jika user melakukan login ke sistem foodcourt restoran,<br />

maka yang akan tampil adalah tampilan daftar pesanan yang harus<br />

dilayani oleh restoran, dan menu-menu yang tersedia adalah : Daftar<br />

Pesanan, Daftar Menu, History Daftar Pesanan. Daftar Pesanan berisi<br />

pesanan yang terjadi pada hari itu.


Gambar 4.6 Tampilan daftar pesanan<br />

Pada Daftar Menu berisi nama-nama menu yang disediakan<br />

oleh restoran, disini user bisa melakukan perubahan harga,<br />

menambah menu dan melakukan aktifasi maupun deaktifasi dari<br />

menu makanan atau minuman yang disediakan oleh restoran.<br />

Gambar 4.7 Tampilan daftar menu<br />

History pesanan berisi daftar pesanan yang telah lalu, jika<br />

pada Daftar Pesanan hanya berisi pesanan pada hari ini. Maka pada<br />

History Daftar Pesanan berisi seluruh data pesanan yang harus<br />

dilayani oleh restoran.<br />

99


100<br />

Gambar 4.8 Tampilan history daftar pesanan<br />

4.3.3 Tampilan Web Foodcourt Kasir<br />

Jika user melakukan login ke sistem foodcourt kasir, maka<br />

yang akan tampil adalah tampilan daftar pembayaran yang harus<br />

dilayani oleh kasir, dan menu-menu yang tersedia adalah : Kasir,<br />

Daftar Pelanggan, Daftar Restoran, Daftar User.<br />

Menu kasir berisi pesanan yang harus melakukan pembayaran yang<br />

terjadi pada hari itu. Gambar dolar ($) berwarna merah dengan huruf<br />

“B” pada kolom status menunjukkan bahwa pelanggan belum<br />

melakukan pembayaran. Sedangkan gambar dolar ($) dengan warna<br />

kuning dengan huruf “L” menunjukkan bahwa pelanggan telah<br />

melakukan pembayaran dan lunas.<br />

Gambar 4.9 Tampilan kasir


101<br />

Pada Daftar Pelanggan berisi nama-nama pelanggan yang<br />

terdaftar dalam sistem pemesanan bluetooth. Di dalam menu daftar<br />

pelanggan, user bisa melakukan penambahan pelanggan baru. Proses<br />

aktifasi dan juga deaktifasi pelanggan juga bisa dilakukan di sini.<br />

Sehingga pelanggan yang statusnya non aktif tidak bisa melakukan<br />

pemesanan.<br />

Gambar 4.10 Tampilan daftar pelanggan<br />

Daftar Restoran berisi daftar restoran yang ada di dalam<br />

foodcourt. Di sini user bisa melakukan aktifasi dan deaktifasi<br />

restoran. User juga dapat melakukan penambahan restoran baru.<br />

Gambar 4.11 Tampilan daftar restoran<br />

Daftar user berisi daftar nama-nama user atau pegawai yang<br />

berhak melakukan akses terhadap web foodcourt.


102<br />

Gambar 4.12 Tampilan daftar user<br />

4.4 Proses Komunikasi Client Server<br />

Pada pengujian komunikasi client-server terdiri atas proses<br />

Bluetooth Discovery dan proses-proses yang berkaitan dengan<br />

proses transaksi untuk pemesanan makanan. Ketika ingin<br />

memanfaatkan layanan yang ada, maka perlu melakukan proses<br />

koneksi dengan server. Dimana client akan berusaha mencari apakah<br />

ada server yang ada di sekitarnya. Proses ini terus berjalan sampai<br />

client terhubung dengan server Berikut ini adalah diagram blok<br />

proses komunikasi client server.<br />

Gambar 4.13 Diagram komunikasi client server


103<br />

4.4.1 Proses Discovery Bluetooth<br />

Dalam membangun komunikasi client-server, client akan<br />

melakukan device discovery dan service discovery, sedangkan pada<br />

server akan menyediakan service untuk koneksi dengan client.<br />

Server akan menunggu koneksi dari client, apabila client telah<br />

menemukan bluetooth device dan service maka koneksi client-server<br />

akan terbangun dan pada MIDlet client akan menampilkan form<br />

untuk login. Proses discovery client pada server ditunjukkan pada<br />

gambar 4.14<br />

Gambar 4.14 Proses discovery pada server dan client<br />

Apabila client tidak menemukan server bluetooth device,<br />

maka layar search (proses pencarian) akan menampilkan pesan ”No<br />

Bluetooth Service Found” yang menunjukkan bahwa server<br />

bluetooth device tidak ditemukan. Pesan tersebut juga tampil jika<br />

client sudah menemukan server tetapi service yang di maksudkan<br />

tidak tersedia.


104<br />

Gambar 4.15 Proses server atau service tidak ditemukan<br />

4.4.2 Proses Login<br />

Pada proses login pelanggan akan mengisi form login untuk<br />

selanjutnya MIDlet client akan mengirimkan ke server. Jika data<br />

pada form login tidak di isi secara lengkap atau ada salah satu data<br />

yang kosong maka akan muncul alert bahwa Login tidak lengkap<br />

sehingga data tidak bisa dikirim ke server.<br />

Gambar 4.16 Login tidak lengkap<br />

Apabila ada salah satu data login (username, dan password)<br />

yang dikirimkan oleh client salah pada saat validasi login, maka<br />

server akan mengirimkan pesan bahwa login invalid. Sehingga<br />

aplikasi MIDlet client akan menampilkan alert bahwa username atau<br />

password salah.


Gambar 4.17 Login yang dilakukan client invalid<br />

105<br />

Apabilia data login yang dikirimkan oleh client valid, maka<br />

server akan mengirimkan data bahwa login valid dan kemudian<br />

client akan menampilkan pada layar sebuah MENU LAYANAN<br />

yang dapat dilihat pada gambar 4.18.<br />

Gambar 4.18 Proses login yang valid pada client dan server


106<br />

4.4.3 Proses Daftar Restoran<br />

Menu layanan yang memiliki beberapa macam menu. Saat<br />

pelanggan memilih menu ”Pilih Restoran dan Menu” maka client<br />

akan mengirimkan data permintaan DAFTAR_FOODCOURT ke<br />

server. Kemudian server akan mengirimkan data pada client yang<br />

berupa data nama-nama restoran yang aktif dan MIDlet client akan<br />

menampilkan daftar restoran tersebut pada layar daftar restoran. Dari<br />

sini pelanggan akan memilih nama restoran untuk melihat menu<br />

makanan atau minuman yang tersedia.<br />

Gambar 4.19 Proses Daftar Restoran<br />

4.4.4 Proses Daftar Menu<br />

Setelah daftar restoran ditampilkan, selanjutnya pelanggan<br />

memilih salah satu nama restoran yang tersedia untuk melihat menu<br />

makanan atau minuman yang bisa di pesan. Proses yang terjadi<br />

adalah client mengirimkan permintaan DAFTAR_MENU dari<br />

restoran yang dipilih, kemudian server akan membalas dengan<br />

mengirimkan data daftar makanan atau minuman sesuai dengan<br />

permintaan client.


Gambar 4.20 Proses daftar makanan atau minuman<br />

107<br />

4.4.5 Proses Masukkan Jumlah Pesanan<br />

Setelah memilih menu, selanjutnya adalah memasukkan<br />

jumlah pesanan. Jumlah pesanan harus dimasukkan dengan benar .<br />

Jika data jumlah pesanan yang di inputkan salah maka akan tampil<br />

alert seperti pada gambar 4.21<br />

Gambar 4.21 Proses memasukkan jumlah pesanan salah


108<br />

Jika jumlah pesanan dimasukkan dengan benar, maka akan muncul<br />

info yang memberitahukan bahwa pesanan tersebut sudah<br />

dimasukkan dalam daftar pesanan, seperti terlihat pada gambar 4.22<br />

berikut ini.<br />

Gambar 4.22 Proses pesanan telah ditambahkan<br />

4.4.6 Proses Menu Lihat Pesanan<br />

Pada menu lihat pesanan akan ditampilkan nama-nama<br />

makanan yang telah di pesan dan di kelompokkan berdasarkan nama<br />

foodcourt. Selain itu juga terdapat jumlah total yang harus<br />

dibayarkan.<br />

Gambar 4.23 Proses lihat pesanan


109<br />

Jika pemilihan menu makanan belum dilakukan maka yang muncul<br />

adalah tampilan kosong berupa tulisan bahwa pesanan belum<br />

dilakukan.<br />

Gambar 4.24 Proses lihat pesanan kosong<br />

4.4.7 Proses Pengiriman Transaksi Pesanan ke Server<br />

Jika pesanan yang dilakukan pelanggan sudah selesai,<br />

kemudian pelanggan melihat isi pesanan yang telah dilakukannya di<br />

menu Lihat Pesanan. Maka yang dilakukan selanjutnya adalah<br />

mengirimkan pesanan ke server. Sebelum pengiriman transaksi<br />

pesanan dilakukan, pelanggan akan dimintai nomer meja terlebih<br />

dulu seperti gambar 4.25 berikut ini.<br />

Gambar 4.25 Proses input nomer meja


110<br />

Setelah nomer meja dimasukkan maka pesanan akan di<br />

kirimkan ke server. Data akan dimasukkan ke dalam database,<br />

kemudian diakses oleh kasir dan masing-masing restoran.<br />

Gambar 4.26 Proses pengiriman pesanan<br />

Setelah proses input pesanan selesai, maka server akan<br />

mengirimkan data berupa ID Pesanan, yang kemudian client akan<br />

manampilkan konfirmasi yang menunjukkan bahwa pesanan telah<br />

diterima dan segera di layani. Pesanan yang telah dikirimkan ke<br />

server, akan di tampilkan di kasir. Yang ditampilkan adalah tanggal,<br />

id Pesan, nomer meja, nama pelanggan, total bayar, MAC Address<br />

dan status pembayaran. Jika pembayaran belum dilakukan, maka<br />

yang keluar adalaha gambar dolar($) berwarna merah dengan huruf<br />

”B”, seperti pada gambar 4.27.


Gambar 4.27 Tampilan kasir, pelanggan belum membayar<br />

111<br />

Pelanggan yang telah memesan akan, melakukan<br />

pembayaran ke kasir, kemudian jika pelanggan telah membayar<br />

maka pada kolom status, yang muncul adalah gambar dolar($)<br />

berwarna kuning dengan huruf ”L”, seperti pada gambar 4.28.<br />

Gambar 4.28 Tampilan kasir, pelanggan sudah membayar


112<br />

Selain tampil pada kasir, pesanan yang baru saja dilakukan oleh<br />

pelanggan juga tampil di restoran. Pesanan yang belum dilayani oleh<br />

restoran statusnya akan berwarna merah. Namun Setelah dilayani<br />

maka statusnya akan berubah menjadi OK.<br />

Gambar 4.29 Tampilan Foodcourt belum bayar belum dilayani<br />

Gambar 4.30 Tampilan Foodcourt sudah bayar belum dilayani


Gambar 4.31 Tampilan Foodcourt sudah bayar sudah dilayani<br />

113<br />

4.4.8 Proses History Pesanan<br />

History pesanan merupakan menu yang digunakan untuk<br />

melihat pesanan yang pernah dilakukan oleh pelanggan. Namun<br />

history yang dapat ditampilkan hanya lima buah history terbaru.<br />

Gambar 4.32 Proses history pesanan


114<br />

4.4.9 Proses Detil History<br />

Detil history digunakan untuk melihat isi pesanan yang<br />

pernah dilakukan sesuai dengan ID pesanannya. Server akan<br />

melakukan query sesuai dengan ID pesanan yang di kirimkan oleh<br />

client. Yang ditampilkan pada detil history adalah ID pesanan, total<br />

pembelian, jumlah pembelian, dan nama-nama menu yang dipesan.<br />

Tampilan detil history dikelompokkan berdasarkan nama restoran.<br />

Gambar 4.33 Tampilan Detil History server-client<br />

4.4.10 Proses Komplain<br />

Proses komplain digunakan oleh client untuk melakukan<br />

komplain terhadap foodcourt. Komplain yang diterima server akan<br />

ditampilkan di halaman web. Halaman web akan menampilkan<br />

banyaknya komplain dengan warna merah. Dan jika link komplain di<br />

klik maka akan muncul daftar komplain.


Gambar 4.34 Tampilan input komplain<br />

115<br />

Komplain yang telah ditangani diberi status ”OK” sedangkan<br />

komplain yang belum ditangani akan memiliki status ”NOK”.<br />

Komplain dapat dilihat oleh kasir maupun oleh restoran.<br />

Gambar 4.35 Tampilan halaman komplain


116<br />

4.5 Hasil percobaan Multi User<br />

Proses pengujian pada koneksi Multi client ke server pada saat<br />

yang bersamaan, dengan USB bluetooth dongle dihubungkan ke PC<br />

(Personal Computer), jarak client ke server adalah maksimal sampai<br />

10 meter dan tanpa penghalang. Untuk melakukan pengujian ini di<br />

gunakan beberapa jenis handphone yaitu: Nokia E50, Nokia 6120,<br />

dan Sony Ericsson K530i.<br />

Percobaan<br />

Tabel 4.1 Pengujian waktu pencarian perangkat<br />

menggunakan HP Sony Ericsson K530i<br />

Proses Pencarian Perangkat (detik)<br />

1m 2m 5m 7m 10m<br />

1 14,7 14,1 14,6 14 Error<br />

2 13,9 14 13,9 error 17,4<br />

3 13,8 13,9 13,9 26,5 14<br />

4 13,9 13,9 13,9 13,9 21,7<br />

5 13,9 13,9 13,9 14 13,6<br />

Rata-rata 14,04 13,96 14,04 17,1 16,675<br />

Percobaan<br />

Tabel 4.2 Pengujian waktu pencarian perangkat<br />

menggunakan HP Nokia E50<br />

Proses Pencarian Perangkat (detik)<br />

1m 2m 5m 7m 10m<br />

1 16,2 15 14,7 14,4 15,6<br />

2 14,6 14,5 14,7 error 14,5<br />

3 14,3 14,3 14,7 15,2 14,7<br />

4 14,3 14,6 14,2 14,6 14,9<br />

5 14,2 14,6 14,6 14,6 14,5<br />

Rata-rata 14,72 14,6 14,58 14,7 14,84<br />

Dari data tabel 4.1 dan tabel 4.2 terlihat bahwa proses pencarian<br />

perangkat tergantung kepada merk HP yang digunakan. Berdasakan


117<br />

rata-rata waktu pencarian perangkat, penggunaan HP Sony Ericsson<br />

lebih cepat namun tidak terlalu stabil, sedangkan Nokia lebih stabil<br />

walaupun agak lambat 0,475 detik.<br />

Percobaan<br />

Tabel 4.3 Pengujian transfer data client server<br />

Transfer Data (detik)<br />

1m 2m 5m 7m 10m<br />

1 2,4 3 3 3,1 3,2<br />

2 2,8 3,4 3,4 3,3 3,4<br />

3 3,5 3,2 3,3 3,4 3,4<br />

4 3 3,1 3,4 3,2 3,2<br />

5 3,1 3,1 3,1 3,1 3,3<br />

Rata-rata 2,96 3,16 3,24 3,22 3,3<br />

Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak 2<br />

meter<br />

Percobaan<br />

Pencarian Perangkat Transfer Data<br />

E50 K530i 6120 E50 K530i 6120<br />

1 18,2 14,2 14 2,8 2,5 3<br />

2 15 14,1 15,5 3,4 2,4 3,4<br />

3 14,8 14 14,4 3,3 2,6 3,2<br />

4 14,8 13,9 14,3 3,4 2,4 3,1<br />

5 14,8 14 14,3 3,4 2,4 3,1<br />

Rata-rata 15,52 14,04 14,5 3,26 2,46 3,16<br />

Jika dilihat dari hasil pengujian yang ditunjukkan pada tabel 4.3 dan<br />

4.4, koneksi satu client dengan server dibandingkan koneksi antara<br />

tiga client dengan server menunjukkan perbedaan waktu yang tidak<br />

terlalu mencolok, hal ini dikarenakan penggunaan koneksi<br />

RFCOMM untuk membangun komunikasi client-server via<br />

bluetooth, dimana RFCOMM merupakan komunikasi point-to-point<br />

yang dapat menangani sampai tujuh client secara bersamaan tetapi<br />

koneksinya dilakukan satu-persatu seperti antrian, sehingga waktu


118<br />

yang diperlukan untuk antara client satu dengan yang lain adalah<br />

berbeda walaupun pengiriman data dari client ke server adalah<br />

secara bersamaan. Layanan bluetooth ini mempunyai karakteristik<br />

dimana 1 bluetooth dongle hanya dapat diakses oleh 7 user.<br />

Mengingat bahwa foodcourt memiliki jumlah pengunjung yang<br />

banyak, maka salah satu cara agar semua pengunjung dapat<br />

menikmati layanan ini adalah disiapkan server lebih dari 1. Hal ini<br />

dikarenakan 1 server hanya dapat memiliki 1 bluetooth dongle.<br />

Pembatasan jumlah bluetooth dongle pada server bertujuan agar<br />

tidak terjadi bentrok pada saat pengiriman dan penerimaan data dari<br />

client yang berbeda


BAB V<br />

PENUTUP<br />

5.1 KESIMPULAN<br />

Berdasarkan hasil ujicoba perangkat lunak dalam pengerjaan<br />

tugas akhir ini, dapat diambil beberapa kesimpulan yaitu:<br />

1. Untuk membangun koneksi antara komputer dan telepon<br />

seluler menggunakan bluetooth dapat digunakan bahasa<br />

pemrograman JAVA. Perangkat lunak pada telepon seluler<br />

dibuat menggunakan J2ME, aplikasi ini akan dipasang di<br />

telepon selular. Syarat dari telepon seluler yang akan di<br />

gunakan adalah harus mendukung MIDP2.0 dan bluetooth<br />

API (JSR-82). Sedangkan untuk membuat perangkat lunak<br />

pada komputer diperlukan Java Bluetooth Stack dengan<br />

menggunakan Microsoft Bluetooth Stack API dan BlueCove.<br />

Microsoft Bluetooth Stack API adalah sebuah socket-style<br />

atau lebih sering disebut dengan WinSock. Stack ini adalah<br />

sebuah aplikasi untuk mengoperasikan generic USB<br />

Bluetooth Dongle.<br />

2. Sistem pemesanan makanan dan minuman dengan<br />

menggunakan bluetooth ini terdiri dari tiga buah aplikasi,<br />

yaitu server (J2SE), client pelanggan (J2ME), dan client<br />

restoran(Web). Yang memiliki fitur untuk melihat daftar<br />

restoran, melihat daftar menu dan harga, melakukan<br />

pemesanan, melihat pesanan, melayani pembayaran, serta<br />

melihat pesanan yang harus dilayani.<br />

3. Transaksi pemesanan makanan dan minuman dapat berjalan<br />

dengan baik, dimana menu makanan dan minuman masingmasing<br />

restoran yang ada di foodcourt dapat diakses oleh<br />

pelanggan. Transaksi pembayaran dapat di layani oleh kasir<br />

dan pesanan dapat dipantau dan dilayani dengan baik oleh<br />

restoran.<br />

4. Layanan pengaksesan pemesanan makanan dan minuman<br />

menggunakan Bluetooth ini, dapat diakses oleh setiap user<br />

yang memiliki mobile device dengan kemampuan Bluetooth.<br />

119


120<br />

Tentunya harus mendukung teknologi Java MIDP 2.0 serta<br />

Java APIs for Bluetooth Wireless Technology (JSR)<br />

5. Jarak rentang kerja bluetooth antara client-server sampai<br />

sejauh 10 meter tidak menurunkan performa transfer data<br />

untuk transaksi pemesanan.<br />

6. Waktu yang diperlukan oleh seorang user untuk mengakses<br />

server (melakukan request data dan menerima replay data)<br />

dengan menggunakan koneksi RFCOMM, dipengaruhi oleh<br />

jumlah user yang sedang mengakses server tersebut.<br />

5.2 SARAN<br />

Untuk perbaikan dan pengembangan aplikasi ini di masa yang<br />

akan datang, disarankan untuk :<br />

1. Komunikasi client-server diperlukan acknowledge untuk<br />

mengetahui sukses tidaknya data yang dikirim oleh client<br />

maupun server.<br />

2. Sistem pemesanan menggunakan media bluetooth bisa di<br />

kembangkan dengan mengganti atau menambah media<br />

komunikasinya menggunakan protokol TCP/IP dengan<br />

memanfaatkan WIFI atau langsung menggunakan jaringan<br />

internet (GPRS, EDGE, 3G).<br />

3. Penambahan Sistem Informasi Manajemen untuk foodcourt<br />

sehingga aplikasi yang dibuat menjadi lebih sempurna.<br />

4. Diperlukan proses enkripsi data pada request message dan<br />

reply message yang bertujuan untuk kerahasiaan data, dan<br />

juga diperlukan proses otentikasi yang bertujuan untuk<br />

mengetahui keaslian data.


DAFTAR PUSTAKA<br />

121<br />

[1]. Shalahuddin, M dan Rosa AS. “Pemrograman J2ME<br />

Belajar Cepat Pemrograman Perangkat Telekomunikasi<br />

Mobile”, Informatika, Bandung 2008.<br />

[2]. Raharjo, Budi, Imam Heryanto dan Arif Aryono.<br />

“Tuntunan Pemrograman JAVA Untuk Handphone”,<br />

Informatika, Bandung 2007.<br />

[3]. Hopkins, Bruce and Ranjith Antony. “Bluetooth for Java”,<br />

Apress, New York 2003<br />

[4]. Kadir, Abdul. “Dasar Pemrograman Web Dinamis<br />

Menggunakan PHP”, Andi, Yogyakarta 2002.<br />

[5]. Murthi, Philipus Bayu. “Sistem Keamanan Bluetooth”,<br />

2004.<br />

<br />

[6]. Wikipedia, February 2007. BLUETOOTH<br />

<br />

[7]. Ortiz, C, and Enrique. “Using the Java APIs for Bluetooth<br />

Wireless Technology Part 1 - API Overview”, Desember<br />

2004,<br />


{Halaman ini sengaja dikosongkan}<br />

122


BIODATA PENULIS<br />

Miftakh Arkhan Zein Taptozani<br />

TTL :<br />

Pendidikan :<br />

SD Negeri Klakah 01 ( 1991 - 1997)<br />

Lumajang, 11 April 1985.<br />

E-mail :<br />

z31nt@yahoo.com<br />

mzeint@gmail.com<br />

Blogg :<br />

SLTPN 1 Sukodono Lumajang (1997 - 2000)<br />

http://z31nt.wordpress.com<br />

http://mif2.blogspot.com<br />

SMK Telekomunikasi Sandhy Putra Malang (2002 - 2005)<br />

Joint Program D4 (PENS-ITS,VEDC Malang) Jurusan Teknik<br />

Informatika (2005 – 2009)<br />

Selama dua tahun sebelum masuk ke SMK, penulis menjadi anak jalanan<br />

yang kemudian bertobat dan melanjutkan sekolah. Menjelang kuliah-kuliah<br />

akhir, penulis melakukan aktifitas kuliah sambil bekerja selama satu<br />

setengah tahun untuk mengatasi kejenuhan kuliah. Penulis bercita-cita<br />

menjadi pengusaha dan memiliki Yayasan sosial untuk anak-anak yatim dan<br />

kurang mampu. Semoga Allah Al Ghoniy Al Halim memberi ridho,<br />

kekuatan dan kemudahan. Amin<br />

115

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!