You are on page 1of 141

LAPORAN KERJA PRAKTEK

APLIKASI SISTEM VERIFIKASI DATA SPJ


PT. SEMEN INDONESIA (PERSERO),Tbk.
GRESIK - JAWA TIMUR

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

PROGRAM STUDI TEKNIK KOMPUTER


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
2014

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

LAPORAN KERJA PRAKTEK


Telah diperiksa dan disetujui
Mengetahui,

Menyetujui,

Ka Biro Pusat Pembelajaran

Pembimbing Kerja Praktek

Ir. Ilmanza Restuadi K.,MIT.


Nopeg. 778

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

LAPORAN KERJA PRAKTEK


Telah diperiksa dan disetujui
Mengetahui,
Koordinator Kerja Praktek

Dosen Pembimbing

Iwan Kurnianto Wibowo,S.ST,MT


NIP. 198712302014041001

Ir.Dadet Pramadihanto, M.Eng, Ph.D


NIP. 196202111988111001

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

Gambar 2.1. Logo PT.Semen Indonesia (PERSERO)............................................8


Gambar 2.2. Contoh QR Code..........................................................................13
Gambar 2.3. Struktur dan lokasi area QR Code................................................15
Gambar 2. 4. Hasil QR Code.............................................................................19
Gambar 2.5. Contoh Embedded Script..............................................................21
Gambar 2.6. Contoh Non-Embedded Script.....................................................22
Gambar 2.7. Contoh tipe Data Object...............................................................24
Gambar 2. 8. Syntax Insert................................................................................26
Gambar 2. 9. Syntax Update.............................................................................26
Gambar 2. 10. Syntax Delete............................................................................27
Gambar 2.11. Form method Post.......................................................................28
Gambar 2.12. Form method Get........................................................................28
Gambar 2.13. Formpost.php..............................................................................28
Gambar 2.14. Prosespost.php............................................................................28
Gambar 2.15. Formget.php...............................................................................29
Gambar 2.16. Prosesget.php..............................................................................29
Gambar 2.17. Logo Bootstrap...........................................................................31
Gambar 2.18. Komponen Use case diagram.....................................................32
YGambar 3.1. Bagan flowchart pada Android................................................ 38
Gambar 3.2. Bagan flowchart pada Web Storing database............................39
Gambar 3.3. Bagan flowchart pada Web Admin............................................40
Gambar 3. 4. Bagan Flowchart pada Web Admin Location...........................41
Gambar 3.5. Bagan Flowchart pada Web Admin Sidebar..............................42
Gambar 3. 6. Bagan flowchart pada Web - AdminStatus..................................43
Gambar 3. 7. Bagan Flowchart pada Web Storing Location..........................44
Gambar 3.8. Bagan Flowchart pada web Driving Location...........................45
Gambar 3.9. Bagan Flowchart pada Web Map Quest....................................46
Gambar 3. 10. Use case Sistem Verifikasi data SPJ..........................................46
Gambar 3.11. Letak hasil ekstrak ADT.............................................................47
Gambar 3.12.Tampilan saat eclipse ADT dijalankan........................................47
Gambar 3.13.Membuat Project baru.................................................................48
Gambar 3.14. Tampilan aplikasi baru...............................................................48
Gambar 3.15. Menu Login User........................................................................49
Gambar 3.16. Menu Utama...............................................................................49
Gambar 3.17. Proses scan QR Code.................................................................50
Gambar 3.18. Hasil Scan QR............................................................................50
Gambar 3.19. Konfirmasi scan 1 kali................................................................51
Gambar 3.20. Konfirmasi scan lebih dari 1 kali...............................................51
Gambar 3.21. Tampilan Cek..............................................................................52

Gambar 3.22. Koordinat lokasi driver (biru) dan Toko (merah).......................52


Gambar 3.23. Menu login Admin......................................................................53
Gambar 3. 24. Menu Urama Admin..................................................................53
Gambar 3.25. Menu Lihat User.........................................................................54
Gambar 3.26. Menu Registrasi User baru.........................................................54
Gambar 3.27.Generate QR Code.......................................................................55
Gambar 3.28. Menu Storing database...............................................................56
Gambar 3.29. Incorrect Login...........................................................................56
Gambar 3.30. Halaman Administrator..............................................................56
Gambar 3.31. Tampilan session halaman Administrator...................................57
Gambar 3.32. Tampilan Menu Backup.............................................................57
Gambar 3.33. Hasil Backup data.......................................................................58
Gambar 3.34. Create New Admin.....................................................................58
Gambar 3.35. Hasil Create New Admin............................................................59
Gambar 3.36.Menu Location............................................................................60
Gambar 3.37. Create Status awal......................................................................60
Gambar 3.38. Add new status...........................................................................61
Gambar 3.39. Hasil create status.......................................................................62
Gambar 3.40. Delete status...............................................................................62
Gambar 3. 41. List Sidebar................................................................................63
Gambar 3.42. Hasil create sidebar....................................................................63
Gambar 3. 43. Menu report...............................................................................64
Gambar 3.44. Storing Location.........................................................................64
Gambar 3.45. Save location to server...............................................................65
Gambar 3.46. Success to insert.........................................................................65
Gambar 3.47. Driving Direction.......................................................................66
Gambar 3.48. Set Origin / Destination..............................................................66
Gambar 3 49. Origin Location..........................................................................67
Gambar 3.50. Destination Location..................................................................67
Gambar 3.51. Hasil Set direction location........................................................68
Gambar 3.52. Map Quest Direction..................................................................68
YDokumentasi 1.1. Lobby Gedung Utama.................................................. 117
Dokumentasi 1.2. Ruangan Divisi Tim Pengembangan ICT..........................117
Dokumentasi 1.3. Suasana Kerja.....................................................................118
Dokumentasi 1.4. Presentasi Project...............................................................119
Dokumentasi 1. 5. Foto bersama mahasiswa KP............................................119
DAFTAR TABE

10

Tabel 2.1. Kapasitas Data QR Code..................................................................13


Tabel 2.2. Versi QR Code..................................................................................14
Tabel 2.3. Contoh data QR Code.......................................................................16
Tabel 2.4. Konversi Alphanumerik ke biner.....................................................17
Tabel 2.5. Kapasitas Data..................................................................................17
Tabel 2.6. Reed Solomon..................................................................................18
Tabel 2.7. Indikator Pola Mask.........................................................................18
Tabel 2.8. Simbol-simbol flowchart..................................................................36
YTabel 3.1. Hasil scanning berdasarkan jenis kamera....................................
50

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

tersebut melalui kegiatan belajar mengajar secara akademis, penelitian, dan


pengabdian masyarakat.
Program Studi Teknik Komputer, Departemen Informatika dan
Komputer, Politeknik Elektronika Negeri Surabaya adalah salah satu
perguruan tinggi negeri dengan sasaran pengembangan dan penggunaan
proses industri serta bidang ilmu pengetahuan, unit perancangan sistem
operasi instrumentasi yang berperan dalam proses pengukuran. Mahasiswa
sebagai bagian dari sumber daya manusia Indonesia secara khusus
disiapkan untuk menjadi design engineer, process engineer, project
engineer, peneliti dan pendidik.
Untuk mencapai tujuan diatas maka Program Studi Teknik
Komputer, Departemen Informatika dan Komputer, Politeknik Elektronika
Negeri Surabaya menjembatani mahasiswanya untuk melaksanakan kerja
praktek sebagai kelengkapan teori (khususnya dalam bidang keahlian) yang
telah dipelajari di bangku kuliah. Dalam kesempatan ini penulis selaku
mahasiswa Program Studi Teknik Komputer, Departemen Informatika dan
Komputer, Politeknik Elektronika Negeri Surabaya melaksanakan kerja
praktek di seksi/Biro Pengembangan ICT PT. Semen Indonesia
(PERSERO), Tbk.
1.2. Permasalahan
Adapun permasalahan yang dibahas dalam laporan kerja praktek
ini adalah sebagai berikut :
1. Bagaimana merancang sistem akses database server melalui
aplikasi perangkat mobile berbasis Android?
2. Bagaimana merancang antarmuka pengguna untuk aplikasi
survei harga produk semen pada perangkat Android?
3. Bagaimana membuat aplikasi yang mampu mengolah dan
menyajikan data secara real time?
4. Bagaimana mengelola penggunaan aplikasi sistem informasi
harga produk semen oleh pegawai dan administrator?

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.

SISTEMATIKA PENULISAN LAPORAN


Di dalam penyusunan laporan Praktek Kerja ini, sistematika
penyusunan yang digunakan adalah sebagai berikut :
Bab I : Pendahuluan
Membahas tentang latar belakang, tujuan kerja praktek,
manfaat kerja praktek, sistematika penulisan dan metode pengumpulan data.
Bab II:Profil PT. Semen Indonesia (PERSERO),Tbk.
Membahas tentang sejarah, visi, misi, letak geografis, struktur
organisasi, sistem manajemen, produk dan anak perusahaan pada PT. Semen
Indonesia (PERSERO),Tbk.
Bab III : Teori Penunjang
Berisi uraian mengenai relevansi dari permasalahan yang dikaji
dengan teori yang diperoleh di bangku kuliah.
Bab IV : Analisa dan Pembahasan
Berisi tentang solusi untuk mengatasi permasalahan yang
muncul.
Bab V : Penutup
Berisi penutup yang terdiri dari kesimpulan dan saran.
Bab VI : Lampiran
Berisi lampiran-lampiran sebagai data penunjang laporan.

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.

NAMA UNIT KERJA TEMPAT PELAKSANAAN


Unit kerja tempat pelaksanaan kerja praktek di biro Pengembangan ICT
Gedung Utama PT.Semen Indonesia (PERSERO),Tbk pabrik Gresik .

----------------Halaman ini sengaja


dikosongkan----------------------

BAB II.
TINJAUAN PUSTAKA
PROFIL PT. SEMEN INDONESIA (PERSERO)

2.1. Sejarah Singkat


- 7 Agustus 1957
-17 April 1961
-24 Oktober 1969
-8 Juli 1991
-24 September 1994
-15 September 1995
-15 September 1995
-10 September 1996
-17 April 1997
-20 Maret 1998
-17 September 1998
-27 Juli 2006

: NV Pabrik Semen Gresik diresmikan


Presiden RI Ir. Soekarno.
: Semen Gresik berubah status dari NV
menjadi PN.
: Berubah status dari PN menjadi
PT(Persero).
: Semen Gresik tercatat di Bursa Efek Jakarta
dan Bursa Efek Surabaya
: Peresmian Pabrik Tuban I dengan kapasitas
2,3 juta ton semen per tahun
: Perseroan melakukan Penawaran Umum
Terbatas
: Semen Gresik berkonsolidasi dengan PT
Semen Padang dan PT Semen Tonasa
: Peresmian Pabrik Tonasa IV dengan
kapasitas 2,3 juta ton semen per tahun
: Peresmian Pabrik Tuban II dengan kapasitas
2,3 juta ton semen per tahun
:Peresmian Pabrik Tuban III dengan kapasitas
2,3 juta ton semen per tahun
: Pemerintah melepas 14% saham di SGG ke
Cemex S.A de C.V.
:Terjadi transaksi penjualan saham Cemex
S.A de C.V. ke Blue Valley Holding PTE Ltd.
[1]

2.2. Profil PT.Semen Indosenia(PERSERO),Tbk .


Alamat : Gedung Utama SG Jl.Veteran, Gresik 61122
Telp : +62 31 3981732 . Fax : +62 31 3983209
Email : info@semenindonesia.com
Website : http://www.semenindonesia.com/
2.3. Logo PT.Semen Indonesia (PERSERO),Tbk

Gambar 2.1. Logo PT.Semen Indonesia (PERSERO)

2.3.1.

Arti Logo PT.SEMEN INDONESIA (PERSERO)


Logo baru tersebut merefleksikan spirit untuk terus
berkembang menjadi fondasi yang kokoh bagi kemajuan Ekonomi
Bangsa. Logo ini juga diharapkan menjadi tapak awal dan pintu gerbang
bagi keterpaduan dan kekokohan sinergi demi kemajuan BUMN bidang
persemenan saat ini dan mendatang. [2]
2.4. Visi dan Misi
VISI
Menjadi perusahaan persemenan terkemuka di Indonesia dan Asia
Tenggara
MISI
1.
2.
3.
4.
5.

Memproduksi, memperdagangkan semen dan produk terkait lainnya


yang berorientasikan kepuasan konsumen dengan menggunakan
teknologi ramah lingkungan.
Mewujudkan manajemen berstandar internasional dengan
menjunjung tinggi etika bisnis dan semangat kebersamaan dan
inovatif.
Meningkatkan keunggulan bersaing di domestic dan internasional.
Memberdayakan dan mensinergikan sumber daya yang dimiliki
untuk meningkatkan nilai tambah secara berkesinambungan.
Memberikan kontribusi dalam peningkatan para pemangku
kepentingan (stakeholders). [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.

2.6. Struktur Organisasi PT.Semen Indonesia

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 Rancang Bangun

Departemen Produksi Semen

Departemen Pengadaan & Pengelolaan Persediaan

Departemen Teknik

2.7. Sistem Manajemen PT.Semen Indonesia


Dalam menghadapi tantangan era globalisasi pasar bebas, maka
Semen Indonesia telah menerapkan sistem manajemen dan mendapatkan
beberapa sertifikat sebagai berikut:
1.
Sistem Manajemen Mutu SNI 19-9001-2001 dan ISO
9001:2000, sertifikat No. ID03/0267 dari SGS sejak Mei 1996.
2.
Sistem Manajemen Lingkungan ISO 14001:2004, sertifikat no
GB01/19418 dari SGS sejak Februari 2001.
3.
Sistem Manajemen Keselamatan dan Kesehatan Kerja (SMK3)
Sejak 1999 dan OHSAS 18001:2007 sejak bulan Nopember 2007
dari SGS.
4.
Memperoleh Sertifikat Akreditasi Laboratorium Pengujian
Bahan dari KAN yang telah menerapkan secara konsisten ISO/IEC
17025:2000 sejak Nopember 2002 dan ISO/IEC 17025:2005 sejak
Maret 2007.
5.
API Monogram Sertifikat no. 10A-0044 dari American
Petroleum Institute New York. [3]
Semua Sistem manajemen di atas diimplementasikan dengan
mensyaratkan management continous improvement dan penerapan
subsistem manajemen meliputi :

Gugus Kendali Mutu (GKM)

5R

Sistem Saran (SS)

Total Productive Maintenance (TPM)


2.8. Produk
1. Semen Portland Tipe I. Dikenal pula sebagai ordinary Portland
Cement (OPC), merupakan semen hidrolis yang dipergunakan secara
luas untuk konstruksi umum, seperti konstruksi bangunan yang tidak
memerlukan persyaratan khusus, antara lain : bangunan, perumahan,
gedung-gedung bertingkat, jembatan, landasan pacu dan jalan raya.
2. Semen Portland Tipe II. Di kenal sebagai semen yang mempunyai
ketahanan terhadap sulfat dan panas hidrasi sedang. Misalnya untuk
bangunan di pinggir laut, tanah rawa, dermaga, saluran irigasi, beton
massa dan bendungan.

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

8. PT. SGG Prima Beton


9. PT. Krakatau Semen Indonesia
10. PT. Sinergi Informatika Semen Indonesia (SISI)
8.
9.
2.10. ANDROID
10. Pengertian Android adalah sistem operasi berbasis Linux yang
dipergunakan sebagai pengelola sumber daya perangkat keras, baik
untuk ponsel, smartphone . Secara umum Android adalah platform yang
terbuka (Open Source), bagi para pengembang untuk menciptakan
aplikasi mereka sendiri untuk digunakan oleh berbagai piranti bergerak.
[4]

2.10.1. Versi pada android


1. Android versi 1.1
2. Android versi 1.5 (Cupcake)
3. Android versi 1.6 (Donut)
4. Android versi 2.0/2.1 (Eclair)
5. Android versi 2.2 (Froyo: Frozen Yoghurt)
6. Android versi 2.3 (Gingerbread)
7. Android versi 3.0/3.1 (Honeycomb)
8. Android versi 4.0 (ICS: Ice Cream Sandwich)
9. Android versi 4.1 (Jelly Bean)
10. Android versi 4.4 (KitKat)
2.10.2. Fitur yang tersedia di Android
a.
Kerangka aplikasi: itu memungkinkan penggunaan dan
penghapusan komponen yang tersedia.
b.
Dalvik mesin virtual: mesin virtual dioptimalkan untuk
perangkat telepon seluler.
c.
Grafik: grafik di 2D dan grafis 3D berdasarkan pustaka
OpenGL.
d.
SQLite: untuk penyimpanan data.
e.
Mendukung media: audio, video, dan berbagai format gambar
(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
f.
GSM, Bluetooth, EDGE, 3G, 4G dan WiFi (tergantung piranti
keras)

12

g.

Kamera, Global Positioning System (GPS), kompas, NFC dan


accelerometer (tergantung piranti keras)

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.

13. Tabel 2.1. Kapasitas Data QR Code

14.

15.
16. Gambar 2.2. Contoh QR Code

Keunggulan yang dimiliki oleh QR Code adalah sebagai berikut :


17. 1. Kapasitas besar.
18. 2. Mudah dibaca.
19. 3. Kemampuan menyimpan huruf Kanji.
20. 4. Dapat dibaca dari berbagai macam arah.
21. 5. Ukuran kecil.
22. 6. Tahan terhadap kotor dan rusak.
23. 7. Dapat dibagi-bagi.
24.
Penjelasan pada Tabel 3.1 bahwa QR Code memiliki kapasitas
yang tinggi dalam data pengkodean, yaitu mampu menyimpan

13

semua jenis data , seperti data numerik, data alphanumerik , kode


biner dan kanji dengan kapasitas yang tertera pada table.
25.
Selain itu QR Code mampu memperbaiki kesalahan
sampai dengan 30% untuk Level H , lalu untuk Level Q sampai 25% ,
level M sampai 15% dan Level L sampai 7% . Oleh karena itu,
walaupun sebagian symbol QR Code rusak atau kotor , data tetap dapat
disimpan dan dibaca . Tiga tanda yang terdapat pada Gambar 3.1.
memiliki fungsi agar simbol dapat dibaca dengan hasil yang sama dari
sudut manapun sepanjang 360 .
26.
Versi pada QR Code
27.
Versi dalam QR Code berkisar antara versi 1 (21x21 modul)
sampai versi 40 (177 x 177 modul) . Setiap versi dalam QR Code
memiliki data maksimum dengan jumlah data, jenis karakter dan
koreksi error masing-masing yang akan dijelaskan pada sub bab 3.2.2
ini. Untuk lengkapnya dapat dilihat pada Tabel 2.
28.
29. Tabel 2.2. Versi QR Code

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

2.11.1. Decoder QR Code


33.
Decoder adalah proses pembacaan QR Code dengan
beberapa bagian yang dapat dilihat secara manual pada Gambar 3.2.

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

data untuk mendecoder data baik numeric, alphanumeric, dan


sebagainya . Misalnya terdapat informasi sebagai berikut :
45. Tabel 2.3. Contoh data QR Code

46.
47.
48.
1.
2.

3.

Langkah langkah pengkodean :


Mode indicator : yaitu menambahkan 4 bit bilangan
biner kedalam versi tipe data . Sehingga dari contoh diatas
didapatkan nilai biner Alfanumerik : 0010
Menghitung karakter indicator : yaitu menghitung
jumlah karakter yang akan dikodekan lalu karakter indicator
dengan ketentuan sebagai berikut :
Numeric : 10 bit
Alphanumeric : 9 bit
Biner : 8 bit
Kanji : 8 bit
49. Sehingga karakter indicator dari contoh diatas yaitu :
0010 00001000
Mengkodekan data kedalam biner : yaitu
mengkonversi data teks kedalam bilangan biner dengan cara : 1)
Membagi
data
menjadi
per-2
karakter
yaitu
AB,CD,E1,23.
50. 2) Setiap karakter dicocokkan dengan Tabel 3.5. untuk
mendapatkan representasi biner dari teks masukan . Setelah itu
untuk nilai karakter pertama dikalikan dengan 45 dan ditambah
dengan nilai karakter kedua . Hasilnya dikodekan kedalam biner
menjadi 11 digit . Apabila jumlah karakter yang akan dikodekan
berjumlah ganjil, maka pada kelompok terakhir hanya ada 1
karakter yang harus dikodekan dalam representasi biner.

16

51. Tabel 2.4. Konversi Alphanumerik ke biner

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

ini, maka setiap titik di bumi selalu akan dapat ditentukan


koordinatnya oleh GPS setiap saat selama 24 jam penuh perhari.
80. GPS dalam android merupakan gabungan beberapa komponen
software dan hardware sehingga dapat menjadi semacam location
service yang baik . Berikut komponen-komponen yang terdapat pada
android :
1. Chips GPS
2. GPS Driver
3. GL Engine
4. Android Framework
5. User Application
81.
2.13.
PHP
82.
PHP merupakan
bahasa
pemrograman web untuk
pemrograman di sisi server, artinya sintaxs dan perintah perintah yang
diberikan akan sepenuhnya dijalankan di server, dengan kata lain
aplikasi akan menampilkan hasil web browser, tetapi prosesnya secara
keseluruhan dijalankan di web server. [8]
83.
2.13.1. Tata Cara Penulisan PHP
84. Penulisan
pemrograman PHP dapat
dilakukan
dengan
menggunakan berbagai cara, namun berbagai penulisan tersebut tidak
akan mempengaruhi hasil program yang dibuat. Terdapat 4 cara
menuliskan script PHP, yaitu :
85. 1. <?.?>
86. 2. <?php.?>
87. 3. <script language=PHP>..</script>
88. 4. <%.%>

Cara pertama adalah short style, merupakan cara yang paling


praktis.

Cara kedua adalah standart style, gaya penulisan ini mirip


dengan penulisan program XML.

Cara ketiga adalah javascript style yang mirip dengan


penulisan programjavascript dan cara keempat style ASP yang sudah
dikenal oleh penggunaASP.
89.

20

2.13.2. Macam Penulisan


2.13.2.1.Embedded Script
90. Kode program PHP menyatu dengan tag-tag HTML dalam
suatu
file
atau
disisipi
kode-kode PHP kedalam HTML.
Kode PHP diawali dengan tag <? Atau <?php dan ditutup dengan tag ?
>. File yang berisi tag HTML dan kode PHP ini diberi ekstensi .php.
Berdasarkan ekstensi ini, pada saat file diakses, server akan tahu bahwa
file ini mengandung kode PHP. Server akan menerjemahkan kode ini
dan menhasilkan outout dalam bentuk tag HTML yang akan dikirim
ke browser client yang mengakses file tersebut. Berikut contoh
programnya :
91. <HTML>
92. <HEAD>
93. <TITLE>Pemrograman PHP</TITLE>
94. </HEAD>
<BODY>
95. <CENTER>
96. <?php
97. echo Ini hanya program contoh yang embedded
98. sript;
?>
99. </CENTER>
</BODY>
100.
101. </HTML>

102.
Gambar 2.5. Contoh
Embedded Script
103.
104.

2.13.2.2.Non Embedded Script


105. Script PHP pada cara ini digunakan sebagai murni pembuatan
program denganPHP, tag HTML yang dihasilkan untuk membuat
dokumen merupakan bagian dari script PHP. Contoh program yang
dinamai dengan nama coba2.php
106.
107.
108.
109.
110.
111.
112.

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

2.13.4. Tipe Data PHP


133.
Tipe data yang dapat diolah oleh PHP, adalah tipe
data numeric (integer dan floating point), tipe data string dan tipe data
object.
134.
2.13.4.1.Tipe data numerik
135.
Terdiri atas integer dan floating point (double), integer
menyimpan data berupa bilangan bulat, sedangkan floating
point menyimpan data dalam bentuk nilai desimal. Perbedaan kedua tipe
data tersebut dapat dilihat dalam contoh berikut :
136.
$integer=123 ; $double=12,3
137.
2.13.4.2.Tipe data string
138.
Tipe data yang menampung data informasi berupa
kumpulan karakter atau kata bahkan seuntai kalimat. Isi dari string
diapit oleh tanda kutip. Seperti terlihat berikut ini :
139.$tipe_string=Belajar PHP
140.
2.13.4.3.Tipe data object
141.
Tipe data ini merupakan pengembangan yang
dilakukan PHP untuk mendukung pemrograman beroriantasi objek.
Tipe data objek adalah tipe data yang didalamnya mempunyai data dan
method. Data yang dimiliki oleh suatu objek dikenal dengan nama
atribut, dan method umumnya berupa sebuah fungsi. Data objek disini
didefinisikan dengan membuat definisi kelas terlebih dahulu. Suatu
variabel yang bertipe objek dideklarasikan dengan menggunakan
perintah newdiikuti nama objek (berupa nama kelas objek).
142.
143.
144.
145.
146.
147.
148.
149.
150.

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.

JSON terbuat dari dua struktur:

24

Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini


dinyatakan sebagai objek (object), rekaman (record), struktur
(struct), kamus (dictionary), tabel hash (hash table), daftar berkunci
(keyed list), atau associative array.

Daftar nilai terurutkan (an ordered list of values). Pada


kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor
(vector), daftar (list), atau urutan (sequence).
169.
2.15.
Oracle
170.
Database Oracle adalah Database relasional yang terdiri dari
kumpulan data dalam suatu sistem manajemen Database RDBMS.
Perusahaan Software Oracle memasarkan jenis Database ini untuk
bermacam-macam aplikasi yang bisa berjalan pada banyak jenis dan
merk perangkat keras komputer (platform). [10]
171.
2.15.1. Komponen-komponen database oracle
172.Secara umum komponen DBMS Oracle terdiri atas memory,
proses, dan file-file. Lebih jauh lagi, komponen-komponen tersebut
dikelompokkan sebagai berikut :
1. Instance
173.
Memory yang disebut sebagai System Global Area (SGA),
terdiri atas:

Shared Pool (Libary Cache and Data Dictionary Cache),


Database Buffer Cache,

Redolog Buffer Cache,

Java Pool, Large Pool.

Back ground process: PMON, SMON, DBWR, LGWR, CKPT,


dan lain-lain
174. 2.
Database
-Datafile
-Control file dan Redo log file
175.
3.
Komponen lain
176.
- Process : Server Process, user process
177.
- Memory : Program Global Area (PGA)
178.
- File : Archived log, parameter, dan password file
179.

25

2.15.2. Operasi database dengan Oracle


180. Untuk pemula yang baru mempelajari oracle pada dasarnya
terdapat 3 operasi standart yang dilakukan yaitu :
1. Insert
2. Update
3. Delete
181.
2.15.2.1.
INSERT
182.
Insert digunakan untuk memasukkan data ke sebuah
tabel dalam user (schema) tertentu. Syntax Insert dapat dituliskan
sebagai berikut :
183.

INSERT INTO [nama_user].[nama_table]

184.

([nama_kolom1], [nama_kolom2], . . .)

185.

VALUES

186. ([nilai1],

[nilai2], . . .);

187. Gambar 2. 8. Syntax Insert

188.Keterangan :
189.nama_
user

190.191.Nama user atau nama schema ketika login


:

192.nama_t
abel

193.194.Nama tabel yang terdapat pada user


:
(schema) tersebut

195.nama_
kolom

196.197.Nama kolom yang akan diisi data pada


:
[nama_tabel]

198.Nilai

199.200.Nilai
yang
akan
diisikan
pada
:
[nama_kolom], mis : [nilai1] akan diisikan

26

ke dalam [nama_kolom1], [nilai2] akan


diisikan ke dalam [nama_kolom2]
201.
2.15.2.2.

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];

210. Gambar 2. 9. Syntax Update

211.Keterangan :
212.nama_us
er

213.214.Nama user atau nama schema ketika


:
login

215.nama_tab
el

216.217.Nama tabel yang terdapat pada user


:
(schema) tersebut

218.nama_ko
lom

219.220.Nama kolom yang akan diisi data pada


:
[nama_tabel]

27

221.Nilai

222.223.Nilai yang
:
[nama_kolom]

224.kondisi_
update

225.226.Sebuah kondisi yang yang menyaring


:
(filter) record-record mana saja yang
akan di update

2.15.2.3.

akan

diisikan

pada

DELETE

227.Delete digunakan untuk menghapus data pada sebuah tabel dalam


user
(schema)
tertentu
berdasarkan
kondisi
tertentu. Syntax Delete dapat dituliskan sebagai berikut :
228.
DELETE [nama_user].
[nama_table]WHERE
229.

[kondisi_delete];

230. Gambar 2. 10. Syntax Delete

231.Keterangan :
232.nama_user

233.234.Nama user atau nama schema ketika login


:

235.nama_tabe
l

236.237.Nama tabel yang terdapat pada user


:
(schema) tersebut

238.kondisi_de
lete

239.240.Sebuah kondisi yang yang menyaring


:
(filter) record-record mana saja yang akan
di delete

241.NB :

28

Jika ingin perubahan disimpan oleh database maka akhiri


setiap syntax DML dengan eksekusi COMMIT;

Jika perubahan tidak ingin disimpan alias ingin dikembalikan


seperti semula maka akhiri dengan eksekusi ROLLBACK;
242.
2.16.
Method Post dan Get
243.Method post dan get adalah dua jenis method yang sering
digunakan pada pada sebuah form html, dimana keduanya mempunya
kelebihan dan kekurangan masing masing tergantung kebutuhan dalam
sebuah proses akan menggunakan yang mana, pada umumnya kedua
method ini diletakkan pada script form seperti dibawah ini :
244.
<form action='target.php' method='post'>
245. Gambar 2.11. Form method Post

246.

<form action='target.php' method='get'>


247. Gambar 2.12. Form method Get

2.16.1. Method Post


248.
Method post tidak akan menampilkan variabel yang
dikirimkan untuk diproses pada halaman selanjutnya dan biasanya
sering digunakan pada form pendaftaran, berikut ini contoh penggunaan
method post :
249.
<form action="prosespost.php" method="post">
250.
<input type="text" name="nama"
placeholder="masukan nama anda">
251.
<input type="text" name="umur"
placeholder="masukan umur anda">
252.
<button type="submit">Kirim Data</button>
253.
</form>
254. Gambar 2.13. Formpost.php

255.Sintax untuk membaca variabel yang dikirimkan melalui method


post :
256.
<?php
257.
$nama=$_POST['nama'];
258.
$umur=$_POST['umur'];
259.
echo "selamat datang
adalah ".$umur;

".$nama."

umur

anda

29

260.

?>
261. Gambar 2.14. Prosespost.php

2.16.2. Method Get


262.
Method get sering digunakan pada form pencarian
dimana variabel yang dikirimkan akan ditampilkan pada url browser
seperti pencarian pada google ,type seperti ini sangat diperlukan untuk
melakukan pagination, berikut ini adalah contoh sintax penggunaan
method get :
263.
<form action="prosesget.php" method="get">
264.
<input
type="text"
name="nama"
placeholder="masukan nama anda">
265.
<input
type="text"
name="umur"
placeholder="masukan umur anda">
266.
<button type="submit">Kirim Data</button>
267.
</form>
268. Gambar 2.15. Formget.php

269.Sintax yang digunakan untuk membaca data yang dikirmkan


melalui method get :
270.
271.
272.
273.
anda
274.

<?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

memanggil fungsi CSS (class) dalam berkas HTML yang telah


didefinisikan. Selain itu juga terdapat komponen-komponen lainnya
yang dibangun menggunakan JavaScript. [11]
285.
Jadi intinya Bootsrap merupakan sebuah framework
yang mempermudah seorang developer dalam mendesain tampilan
website yang diharapkan pengembangan website dapat tercapai dengan
lebih cepat. Bootstrap bisa didownload secara gratis di GitHub
(http://twitter.github.com/bootstrap/index.html).

286.
287.

Gambar 2.17. Logo Bootstrap

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.

Gambar 2.18. Komponen Use case diagram

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>>

Mengidentifikasi hubungan antar dua use case di mana yang


satu memanggil yang lain.
Jika pada beberapa use case terdapat bagian yang memiliki
aktivitas yang sama maka bagian aktivitas tersebut biasanya
dijadikan use case tersendiri dengan relasi dependensi setiap use
case semula ke use case yang baru ini sehingga memudahkan
pemeliharaan.
Digambarkan dengan garis putus-putus bermata panah dengan
notasi <<include>> pada garis.
Arah mata panah sesuai dengan arah pemanggilan.

299.Dependensi <<extend>>
o

Jika pemanggilan memerlukan adanya kondisi tertentu maka berlaku


dependensi <<extend>>.

Note: konsep extend ini berbeda dengan extend dalam Java!

Digambarkan serupa dengan dependensi <<include>> kecuali arah


panah berlawanan.

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

override sifat dari yang lainnya. Penggambaran menggunakan garis


bermata panah kosong dari yang meng-inherit mengarah ke yang diinherit.
2.19.3.
Menyusun diagram use case
2.19.3.1.Langkah langkah :
1. Mengidentifikasi pelaku bisnis
2. Mengidentifikasi use case persyaratan bisnis
3. Membuat diagram model use case
4. Mendokumentasikan naratif use case persyaratan bisnis
2.19.3.2.Panduan praktis
1. Set konteks dari target sistem.
2. Identifikasi semua actor.
3. Identifikasi semua use case.
4. Definisikan asosiasi antara setiap actor dan setiap use case.
5. Evaluasi setiap actor dan setiap use case untuk mendapatkan
kemungkinan perbaikan.
6. Evaluasi setiap use case untuk dependensi <<include>>.
7. Evaluasi setiap use case untuk dependensi <<extend>>.
8. Evaluasi setiap actor dan setiap use case untuk generalisasi.
302.
2.19.3.3.Alur proses
303.
Alur proses dijelaskan melalui sebuah deskripsi use
case (use case description) atau scenario use case.
304.Deskripsi use case berisi:

Nama use case yaitu penamaan use case yang menggunakan


kata kerja
Deskripsi yaitu penjelasan mengenai tujuan use case dan nilai
yang akan didapatkan oleh aktor
Kondisi sebelum (pre-condition) yaitu kondisi-kondisi yang
perlu ada sebelum use case dilakukan.

36

Kondisi sesudah (post-condition) yaitu kondisi-kondisi yang


sudah dipenuhi ketika uses case sudah dilaksanakan

Alur dasar (basic flow) yaitu alur yang menceritakan jika


semua aksi yang dilakukan adalah benar atau proses yang harusnya
terjadi

Alur alternatif (alternatif flow) yaitu alur yang menceritakan


aksi alternatif, yang berbeda dari alur dasar.
2.20.
Flowchart
305.Flowchart
merupakan
gambar
atau
bagan
yang
memperlihatkan urutan dan hubungan antar proses beserta instruksinya.
Gambaran ini dinyatakan dengan symbol. Sedangkan antara proses
digambarkan dengan garis penghubung. Dua macam flowchart yang
menggambarkan proses dengan komputer, yaitu:
2.20.1. System flowchart
306.
Bagan yang memperlihatkan urutan prosedur dan
proses dari beberapa file dalam media tertentu.System flowchart
menggambarkan :
1.
Hubungan antar suatu file dengan file lainnya
2.
Media yang dipakai untuk setiap file
2.20.2. Program flowchart
307.
Menggambarkan urutan logika dari suatu prosedur
pemecahan masalah . Dua jenis metode penggambaran program
flowchart :
Conceptual flowchart, menggambarkan alur pemecahan masalah secara
global.
Detail flowchart, menggambarkan alur pemecahan masalah secara rinci
308.Kaidah-kaidah Umum Pembuatan Flowchart
1. Input,Proses pengolahan dan Output
Start
START, berisi instruksi untuk
persiapan peralatan yang diperlukan
sebelum
menangani
pemecahan
Input
persoalan

Proses
Output

37
End

READ, berisi instruksi kegiatan untuk membaca data dari suatu


peralatan input
PROSES, berisi kegiatan yang berkaitan dengan pemecahan
persoalan sesuai dengan data yang dibaca
WRITE, berisi instruksi untuk merekan hasil kegiatan ke peralatan
output
END, mengakhiri kegiatan pengolahan
2.20.3. Simbol simbol Flowchart
309.
Tabel 2.8. Simbol-simbol flowchart

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.

Gambar 3.1. Bagan flowchart pada Android

41

3.1.2.

Bagan flowchart sistem pada web

357.

358. Gambar 3.2. Bagan flowchart pada Web Storing database

42

359.
360. Gambar 3.3. Bagan flowchart pada Web Admin

43

361.

362. Gambar 3. 4. Bagan Flowchart pada Web Admin Location

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.

377. Gambar 3. 7. Bagan Flowchart pada Web Storing Location

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

4.1.1. Bagan use case diagram

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.

387. Gambar 3.11. Letak hasil ekstrak ADT

388.

389.

390. Gambar 3.12.Tampilan saat eclipse ADT dijalankan

51

3.3.2.2. Membuat project baru


391.
Setiap membuat aplikasi baru juga akan membuat
project baru. Dalam satu project terdiri atas beberapa package. Berikut
ini langkah-langkah untuk membuat project baru :
1. Klik File > New > Android Application Project. Anda akan
dihadapkan dengan dialog box seperti Gambar 19
2. Isilah field Application name, Project name, Package Name, dan
lainnya seperti Gambar 20, lalu klik Next sebanyak empat kali dan
diakhiri dengan Finish.
3. Jalankan aplikasi dengan cara klik kanan Project > Run as
>Android Application, hasilnya akan berjalan seperti Gambar 21.

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

412.Tampilan menu utama driver merupakan


halaman beranda ketika username dan
password user benar / correct . Tampilan
untuk user pada halaman ini ada tiga yaitu
Scan QR code, Report dan Logout .
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
Gambar 3.16. Menu Utama
424.
3.4.3. Proses Scan QR Code
425. Tampilan setelah memilih
Scan QR Code akan tampil
kamera , kemudian melakukan
scanning dengan batang QR
code .
426.
Berikut ini proses
scanning yang diambil dari jarak
15cm.
427.
428.
429. Tabel 3.1. Hasil scanning berdasarkan jenis
kamera

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

Gambar 3.17. Proses scan QR Code

3.4.4.

444.

Hasil Scan QR Code


445.
Tampilan hasil
scanning tersebut dapat dilihat pada
gambar disamping . Hasilnya akan
menerjemahkan batang QR Code pada
Text Digit SPJ . Dan akan mencetak
Lokasi scan saat itu berupa koordinat
Latitude dan longitude serta waktu
berupa Tanggal (dd-mm-yyyy) , Jam ,
menit dan detik . Dan juga tersedia
pilihan button yaitu button cek dan
scan QR Code lagi .
446.
447.
448.
449.
450.

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.

Sedangkan jika memilih Cek maka


data digit SPJ tersebut akan dihubungkan
dengan data yang ada pada database . cek
apakah data tersedia dalam database atau
tidak .

456.
457.
458.
459.
460.

Gambar 3.19. Konfirmasi scan 1 kali

3.4.5.2.

Konfirmasi scan lebih dari 1


kali
461.Jika user login dengan akun yang sama dan
melakukan scan kode QR digit SPJ yang
sama dalam satu waktu maka muncul
peringatan atau alert bahwa digit SPJ sudah
di scan dan tidak dapat melakukan scan data
lagi .
462. Pada tampilan ini hanya ada pilihan
OK yang akan kembali pada layar untuk scan
data kode QR digit SPJ yang lain
463.
464.
465.
466.
467.
468.
Gambar 3.20. Konfirmasi scan lebih dari 1 kali

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.

Gambar 3.23. Menu login Admin

3.4.9. Menu Utama Admin


509.
Tampilan disamping akan muncul
ketika telah berhasil login sesuai dengan
email dan password admin yang ada pada
database
510.
Terdapat 3 pilihan yaitu melihat
user, menambah user dan logout .
511.
512.
513.
514.
515.
516.
517.
518.
519.
Gambar 3. 24. Menu Urama 520.
Admin
521.
3.4.10. Menu Lihat User
522.Tampilan pada gambar disamping merupakan tampilan untuk
melihat seluruh user yang telah didaftarkan .

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

3.4.12. Dashboard Web server Generate QR Code

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

555.Pertama kali admin memasukkan username dan password yang


telah didaftarkan untuk masuk atau log in pada halaman Storing
database .
Ketika username dan password yang dimasukkan salah maka
terjadi error pada halaman admin.php?err=1 :

556.
557. Gambar 3.29. Incorrect Login

Setelah login berhasil maka tampilan halaman pada Admin yaitu :

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

4.4.13.1. Menu Backup

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.

579.Account admin yang telah terdaftar seperti tampilan Gambar 3.35


dapat dirubah dan dihapus .
580.
4.4.13.3. Menu Location
581.Fasilitas ini digunakan untuk menampilkan hasil scanning QR Code
pada smartphone android berupa id SPJ (10 digit), koordinat driver,
koordinat Toko, waktu dan status verifikasi .

582.
583. Gambar 3.36.Menu Location

4.4.13.4. Create status


584.Menambah, mengedit dan menghapus status :

65

585.Fasilitas untuk merubah status verifikasi yang dimasukkan pada


ComboBox saat Backup data .

586.
587. Gambar 3.37. Create Status awal

Untuk menambahkan status verifikasi , ketikkan nama status yang


baru pada textfield diatas lalu submit . Tampilannya sebagai berikut :

588.
589. Gambar 3.38. Add new status
590.

Setelah menambahkan nama status yang baru maka akan


ditampilkan pada kolom status . Jika ingin merubah nama status
dan menghapusnya dapat dilihat pada kolom Config sebelah
kolom Nama Status .

66

591.

592.
593. Gambar 3.39. Hasil create status

Jika ingin menghapus nama status verifikasi klik icon


.
Sehingga muncul dialogbox untuk konfirmasi yakin menghapus
atau tidak .

67

594.

595. Gambar 3.40. Delete status

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

Untuk menambahkan nama sidebar dengan memasukkan nama


sidebar dan klik Submit. Maka secara otomatis link url ditambahkan
pada kolom dan pada Menu .

599.
600. Gambar 3.42. Hasil create sidebar

69

4.4.14. Menu Report


601.Fasilitas ini dapat digunakan user dan admin untuk
melihat/monitoring record seluruh data yang terdapat pada database
.

602.
603. Gambar 3. 43. Menu report

4.4.15. Menu Storing Location


604.
Fasilitas ini digunakan untuk mendapatkan koordinat
lokasi pada Map dengan menandai atau marker lokasi yang ingin
diketahui koordinat longitude dan latitude nya . Sehingga dengan
fasilitas ini driver dapat mengetahui posisi Toko tujuan dengan
memasukkan nama Toko pada textfield Toko .
Isikan nama Toko

605.
606. Gambar 3.44. Storing Location

70

Save To The Server

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

4.4.16. Driving Direction


612.
Halaman ini terdapat pada Storing Location terletak di
sebelah tab Home . halaman Driving Direction ini digunakan untuk
menghitung jarak dan rute yang ditempuh dari lokasi asal yang telah di
marker menuju lokasi tujuan .

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

Jika memilih Set As Origin maka secara otomatis mengisi alamat


lokasi yang ditandai tersebut pada textfield Origin.

72

Origin Location

618.
619. Gambar 3 49. Origin Location

Jika memilih Set As Destination maka textfield Destination


juga akan diisi secara otomatis sesuai dengan lokasi yang
ditandai .
Destination 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

4.4.17. Map Quest Direction


626.Halaman ini digunakan untuk menampilkan kondisi lalu lintas pada
lokasi yang ditampilkan pada map .

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

704.27 - Memperbaiki dan memperbarui program scan 705.


Agu
pada Android
stus - Menambahkan rute perjalanan yang ditempuh
2014
driver ke toko ( dari lokasi asal ke tujuan)
pada Storing location Web
- Memperbaiki error pada tabel report Android
dan membuat flowchart sistem (Android dan
Web)
706.28 - All menyempurnakan program aplikasi pada 707.
Agu
android dan web
stus - Presentasi Final atau presentasi akhir project ke
2014
pembimbing .
708.29 - Selesai Kerja Praktek
709.
Agu
stus
2014
710.
711.
712.
713.Lampiran 2 : Program pada Android
714.
715.Program Layout pada Android
716.Listing program Activity_decoder.xml untuk scan QR Code
717.
<RelativeLayout
718.
xmlns:android="http://schemas.android.com/apk/res/
719.
android"
720.
xmlns:tools="http://schemas.android.com/tools"
721.
android:layout_width="match_parent"
722.
android:layout_height="match_parent"
723.
724. tools:context=".DecoderActivity"
725. >
726.
727. <com.scan.QRCodeReaderView
728. android:id="@+id/qrdecoderview"
729. android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
80

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.

Password TextField -->


<EditText
android:id="@+id/loginPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/_pass_input_hint"
android:password="true" />
<!-- Error message -->
<TextView android:id="@+id/login_error"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#e30000"
android:padding="10dip"
android:textStyle="bold"/>
<!-- Login Button -->
<Button
android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="Login" />
<!-- Link to Registration Screen -->
<!-- Link to hal admin Screen -->
<Button
android:id="@+id/btnLinkToAdminScreen"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:background="@null"
android:text="Login Administrator"
android:textColor="#21dbd4"
android:textStyle="bold" />

</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.

Email Label -->


<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Email" />
<!-- Email TextField -->
<EditText
android:id="@+id/registerEmail"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dip"
android:text="Password" />
<!-- Password TextField -->
<EditText
android:id="@+id/registerPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true" />

<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;

public class Scan extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.report);
}
}

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.

Importing all assets like buttons, text fields


inputEmail = (EditText) findViewById(R.id.loginEmailAdmin);
inputPassword = (EditText) findViewById(R.id.loginPasswordAdmin);
btnLogin = (Button) findViewById(R.id.btnLogin_Admin);
loginErrorMsg = (TextView) findViewById(R.id.login_error_Admin); 106

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 {

// check for request method


if(method == "POST"){

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.
}

protected String doInBackground(String... args) {


List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url_all_products, "GET",
params);
Log.d("All Products: ", json.toString());
121
try { int success = json.getInt(TAG_SUCCESS);
if (success == 1) {

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.

Dokumentasi 1.1. Lobby Gedung Utama PT.SEMEN INDONESIA


(Persero) Tbk

2252.

123

2253.
2254.

Dokumentasi 1.2. Ruangan Divisi Tim Pengembangan ICT

2255.

Tampak Depan
2256.

2257.
2258.

Tampak Samping

2259.

124

2260.
2261.

Dokumentasi 1.3. Suasana Kerja

2262.
2263.

2264.
2265.

Dokumentasi 1.4. Presentasi Project

125

2266.
2267.

Dokumentasi 1. 5. Foto bersama mahasiswa kerja praktek dengan


pegawai di ruangan kerja

2268.
2269.
2270.
2271.
2272.
2273.
2274.
2275.
2276.
2277.
2278.
2279.

Lampiran 4: Biodata Penulis

Nama
NamaPanggilan

: Suryo Aji Waskitho


: Suryo

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.

Lampiran 4: Biodata Penulis

2341.
2342.
2343.
2344.
2345.
2346.
2347.
2348.

Nama

: Muhammad Herwindra Berlian


Nama Panggilan : Indra
Jenis Kelamin
: Laki - laki
TTL
: Madiun, 26 Februari 1994
Kelas
: 2 D4 Teknik Komputer B
NRP
: 2210121035
Kebangsaan
: Indonesia
Alamat
: Jl. Anusapati No. 109 Sawotratap Kec.
Gedangan
Sidoarjo 61254
E-Mail
: herwin@windowslive.com
Handphone
: 081939115544

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

You might also like