Aplikasi Android Pemesanan Makanan Dan Minuman Berbasis Client Server
APLIKASI ANDROID PEMESANAN MAKANAN DAN
MINUMAN BERBASIS CLIENT SERVER
TUGAS AKHIR
RAHMI WIRATRI KHOIRUNNISA
102406190
PROGRAM STUDI D-3 TEKNIK INFORMATIKA
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGTAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2013
(2)
PERSETUJUAN
Judul
: APLIKASI ANDROID PEMESANAN
MAKANAN DAN MINUMAN BERBASIS
CLIENT SERVER
Kategori
: TUGAS AKHIR
Nama
: RAHMI WIRATRI KHOIRUNNISA
Nomor Induk Mahasiswa
: 102406190
Program Studi
: DIPLOMA (D3) TEKNIK INFORMATIKA
Departemen
: MATEMATIKA
Fakultas
: MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA
UTARA
Diluluskan di
Medan, Juli 2013
Komisi Pembimbing
:
Diketahui/Disetujui oleh
Pembimbing,
Departemen Matematika FMIPA USU
Ketua,
Prof. Dr. Tulus, M.Si
Drs. Sawaluddin, M.IT
Nip. 196209011988031002
Nip. 195912311998021001
(3)
PERNYATAAN
APLIKASI ANDROID PEMESANAN MAKANAN DAN
MINUMAN BERBASIS CLIENT SERVER
TUGAS AKHIR
Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Juni 2013
RAHMI WIRATRI KHOIRUNNISA
102406190
(4)
PENGHARGAAN
Seagala puji bagi Allah SWT, Rabb semesta alam, yang menggenggam setiap jiwa
tatkala hidup dan matinya, tempat mengadu dan meminta pertolongan, karena atas
rahmat dan kasih sayangNya penulis dapat menyelesaikan Tugas Akhir ini sesuai
dengan waktu yang telah ditetapkan. Shalawat berangkai salam tercuah kepangkuan
nabi Muhammad SAW.
Penyusunan Tugas Akhir ini masih banyak memiliki kekurangan karena
keterbatasan kemampuan dan pengetahuan penulis, sehingga diharapkan kritik dan
saran yang membangun serta dapat memberikan inspirasi yang baik untuk kemajuan
Tugas Akhir ini.
Tugas Akhir merupakan salah satu syarat yang harus dilakukan setiap
mahasiswa Teknik Informatika untuk dapat menyelesaikan pendidikan di Program
D-3 Teknik Informatika Fakultas Matematika dan Ilmu Pengetahuan Alam di
Universitas Sumatera Utara.
Pada kesempatan ini penulis juga menyampaikan terima kasih kepada seluruh
pihak yang sudah banyak membantu:
1.
Bapak Dr. Sutarman, M.Sc, selaku Dekan Fakultas Matematika dan Ilmu
Pengetahuan Alam di Universitas Sumatera Utara.
2.
Bapak Prof. Dr. Tulus, Vordipl, M.Si, Ph.D dan Dra. Mardiningsih, M.Si,
selaku ketua dan sekretaris Departemen Matematika di Universitas Sumatera
Utara.
3.
Bapak Drs. Sawaluddin, M.IT, selaku Dosen pembimbing pada penyelesaian
Tugas Akhir ini yang telah memberikan panduan dan penuh kepercayaan
kepada penulis untuk menyelesaikan kajian Tugas Akhir ini.
(5)
5.
Teristimewa untuk kedua orang tua saya tercinta, Ayahanda Alm. Syamsul
Bachri, dan Ibunda Almh. Misbariah Dirmiati yang selalu memberikan doa,
semangat serta mendukung saya semasa hidup mereka untuk kesuksesan saya.
6.
Kedua Abang Saya, Rizka Dwi Tama dan Hasta Tri Angga serta kakak saya
Diah Perdana Nugraheny yang selalu mendaoakan dan mendukung saya dan
Keluarga untuk segenap doa dan dukungannya.
8. Seluruh rekan-rekan dari D-3 Teknik Informatika FMIPA USU, khususnya
Komputer C 2010, terimakasih atas saran dan kritik dalam penyusunan
Tugas Akhir ini.
Semoga Allah SWT akan membalas dengan rahmatNya
kepada kita
semua. Amin.
Akhirnya dengan kerendahan hati penulis mempersembahkan Tugas Akhir ini,
semoga Tugas Akhir ini dapat bermanfat bagi pembaca. Dan penulis menyadari bahawa
dalam Tugas Akhir ini terdapat banyak kesalahan dan kekurangan, untuk itu penulis
sangat mengaharapkan kritik dan saran dari semua pihak guna menyempurnakan laporan
dimasa yang akan datang.
Medan, Juni 2013
Penulis
Rahmi Wiratri Khoirunnisa
102406190
(6)
ABSTRAK
Pada penulisan Tugas Akhir ini, penulis akan membuat aplikasi pemesanan makanan
dan minuman yang berbasis client server pada Warung Mbak Ami menggunakan
platform Android. Android adalah sistem operasi mobile menggunakan versi
modifikasi dari kernel Linux. Tidak hanya dipakai untuk melakukan fungsi mobile
seperti sms (short messaging service), telepon, ataupun browsing, android kini banyak
digunakan untuk keperluan lainnya seperti pemesanan makan di restoran atau tempat
makan lainnya. Penggunaan mobile android untuk mencatat pesanan dapat
menggantikan kertas dan pena / pensil yang selama ini dipakai. Aplikasi pemesanan
makanan dan minuman ini memakai komputer di sisi server dapur dan kasir mobile
android di sisi client pemesanan (pelayan). Dimana ketika pelayan menerima
pemesanan makanan dari pengunjung akan di input di mobile android dan view di
bagian dapur dan kasir. Bahasa pemrograman yang membaca inputan dari sisi client
di dapur menggunakan script PHP. Script PHP menerima data, dan selanjutnya akan
membangkitkan perintah MySQL dalam bentuk query dan memanggil stored
procedure yang ada pada server basis data. Hal ini bertujuan memberikan solusi
alternatif untuk pemesanan makanan dan minuman dengan menggunakan mobile
android.
(7)
DAFTAR ISI
Halaman
Persetujuan
ii
Pernyataan
iii
Penghargaan
iv
Abstrak
v
Daftar Isi
vii
Daftar Tabel
viii
Daftar Gambar
ix
BAB 1 PENDAHULUAN
1
1.1 Latar Belakang Masalah
1
1.2 Identifikasi Masalah
2
1.3 Batasan Masalah
2
1.4 Rumusan Masalah
3
1.5 Tujuan
3
1.6 Manfaat
3
1.7 Sistematika Penulisan
4
BAB 2 LANDASAN TEORI
5
2.1 Pengertian Aplikasi
5
2.2 Pengenalan Android
5
2.3 Client Server
10
2.4 Pengenalan Yii Framework
12
2.5 Pengenalan Netbeans IDE 7.2
13
2.6 Android SDK (Software Development Kit)
14
2.7 Eclipse
15
2.8 Flow Chart
18
BAB 3 PERANCANGAN SISTEM
21
3.1 Gambaran Umum Perancangan Sistem
21
3.2 Algoritma
22
3.3 Database
25
3.4 Flow Chart
28
BAB 4 ANALISA DAN HASIL PEMBAHASAN
33
4.1 Pembuatan Program
33
BAB 5 KESIMPULAN DAN SARAN
37
5.1 Kesimpulan
37
(8)
DAFTAR TABEL
Halaman
Tabel 2.1 Flow Chart
18
Tabel 3.1 tbl_jenis_menu
25
Tabel 3.2 tbl_meja
25
Tabel 3.3 tbl_menu
25
Tabel 3.4 tbl_penjualan
26
Tabel 3.5 tbl_penjualan_menu
26
Tabel 3.6 tbl_profiles
26
Tabel 3.7 tbl_stok
27
Tabel 3.8 tbl_user
28
(9)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Tampilan Lembar Kerja Eclipse (Juno)
15
Gambar 2.2 Tampilan Menu Bar
16
Gambar 2.3 Tampilan Toolbar
16
Gambar 2.4 Tampilan Jendela Project
16
Gambar 2.5 Tampilan Jendela Navigator
16
Gambar 2.6 Tampilan Jendela Source Code
17
Gambar 2.7 Tampilan Graphical Layout
17
Gambar 3.1 Tampilan Form Login Aplikasi
22
Gambar 3.2 Tampilan Form Menu Utama Aplikasi
23
Gambar 3.3 Tampilan List Pemesanan Aplikasi
24
Gambar 3.4 Tampilan List Menu Server
24
Gambar 3.5 Tampilan Detail Pembayaran Server
25
Gambar 3.6 Flow Chart Login Aplikasi
28
Gambar 3.7 Flow Chart Menu Utama Aplikasi
29
Gambar 3.8 Flow Chart Halaman Pemesanan
30
Gambar 3.9 Flow Chart Ubah Pemesanan
31
Gambar 3.10 Flow Chart Pembayaran
32
Gambar 4.1 Tampilan Form Login Android
33
Gambar 4.2 Tampilan Form Menu Utama Android
34
Gambar 4.3 Tampilan List Pemesanan Android
35
Gambar 4.4 Tampilan List Menu Server
36
Gambar 4.5 Tampilan Detail Pembayaran Server
36
(10)
ABSTRAK
Pada penulisan Tugas Akhir ini, penulis akan membuat aplikasi pemesanan makanan
dan minuman yang berbasis client server pada Warung Mbak Ami menggunakan
platform Android. Android adalah sistem operasi mobile menggunakan versi
modifikasi dari kernel Linux. Tidak hanya dipakai untuk melakukan fungsi mobile
seperti sms (short messaging service), telepon, ataupun browsing, android kini banyak
digunakan untuk keperluan lainnya seperti pemesanan makan di restoran atau tempat
makan lainnya. Penggunaan mobile android untuk mencatat pesanan dapat
menggantikan kertas dan pena / pensil yang selama ini dipakai. Aplikasi pemesanan
makanan dan minuman ini memakai komputer di sisi server dapur dan kasir mobile
android di sisi client pemesanan (pelayan). Dimana ketika pelayan menerima
pemesanan makanan dari pengunjung akan di input di mobile android dan view di
bagian dapur dan kasir. Bahasa pemrograman yang membaca inputan dari sisi client
di dapur menggunakan script PHP. Script PHP menerima data, dan selanjutnya akan
membangkitkan perintah MySQL dalam bentuk query dan memanggil stored
procedure yang ada pada server basis data. Hal ini bertujuan memberikan solusi
alternatif untuk pemesanan makanan dan minuman dengan menggunakan mobile
android.
(11)
BAB 1
PENDAHULUAN
1.1
Latar Belakang
Teknologi informasi dan telekomunikasi saat ini sangat diperlukan untuk memberikan
kemudahan bagi penggunanya. Munculnya beragam aplikasi memberikan pilihan
dalam peningkatan kinerja suatu pekerjaan, baik yang besifat dekstop based, web
based . Hingga yang sekarang ini munculnya aplikasi-aplikasi baru yang berjalan
dalam mobile pada sistem platform android.
Pemilihan mobile android untuk salah satu pengembangan aplikasi selain lebih
mudah dalam pengoperasiannya, karena sifat dari mobile yang fleksibel menjadi salah
satu alasannya. Saat ini muncul teknologi baru dimana komunikasi tanpa
menggunakan kabel, seperti dengan menggunakan Media Internet yang bersifat client
server pada mobile android. Sebagai pendatang baru yang sudah mulai popular
didunia komunikasi data client server mulai memberikan beberapa solusi dan layanan
yang bisa diimplementasikan dalam kehidupan sehari-hari. Salah satu implementasi
client server yang populer adalah pada peralatan mobile yang digunakan untuk
pertukaran data.
Penggunaan media client server pada platform android untuk Warung Mbak
Ami akan memudahkan proses pemesanan, karena 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
bertumpuknya nota pemesanan terutama pada saat ramai pengunjung.
Pemakaian sistem aplikasi pesan makan dan minum untuk memudahkan
proses kerja dalam lingkungan Warung mbak Ami. Biasanya pemesanan dilakukan
(12)
secara manual, yaitu saat pelanggan datang dan memesan makanan, pelayan datang ke
meja pelanggan dan mencatat seluruh pesanan menggunakan kertas, kemudian
mengantarkan catatan pemesanannya kepada koki di dapur. Keuntungan
menggunakan aplikasi ini adalah pemesan dapat memesan makanan hanya dengan
sentuhan pada menu-menu yang terdapat dalam aplikasi ini.
1.2
Identifikasi Masalah
Dengan dibuatnya aplikasi pemesanan makanan dan minuman ini diharapkan mampu
meminimalkan penggunaan kertas, serta memperkecil kemungkinan redudansi data
(data yang bertumpuk). Aplikasi ini juga memudahkan pelayan restoran untuk
mencatat pesanan tanpa harus menulis, selain itu memudahkan koki karena setelah
pelanggan memesan menu, menu-menu tersebut akan langsung masuk kedalam
database dan koki dapat melihat pesanan dari monitor yang tersedia. Kemudian juga
memudahkan kasir, karena jumlah pembayaran otomatis terhitung. Kasir tidak perlu
mengitung jumlah pembayaran lagi.
1.3
Batasan Masalah
Pada penyelesaian proyek akhir ini terdapat beberapa batasan masalah yang dikaitkan
dengan perancangan dan implementasi aplikasi pemesanan makanan dan minuman
berbasis client server dengan platform android, antara lain:
1.
Hanya membahas pembuatan aplikasi android dan client-server.
2.
Aplikasi ini hanya berjalan pada mobile yang memiliki profil dan konfigurasi
platform android dan didukung jaringan wireless.
3.
Tidak membahas tentang keamanan (security) di dalam aplikasi yang dibuat.
4.
Dapur dan kasir mengunakan komputer dengan antarmuka berbasis web
(13)
1.4
Rumusan Masalah
Maka rumusan masalah yang dapat diambil pada pembuatan aplikasi ini adalah:
1.
Bagaimana merancang aplikasi pemesanan makanan dan minuman
menggunakan platform android berbasis client server?
2.
Bagaimana proses aplikasi pemesanan makanan dan minuman dengan mobile
android ini dapat memberitahu pesanan pelanggan ke bagian dapur dan kasir?
1.5 Tujuan
Tujuan yang ingin dicapai pada pembuatan aplikasi pemesanan makanan dan
minuman ini adalah :
1.
Untuk penyelesaian tugas akhir yang merupakan syarat kelulusan program D3
Teknik Informatika Universitas Sumatera Utara.
2.
Merancang aplikasi pemesanan makanan dan minuman menggunakan
platform android berbasis client server.
3.
Aplikasi pemesanan makanan dan minuman dengan mobile android ini dapat
memberitahu pesanan pelanggan ke bagian dapur dan kasir.
1.6
Manfaat
Manfaat yang bisa diambil dari pembuatan aplikasi pemesanan makanan dan
minuman ini adalah :
1.
Memudahkan pelayan restoran dalam mencatat pesanan tanpa perlu menulis
dan menggunakan kertas
2.
Memudahkan kasir tanpa perlu menghitung jumlah pembayaran karena setelah
dipesan langsung terhitung secara otomatis.
(14)
1.7
Sistematika Penulisan
Maksud dan tujuan dari pembuatan sistematika penulisan tugas akhir ini adalah untuk
mempermudah penulis dalam membuat dan menyelesaikan permasalahan yang
dianalisis oleh penulis sehingga lebih terarah dan lebih terfokus serta diuraikan bab
per-bab. Sistematika penulisan laporan ini adalah :
BAB 1 : Mengenai latar belakang pembuatan tugas akhir ini, identifikasi, batasan
dan rumusan masalah, tujuan, serta manfaat dari tugas akhir ini.
BAB 2 : Landasan teori tentang masalah yang sedang dibahas pada tugas akhir ini.
Masalah yang penulis pilih adalah tentang pembangunan sebuah aplikasi
Pemesanan makanan dan minuman berbasis client server pada warung
mbak ami menggunakan platform android.
BAB 3 : Pada bab ini penulis menjelaskan tentang perancangan aplikasi pemesanan
makanan dan minuman ini.
BAB 4 : Menyajikan tentang pengertian implementasi sistem, Tujuan implementasi
sistem, komponen utama dalam implementasi sistem, spesifikasi
program, serta pemeliharaan sistem.
BAB 5 : Mengenai kesimpulan dari masalah yang dibahas dan saran untuk
Kemajuan.
(15)
BAB 2
LANDASAN TEORI
Pada bab ini akan dijelaskan tentang landasan teori yang mendukung penyelesaian
aplikasi untuk tugas akhir ini. Ada beberapa sub pokok pembahasan lainnya yang
menjadi landasan dalam pembuatan tugas akhir ini.
2.1
Pengertian Aplikasi
Perangkat lunak aplikasi adalah suatu subkelas perangkat lunak komputer yang
memanfaatkan kemampuan komputer langsung untuk melakukan suatu tugas yang
diinginkan pengguna. Biasanya dibandingkan dengan perangkat lunak sistem yang
mengintegrasikan berbagai kemampuan komputer, tapi tidak secara langsung
menerapkan
kemampuan
tersebut
untuk mengerjakan
suatu
tugas
yang
menguntungkan pengguna.
2.2 Pengenalan Android
Android adalah sistem operasi yang berbasis Linux untuk telepon seluler seperti
telepon pintar dan komputer tablet. Android menyediakan platform terbuka bagi para
pengembang untuk menciptakan aplikasi mereka sendiri untuk digunakan oleh
bermacam peranti bergerak. Awalnya, Google Inc. membeli Android Inc., pendatang
baru yang membuat peranti lunak untuk ponsel. Kemudian untuk mengembangkan
Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti
keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola,
Qualcomm, T-Mobile, dan Nvidia.
(16)
Pada saat perilisan perdana Android, 5 November 2007, Android bersama
Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada
perangkat seluler. Di lain pihak, Google merilis kode–kode Android di bawah lisensi
Apache, sebuah lisensi perangkat lunak dan standar terbuka perangkat seluler.
Di dunia ini terdapat dua jenis distributor sistem operasi Android. Pertama
yang mendapat dukungan penuh dari Google atau Google Mail Services (GMS) dan
kedua adalah yang benar–benar bebas distribusinya tanpa dukungan langsung Google
atau dikenal sebagai Open Handset Distribution (OHD).
2.2.1
Sejarah dan Versi-Versi Android
Pada Juli 2005, Google bekerjasama dengan Android Inc., perusahaan yang berada di
Palo Alto, California Amerika Serikat. Para pendiri Android Inc. bekerja pada Google,
di antaranya Andy Rubin, Rich Miner, Nick Sears, dan Chris White. Saat itu banyak
yang menganggap fungsi Android Inc. hanyalah sebagai perangkat lunak pada telepon
seluler. Sejak saat itu muncul rumor bahwa Google hendak memasuki pasar telepon
seluler. Di perusahaan Google, tim yang dipimpin Rubin bertugas mengembangkan
program perangkat seluler yang didukung oleh kernel Linux. Hal ini menunjukkan
indikasi bahwa Google sedang bersiap menghadapi persaingan dalam pasar telepon
seluler.
Sejak munculnya sistem operasi Android, sistem operasi Android terus
mengalami peningkatan versi diawali dengan versi beta hingga versi yang baru saja di
release yaitu versi 4.1 Jelly Bean.
a.
Android Beta
Pertama kali dirilis pada tanggal 5 November 2007, kemudian pada 12 November
2007 Software Development Kit (SDK) dirilis oleh Google.
b.
Android 1.0 (Astro)
Pertama kali dirilis pada 23 Spetember 2008. Sebenarnya Android versi pertama ini
akan dinamai dengan nama "Astro" tapi karena alasan hak cipta dan trademark
(17)
nama"Astro" tidak jadi disematkan pada versi pertama dari OS Android ini. HTC
Dream adalah ponsel pertama yang menggunakan OS ini.
c.
Android 1.1 (Bender)
Versi ini dirilis pada 9 Maret 2009, yang muncul dengan pembaruan terhadap estetika
pada aplikasi, jam alarm, voice search (pencarian suara), pengiriman pesan dengan
Gmail, dan pemberitahuan email. Namun versi Android kedua ini juga mengalami
masalah penamaan yang sama dengan versi pertamanya. Pada awalnya Android ini
akan diberi nama "Bender" akan tetapi karena alasan melanggar trademark, nama
"Bender" tidak jadi disematkan pada versi Android ini. Awalnya versi OS Android ini
dirilis untuk perangkat T-Mobile G1 saja. Versi ini merupakan update untuk
memperbaiki beberapa bugs, mengganti API dan menambahkan beberapa fitur.
Berikut penampakan home screen OS Android v.1.1.
d.
Android versi 1.5 (Cupcake)
Pertama kali dirilis pada 30 April 2009. Cupcake atau dalam terjemahan bebas berarti
kue cawan. Mulai versi Android ini penamaan menggunakan nama makan pencuci
mulut (dessert) mulai digunakan, karena ini merupakan versi yang ketiga maka
penamaan diawali dengan huruf "C" dan jadilah "Cupcake" menjadi nama resmi dari
versi OS Android ketiga ini. Ada beberapa pembaruan dan juga penambahan beberapa
fitur pada versi ini yaitu adanya kemampuan untuk merekam dan menonton video
pada modus kamera, mengupload video ke Youtube dan gambar ke Picasa secara
langsung, dukungan Bluetooth A2DP, animasi layar, dan keyboard pada layar. OS ini
berbasiskan pada kernel Linux 2.6.27.
e.
Android versi 1.6 (Donut)
Versi ini dirilis pada September 2009. Donut dikenal juga dengan kue berlubang
dipakai sebagai nama alias dari versi Android 1.6. Versi ini dirilis mempunyai
kemampuan proses pencarian yang lebih baik dibanding sebelumnya, penggunaan
baterai indikator dan kontrol applet VPN. Serta ada tambahan fitur galeri yang
(18)
memungkinkan pengguna untuk memilih foto yang akan dihapus. Versi ini telah
mampu diintegrasikan dengan CDMA / EVDO, 802.1x, VPN, Gestures, dan
Text-to-speech engine.
f.
Android 2.0/2.1 Eclair
Versi ini dirilis pada 9 Desember 2009. Eclair adalah kue sus yang berbentuk panjang
dengan toping coklat diatasnya. Ada penambahan fitur untuk pengoptimalan
hardware, peningkatan Google Maps 3.1.2, perubahan UI dengan browser baru dan
dukungan HTML5, daftar kontak yang baru, dukungan flash untuk kamera 3,2 MP,
digital Zoom, dan Bluetooth 2.1. Beberapa versi updatenya antara Android v.2.0
kemudian v2.0.2 dan terakhir v.2.1.
g.
Android versi 2.2 (Froyo)
Versi ini dirilis pertamakali pada 20 Mei 2010. Froyo (Frozen yoghurt) adalah
yoghurt (susu yang dibuat melalui fermentasi bakteri) yang dibekukan mirip seperti
ice cream. Froyo dipakai sebagai nama alias dari sistem operasi Android versi 2.2.
Pada versi ini sudah support terhadap Adobe Flash Player 10.1. Peningkatan pada
kecepatan membuka dan menutup aplikasi, serta penggunaan SD Card sebagai tempat
penyimpanan aplikasi. Ketika Android Froyo hadir mulai muncul banyak diskusi yang
membahas mengenai persaingan antara Android dengan iOS yang akan semakin ketat
di masa yang akan datang. Beberapa versi update yang dirilis antara lain Android
v.2.2.1 hingga v.2.2.3.
h.
Android 2.3 Gingerbread
Versi ini dirilis pada 6 Desember 2010. Gingerbread adalah kue yang terbuat dari
jahe, biasanya berbentuk boneka sering disajikan sebangai teman minum kopi.
Gingerbread dipakai sebagai nama alias dari sistem operasi Android versi 2.3 Terjadi
banyak peningkatan pada versi Android yang satu ini dibandingkan dengan versi
sebelumnya. Dirancang untuk memaksimalakan kemampuan aplikasi dan game. Serta
(19)
mulai digunakannya Near Field Communication (NFC). Perbaikan terhadap
dukungan layar resolusi WXGA dan diatasnya. Beberapa versi update yang dirilis
antara lain v.2.3.3 hingga v.2.3.7. Sampai saat ini Android Gingerbread merupakan
versi Android yang memiliki pengguna terbanyak dibandingkan dengan seri Android
lainnya, yaitu mencapai 65% dari seluruh versi Android yang dirilis.
i.
Android versi 3.0 (Honeycomb)
Versi ini dirilis pada 22 Februari 2011. Honeycomb atau sarang madu adalah bagian
dari hasil lebah yang dimanfaatkan selain dari madunya itu sendiri. Honeycomb
dipakai sebagai nama alias dari sistem Android versi 3.0 Android versi ini merupakan
OS yang didesain khusus untuk pengoptimalan pengunaan pada tablet PC.
j.
Android versi 4.0 (Ice Cream Sandwich)
Versi dirilis pada 19 Oktober 2011. Ice Cream, tentu saja kita tahu karena ini adalah
minuman atau tapatnya makanan yang sangat disukai terutama oleh anak kecil . Ice
Cream dipakai sebagai nama alias dari Android versi 4.0. Smartphone yang pertama
kali mengunakan OS Android ini adalah Samsung Galaxy Nexus. Secara teori semua
perangkat seluler yang menggunakan versi Android sebelumnya, Gingerbread, dapat
di-update ke Android Ice Cream Sandwich. Namun sayangnnya sampai saat ini
kebanyak smartphone yang menggunakan Android ICS merupakan smartphone kelas
high-end yang dijual dengan harga cukup mahal. Mungkin karena alasan inilah
distribusi versi Android satu ini tidak lebih dari 8% sampai pertangahn tahun 2012.
k.
Android versi 4.1 (Jelly Bean)
Versi Android Jelly Bean adalah versi Android yang terbaru. Android Jelly Bean yang
diluncurkan pada acara Google I/O lalu membawa sejumlah keunggulan dan fitur
baru. Penambahan baru diantaranya meningkatkan input keyboard, desain baru fitur
pencarian, UI yang baru dan pencarian melalui Voice Search yang lebih cepat. Tak
ketinggalan Google Now juga menjadi bagian yang diperbarui. Google Now
memberikan informasi yang tepat pada waktu yang tepat pula. Salah satu
(20)
kemampuannya adalah dapat mengetahui informasi cuaca, lalu-lintas, ataupun hasil
pertandingan olahraga. Sistem operasi Android Jelly Bean 4.1 muncul pertama kali
dalam produk tablet Asus, yakni Google Nexus 7.
2.3 Client Server
Diawal perkembangannya perangkat komputer adalah barang yang mahal dan mewah.
Pengembangan dan pengoperasiannya rumit dan terpusat. Namun seiring dengan
berjalannya waktu yang tadinya prosesnya tersentralisasi dikembangakan menjadi
proses terdistribusi sampai pada end user. Hal ini sangat dipengaruhi oleh adanya
perkembangan teknologi LAN (Local Area Network) di pertengahan tahun 1980 an.
Dengan LAN sebuah PC dapat melakukan komunikasi satu dengan lainnya dan dapat
saling berbagi resource baik perangkat keras ataupun database. LAN mampu
memberikan interkonektivitas yang tidak pernah ada sebelumnya. Untuk dapat
melakukan hal tersebut dibutuhkan sebuah komputer proses yang memfasilitasi dan
melayani proses sharing semua resource yang ada. Perangkat ini disebut dengan
Server.
Untuk melakukan Sharing File biasanya dibutuhkan sebuah File Server begitu
juga untuk sharing Printer dibutuhkan sebuah Printer Server. Namun ternyata hal
seperti ini belumlah cukup. Jumlah PC yang bertambah dengan sangat cepat seiring
dengan berkembangnya sebuah organisasi. Jumlah end user dan client juga bertambah
banyak. Kebutuhan akan perangkat menjadi bertambah pula, tidak hanya
membutuhkan sebuah printer server, juga dibutuhkan server-server lainnya seperti
server pengolahan gambar, server pengolahan suara, dan lainnya.
Server-server ini dengan database dan aplikasinya harus dapat diakses oleh
beberapa PC, ataupun diakses oleh sebuah komputer mainframe melalui sebuah LAN.
Sistem seperti ini disebut Sistem Client Server.
(21)
2.3.1 Pengertian Client Server
Client Server adalah salah satu model komunikasi dua komputer atau lebih yang
berfungsi melakukan pembagian tugas. Client bertugas untuk melakukan input,
update, penghapusan, dan menampilkan data sebuah database. Sementara server
bertugas menyediakan pelayanan untuk melakukan manajemen, yaitu menyimpan dan
mengolah database.
Client mengirim permintaan ke server, server menerjemahkan pesan,
kemudian berusaha memenuhi permintaan (Gallaugher&Ramanathan,1996) Atau
Client Server adalah suatu arsitektur dimana sumber daya server menyediakan
komputasi untuk banyak komponen client. Client dan Server bisa berjalan pada mesin
yang sama atau berbeda, ditulis dalam berbagai bahasa dan menggunakan sistem
operasi yang berbeda. (Blaha & Premeriani,1998).
Dengan pendekatan Client Server setiap PC dapat melakukan secara
independen sebuah pemrosesan lokal dan mensharing perangkat enterprise melalui
LAN. Untuk kasus yang lebih luas kemampuan akses dapat dilakukan melalui MAN
(Metropolitan Area Network) atau WAN (Wide Area Network). Sebuah database dan
program applikasi enterprise misalnya diletakan pada sebuah server dimana setiap
end user dapat melakukan akses melalui Client Processor, LAN dan Server.
Aplikasi Client Server merupakan jawaban atas berkembangnya teknologi
informasi, di mana sebuah perusahaan ataupun instansi memilik banyak departemen
dan harus terhubung satu sama lain dalam melakukan akses data.
2.3.2 Komponen Dasar Client Server
Pada dasarnya, Client server dibentuk oleh tiga komponen dasar, yaitu client,
middleware, dan server. Secara sederhana, hubungan antara ketiga komponen tersebut
(22)
a. Client
Client merupakan terminal yang digunakan oleh pengguna untuk meminta layanan
tertentu yang dibutuhkan. Peran Client adalah mengirimkan pesan berupa permintaan
layanan ke server.
b. Middleware
Middleware merupakan komponen perantara yang memungkinkan client dan server
untuk saling terhubung dan berkomunikasi satu sama lain. Middleware memiliki
peran yang strategis karena dengan adanya middleware maka client dapat
mengirimkan pesan atau permintaan kepada server, menerjemahkan pesan dari client
agar dapat dimengerti oleh server, menerjemahkan hasil proses dari server agar dapat
dipahami oleh client dan mengirimkan hasil proses yang telah diterjemahkan kembali
ke client.
c. Server
Server merupakan pihak yang menyediakan layanan. Server berperan menerima pesan
permintaan layanan dari client, memproses permintaan tersebut dan mengirimkan
hasil permintaan kepada client.
2.4
Pengenalan Yii Framework
Yii adalah framework (kerangka kerja) PHP berbasis-komponen, berkinerja tinggi
untuk pengembangan aplikasi Web berskala-besar. Yii menyediakan reusability
maksimum dalam pemrograman Web dan mampu meningkatkan kecepatan
pengembangan secara signifikan. Nama Yii (dieja sebagai /i:/) singkatan dari "Yes It
Is!".
Yii adalah framework pemrograman umum Web yang bisa dipakai untuk
mengembangkan semua jenis aplikasi Web. Dikarenakan sangat ringan dan
dilengkapi dengan mekanisme caching yang canggih, Yii sangat cocok untuk
(23)
pengembangan aplikasi dengan lalu lintas-tinggi, seperti portal, forum, sistem
manajemen konten (CMS), sistem e-commerce, dan lain-lain.
Seperti kebanyakan PHP framework, Yii adalah MVC framework. Yii
melampaui framework PHP lain dalam hal efisiensi, kekayaan-fitur, dan kejelasan
dokumentasi. Yii didesain dengan hati-hati dari awal agar sesuai untuk
pengembangan aplikasi Web secara serius. Yii bukan berasal dari produk pada
beberapa proyek maupun konglomerasi pekerjaan pihak-ketiga. Yii adalah hasil dari
pengalaman kaya para pembuat pada pengembangan aplikasi Web dan investigasi
framework pemrograman Web dan aplikasi yang paling popular.
2.5
Pengenalan Netbeans IDE 7.2
Netbeans merupakan sebuah aplikasi Integrated Development Environment (IDE)
yang berbasiskan Java dari Sun Microsystems yang berjalan di atas swing. Swing
merupakan sebuah teknologi Java untuk pengembangan aplikasi desktop yang dapat
berjalan pada berbagai macam platform seperti windows, linux, Mac OS X dan
Solaris. Sebuah IDE merupakan lingkup pemrograman yang di integrasikan ke dalam
suatu aplikasi perangkat lunak yang menyediakan Graphic User Interface (GUI),
suatu kode editor atau text, suatu compiler dan suatu debugger.
Netbeans juga digunakan oleh programmer untuk menulis, meng-compile,
mencari kesalahan dan menyebarkan program netbeans yang ditulis dalam bahasa
pemrograman java namun selain itu dapat juga mendukung bahasa pemrograman
lainnya dan program ini pun bebas untuk digunakan dan untuk membuat professional
desktop, enterprise, web, and mobile applications dengan Java language, C/C++, dan
bahkan dynamic languages seperti PHP, JavaScript, Groovy, dan Ruby.
NetBeans merupakan sebuah proyek kode terbuka yang sukses dengan
pengguna yang sangat luas, komunitas yang terus tumbuh, dan memiliki hampir 100
mitra. Sun Microsystems mendirikan proyek kode terbuka NetBeans pada bulan Juni
2000 dan terus menjadi sponsor utama. Dan saat ini pun netbeans memiliki 2 produk
yaitu Platform Netbeans dan Netbeans IDE. Platform Netbeans merupakan
(24)
pengembangan aplikasi desktop dan Platform NetBeans juga menawarkan
layanan-layanan yang umum bagi aplikasi desktop, mengijinkan pengembang untuk fokus ke
logika yang spesifik terhadap aplikasi.
2.6 Andoid SDK (Software Development Kit)
Android SDK mencakup perangkat tools pengembangan yang komprehensif. Android
SDK terdiri dari debugger, libraries, handset emulator, dokumentasi, contoh kode
program dan tutorial. Saat ini Android sudah mendukung arsitektur x86 pada Linux
(distribusi Linux apapun untuk desktop modern), Mac OS X 10.4.8 atau lebih,
Windows XP atau Vista. Persyaratan mencakup JDK, Apache Ant dan Python 2.2 atau
lebih. IDE yang didukung secara resmi adalah Eclipse 3.2 atau lebih dengan
menggunakan plugin Android Development Tools (ADT), dengan ini pengembang
dapat menggunakan IDE untuk mengedit dokumen Java dan XML (Extensible
Markup Language) serta menggunakan peralatan command line untuk menciptakan,
membangun, melakukan debug aplikasi Android dan pengendalian perangkat Android
(misalnya reboot, menginstal paket perangkat lunak).
Android SDK telah dirilis pada tanggal 12 November 2007. Dan pada tanggal
15 Juli 2008 tim Android Developer Challenge dengan sengaja mengirimkan e-mail
ke semua pendatang baru di Android Developer Challenge untuk mengumumkan
bahwa rilis SDK terbaru telah tersedia pada halaman download. E-mail tersebut juga
ditujukan kepada pemenang Android Developer Challenge putaran pertama. Sebuah
penyataan bahwa Google telah menyediakan rilis SDK terbaru untuk beberapa
pengembang.
Pada tanggal 18 Agustus 2008, Android SDK 0.9 beta dirilis. Rilis ini
menyediakan API yang telah diperbarui dan diperluas, perbaikan pada tools
pengembangan dan disain terbaru untuk tampilan home. Petunjuk untuk
meng-upgrade SDK sudah tersedia pada rilis sebelumnya. Pada tanggal 23 September 2008,
Android 1.0 SDK telah dirilis. Pada tanggal 9 Maret 2009, Google merilis versi 1.1
untuk ponsel Android. Rilis terbaru tersebut termasuk dukungan untuk pencarian
dengan suara, harga aplikasi, perbaikan jam alarm, perbaikan pengiriman e-mail pada
gmail, perbaikan notification dan peta.
(25)
2.7 Eclipse
Eclipse adalah sebuah IDE (Integrated Development Environment) untuk
mengembangkan perangkat lunak dan dapat dijalankan di semua platform
(platform-independent). Berikut ini adalah sifat dari Eclipse:
a.
Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows,
Linux, Solaris, AIX, HP-UX dan Mac OS X.
b.
Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java,
akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa
pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain
sebagainya.
c.
Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa
digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak,
seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain
sebagainya.
Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan
open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat
lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah
kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang
dinamakan plug-in.
2.7.1
Strukutur Aplikasi Eclipse (Juno)
2.7.1.1 Tampilan Lembar Kerja Eclipse (Juno)
(26)
2.7.1.2 Tampilan Menu Bar
Gambar 2.2 Tampilan Menu Bar
2.7.1.3 Tampilan Tool Bar
Gambar 2.3 Tampilan Toolbar
2.7.1.4 Tampilan Jendela Project
Gambar 2.4 Tampilan Jendela Project
2.7.1.5 Tampilan Jendela Navigator
(27)
2.7.1.6 Tampilan Jendela Source Code
Gambar 2.6 Tampilan Jendela Source Code
2.7.1.7 Tampilan Graphical Layout
Gambar 2.7 Tampilan Graphical Layout
2.8 Flow Chart
Flow chart adalah penggambaran secara grafik dari langkah-langkah dan
urutan-urutan prosedur dari suatu program. Flow chart menolong analis dan programmer
untuk memecahkan masalah ke dalam segmen-segmen yang lebih kecil dan menolong
dalam menganalisis alternatif-alternatif lain dalam pengoperasian Flow chart biasanya
mempermudah penyelesaian suatu masalah khususnya masalah yang perlu dipelajari
dan dievaluasi lebih lanjut. Petunjuk untuk membuat flow chart bila seorang analisis
(28)
dan programmer akan membuat flow chart, ada eberapa petunjuk yang harus
diperhatikan, seperti :
1. Flow chart digambarkan dari halaman atas ke bawah dan kiri ke kanan.
2. Aktifitas yang digambarkan harus didefinisikan secara hati – hati dan defenisi ini
harus dapat dimengerti oleh pembacanya.
3. Kapan aktifitas dimulai dan berakhir harus ditentukan secara jelas.
4. Setiap langkah dari aktifitas harus diuraikan dengan menggunakan deksripsi kata
kerja.
5. Setiap langkah dari aktifitas harus berada pada urutan yang benar.
6. Lingkup, range dan aktifitas yang sedang digambarkan harus ditelusuri dengan
hati - hati. Percabangan - percabangan yang memotong aktifitas yang
sedang digambarkan tidak perlu digunakan dan percabangannya diletakkan pada
halaman yang terpisah atau hilangkan seluruhnya bila percabangan tidak
berkaitan dengan sistem.
7. Gunakan symbol – symbol flowchart yang standard.
Berikut ini adalah gambar simbol – simbol standar dalam flow chart beserta
dengan arti dari masing – masing simbol :
Tabel 2.1 Simbol – Simbol Flow Chart
Simbol
Keterangan
Terminal/Interupt
(Mulai/Berhenti)
Simbol ini dipergunakan untuk menunjukkan awal
kegiatan atau akhir kegiatan atau berhentinya
suatu program.
(29)
Input/Output (data/hasil)
Untuk mewakili data input dan menuliskan
output-nya
Process (Pengolahan)
Suatu simbol yang melambangkan diprosesnya
suatu data.
Decision (Keputusan)
Dipakai untuk menuliskan jika adanya
percabangan,
seperti if, case.
Prefendefined
Untuk
program-program
yang
sering
dipergunakan sebuah program berulang kali,
biasanya dibuat program terpisah dengan sebuah
sub program (subroutine). Untuk menghubungkan
program utama dengan subroutine dipergunakan
symbol ini.
Connector (Penghubung)
Bila suatu flow-chart sangat panjang dan diputus
di tengah sebelum selesai, jika disambung dalam
halaman yang sama lagi, maka digunakan symbol
ini.
(30)
Flow lines (Garis Alir)
Bila suatu flow-chart dihubungkan dengan
garis-garis ini. Garis-garis-garis ini menunjukkan akar
selanjutnya yang akan dituju. Bila arahnya ke
bawah atau ke kanan tidak perlu memakai tanda
panah. Bila ke atas atau ke kiri, tanda panah harus
dipakai, untuk membedakannya.
(31)
BAB 3
PERANCANGAN SISTEM
Sebelum melakukan perancangan aplikasi, maka harus dilakukan analisis sistem
terlebih dahulu untuk memperoleh gambaran yang jelas mengenai kelebihan dan
kekurangan sistem yang sedang berjalan.
3.1
Gambaran Umum Perancangan Sistem
Secara umum perancangan sistem ini adalah untuk membuat sebuah aplikasi
pemesanan makan dan minuman pada sebuah restoran dengan menggunakan device
android. Untuk mempermudah dalam pencatatan nama makanan serta minuman dan
jumlah yang dipesan tanpa harus menggunakan kertas sebagai media pemesanan.
Desain yang userfriendly sangat diperlukan oleh semua aplikasi. Program
aplikasi ini dikemas secara userfriendly baik desain tampilan warnanya maupun letak
tool-tool aplikasi ini. Diharapkan user dapat menggunakan aplikasi ini dengan mudah,
cepat serta dapat membuat user betah berlama-lama di depan aplikasi.
Perangkat lunak pada server yaitu web server yang ditangani oleh script PHP
dan database dengan sistem hosting internet. Aplikasi di sisi server berfungsi untuk
menangani koneksi client yang berbasis platform android. Setiap request dari client
akan ditangani dan dilayani oleh web server. Perangkat lunak pada client (pelayan)
dibuat menggunakan platform android, aplikasi ini akan dipasang di telepon selular
client (pelayan). Syarat dari handphone yang akan digunakan adalah harus
mendukung platform android. Aplikasi ini berfungsi untuk melakukan pemesanan
makanan dan minuman dengan data dikirim ke web server dan selanjutnya di proses
ke dapur dan kasir. Sedangkan pada sisi dapur dan kasir mengunakan komputer
(32)
dengan antarmuka berbasis web dan internet sebagai penghubung internet untuk
melakukan koneksi ke web server.
3.2
Algoritma
Algoritma merupakan suatu cara menganalisa (menjelaskan) urutan dan hubungan
kegiatan-kegiatan yang dilakukan untuk memecahkan suatu permasalahan sehingga
tercapai tujuan yang diinginkan.
1.
Interface Login program aplikasi
Di awal program, setelah icon “Warung Mbak Ami” terbuka akan
menampilkan sebuah form login untuk user, user terbagi menjadi 2 group,
yaitu Super admin dan admin. Super admin merupakan admin utama untuk
mengatur aplikasi ini, sedangkan admin hanya bisa menggunakan aplikasi ini
dan tingkatannya tidak lebih tinggi dari super admin. Rancangan tampilannya
adalah sebagai berikut :
(33)
2.
Interface menu utama aplikasi
Pada form ini digunakan untuk memilih menu, apakah mau memesan, ubah
pesanan atau detail pemesanan. Untuk memilih salah satu menu tersebut
digunakan radio button agar yang menu yang terpilih hanya bisa satu saja.
Pada menu pesanan digunakan untuk menginput pesanan makanan dari
pelanggan. Ubah pesanan digunakan untuk mengubah pesanan apakah dari
pelanggan yang sama ada tambahan pesanan atau tidak. Sedangkan detail
pemesanan digunakan untuk
Gambar 3.2 Tampilan Menu Utama Aplikasi
3.
Interface List Menu Pemesanan
Pada bagian ini, akan menapilkan list-list dari menu makanan, minuman dan
dessert yang datanya diambil dari database server. Karena list menu
pemesanan ini terdiri dari tiga bagian, maka untuk mempermudah akses ke
menu pemesanan yang lain dipergunakan tab dan slide.
(34)
Gambar 3.3 Tampilan List Pemesanan Aplikasi
4. Interface server
Server berfungsi untuk menyimpan data-data pesanan yang telah diinput oleh
pelayan dari device android, kemudian menampilkannya. Device android
terhubung dengan suatu jaringan LAN agar data-data dari server ke aplikasi
android ataupun pemesanan dari android ke server dapat ditampilkan.
(35)
Gambar 3.5 Tampilan Detail Pembayaran Server
3.3
Database
Database warung mbak ami ini diberi nama “warung_mbak_ami” yang terdiri
dari 9 tabel. Berikut adalah gambaran tentang database warung_mbak_ami.
Tabel 3.1 tbl_jenis_menu
Field
Tipe Data
id_jenis_menu
int(10)
jenis_menu
Varchar(255)
Tabel 3.2 tbl_meja
Field
Tipe Data
id_meja
int(10)
meja
varchar(50)
is_empty
tinyint(4)
Tabel 3.3 tbl_menu
Field
Tipe Data
id_menu
int(10)
(36)
harga
int(10)
Gambar
varchar(255)
id_jenis_menu
int(10)
Tabel 3.4 tbl_penjualan
Field
Tipe Data
id_penjualan
int(10)
id_meja
int(10)
tanggal
date
is_paid
tinyint(4)
Tabel 3.5 tbl_penjualan_menu
Field
Tipe Data
id
int(11)
id_penjualan
int(11)
id_menu
int(11)
jumlah
int(11)
Tabel 3.6 tbl_profiles
Field
Tipe Data
user_id
int(11)
lastname
varchar(255)
firstname
varchar(255)
Birthday
date
Tabel 3.7 Stok
Field
Tipe Data
(37)
id_menu
int(10)
jumlah
int(10)
tanggal
date
Tabel 3.8 tbl_user
Field
Tipe Data
id
int(11)
username
varchar(45)
password
varchar(128)
varchar(128)
activekey
varchar(128)
create_at
int(11)
lastvisit_at
int(11)
superuser
tinyint(4)
status
tinyint(4)
group_id
int(11)
Tabel 3.9 tbl_user_group
Field
Tipe Data
id
int(11)
(38)
3.4
Flow Chart
3.4.1
Flow chart Login Aplikasi
N
Y
N
Y
Gambar 3.6 Flow chart Login Aplikasi
Input
Username &
Password
Cari
Username &
Pass di db
Enkripsi Username
& Password
Pass enkripsi
dgn pass db
cocok
Tampil Halaman
Utama
End
Start
(39)
3.4.2
Flow chart Menu Utama Aplikasi
Y
N
Y
N
Y
N
Gambar 3.7 Flow chart Menu Utama Aplikasi
Pemesanan
Menampilkan Menu
Utama
Halaman
Pemesanan
menu
A
Ubah
Pemesanan
Data
Processing
Halaman
Ubah
Pemesanan
B
Start
Tampil Detail
Penjualan
(40)
3.4.3
Flow chart Pemesanan
Gambar 3.8 Flow chart Pemesanan
A
Input Nama
Meja
Update status
meja sudah
terisi ke db
Input menu
& jumlah
pemesanan
Kirim ke db &
stok dikurangi
(41)
3.4.4
Flow chart Ubah Pemesanan
N
Y
Gambar 3.9 Flow chart Ubah Pemesanan
B
Input Nama
Meja
Ambil data
pesanan sesuai
dgn id meja dr db
Tambah
pesanan baru
Ubah
jumlah
pemesanan
Input menu
baru &
jumlah
Simpan data
ke database
(42)
3.4.5
Flow chart Pembayaran
Gambar 3.10 Flow chart Pembayaran
Start
Ambil data
pesanan sesuai
dgn id meja dr db
Jumlahkan total
pemesanan
sesuai dengan
harga
Penerimaan
pembayaran
kepada user
Update status pemesanan
telah dibayar & meja
kmbali dikosongkan
(43)
BAB 4
ANALISA HASIL & PEMBAHASAN
4.1
Pembuatan Program
Pembuatan aplikasi pemesanan makanan dan minuman ini dibuat untuk device
android, serta dilengkapi dengan server untuk menyimpan database. Aplikasi ini
dirancang dengan mengunakan aplikasi Android Development Tools (Eclipse
Juno). Dan Pembuatan severnya dengan menggunakan Framework Yii.
4.1.1
Tampilan Form Login Android
Gambar 4. 1 Tampilan Form Login Android
[Listing program pada Lampiran 1]
Gambar 4.1 Berfungsi sebagai gerbang untuk masuk ke dalam aplikasi. User
harus menginpukan username serta password agar bisa mengakases menu
berikutnya.
(44)
4.1.2
Tampilan Menu Utama Android
Gambar 4.2 Tampilan Menu Utama Android
[Listing program pada lampiran 2]
Gambar 4.2 Berfungsi sebagai menu, jika user memilih pemesanan maka akan
tampil menu-menu makanan, minuman serta dessert, jika user memilih ubah
pemesanan
fungsinya
adalah
menambahkan
pesanan
pembeli
serta
mengirimkannya ke database, sedangkan detail pemesanan adalah untuk
menampilkan total harga yang harus dibayar oleh pembeli.
(45)
4.1.3
Tampilan List Pemesanan Pada Android
Gambar 4.3 List Pemesanan Android
[Listing program pada lampiran 3]
Gambar 4.3 Merupakan List menu yang menampilkan menu-menu makan,
minuman serta dessert yang bisa dipesan oleh pembeli. Data-datanya diambil
database warung_mbak_ami yang ada pada server
4.1.4 Tampilan List Menu pada Server
(46)
Gambar 4.4 Menampilkan List menu - menu yang sudah dibuat di database. Di
form ini juga dapat menambahkan menu baru atau mengedit menu yang sudah
ada.
4.1.4
Tampilan Detai Pembayaran pada Server
Gambar 4.5 Tampilan Detai Pembayaran Server
Gambar 4.5 Menampilkan Detail pembayaran yaitu total pemesanan yang harus
dibayar oleh pembeli.
(47)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan penulisan Tugas Akhir ini dengan adanya program aplikasi Android
Pemesanan Makanan dan Minuman Berbasis Client Server ini, dapat disimpulkan :
1.
Dalam menyelesaikan pembuatan program Aplikasi Android Pemesanan
Makanan dan Minuman Berbasis Client Server ini, usaha yang dilakukan
adalah mengumpulkan, mengkaji buku-buku, browsing internet, menyajikan
data, pembuatan desain untuk proses user interface program, melakukan
implementasi sebagai dasar pembuatan program.
2.
Perancangan program Aplikasi Android Pemesanan Makanan dan Minuman
Berbasis Client Server ini memudahkan pelayanan suatu restoran dalam
mencatat pesanan yang dipesan oleh pembeli dan total pemesanan sudah bisa
langsung ditampilkan.
3.
Aplikasi ini juga berguna untuk mengurangi kesalahan yang mungkin terjadi
bila pemesanan dilakukan dengan menggunakan kertas.
5.2 Saran
Aplikasi ini secara tampilan sangat sederhana, suatu saat jika penulis ingin
mengupgrade aplikasi ini, tampilannya bisa dibuat menjadi lebih menarik. Namun
secara sistem, aplikasi ini sudah cukup memudahkan user yang menggunakannya.
Penulis berharap program ini dapat dikembangkan lagi menjadi sebuah
aplikasi yang lebih berguna bagi penggunanya.
(48)
Daftar Pustaka
Nugroho, A. (2008). Pemograman Java Menggunakan IDE Eclipse Callisto.
Yogyakarta: Penerbit Andi.
Safaat, N. (2010). Android : Pemrograman Aplikasi Mobile Smartphone dan Tablet
PC. Bandung: Informatika.
Ivan, M.S (2011). Membongkar Source Code berbagai Aplikasi Android.
Bandung: Gava Media.
Raharjo, B. H. (2010). Tuntunan Pemograman JAVA Untuk Handphone Dan Alat
Telekomunikasi Mobile Lainnya. Bandung : Penerbit Informatika.
Simarmatar, J. P. (2006). In Basis Data. Yogyakarta: ANDI.
Fikri, R. Dkk (2005). Pemrograman Java. Yogyakarta: Andi.
(49)
Lampiran 1 activity_login.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".LoginActivity" > <TextView android:id="@+id/login_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="@string/log_in" android:textSize="20sp" /> <EditText android:id="@+id/usernm" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:gravity="center" android:hint="@string/str_username" /> <EditText android:id="@+id/passwd" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:gravity="center" android:hint="@string/str_password" android:inputType="textPassword" /> <CheckBox android:id="@+id/chk_remember" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/remember" /> <Button android:id="@+id/btn_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/login" /> <TextView android:id="@+id/txt_error" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" /> </LinearLayout>
(50)
Lampiran 2
Kode Program Menu Utama Android package com.ami.warungmbakami; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.ami.warungmbakami.resource.JSONParser; import com.ami.warungmbakami.resource.UserFunctions; import com.ami.warungmbakami.utils.DatabaseHandler; import android.os.Bundle; import android.os.StrictMode; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.ContextMenu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast;
public class MainActivity extends SherlockActivity implements OnItemClickListener{
private ListView list;
private SharedPreferences pref; private Editor editor;
private String host; private String url;
// JSON Node names
private final String TAG_DETAIL = "detail"; private final String TAG_NAME = "nama_meja";
private final String TAG_SELECTED = "selected_tag"; private String TIPE_PEMESANAN;
private DatabaseHandler db;
UserFunctions userFunctions;
JSONArray detail, selectedTag = null;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
userFunctions = new
UserFunctions(getApplicationContext());
db = userFunctions.getDbHandler(); this.host = "http://"+db.getHost();
this.url = host + "/warungmbakami/index.php?r=";
(51)
StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);
pref = getApplicationContext().getSharedPreferences("mbakami", 0); // 0 - for private mode
editor = pref.edit();
if(!userFunctions.isUserLoggedIn()){
// user is not logged in show login screen
Intent login = new Intent(getApplicationContext(), LoginActivity.class);
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(login);
// Closing dashboard screen finish();
} else {
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.list_main);
String[] items =
getResources().getStringArray(R.array.menu_utama); list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, items)); list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); list.setOnItemClickListener(this); registerForContextMenu(list); } } @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
String newURL = url+"meja/daftarmeja¶m="+TIPE_PEMESANAN;
JSONParser parser = new JSONParser(newURL);
JSONObject json = parser.getJSONfromURL();
detail = json.optJSONArray(TAG_DETAIL); if(detail != null) {
for(int i = 0; i < detail.length(); i++){ try {
JSONObject c = detail.getJSONObject(i);
// Storing each json item in variable String name = c.getString(TAG_NAME);
menu.add(name);
} catch (JSONException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
} }
(52)
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
long orderID = -1;
String namaMeja = item.toString(); if(TIPE_PEMESANAN.equals("baru")){
orderID = db.createOrderData(namaMeja);
editor.putLong("orderID", orderID);
Intent menuList = new Intent(getApplicationContext(), ListAllMenuActivity.class);
menuList.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(menuList);
} else if(TIPE_PEMESANAN.equals("update")){
String newURL =
url+"penjualan/deviceupdate&meja="+namaMeja;
JSONParser parser = new JSONParser(newURL);
JSONObject json = parser.getJSONfromURL();
try {
selectedTag = json.getJSONArray(TAG_SELECTED);
if(selectedTag != null) { for(int i = 0; i < selectedTag.length(); i++){
JSONObject c = selectedTag.getJSONObject(i);
String name = c.getString("name"); int amount = c.getInt("amount");
editor.putBoolean(name, true);
editor.putString("namaMeja", namaMeja); editor.putInt("amount_"+name, amount);
} }
Intent menuList = new
Intent(getApplicationContext(), ListAllMenuActivity.class);
menuList.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(menuList);
} catch (JSONException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
} else if(TIPE_PEMESANAN.equals("detail")){
editor.putString("namaMeja", namaMeja);
Intent detail = new Intent(getApplicationContext(),
DetailPejualanActivity.class); detail.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(detail); } editor.putString("tipe", TIPE_PEMESANAN);
(53)
editor.commit(); return true; }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu); menu.add("Save") .setIcon(R.drawable.abs__ic_cab_done_holo_light) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.add("Logout") .setIcon(R.drawable.ic_tab_logout_unselected) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); return true; } @Override
public boolean onOptionsItemSelected(MenuItem item) {
//This uses the imported MenuItem from ActionBarSherlock String clickedId = item.getTitle().toString();
if(clickedId.equals("Save")){
Toast.makeText(this.getApplicationContext(), "Clicked
"+clickedId, Toast.LENGTH_SHORT).show(); } else if(clickedId.equals("Logout")){ userFunctions.logoutUser();
editor.clear(); editor.commit();
Intent login = new Intent(getApplicationContext(), LoginActivity.class);
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(login);
finish();
} else if(item.getTitle().toString().equals("Settings")){ Intent settings = new Intent(getApplicationContext(), SettingsActivity.class);
// Close all views before launching Dashboard settings.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(settings);
} return true; }
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
// TODO Auto-generated method stub if(id == 0){
this.TIPE_PEMESANAN = "baru"; } else if(id == 1) {
this.TIPE_PEMESANAN = "update"; } else if(id == 2){
this.TIPE_PEMESANAN = "detail"; }
view.showContextMenu(); } }
(54)
Lampiran 3 activity_makanan.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MakananListActivity" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="15dip" android:text="@string/menu_makanan" android:textSize="18sp" /> <ListView android:id="@+id/list_makanan" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="0.71" android:divider="#b5b5b5" android:dividerHeight="1dp" android:entries="@array/data_makanan" android:listSelector="@drawable/list_selector" /> </LinearLayout> makanan_row.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/makanan_layout" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="@drawable/list_selector" android:orientation="horizontal" android:padding="5dip" > <LinearLayout android:id="@+id/mkn_linear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/gradient_bg" android:orientation="vertical" android:padding="3dip" > <ImageView android:id="@+id/image_makanan" android:layout_width="50dip" android:layout_height="50dip" android:maxHeight="50dp" android:maxWidth="50dp"
(55)
android:src="@drawable/makanan_normal" /> </LinearLayout> <TextView android:id="@+id/nm_makanan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/mkn_linear" android:layout_marginLeft="55dp" android:layout_marginTop="10dp" android:layout_toRightOf="@+id/mkn_linear" android:text="Nama Makanan" android:textSize="15sp" /> <TextView android:id="@+id/harga" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/nm_makanan" android:layout_below="@+id/nm_makanan" android:text="Harga" /> <CheckBox android:id="@+id/chk_makanan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:layout_alignParentTop="true" /> </RelativeLayout> ListMenuAdapter.java package com.ami.warungmbakami.resource; import java.util.ArrayList; import java.util.HashMap; import com.ami.warungmbakami.DessertListActivity; import com.ami.warungmbakami.MakananListActivity; import com.ami.warungmbakami.MinumanListActivity; import com.ami.warungmbakami.R; import com.ami.warungmbakami.utils.Utils; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton;
(1)
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate() {
$model=new Penjualan;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model); if(isset($_POST['Penjualan']))
{
$model->attributes=$_POST['Penjualan']; if($model->save())
$this->redirect(array('view','id'=>$model->id_penjualan));
}
$this->render('create',array( 'model'=>$model,
)); }
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionDevicecreate() {
if (isset($_POST['tag']) && $_POST['tag'] != '') {
if($_POST['tag'] == "pesan_baru"){
$data = $_POST['details'];
$param = json_decode($data);
//$transaction = Yii::app()->db->beginTransaction();
//try{
$namaMeja = $param->meja; $meja_is_empty = $param->meja_is_empty;
$tanggal = date("Y-m-d h:i:s"); $mejaModel = Meja::model()->find("meja = '$namaMeja'");
$mejaModel->is_empty = $meja_is_empty;
$mejaModel->save();
//if(!$mejaModel->save()){
// throw new Exception("saving status meja");
//}
(2)
$penjualanModel = new Penjualan; $penjualanModel->id_meja =
$idMeja;
$penjualanModel->tanggal = $tanggal;
$penjualanModel->save();
//if(!$penjualanModel->save()){ // throw new Exception("saving penjualan");
//}
foreach($param->items as $item){ $penjualanMenuModel = new PenjualanMenu;
$penjualanMenuModel->id_penjualan = $penjualanModel-$penjualanMenuModel->id_penjualan;
$idmenu = Menu::model()->find("nama = '".$item->menu_name."'")->id_menu;
$penjualanMenuModel->id_menu = $idmenu;
$penjualanMenuModel->jumlah = $item->amount;
$penjualanMenuModel->save();
$stokModel = Stok::model()->find("id_menu = $idmenu");
$oldJumlah = $stokModel->jumlah;
$newJumlah = $oldJumlah - $item->amount;
$stokModel->jumlah = $newJumlah;
$stokModel->save();
//if(!$penjualanMenuModel->save() && !$stokModel-//if(!$penjualanMenuModel->save()){
// throw new Exception("saving penjualan menu");
///} }
//$transaction->commit(); $response["success"] = 1; //} catch (Exception $e){
// $transaction->rollback(); // $response["error"] = 1;
// $response["error_msg"] = "Error when $e";
//
} else if($_POST['tag'] == "update_pesanan"){ $data = $_POST['details'];
$param = json_decode($data); //$transaction = Yii::app()->db->beginTransaction();
//try{
$namaMeja = $_POST['namaMeja'];
$idMeja = Meja::model()->find("meja = '".$namaMeja."'")->id_meja;
(3)
Penjualan::model()->find("id_meja = ".$idMeja." and is_paid = 0")->id_penjualan; foreach($param->items as $item){ $idMenu = Menu::model()->find("nama = '".$item->menu_name."'")->id_menu;
$penjualanMenuModel =
PenjualanMenu::model()->find("id_penjualan = '$idpenjualan' and id_menu = '$idMenu'");
if(count($penjualanMenuModel->id) <= 0){
$penjualanMenuModel = new PenjualanMenu();
$penjualanMenuModel->id_menu = $idMenu;
$penjualanMenuModel->id_penjualan = $idpenjualan;
}
$penjualanMenuModel->jumlah = $item->amount;
$penjualanMenuModel->save();
$stokModel = Stok::model()->find("id_menu = $idMenu");
$oldJumlah = $stokModel->jumlah; $newJumlah = $oldJumlah - $item->amount;
$stokModel->jumlah = $newJumlah; $stokModel->save();
//if(!$penjualanMenuModel->save()){
// throw new Exception("updating penjualan menu");
//} }
//$transaction->commit(); $response["success"] = 1; //} catch(Exception $e){
// $transaction->rollback(); // $response["error"] = 1;
// $response["error_msg"] = "Error when $e";
//} } else {
$response["error"] = 1;
$response["error_msg"] = "Invalid request";
} } else {
$response["error"] = 1;
$response["error_msg"] = "Access Denied"; }
echo json_encode($response); }
private function selectedMeja($meja){
(4)
$criteria->select = 'm.id_menu, nama, jumlah, harga'; $criteria->alias = 'm';
$criteria->join = 'left join tbl_penjualan_menu pm on pm.id_menu = m.id_menu
left join tbl_penjualan p on p.id_penjualan = pm.id_penjualan
left join tbl_meja j on j.id_meja = p.id_meja';
$criteria->condition = 'is_paid = 0 and is_empty = 0 and j.meja = "'.$meja.'"';
$menuModel = Menu::model()->findAll($criteria);
return $menuModel; }
public function actionDevicegetdetails($meja){ $model = $this->selectedMeja($meja);
$x = 0;
foreach($model as $value){
$hargaTotal = $value->harga * $value->jumlah;
$data['details'][] = array(
'name' => $value->nama/*str_replace(" ", "_", strtolower($value->nama))*/,
'amount' => $value->jumlah,
'tag_key' => str_replace(" ", "_", strtolower($value->nama)),
'harga_satuan' => $value->harga, 'harga_total' => $hargaTotal, );
$x += $hargaTotal; }
$data['meja'] = $meja; $data['total'] = $x; echo json_encode($data); }
public function actionDeviceupdate($meja){ $model = $this->selectedMeja($meja);
foreach($model as $value){
$data['selected_tag'][] = array( 'name' => str_replace(" ", "_", strtolower($value->nama)),
'amount' => $value->jumlah, 'id_menu' => $value->id_menu, );
}
echo json_encode($data); }
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
(5)
* @param integer $id the ID of the model to be updated */
public function actionUpdate($id) {
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model); if(isset($_POST['Penjualan']))
{
$model->attributes=$_POST['Penjualan']; if($model->save())
$this->redirect(array('view','id'=>$model->id_penjualan));
}
$this->render('update',array( 'model'=>$model,
)); }
/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the 'admin' page.
* @param integer $id the ID of the model to be deleted */
public function actionDelete($id) {
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
} /**
* Lists all models. */
public function actionIndex() {
$dataProvider=new CActiveDataProvider('Penjualan'); $this->render('index',array(
'dataProvider'=>$dataProvider, ));
} /**
* Manages all models. */
public function actionAdmin() {
$model=new Penjualan('search');
$model->unsetAttributes(); // clear any default values if(isset($_GET['Penjualan']))
(6)
$this->render('admin',array( 'model'=>$model,
)); }
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
* @param integer $id the ID of the model to be loaded * @return Penjualan the loaded model
* @throws CHttpException */
public function loadModel($id) {
$model=Penjualan::model()->findByPk($id); if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model; }
/**
* Performs the AJAX validation.
* @param Penjualan $model the model to be validated */
protected function performAjaxValidation($model) {
if(isset($_POST['ajax']) && $_POST['ajax']==='penjualan-form')
{
echo CActiveForm::validate($model); Yii::app()->end();
} }