BAB IV
-
Upload
joojo-linux -
Category
Documents
-
view
34 -
download
0
Transcript of 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
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 :
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';
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
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";
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'];
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 =
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.
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:
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
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
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;
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:
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 {
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
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:
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)
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
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
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
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.
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.
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.
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
68
tanggal transaksi, nama customer, barang yang dibeli serta jumlahnya.
Gambar 4.19 Output pada server setelah transaksi