BAB IV

30
4444 BAB IV PENGUMPULAN DAN PENGOLAHAN DATA A. Gambaran Umum Implementasi Sistem Implementasi dilakukan dengan pengaplikasian sistem menggunakan perangkat lunak dan perangkat keras sesuai dengan perancangan yang telah dilakukan. Dalam sistem ini implementasi pada server menggunakan PHP sebagai bahasa pemrograman, dengan database MySQL, dan pada sisi client menggunakan bahasa pemrograman Android. Implementasi merupakan tahapan dimana sistem siap diaplikasikan pada keadaan sesungguhnya, dari implementasi akan diketahui apakah sistem yang dibuat dapat berjalan dan menghasilkan output yang sesuai dengan perancangan yang ada. Aplikasi ini dibuat untuk dapat diimplementasikan pada semua sistem penjualan. Tentunya dengan berbagi jenis sistem penjualan yang berbeda, aplikasi ini mampu diimplementasikan dengan pengembangan sesuai yang dibutuhkan sistem tersebut. B. Spesifikasi server 44

Transcript of BAB IV

Page 1: BAB IV

4444

BAB IV

PENGUMPULAN DAN PENGOLAHAN DATA

A. Gambaran Umum Implementasi Sistem

Implementasi dilakukan dengan pengaplikasian sistem menggunakan

perangkat lunak dan perangkat keras sesuai dengan perancangan yang telah

dilakukan. Dalam sistem ini implementasi pada server menggunakan PHP

sebagai bahasa pemrograman, dengan database MySQL, dan pada sisi client

menggunakan bahasa pemrograman Android.

Implementasi merupakan tahapan dimana sistem siap diaplikasikan

pada keadaan sesungguhnya, dari implementasi akan diketahui apakah sistem

yang dibuat dapat berjalan dan menghasilkan output yang sesuai dengan

perancangan yang ada.

Aplikasi ini dibuat untuk dapat diimplementasikan pada semua sistem

penjualan. Tentunya dengan berbagi jenis sistem penjualan yang berbeda,

aplikasi ini mampu diimplementasikan dengan pengembangan sesuai yang

dibutuhkan sistem tersebut.

B. Spesifikasi server

Implementasi ditinjau dari sisi server atau sebagai yang memberikan

layanan kepada client adalah minimal sebagai berikut:

1. Komputer server dengan minimal processor 1000MHz IBM kompatibel,

RAM 256MB.

2. Sistem Operasi Windows XP Professional.

3. Apache versi 2.0.64

4. Bahasa pemrograman sisi server PHP versi 5.2.5

5. Database server MySQL versi 5.1.37.

44

Page 2: BAB IV

45

C. Spesifikasi pada sisi client

Implementasi ditinjau dari sisi client atau sebagai yang membutuhkan

layanan dari server adalah minimal sebagai berikut:

1. Handphone dengan fitur Android

2. Android versi 2.2 dengn kode nama Froyo atau lebih.

Pada implementasi dari sisi aplikasi terbagi menjadi dua bagian, yaitu:

aplikasi logik bisnis sebagai penyedia service dan aplikasi pencatatan penjualan

pada handphone untuk client.

D. Aplikasi Service

Aplikasi logik bisnis dibangun menggunakan bahasa pemrograman

PHP yang terkoneksi dengan database server MySQL. Pada service dibuat

beberapa fungsi-fungsi yang akan dipakai untuk proses aplikasi pencatatan

penjualan.

Pada perancangannya, service telah dibagi menjadi empat menu utama,

yaitu Login, Customer, Produk, dan Cart yang masing-masing mempunyai

method dan fungsi yang berbeda.

Kelas login mempunyai method getLogin yang berfungsi untuk

memvalidasi username apakah dapat menggunakan layanan Aplikasi tersebut.

Method ini akan meminta masukan / input username dan password sales yang

akan di-cek validasinya oleh sistem, kemudian akan diberikan keluaran /

output nilai benar dan salah. Jika bernilai benar maka akan masuk ke proses

selanjutnya, yaitu menu aplikasi penjualan, sedangkan jika bernilai salah,

sistem akan memberitahukan bahwa inputan masih salah.

Berikut merupakan fungsi-fungsi atau method-method yang diberikan

pada masing-masing service beserta keterangannya :

Page 3: BAB IV

46

Tabel 4.1 Fungsi-fungsi pada service

No Service Method Keterangan

1. Login Login Melakukan validasi username dan

password sales untuk dapat

mengakses aplikasi Penjualan

2. Customer ListCust Mengambil data informasi

customer yaitu berdasarkan nama

customer

ProsesInputCust Memasukkan data customer, yaitu

nama, alamat, manager, no telpon,

email dan status customer.

UpdateCust Mengupdate data customer. Data

yang bisa di update diantaranya

adalah nama, alamat, manager, id

cabang, no telpon, email customer.

3. Produk ListProduk Mengambil nama produk

berdasarkan id produk.

DetilProduk Mengambil informasi detail produk

barang.

BeliProduk Memilih produk yang akan dibeli

dan dimasukan ke dalam keranjang

belanja.

4. Cart ListCart($data) Mengambil nama produk

berdasarkan id produk dan id

transaksi

Sintax yang dibentuk dari fungsi-fungsi di atas :

Login

<?php

include 'koneksi.php';

Page 4: BAB IV

47

$param = file_get_contents("php://input");

$json = json_decode($param);

$user = $json->user;

$pass = $json->pass;

$db = "Select * from sales Where uname_sales='$user' and

pwd_sales='$pass'";

$query = mysql_query($db);

if (mysql_num_rows($query) > 0) {

echo "login";

} else {

echo "gagal";

}

?>

Listing kode 4.1 fungsi Login

ListCust

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$data = "";

if (isset($json->namacust)) {

$db = "Select * from customer Where nama_cust like '%$json->namacust

%'";

} else {

$db = "Select * from customer";

}

$query = mysql_query($db);

while ($row = mysql_fetch_array($query)) {

$data.= $row['nama_cust'] . "#";

}echo $data;

?>

Listing kode 4.2 fungsi ListCust

ProsesInputCust

Page 5: BAB IV

48

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$namacust = $json->namacust;

$alamat = $json->almt;

$penanggung = $json->pj;

$nomor = $json->no_telp;

$email = $json->email;

$db = "insert into customer values ('', '$namacust', '$alamat',

'$penanggung', '$nomor', '$email');";

$query = mysql_query($db);

if ($query) {

echo "Input Berhasil";

} else {

echo "Input Gagal";

}

?> <?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$namacust = $json->namacust;

$alamat = $json->almt;

$penanggung = $json->pj;

$nomor = $json->no_telp;

$email = $json->email;

$db = "insert into customer values ('', '$namacust', '$alamat',

'$penanggung', '$nomor', '$email');";

$query = mysql_query($db);

if ($query) {

echo "Input Berhasil";

} else {

echo "Input Gagal";

Page 6: BAB IV

49

}

?>

Listing kode 4.3 fungsi ProsesInputCust

ListProduk

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$data = "";

$db = "Select * from barang Where nama_barang like '%$json->namaproduk

%'";

$query = mysql_query($db);

while ($row = mysql_fetch_array($query)) {

$data.= $row['nama_barang'] . "#";

}echo $data;

?>

Listing kode 4.4 fungsi ListProduk

DetilProduk

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$data = "";

$db = "Select * from barang Where nama_barang = '$json->namaproduk'";

$query = mysql_query($db);

while ($row = mysql_fetch_array($query)) {

$id = $row['id_barang'];

$nama = $row['nama_barang'];

$harga = $row['harga'];

$deskripsi = $row['deskripsi'];

Page 7: BAB IV

50

$stok = $row['stok'];

}

echo $id . '#' . $stok . '#';

include 'tampildetilproduk.php';

?>

Listing kode 4.5 fungsi DetilProduk

UpdateCust

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$data = "";

$mode = $json->mode;

if ($mode=="ambil") {

//mengambil data

$db = "select * from customer Where nama_cust = '$json-

>nama_cust'";

$query = mysql_query($db);

while ($row = mysql_fetch_array($query)) {

$data.= $row['nama_cust'] . "#";

$data.= $row['alamat_cust'] . "#";

$data.= $row['manager'] . "#";

$data.= $row['no_telp'] . "#";

$data.= $row['email'] . "#";

}echo $data;

} else if ($mode=="kirim") {

$namacust = $json->namacust;

$alamat = $json->almt;

$penanggung = $json->pj;

$nomor = $json->no_telp;

$email = $json->email;

$db = "update customer set alamat_cust = '$alamat',

manager = '$penanggung', no_telp = '$nomor', email =

Page 8: BAB IV

51

'$email' where nama_cust = '$namacust' ";

$query = mysql_query($db);

if ($query) {

echo "Input Berhasil";

} else {

echo "Input Gagal";

}

}

?>

Listing kode 4.6 fungsi UpdateCust

ListCart

<?php

include 'koneksi.php';

$param = file_get_contents("php://input");

$json = json_decode($param);

$data = "";

$db = "Select * from detil_transaksi a join barang b

on(a.id_barang=b.id_barang) Where a.id_transaksi=1";

$query = mysql_query($db);

while ($row = mysql_fetch_array($query)) {

$data.= $row['nama_barang'] . "#";

}echo $data;

?>

Listing kode 4.7 fungsi ListCart

E. Aplikasi Pencatatan Penjualan Pada Handphone

Aplikasi pencatatan penjualan pada handphone merupakan aplikasi

yang sudah terintegrasi dengan service yang telah dibuat. Aplikasi pencatatan

penjualan ini, dikhususkan untuk sales yang sudah terdaftar sebagai user

melalui web. Aplikasi ini terdiri dari beberapa bagian : Menu Customer, Menu

Produk , Keranjang Belanja dan Log out. Sebelum melakukan login, jalankan

aplikasi utama terlebih dahulu.

Page 9: BAB IV

52

Gambar 4.1 Icon Aplikasi Penjualan

Setelah muncul splash screen, maka akan masuk ke halaman awal.

Berisi pembuka saja sebagai loading, tampilannya sebagai berikut :

Gambar 4.2 Splash Screen

Pada menu ini, sales diminta untuk mengisikan username dan

password agar dapat mengakses layanan aplikasi pencatatan penjualan dan

menekan Log In, seperti terlihat pada gambar:

Page 10: BAB IV

53

Gambar 4.3 Menu Login Sales

public void onClick(View arg0) {

switch (arg0.getId()) {case R.id.bt_login:

cek_login();break;

case R.id.bt_exit:Login_user.this.finish();

default:break;

}}public void cek_login(){

String User= uname.getText().toString();String Password= pass.getText().toString();JSONObject json= new JSONObject();try {

json.put("user",User);json.put("pass",Password);

} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();

}String hasil=Koneksi.DownloadString(URL, json);Toast.makeText(this, hasil,

Toast.LENGTH_LONG).show(); $res =''; //Data Not Found

}

Listing kode 4.8 fungsi method Login

Page 11: BAB IV

54

Setelah proses login berhasil (pada saat ini mengirim validasi ke

server), maka akan masuk ke halaman utama yang berisi menu, antara lain

customer, produk, keranjang belanja, dan log out.

Gambar 4.4 Halaman Utama Menu Penjualan

public void onClick(View arg0) {// TODO Auto-generated method stubswitch (arg0.getId()) {case R.id.cust:

startActivity(halcust);break;

case R.id.produk:startActivity(halproduk);break;

case R.id.cart:startActivity(halcart);break;

case R.id.logout:

default:break;

}

Listing kode 4.9 Menu Utama

Page 12: BAB IV

55

1. Menu Customer

Menu customer terdiri dari input baru, pencarian dan list customer

Gambar 4.5 Menu Customer

private class Loading extends AsyncTask {ProgressDialog pd;

@Overrideprotected void onPreExecute() {

// TODO Auto-generated method stubsuper.onPreExecute();

pd = ProgressDialog.show(Customer.this, "Load from server", "aaa");

pd.setMessage("Loading...");pd.show();

}

@Overrideprotected Object doInBackground(Object... arg0) {

// TODO Auto-generated method stubtry {json.put("namacust",

namacust.getText().toString());

} catch (Exception e) {// TODO: handle exception

}String hasil = Koneksi.DownloadString(URL,

json);return hasil;

Page 13: BAB IV

56

}

@Overrideprotected void onPostExecute(Object result) {

// TODO Auto-generated method stubif (pd.isShowing()) {

pd.dismiss();}// TODO Auto-generated method stubif (result != null && result instanceof String)

{isilist = result.toString().split("#");adapter = new

ArrayAdapter<String>(Customer.this,

android.R.layout.simple_list_item_1, isilist);listcust.setAdapter(adapter);

}}

}Listing kode 4.10 Menu Customer

Input baru dilakukan oleh sales bila customer belum terdaftar

menjadi customer sales tersebut. Sales memasukkan nama, alamat,

penanggungjawab, no telepon dan email customer kemudian pilih OK.

Maka data langsung dikirim ke server, jika gagal maka server akan

mengirimkan pesan gagal. Maka secara otomatis data tersebut akan

tersimpan di database local/memori handphone sales. Informasi input baru

pada menu customer terlihat pada gambar di bawah ini:

Page 14: BAB IV

57

Gambar 4.6 Tampilan Input Customer Baru

public void onClick(View arg0) {// TODO Auto-generated method stubswitch (arg0.getId()) {case R.id.bt_prosescust:

snama = namacust.getText().toString();salmt = almt.getText().toString();spj = pj.getText().toString();sno_telp = no_telp.getText().toString();semail = email.getText().toString();

if (snama.equalsIgnoreCase("") && salmt.equalsIgnoreCase("")

&& spj.equalsIgnoreCase("") && sno_telp.equalsIgnoreCase("")

&& semail.equalsIgnoreCase("")) {Toast.makeText(Input_cust.this, "input kurang

lengkap", Toast.LENGTH_LONG).show();

} else {( new Loading()).execute((Object) null ) ;

}break;

case R.id.bt_batal:Input_cust.this.finish();break;

default:break;

}}

private class Loading extends AsyncTask {

Page 15: BAB IV

58

ProgressDialog pd;

@Overrideprotected void onPreExecute() {

// TODO Auto-generated method stubsuper.onPreExecute();pd = ProgressDialog.show(Input_cust.this, "Load from server",

"aaa");pd.setMessage("Loading...");pd.show();

}

@Overrideprotected Object doInBackground(Object... arg0) {

// TODO Auto-generated method stubtry {json.put("namacust",

namacust.getText().toString());json.put("almt", almt.getText().toString());json.put("pj", pj.getText().toString());json.put("no_telp",

no_telp.getText().toString());json.put("email", email.getText().toString());} catch (Exception e) {

// TODO: handle exception}String hasil = Koneksi.DownloadString(URL,

json);return hasil;

}

@Overrideprotected void onPostExecute(Object result) {

if (pd.isShowing()) {pd.dismiss();

}// TODO Auto-generated method stub

if (result != null && result instanceof String) {Toast.makeText(Input_cust.this,

result.toString(), Toast.LENGTH_LONG).show();if (result.toString().equalsIgnoreCase("Input

Berhasil")) {Input_cust.this.finish();

} else {Toast.makeText(Input_cust.this,

result.toString(), Toast.LENGTH_LONG).show();

}}

}}

Listing kode 4.11 fungsi Login

Page 16: BAB IV

59

Pada menu input baru terdapat beberapa field yang harus diisikan

sales untuk mendaftarkan customer, yaitu nama, alamat, no.telp,

penanggungjawab dan email. Id_customer secara otomatis sudah terisi.

Setelah semua data diisi, pilih tombol Proses. Data customer tersebut akan

diisikan ke database server.

Terdapat lagi fungsi pencarian customer pada menu cutomer yang

digunakan untuk mencari customer yang telah diinputkan. Apabila seorang

sales mempunyai banyak customer, maka fasilitas ini dibuat agar

pencarian yang dilakukan sales menjadi lebih cepat dan mudah. Misal kita

akan mencari customer, maka ketikkan pada menu di atas dengan kata

kuncinya “en” maka mucul hasil pencarian yang mengandung huruf “en”

sebagai berikut :

Gambar 4.7 Hasil Pencarian Customer

Setelah kita memilih salah satu customer, terdapat 2 menu pilihan

yang dapat dilakukan, yaitu update untuk mengupdate data customer, dan

pilih yang berfungsi memilih customer yang diinginkan dan untuk

melanjutkan ke menu selanjutnya, yaitu menu Produk. Menu pilihan

terlihat pada gambar di bawah ini:

Page 17: BAB IV

60

Gambar 4.8 Menu Dialog Pilihan

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

// TODO Auto-generated method stubtx = (TextView) arg1;new AlertDialog.Builder(this).setTitle("Silahkan Pilih").setMessage("Silahkan klik \"Pilih\" untuk ke menu

selanjutnya atau klik \"Update\" untuk mengganti info Customer").setPositiveButton("Pilih",new

DialogInterface.OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub

edit.putString(Login_user.VJ_PREFERENCES_CUSTOMER, tx.getText().toString());edit.commit();String sales =

VJSetting.getString(Login_user.VJ_PREFERENCES_SALES, "");String customer =

VJSetting.getString(Login_user.VJ_PREFERENCES_CUSTOMER, "");try {json.put("namacust", sales);json.put("namasales", sales);} catch (JSONException e) {

// TODO Auto-generated catch blocke.printStackTrace();

}String hasil = Koneksi.DownloadString(URL2,json);Toast.makeText(getApplicationContext(),sales + customer,

Toast.LENGTH_LONG)

Page 18: BAB IV

61

.show();} })

.setNegativeButton("Update",newDialogInterface.OnClickListener() {

void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub

halupdatecust.putExtra("Nama", tx.getText().toString());startActivity(halupdatecust);}

}).show();}

Listing kode 4.12 Menu Dialog Pilihan

2. Menu Produk

Menu produk ini berisi informasi produk, yaitu: id barang, id jenis,

nama barang, harga, diskripsi dan stok. Pada menu barang ini juga

disediakan daftar keseluruhan pruduk serta pencarian / search dengan

memasukkan nama produk yang di inginkan. Kemudian pilih tombol cari,

maka pencarian akan dilakukan langsung ke database yang berada di

server.

Gambar 4.9 Menu Produk

Page 19: BAB IV

62

Misal kita akan mencari salah satu produk, maka ketikkan pada menu

di atas dengan contoh “simpati” maka mucul hasil pencarian yang

mengandung kata “simpati” sebagai berikut :

Gambar 4.10 Pencarian Produk

Gambar 4.11 Info Produk

Page 20: BAB IV

63

private class Loading extends AsyncTask {ProgressDialog pd;

@Overrideprotected void onPreExecute() {

// TODO Auto-generated method stubsuper.onPreExecute();pd = ProgressDialog.show(Detil_produk.this, "Load from server",

"aaa");pd.setMessage("Loading...");pd.show();

}

@Overrideprotected Object doInBackground(Object... arg0) {

// TODO Auto-generated method stubtry {json.put("namaproduk",

terimadata.getStringExtra("Detil"));

} catch (JSONException e) {// TODO Auto-generated catch block

e.printStackTrace();}

String hasil = Koneksi.DownloadString(URL, json);

return hasil;}

@Overrideprotected void onPostExecute(Object result) {

if (pd.isShowing()) {pd.dismiss();

}// TODO Auto-generated method stub

if (result != null && result instanceof String) {

data = result.toString().split("#");webviewdetil.loadData(data[1], "text/html", "utf-8");webviewdetil.setBackgroundColor(Color.TRANSPARENT);

}}

}

Listing kode 4.13 Info Produk

Pada menu Info Produk diatas, sales dapat langsung menentukan

jumlah yang diminta. dan memesan produk yang diinginkan dengan

memilih “beli”. Fungsi ini hanya dapat diakses ketika sales telah memilih

satu customer. Apabila sales belum memilih, maka sales hanya dapat

Page 21: BAB IV

64

melihat detail barang. Setelah memilih barang, otomatis data akan

tersimpan dalam “Keranjang Belanja”.

3. Menu Cart (Keranjang Belanja)

Menu keranjang belanja terdiri dari list belanja, button proses

dan button delete. List belanja berfungsi untuk menampilkan barang yang

telah dimasukkan ke dalam keranjang, bila menginginkan tambah belanja

maka pilih tombol back masuk menu produk dan belanja lagi. Selanjutnya

apabila akan dipesan maka langsung melakukan pemesanan dengan

memilih “proses” bila tidak jadi memesan salah satu barang bisa memilih

delete pada barang yang tidak diinginkan.

Gambar 4.12 Menu Keranjang Belanja

Dengan demikian tidak perlu menginputkan data berulang – ulang

karena data yang dikirim ke server akan lebih mudah dalam

pengolahannya sehingga mudah dalam pembuatan laporan serta dapat

menghemat biaya karena data telah tersentral.

Page 22: BAB IV

65

F. Alur Koneksi Aplikasi ke Server dan Sebaliknya

Penulis akan menunjukkan salah satu proses koneksi ataupun transaksi

antara aplikasi dan server sehingga diharapkan pemakai aplikasi akan

memahami interface maupun interaksi yang ditunjukan antara aplikasi dan

server. Alur yang akan ditunjukkan adalah saat proses input customer baru.

Pada sisi server tabel customer ditunjukkan seperti Gambar 4.14

Gambar 4.13. Tabel Customer sebelum Input Customer Baru

Pada proses input baru yang ditunjukkan seperti gambar 4.15 dimasukkan

nama customer “Bangun Cell” dan keterangan yang lainnya, kemudian pilih

tombol proses untuk melanjutkan dan akan menemukan kotak dialog bahwa

input customer baru telah berhasil atau input customer baru gagal bila proses

tidak sesuai seperti pada gambar 4.16. dan user hanya tinggal menekan tombol

button untuk kembali ke proses sebelumnya.

Page 23: BAB IV

66

Gambar 4.14 Input Customer Baru

Gambar 4.15 Custom Dialog Input Berhasil

Setelah proses input berhasil maka pada tabel customer akan

bertambah satu customer dengan nama “Bangun Cell” seperti pada gambar

4.17 serta pada client yang ditunjukkan oleh gambar 4.18 setelah aplikasi di

reload.

Page 24: BAB IV

67

Gambar 4.16 Tabel Customer setelah Input Customer Baru

Gambar 4.17 List Customer pada Client setelah Input Customer Baru

Tampilan output yang akan muncul setelah dibuat desain web serta

konfigurasinya akan seperti gambar 4.19 dibawah ini yang akan memunculkan

Page 25: BAB IV

68

tanggal transaksi, nama customer, barang yang dibeli serta jumlahnya.

Gambar 4.19 Output pada server setelah transaksi