You are on page 1of 138

PROYEK AKHIR

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH

MIFTAKH ARKHAN ZEIN TAPTOZANI NRP. 74 05 040 730

Dosen Pembimbing: Yuliana Setyowati, S.Kom, M.Kom Harits Ar Rosyid, S.T, M.T

JURUSAN TEKNIK INFORMATIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2009

PROYEK AKHIR

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH

SOFTWARE DEVELOPMENT OF MOBILE APPLICATION ON FOOD AND BEVERAGE ORDERING SYSTEM USING J2ME AND BLUETOOTH

Miftakh Arkhan Zein Taptozani NRP. 74 05 040 730

Dosen Pembimbing : Yuliana Setyowati, S.Kom, M.Kom NIP. 19780706.200212.2.003 Harits Ar Rosyid, S.T, M.T

JURUSAN TEKNIK INFORMATIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2009

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH
PROYEK AKHIR Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Sains Terapan pada Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Oleh:

MIFTAKH ARKHAN ZEIN TAPTOZANI


NRP. 74 05 040 730 Disetujui oleh: Tim Penguji Proyek Akhir: Dosen Penguji I Dosen Pembimbing: Dosen Pembimbing I

Kholid Fathoni, S.Kom NIP. 19801226.2008121.2.003 Dosen Penguji II

Yuliana Setyowati, S.Kom, M.Kom NIP. 19780706.200212.2.003 Dosen Pembimbing II

Siyamta, S.Pd, S.ST, M.T NIP. 19740926.200212.1.002 Dosen Penguji III

Harits Ar Rosyid, S.T, M.T

Farid Zuniawan, ST Mengetahui, Ketua Jurusan Teknologi Informasi Arna Fariza, S.Kom., M.Kom NIP. 19710708.199903.2.001

ii

PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH Nama Mahasiswa NRP Jurusan Dosen Pembimbing : : : : MIFTAKH ARKHAN ZEIN TAPTOZANI 74 05 040 730 Teknik Informatika 1. YULIANA SETYOWATI, S.Kom, M.Kom 2. HARITS AR ROSYID, S.T, M.T

Abstrak
Penggunaan media bluetooth dan J2ME untuk restoran akan memudahkan proses pemesanan dan administrasi, karena untuk media alat tulis dan kertas untuk pemesanan makanan dan minuman menemui kendalakendala antara lain adanya pemesanan yang rangkap (redudansi), tidak urutnya pembuatan pemesanan akibat bertumpuk nya nota pemesanan terutama pada saat ramai pengunjung. Aplikasi pemesanan makanan dan minuman via bluetooth merupakan implementasi dari Java API (Application Programming Interface) bluetooth (JSR-82) yang bertujuan untuk memberikan solusi alternatif untuk pemesanan makanan dan minuman di foodcourt dengan menggunakan telepon selular. Aplikasi ini terdiri dari dua bagian yaitu aplikasi bluetooth server pada komputer dan aplikasi MIDlet bluetooth client pada telepon selular yang mendukung JSR-82. Tipe jaringan bluetooth yang digunakan adalah piconet. Aturan komunikasi client-server yaitu client mengirimkan request message pada server dan server akan membalas dengan reply message ke client. Berdasarkan hasil pengujian lama waktu koneksi untuk pencarian perangkat antara client dengan server berkisar antara 13,2 - 15,5 detik. Sedangkan untuk transfer data berkisar antara 2 - 4 detik. Fitur-fitur yang tersedia pada aplikasi ini melihat daftar restoran, melihat daftar menu dan harga, melakukan pemesanan, melihat pesanan, melayani pembayaran, serta melihat pesanan yang harus dilayani. Dengan menggunakan aplikasi ini, pengguna dapat melakukan pemesanan makanan dan minuman dengan mudah dan nyaman Kata kunci : Bluetooth, Pemesanan Makanan, Java, Telepon Selular

iii

SOFTWARE DEVELOPMENT OF MOBILE APPLICATION ON FOOD AND BEVERAGE ORDERING SYSTEM USING J2ME AND BLUETOOTH Name Student ID Departement Promotor : : : : MIFTAKH ARKHAN ZEIN TAPTOZANI 74 05 040 730 Informatics Engineering 1. YULIANA SETYOWATI, S.Kom, M.Kom 2. HARITS AR ROSYID, S.T, M.T

Abstract
The usage of bluetooth and J2ME for restaurant will facilitate the ordering process and administration, because the uses of paper and stationery for the ordering food and beverage meet constraints, for example the redundancy of ordering which have double order, inappropriate between ordering and result because the cumulative effect of ordering note, especially at the time when many visitors come. The food and beverage ordering via bluetooth application is implementation of Java API (Application Programming of Interface) bluetooth (JSR-82) to give alternative solution for the ordering of food and beverage in foodcourt by using cellular telephone. This application consist of two shares that is bluetooth server application at computer and MIDlet bluetooth client at cellular telephone with JSR-82 support. Network topology of bluetooth is use piconet. Communications process between client-server is client deliver request message to server and server will reciprocate with reply message to client. From the trial result, time to make connection for the searching bluetooth devices between client and server is with range from 13,2 to 15,5 second. While to the data transfer is with range from 2 to 4 second. Fitures that available at this application is see restaurant list, see menu list and price, do ordering food or drink, see order, serving payment, and also see order which must serve. By using this application, consumer can do food and beverafe ordering easily and balmy. Keyword : Bluetooth, Ordering food system, Java, cellular telephone

iv

KATA PENGANTAR

Alhamdulillah wa syukrulillah wash-shalatu wassalaamu alaa Rasulillah, Sayyidina Muhammadin waala alihi wa shahbihi wa sallim. Segala puji dan syukur, kehadirat Allah SWT yang telah memberikan rahmat, cinta dan hidayah-Nya sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul: PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH Buku tugas akhir ini disusun dan diajukan sebagai salah satu syarat untuk menyelesaikan program pendidikan Diploma IV di Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Surabaya. Dalam penyusunan Tugas Akhir ini, penulis berusaha untuk menerapkan ilmu yang telah didapat selama menjalani perkuliahan dengan tidak terlepas dari petunjuk, bimbingan, bantuan dan dukungan dari berbagai pihak. Tentu saja, dibalik semua usaha yang telah dilakukan, penulis menyadari bahwa masih banyak kekurangan di dalam penyusunan buku laporan proyek akhir ini, untuk itu penulis mohon maaf dan mengharapkan saran saran serta kritik yang membangun dari pembaca. Dan tentunya semoga buku ini dapat bermanfaat agar dapat menghasilkan sumber daya manusia yang berkualitas, Amien. Malang, Juli 2009

Penulis

UCAPAN TERIMA KASIH


Dalam kesempatan ini penulis hendak menyampaikan penghormatan dan terima kasih yang sebesar-besarnya kepada pihakpihak yang telah memberi bantuan moral, material maupun spiritual secara langsung maupun tidak langsung, yaitu kepada: 1. Allah SWT dan Rasul-Nya Nabi Muhammad SAW. 2. Mursyid serta guru-guru yang kuhormati dan cintai. Semoga Allah senantiasa memberikanku manfaat dari berkah guruguruku dan semoga Allah mencurahkan kesejahteraan dan rahmat-Nya kepada Syekh Muhammad Nazim Adil Al Haqqani, Syekh Muhammad Hisyam Kabbani, Syekh Muhammad Adnan Kabbani, Syekh Mustofa Masud dan Syekh Muhammad Sholeh Hudi Muhyiddin Al Amin. 3. Ayah, Ibu dan adik-adik tercinta, yang selalu memberikan kasih sayang, pendidikan, pengarahan, pengawasan, dukungan dan doa kepada penulis. 4. Ibu Yuliana Setyowati S.Kom, M.Kom. dan Bapak Harits Ar Rosyid, S.T, M.T selaku dosen pembimbing, yang telah memberikan ide, masukan dan koreksi kepada penulis dalam menyusun Tugas Akhir ini. 5. Segenap Bapak dan Ibu dosen Jurusan Teknik Informatika Joint Program BA Malang dan Politeknik Elektronika ITS Surabaya atas segala kesabaran dan keikhlasannya dalam memberikan bimbingan, didikan dan perhatian serta ilmunya kepada penulis. 6. Iffa Zulfana, terima kasih atas perhatian dan kesabarannya. 7. Teman-teman Begundal Tomini 24, begur aang, hadi mesum, gatut pak dhe, kakek udun fajar, mouse rio, hafez, nenjap, inoyla, mbah farul, pras terima kasih atas persahabatan, kebersamaan, canda tawa, susah senang, dan semangat kekeluargaannya. 8. Teman-teman teamwork di server pulsa, terima kasih atas semua pengalaman yang tak terlupakan. 9. Teman-teman seangkatan V dan semua teman yang tidak dapat penulis sebutkan satu per satu, terima kasih atas semangat dan kebersamaannya. vi

DAFTAR ISI
HALAMAN JUDUL HALAMAN PENGESAHAN ................................ ............... ii ABSTRAK ................................ ................................ ............ iii ABSTRACT ................................ ................................ .......... iv KATA PENGANTAR ................................ ........................... v UCAPAN TERIMA KASIH ................................ ................. vi DAFTAR ISI ................................ ................................ ......... vii DAFTAR GAMBAR ................................ ............................ xi DAFTAR TABEL ................................ ................................ . xiv BAB I PENDAHULUAN 1.1. Latar Belakang ................................ ......................... 1.2. Tujuan ................................ ................................ ...... 1.3. Rumusan Masalah ................................ .................... 1.4. Batasan Masalah ................................ ....................... 1.5. Metodologi ................................ ............................... 1.6. Sistematika Pembahasan ................................ .......... BAB II TEORI PENUNJANG 2.1. Teknologi Bluetooth................................ .................. 2.1.1. Spesifikasi Bluetooth................................ ....... 2.1.2. Bluetooth Protokol Stack ................................ 2.1.2.1 Jaringan Bluetooth................................ ......... 2.1.2.2 Profile Bluetooth ................................ ........... 2.2. Java ................................ ................................ .......... 2.2.1. J2SE (Java 2 Second Edition) .......................... 2.2.2. J2ME (Java 2 Micro Edition) .......................... 2.2.2.1. Configuration................................ ................ 2.2.2.2. Profile ................................ ........................... 2.2.2.3. Optional Package................................ .......... 2.2.2.4. MIDP................................ ............................ 2.2.2.5. MIDlet ................................ .......................... 2.2.2.5.1. Siklus MIDlet ................................ ............ 2.2.3. Library Pendukung ................................ .......... vii

1 2 2 2 3 4

5 5 6 7 8 9 10 11 12 13 14 14 15 16 16

2.3. JAVA API FOR BLUETOOTH WIRELESS TECHNOLOGY (JABWT) ................................ ...... 2.3.1. JABWT Package ................................ ............. 2.3.2. Device Management API Pada JABWT .......... 2.3.2.1. Local Device................................ ................. 2.3.2.2. Remote Device ................................ ............. 2.3.2.3. Device Class ................................ ................. 2.3.2.4. Pencarian Device dan Service Pada JABWT (device and service discovery)................................ ... 2.3.2.5. Discovery Agent ................................ ........... 2.3.2.6. Service Record................................ .............. 2.3.2.7. Komunikasi Bluetooth Menggunakan RFCOMM ................................ ................................ . 2.4. DATABASE................................ .............................. 2.4.1. Entity Relation Diagram (ERD)....................... 2.4.2. Structured Query Language (SQL) .................. 2.4.3. Primary Key ................................ .................... 2.4.4. Foreign Key ................................ ..................... 2.4.5. MySQL ................................ ............................ 2.5. CLIENT SERVER ................................ ................... 2.5.1. Karakteristik Client Server .............................. 2.5.2. Keuntungan Dan Kerugian Arsitektur Client Server ................................ ............................. BAB III PERANCANGAN DAN IMPLEMENTASI PERANGKAT LUNAK 3.1. DESKRIPSI UMUM ................................ ................ 3.2. PERANCANGAN DATABASE APLIKASI ........... 3.3. PERANCANGAN DAN IMPLEMENTASI SISTEM APLIKASI MENU PEMESANAN MAKANAN ..... 3.3.1. KOMUNIKASI CLIENT SERVER ................ 3.3.1.1. Sequnce Login ................................ .............. 3.3.1.2. Sequence Daftar Foodcourt .......................... 3.3.1.3. Sequence Daftar Menu ................................ . 3.3.1.4. Sequence Input Pesanan................................ 3.3.1.5. Sequence History dan Detil History.............. viii

17 19 21 21 22 23 23 24 25 27 28 29 30 31 32 32 32 34 34

37 38 42 42 43 44 44 45 46

3.3.1.6. Sequence Input Pesanan ............................... 47 3.3.2. APLIKASI SERVER PADA KOMPUTER ... 47 3.3.2.1. User Interface Server ................................ .... 51 3.3.2.2. Koneksi Bluetooth Pada Server .................... 52 3.3.2.3. Koneksi Database Pada Server ..................... 57 3.3.2.4. Proses Login ................................ ................. 57 3.3.2.5. Proses Daftar Foodcourt ............................... 59 3.3.2.6. Proses Daftar Menu ................................ ...... 61 3.3.2.7. Proses Pemesanan Makanan dan Minuman .. 62 3.3.2.8. Proses Komplain................................ ........... 63 3.3.3. APLIKASI CLIENT ................................ ........ 65 3.3.3.1. Aplikasi CLIENT PADA PELANGGAN .... 66 3.3.3.1.1. User Interface MIDlet client ...................... 70 3.3.3.1.2. Koneksi Bluetooth MIDlet client............... 73 3.3.3.1.3. Proses Login Pada MIDlet client ............... 76 3.3.3.1.4. Proses Menu Layanan, Daftar Foodcourt, dan View Pesanan ................................ ............................ 77 3.3.3.1.5. Proses Daftar Menu ................................ ... 79 3.3.3.1.6. Proses Input Pesanan ................................ . 81 3.3.3.1.7. Proses Komplain................................ ........ 82 3.3.3.2. APLIKASI CLIENT PADA RESTORAN ... 83 3.3.3.2.1. User Interface Web ................................ .... 84 3.3.3.2.2. Login ................................ ......................... 84 3.3.3.2.3. Kasir ................................ .......................... 86 3.3.3.2.4. Foodcourt ................................ .................. 89 3.3.3.2.5. Komplain ................................ ................... 93 BAB IV UJI COBA DAN EVALUASI 4.1. Aplikasi Server (desktop)................................ .......... 4.1.1. Tampilan Server ................................ ............. 4.1.2. Tampilan Koneksi................................ ............ 4.1.3. Tampilan Add Foodcourt................................ . 4.2. Aplikasi Client Pelanggan (mobile)........................... 4.3. Aplikasi Client Restoran dan Kasir (web) ................ 4.3.1. Tampilan Login ................................ .............. 4.3.2. Tampilan Web Foodcourt Restoran ................. 4.3.3. Tampilan Web Foodcourt Kasir....................... ix

95 95 96 96 96 98 98 98 99

4.4. Proses Komunikasi Client Server .............................. 102 4.4.1. Proses Discovery Bluetooth ............................ 103 4.4.2. Proses Login ................................ .................... 104 4.4.3. Proses Daftar Restoran................................ ..... 106 4.4.4. Proses Daftar Menu ................................ ......... 106 4.4.5. Proses Masukkan Jumlah Pesanan................... 107 4.4.6. Proses Menu Lihat Pesanan ............................. 108 4.4.7. Proses Pengiriman Transaksi Ke Server .......... 109 4.4.8. Proses History Pesanan................................ .... 113 4.4.9. Proses Detil History................................ ......... 114 4.4.10. Proses Komplain................................ ........... 114 4.5. Hasil Percobaan Multi User................................ ....... 116 BAB V PENUTUP 5.1. Kesimpulan ................................ .............................. 119 5.2. Saran ................................ ................................ ......... 120 DAFTAR PUSTAKA ................................ .......................... 121 RIWAYAT HIDUP ................................ ............................. 122

DAFTAR GAMBAR
Gambar 2.1 Bluetooth protocol stack ................................ .... Gambar 2.2 Topologi jaringan bluetooth ............................... Gambar 2.3 Platform java ................................ ...................... Gambar 2.4 Arsitektur JAVA................................ ................. Gambar 2.5 Daur hidup MIDlet ................................ ............. Gambar 2.6 Struktur paket JSR82 ................................ .......... Gambar 2.7 One to one relationship................................ ....... Gambar 2.8 One to many relationship................................ .... Gambar 2.9 Many to many relationship ................................ . Gambar 2.10 Arsitektur umum client server .......................... Gambar 3.1 Gambaran umum aplikasi pemesanan makanan . Gambar 3.2 Rancangan database................................ ............ Gambar 3.3 Sequence proses login................................ ......... Gambar 3.4 Sequence daftar foodcourt ................................ .. Gambar 3.5 Sequence daftart menu................................ ........ Gambar 3.6 Sequence inpur pesanan................................ ...... Gambar 3.7 Sequence history................................ ................. Gambar 3.8 Sequence input komplain................................ .... Gambar 3.9 Activity diagram server ................................ ...... Gambar 3.10 Class diagram aplikasi server............................ Gambar 3.11 Design form pada aplikasi server (J2SE).......... Gambar 3.12 Hasil user interface aplikasi server (J2SE)........ Gambar 3.13 Sequence bluetooth connection......................... Gambar 3.14 Log koneksi aplikasi server (J2SE)................... Gambar 3.15 Activity diagram proses login........................... Gambar 3.16 Activity diagram daftar foodcourt..................... Gambar 3.17 Activity diagram daftar makanan...................... Gambar 3.18 Activity diagram input pesanan ........................ Gambar 3.19 Activity diagram proses komplain .................... Gambar 3.20 Use case diagram aplikasi client....................... Gambar 3.21 Activity diagram aplikasi client (J2ME)........... Gambar 3.22 Sistem akses menu makanan oleh pelanggan.... Gambar 3.23 Class diagram aplikasi client J2ME.................. Gambar 3.24 Blok diagram tampilam MIDlet client .............. xi 6 8 10 12 16 18 30 30 30 33 37 38 43 44 45 45 46 47 49 50 51 52 53 56 58 60 61 62 64 65 67 68 69 70

Gambar 3.25 Design form pada aplikasi pelanggan (J2ME) .. 72 Gambar 3.26 Tampilan aplikasi client di emulator .............. 73 Gambar 3.27 Activity diagram koneksi bluetooth client ........ 74 Gambar 3.28 Tampilan login................................ .................. 76 Gambar 3.29 Activity diagram menu layanan ........................ 77 Gambar 3.30 Tampilan menu layanan dan tampilan restoran. 79 Gambar 3.31 Activity diagram proses menu makanan ........... 79 Gambar 3.32 Tampilan daftar menu makanan........................ 80 Gambar 3.33 Tampilan input jumlah................................ ...... 81 Gambar 3.34 Activity diagram proses komplain .................... 82 Gambar 3.35 Tampilan input komplain................................ .. 83 Gambar 3.36 Sistem akses makanan oleh makanan................ 83 Gambar 3.37 Menu atau link yang tersedia pada web foodcourt client restoran................................ ......................... 84 Gambar 3.38 Login web foodcourt ................................ ........ 86 Gambar 3.39 Flowchart proses pembayaran di kasir .............. 87 Gambar 3.40 Tampilan kasir ................................ .................. 89 Gambar 3.41 Flowchart aplikasi foodcourt client restoran..... 90 Gambar 3.42 Tampilan daftar pesanan foodcourt................... 93 Gambar 3.43 Tampilan daftar komplain................................ . 94 Gambar 4.1 Tampilan server ................................ .................. 95 Gambar 4.2 Tampilan koneksi bluetooth................................ 96 Gambar 4.3 Tampilan sub menu add foodcourt...................... 97 Gambar 4.4 Tampilan shortcut client dan tampilan awal........ 97 Gambar 4.5 Form login aplikasi web foodcourt client............ 98 Gambar 4.6 Tampilan daftar pesanan................................ ..... 99 Gambar 4.7 Tampilan daftar menu................................ ......... 99 Gambar 4.8 Tampilan history daftar pesanan......................... 100 Gambar 4.9 Tampilan kasir ................................ .................... 100 Gambar 4.10 Tampilan daftar pelanggan................................ 101 Gambar 4.11 Tampilan daftar restoran................................ ... 101 Gambar 4.12 Tampilan daftar user ................................ ......... 102 Gambar 4.13 Diagram komunikasi client server .................... 102 Gambar 4.14 Proses discovery pada server dan client............ 103 Gambar 4.15 Proses server atau service tidak ditemukan....... 104 Gambar 4.16 Login tidak lengkap ................................ .......... 104 xii

Gambar 4.17 Login yang dilakukan client invalid.................. Gambar 4.18 Proses login yang valid pada client dan server.. Gambar 4.19 Proses daftar restoran................................ ........ Gambar 4.20 Proses daftar makanan atau minumann............. Gambar 4.21 Proses memasukkan jumlah pesanan salah....... Gambar 4.22 Proses pesanan telah dilakukan......................... Gambar 4.23 Proses lihat pesanan................................ .......... Gambar 4.24 Proses lihat pesanan kosong ............................. Gambar 4.25 Proses input nomer meja................................ ... Gambar 4.26 Proses pengiriman pesanan............................... Gambar 4.27 Tampilan kasir,pelanggan belum membayar..... Gambar 4.28 Tampilan kasir, pelanggan sudah membayar .... Gambar 4.29 Tampilan foodcourt belum bayar belum dilayani ................................ ................... Gambar 4.30 Tampilan foodcourt sudah bayar belum dilayani................................ .................... Gambar 4.31 Tampilan foodcourt sudah bayar sudah dilayani................................ ..................... Gambar 4.32 Proses history pesanan................................ ...... Gambar 4.33 Tampilan detil history server-client .................. Gambar 4.34 Tampilan input komplain................................ .. Gambar 4.35 Tampilan halaman komplain.............................

105 105 106 107 107 108 108 109 109 110 111 111 112 112 113 113 114 115 115

xiii

DAFTAR TABEL
Tabel 2.1 Kelas-kelas bluetooth ................................ ............. 5 Tabel 2.2 Platform java ................................ .......................... 11 Tabel 2.3 Interface pada javax.bluetooth package .................. 19 Tabel 2.4 Class pada javax.bluetooth package ....................... 20 Tabel 2.5 Exception pada javax.bluetooth package ................ 20 Tabel 3.1 tb_komplain................................ ............................ 39 Tabel 3.2 tb_detil_pesanan................................ ..................... 39 Tabel 3.3 tb_foodcourt ................................ ........................... 40 Tabel 3.4 tb_menu................................ ................................ .. 40 Tabel 3.5 tb_pegawai ................................ ............................. 40 Tabel 3.6 tb_pelanggan ................................ .......................... 41 Tabel 3.7 tb_pembayaran ................................ ....................... 41 Tabel 3.8 tb_pesan................................ ................................ .. 41 Tabel 3.9 tb_meja................................ ................................ ... 42 Tabel 4.1 Pengujian waktu pencarian perangkat menggunakan HP Sony Ericsson K530i................................ ........................ 116 Tabel 4.2 Pengujian waktu pencarian perangkat menggunakan HP Nokia E50 ................................ ................................ ........ 116 Tabel 4.3 Pengujian transfer data client server....................... 117 Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak 2 meter........................................................................................... 117

xiv

BAB I PENDAHULUAN
1.1 LATAR BELAKANG Perkembangan teknologi saat ini telah memberikan pengaruh yang sangat besar bagi dunia teknologi informasi dan telekomunikasi. Munculnya beragam aplikasi memberikan pilihan dalam peningkatan kinerja suatu pekerjaan, baik yang besifat dekstop based, web baseb hingga yang sekarang ini munculnya aplikasi-aplikasi baru yang berjalan dalam mobile device/handphone. Pemilihan mobile device/handphone untuk salah satu pengembangan aplikasi selain lebih mudah dalam pengoperasiannya, sifat dari handphone yang fleksibel menjadi salah satu alasannya. Saat ini muncul teknologi baru dimana komunikasi tanpa menggunakan kabel, seperti dengan menggunakan media bluetooth pada handphone. Sebagai pendatang baru yang sudah mulai popular didunia komunikasi data wireless, bluetooth mulai memberikan beberapa solusi dan layanan yang bisa diimplementasikan dalam kehidupan sehari-hari. Bluetooth merupakan teknologi yang berkembang sebagai jawaban atas kebutuhan komunikasi antar perlengkapan elektronik agar dapat saling mempertukarkan data dalam jarak yang terbatas menggunakan gelombang radio dengan frekuensi 2,4 GHz. Salah satu implementasi bluetooth yang populer adalah pada peralatan handphone yang digunakan untuk pertukaran data. Penggunaan media bluetooth dan J2ME untuk restoran akan memudahkan proses pemesanan dan administrasi, karena untuk media alat tulis dan kertas untuk pemesanan makanan dan minuman menemui kendala-kendala antara lain adanya pemesanan yang rangkap (redudansi), tidak urutnya pembuatan pemesanan akibat bertumpuk nya nota pemesanan terutama pada saat ramai pengunjung.

2 Aplikasi dikembangkan menggunakan J2ME, sehingga aplikasi menu pemesanan makanan adalah platform bebas yang dapat berjalan di setiap mobile phone yang mendukung JAVA API yang dibutuhkan. 1.2 TUJUAN Tujuan dari proyek akhir ini adalah : 1. Membangun koneksi antar komputer dengan telepon seluler menggunakan bluetooth. 2. Membuat suatu aplikasi menu pemesanan makanan di sebuah foodcourt. 3. Aplikasi memungkinkan para pelanggan foodcourt untuk melihat semua menu dan harganya. 4. Pelanggan dapat melakukan pemesanan makanan secara langsung melalui handphone-nya masing-masing dan data pesanan tersebut akan langsung dikirim ke bagian server untuk diteruskan kepada restoran. 1.3 RUMUSAN MASALAH Berdasarkan latar belakang, rumusan masalah yang terdapat pada proyek akhir ini adalah sebagai berikut: 1. 2. 3. Bagaimana proses perencanaan dan perancangan client? Bagaimana proses perencanaan dan perancangan server? Bagaimana proses implementasi aplikasi ini pada device mobile yang sebenarnya?

1.4 BATASAN MASALAH Adapun batasan masalah dalam pembangunan Proyek Akhir ini adalah sebagai berikut : 1. Karena sistem ini menggunakan bluetooth, maka terdapat keterbatasan range mobilitas handphone sesuai dengan daerah cakupan yang mampu dijangkau oleh bluetooth. 2. Program ini hanya berjalan pada handphone yang memiliki profil dan konfigurasi Java ME dan didukung bluetooth API. 3. Pelanggan harus terdaftar sebagai member untuk menjalankan aktifitas pemesanan makanan melalui handphone.

3 4. Foodcourt memiliki pembayaran (kasir) yang terpusat pada satu kasir. 5. Tidak membahas tentang Sistem Informasi Manajemen Foodcourt. 6. Tidak membahas tentang keamanan (security) didalam aplikasi yang dibuat. 1.5 METODOLOGI Metodologi pembahasan pada proyek akhir ini direncanakan seperi berikut: 1. Pemahaman Sistem dan Studi Literatur Mempelajari proses bisnis yang terjadi dan juga berbagai macam literatur tentang konsep-konsep yang berkaitan dengan rumusan masalah, termasuk di dalamnya mempelajari API-API pada Java ME yang berkaitan dengan pembuatan tugas akhir. 2. Penampungan dan analisis data Dalam tahap ini akan dilakukan penampungan dan analisis terhadap data-data yang dibutuhkan. 3. Perancangan Perangkat Lunak Tahap ini merupakan tahapan analisis dan desain perangkat lunak yang akan dikembangkan dengan mengacu pada proses bisnis dan data yang telah diperoleh dan dianalisa pada tahapan sebelumnya. 4. Implementasi Pada tahap ini akan dilakukan proses pembuatan perangkat lunak yang akan dikembangkan. 5. Uji coba dan Evaluasi Melakukan Uji coba dan evaluasi prototipe perangkat untuk mencari masalah yang mungkin timbul, mengevaluasi jalannya program, dan mengadakan perbaikan jika ada kekurangan. 6. Pembuatan Buku Tugas Akhir Pada tahap terakhir ini disusun buku sebagai dokumentasi dari pelaksanaan Tugas Akhir.

4 1.6 SISTEMATIKA PEMBAHASAN Buku laporan proyek akhir ini terdiri dari 5 bab dengan perincian sebagai berikut : Bab I : Bab ini menjelaskan tentang latar belakang, rumusan masalah, tujuan, metodologi pengerjaan dan sistematika penulisan proyek akhir. Bab II : Bab ini menjelaskan tentang landasan teori yang mendukung pembuatan proyek akhir. Bab III : Bab ini menjelaskan tentang rancangan dan pembuatan sistem yang meliputi perancangan database, perancangan sistem, dan user interface. Bab IV : Bab ini menjelaskan pengujian dan analisa sistem apakah hasil yang telah ditetapkan sesuai dengan tujuan perancangan. Bab V : Bab ini menjelaskan tentang kesimpulan dan saran dari hasil pengamatan dan analisa terhadap sistem yang telah dibuat.

BAB II TEORI PENUNJANG


2.1 TEKNOLOGI BLUETOOTH Teknologi Bluetooth dikembangkan oleh Bluetooth Special Interest Group (SIG) yang diprakarsai oleh perusahaan-perusahaan besar yaitu companies 3Com, Ericsson, Intel, IBM, Agere, Microsoft, Motorola, Nokia dan Toshiba. Bluetooth telah didesain bagi alat komunikasi personal yang mendukung komunikasi tanpa kabel(wireless) seperti pada mobile phone maupun PDA dengan jarak sampai 10 kilometer. Bluetooth adalah sebuah protokol komunikasi yang beroperasi pada frekuensi 2.4 GHz. Sinyal dari bluetooth adalah omni-directional serta dapat menerima data dan juga suara. Device yang mendukung komunikasi bluetooth dapat dengan mudah menemukan koneksi dan juga berkomunikasi dengan device yang lain secara otomatis. Bluetooth dapat digunakan untuk mengirim file, membangun sebuah jaringan tertentu, sinkronisasi data, mengkoneksikan sekitar misalnya dengan hands-free kits dan juga digunakan untuk gaming. Sesuai dengan power serta jangkauannya,bluetooth terbagi menjadi 3 kelas: Tabel 2.1 Kelas-kelas Bluetooth Maksimum Power yang Jangkauan Maksimal diijinkan 100 mW (20 dBm) 2,5 mW(4dBm) 1 mW (0 dBm) 100 meter 10 meter 1 meter

Kelas Kelas 1 Kelas 2 Kelas 3 2.1.1

Spesifikasi Bluetooth Bluetooth spesifikasi di sini mengacu pada Java Specification Request 82 (JSR-82) dan juga Symbian Bluetooth API, mendefinisikan API-API yang terdapat dalam protokol bluetooth. 5

6 2.1.2 Bluetooth Protocol Stack Bluetooth Protocol Stack secara umum dapat dibagi menjadi dua komponen yaitu: Bluetooth Host dan Bluetooth Controller yang disebut juga Bluetooth Radio. Bluetooth Protocol Stack terdiri dari protokol-protokol yang sejak dikembangkan sudah dimilikinya yaitu protokol L2CAP dan SDP, serta protokol lain hasil dari adopsi yaitu OBEX. Selain itu Bluetooth Protocol Stack dapat dibagi menjadi empat layer sesuai dengan peruntukannya, sesuai dengan yang ditunjukkan didalam gambar.

Gambar 2.1 Bluetooth Protocol Stack Baseband yang berfungsi untuk mengaktifkan phisical RF sehingga Bluetooth dapat membuat koneksi. Link Manager Protocol (LMP) adalah protokol yang bertanggung jawab untuk membangun koneksi antara Bluetooth device serta mengatur sistem keamanan didalam koneksi,seperti authentication dan encryption.

7 Logical Link Control and Adaptation Protocol (L2CAP) adalah protocol yang mangadaptasikan layer protokol yang ada di atas kepada baseband. Hal ini melibatkan banyak bagian, yaitu bermacam-macam koneksi logical yang berada pada layer diatasnya. Service Discovery Protocol (SDP) digunakan untuk mendapatkan informasi tentang atribut device, service yang disediakan, dan berikut karakteristik dari service. RFCOMM mengimplementasikan RS-232 kontrol dan data signal melalui Bluetooth baseband, yang menyediakan kemampuan transportasi untuk layer yang berada di atasnya dengan menggunakan antar muka serial sebagai makanisme transportasi. TCS Binary mendefinisikan pemanggilan sinyal kontrol untuk membuat panggilan data dan suara antara Bluetooth device.

2.1.2.1 Jaringan Bluetooth Bluetooth devices dibagi lagi menjadi group-group kecil yang disebut piconet. Didalam piconet, ada sebuah master dan satu atau lebih slaves. Sampai 7 buah slaves bisa diterima didalam sebuah piconet. Sedangkan master unit adalah sesuatu yang memulai proses komunikasi. Ia akan menggunakan komunikasi point-to-multipoint. Sebuah device didalam sebuah piconet mampu berkomunikasi dengan bluetooth device didalam piconet yang lain. Sebuah slave didalam piconet tertentu mungkin dapat menjadi slave didalam piconet yang berbeda. Sebuah master didalam sebuah piconet dapat menjadi slave pada piconet yang lain. Komunikasi antar piconet tersebut dapat berasal dari jaringan manapun. Dalam rangka untuk pemeliharaan baterai, bluetooth memiliki tiga low modus operasi yang hemat energi:

8 Pada modus sniff, sebuah slave device akan memperhatikan berkurangnya level energi, dimana ia tidak berpengaruh terhadap piconet. Pada modus hold, sebuah device tidak hanya mengirimkan data tetapi ia juga melakukan sinkronisasi secara konstan dengan master. Ia bukanlah member aktif dari piconet, tetapi ia menyimpan alamat member yang aktif. Sebuah device pada modus park berlaku seperti device pada modus hold, akan tetapi ia tidak menyimpan alamat member yang aktif.

Gambar 2.2 Topologi Jaringan Bluetooth 2.1.2.2 Profile Bluetooth Profile dari bluetooth telah ditentukan dengan memperhatikan interoperability antara device dan aplikasi dari beberapa manufaktur. Sebuah profile mendefinisikan roles dan kemampuan yang dimiliki oleh tipe aplikasi tertentu. Sebuah device hanya dapat berkomunikasi dengan device yang lain apabila mereka

9 memiliki profile yang sama. Semua bluetooth device harus menggunakan Generic Access Profile. Profile ini menentukan prosedure koneksi, device discovery, dan management link. Sebuah Service Discovery Profile mendefinisikan fitur dan prosedur bagi aplikasi bluetooth untuk mengenali segala servis yang telah ditentukan pada bluetooth device yang lain. Sebuah profile sinkronisasi menentukan hal-hal apa saja yang dibutuhkan pada dua atau lebih devices untuk mensinkronisasikan data. Profile bluetooth yang lain telah didefinisikan juga pada spesifikasi bluetooth. Akan tetapi tidak akan dibicarakan dalam materi ini. 2.2 JAVA Java dibuat pada tahun 1991 oleh James Gosling. Pada awalnya diberi nama Oak, dimana untuk menghormati pohon yang ada di luar jendela Gosling. Kemudian namanya diubah ke Java karena telah ada sebuah bahasa yang diberi nama Oak. Motivasi sesungguhnya dari Java adalah kebutuhan akan sebuah bahasa yang bisa digunakan pada berbagai platform yang bisa dimasukkan ke dalam berbagai produk elektronik seperti pemanggang roti dan lemari es. Salah satu dari proyek pertama yang dikembangkan menggunakan Java adalah sebuah remote kontrol yang diberi nama Star 7. Pada saat yang sama, World Wide Web dan Internet berkembang sangat cepat. Gosling menyadari bahwa Java dapat digunakan untuk pemrograman Internet. Dengan keluarnya versi 1.2, platform Java akhirnya dipilahpilah menjadi beberapa edisi, yaitu: The Standard Edition (Java SE), Enterprise Edition (Java EE), Micro Edition (Java ME) dan JavaCard API.

10 Tabel 2.2 Platform Java Java SE Java Standard Edition Java EE Java Enterprise Edition Aplikasi Desktop Aplikasi enterprise dengan fokus pada pengembangan sisi web server, termasuk servlet, JSP, EJB dan XML Perangkat Mobile Smart Cards

Java ME Java Micro Edition JavaCard

Gambar 2 .3 Platform Java 2.2.1 J2SE (Java 2 Second Edition) Java 2 Second Edition atau yang lebih dikenal dengan J2SE adalah salah satu platform dari bahasa pemrogaman java yang diimplementasikan untuk aplikasi desktop. J2SE terdiri dari Java Runtime Environment (JRE) yang terdiri dari banyak library

11 standart. Sedangkan untuk Java Development Kit (JDK) adalah JRE yang ditambahkan development Tools & API. Untuk membuat aplikasi berbasis user interface, telah terdapat paket Abstract Window Toolkit (AWT) yang bergantung dari sistem operasi yang digunakan. User interface pada linux akan berbeda dengan user interface pada open solaris. Untuk membangun aplikasi user interface yang tidak bergantung pada sistem operasi yang digunakan dapat menggunakan paket Swing. Tampilan user interface akan selalu sama walaupun berpindah-pindah sistem operasi. 2.2.2 J2ME (Java 2 Micro Edition) Java ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat mobile. Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei, layar yang kecil dan bandwith jaringan yang rendah. Dengan perkembangan perangkat mobile dari telepon, PDA, kotak permainan hingga peralatan-peralatan rumah, Java menyediakan suatu lingkungan yang portable untuk mengembangkan dan menjalankan aplikasi pada perangkat ini. Program Java ME, seperti semua program Java adalah diterjemahkan oleh Virtual Machine (VM). Program-program tersebut dikompile ke dalam bytecode dan diterjemahkan oleh Java Virtual Machine (JVM). Ini berarti bahwa program-program tersebut tidak berhubungan langsung dengan perangkat keras. Java ME menyediakan suatu interface yang sesuai dengan perangkat keras. Aplikasi-aplikasi tersebut cukup dikompile sekali dan mampu dijalankan pada mesin yang berbeda. Inti dari Java ME terletak pada configuration dan profileprofile. Suatu configuration menggambarkan lingkungan runtime dasar dari suatu sistem Java ME. Ia menggambarkan core library, virtual machine, fitur keamanan dan jaringan.

12

Gambar 2 -4 Arsitektur Java ME Sebuah profile memberikan library tambahan untuk suatu kelas tertentu pada sebuah perangkat. profile-profile menyediakan user interface (UI) API, persistence, messaging library, dan sebagainya. Satu set library tambahan atau package tambahan menyediakan kemampuan program tambahan. Pemasukan package ini ke dalam perangkat Java ME dapat berubah-ubah karena tergantung pada kemampuan sebuah perangkat. Sebagai contoh, beberapa perangkat MIDP tidak memiliki Bluetooth built-in, sehingga Bluetooth API tidak disediakan dalam perangkat ini. 2.2.2.1 Configuration Suatu configuration menggambarkan fitur minimal dari lingkungan lengkap Java runtime. Untuk menjamin kemampuan portabilitas dan interoperabilitas yang optimal diantara berbagai macam perangkat yang dibatasi sumber dayanya (memory, prosesor, koneksi yang dibatasi), configuration tidak menggambarkan fitur tambahan. Suatu configuration Java ME menggambarkan suatu komplemen yang minimum dari teknologi Java. Adalah merupakan tugas profile-profile untuk menggambarkan tambahan library untuk suatu kategori perangkat tertentu. Configuration menggambarkan: Subset bahasa pemrograman Java Kemampuan Java Virtual Machine (JVM) Core platform libraries Fitur sekuriti dan jaringan.

13 J2ME terdiri dari dua configuration yaitu : 1) Connected Limited Device Configuration (CLDC) Digunakan pada device yang terbatas dalam hal memori yang kecil dan prosesor yang tidak begitu cepat. Hanya terdiri dari sebagian kecil class librari J2SE seperti java.lang dan java.util, kemudian ditambahkan paket untuk aplikasi mobile javax.microedition.io.CLDC banyak digunakan pada handphone dan PDA (Personal Digital Asistants). 2) Connected Device Configuration (CDC) Berisikan semua dari java virtual machine (JVM), dan ditambahkan paket untuk aplikasi mobile sehingga membutuhkan memori yang lebih besar dan prosesor yang lebih cepat dari CLDC.CDC banyak digunakan pada internet tv, car tv dan nokia communicator . 2.2.2.2 Profile Suatu profile menggambarkan set-set tambahan dari API dan fitur untuk pasar tertentu, kategori perangkat atau industri. Sementara configuration menggambarkan library dasar, profile-profile menggambarkan library yang penting untuk membuat aplikasiaplikasi efektif. Library ini memasukkan user interface, jaringan dan penyimpanan API. Profile merupakan class librari tambahan pada configuration yang digunakan untuk pengelompokan spesifikasi tertentu (domainspesific), dan digunakan untuk mendukung paket-paket opsional agar dapat mengakses virtual machine. Profile merupakan kebalikan dari configuration yaitu mengatur hal-hal yang spesifik untuk sebuah device. Terdapat beberapa profile, namun profile pertama yang selesai dirilis adalah Mobile Information Device Profile (MIDP) yang bertugas untuk menjalankan aplikasi pada handphone atau pada pager. Satu device dapat terdiri dari beberapa profile seperti pada PDA, terdapat MIDP, dan Personal Basis Profile (PBP) yang digunakan untuk membuat tampilan grafik seperti window.

14 2.2.2.3 Optional Packages Optional package adalah kumpulan API yang berisikan fungsi-fungsi tertentu yang tidak terdapat pada configuration dan profile. Optional package adalah kumpulan API yang berisikan fungsi-fungsi tertentu yang tidak terdapat pada configuration dan profile. Bluetooth optional package adalah salah satu contoh yang didukung oleh MIDP, paket yang terdapat pada bluetooth optional package ini seperti DiscoveryListener merupakan interface yang diimplementasikan untuk mencari perangkat bluetooth, mencari service pada perangkat bluetooth, LocalDevice merupakan class yang digunakan untuk mendapatkan dan mengontrol perangkat bluetooth. 2.2.2.4 MIDP The Mobile Information Device Profile (MIDP) berada di atas dari CLDC. Kita tidak bisa menulis aplikasi mobile hanya dengan menggunakan CLDC API. Kita harus tetap memanfaatkan MIDP yang mendefinisikan UI. Spesifikasi MIDP, kebanyakan seperti CLDC dan API lainnya sudah digambarkan melalui Java Community Process (JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih dari 50 perusahaan, yang terdiri atas pabrik perangkat mobile, pengembang software. MIDP terus berkembang, dengan versi-versi masa depan yang telah lulus dari proses ketat JCP. Spesifikasi MIDP menggambarkan suatu perangkat MID yang memiliki karakteristik-karateristik ini sebagai batas minimum: Tampilan: o Ukuran Layar: 96x54 o kedalaman tampilan: 1-bit o Ketajaman pixel: sekitar 1:1 Masukan: o Satu atau lebih mekanisme user-input: keybboard, dua keyboard, atau touch screen

satu

15 Memory: o 256 kilobytes of non-volatile memory untuk implementasi MIDP. o 8 kilobytes of non-volatile memory for applicationcreated persistent data o 128 kilobytes of volatile memory for the Java runtime (e.g., the Java heap) Jaringan: o dua jalur, wireless, bandwidth terbatas Sound: o Kemampuan untuk memainkan nada-nada

MIDP menggambarkan model aplikasi, UI API, penyimpanan dan jaringan yang kuat, permainan dan media API, kebijakan keamanan, penyebaran aplikasi dan ketetapan over-the-air (OTA). 2.2.2.5 MIDlet Suatu aplikasi MIDP disebut MIDlet. Perangkat application management software (AMS) berinteraksi langsung dengan MIDlet dengan method MIDlet create, start, pause, dan destroy. MIDlet adalah bagian dari package javax.microedition.midlet. Sebuah MIDlet harus di-extend dari class MIDlet. Dan dapat meminta parameter dari AMS seperti dirumuskan dalam java application descriptor (JAD). Suatu MIDlet tidak harus memiliki (dan memang harus tidak mempunyai) sebuah method public static void main(String[] argv). Method tersebut tidak akan dikenal lagi oleh AMS sebagai titik awal sebuah program.

16 2.2.2.5.1 Siklus MIDlet

Gambar 2.5 Daur hidup MIDlet Kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. MIDlet pada awalnya masuk status Pause setelah perintah baru dibuat. AMS memanggil constructor public tanpa argumen dari MIDlet. Jika sebuah exception terjadi dalam constructor, MIDlet memasuki status Destroyed dan membuangnya segera. MIDlet masuk ke dalam status Active atas pemanggilan method startUp() oleh AMS. MIDlet masuk ke dalam status Destroyed ketika AMS memanggil method destroyApp(). Status ini juga kembali diakses ketika method notifyDestroyed() kembali dengan sukses kepada aplikasi. Dengan catatan bahwa MIDlet hanya bisa memasuki status Destroyed sekali dalam masa hidupnya. 2.2.3 Library Pendukung Aplikasi ini memerlukan beberapa software pendukung untuk menambah kebutuhan sistem. Software pendukung itu antara lain : a) AvetanaOBEX AvetanaOBEX adalah salah satu paket pendukung atau paket tambahan yang ada pada bahasa pemrograman java, yang berfungsi untuk membantu dalam pengiriman file. J2SE secara

17 default tidak mendukung JSR82, paket tambahan untuk JSR82 khusus untuk OBEX pada J2SE salah satunya adalah AvetanaOBEX yang dapat didownload pada http://avetana.sourceforge.net b) Bluecove Bluecove merupakah paket bluetooth API yang digunakan untuk operating sistem window, bluecove mengimplementasikan semua JSR82 tanpa OBEX. Bluecove dapat didownload pada http://bluecove.sourceforge.net. c) COMM API COMM API juga merupakan paket tambahan pada program java yang berfungsi untuk mengakses serial port yang ada pada komputer. J2SE secara default tidak dapat melakukan akses pada serial port seperti USB atau COM port. Sedangkan device bluetooth yang digunakan adalah USB bluetooth yang terinstal pada operating sistem, sehingga dibutuhkan COMM API untuk melakukan kontrol hardware. 2.3 JAVA API FOR BLUETOOTH WIRELESS TECHNOLOGY (JABWT) JABWT merupakan J2ME optional package yang didefinisikan Java Community Process JSR-82 (Java Specification Request). JABWT digunakan untuk membuat aplikasi java pada mobile device yang berhubungan dengan teknologi wireless pada bluetooth. Pada J2SE (Java 2 Second Edition) library yang digunakan untuk komunikasi bluetooth yaitu BlueCove. Method yang digunakan pada BlueCove dan JABWT adalah sama. BlueCove merupakan Bluetooth Stack yang menggunakan Java Native Interface (JNI) yang hanya dapat dijalankan pada sistem operasi Wndows XP service pack 2 pada PC, sebab pada sistem operasi ini terdapat Microsoft Bluetooth Stack yang digunakan untuk mengoperasikan USB Bluetooth Dongle. JABWT terdiri atas dua package yaitu : a) javax.bluetooth Digunakan untuk menangani transaksi data dengan menggunakan stream, banyak digunakan pada transaksi

18 pesan text atau transaksi bit per bit seperti audio. Terdiri dari enam class dan empat interface. b) javax.obex Digunakan untuk menangani transaksi data dengan menggunakan object, banyak digunakan untuk transfer data berupa file karena dapat menambahakan nama file, ukuran file, dan type data file. Terdiri dari tiga class dan lima interface.
javax.obex

Gambar 2.6 Struktur Paket JSR82 Untuk menjalan koneksi client/server diperlukan beberapa langkah yang harus dilakukan, yaitu : 1) Initialization Pada saat menjalankan aplikasi bluetooth harus menginisialisasikan bluetooth stack, dan melakukan koneksi terhadap bluetooth device. 2) Server Menciptakan service untuk client, menunggu client untuk bergabung, dan memperbolehkan mereka menggunakan layanan, mematikan service jika tidak dibutuhkan. 3) Client Melakukan pencarian perangkat bluetooth yang ada didaerahnya, masing-masing device yang ditemukan akan

19 dicari service yang ada pada server, melakukan koneksi dengan server, mengakhiri koneksi jika tidak dibutuhkan. 2.3.1 JABWT Package Telah dijelaskan pada subbab 2.3. mengenai JABWT package yang terdiri atas dua package. Berikut adalah tabel yang menjelaskan tentang interface, class, dan exception. Tabel 2.3 Interface pada javax.bluetooth package Interface DiscoveryListener Keterangan mengijinkan aplikasi untuk menerima device discovery dan service discovery event. mewakili connection-oriented pada L2CAP channel. menyediakan connection notifier. mewakili connection-oriented pada RFCOMM menyediakan connection notifier pada RFCOMM interface yang menjelaskan karakteristik dari Bluetooth service

L2CAPConnection L2CAPConnectionNotifier StreamConnection StreamConnectionNotifier ServiceRecord

20 Tabel 2.4 Class pada javax.bluetooth package Class DataElement Keterangan Mendefinisikan berbagai macam data dimana Bluetooth mungkin mempunyai nilai service attribute. Mewakili class of device (CoD) record sebagai gambaran dari Bluetooth spesifikasi Menyediakan method untuk melakukan pencarian Bluetooth dan service-nya (device discovery dan service discovery). Mendefinisikan fungsi dasar dari Bluetooth Manager. Menggambarkan Bluetooth device yang berada di sekitar lokal Bluetooth device. Mendefinisikan universally unique identifiers.

DeviceClass

DiscoveryAgent

LocalDevice RemoteDevice

UUID

Tabel 2.5 Exception pada javax.bluetooth package Exception Keterangan

BluetoothConnectionException BluetoothConnectionException akan diberikan ketika koneksi Bluetooth (L2CAP, RFCOMM, atau OBEX RFCOMM) tidak dapat dibangun.

21 BluetoothStateException BluetoothStateException akan diberikan ketika ada permintaan ke Bluetooth systemdimana sistem tersebut tidak mendukung pada kondisi saat itu. ServiceRegistrationException akan diberikan ketika terjadi kegagalam dalam menambahkan service record ke dalam local Service Discovery Database (SDDB) atau pada saat merubah service record yang telah ada di SDDB

ServiceRegistrationException

2.3.2 Device Management API Pada JABWT Class pada JABWT yang digunakan untuk device management yaitu javax.bluetooth.LocalDevice, javax.bluetooth.RemoteDevice, dan javax.bluetooth.DeviceClass, dimana class-class tersebut merupakan bagian dari Generic AccessProfile (GAP). 2.3.2.1 Local Device Local Bluetooth device diwakili oleh
javax.bluetooth.LocalDevice. Class ini menyediakan method

yang digunakan untuk mengatur dan mendapatkan local device dan informasi seperti Bluetooth address, device class, dan discovery agent. Beberapa method yang disediakan oleh javax.bluetooth.LocalDevice:
static LocalDevice getLocalDevice()

static method yang digunakan untuk mendapatkan LocalDevice object yang mewakili local Bluetooth device.
java.lang.String getBluetoothAddress()

22 Digunakan untuk mendapatkan alamat Bluetooth (Bluetooth address) dari local device. Alamat Bluetooth ditunjukkan dalam java.lang.String yang terdiri atas 12 karakter long desimal.
Java.lang.String getFriendlyName()

Digunakan untuk mendapatkan nama dari local device.


DiscoveryAgent getDiscoveryAgent()

Mengembalikan nilai discovery agent untuk Bluetooth device yang digunakan.


boolean setDiscoverable(int mode)

Digunakan untuk mengatur discoverable mode dari device.


Static java.lang.String getProperty(java.lang.String property)

Digunakan untuk mendapatkan Bluetooth system properties 2.3.2.2 Remote Device diwakili oleh Class ini menyediakan beberapa method untuk mendapatkan obyek RemoteDevice yang bergabung dengan Bluetooth connection, method yang mempelajari alamat dan alamat dari remote device, dan security-related method. Beberapa method Class ini yaitu :
javax.bluetooth.RemoteDevice. static RemoteDevice getRemoveDevice(javax.microedition.io.Connection )

Remote

local

Bluetooth

static method yang digunkan untuk mendapatkan RemoteDevice yang bergabung dengan koneksi sebelumnya.
java.lang.String getBluetoothAddress()

Digunakan untuk mendapatkan alamat Bluetooth dari remote device. Alamat Bluetooth ditunjukkan dalam java.lang.String yang terdiri atas 12 karakter long desimal.
java.lang.String getFriendlyName()

23 Digunakan untuk mendapatkan nama dari remoter device.


boolean authenticate()

Untuk mengetahui apakah remote device pada authenticate atau tidak 2.3.2.3 Device Class

kondisi

Class DeviceClass mewakili class of device (CoD) yang ditetapkan di Bluetooth specification. Class device yang mengidentifikasi menggunakan major, minor, dan service class. DeviceClass mendefinisikan beberapa method yaitu :
int getMajorDeviceClass()

Digunakan untuk mendapatkan major device class


int getMinorDeviceClass()

Digunakan untuk mendapatkan minor device class.


int getServiceClasses()

Digunakan untuk mendapatkan major service classes 2.3.2.4 Pencarian Device dan Service Pada JABWT (device and service discovery) Pada proses discovery (device dan service) tahap-tahapnya adalah sebagai berikut : Proses inisialisasi Proses ini merupakan proses untuk mendapatkan referensi objek LocalDevice. Metode yang digunakan untuk proses ini yaitu metode LocalDevice.getLocalDevice(). Objek LocalDevice berfungsi untuk memberikan akses ke bluetooth properties untuk device, seperti alamat bluetooth, nama bluetooth, dan discovery mode. Untuk mendapatkan objek DiscoveryAgent digunakan objek LocalDevice dengan memanggil metode LocalDevice.getDiscoveryAgent()

24

Proses device discovery Dengan menggunakan objek DiscoveryAgent, proses device discovery dan service discovery dapat dikerjakan. Untuk mendapatkan RemoteDevice yang telah ada, yang didapat dari proses device discovery sebelumnya metode yang digunakan yaitu metode retrieveDevices(). Jika ingin melakukan device discovery dapat dilakukan dengan memanggil metode startInquiry(), dan interface DiscoveryListener yang mempunyai metode deviceDiscovered(), yang berfungsi untuk mendeteksi apabila ada bluetooth device yang ditemukan. Untuk Bluetooth device yang ditemukan akan disimpan pada objek RemoteDevice Proses service discovery Dengan menggunakan objek DiscoveryAgent, proses service discovery dapat dikerjakan. Metode untuk service discovery yaitu searchServices(). Apabila service telah ditemukan, maka metode servicesDiscovered() akan dipanggil. servicesDiscovered() terdapat pada interface DiscoveryListener. Bluetooth service yang ditemukan akan disimpan pada objek ServiceRecord. Proses koneksi bluetooth. Dalam membangun koneksi via bluetooth diperlukan koneksi URL (Uniform Resource Locator) dari bluetooth device yang dipilih. Untuk mendapatkan koneksi URL metode yang digunakan yaitu getConnectionURL(), yang mengambil koneksi URL dari ServiceRecord. Setelah koneksi URL didapatkan, dilanjutkan dengan proses membangun koneksi dengan metode Connector.open(). Tipe koneksi yang digunakan ada dua yaitu L2CAP dan RFCOMM. Untuk mengetahui informasi dari remote device seperti nama bluetooth, dan alamat, dapat menggunakan metode getRemoteDevice(). Jika koneksi telah dibangun maka pengiriman dan penerimaan data siap untuk dilakukan

25

2.3.2.5 DiscoveryAgent menyediakan beberapa method untuk menjalankan device dan service discovery. Berikut adalah method dari DiscoveryAgent:
DiscoveryAgent

boolean cancelInquiry(DiscoveryListener listener) Digunakan untuk menghapus device dari inquiry mode.
boolean cancelServiceSearch(int transID)

Digunakan untuk membatalkan service search transaction yang telah ada pada transaction ID.
RemoteDevice[] retrieveDevices(int option)

Digunakan untuk mengembalikan data array dari Bluetooth device yang telah ditemukan oleh local device sebelum local device melakukan proses inquiry atau dapat disebut sebagai preknown device.
int searchServices(int[] attrSet, UUID[] uuidSet, RemoteDevice btDev,DiscoveryListener discListener)

Digunakan untuk melakukan pencarian service pada remote Bluetooth device yang mempunyai UUID yang telah ditetapkan pada uuidSet.
java.lang.String selectService(UUID uuid, int security, boolean master)

Digunakan untuk mengalokasikan sebuah service yang berisi uuid yang ada pada ServiceClassIDList dari service record-nya.
boolean startInquiry(int accessCode, DiscoveryListener listener)

Digunakan untuk menempatkan device pada kondisi inquiry mode.

26 2.3.2.6 ServiceRecord
ServiceRecord merupakan gambaran dari remote service atau RemoteDevice. ServiceRecord menyediakan method untuk mendapatkan service attribute, connection URL, host remote device, seperti halnya dalam merubah Service Discovery Database : int[] getAttributeIDs()

Digunakan untuk mengembalikan service attribute ID dimana nilainya dapat diperoleh kembali dengan memanggil getAttributeValue().
DataElement getAttributeValue(int attrID)

Digunakan untuk mengembalikan nilai dari service attribute ID, yang disediakan di service record. Dengan kata lain, method ini kembali ke nilai null.
java.lang.String getConnectionURL(int requiredSecurity, boolean mustBeMaster)

Digunakan untuk mengembalikan nilai String, termasuk beberapa pilihan parameter dimana client dapat menggunakan untuk melakukan koneksi ke service yang telah digambarkan oleh ServiceRecord.
RemoteDevice getHostDevice()

Digunakan untuk mengembalikan remote Bluetooth device yang ditempati service record dengan nilai attribute.
boolean populateRecord(int[] attrIDs)

Digunakan untuk mendapatkan kembali nilai-nilai dengan menghubungi remote bluetooth device. Nilai-nilai yang dikembalikan merupakan satu set dari service attribute ID untuk sebuah service yang tersedia pada Bluetoothdevice.
boolean setAttributeValue(int attrID, DataElement attrValue) Digunakan untuk memodifikasi ServiceRecord ini yang untuk

mengisi service attribute yang ditunjukkan dengan attributevalue pair(attrID,attrValue).

27
void setDeviceServiceClasses(int classes)

Digunakan oleh aplikasi server untuk mengindikasikan bit-bit major service class yang diaktifkan oleh DeviceClass milik server pada saat ServiceRecord ditambahkan pada SDDB 2.3.2.7 Komunikasi Bluetooth Menggunakan RFCOMM. Setelah device discovery dan service discovery telah komplit dilakukan oleh client untuk mendapatkan semua informasi yang digunakan untuk mengatur communication link pada service di server. L2CAP link merupakan basis dari semua komunikasi melalui bluetooth. Format dari L2CAP link yaitu : btl2cap://hostname:[PSM | UUID];parameters PSM (Protocol/Service Multiplexer) merupakan suatu nilai yang sama fungsinya dengan nomer port pada jaringan IP (Internet Protocol) dan digunakan oleh client untuk koneksi dengan server. Serial Port Profile menyediakan RFCOMM yang merupakan RS232 serial emulation protocol melalui L2CAP. Format dari RFCOMM link yaitu : btspp://hostname:[CN | UUID];parameters CN (Channel Number) merupakan suatu nilai yang hampir sama dengan nomor port service pada jaringan IP, yang digunakan oleh client untuk berkoneksi dengan server Contoh aplikasi berikut ini menggunakan protokol serial RFCOMM untuk berkomunikasi dengan device bluetooth. Aplikasi ini adalah tulang punggung dari sebuah information server dan client-nya. Server pertama kali akan mendaftarkan service-nya:
localDevice = LocalDevice.getLocalDevice(); localDevice.setDiscoverable(DiscoveryAgent.GIAC); notifier = (StreamConnectionNotifier)

28
Connector.open(URL);

Kemudian ia akan menunggu koneksi:


StreamConnection conn = notifier.acceptAndOpen();

Sekali sebuah koneksi diterima, kemudian ia akan membaca command dan menjawab dengan jawaban yang tepat dengan menggunakan method untuk koneksi serial. Client pertama kali akan mencari device yang tersedia untuk service tersebut:
LocalDevice localDevice = LocalDevice.getLocalDevice(); discoveryAgent = localDevice.getDiscoveryAgent(); discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);

Client akan meng-implement DiscoveryListener dan mengoverride method yang diperlukan untuk menerima notifikasi dari device. Sekali device ditemukan dan proses pencarian servis sudah selesai dilaksanakan, kemudian command tertentu akan dibutuhkan. 2.4 DATABASE Database pada dasarnya memiliki pengertian kumpulan datadata dan informasi yang terstruktur dalam suatu tabel dan relasi sehingga memudahkan dalam pengolahan data. Database ini digunakan khususnya untuk arus informasi atau data dalam jumlah besar. Database dipakai untuk menyimpan data sehingga dapat dimanipulasi dengan mudah. Database dipakai untuk aplikasi sederhana sampai yang rumit dimana melibatkan beberapa user. Oleh karena itu Database dibagi sesuai dengankompleksitasnya. Ada dua model Database, yaitu:

29 1. Database yang berdiri sendiri (stand alone). Merupakan database yang sangat sederhana karena disimpan dalam sistem file lokal dan mengakses pada mesin yang sama. Database ini hanya dipakai untuk satu aplikasi saja. 2. Database terbagi (file share). Hampir sama dengan database stand-alone,tetapi dapat diakses oleh beberapa user. Database ini akan mengalami masalah jika aplikasi memerlukan banyak perhitungan dan pada saat yang bersamaan ada pengaksesan ke dalam database. 2.4.1 Entity Relation Diagram (ERD) Sebuah ERD mendokumentasikan data sebuah informasi dengan cara menentukan data-data apa yang terdapat dalam setiap entity dan bagaimana relationship (hubungan) antara sebuah entity dengan yang lainnya. Dibawah ini akan dijelaskan beberapa hal yang dapat digunakan dalam ERD : Entity (obyek data) adalah sesuatu atau obyek yang ada dalam dunia nyata yang dapat dibedakan dari objek lainnya. Entity dapat berupa environmental element (elemen di sekitar sistem yang berhubungan dengan sistem tersebut), resource (sumber daya yang berhubungan dengan system yang ada). Entity digambarkan dengan (kata benda tunggal) di dalamnya. Attribute adalah menguraikan bagian-bagian yang ada berdasarkan jumlah dari entity yang mempunyai tipe yang sama dan kemudian membagi-bagikan bagian-bagian tersebut. Identifier ialah atribut yang mengidentifikasikan sebuah entity secara unik. Relationship ialah hubungan yang terjadi antara dua buah entity dan digambarkan dengan garis dan sebuah kata kerja di sampingnya. Connectivity ialah jumlah yang menunjukkan berapa kali sebuah entity muncul dalam relasi dengan entiti lainnya. Ada 3 jenis hubungan, yaitu : One-to-one relationship

30 Merupakan hubungan di mana suatu anggota entity mempunyai hubungan dengan satu anggota entity pada entity yang berbeda.

Gambar 2. 7. One to one relationship One-to-many Merupakan hubungan antara beberapa anggota entity yang satu dengan beberapa anggota entity yang lainnya.

Gambar 2.8. One to many relationship Many-to-many Merupakan hubungan antara beberapa anggota entity yang satu dengan beberapa anggota entity yang lainnya.

Gambar 2.9. Many to many relationship

31 2.4.2 Structured Query Language (SQL) SQL adalah Cara berinteraksi/berkomunikasi antara pemakai dengan basis data diatur dalam suatu bahasa khusus yang ditetapkan oleh perusahaan pembuat DBMS. Bahasa itu disebut Bahasa Basis Data. Bahasa Basis Data dapat dipilah ke dalam 2 bentuk yaitu: Data Definition Language (DDL) Dengan bahasa ini kita dapat membuat tabel baru, membuat indeks, mengubah tabel dan sebagainya. Perintah DDL dalam SQL meliputi : CREATE TABLE membuat tabel baru dalam database o ALTER TABLE mengubah definisi tabel o DROP TABLE menghapus tabel o CREATE INDEX membuat index (search key) o DROP INDEX - menghapus index Data Manipulation Language (DML) Merupakan bentuk bahasa basis data yang berguna untuk melakukan manipulasi dan pengambilan data pada suatu basis data. Manipulasi data dapat berupa: o Penyisipan /Penambahan data baru ke suatu basis data Penghapusan data dari suatu basis data Pengubahan data di suatu basis data Perintah SQl untuk DML (Data Manipulation Language) antara lain : o o o o SELECT Mengekstrak data dari tabel-tabel di database UPDATE Mengupdate data dalam tabel di database DELETE Menghapus data dari tabel di database INSERT INTO Menyisipkan/menambah data baru ke dalam tabel di database

32 2.4.3 Primary Key Pada tabel dalam database yang didesain dengan baik, terdapat sebuah atau lebih kolom yang digunakan sebagai primary key. Primary key adalah suatu informasi yang menjadikan suatu satu record adalah unik terhadap record yang lain dalam satu tabel. Contoh informasi yang dapat digunakan sebagai primary key adalah informasi Nomor Induk Pegawai atau Nomor Induk Mahasiswa. Pada saat pembuatan tabel, primary key dibuat dari kolom unik yang biasanya merupakan suatu tipe integer dan hindari untuk menggunakan tipe yang lain. Sebab indeks yang dibuat untuk primary key, ukurannnya menjadi besar. Dengan membuat informasi tambahan yang berupa integer sebagai primary key selain indeks yang digunakan berukuran kecil, juga meningkatkan kecepatan proses query. Primary key yang ditambahkan ini sering juga disebut kolom internalID. 2.4.4 Foreign Key Tabel juga dapat berisi kolom foreign key. Foreign key pada suatu tabel dapat digunakan untuk mengidentifiksi informasi pada tabel yang lain. Foreign key juga digunakan untuk menciptakan referenstial integrity, yaitu jika pada suatu tabel di-update, maka tabel lain di update pula. Field yang menjadi foreign key pada tabel pertama tidaklah unik, tetapi pada tabel lain field tersebut harus menjadi primary key. Karena foreign key akan menjadi primary key pada tabel kedua, maka primary key harus dibuat terlebih dahulu. 2.4.5 MySQL MySQL adalah salah satu jenis database server yang sangat terkenal. Kepopulerannya disebabkan MySQL menggunakan SQL (Structured QueryLanguage) sebagai bahasa dasar untuk mengakses database-nya. Selain itu software ini bersifat open source sehingga tidak perlu membayar untuk menggunakannya. MySQL termasuk jenis RDBMS (Relational Database Management System). Itulah sebabnya istilah seperti tabel, baris dan kolom digunakan pada MySQL. Pada MySQL, sebuah database mengandung satu atau

33 sejumlah tabel. Tabel terdiri dari sejumlah baris dan setiap baris mengandung satu atau beberapa kolom. 2.5 CLIENT SERVER Client-server merupakan arsitektur komputasi yang memisahkan antara klien dengan server, dan kebanyakan arsitektur ini diimplementasikan pada jaringan komputer. Namun bisa juga diimplementasikan antar perangkat lain seperti juga handphone dengan handphone, ataupun handphone dengan komputer. Setiap klien atau server yang terhubung ke jaringan disebut sebagai node. Umumnya arsitektur ini memiliki 2 tipe node yaitu: klien dan server. Tipe ini biasanya disebut pula two-tier. Dengan arsitektur ini, memungkinkan device untuk melakukan sharing files dan resources.

Gambar 2.10 Arsitektur Umum Client Server Setiap instance dari software pada klien dapat mengirimkan request kepada satu atau beberapa server yang terhubung kepadanya. Server kemudian menerima request tersebut, memprosesnya, setelah itu mengirimkan informasi yang dihasilkan kepada klien. Meskipun

34 konsep ini diaplikasikan pada berbagai jenis aplikasi, namun secara garis besar pola request dan response nya tetap sama. Beberapa penerapan arsitektur client server, yaitu pada web browser sebagai klien, serta web server, database server, dan mail server sebagai server. 2.5.1 Karakteristik Client Server Secara umum karakteristik dari client adalah sebagai berikut: Aktif Menginisialisasi request Menunggu balasan dari request Umumnya terhubung dengan sedikit server dalam suatu waktu Umumnya berinteraksi secara langsung dengan end-user menggunakan GUI (Graphical User Interface). Sedangkan karakteristik server secara umum yaitu: Pasif Menunggu request dari klien Seketika terdapat request yang masuk kepadanya, server akan langsung memproses dan mengirimkan hasil informasinya kepada klien yang memintanya Umumnya menerima koneksi dari klien dalam jumlah yang besar Umumnya tidak berinteraksi secara langsung dengan enduser. Dapat bersifat stateless ataupun stateful. Keuntungan dan Kerugian Arsitektur Client Server Keuntungan dari penerapan arsitektur client server antara Semua data disimpan pada server, sehingga manajemen sekuritas penuh berada pada server, hal ini menjadi baik dibandingkan dengan manajemen sekuritas data yang

2.5.2 lain:

35 tersebar, server menjamin siapa-siapa saja yang berhak mengakses data. Oleh karena storage terpusat, proses update data menjadi mudah untuk dilakukan daripada melakukan update data yang tersebar. Pada kasus peer to peer, update data dilakukan di setiap peer, hal ini tentunya sangat memakan waktu dan rentan terjadinya inkonsistensi data. Sedangkan kerugian dari penerapan arsitektur klien server antara lain: Kongesti trafik menjadi masalah utama arsitektur klien server. Semakin banyak jumlah request client secara simultan, dapat mengakibatkan server dan jaringan kelebihan beban. Jika server mengalami kegagalan, maka request dari klien tidak dapat dipenuhi, hal ini berlaku untuk semua klien yang terkoneksi dengan server.

36

{Halaman sengaja dikosongkan}

BAB 3 PERANCANGAN DAN IMPLEMENTASI PERANGKAT LUNAK


3.1 DESKRIPSI UMUM Perangkat lunak yang akan dikembangkan dalam Tugas akhir ini adalah mengenai sistem pemesanan makanan pada foodcourt. Secara garis besar aplikasi ini nantinya terdiri dari 3 bagian utama yaitu: aplikasi pada handphone, aplikasi pada server dan aplikasi pada agen rumah makan (restoran). Gambaran umum dari aplikasi menu pemesanan makanan ini dapat dilihat pada gambar 3.1.

Gambar 3.1 Gambaran umum aplikasi pemesanan makanan Perangkat lunak pada server akan dibuat menggunakan J2SE dan berbasis desktop. Aplikasi di sisi server berfungsi untuk menangani koneksi bluetooth dengan client dan juga koneksi database. Setiap request dari client akan ditangani dan dilayani oleh aplikasi server. Perangkat lunak pada client (pelanggan) dibuat menggunakan J2ME, aplikasi ini akan dipasang di telepon selular 37

38 pelanggan. Syarat dari handphone yang akan di gunakan adalah harus mendukung MIDP2.0 dan bluetooth API (JSR-82). Aplikasi ini berfungsi untuk melakukan pemesanan makanan terhadap restoranrestoran yang ada di foodcourt. Sedangkan aplikasi di sisi client restoran akan dibuat menggunakan PHP karena berbasiskan web, aplikasi ini akan menampilkan daftar pesanan disertai dengan nomer meja dan bill yang harus dibayar. Daftar pesanan yang tampil harus di layani oleh restoran. 3.2 PERANCANGAN DATABASE APLIKASI Pada bagian ini akan diberikan gambaran mengenai rancangan database. Database yang digunakan diberi nama foodcourtdan terdiri dari 9 tabel. Penjelasan dari masing-masing tabel termasuk seluruh atribut dan kegunaannya yang digambarkan pada model data fisik ini dapat dilihat pada tabel 3.1 sampai dengan tabel 3.9. Rancangan model database ditunjukkan pada gambar 3.2 berikut:

Gambar 3.2 Rancangan database

39 tb_komplain digunakan untuk menyimpan komplain dari pelanggan. tb_detil pesan dan tb_pesan digunakan untuk menangani proses pemesanan dan pembayaran. tb_foodcourt digunakan untuk menyimpan data nama-nama restoran. tb_pegawai berisi data pegawa, tb_pelanggan berisi data pelanggan. Untuk penjelasan dari masing-masing atribut untuk setiap tabel akan dijelaskan pada Tabel 3.1 sampai Tabel 3.9 di bawah ini: Tabel 3.1 tb_komplain
Field Tipe Data Key Deskripsi

ID_Komplain ID_Pelanggan Isi_Komplain Tanggal_Komplain Status

int(8) int(8) varchar(150) datetime smallint(1)

PRI

Unique identifier komplain Unique identifier pelanggan Isi komplain Tanggal komplain status komplain sudah selesai atau belum

Tabel 3.2 tb_detil_pesanan Field Tipe Data Key Deskripsi ID_Detil_Pesanan int(8) PRI Unique identifier detil pesanan ID_Pesan int(8) Unique identifier pesan ID_Menu int(8) Unique identifier menu Jumlah int(4) Jumlah/banyaknya pesanan Total_Harga double(8,0) Harga total diperoleh dari jumlah*harga Status smallint(2) Status pesanan sudah dilayani atau belum Tanggal_Jam_Pesan datetime tanggal dan jam pemesanan Tanggal_Jam_Selesai datetime tanggal dan jam selesai dilayani

40 Tabel 3.3 tb_foodcourt Field Tipe Data Key Deskripsi ID_Foodcourt int(8) PRI Unique identifier foodcourt Nama_Foodcourt varchar(30) Nama restoran yang ada di foodcourt Pengelola varchar(25) Nama pemilik foodcourt Telp varchar(25) Nomer telp pemilik Tabel 3.4 tb_menu Tipe Data Key Deskripsi int(8) PRI Unique identifier menu int(8) Unique identifier foodcourt varchar(25) Nama makanan / minuman double(8,0) Harga makanan / minuman varchar(35) Penjelasan singkat tentang menu smallint(2) Status makanan tersedia atau tidak

Field ID_Menu ID_Foodcourt Nama_Menu Harga Deskripsi Status_Aktif

Tabel 3.5 tb_pegawai Field Tipe Data Key Deskripsi ID_Pegawai int(8) PRI Unique identifier pegawai ID_Foodcourt int(8) Unique identifier foodcourt Nama varchar(35) Nama pegawai Jenis_Kelamin varchar(2) Jenis Kelamin Alamat varchar(25) Alamat pegawai Telpon varchar(20) Telpon pegawai Username varchar(10) username untuk login ke sistem Password varchar(15) password untuk login ke sistem status_aktif smallint(1) Status pegawai aktif atau tidak

41 Field ID_Pelanggan Nama_Pelanggan Alamat Telp Username Password MAC_ADDRESS Tabel 3.6 tb_pelanggan Tipe Data Key Deskripsi int(8) PRI Unique identifier pelanggan varchar(30) Nama pelanggan varchar(30) Alamat Pelanggan varchar(25) Telp pelanggan varchar(10) username pelanggan untuk pemesanan varchar(10) password pelanggan untuk pemesanan varchar(30) MAC Address bluetooth pelanggan Tabel 3.7 tb_pembayaran Tipe Data Key Deskripsi int(8) PRI Unique identifier pembayaran varchar(10) nomer nota pembayaran int(8) Unique identifier pesan datetime nomer nota pembayaran double(8,0) Total pembayaran int(8) Unique identifier pegawai Tabel 3.8 tb_pesan Tipe Data Key Deskripsi int(8) PRI Unique identifier pesan int(8) Unique identifier pelanggan int(8) nomer meja int(25) Total Pembayaran smallint(1) Status pesan sudah selesai atau belum varchar(10) Tanggal Pemesanan varchar(30) MAC Address pelanggan

Field ID_Pembayaran No_Nota ID_Pesan Tanggal_Bayar Total_Bayar ID_Pegawai

Field ID_Pesan ID_Pelanggan No_Meja Total_Bayar Status Tanggal MAC_ADDRESS

42 Field No_Meja Status Tabel 3.9 tb_meja Tipe Data Key Deskripsi int(3) PRI Nomer Meja (Unique) smallint(1) Status meja sudah terisi atau belum

3.3

PERANCANGAN DAN IMPLEMENTASI SISTEM APLIKASI MENU PEMESANAN MAKANAN Pengaksesan menu pemesanan makanan merupakan aplikasi dan pengembangan dari komunikasi client-server via bluetooth dan client-server via wired LAN. Tentunya ada yang bertindak sebagai server dan ada yang menjadi client, dalam kasus ini komputer (PC) sebagai server, dan telepon selular yang mendukung JSR-82 sebagai client. Selain itu dibutuhkan juga aplikasi client yang menggunakan komputer untuk digunakan oleh restoran. Sistem ini dapat diakses oleh orang lebih dari satu. Dan sistem ini sering disebut Piconet. 3.3.1 KOMUNIKASI CLIENT SERVER Pada komunikasi antara bluetooth MIDlet dan aplikasi bluetooth server data akan dikirimkan melalui koneksi bluetooth. Di mana MIDlet client mengirimkan request message (pesan permintaan) ke server dan menerima reply message (pesan balasan) dari aplikasi bluetooth server, sedangkan aplikasi bluetooth server akan menerima request message dari client dan mengirim reply message (pesan balasan) ke MIDlet client. Komunikasi data akan terbangun dengan baik apabila antara MIDlet client dengan aplikasi bluetooth server dapat menginterpretasikan setiap pesan yang diterima di antara keduanya. Komunikasi yang terjadi antara client server merupakan proses request data oleh client dan proses pengolahan data serta reply data oleh server. Pada aplikasi ini proses yang tarjadi yaitu proses login, proses permintaan daftar restoran dan daftar menu makanan atau minuman, proses input pesanan, proses permintaan history dan proses komplain.

43 3.3.1.1 Sequence Login Dari Gambar 3.3. dapat dilihat bahwa pertama-tama client akan mengirimkan username dan password-nya kepada server dalam bentuk string. Setelah itu akan diterima oleh server, selanjutnya akan diproses ke database. Pada bagian ini akan dilakukan proses validasi. Dan hasil pengolahan oleh database akan dikirimkan kembali ke server untuk kemudian disampaikan kepada client.
Foodcourt Client
Foodcourt Bluetooth Server

Database (mysql)

LOGIN_STATE: username, password

loginValidasi-proses query

loginValidasi-hasil query

LOGIN
Menu Layanan

} OR LOGIN_INVALID

Gambar 3.3 Sequence proses login Pada gambar 3.3 menunjukkan bahwa proses login yang dilakukan oleh user. Jika login valid maka bluetooth application server mengirimkan data LOGIN pada MIDlet Client sebagai reply message. Yang kemudian MIDlet client akan menampilkan Menu Layanan. Apabila username dan password yang dikirimkan tidak sesuai maka data yang dikirikan ke client adalah LOGIN_INVALID. Namun pada saat request message gagal di kirimkan, maka MIDlet Client akan menampilkan pesan error.

44 3.3.1.2 Sequence Daftar Foodcourt Pada gambar 3.4. merupakan message sequence dari proses permintaan daftar nama-nama foodcourt yang aktif pada bluetooth application server dari MIDlet client (request message). Bluetooth application server akan mengirimkan reply message berupa data foodcourt. Apabila pada saat MIDlet client mengirimkan request message gagal, maka MIDlet Client akan menampilkan pesan error
Foodcourt Client Foodcourt Bluetooth Server Database (mysql)

DAFTAR_FOODCOURT;1; sqlDaftarFoodcourt : proses query

sqlDaftarFoodcourt : hasil query Data Foodcourt aktif TampilanRestoran

Gambar 3.4 Sequence daftar foodcourt 3.3.1.3 Sequence Daftar Menu Setelah proses menampilkan daftar foodcourt pada MIDlet client, user akan memilih nama foodcourt dan kemudian dikirimkan oleh MIDlet client ke bluetooth application server untuk mendapatkan daftar menu makanan atau minuman. dan message sequence dari proses ini ditunjukkan pada gambar 3.5. bluetooth application server akan melakukan proses query untuk mengambil data menu makanan atau minuman pada database. Daftar menu akan dikirimkan pada MIDlet client sebagai reply message.

45
Foodcourt Client Foodcourt Bluetooth Server Database (mysql)

DAFTAR_MENU;ID,NamaResto,; sqlDaftarMenu(ID) : proses query

sqlDaftarMenu : hasil query Daftar Makanan Restoran TampilanMakanan

Gambar 3.5 Sequence daftar menu 3.3.1.4 Sequence Input Pesanan Proses pemesanan makanan pada bluetooth server terdiri atas dua proses query yaitu proses sqlInputPesanan() dan sqlInputDetailPesanan() yang message sequence-nya ditunjukkan pada gambar 3.6. Sebagai reply message dari bluetooth application server yaitu data konfirmasi berupa ID Pesanan, nomer meja dan total pembayaran.
Foodcourt Client Foodcourt Bluetooth Server Database (mysql)

INPUT_PESANAN (DataPesanan)

sqlInputPesanan()

sqlInputDetailPesan() Input Transaksi Sukses OrderConfirmation Order ID, nomeja,total Bayar

Gambar 3.6 Sequence input pesanan

46 3.3.1.5 Sequence History dan Detil History History dan detilhistory merupakan fasilitas yang disediakan untuk melihat transaksi yang pernah dilakukan sebelumnya, Pada gambar 3.7. merupakan message sequence dari proses permintaan history dan detilhistory. Pertama client melakukan request SHOW_HISTORY + id pelanggan dan Bluetooth application server akan mengirimkan reply message berupa tanggal, Id pesanan, total bayar dan status pembayaran. Selanjutnya client mengirimkan request DETIL_HISTORY + id pesanan, dan server mengirimkan reply berupa detil pemesanan dengan id pesanan tersebut.
Foodcourt Client
Foodcourt Bluetooth Server

Database (mysql)

SHOW_HISTORY;"idPelanggan ; sqlHistoryPesanan(idPelanggan)

sqlHistoryPesanan-hasil query

dataStringTransmit = history;

DETIL_HISTORY;idPesanan;

sqlDetilHistory(idPesanan)

sqlDetilHistory-hasil query

dataStringTransmit = detilhistory

Gambar 3.7 Sequence history

47 3.3.1.6 Sequence Input Komplain Pada proses komplain, client mengirimkan data INPUT_KOMPLAIN + isi komplain. Kemudian bluetooth server melakukan input pesanan dengan menjalankan fungsi sqlInputKomplain(). Sebagai reply message dari bluetooth application server yaitu data konfirmasi berupa ID Komplain. Message sequence-nya ditunjukkan pada gambar 3.8.
Foodcourt Client Foodcourt Bluetooth Server Database (mysql)

INPUT_KOMPLAIN;idPlgn;komplain

sqlInputKomplain

Input Komplain Sukses dataStringTransmit = IDkomplain

Gambar 3.8 Sequence input komplain 3.3.2 APLIKASI SERVER PADA KOMPUTER (J2SE) Aplikasi server merupakan aplikasi yang berfungsi untuk menangani koneksi bluetooth dengan client (pelanggan). Selain itu, data yang dikirimkan dari client akan diolah oleh aplikasi server, yang akan diteruskan dengan pengolahan ke database. Hasil pengolahan itu akan di dikirimkan kembali ke client. Dalam mendesain Foodcourt Bluetooth Server diperlukan beberapa hal agar sebuah mobile device yang berkerja dengan menggunakan aplikasi dari J2ME dapat berkomunikasi dengan PC (Personal Computer) yang menggunakan aplikasi J2SE. Pemrograman Bluetooth pada java hal terpenting yang harus dimiliki adalah Java Bluetooth Stack,

48 dimana stack ini akan menyediakan jembatan antara pemrograman java dan bluetooth hardware. Salah satu cara untuk mendapatkan Java Bluetooth Stack ialah dengan menggunakan Microsoft Bluetooth Stack API dan BlueCove. Microsoft Bluetooth Stack API adalah sebuah socket-style atau lebih sering disebut dengan WinSock. Stack ini adalah sebuah aplikasi c-based untuk mengoperasikan generic USB Bluetooth Dongle.BlueCove API dibuat berdasarkan JSR-82 API, sehingga sifatnya sangat terbuka dan gratis terhadap pengembang-pengembang Bluetooth. BlueCove dapat digunakan untuk beberapa aplikasi seperti Serial Port Profile, General Access Profile dan Service Discovery Profie. Tabel 3.10 Kebutuhan Aplikasi server No Kebutuhan Keterangan 1 Bluetooth device Alat untuk menerima dan mengirim pesan 2 J2SDK-6.0 Kompiler untuk bahasa pemrograman java 3 BlueCove Paket java untuk mengontrol bluetooth device 4 CommAPI 2.0 Paket java untuk mengakses serial port 5 JDBC-Connector Paket java untuk menghubungkan dengan database, untuk mysql menggunakan mysql-connector-java Foodcourt Bluetooth Server dibuat dengan menggunakan BlueCove stack yang dapat diperolah di http://sourceforge.net/ projects/bluecove/ dan Microsoft Bluetooth Stack. Proses yang dilakukan oleh server diperlihatkan pada activity diagram pada gambar 3.9. Yang pertama kali dilakukan oleh server yaitu melakukan inisialisasi bluetooth device kemudian menjalankan service setelah itu melakukan proses listening client. Jika ada client yang terhubung dengan server maka server akan melakukan validasi dan menunggu request data dari client. Data yang telah di terima akan diolah oleh server kemudian mengirimkan jawaban ke client sesuai dengan permintaan.

49
Client Server

Initial Bluetooth device

Menjalankan service Melakukan request koneksi ke server tidak


ya

Menunggu koneksi client


ada client connect?

Melakukan koneksi bluetooth Mengirim Data Menerima dan mengolah data Buka koneksi database
hasil login

ya
tidak

Login?

Daftar Restoran daftar menu daftar history

ya
tidak

request restoran? request menu? tidak

ya

ya
tidak

request history ? input pesanan? tidak

input pesanan

ya

input komplain ya

input komplain?

tampilkan pesan

Kirim Pesan

Tutup koneksi database Tutup koneksi bluetooth

tidak

Gambar 3.9 Activity diagram server

50 Berdasarkan activity diagram server pada gambar 3.9, maka dapat dibuat class diagram. Class diagram server ini terdiri dari empat buah class, yaitu class TaServer, class bluetoothConnection, class logConnectionFrame dan class ClientThread. Hasil class diagram yang telah dibuat dapat dilihat pada gambar 3.10 berikut ini.

Gambar 3.10 Class diagram aplikasi server

51 3.3.2.1 User Interface Server Berdasarkan rancangan sistem pada gambar 3.9. maka pada aplikasi Server dapat dibuat visualisasi design form pada gambar 3.11 berikut ini
FoodCourt Desktop Server File Koneksi FoodCourt Help Server > Create server.... Server> Menunggu koneksi client... ... _ [] X

Gambar 3.11 Design Form pada aplikasi Server (J2SE) Untuk membuat tampilan dengan desain seperti diatas maka digunakan JFrame yang kemudian dipanggil pada main() dan di set dengan size 640x480. Form aplikasi server diberi title Foodcourt Desktop Server. Source untuk membuat form aplikasi server adalah sebagai berikut:
public static void main(String args[]) { FoodCourtServer mainFrame = new FoodCourtServer(); mainFrame.setSize( 640, 480 ); mainFrame.setLocation( 80,70 ); mainFrame.setTitle("Food Court Desktop Server"); mainFrame.setVisible( true ); }

Dari source diatas akan menghasilkan tampilan form seperti gambar 3.12. Form tersebut memiliki menu file, koneksi, foodcourt dan help.

52

Gambar 3.12 Hasil user interface aplikasi server (J2SE) 3.3.2.2 Koneksi Bluetooth Pada Server Aplikasi server digunakan untuk menangani koneksi bluetooth, sehingga diperlukan sebuah tampilan log untuk mengetahui dan memonitoring apakah ada client yang sedang konek atau tidak. Server akan mendeteksi (listen) adanya perangkat yang melakukan koneksi dengan server. Dan ketika ada client yang melakukan koneksi dengan server maka server akan menangkap data yang dikirimkan oleh user. Untuk menangani koneksi bluetooth maka digunakan class javax.bluetooth.*; Gambar 3.13 menunjukkan bagaimana proses discovery Bluetooth pada server bakerja.sehingga dapat melakukan pengaksesan terhadap sistem pemesanan makanan. Method-method yang digunakan untuk melakukan koneksi bluetooth telah dijelaskan sebelumnya di bab 2. Dari method-method tersebut dapat digambarkan sequence diagram nya seperti pada gambar 3.13 berikut ini.

53
MIDlet Local Device Discovery Agent
Service Record

Connector

Remote Device

Connection

getLocalDevice() getDisscoveryAgent()

retriveDevice() startInquiry()

deviceDiscovered() searchServices() servicesDiscovered()

getConnectionURL()

Connector.open()

getBluetoothAddress()

Send()

Gambar 3.13 Sequence bluetooth connection Berdasarkan Gambar 3.13, maka dapat di tentukan beberapa class yang digunakan untuk koneksi bluetooth dalam pembangunan aplikasi pemesanan makanan ini. Proses pertama yang dilakukan untuk membangun koneksi client-server via bluetooth yaitu melakukan inisialisasi pada local device bluetooth yang bertujuan untuk mendapatkan informasi dari local device bluetooth dan untuk mendapatkan akses ke bluetooth manager. getLocalDevice() : berfungsi menyediakan akses untuk mengontrol perangkat bluetooth yang ada pada sisi client pada tugas akhir ini adalah berupa HandPhone. Class ini berfungsi untuk mengambil informasi pada local device seperti bluetooth address, device class dan discovery agent. Source code untuk proses inisialisasi adalah sebagai berikut :

54
... private LocalDevice localDevice; // local bluetooth manager ... //mendapatkan informasi dari local device dan untuk dapat //mengakses bluetooth manager localDevice = LocalDevice.getLocalDevice(); //pengesetan discoverable mode GIAC pada server localDevice.setDiscoverable(DiscoveryAgent.GIAC); ...

Setelah melakukan proses inisialisasi, proses selanjutnya adalah membuat koneksi server dengan menggunakan Connector.open() method
/koneksi server import javax.microedition.io.Connector; private StreamConnectionNotifier notifier; ... //membuat koneksi server menggunakan Serial Port Profile URL, //spesifik UUID, dan nama service notifier = (StreamConnectionNotifier)Connector.open( "btspp://localhost:102030405060708090A0B0C0D0E0F010 ;" + "name=FOODCOURT;authenticate=false;encrypt=false"); ...

Proses berikutnya yaitu mengeset attribute service record pada Service Discovery Database (SDDB). Berikut potongan source codenya :
... //mengambil record dari SDDB ServiceRecord record = localDevice.getRecord(notifier); //mengeset service record ServiceAvailability (0x0008)

55
//attribute yang mengindikasikan service tersedia, record.setAttributeValue(0x0008,new DataElement( DataElement.U_INT_1, 255 ) ) ...

Agar client dapat membangun koneksi dengan server dengan service yang disediakan oleh server, maka server perlu meregistrasikan service record pada SDDB dan melakukan proses menunggu koneksi dari client. Berikut source code pada proses ini :
... // koneksi pada remote device StreamConnection client = null; try { //memasukkan service record pada SDDB dan menunggu koneksi dari client client = notifier.acceptAndOpen(); ... } catch (IOException e) {} ..

Apabila server menerima koneksi dari client, maka proses selanjutnya yaitu proses penerimaan dan pengiriman data dari dan ke client serta menginterpretasikan data yang diterima oleh server yang digunakan sebagai variabel untuk proses query database dan proses pemeriksaan untuk keperluan validasi. Berikut source code pada proses ini :
... try { //memperoleh input stream dari client DataInputStream in = conn.openDataInputStream(); //membaca input message yang berupa data string String dataStringReceive = in.readUTF(); //menginterpretasikan data input dengan mengubah data string ke array string2array(dataStringReceive); .... //proses pengiriman data pada client

56
DataOutputStream stream = conn.openDataOutputStream(); stream.writeUTF( dataStringTransmit ); stream.flush(); conn.close(); }catch (Exception e) {}

Gambar 3.14. Merupakan hasil tampilan dari aplikasi server untuk menangani proses koneksi bluetooth. Pada gambar 3.14 sebelah kiri menunjukkan error handling saat bluetooth tidak ditemukan pada komputer server. Sedangkan pada gambar sebelah kanan menunjukkan log saat server siap untuk menerima koneksi dari client. Server akan terus melakukan listening sampai ada client yang melakukan koneksi.

Gambar 3.14 Log koneksi aplikasi server (J2SE) 3.3.2.3 Koneksi Database Pada Server Untuk melakukan insert, select, delete, dan update data, tahapan pertama yang dilakukan yaitu melakukan koneksi dengan database MySQL. Kemudian dilanjutkan dengan membuat objek Statement dengan menggunakan objek Connection . Oleh karena itu pernyataan (statement) SQL dibuat dan dalam bentuk data string. Pernyataan SQL dijalankan dengan melalui dua metode berdasarkan fungsinya. Jika ingin mengambil data (select)

57 pernyataan SQL dijalankan dengan metode executeQuery(), sedangkan untuk membuat atau memodifikasi (create, insert, update, delete) tabel data dari database metode yang digunakan yaitu executeUpdate(). Berikut source code untuk melakukan koneksi database maka digunakan JDBC driver.
private void koneksi() throws Exception{ String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1/foodcourt"; String username = "root"; String password = "tarantula"; try { Class.forName( "com.mysql.jdbc.Driver" ); con = DriverManager.getConnection( url,username,password ); System.out.println( "Terhubung Database" );} catch (ClassNotFoundException cnfex) { System.err.println("Koneksi Driver JDBC - ODBC Gagal"); cnfex.printStackTrace(); System.exit(1);} catch (SQLException sqlex) { System.err.println("Koneksi Tidak Dapat Dilakukan"); sqlex.printStackTrace();} }

3.3.2.4 Proses Login Pada saat koneksi client-server dibangun, proses yang dilakukan setelah koneksi terbangun adalah user melakukan login yang bertujuan untuk pengidentifikasian pada user. Aplikasi client akan mengirimkan data LOGIN_STATE disertai dengan username dan password. Data tersebut kemudian oleh server diolah dan dicocokkan dengan database. Jika login valid maka server akan mengirimkan data LOGIN disertai dengan id pelanggan dan nama pelanggan Sedangkan jika login salah atau tidak sesuai, maka pesan

58 yang dikirimkan oleh server adalah LOGIN_INVALID. Activity diagram dari proses validasi login dapat dilihat pada gambar 3.15.
Client Serv er

Discovery Bluetooth Melakukan Login Cek Kondisi

LOGIN_STATE; uname;passw

koneksi database proses loginValidasi


login valid?

ya LOGIN;idPelangg an,nmPelanggan tutup koneksi database tampilkan pesan kirim pesan

tidak LOGIN_INVALID

Gambar 3.15 Activity diagram proses login Data yang dikirimkan oleh client ke server yaitu kondisi proses, username, dan password. Untuk proses login data kondisinya yaitu LOGIN_STATE, yang dapat diketahui dengan proses pemeriksaan kondisi. Berikut adalah source code proses login :

59
String dataStringReceive = in.readUTF(); string2array(dataStringReceive); String no = null; if (array[0].equals("miftakhz31n")) { no = "New_client"; dataStringTransmit = "miftakhz31n;"; } else if (array[0].equals("LOGIN_STATE")) { String username = array[1]; char[] password = new char[array[2].length()]; for (int i = 0; i < array[2].length(); i++) { password[i] = array[2].charAt(i); } if (loginValidasi(username, password)) { dataStringTransmit = "LOGIN;" + tempId + ";" + tempNama + ";"; } else { dataStringTransmit = "LOGIN_INVALID;"; } ....

3.3.2.5 Proses Daftar Foodcourt Pada proses data daftar foodcourt, data kondisi yang dikirimkan oleh client untuk proses ini yaitu DAFTAR_FOODCOURT. Kondisi tersebut menunjukkan bahwa client melakukan permintaan daftar nama-nama restoran yang ada di foodcourt. Activity diagram dari proses data daftar foodcourt dapat dilihat pada gambar 3.16. Proses yang dilakukan yaitu, client akan megirimkan request message, kemudian server akan menindaklanjuti dengan melakukan proses pengambilan data daftar foodcourt yang aktif pada database dengan menjalankan fungsi sqlDaftarFoodcourt() yaitu dengan melakukan kueri ke database. Data yang ada kemudian dikirimkan ke client. Data yang dikirim berisi id Fodcourt dan Nama

60 Foodcourt. Sedangkan bila data kosong, maka yang dikirimkan adalah NULL_RESTORAN. Berikut ini adalah potongan sourcode untuk proses daftar Foodcourt:
} else if (array[0].equals("DAFTAR_FOODCOURT")) { String statusnya = array[1]; sqlDaftarFoodcourt(statusnya); dataStringTransmit = gabungfc; }
Client Serv er

Discovery Bluetooth request daftar restoran Cek Kondisi

DAFTAR_FOOD COURT;1;

koneksi database Jalankan fungsi sqlDaftarFoodcourt


ada data?

ya data = IdFoodcourt; NamaFoodcourt

tidak data = NULL_RESTORAN

tutup koneksi database tampilkan pesan kirim pesan

Gambar 3.16 Activity diagram daftar foodcourt

61 3.3.2.6 Proses Daftar Menu (Makanan atau Minuman) Activity diagram pada proses informasi daftar makanan dapat dilihat pada gambar 3.17. Pada proses info daftar makanan untuk restoran yang diinginkan oleh pelanggan data kondisi pada request message yaitu DAFTAR_MENU.
Client Serv er

Discovery Bluetooth request daftar menu Cek Kondisi

DAFTAR_MENU; idFoodcourt;

koneksi database Jalankan fungsi sqlDaftarMenu(idFoodcourt)


ada data?

ya data = IdMenu; NamaMenu;Harga

tidak data = NULL_MAKANAN;

tutup koneksi database tampilkan pesan kirim pesan

Gambar 3.17 Activity diagram daftar makanan Selain data kondisi pada request message terdapat data ID_Foodcourt yang digunakan untuk proses pengambilan data menu makanan pada database. Hasil pengambilan data makanan atau minuman dari database akan dikirimkan ke client. Sehingga pelanggan akan dengan mudah mendapatkan informasi daftar menu dan dapat menentukan menu makanan atau minuman mana yang

62 akan dipesan. Berikut source code pada proses informasi daftar makanan
... else if (array[0].equals("DAFTAR_MENU")) { String statusnya = array[1]; sqlDaftarMenu(statusnya); dataStringTransmit = gabungmenu; } ...

3.3.2.7 Proses Pemesanan Makanan dan Minuman Activity diagram pada proses pemesanan dapat dilihat pada gambar 3.18. Pada proses ini data kondisi pada request message yaitu INPUT_PESANAN.
Client Serv er

Discovery Bluetooth Melakukan Pesanan Cek Kondisi

INPUT_PESANAN;idPelanggan,no meja,total;idFoodcourt,idMenu,jml;

koneksi database Jalankan fungsi sqlInputPesanan(array[1]); sqlInputDetail(array[2]);


input sukses?

ya tidak data = PESANAN_OK; idPesanan,noMeja,total; tutup koneksi database tampilkan pesan kirim pesan data = PESANAN_GAGAL;

Gambar 3.18 Activity diagram input pesanan

63 Untuk proses pemesanan makanan dan minuman ada beberapa data yang dikirimkan oleh client yaitu data kondisi, id Pelanggan, nomer meja, Total pembelian, id Foodcourt, id Menu, jumlah makanan yang dipesan. Data kondisi untuk proses pemesanan yaitu INPUT_PESANAN. Data yang masuk akan diubah menjadi data array. Pada input pesanan terbagi menjadi 3 jenis, array[0] berisi data kondisi, array[1] berisi id Pelanggan, nomer meja, Total pembelian. Sedangkan pada data array[2] dan array[>2] berisi id Foodcourt, id Menu, jumlah makanan. Jika proses pemeasan sukses maka server akan mengirimkan order confirmation berupa bukti pemesanan ke client. Berikut source code pada proses pemesanan.
} else if (array[0].equals("INPUT_PESANAN")) { String pelanggan = array[1]; //1,2,35000,; sqlInputPesanan(pelanggan); for (int z = 2; z < array.length;z++){ if (array[z] == null){ break; }else{ String detilnya = array[z]; //3,1,3,;3,2,3,; sqlInputDetailPesan(idpesan,detilnya); } } dataStringTransmit = balesan; }

3.3.2.8 Proses Komplain Untuk proses komplain, data yang dikirimkan oleh client yaitu id Pelanggan dan isi komplain. Data kondisi untuk proses pemesanan yaitu INPUT_KOMPLAIN. Kemudian server akan menjalankan method sqlInputKomplain() sehingga data akan dimasukkan ke database, setelah itu server memberikan reply berupa id komplain. Activity diagram pada proses komplain dapat dilihat pada gambar 3.19.

64
Client Serv er

Discovery Bluetooth Komplain Cek Kondisi

INPUT_KOMPLAIN; idPelanggan koneksi database Jalankan fungsi sqlInputKomplain(idPelanggan,komplain);

input sukses?

ya data = KOMPLAIN_OK; idKomplain; tutup koneksi database tampilkan pesan kirim pesan

tidak data = KOMPLAIN_GAGAL;

Gambar 3.19 Activity diagram proses komplain Untuk menangani proses komplain pada server, dapat dilihat pada potongan source code berikut ini
else if (array[0].equals("INPUT_KOMPLAIN")) { sqlInputKomplain(array[1],array[2]); dataStringTransmit = balesan; }

65 3.3.3 APLIKASI CLIENT Aplikasi pada client terdiri dari dua macam yaitu: a. Aplikasi pada pelanggan (J2SE) Untuk melihat menu dan melakukan pemesanan. b. Aplikasi pada restoran (WEB) Untuk melayani pemesanan dan menagani pembayaran. Fungsi-fungsi yang dilakukan pada aplikasi client dapat dijelaskan pada use case dibawah ini:

Mencari Foodcourt Bluetooth Server

Menunggu Order
Memilih Restoran Foodcourt

Order Menu

Terima Pesanan

Kirim Pesanan

set dilayani

Pembeli

Balasan Kasir

close connection

Bayar set lunas

Makanan & minuman

Gambar 3.20 Use case diagram aplikasi client Penjelasan mengenai use case diagram: User / Pelanggan mencari device bluetooth server.

66 User / Pelanggan memilih nama restoran. User / Pelanggan mendapat menu dan harga sesuai dengan menu restoran. User / Pelanggan memilih menu makanan. User / Pelanggan mengirimkan pesanan dan No Meja yang berarti melakukan input daftar pesanan dan nomer meja ke sistem. User / Pelanggan mendapatkan balasan berupa List order dan Total yang harus dibayar. Kasir melihat ada order baru dan belum membayar User / Pelanggan melakukan pembayaran ke kasir dan menerima struk pembayaran. Kasir menginputkan biaya pembayaran ke sistem dan memberikan status bahwa pemesanan dengan Id Pesan tertentu telah membayar. Restoran / Penjual melihat daftar pesanan customer yang sudah di sorting berdasarkan waktu pemesanan oleh sistem. Setelah koki restoran selesai membuat menu tersebut, maka pelayan akan mengantarkan pesanan ke pelangggan. Restoran / Penjual memberikan status bahwa pemesanan telah dilayani.

3.3.3.1 APLIKASI CLIENT PADA PELANGGAN (HANDPHONE / J2ME) Sistem akses aplikasi menu pemesanan makanan dapat dilihat gambar 3.20 dimana pertama kali user dengan menggunakan mobile device-nya yang sudah diperlengkapi dengan fasilitas bluetooth, melakukan proses device inquery untuk mencari server yang sedang aktif. Setelah pencarian berhasil, maka user akan secara langsung berhubungan dengan Bluetooth server yang sudah ada. Proses pertama kali dilakukan adalah proses login dimana user diwajibkan untuk mendaftar terlebih dahulu di server. Username dan password berfungsi sebagai pintu gerbang. Jika prosesnya berhasil, maka user dapat melanjutkan pengaksesan. Namun jika tidak, maka sistem akan memberikan pesan pada user. Proses yang dilakukan client (J2ME) diperlihatkan pada actifity diagram pada gambar 3.20 berikut ini.

67
client Serv er

buka aplikasi client inisialisasi bluetooth device tampil pesan bluetooth OFF tidak
bluetooth aktif?

ya mencari foodcourt bluetooth server tidak ya

tampil pesan server tidak ditemukan

server ditemukan?

melakukan koneksi ke server tampil pesan tidak bisa konek server tidak
timeout?

tidak form login

menunggu koneksi client koneksi terbangun proses validasi login

kirim data login

tidak ya pilih menu pilih restoran

login ok?

masukkan jumlah tutup koneksi bluetooth

kirim pesanan receive bill

input pesanan

Gambar 3.21 Activity diagram aplikasi client (J2ME) Dari gambar 3.21 dapat dilihat bahwa pengaksesan dapat dilakukan lebih dari 1 orang. Akses menu pemesanan makanan dari mobile device melalui Bluetooth ini berupa database MySql. Dengan

68 maksud agar susunan menu yang disajikan dalam aplikasi system ini menyerupai dengan menu yang sudah ada pada database menu pemesanan makanan. Jadi sistem yang dibuat hanya mengambil dan memanggil data menu makanan dari nama foodcourt yang diinginkan oleh user. Bahasa pemrograman yang digunakan adalah Java 2 Micro Edition (J2ME) pada sisi client dan Java 2 Standard Edition (J2SE) pada sisi server sedangkan untuk mengakses database MySql digunakan Java Database Connectivity (JDBC).

Gambar 3.22 Sistem akses menu makanan oleh pelanggan Untuk membuat aplikasi client maka dirancanglah sebuah class diagram untukmembuat aplikasi J2ME. Aplikasi menggunakan tiga buah class. Yaitu class FcClient, class FcConnect dan class FcGUI. Class FcGUI berisi method-method yang digunakan untuk membuat tampilan dan form. Sedangkan class FcConnect berisi methodmethod yang digunakan untuk menangani masalah koneksi bluetooth dan juga berisi fungsi yang digunakan untuk menangani pertukaran data antara client server. Class FcClient berisi method-method default yang digunakan untuk membuat aplikasi J2ME.

69

Gambar3.23 Class diagram aplikasi client J2ME

70 3.3.3.1.1 User Interface MIDlet client MIDlet client mempunyai beberapa layar atau tampilan yang digunkan untuk menampilkan informasi yang dibutuhkan oleh user. Berdasarkan rancangan sistem pada gambar 3.20 dan gambar 3.21 maka pada aplikasi pelanggan dapat dibuat blok diagram tampilan seperti pada gambar 3.24

Gambar 3.24 Blok diagram tampilan MIDlet client Layar-layar yang digunakan pada MIDlet client yaitu : a. Tampilan Awal Merupakan layar pembuka awal aplikasi. b. Layar koneksi bluetooth Merupakan layar yang digunakan untuk menampilkan informasi inisialisasi pada local bluetooth telah berhasil dan pada layar ini user dapat melanjutkan proses berikutnya dengan memilih connect command untuk melakukan device dan service discovery pada server serta membuka data tiket yang tersimpan pada persistent storage pada telepon selular. c. Layar Searching Merupakan layar yang digunakan untuk menampikan informasi untuk menunggu proses device dan service discovery. Jika bluetooth device atau service server tidak ditemukan, maka layar ini akan menampilkan informasinya. d. Layar Login

71 Merupakan layar yang digunakan untuk menampilkan form login, dimana user dapat memasukkan data nomor pelanggan, username, password pada layar ini. Layar Menu Layanan Merupakan layat yang berisi daftar layanan yang terdiri dari menu pilihan, yaitu Pilih foodcourt dan menu atau View Pesanan Layar Daftar Foodcourt Berisi tampilan daftar nama-nama foodcourt yang aktif dan dikirim dari server. Layar Daftar Makanan Berisi tampilan daftar nama-nama makanan atau minuman yang aktif dan dikirim dari server yang sesuai dengan nama foodcourt yang dipilih. Layar Input Jumlah pesanan Tampilan untuk memasukkan jumlah pesanan sesuai dengan menu yang dipilih Layar daftar pesanan Merupakan tampilan dari pesanan yang telah dilakukan user. Layar input nomer meja Merupakan tampilan saat melakukan input teradap nomer meja. Layar pengiriman data pesanan Merupakan tampilah saat melakukan proses pengiriman pesanan ke server. Layar History pemesanan Tampilan untuk melihat pesanan yang lama.
FoodCourt Client Siap melakukan koneksi. Pencarian Server.
Username : Password :

e.

f.

g.

h.

i. j. k.

l.

Back

Select

Option

Back

72
Pilih Menu Makanan View Pesanan History Pesanan Option Select Pilih Restoran: 1. Hoka hoka Bento 2. Jungle Juice 3. Bakso Sedap Back Select Pilih Menu : Dorayak 20000 Katsudon25000 Mie 5000 Dorayaki 20000 Jumlah :

Back

Select

Back

Select

Pilih Menu Makanan View Pesanan History Pesanan Option Select

Daftar Pesanan: Dorayaki 4 Mie 2 No Meja:

Option

Select

Confirmation Pesanan anda dg order ID 445, meja 5, sebesar Rp 110.000 akan segera Kami antarkan. Terima Kasih

Gambar 3.25 Design form padaOption Select aplikasi pelanggan (J2ME) Berdasarkan rancangan dan desain pada gambar 3.21 dan gambar 3.22 maka hasil yang didapat adalah seperti Gambar 3.23 Source code dibawah ini merupakan penggalan source yang digunakan untuk menampilkan proses pencarian perangkat.
public void commandAction(Command c, Displayable d) { if (c == CONNECT_CMD && d == formMenuDisplay) { Form f = new Form("Pencarian..."); f.addCommand(SEARCH_CANCEL_CMD); f.setCommandListener(this); f.append(new Gauge("Pencarian perangkat...", false, Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING)); Display.getDisplay(parent).setCurrent(f); bc_client.searchRequest(); return; } if (c == BACK_CMD) { destroy(); parent.show(null); return; } if (c == BACK_LOGIN) {

73
bc_client.Send_Req(null, 0); parent.show(null); return; } }

Gambar 3.26 Tampilan Aplikasi client di emulator saat Pencarian perangkat 3.3.3.1.2 Koneksi Bluetooth MIDlet client Pada client, proses koneksi bluetooth diawali dengan melakukan inisialisasi pada local sevice, setelah itu melakukan device discovery untuk mencari bluetooth yang ada disekitarnya (Bluetooth Foodcourt server) kemudian melakukan service discovery untuk mencari informasi bagaimana untuk melakukan koneksi terhadap service pada setiap bluetooth yang ada.

74
User System Client

Pilih menu melakukan koneksi Proses device discovery


pembatalan proses?

tidak
bluetooth device ditemukan?

ya tidak ya

tampilan awal
pembatalan proses.?

proses service discovery

ya tampilan error

tidak tidak tampilan login ya


bluetooth service ditemukan?

Gambar 3.27 Activity diagram koneksi bluetooth client Pada proses inisialisasi pada local device untuk client sama dengan proses inisialisasi pada server, tetapi pada client terdapat tambahan yaitu terdapat objek DiscoveryAgent yang didapatkan dari objek LocalDevice. Objek DiscoveryAgent digunakan untuk proses device discovery dan service discovery. Source code untuk proses inisialisasi pada client adalah sebagai berikut :
public void run() { boolean LbBlue_Ok = false; try {

75
LocalDevice localDevice = LocalDevice.getLocalDevice(); discoveryAgent = localDevice.getDiscoveryAgent(); LbBlue_Ok = true; } catch (Exception e) { System.err.println("Tidak dapat di inisialisasi..."); } parent.completeInizialization(LbBlue_Ok); if (!LbBlue_Ok) { return; } }

Dalam sistem ini aplikasi yang dibuat, hanya ditujukan untuk menangani sistem pemesanan pada foodcourt dengan menggunakan bluetooth. Sehingga pada saat client melakukan proses inquiry, deviceDiscovered() yang dibutuhkan hanyalah Foodcourt Bluetooth server. Hal ini dapat dilakukan dengan cara men-setting langsung address dari Foodcourt Bluetooth server (BT_ADDRESS).
public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) { int majorDeviceClass = deviceClass.getMajorDeviceClass(); // Beberapa Bluetooth device telah ditemukan dalam pencarian if (devices.indexOf(remoteDevice) == -1) { if (remoteDevice.getBluetoothAddress().equals(BT_ADDRE SS) && majorDeviceClass == 0x0100) { devices.addElement(remoteDevice); } } }

76 3.3.3.1.3 Proses Login Pada MIDlet Client Setelah client berhasil mencari Foodcourt Bluetooth Server dan melakukan koneksi terhadap server, proses berikutnya adalah proses login pada sebuah form Login. Proses ini adalah mengirimkan ID proses login, username dan password kepada server. Script dari form tersebut adalah sebagai berikut :
//Tampilan Login // private final Form formLoginDisplay = new Form("Login"); private final Command Login_Send_CMD = new Command("Kirim", Command.SCREEN, 2); private final Command Login_Back_CMD = new Command("Kembali", Command.BACK, 1); private final TextField username = new TextField("Username :", "", 9, TextField.ANY); private final TextField password = new TextField("Password :", "", 9, TextField.PASSWORD); formLoginDisplay.setTitle("Login"); formLoginDisplay.append(username); formLoginDisplay.append(password); formLoginDisplay.addCommand(Login_Back_CMD); formLoginDisplay.addCommand(Login_Send_CMD); formLoginDisplay.setCommandListener(this); formSendData.setCommandListener(this);

Source code diatas akan menampilkan form untuk melakukan proses login dan juga command listener untuk proses mengirimkan ID LOGIN_STATE, username dan password. Berikut adalah tampilan proses login di client

Gambar 3.28 Tampilan login

77 3.3.3.1.4 Proses Menu Layanan, Daftar Foodcourt dan View Pesanan Jika proses login berhasil maka user akan mendapatkan tampilan berupa menu layanan. Menu layanan digunakan untuk melakukan pemilihan restoran dan menu atau melihat pesanan yang sudah di lakukan.
Client Serv er

tampilan menu layanan


lihat restoran?

tidak

ya DAFTAR_FOO DCOURT Data Pesanan ya HISTORY_PE SANAN


lihat pesanan?

tidak ya
lihat history?

tidak
komplain?

tidak INPUT_KOMP LAIN kirim data

ya pengolahan data dari client kirim hasil pengolahan data

tampilan hasil

Gambar 3.29 Activity diagram menu layanan Saat user memilih menu Pilih Restoran dan Menu maka client akan mengirimkan string DAFTAR_FOODCOURT ke server untuk mendapatkan informasi mengenai daftra foodcourt yang aktif. Kemudian client akan menunggu proses pengiriman data. Data daftar

78 foodcourt yang diterima oleh client akan ditampilkan. Source code berikut ini untuk menampilkan daftar menu layanan yang memiliki dua buah sub menu. Serta source untuk menampilkan daftar foodcourt
void TampilkanMenu(String[] xid) { menuDiplayFoodcourt = new List("MENU LAYANAN ("+ momo +")", List.IMPLICIT); menuDiplayFoodcourt.append("1.Pilih Restoran dan Menu", null); menuDiplayFoodcourt.append("2.Lihat Pesanan", null); menuDiplayFoodcourt.append("3.History Pesanan", null); menuDiplayFoodcourt.append("4.Komplain", null); menuDiplayFoodcourt.addCommand(GET_FOODCOURT_CMD); menuDiplayFoodcourt.addCommand(BACK_LOGIN1); menuDiplayFoodcourt.setCommandListener(this); Display.getDisplay(parent).setCurrent(menuDiplayFoo dcourt); } void TampilanRestoran(String[]z){ String[] tampilan; tempRestoran = z; menuTampilkanNama = new List("DAFTAR RESTORAN", List.IMPLICIT); for (int i = 0;i< z.length; i++){ lokir(z[i]); tampilan = mindah; menuTampilkanNama.append(i+1 + " " + tampilan[1] , null); } menuTampilkanNama.addCommand(GET_MAKANAN_CMD); menuTampilkanNama.addCommand(BACK_MENU_CMD); menuTampilkanNama.setCommandListener(this); Display.getDisplay(parent).setCurrent(menuTampilkan Nama); }

79

Gambar 3.30 Tampilan menu layanan dan tampilan daftar restoran 3.3.3.1.5 Proses Daftar Menu Pada proses ini menampilkan daftar menu makanan atau minuman sesuai dengan nama foodcourt yang dipilih. Data menu makanan didapatkan dari reply message server. Dari layar tampilan foodcourt dapat memilih menu makanan dan melakukan pemesanan.
Client Serv er

tampilan daftar restoran Pilih Nama Restoran kirim data : DAFTAR_MENU; idFoodcourt Cek Data dari client proses daftar menu tampilan menu makanan / minuman kirim data menu

Gambar 3.31 Activity diagram proses menu makanan

80 Command yang dipakai pada layar nama foodcourt yaitu : Pilih dan Back. Pada command Pilih akan melakukan proses pengiriman request message pada server untuk mendapatkan reply message dari server yang berupa data daftar menu makanan atau minuman. Untuk command Back akan melakukan proses untuk kembali ke layar dafar makanan. Yang di tampilkan dari tampilan menu makanan adalah nama makanan dan juga harganya per porsi. Source code tampilan daftar makanan : void TampilanMakanan(String[] food){ String[] tampilan; tempFood = food; menuTampilMakanan = new List("Daftar Makanan", List.IMPLICIT); for (int i = 0; i< food.length; i++){ lokir(food[i]); tampilan = mindah; menuTampilMakanan.append(i+1 + " " + tampilan[1] + " - " + tampilan[2], null);} menuTampilMakanan.addCommand(DO_PESAN_CMD); menuTampilMakanan.addCommand(BACK_FOODCOURT_CM D); menuTampilMakanan.setCommandListener(this); Display.getDisplay(parent).setCurrent(menuTamp ilMakanan); }

Gambar 3.32 Tampilan daftar menu makanan

81 3.3.3.1.6 Proses Input Pesanan Isi dari layar input pesanan terdiri atas informasi makanan, dan textfield untuk memasukkan benyaknya pesanan yang dipilih oleh pelanggan. Berikut ini source code untuk menampilkan input pesanan.
void TampilanPesan(int indeks){ String isine; String[] pecah; isine = tempFood[indeks]; lokir(isine); pecah = mindah; buffFood= mindah; StringItem as = new StringItem(null, pecah[1] + " - " + pecah[2]); inputPesanan = new Form("Masukkan Pesanan"); inputPesanan.append(as); txtJmlh = new TextField("Jumlah : ", "", 3, TextField.NUMERIC); inputPesanan.append(txtJmlh); inputPesanan.addCommand(GET_PESAN_CMD); inputPesanan.addCommand(BACK_MAKANAN_CMD); inputPesanan.setCommandListener(this); Display.getDisplay(parent).setCurrent(inputPesanan) ; }

Gambar 3.33 Tampilan input jumlah

82 3.3.3.1.7 Proses Komplain Proses ini digunakan untuk melakukan komplain kepada foodcourt, data komplain dikirimkan dari client ke server. Client akan mengirimkan data kondisi INPUT_KOMPLAIN + id pelanggan + isi komplain. Kemudia reply message dari server berisi Id Komplain yang telah di masukkan ke dalam database.
Client Serv er

tampilan menu layanan Pilih Komplain

kirim data : INPUT_KOMPLAIN; idPelanggan;isiKomplain

Cek Data dari client proses input client

tampilan komplain telah diterima

kirim data id komplain

Gambar 3.34 Activity diagram proses komplain Source code yang digunakan untuk membuat tampilan input komplain adalah sebagai berikut. Dan tampilannya dapat dilihat pada gambar 3.35
inputKomplain = new Form("Masukkan Komplain"); txtKomplain = new TextField("Isi Komplain : ", "", 150, TextField.ANY); inputKomplain.append(txtKomplain); inputKomplain.addCommand(SEND_KOMPLAIN_CMD); inputKomplain.addCommand(BACK_MENU_CMD);

83
inputKomplain.setCommandListener(this) Display.getDisplay(parent).setCurrent(inputKomplain );

Gambar 3.35 Tampilan input komplain 3.3.3.2 APLIKASI CLIENT PADA RESTORAN

Gambar 3.36 Sistem akses menu makanan oleh restoran Dalam sistem aplikasi menu pemesanan makanan, pada masing-masing restoran terdapat sebuah komputer yang melakukan akses kepada server. Proses yang dilakukan pertama kali adalah melakukan login, setelah itu restoran akan melakukan request data pesanan kepada server.

84 3.3.3.2.1 User Interface web Web untuk aplikasi foodcourt client restoran di buat dengan menggunakan bahasa pemrograman PHP. Menu-menu yang ada pada web terdiri dari beberapa macam yang berfungsi untuk melakukan proses transaksi dan administrasi. Proses pada aplikasi web terbagi menjadi dua bagian yaitu untuk menangani pembayaran (kasir) dan menangani pesanan (foodcourt). Untuk lebih jelasnya dapat dilihat pada gambar 3.37 yang merupakan bagan dari menu-menu yang tersedia pada web.

Gambar 3.37 Menu atau link yang tersedia pada web foodcourt client restoran 3.3.3.2.2 Login Login digunakan untuk keamanan dan juga membedakan hak akses dari masing-masing user. Sehingga tampilan yang di tampilkan pada proses setelah login dapat diatur sesuai dengan hak akses-nya. Login berfungsi untuk membagi username dan password

85 sesuai dengan Nama Foodcourt atau sebagai Kasir. Source code untuk proses login adalah sebagai berikut
<? include "conn.php"; $Pass=$_POST[passw]; $sql=mysql_query("select * from tb_pegawai where ID_Foodcourt='$_POST[resid]' AND username='$_POST[uname]' and password='$Pass' AND status_aktif='1'"); $r=mysql_fetch_array($sql); if($r[username]==$_POST[uname] && $r[password]==$Pass && $r[ID_Foodcourt]==$_POST[resid]){ session_start(); session_register('usernames'); session_register('namas'); session_register('passwords'); session_register('idfoodcourt'); $_SESSION[usernames]=$r[username]; $_SESSION[namas]=$r[Nama]; $_SESSION[passwords]=$r[password]; $_SESSION[idfoodcourt]=$r[ID_Foodcourt]; if ($r[ID_Foodcourt] == 0){ header("location:sys_admin/syskasir.php"); } else { header("location:showpesanan.php"); } } else { ?> <center>Login Gagal<br><meta http-equiv="refresh" content="2;url="index.php""></center>

<? } ?> Pada gambar 3.38 merupakan tampilan dari form login untuk aplikasi web. Dari tampilan tersebut, terlihat bahwa terdapat combo box untuk melakukan pemilihan nama restoran dan terdapat text box untuk memasukkan username dan password.

86

Gambar 3.38 Login web foodcourt client restoran 3.3.3.2.3 Kasir Kasir menangani proses pembayaran. Setelah pelanggan melakukan pemesanan dan mendapatkan ID Pesan, maka selanjutnya adalah melakukan pembayaran ke kasir. Di kasir akan tampak daftar para pelanggan yang telah melakukan pesanan dan terlihat mana saja yang sudah membayar dan belum membayar. Jika pelanggan belum membayar maka yang tampil pada kolom status adalah warna merah dengan huruf B dan jika pelanggan sudah membayar maka yang tampil pada kolom status adalah huruf L. Seperti pada gambar 3.39, maka pada kasir juga memiliki menu untuk melihat, menambah, dan melakukan edit terhadap data pelanggan, restoran dan user.

87
Start Tampil Id Pesan, Nomer Meja, Total Bayar

Buka aplikasi restoran

N Login N Y Login Kasir OK? Y Start Monitoring pesanan N

Pembayaran

Pembayaran Lunas? Y Set Lunas

Cetak Bon Ada Pesanan Baru? End

Gambar 3.39 Flowchart proses pembayaran di kasir Sebagian source code untuk membuat proses kasir adalah sebagai berikut.
<? $sql="select a.*,b.Nama_Pelanggan from tb_pesan a,tb_pelanggan b where a.ID_Pelanggan=b.ID_Pelanggan order by a.ID_Pesan DESC"; $aio=mysql_query($sql);

88
echo "<br><table border=1 align='center' bordercolor='#FFFFFF' style='border-collapse: collapse'>"; echo "<tr bgcolor='CEBA94'> <td>No</td><td>Tanggal</td><td>ID Pesan</td><td>Meja</td> <td>Pelanggan</td><td>Total Bayar</td><td>MAC Address</td> <td>Status</td><td>Detil</td></tr>"; $i=1; while ($r=mysql_fetch_array($aio)) { if ($i%2 == 1){ $warna='#E6E6E6'; } else { $warna='#CFD9FF'; } echo "<td bgcolor='$warna'>".$i."</td>"; echo "<td bgcolor='$warna'>".$r[Tanggal]."</td>"; echo "<td bgcolor='$warna'>".$r[ID_Pesan]."</td>"; echo "<td bgcolor='$warna' align='center'>".$r[No_Meja]."</td>"; echo "<td bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>"; echo "<td bgcolor='$warna'>".$r[Total_Bayar]."</td>"; echo "<td bgcolor='$warna'>".$r[Pengenal]."</td>"; if ($r[Status] == 1){ $tulisanstatus = "L"; echo "<td bgcolor='$warna'><img src='../images/dolarkuning.gif' title='Lunas'>".$tulisanstatus."</td>"; } else { $tulisanstatus = "B"; echo "<td bgcolor='#FAA18C'><img src='../images/dolarmerah.gif' title='Belum Bayar'><a href='syskasir.php?cmd=stts&&z=$r[Status]&&idne=$r[ ID_Pesan]'>".$tulisanstatus."</a></td>"; } echo "<td bgcolor='$warna'> <a href='syscetak.php?idne=$r[ID_Pesan]'

89
target='_blank'> <img src='../images/printButton.png' border='0' title='Print Version'></a> <a href='sysdetil.php?idne=$r[ID_Pesan]'>Detil</a></td >"; echo '</tr>'; $i++; } ?>

Hasil implementasi dari proses-proses pembayaran yang terjadi di kasir tampak seperti pada tampilan gambar 3.40 berikut ini.

Gambar 3.40 Tampilan kasir 3.3.2.4 Foodcourt Aplikasi restoran akan menampilkan daftar pesanan pelanggan. Jika pelanggan melakukan pemesanan ke restoran 1, maka data daftar pesanan itu akan masuk ke dalam waiting list restoran 1, kemudian jika pesanan pelanggan sudah dilayani maka pesanan itu akan di set statusnya menjadi sudah dilayani dan akan hilang dari daftar waiting list restoran 1. Proses yang terjadi pada

90 aplikasi restoran dapat digambarkan dalam flowchart gambar 3.41 berikut ini:
Start

Buka aplikasi restoran

Login N Y N Login OK? Y Start Monitoring pesanan N Ada Pesanan?

Tampilkan daftar pesanan

Pesanan selesai?

Set sudah dilayani

End

Gambar 3.41 Flowchart aplikasi foodcourt client restoran Berikut ini merupakan source code yang menangani proses pada foodcourt:
<? $sss="SELECT tb_foodcourt.Nama_Foodcourt, tb_menu.Nama_Menu, tb_menu.Harga,tb_detil_pesan.ID_Detil_Pesanan, tb_detil_pesan.Jumlah, tb_detil_pesan.Total_Harga, tb_detil_pesan.Status AS sttsdetil, tb_pesan.Status as sttspesan, tb_pesan.No_Meja, tb_detil_pesan.Tanggal_Jam_Pesan,

91
tb_detil_pesan.Tanggal_Jam_Selesai, tb_pelanggan.Nama_Pelanggan FROM tb_foodcourt Inner Join tb_menu ON tb_foodcourt.ID_Foodcourt = tb_menu.ID_Foodcourt Inner Join tb_detil_pesan ON tb_menu.ID_Menu = tb_detil_pesan.ID_Menu Inner Join tb_pesan ON tb_pesan.ID_Pesan = tb_detil_pesan.ID_Pesan Inner Join tb_pelanggan ON tb_pelanggan.ID_Pelanggan = tb_pesan.ID_Pelanggan WHERE tb_foodcourt.ID_Foodcourt = '$_SESSION[idfoodcourt]' AND tb_detil_pesan.Tanggal_Jam_Pesan >= curdate() ORDER BY tb_detil_pesan.Tanggal_Jam_Pesan DESC"; $aio=mysql_query($sss); echo "<center><div color='white'>Daftar Pesanan</div></center>"; echo "<table border=1 align='center' bordercolor='#FFFFFF' style='border-collapse: collapse'>"; echo "<tr bgcolor='CEDB9C' align='center'> <td>No</td><td>Pelanggan</td><td>No Meja</td> <td>Tanggal Jam Pesan</td><td>Tanggal Jam Selesai</td> <td>Nama Menu</td><td>Harga</td><td>Jumlah</td> <td>Total Harga</td><td>Status</td> </tr>"; $i=1; while ($r=mysql_fetch_array($aio)) { if ($nomermeja==$r[No_Meja]){$warna='#E6E6E6'; } else{ $warna='#CFD9FF'; } if ($nomermeja==$r[No_Meja]){ echo "<tr>"; echo "<td bgcolor='$warna'>&nbsp;</td>"; echo "<td bgcolor='$warna'>&nbsp;</td>"; echo "<td bgcolor='$warna'>&nbsp;</td>"; echo "<td bgcolor='$warna'>&nbsp;</td>"; echo "<td bgcolor='$warna'>&nbsp;</td>"; } else { echo "<tr>";

92
$nomermeja=$r[No_Meja]; echo "<td bgcolor='$warna'>".$i."</td>"; echo "<td bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>"; echo "<td bgcolor='$warna'>".$r[No_Meja]."</td>"; echo "<td bgcolor='$warna'>".$r[Tanggal_Jam_Pesan]."</td>"; echo "<td bgcolor='$warna'>".$r[Tanggal_Jam_Selesai]."</td>"; $i++; $nomermeja=$r[No_Meja]; } echo "<td bgcolor='$warna'>".$r[Nama_Menu]."</td>"; echo "<td bgcolor='$warna'>".$r[Harga]."</td>"; echo "<td bgcolor='$warna'>".$r[Jumlah]."</td>"; echo "<td bgcolor='$warna'>".$r[Total_Harga]."</td>"; if ($r[sttspesan] == 0){ $bss=" <img src='images/dolarmerah.gif' title='Belum Bayar'>";} else{ $bss=" <img src='images/dolarkuning.gif' title='Lunas'>";} if ($r[sttsdetil] == 1){ $tulisanstatus = "OK"; echo "<td bgcolor='$warna'>$bss".$tulisanstatus."</td>"; } else { $tulisanstatus = "NOT OK"; echo "<td bgcolor='#CC3333'>$bss<a href='gantistatus.php?idne=$r[ID_Detil_Pesanan]'>". $tulisanstatus."</a></td>";s } echo '</tr>'; }} ?>

93

Gambar 3.42 Tampilan daftar pesanan foodcourt 3.3.2.5 Komplain Aplikasi web juga menampilkan daftar komplain yang dikirimkan oleh pelanggan.
<? $sql="select * from tb_komplain a,tb_pelanggan b WHERE a.ID_Pelanggan=b.ID_Pelanggan limit 0,10"; $aio=mysql_query($sql); echo "<table border=1 align='center' bordercolor='#FFFFFF' style='border-collapse: collapse'>"; echo "<tr><td colspan='5'><div id='menu3'>"; echo "<tr bgcolor='CEBA94'> <td>No</td> <td>Tgl Komplain</td> <td>Pelanggan</td> <td>Isi Komplain</td> <td>Status</td> </tr>"; $i=1; while ($r=mysql_fetch_array($aio)) {

94
if ($i%2 == 1){ $warna='#E6E6E6'; } else{ $warna='#CFD9FF'; } echo "<td bgcolor='$warna'>".$i."</td>"; //echo "<td bgcolor='$warna'>".$r[Tanggal_Komplain]."</td>"; $tgl_b=substr("$r[Tanggal_Komplain]",8,2); $bln_b=substr("$r[Tanggal_Komplain]",5,2); $thn_b=substr("$r[Tanggal_Komplain]",0,4); $jame=substr("$r[Tanggal_Komplain]",10,9); echo "<td bgcolor='$warna'>$tgl_b-$bln_b$thn_b $jame</td>"; echo "<td bgcolor='$warna'>".$r[Nama_Pelanggan]."</td>"; echo "<td bgcolor='$warna'>".$r[Isi_Komplain]."</td>"; } ...

Gambar 3.43 Tampilan daftar komplain

BAB 4 UJICOBA DAN ANALISA


Aplikasi untuk sistem pemesanan makanan pada foodcourt dengan memanfaatkan bluetooth pada telepon selular terdiri atas aplikasi pada server (komputer), aplikasi MIDlet pada client pelanggan (telepon selular) dan aplikasi Web PHP pada client restoran. Oleh karena itu pengujian akan dilakukan pada ketiga aplikasi pada saat pengolahan data, modifikasi data, dan proses komunikasi client-server via bluetooth.

4.1

Aplikasi Server (desktop) 4.1.1 Tampilan Server

Gambar 4.1 Tampilan Server Pada gambar 4.1. dapat dilihat bahwa layanan yang tersedia di server terdiri dari File, Koneksi, Foodcourt dan About dimana pada bagian File berisi sub menu exit untuk keluar aplikasi, Koneksi berisikan jenis koneksi yang akan dipilih, dalam kasus ini Bluetooth, Foodcourt berisikan sub menu Add Foodcourt untuk menambahkan restoran baru. Sedangkan pada bagian Help, berisikan sub menu About dan sub menu info hanya berisikan mengenai data dari pembuat program ini.

95

96 4.1.2 Tampilan Koneksi Pada gambar 4.2. merupakan tampilan yang akan muncul ketika dipilih Bluetooth pada Connection. Dan ketika menekan mulai, maka server akan secara otomatis menunggu apakah ada client yang mencoba untuk koneksi dengan server dan menggunakan layanan yang ditawarkan.

Gambar 4.2 Tampilan koneksi Bluetooth 4.1.3 Tampilan Add Foodcourt Aplikasi server memiliki fasilitas untuk mendaftarkan nama foodcourt yang baru. Tampilan form pada gambar 4.3 ini digunakan untuk melakukan input data terhadap foodcourt yang baru.

97

Gambar 4.3 Tampilan sub menu add foodcourt

4.2 Aplikasi Client Pelanggan (mobile)


Tampilan yang ada tentunya dipengaruhi oleh jenis dari mobile device yang digunakan. Mobile device yang dapat menjalankan layanan ini adalah yang merupakan MIDP 2.0. Namun sebelumnya layanan ini harus terlebih dahulu di install di mobile device yang ada.

Gambar 4.4 Tampilan shortcut client dan tampilan awal Gambar 4.4 merupakan tampilan saat installasi dan tampilan awal dari layanan Foodcout Client pada mobile device. Pada gambar

98 4.4 belum terjadi proses koneksi dan pengiriman data baik dari server maupun dari client.

4.3 Aplikasi Client Restoran dan Kasir (web)


4.3.1 Tampilan Login Tampilan yang muncul saat pertama kali melakukan akses ke aplikasi web adalah tampilan login. Sebelum melakukan prosesproses yang lain, yang harus dilakukan terlebih dulu adalah proses login.

Gambar 4.5 Form login aplikasi web foodcourt client 4.3.2 Tampilan Web Foodcourt Restoran Jika user melakukan login ke sistem foodcourt restoran, maka yang akan tampil adalah tampilan daftar pesanan yang harus dilayani oleh restoran, dan menu-menu yang tersedia adalah : Daftar Pesanan, Daftar Menu, History Daftar Pesanan. Daftar Pesanan berisi pesanan yang terjadi pada hari itu.

99

Gambar 4.6 Tampilan daftar pesanan Pada Daftar Menu berisi nama-nama menu yang disediakan oleh restoran, disini user bisa melakukan perubahan harga, menambah menu dan melakukan aktifasi maupun deaktifasi dari menu makanan atau minuman yang disediakan oleh restoran.

Gambar 4.7 Tampilan daftar menu History pesanan berisi daftar pesanan yang telah lalu, jika pada Daftar Pesanan hanya berisi pesanan pada hari ini. Maka pada History Daftar Pesanan berisi seluruh data pesanan yang harus dilayani oleh restoran.

100

Gambar 4.8 Tampilan history daftar pesanan 4.3.3 Tampilan Web Foodcourt Kasir Jika user melakukan login ke sistem foodcourt kasir, maka yang akan tampil adalah tampilan daftar pembayaran yang harus dilayani oleh kasir, dan menu-menu yang tersedia adalah : Kasir, Daftar Pelanggan, Daftar Restoran, Daftar User. Menu kasir berisi pesanan yang harus melakukan pembayaran yang terjadi pada hari itu. Gambar dolar ($) berwarna merah dengan huruf B pada kolom status menunjukkan bahwa pelanggan belum melakukan pembayaran. Sedangkan gambar dolar ($) dengan warna kuning dengan huruf L menunjukkan bahwa pelanggan telah melakukan pembayaran dan lunas.

Gambar 4.9 Tampilan kasir

101 Pada Daftar Pelanggan berisi nama-nama pelanggan yang terdaftar dalam sistem pemesanan bluetooth. Di dalam menu daftar pelanggan, user bisa melakukan penambahan pelanggan baru. Proses aktifasi dan juga deaktifasi pelanggan juga bisa dilakukan di sini. Sehingga pelanggan yang statusnya non aktif tidak bisa melakukan pemesanan.

Gambar 4.10 Tampilan daftar pelanggan Daftar Restoran berisi daftar restoran yang ada di dalam foodcourt. Di sini user bisa melakukan aktifasi dan deaktifasi restoran. User juga dapat melakukan penambahan restoran baru.

Gambar 4.11 Tampilan daftar restoran Daftar user berisi daftar nama-nama user atau pegawai yang berhak melakukan akses terhadap web foodcourt.

102

Gambar 4.12 Tampilan daftar user

4.4 Proses Komunikasi Client Server


Pada pengujian komunikasi client-server terdiri atas proses Bluetooth Discovery dan proses-proses yang berkaitan dengan proses transaksi untuk pemesanan makanan. Ketika ingin memanfaatkan layanan yang ada, maka perlu melakukan proses koneksi dengan server. Dimana client akan berusaha mencari apakah ada server yang ada di sekitarnya. Proses ini terus berjalan sampai client terhubung dengan server Berikut ini adalah diagram blok proses komunikasi client server.

Gambar 4.13 Diagram komunikasi client server

103 4.4.1 Proses Discovery Bluetooth Dalam membangun komunikasi client-server, client akan melakukan device discovery dan service discovery, sedangkan pada server akan menyediakan service untuk koneksi dengan client. Server akan menunggu koneksi dari client, apabila client telah menemukan bluetooth device dan service maka koneksi client-server akan terbangun dan pada MIDlet client akan menampilkan form untuk login. Proses discovery client pada server ditunjukkan pada gambar 4.14

Gambar 4.14 Proses discovery pada server dan client Apabila client tidak menemukan server bluetooth device, maka layar search (proses pencarian) akan menampilkan pesan No Bluetooth Service Found yang menunjukkan bahwa server bluetooth device tidak ditemukan. Pesan tersebut juga tampil jika client sudah menemukan server tetapi service yang di maksudkan tidak tersedia.

104

Gambar 4.15 Proses server atau service tidak ditemukan 4.4.2 Proses Login Pada proses login pelanggan akan mengisi form login untuk selanjutnya MIDlet client akan mengirimkan ke server. Jika data pada form login tidak di isi secara lengkap atau ada salah satu data yang kosong maka akan muncul alert bahwa Login tidak lengkap sehingga data tidak bisa dikirim ke server.

Gambar 4.16 Login tidak lengkap Apabila ada salah satu data login (username, dan password) yang dikirimkan oleh client salah pada saat validasi login, maka server akan mengirimkan pesan bahwa login invalid. Sehingga aplikasi MIDlet client akan menampilkan alert bahwa username atau password salah.

105

Gambar 4.17 Login yang dilakukan client invalid Apabilia data login yang dikirimkan oleh client valid, maka server akan mengirimkan data bahwa login valid dan kemudian client akan menampilkan pada layar sebuah MENU LAYANAN yang dapat dilihat pada gambar 4.18.

Gambar 4.18 Proses login yang valid pada client dan server

106 4.4.3 Proses Daftar Restoran Menu layanan yang memiliki beberapa macam menu. Saat pelanggan memilih menu Pilih Restoran dan Menu maka client akan mengirimkan data permintaan DAFTAR_FOODCOURT ke server. Kemudian server akan mengirimkan data pada client yang berupa data nama-nama restoran yang aktif dan MIDlet client akan menampilkan daftar restoran tersebut pada layar daftar restoran. Dari sini pelanggan akan memilih nama restoran untuk melihat menu makanan atau minuman yang tersedia.

Gambar 4.19 Proses Daftar Restoran 4.4.4 Proses Daftar Menu Setelah daftar restoran ditampilkan, selanjutnya pelanggan memilih salah satu nama restoran yang tersedia untuk melihat menu makanan atau minuman yang bisa di pesan. Proses yang terjadi adalah client mengirimkan permintaan DAFTAR_MENU dari restoran yang dipilih, kemudian server akan membalas dengan mengirimkan data daftar makanan atau minuman sesuai dengan permintaan client.

107

Gambar 4.20 Proses daftar makanan atau minuman 4.4.5 Proses Masukkan Jumlah Pesanan Setelah memilih menu, selanjutnya adalah memasukkan jumlah pesanan. Jumlah pesanan harus dimasukkan dengan benar . Jika data jumlah pesanan yang di inputkan salah maka akan tampil alert seperti pada gambar 4.21

Gambar 4.21 Proses memasukkan jumlah pesanan salah

108 Jika jumlah pesanan dimasukkan dengan benar, maka akan muncul info yang memberitahukan bahwa pesanan tersebut sudah dimasukkan dalam daftar pesanan, seperti terlihat pada gambar 4.22 berikut ini.

Gambar 4.22 Proses pesanan telah ditambahkan 4.4.6 Proses Menu Lihat Pesanan Pada menu lihat pesanan akan ditampilkan nama-nama makanan yang telah di pesan dan di kelompokkan berdasarkan nama foodcourt. Selain itu juga terdapat jumlah total yang harus dibayarkan.

Gambar 4.23 Proses lihat pesanan

109 Jika pemilihan menu makanan belum dilakukan maka yang muncul adalah tampilan kosong berupa tulisan bahwa pesanan belum dilakukan.

Gambar 4.24 Proses lihat pesanan kosong 4.4.7 Proses Pengiriman Transaksi Pesanan ke Server Jika pesanan yang dilakukan pelanggan sudah selesai, kemudian pelanggan melihat isi pesanan yang telah dilakukannya di menu Lihat Pesanan. Maka yang dilakukan selanjutnya adalah mengirimkan pesanan ke server. Sebelum pengiriman transaksi pesanan dilakukan, pelanggan akan dimintai nomer meja terlebih dulu seperti gambar 4.25 berikut ini.

Gambar 4.25 Proses input nomer meja

110 Setelah nomer meja dimasukkan maka pesanan akan di kirimkan ke server. Data akan dimasukkan ke dalam database, kemudian diakses oleh kasir dan masing-masing restoran.

Gambar 4.26 Proses pengiriman pesanan Setelah proses input pesanan selesai, maka server akan mengirimkan data berupa ID Pesanan, yang kemudian client akan manampilkan konfirmasi yang menunjukkan bahwa pesanan telah diterima dan segera di layani. Pesanan yang telah dikirimkan ke server, akan di tampilkan di kasir. Yang ditampilkan adalah tanggal, id Pesan, nomer meja, nama pelanggan, total bayar, MAC Address dan status pembayaran. Jika pembayaran belum dilakukan, maka yang keluar adalaha gambar dolar($) berwarna merah dengan huruf B, seperti pada gambar 4.27.

111

Gambar 4.27 Tampilan kasir, pelanggan belum membayar Pelanggan yang telah memesan akan, melakukan pembayaran ke kasir, kemudian jika pelanggan telah membayar maka pada kolom status, yang muncul adalah gambar dolar($) berwarna kuning dengan huruf L, seperti pada gambar 4.28.

Gambar 4.28 Tampilan kasir, pelanggan sudah membayar

112 Selain tampil pada kasir, pesanan yang baru saja dilakukan oleh pelanggan juga tampil di restoran. Pesanan yang belum dilayani oleh restoran statusnya akan berwarna merah. Namun Setelah dilayani maka statusnya akan berubah menjadi OK.

Gambar 4.29 Tampilan Foodcourt belum bayar belum dilayani

Gambar 4.30 Tampilan Foodcourt sudah bayar belum dilayani

113

Gambar 4.31 Tampilan Foodcourt sudah bayar sudah dilayani 4.4.8 Proses History Pesanan History pesanan merupakan menu yang digunakan untuk melihat pesanan yang pernah dilakukan oleh pelanggan. Namun history yang dapat ditampilkan hanya lima buah history terbaru.

Gambar 4.32 Proses history pesanan

114 4.4.9 Proses Detil History Detil history digunakan untuk melihat isi pesanan yang pernah dilakukan sesuai dengan ID pesanannya. Server akan melakukan query sesuai dengan ID pesanan yang di kirimkan oleh client. Yang ditampilkan pada detil history adalah ID pesanan, total pembelian, jumlah pembelian, dan nama-nama menu yang dipesan. Tampilan detil history dikelompokkan berdasarkan nama restoran.

Gambar 4.33 Tampilan Detil History server-client 4.4.10 Proses Komplain Proses komplain digunakan oleh client untuk melakukan komplain terhadap foodcourt. Komplain yang diterima server akan ditampilkan di halaman web. Halaman web akan menampilkan banyaknya komplain dengan warna merah. Dan jika link komplain di klik maka akan muncul daftar komplain.

115

Gambar 4.34 Tampilan input komplain Komplain yang telah ditangani diberi status OK sedangkan komplain yang belum ditangani akan memiliki status NOK. Komplain dapat dilihat oleh kasir maupun oleh restoran.

Gambar 4.35 Tampilan halaman komplain

116

4.5 Hasil percobaan Multi User


Proses pengujian pada koneksi Multi client ke server pada saat yang bersamaan, dengan USB bluetooth dongle dihubungkan ke PC (Personal Computer), jarak client ke server adalah maksimal sampai 10 meter dan tanpa penghalang. Untuk melakukan pengujian ini di gunakan beberapa jenis handphone yaitu: Nokia E50, Nokia 6120, dan Sony Ericsson K530i. Tabel 4.1 Pengujian waktu pencarian perangkat menggunakan HP Sony Ericsson K530i Proses Pencarian Perangkat (detik) Percobaan 1m 2m 5m 7m 10m 1 14,7 14,1 14,6 14 Error 2 13,9 14 13,9 error 17,4 3 13,8 13,9 13,9 26,5 14 4 13,9 13,9 13,9 13,9 21,7 5 13,9 13,9 13,9 14 13,6 Rata-rata 14,04 13,96 14,04 17,1 16,675 Tabel 4.2 Pengujian waktu pencarian perangkat menggunakan HP Nokia E50 Proses Pencarian Perangkat (detik) Percobaan 1m 2m 5m 7m 1 16,2 15 14,7 14,4 2 14,6 14,5 14,7 error 3 14,3 14,3 14,7 15,2 4 14,3 14,6 14,2 14,6 5 14,2 14,6 14,6 14,6 Rata-rata 14,72 14,6 14,58 14,7

10m 15,6 14,5 14,7 14,9 14,5 14,84

Dari data tabel 4.1 dan tabel 4.2 terlihat bahwa proses pencarian perangkat tergantung kepada merk HP yang digunakan. Berdasakan

117 rata-rata waktu pencarian perangkat, penggunaan HP Sony Ericsson lebih cepat namun tidak terlalu stabil, sedangkan Nokia lebih stabil walaupun agak lambat 0,475 detik. Tabel 4.3 Pengujian transfer data client server Transfer Data (detik) Percobaan 1m 2m 5m 7m 10m 1 2,4 3 3 3,1 3,2 2 2,8 3,4 3,4 3,3 3,4 3 3,5 3,2 3,3 3,4 3,4 4 3 3,1 3,4 3,2 3,2 5 3,1 3,1 3,1 3,1 3,3 Rata-rata 2,96 3,16 3,24 3,22 3,3 Tabel 4.4 Pengujian tiga client secara bersamaan dengan jarak 2 meter Pencarian Perangkat Transfer Data Percobaan E50 K530i 6120 E50 K530i 6120 1 18,2 14,2 14 2,8 2,5 3 2 15 14,1 15,5 3,4 2,4 3,4 3 14,8 14 14,4 3,3 2,6 3,2 4 14,8 13,9 14,3 3,4 2,4 3,1 5 14,8 14 14,3 3,4 2,4 3,1 Rata-rata 15,52 14,04 14,5 3,26 2,46 3,16 Jika dilihat dari hasil pengujian yang ditunjukkan pada tabel 4.3 dan 4.4, koneksi satu client dengan server dibandingkan koneksi antara tiga client dengan server menunjukkan perbedaan waktu yang tidak terlalu mencolok, hal ini dikarenakan penggunaan koneksi RFCOMM untuk membangun komunikasi client-server via bluetooth, dimana RFCOMM merupakan komunikasi point-to-point yang dapat menangani sampai tujuh client secara bersamaan tetapi koneksinya dilakukan satu-persatu seperti antrian, sehingga waktu

118 yang diperlukan untuk antara client satu dengan yang lain adalah berbeda walaupun pengiriman data dari client ke server adalah secara bersamaan. Layanan bluetooth ini mempunyai karakteristik dimana 1 bluetooth dongle hanya dapat diakses oleh 7 user. Mengingat bahwa foodcourt memiliki jumlah pengunjung yang banyak, maka salah satu cara agar semua pengunjung dapat menikmati layanan ini adalah disiapkan server lebih dari 1. Hal ini dikarenakan 1 server hanya dapat memiliki 1 bluetooth dongle. Pembatasan jumlah bluetooth dongle pada server bertujuan agar tidak terjadi bentrok pada saat pengiriman dan penerimaan data dari client yang berbeda

BAB V PENUTUP
5.1 KESIMPULAN Berdasarkan hasil ujicoba perangkat lunak dalam pengerjaan tugas akhir ini, dapat diambil beberapa kesimpulan yaitu: 1. Untuk membangun koneksi antara komputer dan telepon seluler menggunakan bluetooth dapat digunakan bahasa pemrograman JAVA. Perangkat lunak pada telepon seluler dibuat menggunakan J2ME, aplikasi ini akan dipasang di telepon selular. Syarat dari telepon seluler yang akan di gunakan adalah harus mendukung MIDP2.0 dan bluetooth API (JSR-82). Sedangkan untuk membuat perangkat lunak pada komputer diperlukan Java Bluetooth Stack dengan menggunakan Microsoft Bluetooth Stack API dan BlueCove. Microsoft Bluetooth Stack API adalah sebuah socket-style atau lebih sering disebut dengan WinSock. Stack ini adalah sebuah aplikasi untuk mengoperasikan generic USB Bluetooth Dongle. 2. Sistem pemesanan makanan dan minuman dengan menggunakan bluetooth ini terdiri dari tiga buah aplikasi, yaitu server (J2SE), client pelanggan (J2ME), dan client restoran(Web). Yang memiliki fitur untuk melihat daftar restoran, melihat daftar menu dan harga, melakukan pemesanan, melihat pesanan, melayani pembayaran, serta melihat pesanan yang harus dilayani. 3. Transaksi pemesanan makanan dan minuman dapat berjalan dengan baik, dimana menu makanan dan minuman masingmasing restoran yang ada di foodcourt dapat diakses oleh pelanggan. Transaksi pembayaran dapat di layani oleh kasir dan pesanan dapat dipantau dan dilayani dengan baik oleh restoran. 4. Layanan pengaksesan pemesanan makanan dan minuman menggunakan Bluetooth ini, dapat diakses oleh setiap user yang memiliki mobile device dengan kemampuan Bluetooth.

119

120
Tentunya harus mendukung teknologi Java MIDP 2.0 serta Java APIs for Bluetooth Wireless Technology (JSR) 5. Jarak rentang kerja bluetooth antara client-server sampai sejauh 10 meter tidak menurunkan performa transfer data untuk transaksi pemesanan. 6. Waktu yang diperlukan oleh seorang user untuk mengakses server (melakukan request data dan menerima replay data) dengan menggunakan koneksi RFCOMM, dipengaruhi oleh jumlah user yang sedang mengakses server tersebut. 5.2 SARAN Untuk perbaikan dan pengembangan aplikasi ini di masa yang akan datang, disarankan untuk : 1. Komunikasi client-server diperlukan acknowledge untuk mengetahui sukses tidaknya data yang dikirim oleh client maupun server. 2. Sistem pemesanan menggunakan media bluetooth bisa di kembangkan dengan mengganti atau menambah media komunikasinya menggunakan protokol TCP/IP dengan memanfaatkan WIFI atau langsung menggunakan jaringan internet (GPRS, EDGE, 3G). 3. Penambahan Sistem Informasi Manajemen untuk foodcourt sehingga aplikasi yang dibuat menjadi lebih sempurna. 4. Diperlukan proses enkripsi data pada request message dan reply message yang bertujuan untuk kerahasiaan data, dan juga diperlukan proses otentikasi yang bertujuan untuk mengetahui keaslian data.

121 DAFTAR PUSTAKA


[1]. Shalahuddin, M dan Rosa AS. Pemrograman J2ME Belajar Cepat Pemrograman Perangkat Telekomunikasi Mobile, Informatika, Bandung 2008. [2]. Raharjo, Budi, Imam Heryanto dan Arif Aryono. Tuntunan Pemrograman JAVA Untuk Handphone, Informatika, Bandung 2007. [3]. Hopkins, Bruce and Ranjith Antony. Bluetooth for Java, Apress, New York 2003 [4]. Kadir, Abdul. Dasar Pemrograman Web Dinamis Menggunakan PHP, Andi, Yogyakarta 2002. [5]. Murthi, Philipus Bayu. Sistem Keamanan Bluetooth, 2004. <http://www.budi.insan.co.id/courses/el7010/2004/bayuproposal.doc> [6]. Wikipedia, February 2007. BLUETOOTH <http://en.wikipedia.org/wiki/Bluetooth#Bluetooth> [7]. Ortiz, C, and Enrique. Using the Java APIs for Bluetooth Wireless Technology Part 1 - API Overview, Desember 2004, <http://developers.sun.com/techtopics/mobility/apis/article s/bluetoothintro/>

122

{Halaman ini sengaja dikosongkan}

BIODATA PENULIS Miftakh Arkhan Zein Taptozani


TTL : Lumajang, 11 April 1985. E-mail : z31nt@yahoo.com mzeint@gmail.com Blogg : http://z31nt.wordpress.com http://mif2.blogspot.com Pendidikan : SD Negeri Klakah 01 ( 1991 - 1997)

SLTPN 1 Sukodono Lumajang (1997 - 2000) SMK Telekomunikasi Sandhy Putra Malang (2002 - 2005) Joint Program D4 (PENS-ITS,VEDC Malang) Jurusan Teknik Informatika (2005 2009)

Selama dua tahun sebelum masuk ke SMK, penulis menjadi anak jalanan yang kemudian bertobat dan melanjutkan sekolah. Menjelang kuliah-kuliah akhir, penulis melakukan aktifitas kuliah sambil bekerja selama satu setengah tahun untuk mengatasi kejenuhan kuliah. Penulis bercita-cita menjadi pengusaha dan memiliki Yayasan sosial untuk anak-anak yatim dan kurang mampu. Semoga Allah Al Ghoniy Al Halim memberi kekuatan dan kemudahan. Amin ridho,

115

You might also like