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
Yuliana Setyowati, S.Kom, M.Kom NIP. 19780706.200212.2.003
Dosen Penguji II
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 wa’ala alihi wa shahbihi wa sallim. Segala puji dan syukur, kehadirat Allah SWT yang telah memberikan rahmat, cinta dan hidayah-Nya sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul: “PEMBUATAN APLIKASI MOBILE PEMESANAN MAKANAN DAN MINUMAN BERBASIS J2ME DAN BLUETOOTH” Buku tugas akhir ini disusun dan diajukan sebagai salah satu syarat untuk menyelesaikan program pendidikan Diploma IV di Politeknik Elektronika Negeri Surabaya – Institut Teknologi Sepuluh Nopember Surabaya. Dalam penyusunan Tugas Akhir ini, penulis berusaha untuk menerapkan ilmu yang telah didapat selama menjalani perkuliahan dengan tidak terlepas dari petunjuk, bimbingan, bantuan dan dukungan dari berbagai pihak. Tentu saja, dibalik semua usaha yang telah dilakukan, penulis menyadari bahwa masih banyak kekurangan di dalam penyusunan buku laporan proyek akhir ini, untuk itu penulis mohon maaf dan mengharapkan saran – saran serta kritik yang membangun dari pembaca. Dan tentunya semoga buku ini dapat bermanfaat agar dapat menghasilkan sumber daya manusia yang berkualitas, Amien. Malang, Juli 2009
Penulis
v
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 Mas’ud dan Syekh Muhammad Sholeh Hudi Muhyiddin Al Amin. 3. Ayah, Ibu dan adik-adik tercinta, yang selalu memberikan kasih sayang, pendidikan, pengarahan, pengawasan, dukungan dan doa kepada penulis. 4. Ibu Yuliana Setyowati S.Kom, M.Kom. dan Bapak Harits Ar Rosyid, S.T, M.T selaku dosen pembimbing, yang telah memberikan ide, masukan dan koreksi kepada penulis dalam menyusun Tugas Akhir ini. 5. Segenap Bapak dan Ibu dosen Jurusan Teknik Informatika Joint Program BA Malang dan Politeknik Elektronika ITS Surabaya atas segala kesabaran dan keikhlasannya dalam memberikan bimbingan, didikan dan perhatian serta ilmunya kepada penulis. 6. Iffa Zulfana, terima kasih atas perhatian dan kesabarannya. 7. Teman-teman “Begundal Tomini 24”, begur aang, hadi mesum, gatut pak dhe, kakek udun fajar, mouse rio, hafez, nenjap, inoyla, mbah farul, pras terima kasih atas persahabatan, kebersamaan, canda tawa, susah senang, dan semangat kekeluargaannya. 8. Teman-teman teamwork di server pulsa, terima kasih atas semua pengalaman yang tak terlupakan. 9. Teman-teman seangkatan V dan semua teman yang tidak dapat penulis sebutkan satu per satu, terima kasih atas semangat dan kebersamaannya. 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 ................................ ..........
1 2 2 2 3 4
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 ................................ ..........
5 5 6 7 8 9 10 11 12 13 14 14 15 16 16
vii
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
x
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.............................
xiii
105 105 106 107 107 108 108 109 109 110 111 111 112 112 113 113 114 115 115
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.
1
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:
Kelas
Tabel 2.1 Kelas-kelas Bluetooth Maksimum Power yang Jangkauan Maksimal diijinkan
Kelas 1
100 mW (20 dBm)
100 meter
Kelas 2
2,5 mW(4dBm)
10 meter
Kelas 3
1 mW (0 dBm)
1 meter
2.1.1
Spesifikasi Bluetooth Bluetooth spesifikasi di sini mengacu pada Java Specification Request 82 (JSR-82) dan juga Symbian Bluetooth API, mendefinisikan API-API yang terdapat dalam protokol bluetooth. 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
Aplikasi Desktop
Java EE – Java Enterprise Edition
Aplikasi enterprise dengan fokus pada pengembangan sisi web server, termasuk servlet, JSP, EJB dan XML
Java ME – Java Micro Edition
Perangkat Mobile
JavaCard
Smart Cards
Gambar 2 .3 Platform Java 2.2.1 J2SE (Java 2 Second Edition) Java 2 Second Edition atau yang lebih dikenal dengan J2SE adalah salah satu platform dari bahasa pemrogaman java yang diimplementasikan untuk aplikasi desktop. J2SE terdiri dari Java Runtime Environment (JRE) yang terdiri dari banyak library
11 standart. Sedangkan untuk Java Development Kit (JDK) adalah JRE yang ditambahkan development Tools & API. Untuk membuat aplikasi berbasis user interface, telah terdapat paket Abstract Window Toolkit (AWT) yang bergantung dari sistem operasi yang digunakan. User interface pada linux akan berbeda dengan user interface pada open solaris. Untuk membangun aplikasi user interface yang tidak bergantung pada sistem operasi yang digunakan dapat menggunakan paket Swing. Tampilan user interface akan selalu sama walaupun berpindah-pindah sistem operasi. 2.2.2 J2ME (Java 2 Micro Edition) Java ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat mobile. Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei, layar yang kecil dan bandwith jaringan yang rendah. Dengan perkembangan perangkat mobile dari telepon, PDA, kotak permainan hingga peralatan-peralatan rumah, Java menyediakan suatu lingkungan yang portable untuk mengembangkan dan menjalankan aplikasi pada perangkat ini. Program Java ME, seperti semua program Java adalah diterjemahkan oleh Virtual Machine (VM). Program-program tersebut dikompile ke dalam bytecode dan diterjemahkan oleh Java Virtual Machine (JVM). Ini berarti bahwa program-program tersebut tidak berhubungan langsung dengan perangkat keras. Java ME menyediakan suatu interface yang sesuai dengan perangkat keras. Aplikasi-aplikasi tersebut cukup dikompile sekali dan mampu dijalankan pada mesin yang berbeda. Inti dari Java ME terletak pada configuration dan 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
Keterangan
DiscoveryListener
mengijinkan aplikasi untuk menerima device discovery dan service discovery event.
L2CAPConnection
mewakili connection-oriented pada L2CAP channel.
L2CAPConnectionNotifier
menyediakan connection notifier.
StreamConnection
mewakili connection-oriented pada RFCOMM
StreamConnectionNotifier
menyediakan connection notifier pada RFCOMM
ServiceRecord
interface yang menjelaskan karakteristik dari Bluetooth service
20 Tabel 2.4 Class pada javax.bluetooth package Class
Keterangan
DataElement
Mendefinisikan berbagai macam data dimana Bluetooth mungkin mempunyai nilai service attribute.
DeviceClass
Mewakili class of device (CoD) record sebagai gambaran dari Bluetooth spesifikasi
DiscoveryAgent
Menyediakan method untuk melakukan pencarian Bluetooth dan service-nya (device discovery dan service discovery).
LocalDevice
Mendefinisikan fungsi dasar dari Bluetooth Manager.
RemoteDevice
Menggambarkan Bluetooth device yang berada di sekitar lokal Bluetooth device.
UUID
Mendefinisikan universally unique identifiers.
Tabel 2.5 Exception pada javax.bluetooth package Exception
Keterangan
BluetoothConnectionException BluetoothConnectionException akan diberikan ketika koneksi Bluetooth (L2CAP, RFCOMM, atau OBEX RFCOMM) tidak dapat dibangun.
21 BluetoothStateException
BluetoothStateException akan diberikan ketika ada permintaan ke Bluetooth systemdimana sistem tersebut tidak mendukung pada kondisi saat itu.
ServiceRegistrationException
ServiceRegistrationException akan diberikan ketika terjadi kegagalam dalam menambahkan service record ke dalam local Service Discovery Database (SDDB) atau pada saat merubah service record yang telah ada di SDDB
2.3.2 Device Management API Pada JABWT Class pada JABWT yang digunakan untuk device management yaitu javax.bluetooth.LocalDevice, javax.bluetooth.RemoteDevice, dan javax.bluetooth.DeviceClass, dimana class-class tersebut merupakan bagian dari Generic AccessProfile (GAP). 2.3.2.1 Local Device Local
Bluetooth
device
diwakili
oleh
javax.bluetooth.LocalDevice. Class ini menyediakan method
yang digunakan untuk mengatur dan mendapatkan local device dan informasi seperti Bluetooth address, device class, dan discovery agent. Beberapa method yang disediakan oleh javax.bluetooth.LocalDevice:
static LocalDevice getLocalDevice()
static method yang digunakan untuk mendapatkan LocalDevice object yang mewakili local Bluetooth device.
java.lang.String getBluetoothAddress()
22 Digunakan untuk mendapatkan alamat Bluetooth (Bluetooth address) dari local device. Alamat Bluetooth ditunjukkan dalam java.lang.String yang terdiri atas 12 karakter long desimal.
Java.lang.String getFriendlyName()
Digunakan untuk mendapatkan nama dari local device.
DiscoveryAgent getDiscoveryAgent()
Mengembalikan nilai discovery agent untuk Bluetooth device yang digunakan.
boolean setDiscoverable(int mode)
Digunakan untuk mengatur discoverable mode dari device.
Static java.lang.String getProperty(java.lang.String property)
Digunakan untuk mendapatkan Bluetooth system properties 2.3.2.2 Remote Device Remote
local
Bluetooth
diwakili oleh 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 )
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
kondisi
2.3.2.3 Device Class Class DeviceClass mewakili class of device (CoD) yang ditetapkan di Bluetooth specification. Class device yang mengidentifikasi menggunakan major, minor, dan service class. DeviceClass mendefinisikan beberapa method yaitu :
int getMajorDeviceClass()
Digunakan untuk mendapatkan major device class
int getMinorDeviceClass()
Digunakan untuk mendapatkan minor device class.
int getServiceClasses()
Digunakan untuk mendapatkan major service classes 2.3.2.4 Pencarian Device dan Service Pada JABWT (device and service discovery) Pada proses discovery (device dan service) tahap-tahapnya adalah sebagai berikut : Proses inisialisasi Proses ini merupakan proses untuk mendapatkan referensi objek LocalDevice. Metode yang digunakan untuk proses ini yaitu metode LocalDevice.getLocalDevice(). Objek LocalDevice berfungsi untuk memberikan akses ke bluetooth properties untuk device, seperti alamat bluetooth, nama bluetooth, dan discovery mode. Untuk mendapatkan objek DiscoveryAgent digunakan objek LocalDevice dengan memanggil metode LocalDevice.getDiscoveryAgent()
24
Proses device discovery Dengan menggunakan objek DiscoveryAgent, proses device discovery dan service discovery dapat dikerjakan. Untuk mendapatkan RemoteDevice yang telah ada, yang didapat dari proses device discovery sebelumnya metode yang digunakan yaitu metode retrieveDevices(). Jika ingin melakukan device discovery dapat dilakukan dengan memanggil metode startInquiry(), dan interface DiscoveryListener yang mempunyai metode deviceDiscovered(), yang berfungsi untuk mendeteksi apabila ada bluetooth device yang ditemukan. Untuk Bluetooth device yang ditemukan akan disimpan pada objek RemoteDevice Proses service discovery Dengan menggunakan objek DiscoveryAgent, proses service discovery dapat dikerjakan. Metode untuk service discovery yaitu searchServices(). Apabila service telah ditemukan, maka metode servicesDiscovered() akan dipanggil. servicesDiscovered() terdapat pada interface DiscoveryListener. Bluetooth service yang ditemukan akan disimpan pada objek ServiceRecord. Proses koneksi bluetooth. Dalam membangun koneksi via bluetooth diperlukan koneksi URL (Uniform Resource Locator) dari bluetooth device yang dipilih. Untuk mendapatkan koneksi URL metode yang digunakan yaitu getConnectionURL(), yang mengambil koneksi URL dari ServiceRecord. Setelah koneksi URL didapatkan, dilanjutkan dengan proses membangun koneksi dengan metode Connector.open(). Tipe koneksi yang digunakan ada dua yaitu L2CAP dan RFCOMM. Untuk mengetahui informasi dari remote device seperti nama bluetooth, dan alamat, dapat menggunakan metode getRemoteDevice(). Jika koneksi telah dibangun maka pengiriman dan penerimaan data siap untuk dilakukan
25
2.3.2.5 DiscoveryAgent 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:
2.5.2
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
lain:
Semua data disimpan pada server, sehingga manajemen sekuritas penuh berada pada server, hal ini menjadi baik dibandingkan dengan manajemen sekuritas data yang
35 tersebar, server menjamin siapa-siapa saja yang berhak mengakses data. Oleh karena storage terpusat, proses update data menjadi mudah untuk dilakukan daripada melakukan update data yang tersebar. Pada kasus peer to peer, update data dilakukan di setiap peer, hal ini tentunya sangat memakan waktu dan rentan terjadinya inkonsistensi data. Sedangkan kerugian dari penerapan arsitektur klien server antara lain:
Kongesti trafik menjadi masalah utama arsitektur klien server. Semakin banyak jumlah request client secara simultan, dapat mengakibatkan server dan jaringan kelebihan beban. Jika server mengalami kegagalan, maka request dari klien tidak dapat dipenuhi, hal ini berlaku untuk semua klien yang terkoneksi dengan server.
36
{Halaman sengaja dikosongkan}
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 “foodcourt”dan terdiri dari 9 tabel. Penjelasan dari masing-masing tabel termasuk seluruh atribut dan kegunaannya yang digambarkan pada model data fisik ini dapat dilihat pada tabel 3.1 sampai dengan tabel 3.9. Rancangan model database ditunjukkan pada gambar 3.2 berikut:
Gambar 3.2 Rancangan database
39 tb_komplain digunakan untuk menyimpan komplain dari pelanggan. tb_detil pesan dan tb_pesan digunakan untuk menangani proses pemesanan dan pembayaran. tb_foodcourt digunakan untuk menyimpan data nama-nama restoran. tb_pegawai berisi data pegawa, tb_pelanggan berisi data pelanggan. Untuk penjelasan dari masing-masing atribut untuk setiap tabel akan dijelaskan pada Tabel 3.1 sampai Tabel 3.9 di bawah ini: Tabel 3.1 tb_komplain Field
Tipe Data
ID_Komplain
int(8)
ID_Pelanggan
int(8)
Isi_Komplain Tanggal_Komplain Status
varchar(150) datetime smallint(1)
Key
Deskripsi
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
Field ID_Menu ID_Foodcourt Nama_Menu Harga Deskripsi Status_Aktif
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
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
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
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
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
Menunggu koneksi client ada client connect?
tidak ya
Melakukan koneksi bluetooth Mengirim Data
Menerima dan mengolah data Buka koneksi database hasil login
Login?
ya tidak
Daftar Restoran
ya
daftar menu
ya
request restoran? tidak request menu? tidak
daftar history
request history ?
ya tidak
input pesanan
ya
input pesanan? tidak input komplain?
input komplain ya
tampilkan pesan
Kirim Pesan
Tutup koneksi database
tidak
Tutup koneksi bluetooth
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
_ [] X
Server > Create server.... Server> Menunggu koneksi client... ...
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
tidak LOGIN_INVALID
tutup koneksi database tampilkan pesan
kirim pesan
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;
data = PESANAN_GAGAL;
tutup koneksi database tampilkan pesan
kirim pesan
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;
tidak data = KOMPLAIN_GAGAL;
tutup koneksi database tampilkan pesan
kirim pesan
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
Terima Pesanan
Order Menu
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
bluetooth aktif?
tidak
tampil pesan server tidak ditemukan
ya mencari foodcourt bluetooth server tidak ya
server ditemukan?
melakukan koneksi ke server tampil pesan tidak bisa konek server
tidak
timeout?
tidak form login
koneksi terbangun
kirim data login
proses validasi login
tidak ya pilih menu
pilih restoran
masukkan jumlah
kirim pesanan
tutup koneksi bluetooth
menunggu koneksi client
login ok?
input pesanan
receive bill
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
e.
f.
g.
h.
i. j. k.
l.
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
Back
Select
Siap melakukan koneksi….
Pencarian Server….
Username : Password :
Option
Back
72 Pilih Menu Makanan View Pesanan History Pesanan
Pilih Restoran: 1. Hoka hoka Bento 2. Jungle Juice 3. Bakso Sedap
Pilih Menu : Dorayak 20000 Katsudon25000 Mie 5000
Option
Back
Back
Select
Select
Pilih Menu Makanan View Pesanan History Pesanan
Daftar Pesanan: Dorayaki 4 Mie 2 No Meja:
Option
Option
Select
Select
Select
Dorayaki 20000 Jumlah :
Back
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 aplikasi pelanggan (J2ME) Select 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
ya tidak
ya
bluetooth device ditemukan?
proses service discovery
tampilan awal pembatalan proses.?
ya
tidak bluetooth service ditemukan?
tampilan error tidak tampilan login ya
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
lihat pesanan?
ya
tidak HISTORY_PE SANAN
ya
lihat history?
tidak INPUT_KOMP LAIN kirim data
tampilan hasil
tidak komplain?
ya pengolahan data dari client kirim hasil pengolahan data
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 { ?>
Login Gagal
<meta http-equiv="refresh" content="2;url="index.php"">
} ?> 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
Pembayaran
N Y Login Kasir OK?
Pembayaran Lunas?
Y
Y
Start Monitoring pesanan
Set Lunas
N 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 "
"; echo " No | Tanggal | ID Pesan | Meja | Pelanggan | Total Bayar | MAC Address | Status | Detil |
"; $i=1; while ($r=mysql_fetch_array($aio)) { if ($i%2 == 1){ $warna='#E6E6E6'; } else { $warna='#CFD9FF'; } echo "".$i." | "; echo "".$r[Tanggal]." | "; echo "".$r[ID_Pesan]." | "; echo "".$r[No_Meja]." | "; echo "".$r[Nama_Pelanggan]." | "; echo "".$r[Total_Bayar]." | "; echo "".$r[Pengenal]." | "; if ($r[Status] == 1){ $tulisanstatus = "L"; echo "".$tulisanstatus." | "; } else { $tulisanstatus = "B"; echo "".$tulisanstatus." | "; } echo "
89 target='_blank'> Detil | "; echo ''; $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
Tampilkan daftar pesanan
Login N
N Login OK?
Y Pesanan selesai?
Y Start Monitoring pesanan N
Y
Set sudah dilayani Ada Pesanan? 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 "Daftar Pesanan
"; echo ""; echo " No | Pelanggan | No Meja | Tanggal Jam Pesan | Tanggal Jam Selesai | Nama Menu | Harga | Jumlah | Total Harga | Status |
"; $i=1; while ($r=mysql_fetch_array($aio)) { if ($nomermeja==$r[No_Meja]){$warna='#E6E6E6'; } else{ $warna='#CFD9FF'; } if ($nomermeja==$r[No_Meja]){ echo ""; echo " | "; echo " | "; echo " | "; echo " | "; echo " | "; } else { echo "
";
92 $nomermeja=$r[No_Meja]; echo "".$i." | "; echo "".$r[Nama_Pelanggan]." | "; echo "".$r[No_Meja]." | "; echo "".$r[Tanggal_Jam_Pesan]." | "; echo "".$r[Tanggal_Jam_Selesai]." | "; $i++; $nomermeja=$r[No_Meja]; } echo "".$r[Nama_Menu]." | "; echo "".$r[Harga]." | "; echo "".$r[Jumlah]." | "; echo "".$r[Total_Harga]." | "; if ($r[sttspesan] == 0){ $bss=" ";} else{ $bss=" ";} if ($r[sttsdetil] == 1){ $tulisanstatus = "OK"; echo "$bss".$tulisanstatus." | "; } else { $tulisanstatus = "NOT OK"; echo "$bss". $tulisanstatus." | ";s } echo '
'; }} ?> …
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 "