Disusun Oleh :
Farah Devi Isnanda
M.Herwindra Berlian
Suryo Aji Waskitho
2210121033
2210121035
2210121058
PEMBIMBING :
Ir.Dadet Pramadihanto, M.Eng, Ph.D
NIP. 196202111988111001
Dosen Pembimbing
Ilmanza Restuadi K., Ir., M
Pembimbing Kerja Praktek
LEMBAR PENGESAHAN
APLIKASI SISTEM VERIFIKASI DATA SPJ
PT. SEMEN INDONESIA (PERSERO),Tbk.
GRESIK - JAWA TIMUR
SEKSI/BIRO Tim Pengembangan ICT
PERIODE : 4 Agustus s/d 29 Agustus 2014
Disusun Oleh :
Farah Devi Isnanda
M.Herwindra Berlian
Suryo Aji Waskitho
2210121033
2210121035
2210121058
Surabaya, 29 Agustus 2014
Menyetujui,
Nopeg. 949
LEMBAR PERSETUJUAN
APLIKASI SISTEM VERIFIKASI DATA SPJ
PT. SEMEN INDONESIA (PERSERO),Tbk.
GRESIK - JAWA TIMUR
SEKSI/BIRO Tim Pengembangan ICT
PERIODE : 4 Agustus s/d 29 Agustus 2014
Disusun Oleh :
Farah Devi Isnanda
M.Herwindra Berlian
Suryo Aji Waskitho
2210121033
2210121035
2210121058
Surabaya, 29 Agustus 2014
Dosen Pembimbing
KATA PENGANTAR
Ketua Program Studi
Teknik Komputer
Puji syukur kehadirat Tuhan Yang Maha Kuasa yang telah memberikan
rahmat, hidayah serta Tuntunan-Nya sehingga penulis dapat menyelesaikan
Kerja Praktek di PT.SEMEN INDONESIA(PERSERO) Pabrik Gresik dan
Ir. Sigit Wasista, M.Kom
menyusun laporan Kerja Praktek untuk memenuhi Sistem Kredit Semester (SKS)
NIP. 196608121993031005
sebagai persyaratan yang harus dilaksanakan untuk menempuh program
Diploma IV di Politeknik Elektonika Negeri Surabaya.
Penulis mengucapkan rasa terima kasih yang sebesar-besarnya
kepada yang terhormat :
1. Allah SWT atas segala limpahan rahmat-Nya sehingga penulis dapat
melaksanakan kerja praktek dan menyelesaikan laporan kerja praktek.
2. Orang Tua kami tercinta yang selalu mendoakan dan memberikan
dukungan semangat serta material.
3. Bapak Ir. Sigit Wasista, M.Kom. selaku ketua program studi Teknik
Komputer Politeknik Elektronika Negeri Surabaya.
4. Bapak Iwan Kurnianto Wibowo,S.ST,MT. selaku Koordinator Kerja
Praktek Prodi Teknik Komputer
5. Bapak Ir.Dadet Pramadihanto,M.Eng, Ph.D selaku Dosen
Pembimbing Kerja Praktek
6. Bapak Ilmanza Restuadi K., Ir., M Selaku pembimbing kerja praktek
PT.Semen Indonesia (PERSERO)
7. Segenap pegawai PT.Semen Indonesia(PERSERO) yang telah
membantu selama pelaksanaan Kerja Praktek.
Dalam penyusunan laporan, penulis menyadari bahwa laporan kerja
praktek yang dibuat masih jauh dari sempurna, oleh karena itu penulis
mengharapkan kritik dan saran yang bersifat membangun dari berbagai pihak.
Akhir kata penulis mengharapkan semoga laporan kerja praktek yang disusun
bermanfaat bagi penulis pada khususnya dan pembaca pada umumnya.
Surabaya, Agustus 2014
Penulis
DAFTAR ISI
HALAMAN JUDUL...........................................................................................i
LEMBAR PENGESAHAN...............................................................................ii
LEMBAR PERSETUJUAN............................................................................iii
KATA PENGANTAR.......................................................................................iv
DAFTAR ISI......................................................................................................v
DAFTAR GAMBAR........................................................................................ix
DAFTAR TABEL.............................................................................................xi
BAB I. PENDAHULUAN.................................................................................1
1.1
Latar Belakang.....................................................................1
1.2.
Permasalahan......................................................................2
1.3.
Tujuan................................................................................3
1.3.1.
Tujuan Umum...........................................................................3
1.3.2.
Tujuan Khusus..........................................................................3
1.4.
MANFAAT KERJA PRAKTEK..............................................3
1.4.1.
Bagi Perguruan Tinggi..............................................................3
1.4.2.
Bagi Perusahaan........................................................................3
1.4.3.
Bagi Mahasiswa........................................................................4
1.5.
METODOLOGI PENGUMPULAN DATA...............................4
1.6.
SISTEMATIKA PENULISAN LAPORAN...............................5
1.7.
WAKTU DAN TEMPAT PELAKSANAAN..............................5
1.8.
PELAKSANA KEGIATAN....................................................5
1.9.
NAMA UNIT KERJA TEMPAT PELAKSANAAN....................5
BAB II. TINJAUAN PUSTAKA......................................................................7
2.1.
Sejarah Singkat....................................................................7
2.2.
Profil PT.Semen Indosenia(PERSERO),Tbk .............................7
2.3.
Logo PT.Semen Indonesia (PERSERO),Tbk..............................8
2.3.1.
Arti Logo PT.SEMEN INDONESIA (PERSERO)...................8
2.4.
Visi dan Misi.......................................................................8
2.5.
Lokasi................................................................................8
2.6.
Struktur Organisasi PT.Semen Indonesia...................................9
2.7.
Sistem Manajemen PT.Semen Indonesia.................................10
2.8.
Produk.............................................................................10
2.9.
Anak Perusahaan................................................................11
2.9.2.
Anak perusahaan bukan penghasil semen...............................11
2.10. ANDROID........................................................................12
2.10.1.
Versi pada android..............................................................12
1.
Android versi 1.1.........................................................................12
2.
Android versi 1.5 (Cupcake).......................................................12
3.
Android versi 1.6 (Donut)...........................................................12
4.
Android versi 2.0/2.1 (Eclair).....................................................12
5.
Android versi 2.2 (Froyo: Frozen Yoghurt).................................12
6.
Android versi 2.3 (Gingerbread).................................................12
7.
Android versi 3.0/3.1 (Honeycomb)...........................................12
8.
Android versi 4.0 (ICS: Ice Cream Sandwich)...........................12
9.
Android versi 4.1 (Jelly Bean)....................................................12
10.
Android versi 4.4 (KitKat)..........................................................12
2.10.2.
Fitur yang tersedia di Android............................................12
2.11. QR Code..........................................................................13
2.11.1.
Decoder QR Code...............................................................14
2.11.2.
Pengkodean data.................................................................15
2.11.3.
Menghitung Koreksi Error.................................................18
2.11.4.
Pola Mask...........................................................................18
2.11.5.
Library Zxing......................................................................19
2.12. Global Positioning System (GPS)..........................................19
2.13. PHP.................................................................................20
2.13.1.
Tata Cara Penulisan PHP....................................................20
2.13.2. Macam Penulisan...............................................................21
2.13.3.
Variabel dalam PHP............................................................22
2.13.4.
Tipe Data PHP....................................................................23
2.13.5.
Struktur Kendali.................................................................24
2.14. JSON (JavaScript Object Notation)........................................24
2.15. Oracle..............................................................................25
2.15.1.
Komponen-komponen database oracle...............................25
2.15.2.
Operasi database dengan Oracle.........................................25
2.16. Method Post dan Get...........................................................28
2.16.1.
Method Post........................................................................28
2.16.2.
Method Get.........................................................................28
2.17. Database Server.................................................................29
2.17.1.
Cara Kerja Web Server.......................................................29
2.17.2.
Kategori Aplikasi Database................................................30
2.18. Bootstrap..........................................................................30
2.18.1.
Definisi...............................................................................30
2.18.2.
Kelebihan dan kekurangan Bootstrap.................................31
2.19. Use case diagram...............................................................32
2.19.1.
Pengertian...........................................................................32
2.19.2.
Komponen Pembentuk / Bagian Use Case diagram...........32
2.19.3.
Menyusun diagram use case...............................................34
2.20. Flowchart.........................................................................35
2.20.1.
System flowchart................................................................35
2.20.2.
Program flowchart..............................................................35
BAB III. ANALISA DAN PEMBAHASAN...................................................37
3.1.
Cara Kerja Sistem...............................................................37
3.1.1.
Flowchart sistem pada Android..............................................37
3.1.2.
Bagan flowchart sistem pada web..........................................39
3.2.
Perancangan Hardware........................................................47
3.2.1.
Spesifikasi Hardware (Komputer)..........................................47
3.3.
Perancangan Software.........................................................47
3.3.1.
Spesifikasi Software...............................................................47
3.3.2.
Instalasi Software pada PC.....................................................47
3.4.
Pengujian Software.............................................................49
3.4.1.
Menu Login User....................................................................49
3.4.2.
Menu Utama...........................................................................49
3.4.3.
Proses Scan QR Code.............................................................50
3.4.4.
Hasil Scan QR Code...............................................................50
3.4.5.
Tampilan Verifikasi data.........................................................51
3.4.6.
Tampilan saat memilih cek.....................................................52
3.4.7.
Tampilan data koordinat lokasi pada Map..............................52
3.4.8.
Menu login Admin..................................................................53
3.4.9.
Menu Utama Admin................................................................53
3.4.10.
Menu Lihat User.................................................................54
3.4.11.
Menu Registrasi user baru..................................................54
3.4.12.
Dashboard Web server Generate QR Code.....................55
3.4.13.
Menu Storing database.......................................................55
4.4.14.
Menu Report.......................................................................64
4.4.15.
Menu Storing Location.......................................................64
4.4.16.
Driving Direction................................................................65
4.4.17.
Map Quest Direction..........................................................68
BAB IV. PENUTUP.........................................................................................69
5.1.
Kesimpulan.......................................................................69
5.2.
Saran-Saran.......................................................................69
DAFTAR PUSTAKA.......................................................................................70
LAMPIRAN.....................................................................................................71
Lampiran 1 : Agenda Kegiatan Kerja Praktek di PT.Semen Indonesia
(PERSERO) Tbk Tim Pengembangan ICT..................................................71
Lampiran 2 : Program pada Android............................................................74
Lampiran 3: Dokumentasi............................................................................117
Lampiran 4: Biodata Penulis........................................................................120
DAFTAR GA
10
11
BAB I.
PENDAHULUAN
Pada bab ini penulis akan membahas tentang latar belakang ,
permasalahan, waktu dan tempat pelaksanaan, tujuan, manfaat, pelaksana
kegiatan, metodelogi pengumpulan data sistematika penulisan laporan yang
digunakan untuk menyelesaikan project kerja praktek yang diberikan.
1.1 Latar Belakang
Dewasa ini, teknologi telah menjadi salah satu kebutuhan primer
masyarakat seiring dengan semakin berkembangnya zaman.
Pemanfaatan teknologi saat ini sangat banyak diterapkan dalam segala
bidang, terutama teknologi dengan mobile dalam penggunaannya telah
menjadi jenis teknologi favorit masyarakat. Teknologi mobile erat
hubungannya dengan pengembangan aplikasi aplikasi khususnya
berbasis android .
Telah banyak diketahui bahwa dewasa ini, hampir seluruh masyarakat
mempunyai mobile phone berbasis android . Sehingga telah banyak pula yang
menggunakan perangkat android untuk dikembangkan menjadi suatu
perangkat yang dapat memudahkan pekerjaan baik individu maupun grup dan
perusahaan .
Ditinjau dari kondisi bangsa sebagai aktualisasi kehidupan manusia
secara komunal, maka pengembangan ilmu pengetahuan dan teknologi
mempunyai peranan yang penting dalam kemajuan bangsa. Pengembangan
IPTEK berfungsi sebagai sarana percepatan peningkatan sumber daya
manusia, perluasan kesempatan kerja, peningkatan harkat dan martabat
bangsa sekaligus peningkatan kesejahteraan rakyat, pengarah proses
pembaharuan, serta peningkatan produktifitas.
Dasar pengembangan ilmu pengetahuan dan teknologi (IPTEK)
dibangun oleh dua pihak yang saling berkaitan, yakni praktisi lapangan di
dunia industri dan akademisi di kalangan pendidikan khususnya perguruan
tinggi. Pembangunan di bidang pendidikan dilaksanakan seiring dengan
pengembangan ilmu pengetahuan dan teknologi, dengan mengaplikasikan
suatu sistem pendidikan nasional dalam rangka peningkatan kemampuan
sumber daya manusia (SDM) nasional di berbagai bidang. Pengembangan
1.3.
Tujuan
1.3.1. Tujuan Umum
1. Terciptanya suatu hubungan yang sinergis, jelas dan terarah antara
dunia perguruan tinggi dan dunia kerja.
2. Meningkatkan kepedulian dan partisipasi pelaku dunia usaha dalam
memberikan kontribusinya pada sistem pendidikan nasional.
3. Membuka wawasan mahasiswa agar dapat mengetahui dan memahami
aplikasi ilmu yang dipelajarinya dalam perkuliahan di dunia industri serta
mampu menyerap dan berasosiasi dengan dunia kerja secara utuh.
4. Mahasiswa dapat memahami dan mengetahui sistem kerja di dunia
industri sekaligus mampu mengadakan pendekatan masalah secara
utuh dan menyeluruh.
5. Menumbuhkan pola berpikir konstruktif dan dinamis yang lebih
berwawasan bagi mahasiswa dalam dunia perindustrian.
1.3.2.
Tujuan Khusus
Tujuan khusus pelaksanaan kerja praktek adalah untuk memenuhi
Sistem Kredit Semester (SKS) sebagai persyaratan administrasi akademis di
Program Studi Teknik Komputer, Politeknik Elektronika Negeri Surabaya.
1.4.
MANFAAT KERJA PRAKTEK
1.4.1. Bagi Perguruan Tinggi
1. Sarana pengenalan perkembangan IPTEK khususnya Teknik
Komputer dan sebagai bahan pertimbangan dalam penyusunan
program di PENS.
2. Sebagai bahan masukan dan evaluasi program pendidikan di PENS
untuk menghasilkan tenaga - tenaga trampil sesuai kebutuhan
industri .
1.4.2. Bagi Perusahaan
1. Sarana mengetahui kualitas pendidikan di perguruan tinggi negeri,
khususnya PENS.
2. Sarana untuk memberikan kriteria tenaga kerja yang dibutuhkan
oleh badan usaha terkait.
3. Sarana untuk mengenalkan teknologi industri pada dunia
pendidikan.
1.4.3.
Bagi Mahasiswa
1. Mahasiswa dapat menerapkan ilmu yang didapat pada
industri.
2. Menambah wawasan dan pengalaman selaku ganerasi muda
yang dididik untuk siap terjun langsung di masyarakat
khususnya di dunia kerja.
3. Meningkatkan kreatifitas dan ketrampilan mahasiswa.
4. Menyiapkan diri untuk menghadapi persaingan dan
tantangan dalam meghadapi permasalahan yang timbul di
dunia industri.
1.5.
METODELOGI PENGUMPULAN DATA
Untuk dapat menyelesaikan permasalahan yang diberikan oleh
perusahaan, maka penulis menggunakan beberapa metodelogi, yaitu:
1. Studi Literatur, dengan mempelajari literatur , buku atau artikel yang
ada kaitannya dengan objek yang diteliti. Kegunaan metode ini adalah
diharapkan dapat mempertegas teori serta keperluan analisa dan
mendapatkan data yang sesungguhnya.
2. Wawancara, melakukan wawancara kepada praktisi yang
berhubungan dengan permasalahan untuk mendapatkan informasi
kebutuhan sistem..
3. Perancangan sistem, yakni dengan melakukan langkah-langkah
sebagai berikut :
3.1. Analisis , berisi informasi tentang aplikasi sistem verifikasi
SPJ yang akan dibuat .
3.2. Perancangan , berisi gambaran/alur yang digunakan untuk
membuat interface pada aplikasi .
3.3. Konfigurasi , proses pengaturan aplikasi system verifikasi SPJ
dengan login menggunakan user account
yang telah
didaftarkan .
3.4. Pengujian aplikasi , yakni proses pengujian terhadap aplikasi
yang telah dibuat.
4. Penyusunan Laporan Kerja Praktek , pada tahap ini disusun buku
laporan sebagai dokumentasi dari pelaksanaan kerja praktek.
Dokumentasi ini dibuat agar memudahkan orang lain yang ingin
mengembangkan sistem ini lebih lanjut.
1.6.
1.7.
WAKTU DAN TEMPAT PELAKSANAAN
Kerja Praktek dilaksanakan selama 1 (satu) bulan yakni
a. Waktu : 4 Agustus - 29 Agustus 2014
b. Tempat : PT.Semen Indonesia (PERSERO),Tbk .
1.8.
PELAKSANA KEGIATAN
Pelaksana kegiatan kerja praktek ini yaitu :
1. Farah Devi Isnanda
(2210121033)
2. M.Herwindra Berlian
(2210121035)
3. Suryo Aji Waskitho
(2210121058)
1.9.
BAB II.
TINJAUAN PUSTAKA
PROFIL PT. SEMEN INDONESIA (PERSERO)
2.3.1.
2.5. Lokasi
- Kantor PT Semen Indonesia (Persero) Tbk. Jalan Veteran, Gresik,
61122. Jawa Timur Indonesia
- Semen Gresik pabrik Tuban berada di Desa Sumberarum, Kec Kerek.
Direktur Utama
Direktur Pemasaran
Direktur Produksi
DirekturDirektur
SDM pengembangan usaha dan strategi
DirekturBisnis
Litbang &operasional
Direktur Keuangan
Tim Peningkatan
Produktifitas
grup
Tim Strategi & Kebijakan Pemasaran
Grup
Tim
Pengembangan SDM
Grup
Departemen
Kebijakan Pengadaan
strategismanagemen
grup
Departemen
Pengelolaan
Capex grup
Departemen
Keuangan Grup
Departemen ProduksiDepartemen
Bahan Baku Hukum dan mangemen
Departemen Pengembanan Pemasaran
Resiko
Tim Proyek Packing Departemen
plany Grup Pengelolaan tekominfo grup/SG
Departemen
Pengembangan Perusahaan
1
Departemen PenjualanDepartemen Produksi Terak
Departemen
Sumber Daya Manusia
Tim Proyek
plant
grup
Tim Pengembangan Energi
Grup Pabrik Baru& Power
Tim
Pengembangan
Tekominfo grup
Sarana Umum
Departemen
Litbang & jaminan
Mutu
Tim Perluasan Bahan baku
Grup
Departemen
Akuntansi & Keuangan
Departemen Distribusi & Transportasi
Departemen Produksi TerakDepartemen
II
Departemen Teknik
5R
10
3.
4.
5.
6.
Semen Portland Tipe III. Semua jenis ini merupakan semen yang
dikembangkan untuk memenuhi kebutuhan bangunan yang
memerlukan kekuatan tekan awal yang tinggi setelah proses
pengecoran dilakukan dan memerlukan penyelesaian secepat
mungkin. Misalnya digunakan untuk pembuatan jalan raya,
bangunan tingkat tinggi dan bandara udara.
Semen Portland Tipe V. Semen jenis ini dipakai untuk konstruksi
bangunan-bangunan pada tanah/air yang mengandung sulfat tinggi
dan sangat cocok untuk instalasi pengolahan limbang pabrik,
konstruksi dalam air, jembatan, terowongan, pelabuhan dan
pembangkit tenaga nuklir.
Special Blended Cement (SBC). Semen khusus yang diciptakan
untuk pembangunan mega proyek jembatan Surabaya-Madura
(Suramadu) dan cocok digunakan untuk bangunan di lingkungan air
laut. Dikemas dalam bentuk curah.
Portland Pozzolan Cement (PPC). Semen Hidrolis yang dibuat
dengan menggiling terak, gypsum dan bahan pozzolan. Digunakan
untuk bangunan umum dan bangunan yang memerlukan ketahanan
sulfat dan panas hidrasi sedang. Misalnya, jembatan, jalan raya,
perumahan, dermaga, beton massa, bendungan, bangunan irigasi dan
fondasi pelat penuh. [3]
7.
2.9. Anak Perusahaan
2.9.1. Anak perusahaan penghasil semen
1. PT Semen Gresik
2. PT Semen Padang
3. PT semen Tonasa
4. Thang Long Cement Vietnam
2.9.2. Anak perusahaan bukan penghasil semen
1. PT United Tractors Semen Gresik (UTSG)
2. PT Industri Kemasan Semen Gresik
3. PT Kawasan Industri Gresik
4. PT Swadaya Graha
5. PT Varia Usaha
6. PT Eternit Gresik
7. PT. SGG Energi Prima
11
12
g.
2.11.
QR Code
QR Code merupakan singkatan dari Quick Response adalah
sebuah kode batang dua dimensi yang ditemukan oleh sebuah
perusahaan Jepang bernama Denso Wave pada tahun 1994. QR Code ini
adalah pengembangan dari kode batang sebelumnya. Pada model
barcode lama, data disimpan secara horizontal saja sedangkan pada QR
Code, data disimpan baik secara vertikal maupun horizontal. [5]
12.
11.
14.
15.
16. Gambar 2.2. Contoh QR Code
13
30.
31.
Dari Table 2.2 diatas dapat dilihat bahwa batas
kapasitas data dan dapat membandingkan nilai kapasitas tersebut
dengan data yang akan dikodekan .
32.
14
34.
35. Gambar 2.3. Struktur dan lokasi area QR Code
36.
37.
Berikut adalah penjelasan struktur QR Code.[5]
38. 1. Finder Pattern: tiga buah struktur identik yang terletak disetiap
pojok QR Code kecuali pojok kanan bawah berupa matriks 3x3 dari
modul hitam yang dikelilingi modul putih kemudian modul hitam
lagi untuk mendeteksi posisi QR Code.
39. 2. Alignment Pattern: Pola untuk mengoreksi distorsi dari QR
Code.
40. 3. Timing Pattern: sebuah pola untuk mengindentifikasi koordinat
sentral dari setiap sel pada QR Code dengan pola hitam dan putih
yang disusun secara bergantian.
41. 4. Quiet Zone: Spasi yang diperlukan untuk membaca QR Code.
Quiet zone ini memudahkan simbol terdeteksi dari sebuah gambar
menggunakan sensor CCD.
42. 5. Data Area: Data dari QR Code akan disimpan atau di-encode di
dalam data area. Sel hitam pada QR Code merepresentasikan angka
biner 1 dan sel putih merepresentasikan angka biner 0.
43.
2.11.2. Pengkodean data
44.
Dalam proses pengkodean QR Code dapat melalui
tahapan mode indicator sampai dengan mengkodekan biner kedalam
15
46.
47.
48.
1.
2.
3.
16
52.
53. Perhitungan :
54.
55.
56. Hasilnya :
57.
4.
Terminator
koreksi
error
yaitu
dengan
menambahkan 0000 diakhir pada hasil pengkodean diatas
5.
Mengkodekan biner kedalam data yaitu data yang
telah dikoreksi error disatukan lalu dikelompokkan menjadi per-8
bit , apabila kurang hanya menambahkan 0 dibelakang sampai
berjumlah 8 bit . Karena jumlah karakter pada jumlah = 8
sedangkan pada Tabel 5. jumlah karakter encoder = 9 maka
penambahan data hanya 11101100 lalu dikonversi menjadi decimal
.
58. Tabel 2.5. Kapasitas Data
59.
60.
61.
17
62.
2.11.3. Menghitung Koreksi Error
63.
Pada tahap ini menggunakan rumus Reed Solomon
(RS) dengan memasukkan hasil pengkodean kedalam Tabel 6.
64.
65. Tabel 2.6. Reed Solomon
66.
2.11.4. Pola Mask
67.
Pola mask berfungsi untuk menghilangkan bagian
yang bukan merupakan modul data yang diinginkan , terdapat delapan
jenis indicator pola mask dalam QR Code yang dapat dilihat pada Tabel
8.
68. Tabel 2.7. Indikator Pola Mask
69.
18
70.
71.
72.
QR Code pada contoh diatas ABCDE123 dan menggunakan
pola mask 011 hasilnya dapat dilihat Gambar
73.
74. Gambar 2. 4. Hasil QR Code
2.11.5. Library Zxing
75.
ZXing adalah sebuah open-source, dan library Java yang dapat
memproses berbagai format gambar barcode 1D/2D. Fokus dari library
ini adalah untuk menggunakan kamera dari telepon selular untuk
melakukan scan dan decode barcode, tanpa harus berkomukasi dengan
server. Biarpun begitu, ZXing juga dapat digunakan untuk meng-encode
dan decode barcode untuk dekstop dan server juga.[6]
76.
2.12.
Global Positioning System (GPS)
77. Global Positioning System (GPS) merupakan sistem koordinat
global yang dapat menentukan koordinat posisi benda dimana saja di
bumi baik koordinat lintang, bujur, maupun ketinggiannya. Teknologi
ini sudah menjadi standar untuk digunakan pada dunia pelayaran dan
penerbangan di dunia. Kita pun dapat memanfaatkannya untuk
kebutuhan kita sendiri. [7]
78. Sistem GPS dapat memberikan data koordinat
79. global karena didukung oleh informasi dari 24 satelit yang ada pada
ketinggian orbit sekitar 11.000 mil di atas bumi. Satelit-satelit
tersebut terbagi atas 6 bidang orbit yang berbeda dengan masingmasing bidang orbit diisi oleh 4 satelit. Dengan konfigurasi seperti
19
20
102.
Gambar 2.5. Contoh
Embedded Script
103.
104.
21
113.
114.<?
115. Echo <HTML>;
116.
Echo <HEAD>;
117. Echo <TITLE>Pemrograman PHP</TITLE>;
118. Echo </HEAD>;
119. Echo <BODY>;
120. Echo <CENTER>;
echo Ini hanya program contoh yang Non
121. embedded script;
122. echo </CENTER>;
123. echo</BODY>;
124. echo </HTML>
125.
Gambar 2.6. Contoh Non-Embedded Script
126.
127.
128.
Dari kedua tipe diatas dapat disimpulkan bahwa
meskipun script yang dibuat berbeda tetapi terdapat kesamaan hasil.
129.
2.13.3. Variabel dalam PHP
130.
Variabel digunakan untuk menyimpan data sementara,
dan nilainya bisa berubah-ubah setiap kali program dijalankan. Ada
beberapa aturan dalam penulisan nama variabel di PHP, yaitu :
1. Variabel selalu diawali tanda dolar $, lalu diikuti nama variabel yang
diinginkan.
2. Penamaan variabel bersifat case sensitive (membedakan huruf besar
dan kecil).
3. Hanya ada tiga jenis karakter yang dapat digunakan untuk nama
variabel, yaitu huruf, angka, dan garis bawah dan tidak
diperbolehkan terdapat spasi.
4. Karakter pertama setelah tanda dolar $ harus berupa huruf atau garis
bawah, sedangkan angka tidak diperbolehkan.
131. Contoh : $username ==user
132.username merupakan nama variabel, dan string user nantinya
akan disimpan dalam variabel tersebut.
22
23
151. <?
152.
Class object
153. {
154. Function counter()
155. {Return 5;
156. }
pesan()
157. Function
{
158. Echopesan;
159. }}
160. $test=new object;
161. $test=>pesan();
?>
162.
163.
Gambar 2.7. Contoh tipe Data Object
164.
2.13.5. Struktur Kendali
165.
Struktur kendali sangat penting dalam tiap bahasa
pemrograman, karena dengan kendali alur kita dapat mengontrol
jalannya eksekusi program. Struktur kendali dapat dibedakan dalam dua
kelompok yaitu percabangan dan perulangan. Perintah kendali
dalam PHP untuk percabangan adalah IF dan SWITCH sedangkan
perintah kendali untuk perulangan adalah FOR dan WHILE
166.
2.14.
JSON (JavaScript Object Notation)
167. JSON (JavaScript Object Notation) adalah format pertukaran
data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah
diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat
berdasarkan bagian dari Bahasa Pemprograman JavaScript, Standar
ECMA-262 Edisi ke-3 - Desember 1999. JSON merupakan format teks
yang tidak bergantung pada bahasa pemprograman apapun karena
menggunakan gaya bahasa yang umum digunakan oleh programmer
keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll.
Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa
pertukaran-data. [9]
168.
24
25
184.
([nama_kolom1], [nama_kolom2], . . .)
185.
VALUES
186. ([nilai1],
[nilai2], . . .);
188.Keterangan :
189.nama_
user
192.nama_t
abel
195.nama_
kolom
198.Nilai
199.200.Nilai
yang
akan
diisikan
pada
:
[nama_kolom], mis : [nilai1] akan diisikan
26
UPDATE
202.
Update digunakan untuk mengubah data pada sebuah
tabel dalam user (schema) tertentu berdasarkan kondisi
tertentu. Syntax Update dapat dituliskan sebagai berikut :
203.
UPDATE [nama_user].[nama_table]SET
204.
[nama_kolom1] = [nilai1],
205.
[nama_kolom2] = [nilai2],
206.
[nama_kolom3] = [nilai3],
207.
. . .
208.
WHERE
209.
[kondisi_update];
211.Keterangan :
212.nama_us
er
215.nama_tab
el
218.nama_ko
lom
27
221.Nilai
222.223.Nilai yang
:
[nama_kolom]
224.kondisi_
update
2.15.2.3.
akan
diisikan
pada
DELETE
[kondisi_delete];
231.Keterangan :
232.nama_user
235.nama_tabe
l
238.kondisi_de
lete
241.NB :
28
246.
".$nama."
umur
anda
29
260.
?>
261. Gambar 2.14. Prosespost.php
<?php
$nama=$_GET['nama'];
$umur=$_GET['umur'];
echo "selamat datang ".$_GET['nama']." umur
adalah ".$umur;
?>
275. Gambar 2.16. Prosesget.php
2.17.
Database Server
276.
Database Server adalah sebuah perangkat lunak
computer yang digunakan untuk menyediakan jenis layanan database
untuk system lain, yang dilakukan dengan model client-server. Database
server dapat digunakan untuk beberapa kegiatan, seperti analisis data,
penyimpanan data, pengarsipan dan lain-lain.
277.
Web server merupakan software yang memberikan
layanan data yang berfungsi menerima HTTP atau HTTPS dari klien
yang dikenal dengan browser web dan mengirimkan kembali hasilnya
dalam bentuk halaman-halaman web yang umumnya berbentuk
dokumen HTML .
30
278.
2.17.1. Cara Kerja Web Server
279.Adapun cara kerja web server sebagai berikut :
1. Web server beroperasi dalam mendistribusikan web page ke user,
tentu saja sesuai dengan permintaan user
2. Hubungan antara Web Server dan Browser Internet merupakan
gabungan atau jaringan computer yang ada di seluruh dunia.
Setelah terhubung secara fisik Protocol TCP/IP (network
protocol) yang memungkinkan semua computer dapat
berkomunikasi satu sama lain. Pada saat browser meminta data
web page ke server maka instruksi permintaan data oleh browser
tersebut dikemas didalam TCP yang merupakan protocol
transport dan dikirim ke alamat yang dalam hal ini merupakan
protocol Hyper Text Transfer Protocol (HTTP)
280.
2.17.2. Kategori Aplikasi Database
1.
Aplikasi Database berbasis Stand Alone.
281.
Aplikasi yang hanya berjalan pada satu komputer dan
hanya mampu diakses oleh satu orang dalam satu waktu.
2.
Aplikasi Database Berbasis Multi User
282.
Aplikasi / program yang dapat digunakan oleh banyak
pengguna dalam satu waktu dan dalam tempat yang berbeda.
3.
Aplikasi Database Berbasis Client/Server Aplikasi
yang terdiri dari aplikasi database sebagai server data dan
komputer sebagai client/ pengguna.
2.18.
Bootstrap
2.18.1. Definisi
283.
Bootstrap adalah sebuah alat bantu untuk membuat
sebuah tampilan halaman website yang dapat mempercepat pekerjaan
seorang pengembang website ataupun pendesain halaman website.
Bootstrap pertama kali dirilis pada Agustus 2012 dan berlisensi open
source.
284.
Bootstrap dibangun dengan teknologi HTML dan CSS
yang dapat membuat layout halaman website, tabel, tombol, form,
navigasi, dan komponen lainnya dalam sebuah website hanya dengan
31
286.
287.
288.
2.18.2. Kelebihan dan kekurangan Bootstrap
2.18.2.1.Kelebihan
Template responsive : template yang bisa menyesuaikan lebar
tampilannya secara otomatis sesuai gadget yang dipakainya.
Kerangka dibangun menggunakan Less yaitu teknologi CSS yang
sederhana dan mudah untuk digunakan .
12 column : Bootstrap membagi lebar layar menjadi 12 kolom .
Sehingga Bootstrap menyesuaikan lebar layar dari media peramban
yang digunakan .
2.18.2.2.Kekurangan
289.
Tampilan dari CSS3 belum mampu menghasilkan
tampilan yang seragam di berbagai peramban di halaman web .
2.18.3. Fitur-fitur pada Bootstrap
css/bootstrap.css berisi style dasar (reset, layout, typography,
button) bawaan bootstrap.
css/bootstrap-responsive.css berisi setting responsive desain.
Kita bisa memakainya bersama bootstrap.css untuk membuat
style bootstrap menjadi responsive.
css/bootstrap-min.css dan
32
css/bootstrap-responsive-min.css versi
compressed
dari
bootstrap.css dan bootstrap-responsive.css
img/glyphicons-halflings.png dan
img/glyphicons-halflings-white.png, adalah icon yang
digunakan pada bootstrap dengan teknik spriting
js/bootstrap.js dan js/bootstrap-min.js adalah javascript
untuk mengaktifkan berbagai fitur keren bawaan bootstrap.
290.
2.19.
Use case diagram
2.19.1. Pengertian
Use case class digunakan untuk memodelkan dan
menyatakan unit fungsi/layanan yang disediakan oleh
system (subsistem/class) ke pemakai.
Use case dapat dilingkupi dengan batasan system
yang diberi label nama system
Use case adalah sesuatu yang menyediakan hasil yang
dapat diukur ke pemakai / system eksternal . [12]
Diagram use case merupakan pemodelan untuk
menggambarkan
kelakuan
(behavior)
sistem
yang akan dibuat.
Diagram use case mendeskripsikan sebuah interaksi
antara satu atau lebih aktor dengan sistem yang akan
dibuat.
291.
33
2.19.2.
Komponen Pembentuk / Bagian Use
Case diagram
292.
293.
294.
Penjelasan komponen pada Gambar 2.18. diatas yaitu :
1. System :
295.
Menyatakan batasan sistem dalam relasi dengan actoractor yang menggunakannya (di luar sistem) dan fitur-fitur yang harus
disediakan (dalam sistem). Digambarkan dengan segi empat yang
membatasi semua use case dalam sistem terhadap pihak mana sistem
akan berinteraksi. Sistem disertai label yang menyebutkan nama dari
sistem, tapi umumnya tidak digambarkan karena tidak terlalu memberi
arti tambahan pada diagram.
2. Actor :
296.
Aktor adalah segala hal diluar sistem yang akan
menggunakan sistem tersebut untuk melakukan sesuatu. Bisa
merupakan manusia, sistem, atau device yang memiliki peranan dalam
keberhasilan operasi dari sistem. Cara mudah untuk menemukan aktor
adalah dengan bertanya hal-hal berikut: SIAPA yang akan
menggunakan sistem? APAKAH sistem tersebut akan memberikan
NILAI bagi aktor?
3. Use case :
297. Use case adalah Gambaran fungsionalitas dari suatu system,
sehingga customer atau pengguna system paham dan mengerti
mengenai kegunaan system yang akan dibangun .
34
4.
Dependency :
298.Dependensi <<include>>
299.Dependensi <<extend>>
o
5. Association :
300. Mengidentifikasikan interaksi antara setiap actor tertentu
dengan setiap use case tertentu. Digambarkan sebagai garis antara actor
terhadap use case yang bersangkutan. Asosiasi bisa berarah (garis
dengan anak panah) jika komunikasi satu arah, namun umumnya terjadi
kedua arah (tanpa anak panah) karena selalu diperlukan demikian.
6. Generalization
301.
Mendefinisikan relasi antara dua actor atau dua use
case yang mana salah satunya meng-inherit dan menambahkan atau
35
36
Proses
Output
37
End
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
38
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.BAB III.
ANALISA DAN PEMBAHASAN
346.
3.1. Cara Kerja Sistem
3.1.1. Flowchart sistem pada Android
347.
348. Dengan mengacu pada Gambar 3.1 yang merupakan
Flowchart cara kerja sistem pada Android. Kerja sistem pada android
dimulai dari (1)User login dengan username dan password yang telah
didaftarkan oleh admin. Setelah login berhasil, (2) akan tampil menu
utama yang terdapat 3 pilihan yaitu scan QR Code, report dan Logout.
349. (3)Jika user memilih Scan QR Code tampil kamera untuk
mengarahkan ke QR Code dan jika QR Code ditemukan maka akan
tampil hasil scan berupa data : 10 digit SPJ, koordinat lokasi (longitude
dan latitude), tanggal dan waktu serta terdapat tombol OK.
350. (5) Akan muncul Data tersebut sudah di scan atau Data
yang diterima merupakan data baru. Data yang sudah di scan tidak
39
dapat di scan lagi. Jika data yang di scan merupakan data baru maka
muncul tombol untuk scan lagi atau cek . (6) Jika memilih tombol Cek,
maka tampil notifikasi apakah data yang di scan tersebut ada di dalam
database kemudian muncul tombol Ok, tampilkan pada Map untuk
menampilkan lokasi toko dan driver .
351.
352.
353.
354.
40
355.
356.
41
3.1.2.
357.
42
359.
360. Gambar 3.3. Bagan flowchart pada Web Admin
43
361.
363............................................................................
364............................................................................
365............................................................................
366............................................................................
367............................................................................
368............................................................................
44
369............................................................................
370............................................................................
45
371.
372. Gambar 3.5. Bagan Flowchart pada Web Admin Sidebar
46
373.
374. Gambar 3. 6. Bagan flowchart pada Web - AdminStatus
47
375............................................................................
376.
378.
48
379.
380.
381. Gambar 3.8. Bagan Flowchart pada web Driving Location
49
382.
383. Gambar 3.9. Bagan Flowchart pada Web Map Quest
384.
385. Gambar 3. 10. Use case Sistem Verifikasi data SPJ
50
3.2.
3.2.1.
1.
1.
2.
3.3.
3.3.1.
1.
2.
3.
3.3.2.
Perancangan Hardware
Spesifikasi Hardware (Komputer)
Prosessor Pentium 4
RAM 512MB
Harddisk 20GB
Perancangan Software
Spesifikasi Software
Microsoft Windows 7
Eclipse adt-bundle-windows-x86
XAMPP
Instalasi Software pada PC
3.3.2.1. Instalasi ADT
1. Lakukan ekstrak file adt-bundle-windows-x86.rar ke
C:/android (Gambar 17)
2. Masuk folder C:/android/eclipse, jalankan eclipse.exe, tunggu
beberapa saat akan muncul seperti Gambar 18
386.
388.
389.
51
392.
393. Gambar 3.13.Membuat Project baru
394.
52
395.
396. Gambar 3.14. Tampilan aplikasi baru
397.
3.4. Pengujian Software
3.4.1. Menu Login User
398.Pada tampilan disamping menggunakan
textbox , textfield dan button untuk form
login .
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
Gambar 3.15. Menu Login User
411.
53
3.4.2.
Menu Utama
430.
NO
433.
1.
431.JENIS
KAMERA
434.3 MP
432.KECEPA
TAN
435.4.30 sekon
54
436.
2.
439.
3.
442.
443.
437.5 MP
438.3.20 sekon
440.8 MP
441.1.75 sekon
3.4.4.
444.
451.
452.
453.
3.4.5. Tampilan Verifikasi data
3.4.5.1. Konfirmasi scan 1 kali
454.Tampilan data ketika user yang sama hanya scan satu kali kode QR
digit SPJ . Tampilan ini juga tersedia untuk cek dan scan lagi .
Tetapi tidak bisa jika scan kode yang sama dalam satu akun user .
Gambar 3.18. Hasil Scan QR
55
455.
456.
457.
458.
459.
460.
3.4.5.2.
469.
470.
3.4.6. Tampilan saat memilih cek
471.Pada tampilan ini data-data sebelumnya atau data scanning
akan di cek dengan data yang ada pada database . Tampilan disamping
ketika data hasil scan sama dengan data yang ada pada database.
56
472.
Terdapat pula pilihan untuk
menampilkan data koordinat longitude dan
latitude pada map
473.
474.
475.
476.
477.
478.
479.
480.
Gambar 3.21. Tampilan Cek
481.
3.4.7. Tampilan data koordinat lokasi pada
Map
482.
Tampilan pada map disamping
berdasarkan lokasi koordinat driver (warna biru) dan Toko (warna
merah) saat melakukan scan terhadap kode QR digit SPJ .
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
(a)tampilan jarak jauh (b) tampilan jarak dekat
495.
Gambar 3.22. Koordinat lokasi driver (biru) dan Toko (merah)
3.4.8.
Me
nu login Admin
496.Tampilan disamping admin login dengan mengisi nama/email
dan password sesuai database .
57
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
58
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
Gambar 3.25. Menu Lihat User
535.
3.4.11. Menu Registrasi user baru
536.
Perbedaan
akun
admin yaitu dapat
menambahkan
data
user
dengan
mendaftarkan
identitas full name,
email , password dan
pilihan sebagai Toko
atau
Driver
lalu
verifikasi akun dengan
kklik button Verifikasi
Akun . Maka data user
berhasil ditambahkan
kedalam database .
537.
538.
539.
540.
541.
542.
543.
544.
545.
Gambar 3.26. Menu Registrasi User baru
546.
59
547.
548. Gambar 3.27.Generate QR Code
549.
550.
Pada saat ingin mencetak kode SPJ berupa QR Code
isikan terlebih dahulu kode SPJ pada textfield, memilih kualitas gambar
mulai dari kualitas paling rendah (smallest/L) ke kualitas yang paling
tinggi (Best/H) dan memilih ukuran gambar dari yang paling kecil
(ukuran 1) sampai yang paling besar (ukuran 10) . Setelah semua selesai
klik button Generate maka kode SPJ telah sukses dibuat menjadi kode
QR / QR Code. Lalu simpan hasil generate QR Code tersebut untuk
dicetak pada lembar SPJ .
551.
3.4.13. Menu Storing database
552.
Fasilitas selanjutnya khusus untuk admin dapat
mengelola database baik menambahkan, menampilkan/membaca,
mengedit maupun menghapus data .
60
553.
554. Gambar 3.28. Menu Storing database
556.
557. Gambar 3.29. Incorrect Login
61
558.
559. Gambar 3.30. Halaman Administrator
560.
Pada halaman Administrator ini dilengkapi dengan
session yaitu halaman dapat langsung muncul ketika membuka halaman
storing database dalam kondisi halaman sebelumnya belum di logout .
561.
Tampilan halaman Storing Database dari hasil session
pada admin.php dan storing.php .
562.
563. Gambar 3.31. Tampilan session halaman Administrator
564.
62
565.
566. Gambar 3.32. Tampilan Menu Backup
567.
568.
Pada tampilan diatas admin dapat mem-backup hasil
generate QR Code dengan menambahkan data identitas toko (nama dan
alamat) , no SPJ, nama driver , kode QR dan status verifikasi . Jika telah
diisi tanpa ada yang dikosongi lalu klik button Submit , maka data akan
ditambahkan pada tabel seperti tampilan dibawah ini :
569.
570. Gambar 3.33. Hasil Backup data
4.4.13.2.
Create New Admin
571.
Fasilitas ini hanya dapat diakses oleh admin yang
telah terdaftar . Untuk mendaftarkan admin baru dengan memilih link
admin yang terdapat pada Menu disamping kanan .
63
572.
573. Gambar 3.34. Create New Admin
574.
Pada tampilan dashboard admin diatas terdapat kolom
daftar admin dan form untuk mendaftarkan admin baru . Untuk
mendaftarkannya isi textfield nama admin, username , password dan
email . Username dan password yang akan digunakan untuk login ke
menu Storing database . Sehingga tidak ada field yang kosong lalu klik
Submit .
575.
64
576.
577. Gambar 3.35. Hasil Create New Admin
578.
582.
583. Gambar 3.36.Menu Location
65
586.
587. Gambar 3.37. Create Status awal
588.
589. Gambar 3.38. Add new status
590.
66
591.
592.
593. Gambar 3.39. Hasil create status
67
594.
4.4.13.5.
Create sidebar
596.
Pada halaman sidebar ini merupakan halaman yang digunakan
untuk menambahkan , edit nama side bar dan menghapus sidebar yang
berada pada Menu .
68
597.
598. Gambar 3. 41. List Sidebar
599.
600. Gambar 3.42. Hasil create sidebar
69
602.
603. Gambar 3. 43. Menu report
605.
606. Gambar 3.44. Storing Location
70
607.
608. Gambar 3.45. Save location to server
609.
User dapat menyimpan koordinat lokasi pada
database sebagai laporan ke admin dengan klik tombol save on the
server to store static location dan akan muncul konfirmasi bahwa data
koordinat tersebut telah tersimpan seperti pada Gambar dibawah
ini .
610.
611. Gambar 3.46. Success to insert
71
Storing Location
613.
614. Gambar 3.47. Driving Direction
615.
Pada tampilan Driving direction ini dapat dilihat
untuk tanda lokasi berwarna Hijau symbol A sebagai lokasi asal dan
symbol B tanda berwarna merah sebagai lokasi tujuan . Pada saat
menandai lokasi maka aka nada notifikasi lokasi tersebut sebagai lokasi
asal (Origin) atau sebagai lokasi tujuan (destination) .
Set as Origin/destination
616.
617. Gambar 3.48. Set Origin / Destination
72
Origin Location
618.
619. Gambar 3 49. Origin Location
620.
621. Gambar 3.50. Destination Location
622.
Dan untuk melihat rute perjalanan yang ditempuh
dengan mengemudi atau driving yaitu dengan klik tombol Get Direction
. Sehingga rute akan tampil untuk menunjukkan jalan menuju lokasi
tujuan beserta dengan arah, perkiraan waktu dan jarak yang akan
ditempuh .
73
623.
624.
625. Gambar 3.51. Hasil Set direction location
627.
628. Gambar 3.52. Map Quest Direction
629.
74
630.BAB IV.
PENUTUP
5.1. Kesimpulan
631.
Dari hasil pengamatan selama tahap perancangan,
implementasi dan uji coba sistem yang dibuat dapat diambil
kesimpulan sebagai berikut :
1. Sistem Verifikasi SPJ (Surat Perintah Jalan) merupakan sistem
aplikasi yang dapat bekerja pada perangkat selular android versi 4.2
(Jely Bean) ke atas.
2. Sistem scanning pada QR Code jauh lebih efisien menggunakan
kamera dengan ukuran pixel yang lebih tinggi, minimal 3MP (Mega
Pixel)
3. Sistem Verifikasi SPJ membutuhkan koneksi internet untuk memuat
data peta dari server google maps serta mengambil database dari
Server menggunakan web service.
4. Penggunaan provider selular dan lokasi pengguna sangat
berpengaruh terhadap pengambilan data peta pada server google
maps.
5. Aplikasi Web Desktop dapat men-generate kode digit angka menjadi
QR Code, serta mempermudah monitoring dan memanajemen
database toko dan driver.
632.
5.2. Saran-Saran
633.
Untuk kedepannya program kami dapat dikembangkan lagi
sesuai kebutuhan mendatang. Adapun saran-saran yang dapat kami
sampaikan untuk menunjang ke tahap pengembangan selanjutnya
yaitu :
- Koordinat marker mengikuti posisi driver (Tracing)saat
melakukan pengiriman barang
- Memberikan informasi tentang kondisi kepadatan lalu lintas
saat pengiriman barang yang ditampilkan pada smartphone.
- Peningkatan pada fitur keamanan/security untuk menghindari
tindakan diluar SOP yang diilakukan oleh driver
75
634.DAFTAR PUSTAKA
635.
636.[1] http://www.semenindonesia.com (diakses tanggal 18 Agustus
2014)
637.
[2]LintasMe - PT Semen Indonesia Luncurkan Logo Baru |
lensaindonesia.com (diakses tanggal 18 Agustus 2014)
638.[3] http://id.wikipedia.org/wiki/Semen_Indonesia
639.
(diakses tanggal 19 Agustus 2014)
640.[4]http://www.sosmiadi.com/2012/10/pengertian-dan-definisisistem-operasi.html
641.
(diakses tanggal 19 Agustus 2014)
642.[5]Kieseberg, P., Leithner, M., Mulazzani, M., Munroe, L.,
643.Schrittwieser, S., Sinha, M., Weipll, E. 2010. QR Code Security.
TwUC, Paris.
644.[5] Soon, T. J. 2011. QR Code. EPCglobal Singapore Council.
645.
[6] ZXing. 2011. Zebra Crossing (ZXing).
646.(http://code.google.com/p/zxing/.) (diakses tanggal 5 Agustus
2014)
647.[7] Google. (2007, april). Retrieved november 2010, from Android
Developer: http://developer.android.com
648.[7]http://www.nicois.me/2013/01/cara-kerja-gps-di-perangkatandroid.html (diakses tanggal 19 Agustus 2014)
649.[8] Kadir, Abdul. 2003.Dasar Pemrograman Web Dinamis
Menggunakan PHP.Andi Offset
650.[9] http://www.json.org/json-id.html (diakses tanggal 19 Agustus
2014)
651.[10]http://naraminato.wordpress.com/online-training-phporacle/pengertian-oracle/ (diakses tanggal 19 Agustus 2014)
652.
653.
654.
655.
656.
657.
658.
659.
76
660.
661.
662.LAMPIRAN
663.
664.Lampiran 1 : Agenda Kegiatan Kerja Praktek di PT.Semen
Indonesia (PERSERO) Tbk Tim Pengembangan ICT
665.
668.P
a
666.Wak
667.Kegiatan
r
tu
a
f
669.4
- Pengarahan Kerja Praktek di PT. Semen 670.
Agu
Indonesia dan menemui pembimbing
stus
perusahaan di bagian Tim Pengembangan ICT
2014
(Pak Ilmanza , Pak icuk dan Pak Zainul )
- Pengaturan Koneksi WiFi, oleh Pak Irul teknisi
671.5
672.Pemberian Tugas / Project Kerja Praktek
673.
Agu
stus
2014
674.6
- Pengujian program hasil scan dengan QR code 675.
Agu
pada smartphone
stus - Pembuatan tampilan interface dan database
2014
mySql
- Pembuatan tampilan map pada android
676.7
- Pengujian program pada device smartphone 677.
Agu
untuk mendapatkan koordinat longitude dan
stus
latitude Map namun belum stabil.
2014 - Penyimpanan data login berupa username dan
password pada database mysql.
- Pengujian program pada device smartphone
untuk menampilkan map pada android namun
belum sempurna
678.8
- Pengujian program untuk menampilkan data 679.
Agu
waktu tanggal, bulan, tahun , jam, menit dan
77
stus
detik pada hasil scan QR Code.
2014 - Pembuatan form registrasi new user account
dan menyimpan pada database mySql .
- Penyempurnaan tampilan map pada device
smartphone
680.11 - Pengujian program untuk menampilkan
Agu
koordinat data longitude dan latitude pada
stus
map
2014 - Pengujian program menampilkan data-data user
yang telah dibuat oleh admin pada android
dari database .
- Pembuatan database pada iSql
682.12 - Pembuatan marker letak koordinat keberadaan
Agu
smartphone pada map
stus - Pengujian program untuk menyimpan hasil scan
2014
QR Code , koordinat longitude latitude ,
waktu pada database
- Pembuatan database pada oracle
684.13 - Menyatukan program scan QR Code, map dan
Agu
database mySql pada Android
stus - Pembuatan tampilan report pada database
2014 - Pembuatan data pada Zend Studio
686.14 - Pengujian program untuk menampilkan data
Agu
koordinat dari hasil scan ke map beserta
stus
marker tempat smartphone berada.
2014 - Pembuatan data verifikasi pada web server
- Pembuatan table database Oracle dengan Sql
developer
688.15 - Pengujian program untuk menampilkan
Agu
koordinat dari database ke map pada
stus
smartphone
2014 - Pembuatan data verifikasi pada web server
dengan id hosting
- Pengujian program untuk mengkoneksikan
antara database oracle dengan script PHP
690.18 - Pengujian program untuk menampilkan
681.
683.
685.
687.
689.
691.
78
Agu
koordinat dari database ke map pada
stus
smartphone
2014 - Pembuatan data verifikasi pada web server
dengan id hosting
- Pengujian program untuk mengkoneksikan
antara database oracle dengan script PHP
pada server local atau pada localhost .
692.19 - Memperbaiki troubleshoot yang terjadi pada
Agu
device smartphone dan mempresentasikan
stus
progress project pada pembimbing yaitu Pak
2014
Icuk Hertanto
694.20 - Pembuatan koordinat statis untuk Toko dan
Agu
dinamis untuk driver
stus - Pengujian program untuk men-generate kode 10
2014
digit SPJ dari database menjadi QR Code
- Pembuatan dokumentasi alur program yang
baru
696.21 - Pembuatan cegahan-cegahan ketika driver tidak
Agu
sampai ke Toko dan melakukan scan QR
stus
Code 2kali (tidak sesuai SOP) yaitu pada
2014
tempat Toko tujuan.
- Pembuatan data verifikasi pada web server
dengan id hosting
698.22 - Pengujian program untuk mengambil data
Agu
koordinat hasil scan ke database
stus - Pembuatan data verifikasi pada web server
2014
dengan id hosting
700.25 - Memperbaiki program scan pada Android
Agu - Pembuatan data verifikasi pada web server
stus
dengan id hosting
2014 - Pembuatan data report berupa table pada
android
702.26 - Pembuatan tabel relasi pada PhpMyAdmin
Agu - Memperbarui tampilan web
stus - Pembuatan data report berupa table pada
2014
android
693.
695.
697.
699.
701.
703.
79
730.
731.
732.
733.
734.
735.
736.
737.Listing program Activity_main.xml
738.
739.
<RelativeLayout
740.
xmlns:android="http://schemas.android.com/apk/res/androi
741.
d"
742. xmlns:tools="http://schemas.android.com/tools"
743. android:layout_width="match_parent"
744. android:layout_height="match_parent"
745.
746.
android:paddingBottom="@dimen/activity_vertical_margin"
747.
748.
android:paddingLeft="@dimen/activity_horizontal_margin"
749.
750.
android:paddingRight="@dimen/activity_horizontal_margin"
751. android:paddingTop="@dimen/activity_vertical_margin"
752. tools:context="com.maps.MainActivityMarker" >
753.
754. <fragment
755. android:id="@+id/map"
756. android:layout_width="fill_parent"
757. android:layout_height="fill_parent"
758.
class="com.google.android.gms.maps.SupportMapFragment
759.
" />
760.
761.
<RatingBar
762.
android:id="@+id/ratingBar1"
763. android:layout_width="wrap_content"
764. android:layout_height="wrap_content"
765. android:layout_alignBottom="@+id/map"
android:layout_alignRight="@+id/map" />
</RelativeLayout>
81
766.
767.
768.
769.
770.
771.
772.
773.Listing program all_user.xml
774.
775.
<?xml version="1.0" encoding="utf-8"?>
776.
<LinearLayout
777.
xmlns:android="http://schemas.android.com/apk/res/androi
778.
d"
779. android:layout_width="fill_parent"
780. android:layout_height="fill_parent"
781. android:orientation="vertical">
<!-- Main ListView
782.
Always
give
id value as list(@android:id/list)
783.
-->
784.
<ListView
785. android:id="@android:id/list"
786. android:layout_width="fill_parent"
787. android:layout_height="wrap_content"/>
788.
789.
</LinearLayout>
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
82
802.
803.
804.
805.
806.
807.
808.
809.Listing program dashboard.xml
810.
<?xml version="1.0" encoding="utf-8"?>
811.
<LinearLayout
812.
xmlns:android="http://schemas.android.com/apk/res/androi
813.
d"
814. android:layout_width="match_parent"
815. android:layout_height="match_parent"
816. android:background="#ffffff"
817. android:orientation="vertical" >
818.
819. <TextView
820. android:layout_width="fill_parent"
821. android:layout_height="wrap_content"
822. android:layout_marginTop="20dip"
android:gravity="center"
823.
android:text="Sistem Verifikasi SPJ"
824. android:textColor="#000000"
825. android:textSize="20dip" />
826.
827. <ImageView
828. android:id="@+id/imageView1"
829. android:layout_width="match_parent"
830. android:layout_height="130dp"
831. android:layout_marginBottom="30dp"
832. android:layout_marginTop="10dp"
833.
android:contentDescription="@string/_logo_description"
834.
835. android:scaleType="fitCenter"
836. android:src="@drawable/semen_indonesia1" />
837. <ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
83
838.
839.
840.
841.
842.
843.
844.
845.
android:contentDescription="@string/_logo_description"
846. android:scaleType="fitCenter"
847. android:src="@drawable/group" />
848.
849. <Button
850. android:id="@+id/btnScan"
851. android:layout_width="fill_parent"
852. android:layout_height="wrap_content"
853. android:layout_marginTop="10dip"
android:background="@null"
854. android:text="Scan QR Code"
855. android:textColor="#000000"
856. android:textSize="20dip"
857. android:textStyle="bold" />
858. <Button
859. android:id="@+id/btnReport"
860. android:layout_width="fill_parent"
861. android:layout_height="wrap_content"
862. android:layout_marginTop="10dip"
863. android:background="@null"
864. android:text="Report"
android:textColor="#000000"
865. android:textSize="20dip"
866. android:textStyle="bold" />
867. <Button
868. android:id="@+id/btnLogout"
869. android:layout_width="fill_parent"
870. android:layout_height="wrap_content"
871. android:layout_marginTop="10dip"
872. android:background="@null"
873. android:text="Logout"
android:textColor="#000000"
android:textSize="20dip"
android:textStyle="bold" />
</LinearLayout>
84
874.
875.
876.
877.
878.
879.
880.
881.Listing program edit_user.xml
882.
<?xml version="1.0" encoding="utf-8"?>
883.
<LinearLayout
884.
xmlns:android="http://schemas.android.com/apk/res/androi
885.
d"
886. android:layout_width="match_parent"
887. android:layout_height="match_parent"
888. android:orientation="vertical" >
889.
890. <!-- Name Label -->
891. <TextView
892. android:layout_width="fill_parent"
893. android:layout_height="wrap_content"
android:paddingLeft="10dip"
894.
android:paddingRight="10dip"
895. android:paddingTop="10dip"
896. android:text="Nama"
897. android:textSize="17dip" />
898.
899. <!-- Input Name -->
900.
<EditText android:id="@+id/inputName"
901.
android:layout_width="fill_parent"
902.
android:layout_height="wrap_content"
android:layout_margin="5dip"
903.
android:layout_marginBottom="15dip"
904.
android:singleLine="true"/>
905.
906.
<!-- Label -->
907.
908.
909. <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="10dip"
android:text="Email"
android:textSize="17dip" />
85
910.
911.
912.
913.
914.
915.
916.
<EditText
917.
android:id="@+id/inputPrice"
918.
android:layout_width="fill_parent"
919.
android:layout_height="wrap_content"
920.
android:layout_margin="5dip"
921.
android:layout_marginBottom="15dip"
922.
android:singleLine="true" />
923.
924.
925.
<LinearLayout android:layout_width="fill_parent"
926.
android:layout_height="wrap_content"
927.
android:orientation="horizontal">
928.
<!-- Button Create Product -->
929.
<Button android:id="@+id/btnSave"
930.
android:layout_width="fill_parent"
931.
android:layout_height="wrap_content"
932.
android:text="Save Changes"
933.
android:layout_weight="1"/>
934.
935.
<!-- Button Create Product -->
936.
<Button android:id="@+id/btnDelete"
937.
android:layout_width="fill_parent"
android:layout_height="wrap_content"
938.
android:text="Delete"
939.
android:layout_weight="1"/>
940.
</LinearLayout>
941.
942.
</LinearLayout>
943.
944.
945.
86
946.
947.
948.
949.
950.
951.
952.
953.Listing program list_item.xml
954.
955.
<?xml version="1.0" encoding="utf-8"?>
956.
<LinearLayout
957.
xmlns:android="http://schemas.android.com/apk/res/androi
958.
d"
959. android:layout_width="fill_parent"
960. android:layout_height="wrap_content"
961. android:orientation="vertical" >
962.
963. <!-- Product id (pid) - will be HIDDEN - used to pass to
other activity -->
964.
<TextView
965. android:id="@+id/pid"
966. android:layout_width="fill_parent"
967. android:layout_height="wrap_content"
968. android:visibility="gone" />
969.
970.
971. <!-- Name Label -->
972. <TextView
973. android:id="@+id/name"
974. android:layout_width="fill_parent"
android:layout_height="wrap_content"
975.
android:paddingTop="6dip"
976. android:paddingLeft="6dip"
977. android:textSize="17dip"
978. android:textStyle="bold" />
979.
980.
</LinearLayout>
981.
87
982.
983.
984.
985.
986.
987.
988.
989.Listing program login_admin.xml
990.
<?xml version="1.0" encoding="utf-8"?>
991.
<ScrollView
992.
xmlns:android="http://schemas.android.com/apk/res/android"
993. android:layout_width="fill_parent"
994. android:layout_height="fill_parent"
>
995. android:background="#ffffff"
<LinearLayout
996. android:layout_width="fill_parent"
997. android:layout_height="fill_parent"
998. android:orientation="vertical"
999. android:padding="10dip" >
<!-- View Title Label -->
1000. <TextView
1001.
android:layout_width="fill_parent"
android:layout_height="wrap_content"
1002.
android:layout_marginBottom="10dip"
1003.
android:text="LOGIN ADMINISTRATOR"
1004.
android:textSize="25dip"
1005.
android:textStyle="bold" />
1006.
<!-- Email Label -->
1007. <TextView
android:layout_width="fill_parent"
1008.
android:layout_height="wrap_content"
1009.
android:text="Email" />
1010.
<!-- Email TextField -->
1011. <EditText
android:id="@+id/loginEmailAdmin"
1012.
android:layout_width="fill_parent"
1013.
android:hint="@string/_id_input_hint"
1014.
android:layout_height="wrap_content" />
<!-- Password Label -->
1015.
1016. <TextView
android:layout_width="fill_parent"
1017.
android:layout_height="wrap_content"
android:layout_marginTop="15dip"
android:text="Password" />
88
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
<!-- Password TextField -->
1026. <EditText
android:id="@+id/loginPasswordAdmin"
1027.
android:layout_width="fill_parent"
1028.
android:layout_height="wrap_content"
1029.
android:hint="@string/_pass_input_hint"
1030.
android:password="true" />
1031.
1032. <!-- Error message -->
1033. <TextView android:id="@+id/login_error_Admin"
android:layout_width="fill_parent"
1034.
android:layout_height="wrap_content"
1035.
android:textColor="#e30000"
1036.
android:padding="10dip"
1037.
android:textStyle="bold"/>
1038.
<!-- Login Button -->
1039.
<Button
1040.
android:id="@+id/btnLogin_Admin"
1041.
android:layout_width="fill_parent"
android:layout_height="wrap_content"
1042.
android:layout_marginTop="20dip"
1043.
android:text="Login" />
1044.
1045. <!-- Link to Registration Screen -->
1046.</LinearLayout>
1047.
</ScrollView>
1048.
1049.
1050.
1051.
1052.
1053.
89
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061. Listing program login.xml
1062.
<?xml version="1.0" encoding="utf-8"?>
1063.
<ScrollView
1064.
xmlns:android="http://schemas.android.com/apk/res/android"
1065.android:layout_width="fill_parent"
1066.android:layout_height="fill_parent"
1067.android:background="#ffffff" >
1068.<LinearLayout
1069. android:layout_width="fill_parent"
1070. android:layout_height="fill_parent"
1071. android:orientation="vertical"
>
1072. android:padding="10dip"
<!-- View Title Label -->
1073. <TextView
1074.
android:layout_width="fill_parent"
android:layout_height="wrap_content"
1075.
android:layout_marginBottom="10dip"
1076.
android:text="LOGIN"
1077.
android:textSize="25dip"
1078.
android:textStyle="bold" />
<!-- Email Label -->
1079.
1080. <TextView
android:layout_width="fill_parent"
1081.
android:layout_height="wrap_content"
1082.
android:text="Email" />
<!-- Email TextField -->
1083.
1084. <EditText
android:id="@+id/loginEmail"
1085.
android:layout_width="fill_parent"
1086.
android:hint="@string/_id_input_hint"
1087.
android:layout_height="wrap_content" />
<!-- Password Label -->
1088.
<TextView
1089.
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dip"
android:text="Password" />
90
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
<!-1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
</LinearLayout>
</ScrollView>
91
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133. Listing program main_screen.xml
1134.
<?xml version="1.0" encoding="utf-8"?>
1135.
<LinearLayout
1136.
xmlns:android="http://schemas.android.com/apk/res/androi
1137.
d"
1138.android:layout_width="fill_parent"
1139.android:layout_height="fill_parent"
1140.android:orientation="vertical"
1141.android:gravity="center_horizontal">
1142.
1143.<!-- Sample Dashboard screen with Two buttons -->
1144.<Button android:id="@+id/btnViewUser"
1145. android:layout_width="fill_parent"
1146. android:layout_height="wrap_content"
1147. android:text="Lihat User"
1148. android:layout_marginTop="25dip"/>
1149.
1150.<Button android:id="@+id/btnCreateUser"
1151. android:layout_width="fill_parent"
1152. android:layout_height="wrap_content"
1153. android:text="Tambah User Baru"
1154. android:layout_marginTop="25dip"/>
1155.<Button
1156. android:id="@+id/btnLogoutUser"
1157. android:layout_width="fill_parent"
1158. android:layout_height="wrap_content"
1159. android:layout_marginTop="10dip"
1160. android:text="Logout"
1161. android:textSize="20dip"
android:textStyle="bold" />
</LinearLayout>
92
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169. Listing program main.xml
1170.
<?xml version="1.0" encoding="utf-8"?>
1171.
<LinearLayout
1172.
xmlns:android="http://schemas.android.com/apk/res/
1173.
android"
1174.
1175.android:layout_width="fill_parent"
1176.android:layout_height="fill_parent"
1177.android:orientation="vertical" >
1178.
1179.<TextView
1180. android:layout_width="fill_parent"
1181. android:layout_height="wrap_content"
1182. android:text="@string/hello" />
1183.
1184.
</LinearLayout>
1185.
1186.
1187. Listing program maps_activity.xml
1188.
<RelativeLayout
1189.
xmlns:android="http://schemas.android.com/apk/res/androi
1190.
d"
1191.
xmlns:tools="http://schemas.android.com/tools"
1192.android:layout_width="fill_parent"
1193.android:layout_height="fill_parent"
1194.android:orientation="vertical"
1195.>
1196.
<fragment
1197. android:id="@+id/map"
android:layout_height="match_parent"
android:layout_width="match_parent"
class="com.google.android.gms.maps.SupportMapFragment93
"
/>
</RelativeLayout>
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205. Listing program report.xml
1206.
<?xml version="1.0" encoding="utf-8"?>
1207.
<LinearLayout
1208.
xmlns:android="http://schemas.android.com/apk/res/
1209.
android"
1210.
1211.android:layout_width="fill_parent"
1212.android:layout_height="fill_parent"
1213.android:orientation="vertical" >
1214.
1215.<TextView
1216. android:layout_width="fill_parent"
1217. android:layout_height="wrap_content"
1218. android:text="@string/report" />
1219.
1220.
</LinearLayout>
1221.
1222.
1223. Listing program scan.xml
1224.
<?xml version="1.0" encoding="utf-8"?>
1225.
<LinearLayout
1226.
xmlns:android="http://schemas.android.com/apk/res/
1227.
android"
1228.
1229.android:layout_width="fill_parent"
1230.android:layout_height="fill_parent"
1231.android:orientation="vertical" >
1232.
1233.<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/scan" />
</LinearLayout>
94
1234.
1235.
1236.
1237.
1238.
1239.
1240.
1241. Listing program spjptsi.xml
1242.
<RelativeLayout
1243.
xmlns:android="http://schemas.android.com/apk/res/
1244.
android"
1245.
1246.xmlns:tools="http://schemas.android.com/tools"
1247.android:layout_width="match_parent"
1248.android:layout_height="match_parent"
1249.
1250.
android:paddingBottom="@dimen/activity_vertical_m
1251.
argin"
1252.
1253.
android:paddingLeft="@dimen/activity_horizontal_ma
1254.
rgin"
1255.
1256.
android:paddingRight="@dimen/activity_horizontal_m
1257.
argin"
1258.
1259.
android:paddingTop="@dimen/activity_vertical_margi
1260.
n"
1261.
1262.tools:context="com.spjptsi.SPJPTSIActivity" >
1263.
1264.<TextView
1265. android:layout_width="wrap_content"
1266. android:layout_height="wrap_content"
1267. android:text="@string/hello_world" />
1268.
</RelativeLayout>
1269.
95
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277. Listing program register.xml
1278.
<?xml version="1.0" encoding="utf-8"?>
1279.
<ScrollView
1280.
xmlns:android="http://schemas.android.com/apk/res/
1281.
android"
1282.
1283.android:layout_width="fill_parent"
1284.android:layout_height="fill_parent"
1285.android:background="#ffffff" >
1286.
1287.<LinearLayout
1288. android:layout_width="fill_parent"
1289. android:layout_height="fill_parent"
1290. android:orientation="vertical"
1291. android:padding="10dip" >
1292.
<!-- View Title Label -->
1293. <TextView
1294.
android:layout_width="fill_parent"
1295.
android:layout_height="wrap_content"
1296.
android:layout_marginBottom="10dip"
1297.
android:text="REGISTER"
1298.
android:textSize="25dip"
1299.
android:textStyle="bold" />
1300. <!-- Name Label -->
1301. <TextView
1302.
android:layout_width="fill_parent"
1303.
android:layout_height="wrap_content"
1304.
android:text="Full Name" />
1305.
<!-- Name TextField -->
<EditText
android:id="@+id/registerName"
android:layout_width="fill_parent"
96
android:layout_height="wrap_content"/>
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
<!-1314.
1315.
1316.
1317.
1318.
1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
1329.
1330.
1331.
1332.
1333.
1334.
1335.
1336.
1337.
1338.
1339.
1340.
1341.
<RadioGroup
android:id="@+id/radioUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioToko"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_toko"
android:checked="true"
android:textColor="#000000"
/>
97
1342.
1343.
1344.
1345.
1346.
1347.
1348.
1349.
<RadioButton
1350.
android:id="@+id/radioDriver"
1351.
android:layout_width="wrap_content"
1352.
android:layout_height="wrap_content"
android:text="@string/radio_driver"
1353.
android:textColor="#000000"
1354.
/>
1355.
1356.
1357.</RadioGroup>
1358.
<Button
1359. android:id="@+id/buttonUser"
1360. android:layout_width="wrap_content"
1361. android:layout_height="wrap_content"
1362. android:text="@string/button_label" />
1363.
1364.
1365. <!-- Error message -->
1366. <TextView android:id="@+id/register_error"
1367.
android:layout_width="fill_parent"
1368.
android:layout_height="wrap_content"
1369.
android:textColor="#e30000"
android:padding="1dip"
1370.
android:textStyle="bold"/>
1371.
1372.
1373. <!-- register_berhasil message -->
1374. <TextView android:id="@+id/register_berhasil"
android:layout_width="fill_parent"
1375.
android:layout_height="wrap_content"
1376.
android:textColor="#e30000"
1377.
android:padding="1dip"
android:textStyle="bold"/>
98
1378.
1379.
1380.
1381.
1382.
1383.
1384.
1385.
<!-- Login Button -->
1386. <Button
android:id="@+id/btnRegister"
1387.
android:layout_width="fill_parent"
1388.
android:layout_height="wrap_content"
1389.
android:layout_marginTop="1dip"
1390.
android:text="Register" />
1391.
1392. <!-- Link to Login Screen -->
1393.</LinearLayout>
1394.
</ScrollView>
1395.
1396.
1397. Program Utama Android (Java)
1398. Listing program Report.java
1399.
package com.spjptsi;
1400.
import android.app.Activity;
1401.
import android.os.Bundle;
1402.
1403.
public class Report extends Activity {
1404.
1405.
@Override
public void onCreate(Bundle savedInstanceState) {
1406.
super.onCreate(savedInstanceState);
1407.
setContentView(R.layout.report);
1408.
}
1409.
}
1410.
1411.
Listing
program Scan.java
package
com.spjptsi;
1412.
import android.app.Activity;
1413.
import android.os.Bundle;
99
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421. Listing program RegisterActivity.java
1422.
package com.spjptsi;
1423.
1424.
import org.json.JSONException;
1425.
import org.json.JSONObject;
1426.
import com.spjptsi.library.DatabaseHandler;
1427.
import com.spjptsi.library.UserFunctions;
1428.
import java.util.ArrayList;
1429.
import java.util.List;
1430.
import org.apache.http.NameValuePair;
1431.
import org.apache.http.message.BasicNameValuePair;
1432.
import android.app.Activity;
1433.
import android.app.AlertDialog;
1434.
import android.content.DialogInterface;
import android.content.Intent;
1435.
import android.os.AsyncTask;
1436.
import android.os.Bundle;
1437.
import android.util.Log;
1438.
import android.view.View;
import android.widget.Button;
1439.
import android.widget.EditText;
1440.
import android.widget.RadioButton;
1441.
import android.widget.RadioGroup;
1442.
import android.widget.TextView;
1443.
1444.
public class RegisterActivity extends Activity {
1445.
Button btnRegister;
1446.
Button btnLinkToLogin;
1447.
EditText inputFullName;
EditText inputEmail;
1448.
EditText inputPassword;
1449.
TextView registerErrorMsg;
TextView registerBerhasilMsg;
String tipe = "";
RadioGroup rgroup;
Button button3;
100
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
@Override
1458.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
1459.
setContentView(R.layout.register);
1460.
1461.
// Importing all assets like buttons, text fields
1462.
inputFullName = (EditText) findViewById(R.id.registerName);
inputEmail = (EditText) findViewById(R.id.registerEmail);
1463.
inputPassword = (EditText)
1464.
findViewById(R.id.registerPassword);
1465.
btnRegister = (Button) findViewById(R.id.btnRegister);
1466.
registerBerhasilMsg = (TextView)
findViewById(R.id.register_berhasil);
1467.
registerErrorMsg = (TextView)
1468.
findViewById(R.id.register_error);
1469.
1470.
Button button3 = (Button) findViewById(R.id.buttonUser);
1471.
1472.
final RadioGroup rgroup =
1473.
(RadioGroup)findViewById(R.id.radioUser);
1474.
final RadioButton Toko =
1475.
(RadioButton)findViewById(R.id.radioToko);
final RadioButton Driver =
1476.
(RadioButton)findViewById(R.id.radioDriver);
1477.
1478.
button3.setOnClickListener(new View.OnClickListener() {
1479.
public void onClick(View view) {
1480.
String name = inputFullName.getText().toString();
1481.
String email = inputEmail.getText().toString();
String password = inputPassword.getText().toString();
1482.
if (rgroup.getCheckedRadioButtonId() == Toko.getId())
1483.
{
1484.
tipe = "Toko";
1485.
}
else if(rgroup.getCheckedRadioButtonId() == Driver.getId())
{
tipe = "Driver";
}
101
1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
if (name.contentEquals("")||email.contentEquals("")||
1494.
password.contentEquals(""))
{
1495.
AlertDialog.Builder builder = new
1496.
AlertDialog.Builder(RegisterActivity.this);
1497.
1498.
builder.setMessage(R.string.nullAlert)
.setTitle(R.string.alertTitle);
1499.
1500.
builder.setPositiveButton(R.string.ok, new
1501.
DialogInterface.OnClickListener() {
1502.
public void onClick(DialogInterface dialog, int id) {
1503.
}
1504.
});
1505.
1506.
AlertDialog dialog = builder.show();
1507.
}
else
1508.
{
1509.
new UserFunctions(); //.execute();
1510.
}
1511.
}
});
1512.
// Register Button Click event
1513.
btnRegister.setOnClickListener(new View.OnClickListener()
1514.
{
1515.
public void onClick(View view) {
1516.
String name = inputFullName.getText().toString();
String email = inputEmail.getText().toString();
1517.
String password = inputPassword.getText().toString();
1518.
UserFunctions userFunction = new UserFunctions();
1519.
JSONObject json = userFunction.registerUser(name, email,
1520.
password, tipe);
// check for login response
1521.
try {
if (json.getString(KEY_SUCCESS) != null) {
registerErrorMsg.setText("");
registerBerhasilMsg.setText("");
String res = json.getString(KEY_SUCCESS);
102
1522.
1523.
1524.
1525.
1526.
1527.
1528.
1529.
if(Integer.parseInt(res) == 1){
1530.
// user successfully registred
//Store user details in SQLite Database
1531.
DatabaseHandler db = new
1532.
DatabaseHandler(getApplicationContext());
1533.
JSONObject json_user = json.getJSONObject("user");
1534.
1535.
// Clear all previous data in database
1536.
1537.
userFunction.logoutUser(getApplicationContext());
1538.
db.addUser(json_user.getString(KEY_NAME),
1539.
json_user.getString(KEY_EMAIL), json.getString(KEY_UID),
json_user.getString(KEY_CREATED_AT));
1540.
registerBerhasilMsg.setText("Berhail
Ditambahkan di database");
1541.
}else{ registerErrorMsg.setText("Gagal");}
1542.
}
1543.
} catch (JSONException e) {
e.printStackTrace();
1544.
}
1545.
}
1546.
});
1547.
1548.
1549.
1550.
1551.
1552.
1553.
1554.
1555.
1556.
1557.
103
1558.
1559.
1560.
1561.
1562.
1563.
1564.
1565. Listing program MainScreenActivity.java
1566.
import com.scan.DecoderActivity;
1567.
import com.spjptsi.library.UserFunctions;
1568.
1569.
import android.app.Activity;
import android.content.Intent;
1570.
import android.os.Bundle;
1571.
import android.view.View;
1572.
import android.widget.Button;
1573.
1574.
public class MainScreenActivity extends Activity{
1575.
1576.
UserFunctions userFunctions;
1577.
Button btnViewUser;
1578.
Button btnNewUser;
1579.
Button btnLogutUser;
1580.
1581.
@Override
1582.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
1583.
1584.
1585.
1586.
userFunctions = new UserFunctions();
// Buttons
1587.
if(userFunctions.isUserLoggedIn(getApplicationContext())){
1588.
setContentView(R.layout.main_screen);
1589.
btnViewUser = (Button) findViewById(R.id.btnViewUser);
1590.
btnNewUser = (Button) findViewById(R.id.btnCreateUser);
1591.
btnLogutUser = (Button) findViewById(R.id.btnLogoutUser);
1592.
1593.
btnLogutUser.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
userFunctions.logoutUser(getApplicationContext());
Intent login = new Intent(getApplicationContext(),
LoginActivity.class);
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(login);
finish();
}
});
104
1594.
1595.
1596.
1597.
1598.
1599.
1600.
1601.
// view products click event
1602.
btnViewUser.setOnClickListener(new
View.OnClickListener() {
1603.
public void onClick(View view) {
1604.
// Launching All products Activity
1605.
Intent i = new Intent(getApplicationContext(),
1606.
AllUserActivity.class); startActivity(i);
1607.
}
});
1608.
1609.
// view products click event
1610.
btnNewUser.setOnClickListener(new View.OnClickListener() {
1611.
public void onClick(View view) {
1612.
// Launching create new product activity
1613.
Intent i = new Intent(getApplicationContext(),
RegisterActivity.class);
1614.
startActivity(i);
1615.
}
1616.
});
1617.
1618.
}else{
1619.
// user is not logged in show login screen
Intent login = new Intent(getApplicationContext(),
1620.
LoginActivity.class);
1621.
1622.
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
1623.
startActivity(login);
1624.
// Closing dashboard screen
1625.
finish();
1626.
}
1627.
1628.
}
1629.
}
105
1630.
1631.
1632.
1633.
1634.
1635.
1636.
1637. Listing program LoginActivityAdmin.java
1638.
package com.spjptsi;
1639.
1640.
import java.util.HashMap;
1641.
import org.json.JSONException;
1642.
import org.json.JSONObject;
1643.
import android.app.Activity;
import android.content.Intent;
1644.
import android.os.Bundle;
1645.
import android.util.Log;
1646.
import android.view.View;
1647.
import android.widget.Button;
import android.widget.EditText;
1648.
import android.widget.TextView;
1649.
import com.spjptsi.library.DatabaseHandlerAdmin;
1650.
import com.spjptsi.library.UserFunctionsAdmin;
1651.
public class LoginActivityAdmin extends Activity {
1652.
Button btnLogin;
1653.
EditText inputEmail;
1654.
EditText inputPassword;
1655.
TextView loginErrorMsg;
1656.
// JSON Response node names
1657.
private static String KEY_SUCCESS = "success";
1658.
private static String KEY_ERROR = "error";
1659.
private static String KEY_ERROR_MSG = "error_msg";
1660.
private static String KEY_UID = "uid";
private static String KEY_NAME = "name";
1661.
private static String KEY_EMAIL = "email";
1662.
private static String KEY_CREATED_AT = "created_at";
1663.
public void onCreate(Bundle savedInstanceState) {
1664.
super.onCreate(savedInstanceState);
setContentView(R.layout.login_admin); //
1665.
1666.
1667.
1668.
1669.
1670.
1671.
1672.
1673.
// Login button Click Event
1674.
btnLogin.setOnClickListener(new
View.OnClickListener() {
1675.
public void onClick(View view) {
1676.
String email = inputEmail.getText().toString();
1677.
String password = inputPassword.getText().toString();
1678.
UserFunctionsAdmin userFunction = new UserFunctionsAdmin();
1679.
Log.d("Button", "Login");
JSONObject json = userFunction.loginAdmin(email, password);
1680.
// check for login response
1681.
try {
1682.
if (json.getString(KEY_SUCCESS) != null) {
1683.
loginErrorMsg.setText("");
String res = json.getString(KEY_SUCCESS);
1684.
if(Integer.parseInt(res) == 1){
1685.
DatabaseHandlerAdmin db = new
1686.
DatabaseHandlerAdmin(getApplicationContext());
1687.
1688.
JSONObject json_user = json.getJSONObject("user");
1689.
1690.
userFunction.logoutAdmin(getApplicationContext());
1691.
1692.
db.addUser(json_user.getString(KEY_NAME),
1693.
json_user.getString(KEY_EMAIL), json.getString(KEY_UID),
json_user.getString(KEY_CREATED_AT));
//
1694.
Launch Dashboard Screen
1695.
1696.
Intent dashboard = new Intent(getApplicationContext(),
1697.
MainScreenActivity.class);
1698.
1699.
dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
1700.
1701.
startActivity(dashboard); finish();
}else{
loginErrorMsg.setText("Incorrect username/password");
}
}
} catch (JSONException e) {
e.printStackTrace();}
}
});
107
1702.
1703.
1704.
1705.
1706.
1707.
1708.
1709. Listing program LoginActivity.java
1710.
package com.spjptsi;
1711.
1712.
import java.util.HashMap;
import org.json.JSONException;
1713.
import org.json.JSONObject;
1714.
import android.app.Activity;
1715.
import android.content.Intent;
1716.
import android.os.Bundle;
import android.util.Log;
1717.
import android.view.View;
1718.
import android.widget.Button;
1719.
import android.widget.EditText;
1720.
import android.widget.TextView;
1721.
import com.spjptsi.library.DatabaseHandler;
import com.spjptsi.library.UserFunctions;
1722.
1723.
public class LoginActivity extends Activity {
1724.
Button btnLogin;
1725.
Button btnLinkToAdmin;
Button btnLinkToRegister;
1726.
EditText inputEmail;
1727.
EditText inputPassword;
1728.
TextView loginErrorMsg;
1729.
// JSON Response node names
1730.
private static String KEY_SUCCESS = "success";
1731.
private static String KEY_ERROR = "error";
1732.
private static String KEY_ERROR_MSG = "error_msg";
1733.
private static String KEY_UID = "uid";
1734.
private static String KEY_NAME = "name";
private static String KEY_EMAIL = "email";
1735.
private static String KEY_CREATED_AT = "created_at";
1736.
@Override
1737.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
inputEmail = (EditText) findViewById(R.id.loginEmail);
inputPassword = (EditText) findViewById(R.id.loginPassword);
btnLogin = (Button) findViewById(R.id.btnLogin);
108
1738.
1739.
1740.
1741.
1742.
1743.
1744.
1745.
btnLinkToAdmin = (Button)findViewById(R.id.btnLinkToAdminScreen);
1746.
loginErrorMsg = (TextView) findViewById(R.id.login_error);
1747.
// Login button Click Event
1748.
btnLogin.setOnClickListener(new View.OnClickListener() {
1749.
public void onClick(View view) {
1750.
String email = inputEmail.getText().toString();
1751.
String password = inputPassword.getText().toString();
UserFunctions userFunction = new UserFunctions();
1752.
Log.d("Button", "Login");
1753.
JSONObject json = userFunction.loginUser(email, password);
1754.
// check for login response
1755.
try {
if (json.getString(KEY_SUCCESS) != null) {
1756.
loginErrorMsg.setText("");
1757.
String res = json.getString(KEY_SUCCESS);
1758.
if(Integer.parseInt(res) == 1){
1759.
// user successfully logged in
Store user details in SQLite Database
1760.
DatabaseHandler db = new
1761.
DatabaseHandler(getApplicationContext());
1762.
JSONObject json_user = json.getJSONObject("user");
1763.
userFunction.logoutUser(getApplicationContext());
1764.
db.addUser(json_user.getString(KEY_NAME),
json_user.getString(KEY_EMAIL), json.getString(KEY_UID),
1765.
json_user.getString(KEY_CREATED_AT));
1766.
// Launch Dashboard Screen
1767.
Intent dashboard = new Intent(getApplicationContext(),
1768.
DashboardActivity.class);
dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
1769.
startActivity(dashboard);
1770.
finish();
1771.
}else{
1772.
// Error in login
loginErrorMsg.setText("Incorrect username/password");
1773.
}
}
} catch (JSONException e) {
e.printStackTrace();
}
});
109
1774.
1775.
1776.
1777.
1778.
1779.
1780.
1781.
// Link to admin login screen
1782.
1783.
btnLinkToAdmin.setOnClickListener(new
1784.
View.OnClickListener() {
public void onClick(View view) {
1785.
Intent i = new
1786.
Intent(getApplicationContext(),LoginActivityAdmin.class);
1787.
startActivity(i);
1788.
finish();}
});
1789.
}
1790.
}
1791.
1792.
1793.
1794.
1795.
1796.
1797.
1798.
1799.
1800.
1801.
1802.
1803.
1804.
1805.
1806.
1807.
1808.
1809.
110
1810.
1811.
1812.
1813.
1814.
1815.
1816.
1817. Listing program JSONParser.java
1818.
package com.spjptsi;
1819.
1820.
import java.io.BufferedReader;
import java.io.IOException;
1821.
import java.io.InputStream;
1822.
import java.io.InputStreamReader;
1823.
import java.io.UnsupportedEncodingException;
1824.
import java.util.List;
1825.
import org.apache.http.HttpEntity;
1826.
import org.apache.http.HttpResponse;
1827.
import org.apache.http.NameValuePair;
1828.
import org.apache.http.client.ClientProtocolException;
1829.
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
1830.
import org.apache.http.client.methods.HttpPost;
1831.
import org.apache.http.client.utils.URLEncodedUtils;
1832.
import org.apache.http.impl.client.DefaultHttpClient;
1833.
import org.json.JSONException;
import org.json.JSONObject;
1834.
import android.util.Log;
1835.
1836.
public class JSONParser {
1837.
static InputStream is = null;
1838.
static JSONObject jObj = null;
1839.
static String json = "";
1840.
1841.
// constructor
1842.
public JSONParser() {
}
public JSONObject makeHttpRequest(String url, String method,
1843.
List<NameValuePair> params) {
1844.
1845.
// Making HTTP request
try {
111
1846.
1847.
1848.
1849.
1850.
1851.
1852.
1853.
DefaultHttpClient httpClient = new DefaultHttpClient();
1854.
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
1855.
HttpResponse httpResponse = httpClient.execute(httpPost);
1856.
HttpEntity httpEntity = httpResponse.getEntity();
1857.
is = httpEntity.getContent();
1858.
}else if(method == "GET"){
// request method is GET
1859.
DefaultHttpClient httpClient = new DefaultHttpClient();
1860.
String paramString = URLEncodedUtils.format(params, "utf-8");
1861.
url += "?" + paramString;
1862.
HttpGet httpGet = new HttpGet(url);
1863.
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
1864.
is = httpEntity.getContent();
1865.
}
1866.
} catch (UnsupportedEncodingException e) {e.printStackTrace();
1867.
} catch (ClientProtocolException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
1868.
}try {BufferedReader reader = new BufferedReader(new
1869.
InputStreamReader(is, "iso-8859-1"), 8);
1870.
StringBuilder sb = new StringBuilder();
1871.
String line = null;
while ((line = reader.readLine()) != null) {
1872.
sb.append(line + "\n");
1873.
}
1874.
is.close();
1875.
json = sb.toString();
1876.
} catch (Exception e) {
Log.e("Buffer Error","Error converting result" + e.toString());
1877.
}
1878.
// try parse the string to a JSON object
1879.
try {
1880.
jObj = new JSONObject(json);
} catch (JSONException e) {
1881.
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
112
1882.
1883.
1884.
1885.
1886.
1887.
1888.
1889. Listing program EditUserActivity.java
1890.
package com.spjptsi;
1891.
1892.
import java.util.ArrayList;
import java.util.List;
1893.
import org.apache.http.NameValuePair;
1894.
import org.apache.http.message.BasicNameValuePair;
1895.
import org.json.JSONArray;
1896.
import org.json.JSONException;
import org.json.JSONObject;
1897.
import android.app.Activity;
1898.
import android.app.ProgressDialog;
1899.
import android.content.Intent;
1900.
import android.os.AsyncTask;
1901.
import android.os.Bundle;
import android.util.Log;
1902.
import android.view.View;
1903.
import android.widget.Button;
1904.
import android.widget.EditText;
1905.
public class EditUserActivity extends Activity {
1906.
EditText txtName; EditText txtPrice;
1907.
EditText txtDesc; EditText txtCreatedAt;
1908.
Button btnSave; Button btnDelete;
1909.
String uid;
private ProgressDialog pDialog;
1910.
JSONParser jsonParser = new JSONParser();
1911.
private static final String url_product_detials =
1912.
"http://ptsi.besaba.com/ah_login_api/include/get_product_details.ph
1913.
p";
1914.
private static final String url_update_product =
"http://ptsi.besaba.com/ah_login_api/include/update_product.php";
1915.
private static final String url_delete_product =
1916.
"http://ptsi.besaba.com/ah_login_api/include/delete_product.php";
1917.
private static final String TAG_SUCCESS = "success";
private static
private static
private static
private static
private static
"encrypted_password";
final
final
final
final
final
String
String
String
String
String
TAG_PRODUCT = "product";
TAG_PID = "uid";
TAG_NAME = "name";
TAG_PRICE = "email";
TAG_DESCRIPTION =
113
1918.
1919.
1920.
1921.
1922.
1923.
1924.
1925.
public void onCreate(Bundle savedInstanceState) {
1926.
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_user);
1927.
// save button
1928.
btnSave = (Button) findViewById(R.id.btnSave);
1929.
btnDelete = (Button)
1930.
findViewById(R.id.btnDelete);
// getting product details from intent
1931.
Intent i = getIntent();
1932.
// getting product id (pid) from intent
1933.
uid = i.getStringExtra(TAG_PID);
1934.
// Getting complete product details in background thread
1935.
new GetProductDetails().execute();
btnSave.setOnClickListener(new View.OnClickListener() {
1936.
public void onClick(View arg0) {
1937.
new SaveProductDetails().execute();
1938.
}
1939.
});
1940.
// Delete button click event
1941.
btnDelete.setOnClickListener(new View.OnClickListener() {
1942.
public void onClick(View arg0) {
1943.
1944.
new DeleteProduct().execute();
1945.
}
});
1946.
1947.
}class GetProductDetails extends AsyncTask<String,
1948.
String, String> {
1949.
protected void onPreExecute() {
1950.
super.onPreExecute();
pDialog = new ProgressDialog(EditUserActivity.this);
1951.
pDialog.setMessage("Loading product details. Please wait...");
1952.
pDialog.setIndeterminate(false);
1953.
pDialog.setCancelable(true);
pDialog.show();
114
1954.
1955.
1956.
1957.
1958.
1959.
1960.
1961.
protected String doInBackground(String... params) {
1962.
// updating UI from Background Thread
runOnUiThread(new Runnable() {
1963.
public void run() {
1964.
int success;
1965.
try {
1966.
1967.
List<NameValuePair> params = new ArrayList<NameValuePair>();
1968.
params.add(new BasicNameValuePair("uid", uid));
1969.
JSONObject json = jsonParser.makeHttpRequest(
1970.
url_product_detials, "GET", params);
1971.
Log.d("Single Product Details", json.toString());
1972.
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
1973.
1974.
JSONArray productObj = json.getJSONArray(TAG_PRODUCT); // JSON
1975.
JSONObject product = productObj.getJSONObject(0);
1976.
txtName = (EditText) findViewById(R.id.inputName);
1977.
txtPrice = (EditText) findViewById(R.id.inputPrice);
1978.
1979.
}else{
1980.
1981.
} catch (JSONException e) {e.printStackTrace();}}
1982.
});
1983.
return null; }
protected void onPostExecute(String file_url) {
1984.
// dismiss the dialog once got all details
1985.
pDialog.dismiss();
1986.
}
1987.
}
class SaveProductDetails extends AsyncTask<String,
1988.
String, String> {
1989.
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(EditUserActivity.this);
pDialog.setMessage("Saving product ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
115
1990.
1991.
1992.
1993.
1994.
1995.
1996.
1997.
protected String doInBackground(String... args) {
1998.
String name = txtName.getText().toString();
String price = txtPrice.getText().toString();
1999.
// Building Parameters
2000.
List<NameValuePair> params = new ArrayList<NameValuePair>();
2001.
params.add(new BasicNameValuePair(TAG_PID, uid));
2002.
params.add(new BasicNameValuePair(TAG_NAME, name));
params.add(new BasicNameValuePair(TAG_PRICE, price));
2003.
JSONObject json=jsonParser.makeHttpRequest(url_update_product,
2004.
"POST", params);
2005.
// check json success tag
2006.
try {
2007.
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
2008.
Intent i = getIntent();
2009.
setResult(100, i);
2010.
finish();
2011.
} else {}
} catch (JSONException e) {e.printStackTrace();}
2012.
return null;
2013.
}
2014.
protected void onPostExecute(String file_url) {
2015.
// dismiss the dialog once product uupdated
pDialog.dismiss();
2016.
}
2017.
}
2018.
class DeleteProduct extends AsyncTask<String, String,
2019.
String> {
2020.
protected void onPreExecute() {
super.onPreExecute();
2021.
pDialog = new ProgressDialog(EditUserActivity.this);
2022.
pDialog.setMessage("Deleting Product...");
2023.
pDialog.setIndeterminate(false);
2024.
pDialog.setCancelable(true);
pDialog.show();
2025.
}
116
2026.
2027.
2028.
2029.
2030.
2031.
2032.
2033.
protected String doInBackground(String... args) {
2034.
// Check for success tag
int success;
2035.
try { // Building Parameters
2036.
List<NameValuePair> params = new ArrayList<NameValuePair>();
2037.
params.add(new BasicNameValuePair("uid", uid));
2038.
JSONObject json = jsonParser.makeHttpRequest( url_delete_product,
"POST", params);
2039.
Log.d("Delete Product", json.toString());
2040.
success = json.getInt(TAG_SUCCESS);
2041.
if (success == 1) {
2042.
2043.
Intent i = getIntent();
2044.
setResult(100, i); finish();
2045.
}
} catch (JSONException e) {
2046.
e.printStackTrace();
2047.
}
2048.
2049.
return null;
}
2050.
2051.
protected void onPostExecute(String file_url) {
2052.
// dismiss the dialog once product deleted
2053.
pDialog.dismiss();
2054.
}
2055.
2056.
}
2057.
}
2058.
2059.
2060.
2061.
117
2062.
2063.
2064.
2065.
2066.
2067.
2068.
2069. Listing program DashboardActivity.java
2070.
package com.spjptsi;
2071.
2072.
import android.app.Activity;
import android.content.Intent;
2073.
import android.os.Bundle;
2074.
import android.view.View;
2075.
import android.widget.Button;
2076.
import com.spjptsi.library.UserFunctions;
import com.maps.*;
2077.
import com.scan.*;
2078.
2079.
public class DashboardActivity extends Activity {
2080.
UserFunctions userFunctions;
2081.
Button btnLogout, btnScan, btnReport;
View scanQR;
2082.
2083.@Override
public void onCreate(Bundle savedInstanceState) {
2084. super.onCreate(savedInstanceState);
2085. // Check login status in database
2086. userFunctions = new UserFunctions();
2087. if(userFunctions.isUserLoggedIn(getApplicationContext())){
setContentView(R.layout.dashboard);
2088.
btnLogout = (Button) findViewById(R.id.btnLogout);
2089.
btnScan = (Button) findViewById(R.id.btnScan);
btnReport = (Button) findViewById(R.id.btnReport);
2090.
scanQR = findViewById(R.id.btnScan);
2091.
btnLogout.setOnClickListener(new View.OnClickListener() {
2092.
public void onClick(View arg0) {
2093.
2094.
2095.
userFunctions.logoutUser(getApplicationContext());
2096.
Intent login = new
2097.
Intent(getApplicationContext(), LoginActivity.class);
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(login);
// Closing dashboard screen
finish();
}
});
118
2098.
2099.
2100.
2101.
2102.
2103.
2104.
2105.
// Link to scan login screen
2106.
btnScan.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
2107.
scanqr();
2108.
}
2109.
});
2110.
2111.
// Link to report login screen
2112.
btnReport.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
2113.
Intent i = new Intent(getApplicationContext(),
2114.
MainActivityMarker.class); //Report
2115.
startActivity(i);
2116.
finish(); }
2117.
});
2118.
2119. }else{
// user is not logged in show login screen
2120.
Intent login = new Intent(getApplicationContext(),
2121.
LoginActivity.class);
2122.
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
2123.
startActivity(login);
// Closing dashboard screen
2124.
finish();
2125.
}
2126.
2127.
}
2128.
2129.
public void scanqr () {
2130.
Intent i = new Intent (this,DecoderActivity.class);
2131.
startActivity(i);
2132.
finish();
}
2133.
}
119
2134.
2135.
2136.
2137.
2138.
2139.
2140.
2141.
2142. Listing program UserAllActivity.java
2143.
package com.spjptsi;
2144.
2145.
import java.util.ArrayList;
import java.util.HashMap;
2146.
import java.util.List;
2147.
import org.apache.http.NameValuePair;
2148.
import org.json.JSONArray;
2149.
import org.json.JSONException;
import org.json.JSONObject;
2150.
import android.app.ListActivity;
2151.
import android.app.ProgressDialog;
2152.
import android.content.Intent;
2153.
import android.os.AsyncTask;
2154.
import android.os.Bundle;
import android.util.Log;
2155.
import android.view.View;
2156.
import android.widget.AdapterView;
2157.
import android.widget.AdapterView.OnItemClickListener;
2158.
import android.widget.ListAdapter;
import android.widget.ListView;
2159.
import android.widget.SimpleAdapter;
2160.
import android.widget.TextView;
2161.
2162.
public class AllUserActivity extends ListActivity {
private ProgressDialog pDialog;
2163.
JSONParser jParser = new JSONParser();
2164.
ArrayList<HashMap<String, String>> productsList;
2165.
private static String url_all_products =
2166.
"http://ptsi.besaba.com/ah_login_api/include/get_all_products.php";
2167.
// JSON Node names
private static final String TAG_SUCCESS = "success";
2168.
private static final String TAG_PRODUCTS = "users";
2169.
private static final String TAG_PID = "uid";
private static final String TAG_NAME = "name";
JSONArray products = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.all_user);
productsList = new ArrayList<HashMap<String, String>>();
new LoadAllProducts().execute();
120
2170.
2171.
2172.
2173.
2174.
2175.
2176.
2177.
// Get listview
2178.
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
2179.
public void onItemClick(AdapterView<?> parent, View view,
2180.
int position, long id) {
2181.
String pid = ((TextView)
2182.
view.findViewById(R.id.pid)).getText().toString();
Intent in = new Intent(getApplicationContext(),
2183.
EditUserActivity.class);
2184.
in.putExtra(TAG_PID, pid);
2185.
startActivityForResult(in, 100);
2186.
}
});
2187.
}
2188.
// Response from Edit Product Activity
2189.
@Override
2190.
protected void onActivityResult(int requestCode, int
2191.
resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode,
2192.
data);
2193.
if (resultCode == 100) {
2194.
Intent intent = getIntent();
2195.
finish();
startActivity(intent);
2196.
}
2197.
}
2198.
class LoadAllProducts extends AsyncTask<String, String, String> {
2199.
protected void onPreExecute() {
super.onPreExecute();
2200.
pDialog = new ProgressDialog(AllUserActivity.this);
2201.
pDialog.setMessage("Loading all user. Please wait...");
2202.
pDialog.setIndeterminate(false);
2203.
pDialog.setCancelable(false);
2204.
pDialog.show();
2205.
}
2206.
2207.
2208.
2209.
2210.
2211.
2212.
2213.
products = json.getJSONArray(TAG_PRODUCTS);
for (int i = 0; i < products.length(); i++) {
2214.
JSONObject c = products.getJSONObject(i);
2215.
String id = c.getString(TAG_PID);
2216.
String name = c.getString(TAG_NAME);
2217.
HashMap<String, String> map = new HashMap<String, String>();
2218.
map.put(TAG_PID, id); map.put(TAG_NAME, name);
productsList.add(map);
2219.
}
2220.
} else {
2221.
Intent i = new Intent(getApplicationContext(),
2222.
RegisterActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
2223.
startActivity(i);
2224.
}
2225.
} catch (JSONException e) {
2226.
e.printStackTrace();
}
2227.
2228.
return null;
2229.
}
2230.
protected void onPostExecute(String file_url) {
2231.
pDialog.dismiss();
runOnUiThread(new Runnable() {
2232.
public void run() {
2233.
ListAdapter adapter = new SimpleAdapter(
2234.
AllUserActivity.this, productsList, R.layout.list_item, new
2235.
String[] { TAG_PID, TAG_NAME},
new int[] { R.id.pid, R.id.name });
2236.
setListAdapter(adapter);
2237.
}
2238.
});
2239.
}
}
2240.
}
2241.
122
2242.
2243.
2244.
2245.
2246.
2247.
2248.
2249.
Lampiran 3: Dokumentasi
2250.
2251.
2252.
123
2253.
2254.
2255.
Tampak Depan
2256.
2257.
2258.
Tampak Samping
2259.
124
2260.
2261.
2262.
2263.
2264.
2265.
125
2266.
2267.
2268.
2269.
2270.
2271.
2272.
2273.
2274.
2275.
2276.
2277.
2278.
2279.
Nama
NamaPanggilan
126
2280.
2281.
Januari 1994
2282.
2283.
2284.
2285.
2286.
2287.
JenisKelamin
Tempat,Tanggal Lahir
: Laki - laki
: Surabaya, 3
Kelas
: 2 D4 Teknik Komputer B
NRP
: 2210121058
Kebangsaan
: Indonesia
Alamat
: Pakis Wetan 6/2-4 Surabaya
E-Mail
: suryoajiw@ymail.com
Handphone
: 08563667273
2288.
RIWAYAT PENDIDIKAN
2289.
1999 2000
: TK Pakis Jaya
Surabaya
2290.
1999 2005
: SD
Pakis Jaya Surabaya
2291.
2005 2008
: SMPN
21 Surabaya
2292.
2008 2011
: SMA
GIKI 1 Surabaya
2293.
2011 2012
: PIKTI
ITS Surabaya
( D1 )
2294.
2012 sekarang
:
Politeknik Elektronika Negeri
Surabaya ( D4 )
2295.
2296.
2297.
2298.
2299.
2300.
2301. Lampiran 4 : Biodata Penulis
2302.
2303.
2304.
2305.
127
2306.
2307.
2308.
Nama
: Farah Devi Isnanda
2309.
NamaPanggilan
: Farah
2310.
JenisKelamin : Perempuan
2311.
Tempat, Tanggal Lahir : Surabaya, 15
April 1995
2312.
Kelas: 2 D4 Teknik Komputer B
2313.
NRP : 2210121033
2314.
Kebangsaan : Indonesia
2315.
Alamat
: Jalan Karang Gayam
No.37, Surabaya
2316.
E-Mail
: farancak@gmail.com
2317.
Handphone : 083896619019
2318.
2319. RIWAYAT PENDIDIKAN
2320.
1999 2000
: TK YPKA
Kamal, Madura
2321.
2000 2006 : SDN Tambaksari 1
Surabaya
2322.
2006 2009 : SMPN 37 Surabaya
2323.
2009 2012 : SMA Negeri 19 Surabaya
2324.
2010 2012 : Politeknik Komputer Bina
Profesi Indonesia (D1)
2325.
2012 sekarang
: Politeknik Elektronika
Negeri Surabaya
(D4)
2326.
2327.
2328.
2329.
2330.
128
2331.
2332.
2333.
2334.
2335.
2336.
2337.
2338.
2339.
2340.
2341.
2342.
2343.
2344.
2345.
2346.
2347.
2348.
Nama
2349.
2350.
2351.
2352.
2353.
RIWAYAT PENDIDIKAN
2354.
2355.
1999 2000 : TK Alhidayah Sawotratap
Gedangan Sidoarjo
2356.
2000 2006 : SD Negeri 1 Sawotratap Gedangan
Sidoarjo
2357.
2006 2009 : SMP Negeri 4 Waru Sidoarjo
2358.
2009 2012 : SMK Negeri 2 Buduran Sidoarjo
2359.
2010 2011 : Institut Pembangunan Surabaya
129
2360.
Negeri Surabaya
2361.
2362.
2012 Sekarang
: Politeknik Elektronika
2363.
130