Aplikasi Android Pemesanan Makanan Dan Minuman Berbasis Client Server

(1)

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)

email

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&param="+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();

} }