KulinerI nfo
+ id + name
+ price + lat it ude
+ longitude + description
+ ket egoriI d
+ get Id + get Name
+ get Price + get Lat it ude
+ get Longit ude + get Descript ion
+ get KategoriI d
Kat egoriKuliner
+ id + name
+ parent + get I d
+ get Name + get Parent
1. . 0.. 1
Gambar 4 Class diagram aplikasi server
Pada Gambar 4 menunjukan bahwa class tersebut adalah sebuah entity yang disimpan pada database, yaitu KulinerInfo dan KategoriKuliner. Class-class
tersebut nantinya digunakan sebagai media yang digunakan aplikasi untuk memuat informasi dan menyimpan informasi tersebut pada database.
4. Hasil dan Pembahasan
Aplikasi server dengan aplikasi Java Servlet yang digunakan untuk
menerima request, kemudian menggenerate response berdasarkan request yang diterima tadi dari aplikasi client yang berupa aplikasi Android.
Ada proses-proses utama yang ada di dalam aplikasi server untuk melayani request dari aplikasi client. Proses-proses tersebut antara lain konektivitas dengan
database, proses login admin, proses mengirim list kuliner dalam bentuk JSON, proses insert, update dan delete data. Sedangkan proses utama dari pada sistem
adalah bagian pencarian wisata kuliner yang menggunakan algoritma FMADM dan juga perhitungan jarak dengan Google Distance Matrix.
Proses server yang pertama adalah membuat koneksi dengan MySQL database. Database yang digunakan sistem adalah awk_db dengan server
localhost dan memiliki username serta passwort : root. Proses lain yang dilakukan server adalah proses login admin.
Kode Program 1 Proses login admin
Pada Kode Program 1 dijelaskan proses login admin, dimana server menggenerate response menggunakan HTTP Status Code. Jika login sukses maka
200 SC_OK
dan jika login gagal maka 403 SC_FORBIDDEN
.
1 hasil login berupa HTTP STATUS CODE
2 if hasilLogin {
3 System.out.printlnresponse.SC_OK;
4 responseStatus = response.SC_OK;
5 System.out.printlnlogin berhasil;
6 } else {
7 System.out.printlnresponse.SC_FORBIDDEN;
8 responseStatus = response.SC_FORBIDDEN;
9 System.out.printlnlogin gagal;}
Kode Program 2 List kuliner dalam format JSON
Pada Kode Program 2 dijelaskan proses response server yang digunakan untuk menampilkan list data kuliner. Data yang dikirim ke client berupa data
dengan format JSON array : id, name, description, latitude, longitude, price dan kategoriId. Setelah list data kuliner tampil, admin dapat melakukan insert, update
dan delete
dengan menggunakan
perintah :
INSERT_QUERY, UPDATE_QUERY
dan DELETE_QUERY
. Proses-proses tersebut merupakan response server dari aplikasi client pada bagian admin. Sedangkan proses server
pada user berada pada bagian pencarian. Proses pencarian yang diterima server adalah parameter kategori kuliner, harga dan jarak yang akan di-filter -
menggunakan FMADM. Sebelum proses filtering, dihitung terlebih dahulu perhitungan jarak antara lokasi GPS user berada ke lokasi kuliner menggunakan
Google Distance Matrix. Setelah nilai jarak didapat, baru proses FMADM dijalankan yang dimulai dari proses pembobotan.
Kode Program 3 Proses pembobotan nilai harga
Pada Kode Program 3 dijelaskan bagaimana proses pembobotan nilai harga yang digunakan pada sistem. Pembobotan tersebut sesuai dengan parameter
1 switch inputHarga{
2 case 1 :
3 if harga 7500D {
4 value = 3;
5 } else if harga = 7500D harga 15000D {
6 value = 2;
7 } else if harga = 15000D {
8 value = 1;} break;
9 case 2 :
10 if harga 7500D {
11 value = 3;
12 } else if harga = 7500D harga 15000D {
13 value = 2;
14 } else if harga = 15000D {
15 value = 1;} break;
16 case 3 :
17 if harga 7500D {
18 value = 3;
19 } else if harga = 7500D harga 15000D {
20 value = 2;
21 } else if harga = 15000D {
22 value = 1; } break;
1 ListKulinerInfokulinerInfos = KulinerInfoDAO.loadAll;
2 JSONArray array = new JSONArray;
3 for KulinerInfo kulinerInfo : kulinerInfos {
4 JSONObject jsono = new JSONObject;
5 jsono.putid, kulinerInfo.getId;
6 jsono.putname, kulinerInfo.getName;
7 jsono.putdescription,kulinerInfo.getDescription;
8 jsono.putlatitude, kulinerInfo.getLatitude;
9 jsono.putlongitude, kulinerInfo.getLongitude;
10 jsono.putprice, kulinerInfo.getPrice;
11 jsono.putkategoriId,kulinerInfo.getKategori.getId;
12 array.putjsono;}
13 jsonresult = array.toString;
yang diberikan user. Dari harga murah, sedang dan mahal nantinya akan diberi nilai bobot 1-3 sesuai dengan parameter yang diberikan user. Jika user memberi
parameter murah, maka murah memiliki nilai tertinggi yaitu 3, sedang memiliki nilai 2 dan mahal memiliki nilai 1. Jika user memberi parameter sedang, maka
sedang memiliki nilai tertinggi yaitu 3, murah memiliki nilai 2 dan mahal memiliki nilai 1. Jika user memberi parameter mahal, maka mahal memiliki nilai
tertinggi yaitu 3, sedang memiliki nilai 2 dan murah memiliki nilai 1.
Kode Program 4 Proses pembobotan jarak
Pada Kode Program 4 dijelaskan bagaimana proses pembobotan jarak yang digunakan pada sistem. Pembobotan tersebut sesuai dengan parameter yang
diberikan user. Jika user memberi parameter dekat, maka dekat memiliki nilai tertinggi yaitu 3, sedang memiliki nilai 2 dan jauh memiliki nilai 1. Jika user
memberi parameter sedang, maka sedang memiliki nilai tertinggi yaitu 3, dekat memiliki nilai 2 dan jauh memiliki nilai 1. Jika user memberi parameter jauh,
maka jauh memiliki nilai tertinggi yaitu 3, sedang memiliki nilai 2 dan dekat memiliki nilai 1.
Setelah mendapatkan pembobotan, barulah masuk ke proses perhitungan FMADM untuk mendapatkan perankingan kuliner sesuai dengan parameter yang
diberikan user. Mulai dari menghitung R Harga, R Jarak dan V Hasil menggunakan rumus benefit. Hasil perankingan tersebut kemudian diurutkan dari
nilai V terbesar sampai terkecil. Lalu diambil 5 dengan nilai tertinggi untuk ditampilkan di aplikasi client. Untuk lebih jelasnya dapat dilihat pada Pada Kode
Program 5
1 switch inputJarak {
2 case 1 :
3 if jarak = 1000 {
4 value = 3;
5 } else if jarak 1000 jarak 2000 {
6 value = 2;
7 } else if jarak = 2000 {
8 value = 1;}break;
9 case 2:
10 if jarak = 1000 {
11 value = 2;
12 } else if jarak 1000 jarak 2000 {
13 value = 3;
14 } else if jarak = 2000 {
15 value = 1;} break;
16 case 3:
17 if jarak = 1000 {
18 value = 1;
19 } else if jarak 1000 jarak 2000 {
20 value = 2;
21 } else if jarak = 2000 {
22 value = 3;} break;
Kode Program 5 Proses perhitungan algoritma FMADM
Aplikasi client adalah rancangan yang berupa aplikasi Android. Aplikasi ini
terdiri dari 4 halaman yang memiliki fungsi sendiri-sendiri. Halaman tersebut antara lain : Halaman menu utama terdapat beberapa fungsi yang ditampilkan,
yaitu : map, kategori kuliner, harga, jarak kuliner dan menu inflater yang dapat dilihat pada Gambar 5.
Gambar 5 Halaman menu utama
Halaman menu utama terdapat 3 spinner yang digunakan untuk mencari kategori kuliner, harga dan juga jarak. Sedangka button cari digunakan untuk
memproses pencarian dengan mengirimkan parameter ke aplikasi server. Dimana proses pencarian tersebut menggunakan algoritma FMADM yang dieksekusi oleh
aplikasi server. Pada halaman menu utama ini, proses yang ditampilkan adalah lokasi GPS user, lokasi kuliner, rute dan informasi kuliner. Kuliner yang
ditampilkan dalam balon adalah 5 dengan nilai tertinggi dari perankingan algoritma FMADM. Hasil perankingan didapat dari server berupa format JSON
1 System.out.printlnCALCULATING FMADM R HARGA...;
2 rHarga = new ArrayListFloat;
3 int xMaks = Collections.maxxHarga;
4 for int i = 0; i distances.size; i++ {
5 float x = xHarga.geti;
6 float r = x xMaks;
7 System.out.printlnCALCULATING FMADM R JARAK...;
8 rJarak = new ArrayListFloat;
9 int xMaks = Collections.maxxJarak;
10 for int i = 0; i distances.size; i++ {
11 float x = xJarak.geti;
12 float r = x xMaks;
13 System.out.printlnCALCULATING V...;
14 v = new ArrayListFloat;
15 for int i = 0; i destinations.size; i++ {
16 float x1 = xHarga.geti;
17 float x2 = xJarak.geti;
18 float r1 = rHarga.geti;
19 float r2 = rJarak.geti;
20 float vHasil = inputHarga r1 + inputJarak r2;
dengan menggunakan perintah HTTP GET yang dapat dilihat pada Kode Program 6.
Kode Program 6 Proses data degan format JSON
Hasil perankingan tersebut kemudian ditampilkan di map dalam bentuk balon-balon yang terdapat rute. Lebih jelasnya dapat dilihat pada dapat dilihat
pada Gambar 6.
Gambar 6 Halaman hasil menu utama
Halaman menu admin login terdapat beberapa fungsi yang ditampilkan, yaitu : username, password dan tombol login. Untuk lebih jelasnya dapat dilihat
pada Gambar 6.
1 kulinerInfos = new ArrayListKulinerInfo;
2 JSONArray array = new JSONArrayresult;
3 for int i = 0; i array.length; i++ {
4 JSONObject row = array.getJSONObjecti;
5 KulinerInfo info = new KulinerInfo;
6 info.setDescriptionrow.getStringdescription;
7 info.setIdrow.getLongid;
8 info.setLatituderow.getDoublelatitude;
9 info.setLongituderow.getDoublelongitude;
10 info.setNamerow.getStringname;
11 info.setPricerow.getDoubleprice;
12 info.setKategorinew KategoriKulinerrow.getLongkategoriId,
;
13 kulinerInfos.addinfo;
Gambar 7 Halaman menu login admin
Pada kolom username dan password digunakan untuk mengisi username dan password yang sudah ditentukan, yaitu : admin dan admin. Serta tombol login
digunakan untuk masuk ke halaman menu admin list. Penanaganan fungsi tampilan pada halaman login admin dapat dilihat dalam Kode Program 7.
Kode Program 7 Fungsi tampilan halaman menu login admin
Apabila user melakukan inputan dengan username dan password dan menekan tombol login, maka aplikasi akan mengeksekusi perintah yang dapat
dilihat pada Kode Program 8.
Kode Program 8 Proses login dengan HTTP POST
Pada Kode Program 8 dijelaskan proses eksekusi login. Dengan membuat koneksi dengan server melaui port dan URL terlebih dahulu. Lalu mengirim
parameter username dan password ke server dengan HTTP POST. Setelah itu aplikasi client menggunakan HTTP Response untuk menerima return dari aplikasi
server berupa HTTP Status Code. Jika login sukses maka 200 SC_OK dan akan masuk ke halaman menu admin list dan jika login gagal maka 403
SC_FORBIDDEN maka akan tetap pada halaman admin login yang dapat dilihat pada Kode Program 9.
1 HttpParams httpParams = new BasicHttpParams;
2 HttpConnectionParams.setConnectionTimeouthttpParams, 10000;
3 HttpResponse httpResponse = null;
4 HttpClient client = new DefaultHttpClienthttpParams;
5 String stringUrl = http:10.0.2.2: + port +
AwkServerLoginServlet; 6
HttpPost httpPost = new HttpPoststringUrl; 7
ListNameValuePair formLogin = new ArrayListNameValuePair1; 8
formLogin.addnew BasicNameValuePairusername, this.username; 9
formLogin.addnew BasicNameValuePairpassword, this.password; 1
user = EditText findViewByIdR.id.usernameTxt; 2
pass = EditText findViewByIdR.id.passwordTxt; 3
loginButton = Button findViewByIdR.id.loginButton;
Kode Program 9 Proses response menggunakan HTTP Status Code
Halaman menu admin list terdapat beberapa fungsi yang ditampilkan, yaitu : kolom pencarian kuliner, list kuliner dan menu inflater. Lebih jelasnya dapat
dilihat pada Gambar 8.
Gambar 8 Halaman admin list
Pada halaman admin list, sistem menggunakan HTTP GET untuk mendapatkan data kuliner dari server yang berupa format JSON. Kuliner yang
ditampilkan dalam list adalah semua data kuliner yang ada. Proses tersebut dapat dilihat pada Kode Program 10.
Kode Program 10 Proses pengambilan data JSON
Menu lain pada halaman ini adalah kolom pencarian untuk memfilter list kuliner tersebut. Filter tersebut digunakan untuk membantu admin jika ada data
yang ingin delete data atau update data. Selain kolom pencarian, halaman ini juga
1 kulinerInfos = new ArrayListKulinerInfo;
2 JSONArray array = new JSONArrayresult;
3 for int i = 0; i array.length; i++ {
4 JSONObject row = array.getJSONObjecti;
5 KulinerInfo info = new KulinerInfo;
6 info.setDescriptionrow.getStringdescription;
7 info.setIdrow.getLongid;
8 info.setLatituderow.getDoublelatitude;
9 info.setLongituderow.getDoublelongitude;
10 info.setNamerow.getStringname;
11 info.setPricerow.getDoubleprice;
12 info.setKategorinew KategoriKulinerrow.getLongkategoriId,
;
13 kulinerInfos.addinfo;
1 if httpResponse = null
2 switch httpResponse.getStatusLine.getStatusCode {
3 case HttpStatus.SC_OK: HTTP 200
4 result = HttpStatus.SC_OK;
5 break;
6 case HttpStatus.SC_FORBIDDEN: HTTP 403
7 result = HttpStatus.SC_FORBIDDEN;
8 break;}
memiliki menu inflater untuk menambah data kuliner yang terdapat pada menu admin edit.
Halaman admin edit terdapat 2 macam kondisi, yaitu : Jika admin memilih salah satu kuliner dari halaman menu admin list, maka
dapat dilihat pada Gambar 9.
Gambar 9 Halaman admin edit 1
Pada Gambar 8 dijelaskan halaman menu admin edit 1 sudah terdapat data kuliner yang ditampilkan. Data kuliner tersebut didapat dari halaman admin list
yang berupa format JSON. Data JSON tersebut antara lain : id kuliner, nama, harga, latitude, longitude, deskripsi dan id kategori kuliner. Pada halaman ini
dapat dilakukan proses update atau delete data dengan menggunakan menu inflater. Jika admin menggunakan inflater menu admin edit, maka dapat dilihat
pada Gambar 10.
Gambar 10 Halaman admin edit 2
Pada Gambar 10 dijelaskan halaman menu admin edit 2 merupakan halaman untuk menambahkan data kuliner baru. Pada halaman ini dapat dilakukan proses
insert data dengan menggunakan menu inflater. Dari 2 halaman menu admin edit tersebut menggunakan
AlertDialog yang sudah di custom untuk mengisikan data nama, deskripsi, harga dan kategori.
Namun pada pengisian data lokasi kuliner, sistem menggunakan tampilan
MapView untuk mendapat poin latitude dan longitude. Lebih jelasnya dapat
dilihat pada Gambar 11.
Gambar 11 Halaman set lokasi kuliner
Pada Gambar 11 dijelaskan pengambilan poin latitude dan longitude menggunakan android marker dengan proses
OnTap . Dimana titik yang dipilih
akan ditampilkan menggunaka toast yang berisi informasi latitude dan longitude tersebut. Dalam pengujian sistem menggunakan kuisioner, disebar kuisioner pada
mahasiswa Universitas Kristen Satya Wacana UKSW. Sebelum koresponden mengisi kuisioner, responden dipersilahkan untuk menggunakan dan menjalankan
Aplikasi Untuk Panduan Wisata Kuliner di Kota Magelang Pada Android mobile. Berikut ini adalah daftar pertanyaan yang dapat dilihat pada Tabel 5.
Tabel 3 Tabel pertanyaan
No Pertanyaan Pertanyaan
Pertanyaan 1 Apakah aplikasi ini mudah dimengerti ?
Pertanyaan 2 Bagaimana tingkat kesulitan dalam menjalankan aplikasi ini ?
Pertanyaan 3 Bagaimana tampilan aplikasi ini ?
Pertanyaan 4 Apakah aplikasi bermanfaat bagi anda ?
Pertanyaan 5 Apakah aplikasi ini membantu dalam pencarian wisata kuliner ?
Tabel 4 Tabel perhitungan kuisioner
No Sangat Mudah
Mudah Cukup
Sulit Sangat Sulit
Total P 1
2 10
16 80
2 10
20 100
P 2 1
5 14
70 5
25 20
100 Sangat
Menarik Menarik
Cukup Jelek
Sangat Jelek P 3
1 5
17 85
2 10
80 80
20 100
Sangat Ber
manfaat Ber
manfaat Cukup
Kurang Ber
manfaat Tidak Ber
manfaat P 4
5 25
13 65
1 5
1 5
20 100
Sangat Membantu
Mem bantu
Cukup Kurang
Membantu Tidak Mem
bantu P 5
7 35
12 60
1 5
20 100
Pada Tabel 4 menjelaskan pertanyaan ke-1 yaitu “Apakah aplikasi ini mudah dimengerti?” sebanyak 2 10 responden menjawab sangat mudah, 16
80 responden menjawab mudah dan 2 10 responden menjawab cukup. Pada pertanyaan ke-1 aplikasi ini mudah dimengerti bagi reponden.
Pertanyaan ke-2 yaitu “Bagaimana tingkat kesulitan dalam menjalankan aplikasi ini ?” sebanyak 1 5 responden menjawab sangat mudah, 14 70
responden menjawab mudah dan 525 responden menjawab cukup. Jadi kesimpulannya aplikasi. Pada pertanyaan ke-2 aplikasi ini mudah untuk
dijalankan bagi responden.
Pertanyaan ke-3 yaitu “Bagaimana tampilan aplikasi ini ?” sebanyak 1 5 responden menjawab sangat menarik, 17 85 responden menjawab
menarik dan 2 10 responden menjawab cukup. Pada pertanyaan ke-3 aplikasi ini memiliki tampilan yang menarik bagi responden.
Pertanyaan ke-4 yaitu “Apakah aplikasi ini bermanfaat bagi anda?” sebanyak 5 25 responden menjawab sangat bermanfaat, 13 65 responden
menjawab bermanfaat, 1 5 responden menjawab cukup dan 1 5 menjawab kurang bermanfaat. Pada pertanyaan ke-4 aplikasi ini bermanfaat bagi responden.
Pertanyaan ke-5 yaitu “Apakah aplikasi ini membantu dalam pencarian wisata kuliner?” sebanyak 2 35 responden menjawab sangat membantu, 16
60 responden menjawab membantu dan 2 5 responden menjawab cukup. Pada pertanyaan ke-5 aplikasi ini sangat membantu untuk mencari wisata kuliner
bagi responden
Dari hasil kuesioner yang telah diberikan kepada pengguna menunjukkan aplikasi yang dirancang mudah untuk dimengerti dengan tampilan yang cukup
menarik serta bermanfaat dalam mencari suatu wisata kuliner.
5. Kesimpulan