• Tidak ada hasil yang ditemukan

Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android (Studi Kasus PT. Mutiara Mitra Indonesia)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android (Studi Kasus PT. Mutiara Mitra Indonesia)"

Copied!
89
0
0

Teks penuh

(1)

i

Aplikasi Mekanikal dan Elektrikal Estimator Berbasis

Android

(Studi Kasus PT. Mutiara Mitra Indonesia)

TUGAS AKHIR

Oleh :

Ageng Ahmad Mujtahid 3311211077

Disusun untuk memenuhi syarat kelulusan Program Diploma III

PROGRAM STUDI TEKNIK INFORMATIKA POLITEKNIK NEGERI BATAM

BATAM 2015

(2)

ii

HALAMAN PENGESAHAN

Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android

(Studi Kasus PT. Mutiara Mitra Indonesia)

Oleh :

Ageng Ahmad Mujtahid 3311211077

Tugas Akhir ini telah diterima dan disahkan sebagai persyaratan untuk memperoleh gelar

Ahli Madya di

PROGRAM STUDI DIPLOMA 3 TEKNIK INFORMATIKA POLITEKNIK NEGERI BATAM

Batam, 09 Juli 2015 Disetujui oleh;

Pembimbing,

Sudra Irawan, M.Sc NIK. 113110

(3)

iii

HALAMAN PERNYATAAN

Dengan ini, saya:

NIM : Ageng Ahmad Mujtahid Nama : 3311211077

adalah mahasiswa Teknik Informatika Politeknik Batam yang menyatakan bahwa tugas akhir dengan judul:

Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android

(Studi Kasus PT. Mutiara Mitra Indonesia)

disusun dengan:

1. tidak melakukan plagiat terhadap naskah karya orang lain 2. tidak melakukan pemalsuan data

3. tidak menggunakan karya orang lain tanpa menyebut sumber asli atau tanpa ijin pemilik

Jika kemudian terbukti terjadi pelanggaran terhadap pernyataan di atas, maka saya bersedia menerima sanksi apapun termasuk pencabutan gelar akademik.

Lembar pernyataan ini juga memberikan hak kepada Politeknik Batam untuk mempergunakan, mendistribusikan ataupun memproduksi ulang seluruh hasil Tugas Akhir ini.

Batam, 09 Juli 2015

Ageng Ahmad Mujtahid 3311211077

(4)

iv

PERSEMBAHAN

Dengan rasa yang penuh bangga Tugas Akhir ini kupersembahkan kepada:

Orang tuaku tercinta Abi Muhammad Jamil dan Umi Nurmilawati yang selama ini telah mendidik, menyemangati dan memotivasi sehingga saya bisa seperti saat sekarang ini.

Kakek dan Nenek saya yang selalu mensupport dan memberikan semangat selama saya melakukan perkuliahan.

Kemudian saya persembahkan juga tugas akhir ini untuk Anisa Fajar Utami partner yang senantiasa membantu dan memeberikan semangat kepada saya.

Dan tidak lupa juga Adek saya Nawar dan Arif lalu Ibu dan Paman saya yang selalu menyemangati saya agar cepat menyelesaikan perkuliahan.

Semoga seterusnya saya dapat menjadi kebanggan kalian. Salam sayang yang terdalam buat kalian.

Yang Kalian banggakan

(5)

v

KATA PENGANTAR

Puji syukur penulis ucapkan kehadirat Allah SWT yang telah melimpahkan rahmat dan hidayah-Nya, sehingga dapat menyelesaikan penyusunan Laporan Tugas Akhir sebagai persyaratan untuk memperoleh gelar ahli madya dari Politeknik Negeri Batam.

Penulis menyadari bahwa dalam penyusunan Laporan Tugas Akhir ini tidak lepas dari dukungan berbagai pihak, oleh karena itu pada kesempatan ini penulis menyampaikan terima kasih kepada :

1. Allah SWT yang telah memberikan kesehatan, kemudahan dan kelancaran selama proses penyelesaian Magang Industri.

2. Kedua Orang Tua dan Keluarga yang selalu memberikan dukungan doa, dorongan semangat dan motifasi yang sangat berharga kepada penulis. 3. Bapak Dr. Priyono Eko Sanyoto, selaku Direktur Utama Politeknik Negeri

Batam.

4. Bapak Sudra Irawan, M.Sc, selaku Pembimbing I Tugas Akhir yang telah meluangkan waktu untuk membimbing dan mengarahkan penulis dalam pembuatan Aplikasi dan Laporan Tugas Akhir ini.

5. Bapak Supardianto, S.ST, selaku Pembimbing II Tugas Akhir sekaligus Wali Dosen.

6. Bapak Dwi Ely Kurniawan, M.Kom, selaku Dosen Pengampu mata kuliah Tugas Akhir sekaligus Dosen Penguji saat seminar Tugas Akhir yang banyak memberikan pengarahan perbaikan.

7. Seluruh dosen Teknik Informatika, staff dan karyawan Politeknik Negeri Batam yang telah membatu dari awal hingga proses pengerjaan Tugas Akhir selesai.

8. Anisa Fajar Utami yang selalu memberikan masukan, dorongan dan motivasi kepada penulis selama pembuatan Aplikasi dan Laporan Tugas Akhir ini selesai.

(6)

vi

9. Rekan-rekan seperjuangan serta semua pihak yang telah membantu penulis dalam penyusunan laporan tugas akhir.

Penulis menyadari bahwa penyusunan laporan ini tidak lepas dari kesalahan dan masih jauh dari kesempurnaan. Oleh karena itu kritik dan saran yang membangun sangat diharapkan dari pembaca. Harapan penulis, semoga laporan yang memuat pengalaman dan pengetahuan dari aplikasi Tugas Akhir ini dapat bermanfaat bagi pembaca.

Batam, 09 Juli 2015

(7)

vii

ABSTRAK

Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android (Studi Kasus PT. Mutiara Mitra Indonesia)

Indonesia memiliki begitu banyak bangunan. Salah satu instansi yang berjasa atas keberadaannya bangunan adalah kontraktor. PT. Mutiara Mitra Indonesia adalah salah satu kontraktor yang berdomisili di batam. Untuk mendapatkan proyek, PT. Mutiara Mitra Indonesia harus melakukan Estimasi Proyek untuk melakukan penawaran terhadap client. Estimasi Proyek adalah melakukan perhitungan perkiraan harga material keseluruhan dari suatu proyek. Agar mempermudah karyawan PT. Mutiara Mitra Indonesia melakukan Estimasi dimanapun mereka berada. Penulis membuat Aplikasi Mekanikal dan Elektrikal Berbasis Android, Karenakan Android adalah sistem operasi open source yang banyak di gunakan untuk smartphone dan tablet. Sehingga karyawan PT. Mutiara Mitra Indonesia dapat mendata harga material dan membuat surat penawaran dari aplikasi tersebut.

(8)

viii

ABSTRACT

Mechanical and Electrical Estimator Application Based Android (Case Study PT. Mutiara Mitra Indonesia)

Indonesia has so many buildings. One of the agencies whose meritorious over its existence buildings is a contractor. PT. Mutiara Mitra Indonesia is one of the contractors reside in batam. To get the project, PT. Mutiara Mitra Indonesia must estimates project to do his bidding against client. Project estimation is performing an approximate calculation material prices the sum total of a project. To ease employees of PT. Mutiara Mitra Indonesia estimates wherever they are. The author create a mechanical and electrical estimator application based on android , Because android is open source operating system much in use to smartphone and tablet. So that employees of PT. Mutiara Mitra Indonesia can record material prices and make a bid from the application.

(9)

ix

DAFTAR ISI

HALAMAN PENGESAHAN ... ii

HALAMAN PERNYATAAN ... iii

PERSEMBAHAN ... iv

KATA PENGANTAR ... v

ABSTRAK ... vii

ABSTRACT ... viii

DAFTAR ISI ... ix

DAFTAR GAMBAR ... xii

DAFTAR TABEL ... xiii

BAB I PENDAHULUAN ... 1 1.1 Latar Belakang ... 1 1.2 Rumusan Masalah... 2 1.3 Batasan Masalah ... 2 1.4 Tujuan ... 2 1.5 Sistematika Penulisan ... 3

BAB II LANDASAN TEORI ... 4

2.1 Estimasi ... 4

2.2 Proyek Mekanikal dan Elektrikal ... 4

2.3 Android ... 4 2.3 Android Studio ... 5 2.4 PHP (Hypertext Preprocessor) ... 5 2.5 MySQL ... 6 2.6 Java ... 6 2.7 Bluestacks ... 7 2.8 iReport ... 7

BAB III ANALISIS DAN PERANCANGAN ... 9

3.1 Deskripsi Umum Sistem ... 9

3.2 Analisis Kebutuhan Sistem ... 9

Analisis Kebutuhan Perangkat Keras (Hardware) ... 10

Analisis Kebutuhan Perangkat Lunak (Software) ... 10

3.3 Analisis Kebutuhan Fungsional ... 11

(10)

x

3.5 Diagram Use Case ... 11

3.6 Skenario Use Case ... 11

Skenario Use Case Melakukan Register ... 11

Skenario Use Case Melakukan Login ... 12

Skenario Use Case Menambah Data Material ... 12

Skenario Use Case Melakukan Estimate ... 13

Skenario Use Case Mencari Harga Material ... 13

Skenario Use Case Melakukan Recovery Password ... 14

3.7 Diagram Sequence ... 14

Diagram Sequence Melakukan Register ... 14

Diagram Sequence Melakukan Login ... 15

Diagram Sequence Menambah Data Material... 15

Diagram Sequence Melakukan Estimate ... 16

Diagram Sequence Mencari Harga Material ... 16

Diagram Sequence Melakukan Recovery Password ... 17

3.8 Diagram Class ... 17

3.9 Rancangan Antarmuka Aplikasi ... 18

Rancangan Antarmuka Halaman Login ... 18

Rancangan Antarmuka Halaman Register ... 19

Rancangan Antarmuka Halaman Utama ... 19

Rancangan Antarmuka Halaman Form Estimate ... 19

Rancangan Antarmuka Halaman Recovery Password ... 20

Rancangan Antarmuka Halaman Material ... 20

3.10 Rancangan Basis Data ... 21

Entity Relationship Diagram ... 21

Struktur Tabel... 22

BAB IV IMPLEMENTASI DAN PENGUJIAN ... 24

4.1 Implementasi Tampilan Antarmuka ... 24

4.1.1 Tampilan Halaman Dashboard ... 24

4.1.2 Tampilan Halaman Login ... 26

(11)

xi

4.1.4 Tampilan Halaman Recovery Password ... 36

4.1.5 Tampilan Halaman Utama ... 41

4.1.6 Tampilan Form Estimate ... 44

4.1.7 Tampilan Halaman Estimate ... 49

4.1.8 Tampilan Form Update Estimate ... 55

4.1.9 Tampilan Halaman Material ... 59

4.2 Hasil Pengujian ... 70

BAB V KESIMPULAN DAN SARAN ... 73

5.1 Kesimpulan ... 73

5.2 Saran ... 73

(12)

xii

DAFTAR GAMBAR

Gambar 3. 1 Deskripsi Umum Sistem ... 9

Gambar 3. 2 Diagram Use Case ... 11

Gambar 3. 3 Sequence Diagram Melakukan Register ... 15

Gambar 3. 4 Diagram Sequence Melakukan Login ... 15

Gambar 3. 5 Diagram Sequence Menambah Data Material ... 16

Gambar 3. 6 Diagram Sequence Melakukan Estmate ... 16

Gambar 3. 7 Diagram Sequence Mencari Harga Material ... 17

Gambar 3. 8 Diagram Sequence Melakukan Recovery Password ... 17

Gambar 3. 9 Diagram Class ... 18

Gambar 3. 10 Rancangan Antarmuka Halaman Login ... 18

Gambar 3. 11 Rancangan Antarmuka Halaman Register ... 19

Gambar 3. 12 Rancangan Antarmuka Halaman Utama ... 19

Gambar 3. 13 Rancangan Antarmuka Halaman Form Estimate ... 20

Gambar 3. 14 Rancangan Antarmuka Halaman Recovery Password ... 20

Gambar 3. 15 Rancangan Antarmuka Halaman Material ... 21

Gambar 3. 16 Entity Relationship Diagram ... 22

Gambar 4. 1 Tampilan Halaman Dashboard ... 24

Gambar 4. 2 Tampilan Halaman Login ... 27

Gambar 4. 3 Tampilan Halaman Register ... 32

Gambar 4. 4 Tampilan Halaman Recovery Password ... 36

Gambar 4. 5 Tampilan Halaman Utama ... 42

Gambar 4. 6 Tampilan Halaman Form Estimate ... 45

Gambar 4. 7 Tampilan Halaman Estimate ... 49

Gambar 4. 8 Tampilan Form Update Estimate ... 55

Gambar 4. 9 Tampilan Halaman Material... 59

(13)

xiii

DAFTAR TABEL

Tabel 3. 1 Spesifikasi Perangkat Keras Pembuatan Aplikasi ... 10

Tabel 3. 2 Spesifikasi Perangkat Keras Penerapan Aplikasi ... 10

Tabel 3. 3 Analisis Kebutuhan Perangkat Lunak ... 10

Tabel 3. 4 Skenario Use Case Melakukan Register ... 11

Tabel 3. 5 Skenario Use Case Melakukan Login ... 12

Tabel 3. 6 Skenario Use Case Menambah Data Material ... 12

Tabel 3. 7 Skenario Use Case Melakukan Estimate ... 13

Tabel 3. 8 Skenario Use Case Mencari Harga Material ... 13

Tabel 3. 9 Skenario Use Case Melakukan Recovery Password ... 14

Tabel 3. 10 Struktur Tabel User ... 22

Tabel 3. 11 Struktur Tabel Estimasi ... 23

Tabel 3. 12 Struktur Tabel Material ... 23

Tabel 4. 1 Deskripsi Tampilan Halaman Dashboard... 24

Tabel 4. 2 Implementasi Tampilan Halaman Dashboard ... 25

Tabel 4. 3 Deskripsi Tampilan Halaman Login ... 27

Tabel 4. 4 Implementasi Tampilan Halaman Login ... 28

Tabel 4. 5 Deskripsi Tampilan Halaman Register ... 32

Tabel 4. 6 Implementasi Tampilan Halaman Register ... 33

Tabel 4. 7 Deskripsi Tampilan Halaman Recovery Password ... 36

Tabel 4. 8 Implementasi Tampilan Halaman Recovery Password ... 37

Tabel 4. 9 Deskripsi Tampilan Halaman Utama ... 42

Tabel 4. 10 Implementasi Tampilan Halaman Utama ... 42

Tabel 4. 11 Deskripsi Tampilan Form Estimate ... 45

Tabel 4. 12 Implementasi Tampilan Form Estimate ... 45

Tabel 4. 13 Deskripsi Tampilan Halaman Estimate ... 49

Tabel 4. 14 Implementasi Tampilan Halaman Estimate ... 50

Tabel 4. 15 Deskripsi Tampilan Form Update Estimate ... 56

Tabel 4. 16 Implementasi Tampilan Form Update Estimate ... 56

(14)

xiv

Tabel 4. 18 Implementasi Tampilan Halaman Material... 60 Tabel 4. 19 Tabel Hasil Pengujian ... 70

(15)

1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dalam dunia konstruksi, melakukan estimasi total harga proyek sangat menentukan suatu perusahaan mendapatkan proyek atau tidak. Pengestimasian yang lambat membuat perusahaan tidak mendapatkan proyek karena perusahaan lain memasukkan penawaran harga terlebih dahulu dengan pengestimasiannya yang lebih cepat. Estimasi adalah salah satu proses utama dalam proyek konstruksi untuk mengetahui jumlah uang yang harus disediakan oleh client sebagai bayaran kepada kontraktor. Pada umumnya, sebuah proyek konstruksi membutuhkan biaya yang cukup besar. Ketidaktepatan yang terjadi dalam penyediaannya akan berakibat kurang baik pada pihak-pihak yang terlibat di dalamnya. Bagi pemenang tender, hasil estimasi biaya diperlukan sebagai pegangan untuk melakukan penagihan pembayaran kepada client apabila pekerjaan telah terselesaikan.

PT. Mutiara Mitra Indonesia (PT. MMI) merupakan perusahaan yang bergerak di bidang mekanikal, elektrikal dan jaringan untuk mendukung kegiatan di bidang pembangunan suatu konstruksi. Untuk mendapatkan pekerjaan, direktur dan pemberi pekerjaan selalu melakukan pembicaraan di luar perusahaan. Direktur meminta waktu kepada pemberi pekerjaan untuk melakukan estimasi harga terhadap proyek tersebut. Dalam perjalanannya, estimasi total biaya proyek yang dilakukan PT. MMI masih melakukan input manual dengan menggunakan aplikasi Microsoft Excel. Pengestimasian dengan menggunakan Microsoft Excel membutuhkan waktu yang lama karena harus menginput harga manual dari setiap upah dan material yang dibutuhkan.

Untuk zaman yang serba instan ini, seharusnya pengestimasian total harga proyek dapat memanfaatkan media elektronik sebagai alternatif secara langsung tanpa batasan waktu dan tempat. Jika membahas alat komukasi pada zaman ini maka akan terlintas kata android, yaitu sistem operasi yang digunakan pada smartphone

(16)

2

maupun tablet pc. Analisis Horace H. Dediu dalam blognya asymco.com menyebutkan bahwa populasi android telah lebih mencapai 1 milliar penggunanya (Zaiyuna, 2014).

Permasalahan yang terdapat dalam pengestimasian total harga proyek tersebut dapat diselesaikan dengan membuat aplikasi estimator pada smartphone android. Dikarenakan PT. MMI bergerak di bidang mekanikal dan elektrikal, maka diangkat judul Tugas Akhir yaitu Aplikasi Mekanikal dan Elektrikal Estimator Berbasis Android. Aplikasi ini akan mempermudah karyawan dalam melakukan estimasi total harga proyek.

1.2 Rumusan Masalah

Dari latar belakang yang telah dijelaskan, adapun rumusan masalahnya adalah:

1. Bagaimana membuat dan merancang aplikasi mekanikal dan elektrikal

estimator berbasis android ?

2. Bagaimana membuat dan merancang aplikasi yang dapat melakukan menambah data material ?

3. Bagaimana membuat surat penawaran sebagai output dari hasil estimasi?

1.3 Batasan Masalah

Batasan masalahnya adalah:

1. Aplikasi hanya memberikan harga sesuai detail yang diberikan oleh pengguna.

2. Implementasi pada jaringan lokal.

1.4 Tujuan

Adapun tujuan dari Tugas Akhir ini adalah:

1. Membangun aplikasi mekanikal dan elektrikal estimator berbasis android. 2. Membangun database yang berfungsi untuk menambah data material. 3. Menghasilkan surat penawaran sebagai output dari hasil estimasi.

(17)

3

1.5 Sistematika Penulisan

Sistematika penulisan dimaksudkan untuk memberikan gambaran secara lebih terperinci mengenai tiap bab yang ada pada tugas akhir. Sistematika penulisan laporan tugas akhir ini terdiri dari:

Bab I Pendahuluan

Berisi tentang Latar Belakang, Rumusan Masalah, Batasan Masalah, Tujuan Penulisan dan Sistematika Penulisan Laporan dari Tugas Akhir yang dilakukan.

Bab II Landasan Teori

Berisi tentang teori-teori yang berhubungan dengan penelitian dan materi yang digunakan sebagai pendukung selama pengerjaan Tugas Akhir seperti: Estimasi, Proyek Mekanikal dan Elektrikal, Android, Android Studio, PHP (Hypertext

Preprocessor), MySQL, Java, Bluestacks dan iReport.

Bab III Analisis dan Perancangan

Berisi analisis pembuatan aplikasi dan perancangan interface sistem.

Bab IV Hasil dan Pembahasan

Membahas implementasi rancangan sistem yang dibuat, uji hasil implementasi sistem serta hasil analisis pengujian sistem.

Bab V Kesimpulan dan Saran

Berisi kesimpulan dari hasil yang didapat dari pengerjaan Tugas Akhir dan memberikan saran-saran yang bermanfaat untuk pengembangan aplikasi dimasa akan datang.

(18)

4

BAB II

LANDASAN TEORI

2.1 Estimasi

Menurut Kamus Besar Bahasa Indonesia, Estimasi adalah perkiraan ataupenilaian dan di sebut juga sebagai pendapat. Estimasi sering digunakan dalam pembuatan penawaran untuk mendapatkan pekerjaan. Estimasi yang digunakan dalam penawaran berupa perhitungan total harga pekerjaan tersebut, yang di dapatkan dari penjumlahan setiap upah pekerjaan dan harga material yang di butuhkan dalam pekerjaan tersebut

2.2 Proyek Mekanikal dan Elektrikal

Menurut Wahyudin (2013), Proyek adalah suatu kegiatan mengkoordinasikan segala sesuatu dengan menggunakan perpaduan sumber daya manusia, teknik, administratif, keuangan untuk mencapai tujuan yang jelas dan dalam periode waktu tertentu.

Mekanikal adalah sebuah prinsip ilmu yang mencakup tentang hal-hal mekanis. Yang intinya memerlukan prinsip mekanis dalam penerapannya. Elektrikal adalah sebuah prinsip ilmu yang mencakup tentang hal-halyang memerlukan tenaga listrik dalam penerapannya. Jadi, Mekanikal dan Elektrikal adalah proyek pendukung bangunan yang memerlukan sebuah sistem mekanis dan tenaga listrik (Mistra, 2008:84).

2.3 Android

Menurut Supardi (2011), Android merupakan sistem operasiperangkat mobile berbasis linux yang mencakup sistem operasi, protokoldanaplikasi. Beberapa pengertian lain Android, yaitu :

a. Merupakan platform terbuka (open source) bagi para pengembang (Programmer) untuk membuat aplikasi.

(19)

5

c. Bukan bahasa pemograman, akan tetapi hanya menyediakan lingkungan hidup atau run time environment yang di sebut DVM (Dalvik

VirtualMachine) yang telah dioptimasi untuk perankat dengan sistem

memoriyang kecil.

Android memiliki banyak versi diantaranya adalah Android Versi 1.1, Android Cupcake, Android Donut, Android Éclair, Android Frozen Yoghurt, Android Gingerbread, Android Honeycomb, Android Ice Cream, Android Jelly Bean dan yang terakhir adalah Android Kitkat. Pembaruan antarmuka versi inimemiliki bar status dan navigasi transparan pada layar depan, mesin virtual eksperimental baru, ART serta dukungan Bluetooth message access profile (MAP).

2.3 Android Studio

Android Studio merupakan sebuah IDE (Integrated Development Environment) yang dibuat oleh Google dan dirancang khusus untuk developers androiddalam mengembangkan aplikasi berbasis android berdasarkan IntelliJ IDEA. Android Studio menawarkan :

a. Sistem pembangun fleksibel berbasis Gradle. b. Berbagai jenis dan beberapa generasi berkas APK.

c. Tamplate yang biasa digunakan untuk membangun aplikasi umum.

d. Layout Editor yang di dukung dengan drag dan drop dalam merubah tema. e. Alat untuk melihat kinerja, kegunaan, kesesuaian versi dan masalah

lainnya.

f. ProGuard dan app-signing capabilities.

g. Built-in yang mendukung untuk penggunaan Google Cloud Platform, sehingga mudah untuk mengintegrasikan Google Cloud Messaging dan

App Engine.

2.4 PHP (Hypertext Preprocessor)

Menurut Madcoms (2009), PHP adalah salah satu bahasa pemrograman yang berjalan di dalam server dan mampu membuat web menjadi interaktif dan dinamis. PHP dapat mengolah data dari komputer client dan dari komputer server,

(20)

6

sehingga mudah disajikan dalam browser. Program PHP ditulis dalam file plain text (teks biasa) yang berekstensi (.php).

PHP ditulis (diciptakan) oleh Rasmus Lerdorf, seorang software engineer asal Greenland sekitar tahun 1995. Pada awalnya, PHP digunakan Rasmus hanya sebagai pencatat jumlah pengunjung pada website pribadinya. Karena itu bahasa tersebut dinamakan Personal Home Page (PHP) Tools. Tetapi, karena perkembangan yang cukup disukai oleh komunitas nya, maka beliau pun merilis bahasa PHP tersebut ke publik dengan lisensi open-source. Saat ini, PHP adalah server-side scripting yang paling banyak digunakan di website-website di seluruh dunia, dengan versi sudah mencapai versi 5 dan statistiknya terus bertambah (Yuliano,2012).

2.5 MySQL

MySQL adalah sebuah program database server yang mampu menerima dan mengirimkan datanya dengan sangat cepat, multi user, serta menggunakan perintah standar SQL (Structured Query Language). MySQL adalah sebuah program database, sedangkan SQL adalah bahasa perintah (Query) dalam program MySQL (Nugroho, 2005).

2.6 Java

Java adalah bahasa pemograman yang berorientaasi objek (OOP) dan dapat dijalankan pada berbagai platform sistem operasi. Pertama rilis, Java disebut JDK (Java Development Kit), hingga JDK versi 2 atau dikenal dengan Java 2, dibagi menjadi 3 edisi yaitu, J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise

Edition), dan J2ME (Java 2 Micro Edition).

a. J2SE merupakan Edisi atau teknologi untuk pemrograman desktop atau apliasi layar (console). J2SE juga merupakan perangkat lunak dasar yang harus dipasang sebelum dapat menggunakan J2EE dan J2ME.

b. J2EE merupakan edisi atau teknologi untuk pemrograman enterprise, seperti pemrograman database, JSP, Beans, dan lain-lainnya.

(21)

7

c. J2ME merupakan edisi atau teknologi untuk pemrograman

mobile/handphone dan peralatan kecil (small device).

Setelah Java terpasang, di dalam sistem komputer terdapat JVM (Java Virtual

Machine). Di dalam JVM tersebut terdapat JRE (Java Runtime Environment).

Program yang diketik dengan bahasa java memiliki ekstensi .java, akan menghasilkan file .class setelah terkompilasi. File kelas (.class) dapat dijalankan dengan memanfaatkan JRE.

2.7 Bluestacks

BlueStacks adalah aplikasi yang bisa di gunakan pada sistem operasi Windows dan Mac sebagai emulator untuk android OS. Bluestacks didirikan pada tahun 2011 untuk mendorong batas-batas dari ekosistem mobile. Saat ini lebih dari 85 juta orang di seluruh dunia menggunakan App Player ini untuk menjalankan aplikasi produk mobile apps dan permainan di layar yang lebih besar dengan menggunakan teknologi Layercake. Di sisi advertiser, memiliki platform yang unik yang menggabungkan saluran iklan digital dan tradisional untuk memaksimalkan baik dengan cara tidak ada yang dilakukan sebelumnya (www.bluestacks .com).

2.8 iReport

Menurut Toffoli (2015), iReport adalah tools yang memudahkan Anda membuat laporan. Biasanya iReport di gunakan dalam bahasa pemrograman Java. Dalam gambaran besar, iReport Designer memungkinkan untuk merancang laporan. iReport Designer juga memungkinkan mengkonfigurasi sumber data dan menggunakannya untuk menguji laporan. Dalam banyak kasus, wizard data-driven dapat membantu merancang laporan lebih cepat. iReport Designer meliputi JasperReports engine untuk melihat pratinjau laporan output, pengujian, dan memperbaiki laporan.

iReport Designer adalah media yang kuat untuk merancang laporan. Laporan dapat didesain dari awal atau dari salah satu dari banyak template siap digunakan yang tersedia. iReport Designer membantu semua fase pengembangan laporan

(22)

8

diantaranya : desain jrxml, kompilasi Jasper, pelaksanaan laporan , dan ekspor dokumen atau visualisasi .

(23)

9

BAB III

ANALISIS DAN PERANCANGAN

3.1 Deskripsi Umum Sistem

Penggambaran deskripsi sistem secara umum dapat dilihat pada Gambar 3.1.

Gambar 3. 1 Deskripsi Umum Sistem

Secara umum, aplikasi yang akan di buat ini dapat menangani beberapa aspek, yaitu:

1. Register, dalam aspek ini, penggunaakan memasukkan data diri kedalam aplikasi, agar aplikasi dapat menyimpan datatersebut kedalam Database. 2. Login, dalam aspek ini, penggunaakan memasukkan ID dan Password

kedalam aplikasi, agar pengguna dapat mengakses aplikasi tersebut.

3. Data Material, dalam aspek ini, pengguna dapat memasukkan data spesifikasi dari material kedalam aplikasi, agar aplikasi dapat menyimpan data tersebut kedalam Database.

4. Estimasi, dalam aspek ini, pengguna dapat merencanakan macam-macam keperluan material yang akan di gunakan untuk suatu proyek,hasil estimasi tersebut berupa total harga proyek yang akan dikerjakan tersebut.

5. Surat Penawaran, dalam aspek ini, pengguna mendapatkan surat penawaran sesuai estimasi yang dilakukan oleh pengguna.

3.2 Analisis Kebutuhan Sistem

Analisis kebutuhan sistem dipergunakan untuk menambah dan membantu jalannya proses pembuatan suatu objek. Dibagian ini akan dibagi menjadi dua

(24)

10

bagian yaitu Analisis Kebutuhan Fungsional dan Analisis Kebutuhan Non-fungsional.

Analisis Kebutuhan Perangkat Keras (Hardware)

Untuk merancang aplikasi, dibutuhkan perangkat keras yang mendukung dalam pembuatannya. Perangkat keras yang digunakan dalam pembuatan Aplikasi Estimator Mekanikal dan Elektrikal terdiri dari :

• Spesifikasi perangkat keras untuk proses pembuatan aplikasi dapat dilihat pada Tabel 3.1.

Tabel 3. 1 Spesifikasi Perangkat Keras Pembuatan Aplikasi

Processor Intel(R) Core(TM)2 Duo CPU T5750

Memory 3 GB

Hard Disk 320 GB

Monitor 14”

• Spesifikasi perangkat keras untuk penerapan aplikasi dapat dilihat pada Tabel 3.2.

Tabel 3. 2 Spesifikasi Perangkat Keras Penerapan Aplikasi

Processor Intel(R) Core(TM)2 Duo CPU T5750

Memory 3 GB

Hard Disk 320 GB

Monitor 14”

Analisis Kebutuhan Perangkat Lunak (Software)

Spesifikasi perangkat lunak selama proses pembuatan aplikasi dapat dilihat pada Tabel 3.3.

Tabel 3. 3 Analisis Kebutuhan Perangkat Lunak Sistem Operasi Windows 7 (32 bit)

Bahasa Pemrograman Java, HTML

Basis Data MySQL

Web Server Apache

Editor Aplikasi Android Studio

(25)

11

3.3 Analisis Kebutuhan Fungsional

F-001 Aplikasi menangani proses Login dan logout. F-002 Aplikasi dapat membuat akun.

F-003 Aplikasi dapat meakukan Recovery Password. F-004 Aplikasi dapat menambah data material. F-005 Aplikasi dapat melakukan estimate.

3.4 Analisis Kebutuhan Non-fungsional

NF-001 Aplikasi Mekanikal dan Elektrikal Estimator menggunakan Bahasa Inggris.

3.5 Diagram Use Case

Pemodelan kebutuhan sistem dibuat dengan menggunakan bantuan model use

case. Diagram use case ini menggambarkan kebutuhan sistem secara keseluruhan.

Diagram use case yang digunakan dapat dilihat pada Gambar 3.2.

Gambar 3. 2 Diagram Use Case

3.6 Skenario Use Case

Skenario Use Case Melakukan Register

Skenario Use Case Melakukan Register dapat dilihat pada Tabel 3.4. Tabel 3. 4 Skenario Use Case Melakukan Register

Nama Use Case Melakukan Register Aktor Pengguna

Kondisi Awal Pengguna belum memiliki akun Kondisi Akhir Pengguna memiliki akun

Skenario Normal

(26)

12

1. Pengguna klik button Register

2. Aplikasi menampilkan form untuk meminta masukkan data user yang baru

3. Pengguna melakukan pengisian

form sesuai dengan data pribadi

lalu klik button Register

4. Aplikasi menyimpan data pengguna yang baru kedalam database.

5. Aplikasi memberikan konfirmasi berhasil atau tidaknya registrasi pengguna.

Skenario Use Case Melakukan Login

Skenario Use Case Melakukan Login dapat dilihat pada Tabel 3.5.

Tabel 3. 5 Skenario Use Case Melakukan Login

Nama Use Case Melakukan Login Aktor Pengguna

Kondisi Awal Pengguna belum Login Kondisi Akhir Pengguna telah Login

Skenario Normal

Aksi Aktor Respons Aplikasi 1. Pengguna mengisi fieldID dan

Password yang sudah tersedia

dan melakukan klik terhadap

button Login

2. Aplikasi membaca serta mencocokkan ID dan Password yang tersimpan di dalam database 3. Jika ID dan Password benar maka

aplikasi akan menampilkan halaman utama

4. Jika ID dan Password salah maka aplikasi akan menampilkan “ID/Password yang anda masukkan salah” dan meminta untuk memasukkan ID dan Password ulang

Skenario Use Case Menambah Data Material

Skenario Use Case Menambah Data Material dapat dilihat pada Tabel 3.6. Tabel 3. 6 Skenario Use Case Menambah Data Material

(27)

13

Aktor Pengguna

Kondisi Awal Pengguna sudah Login ke dalam aplikasi

Kondisi Akhir Pengguna dapat menambah data mateeial

Skenario Normal

Aksi Aktor Respons Aplikasi

1. Penggunamelakukan klik terhadap

button Material

2. Aplikasi menampilkan halaman Material

3. Pengguna melakukan pengisian terhadap data material baru

4. Aplikasi memproses dan

menyimpan data material ke dalam Database

Skenario Use Case Melakukan Estimate

Skenario Use Case Melakukan Estimate dapat dilihat pada Tabel 3.7. Tabel 3. 7 Skenario Use Case Melakukan Estimate

Nama Use Case Melakukan Estimate

Aktor Pengguna

Kondisi Awal Pengguna sudah Login ke dalam aplikasi

Kondisi Akhir Menampilkan data estimasi

Skenario Normal

Aksi Aktor Respons Aplikasi

1. Pengguna melakukan klik terhadap button Estimasi

2. Aplikasi menampilkan Form Estimasi

3. Pengguna melakukan pengisian nama-nama material apa saja yang di butuhkan ke dalam form

4. Aplikasi mencari harga material di dalam database kemudian

menyimpan data estimasi 5. Pengguna melakukan klik terhadap

button Look a Estimate

6. Aplikasi mencari data estimasi yang telah di input pengguna dan

menampilkannya.

Skenario Use Case Mencari Harga Material

Skenario Use Case Mencari Harga Material dapat dilihat pada Tabel 3.8.

(28)

14

Nama Use Case Mencari Harga Material

Aktor Pengguna

Kondisi Awal Pengguna sudah Login ke dalam aplikasi

Kondisi Akhir Harga material ditampilkan

Skenario Normal

Aksi Aktor Respons Aplikasi

1. Pengguna melakukan klik terhadap

Button Material

2. Aplikasi menampilkan Halaman Material

3. Pengguna mengisi field cari nama dan klik button Cari

4. Aplikasi memproses data dan menampilkan Harga Material

Skenario Use Case Melakukan Recovery Password

Skenario Use Case Melakukan Recovery Password dapat dilihat pada Tabel 3.9.

Tabel 3. 9 Skenario Use Case Melakukan Recovery Password

Nama Use Case Melakukan Recovery Password

Aktor Pengguna

Kondisi Awal Pengguna belum bisa Login

Kondisi Akhir Password ditampilkan

Skenario Normal

Aksi Aktor Respons Aplikasi

1. Pengguna melakukan klik terhadap

Button Lupa Password

2. Aplikasi menampilkan form lupa password

3. Pengguna mengisi form lupa

password

4. Aplikasi memproses data dan menampilkan password pengguna

3.7 Diagram Sequence

Diagram Sequence Melakukan Register

(29)

15

Gambar 3. 3 Sequence Diagram Melakukan Register

Diagram Sequence Melakukan Login

Diagram Sequence Melakukan Login dapat dilihat pada Gambar 3.4.

Gambar 3. 4 Diagram Sequence Melakukan Login

Diagram Sequence Menambah Data Material

(30)

16

Gambar 3. 5 Diagram Sequence Menambah Data Material

Diagram Sequence Melakukan Estimate

Diagram Sequence Melakukan Estimate dapat dilihat pada Gambar 3.6.

Gambar 3. 6 Diagram Sequence Melakukan Estmate Diagram Sequence Mencari Harga Material

(31)

17

Gambar 3. 7 Diagram Sequence Mencari Harga Material

Diagram Sequence Melakukan Recovery Password

Diagram Sequence Membuat dan Mengirim Memo dapat dilihat pada Gambar 3.8.

Gambar 3. 8 Diagram Sequence Melakukan Recovery Password

3.8 Diagram Class

Diagram class aplikasi server memo elektronik berbasis web dapat dilihat pada Gambar 3.9.

(32)

18

Gambar 3. 9 Diagram Class

3.9 Rancangan Antarmuka Aplikasi

Rancangan Antarmuka Halaman Login

Rancangan Antarmuka Halaman Login dapat dilihat pada Gambar 3.10.

(33)

19 Rancangan Antarmuka Halaman Register

Rancangan Antarmuka Halaman Register dapat dilihat pada Gambar 3.11.

Gambar 3. 11 Rancangan Antarmuka Halaman Register Rancangan Antarmuka Halaman Utama

Rancangan Antarmuka Halaman Utama dapat dilihat pada Gambar 3.12.

Gambar 3. 12 Rancangan Antarmuka Halaman Utama Rancangan Antarmuka Halaman Form Estimate

(34)

20

Gambar 3. 13 Rancangan Antarmuka Halaman Form Estimate Rancangan Antarmuka Halaman Recovery Password

Rancangan Antarmuka Halaman Recovery Password dapat dilihat pada Gambar 3.14.

Gambar 3. 14 Rancangan Antarmuka Halaman Recovery Password Rancangan Antarmuka Halaman Material

(35)

21

Gambar 3. 15 Rancangan Antarmuka Halaman Material

3.10 Rancangan Basis Data

Entity Relationship Diagram

Entity Relationship Diagram adalah pemodelan basis data dengan rangkaian hubungan tabel. Entity Relationship Diagram Aplikasi Server Memo Elektronik dijelaskan pada Gambar 3.20.

(36)

22

Gambar 3. 16 Entity Relationship Diagram Struktur Tabel

Struktur tabel memaparkan rancangan isi tabel yang digunakan dalam sistem. Struktur tabel pada aplikasi server memo berbasis web adalah sebagai berikut: 1. Struktur Tabel User

Struktur Tabel User dapat dilihat pada Tabel 3.10. Tabel 3. 10 Struktur Tabel User

(37)

23

Struktur Tabel Estimasi dapat dilihat pada Tabel 3.11. Tabel 3. 11 Struktur Tabel Estimasi

3. Struktur Tabel Material

Struktur Tabel Material dapat dilihat pada Tabel 3.12. Tabel 3. 12 Struktur Tabel Material

(38)

24

BAB IV

IMPLEMENTASI DAN PENGUJIAN

Setelah melakukan tahap perancangan maka tahap selanjutnya adalah implementasi dan penguijian terhadap produk. Implementasi dari tahap perancangan tersebut adalah sebagai berikut:

4.1 Implementasi Tampilan Antarmuka

4.1.1 Tampilan Halaman Dashboard

Tampilan Halaman Dashboard aplikasi ditunjukkan pada Gambar 4.1.

Gambar 4. 1 Tampilan Halaman Dashboard

Deskripsi Tampilan Halaman Dashboard aplikasi dijelaskan pada Tabel 4.1. Tabel 4. 1 Deskripsi Tampilan Halaman Dashboard

Nama File activity_dashboard.xml Deskripsi

ID_Objek Jenis Keterangan

pasang Button Sebagai perintah terhadap aplikasi untuk menampilkan halaman utama apabila pengguna sudah login atau menampilkan halaman login apabila dalam keadaan logout

(39)

25

memberhentikan aplikasi

Implementasi Tampilan Halaman Dashboard aplikasi dijelaskan pada Tabel 4.2. Tabel 4. 2 Implementasi Tampilan Halaman Dashboard

Dashboard.java

public class Dashboard extends Activity implements OnClickListener {

Button exit, pasang; Intent a;

ConnectionDetector cd;

Boolean isInternetPresent = false; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dashboard); exit=(Button)findViewById(R.id.exit); pasang =(Button)findViewById(R.id.pasang); cekInternet(); exit.setOnClickListener(this); } @Override

public void onClick(View v) { switch (v.getId()) { case R.id.pasang: a = new Intent(getApplicationContext(), Akunku.class); startActivity(a); break; case R.id.exit: Dialog(); break; default: break; } }

public void Dialog(){

AlertDialog.Builder builder= new AlertDialog.Builder(this);

builder.setMessage("Exit ?");

builder.setPositiveButton("No", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int arg1) {

dialog.dismiss(); }

(40)

26 });

builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) { finish(); } }); builder.create().show(); } @Override

public void onBackPressed() { Dialog();

}

public void cekInternet(){ cd = new ConnectionDetector(getApplicationContext()); isInternetPresent = cd.isConnectingToInternet(); if (isInternetPresent) { Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_SHORT) .show();

pasang.setOnClickListener(this); }else {

Toast.makeText(getApplicationContext(), "No Internet Access", Toast.LENGTH_SHORT) .show(); }

} }

4.1.2 Tampilan Halaman Login

(41)

27

Gambar 4. 2 Tampilan Halaman Login

Deskripsi Tampilan Halaman Login aplikasi dijelaskan pada Tabel 4.3. Tabel 4. 3 Deskripsi Tampilan Halaman Login

Nama File login.xml

Deskripsi

ID_Objek Jenis Keterangan

email EditText Diisi sesuai dengan email password EditText Diisi sesuai dengan password

keterangan TextView Menampilkan output apabila terjadi kesalahan submit Button Sebagai perintah terhadap aplikasi untuk melakukan

login

register Button Sebagai perintah terhadap aplikasi untuk menampilkan halaman Register

lupa Button Sebagai perintah terhadap aplikasi untuk menampilkan halaman Recovery Password

(42)

28

Tabel 4. 4 Implementasi Tampilan Halaman Login Login.java

public class Login extends Activity implements OnClickListener {

Button register, login,lupa; Intent a;

EditText email, password; String url, success;

SessionManager session; ConnectionDetector cd;

Boolean isInternetPresent = false; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); session = new SessionManager(getApplicationContext()); Toast.makeText(getApplicationContext(), "User Login Status: " + session.isLoggedIn(),

Toast.LENGTH_LONG).show(); register = (Button) findViewById(R.id.register); login = (Button) findViewById(R.id.submit);

lupa = (Button) findViewById(R.id.lupa); email = (EditText) findViewById(R.id.email); password = (EditText) findViewById(R.id.password); cekInternet(); register.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Intent myIntent = new

Intent(arg0.getContext(), Register.class); startActivityForResult(myIntent, 0); } }); lupa.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Intent myIntent = new

Intent(arg0.getContext(), LupaPassword.class);

(43)

29 }

}); }

@Override

public void onClick(View v) { switch (v.getId()) { case R.id.submit: url = "http://192.168.43.239/login/login.php?" + "email=" + email.getText().toString() + "&password=" + password.getText().toString(); if (email.getText().toString().trim().length() > 0 && password.getText().toString().trim().length() > 0) { new AmbilData().execute(); } else {

Toast.makeText(this, "Insert your Email and Password",Toast.LENGTH_SHORT).show();

Log.e("error", "Can't get a file 1"); } break; default: break; } }

public class AmbilData extends AsyncTask<String, String, String> {

ArrayList<HashMap<String, String>> contactList = new ArrayList

<HashMap<String, String>>(); ProgressDialog pDialog;

@Override

protected void onPreExecute() {

// TODO Auto-generated method stub super.onPreExecute();

pDialog = new ProgressDialog(Login.this); pDialog.setMessage("Loading Data ..."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } @Override

protected String doInBackground(String... arg0) {

JSONParser jParser = new JSONParser(); JSONObject json =

(44)

30 jParser.getJSONFromUrl(url); try {

success = json.getString("success"); Log.e("error", "Success No.=" +

success); JSONArray hasil = json.getJSONArray("login"); if (success.equals("1")) { for (int i = 0; i < hasil.length(); i++) { JSONObject c = hasil.getJSONObject(i); String namalengkap = c.getString("namalengkap").trim(); String email = c.getString("email").trim(); session.createLoginSession(namalengkap, email); Log.e("ok", "Get a File"); }

} else {

Log.e("error", "Can't get a File 0");

}

} catch (Exception e) {

Log.e("error", "Can't LOGIN"); }

return null; }

@Override

protected void onPostExecute(String result) { super.onPostExecute(result); pDialog.dismiss(); if (success.equals("1")) { a = new Intent(Login.this, Akunku.class); startActivity(a); finish(); } else {

TextView keterangan = (TextView) findViewById(R.id.keterangan); keterangan.setText("Invalid Email or Password"); password.setText(""); password.requestFocus(); }

(45)

31 }

}

@Override

public void onBackPressed() {

Intent i = new Intent(getApplicationContext(), Dashboard.class);

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);

finish(); }

public void cekInternet() { cd = new ConnectionDetector(getApplicationContext()); isInternetPresent = cd.isConnectingToInternet(); if (isInternetPresent) { Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_SHORT).show(); login.setOnClickListener(this); } else {

Toast.makeText(this, "No Internet Access!!!",Toast.LENGTH_SHORT).show(); Log.e("error", "Disconnected"); } } } login.php <?php include "koneksi.php"; $email = $_GET["email"]; $password = $_GET["password"];

$query = "select * from user where email='$email' and password='$password'"; $hasil = mysql_query($query);

if (mysql_num_rows($hasil) > 0){ $response = array();

$response["login"] = array();

while ($data = mysql_fetch_array($hasil)) { $h['email'] = $data['email'] ; $h['password'] = $data['password'] ; $h['namalengkap'] = $data['namalengkap']; $h['jawaban'] = $data['jawaban']; $h['telepon'] = $data['telepon']; array_push($response["login"], $h); } $response["success"] = "1"; echo json_encode($response);

(46)

32 }

else {

$response["success"] = "0";

$response["message"] = "Tidak ada data"; echo json_encode($response);

} ?>

4.1.3 Tampilan Halaman Register

Tampilan Halaman Register aplikasi ditunjukkan pada Gambar 4.3.

Gambar 4. 3 Tampilan Halaman Register

Deskripsi Tampilan Halaman Register aplikasi dijelaskan pada Tabel 4.5. Tabel 4. 5 Deskripsi Tampilan Halaman Register

Nama File register.xml

Deskripsi

ID_Objek Jenis Keterangan

email EditText Diisi sesuai dengan email password EditText Diisi sesuai dengan password namalengkap EditText Diisi sesuai dengan nama lengkap

spinnerKu Spinner Sebagai perintah untuk menampilkan pilihan pertanyaan kepada pengguna

jawaban EditText Diisi sesuai dengan jawaban dari pertanyaan yang di pilih

telepon EditText Diisi sesuai dengan nomor telepon

(47)

33

Tabel 4. 6 Implementasi Tampilan Halaman Register Register.java

public class Register extends Activity{ ProgressDialog pDialog;

JSONParser jsonParser = new JSONParser();

EditText email, password, namalengkap, jawaban, telepon;

private static String url =

"http://192.168.43.239/login/register.php"; private String[] isi_spinner;

String pertanyaan; Button submit; Spinner spinner;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); isi_spinner = this.getResources().getStringArray(R.array.isi_spinner ); spinner = (Spinner) findViewById(R.id.spinnerKu); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.isi_spinner, android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); email =(EditText)findViewById(R.id.email); password=(EditText)findViewById(R.id.password); namalengkap =(EditText)findViewById(R.id.namalengkap); jawaban=(EditText)findViewById(R.id.jawaban); telepon =(EditText)findViewById(R.id.telepon); submit = (Button)findViewById(R.id.submit); submit.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { new InputData().execute(); } }); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override

public void onItemSelected(AdapterView<?> parent, View v,int position, long id) {

(48)

34 Toast.makeText(Register.this, isi_spinner[position], Toast.LENGTH_SHORT).show(); pertanyaan=isi_spinner[position]; } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); }

public class InputData extends AsyncTask<String, String, String>{

String success; @Override

protected void onPreExecute() {

super.onPreExecute(); pDialog = new ProgressDialog(Register.this); pDialog.setMessage("Processing..."); pDialog.setIndeterminate(false); pDialog.show(); } @Override

protected String doInBackground(String... args) { String stremail = email.getText().toString(); String strpassword = password.getText().toString(); String strnamalengkap = namalengkap.getText().toString(); String strpertanyaan=pertanyaan; String strjawaban = jawaban.getText().toString(); String strtelepon = telepon.getText().toString();

List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("email", stremail)); params.add(new BasicNameValuePair("password", strpassword)); params.add(new BasicNameValuePair("namalengkap", strnamalengkap)); params.add(new BasicNameValuePair("pertanyaan", strpertanyaan)); params.add(new

(49)

35

BasicNameValuePair("jawaban", strjawaban)); params.add(new

BasicNameValuePair("telepon", strtelepon)); JSONObject json =

jsonParser.makeHttpRequest(url, "POST", params); try { success = json.getString("success"); }catch (Exception e) {Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show(); } return null; }

protected void onPostExecute(String file_url) { pDialog.dismiss(); if (success.equals("1")) { Toast.makeText(getApplicationContext(), "Registration Success", Toast.LENGTH_LONG).show(); Intent i = new Intent(getApplicationContext(), Login.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); }else { Toast.makeText(getApplicationContext(), "Registration Failed, "+email.getText().toString()+" Can't

Register", Toast.LENGTH_LONG).show(); }

} }

@Override

public void onBackPressed() {

Intent i = new Intent(getApplicationContext(), Login.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); finish(); } } register.php <?php $email = $_POST['email']; $password=$_POST['password']; $namalengkap=$_POST['namalengkap']; $pertanyaan=$_POST['pertanyaan']; $jawaban=$_POST['jawaban']; $telepon=$_POST['telepon'];

(50)

36 include "koneksi.php";

$namaTabel = "user";

header('Content-Type: text/xml'); $query = "INSERT INTO $namaTabel

VALUES('$email','$password','$namalengkap','$pertanyaan','$jawaban','$telepon ')";

$hasil = mysql_query($query); if($hasil)

{ $response["success"] = "1";

$response["message"] = "Data sukses diinput"; echo json_encode($response);

} else {$response["success"] = "0";

$response["message"] = "Maaf , terjadi kesalahan"; // echoing JSON response

echo json_encode($response); }

?>

4.1.4 Tampilan Halaman Recovery Password

Tampilan Halaman Recovery Password aplikasi ditunjukkan pada Gambar 4.4.

Gambar 4. 4 Tampilan Halaman Recovery Password

Deskripsi Tampilan Halaman Recovery Password aplikasi dijelaskan pada Tabel 4.7.

Tabel 4. 7 Deskripsi Tampilan Halaman Recovery Password Nama File lupapassword.xml

(51)

37 Deskripsi

ID_Objek Jenis Keterangan

email EditText Diisi sesuai dengan email

spinnerKu Spinner Sebagai perintah untuk menampilkan pilihan pertanyaan kepada pengguna

jawaban EditText Diisi sesuai dengan jawaban dari pertanyaan yang di pilih

password TextView Menampilkan output berupa password kepada pengguna

tampilpassword Button Sebagai perintah kepada aplikasi untuk menampilkan password kepada pengguna

Implementasi Tampilan Halaman Recovery Password aplikasi dijelaskan pada Tabel 4.8.

Tabel 4. 8 Implementasi Tampilan Halaman Recovery Password LupaPassword.java

public class LupaPassword extends Activity { ProgressDialog pDialog;

JSONParser jsonParser = new JSONParser(); EditText email,jawaban;

TextView password;

private String[] isi_spinner; Spinner spinner;

String pertanyaan,success,pass; Button tampilpassword;

SessionManager session; Intent a;

private static String url =

"http://192.168.43.239/login/lupapassword.php"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lupapassword); session = new SessionManager(getApplicationContext()); isi_spinner = this.getResources().getStringArray(R.array.isi_spinner ); spinner = (Spinner) findViewById(R.id.spinnerKu); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.isi_spinner, android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); password =

(52)

38 (TextView)findViewById(R.id.password); email=(EditText)findViewById(R.id.email); jawaban=(EditText)findViewById(R.id.jawaban); tampilpassword=(Button)findViewById(R.id.tampilpasswor d); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override

public void onItemSelected(AdapterView<?> parent, View v,int position, long id) {

Toast.makeText(LupaPassword.this, isi_spinner[position], Toast.LENGTH_SHORT).show(); pertanyaan=isi_spinner[position]; } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); tampilpassword.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { new InputData().execute(); }

}); }

public class InputData extends AsyncTask<String, String, String> {

String success; @Override

protected void onPreExecute() {

super.onPreExecute(); pDialog = new ProgressDialog(LupaPassword.this); pDialog.setMessage("Processing..."); pDialog.setIndeterminate(false); pDialog.show(); } @Override

protected String doInBackground(String... args) {

String stremail = email.getText().toString();

String strpertanyaan = pertanyaan; String strjawaban =

(53)

39

List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("email", stremail)); params.add(new BasicNameValuePair("pertanyaan", strpertanyaan)); params.add(new BasicNameValuePair("jawaban", strjawaban)); JSONObject json =

jsonParser.makeHttpRequest(url, "POST", params); try { success = json.getString("success"); }catch (Exception e) { Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show(); } return null; }

protected void onPostExecute(String file_url) { pDialog.dismiss(); if (success.equals("1")) { Toast.makeText(getApplicationContext(), "Get a Password", Toast.LENGTH_LONG).show(); new AmbilData().execute(); }else { password.setText("");

Toast.makeText(getApplicationContext(), "Can't Get a Password", Toast.LENGTH_LONG).show();

} } }

public class AmbilData extends AsyncTask<String, String, String> {

ArrayList<HashMap<String, String>> contactList = new ArrayList

<HashMap<String, String>>(); ProgressDialog pDialog;

@Override

protected void onPreExecute() {

// TODO Auto-generated method stub super.onPreExecute();

pDialog = new

ProgressDialog(LupaPassword.this);

pDialog.setMessage("Loading Data ..."); pDialog.setIndeterminate(false);

(54)

40

pDialog.setCancelable(true); pDialog.show();

}

@Override

protected String doInBackground(String... arg0) {

JSONParser jParser = new JSONParser(); JSONObject json =

jParser.getJSONFromUrl(url); try {

success = json.getString("success"); Log.e("error", "nilai sukses=" + success); JSONArray hasil = json.getJSONArray("lupapassword"); if (success.equals("1")) { for (int i = 0; i < hasil.length(); i++) { JSONObject c = hasil.getJSONObject(i); String strpassword = c.getString("password").trim(); pass = strpassword;

Log.e("ok", " Get a File"); }

} else {

Log.e("error", "Can't get a File 0");

}

} catch (Exception e) {

Log.e("error", "Can't get a File 1"); }

return null; }

@Override

protected void onPostExecute(String result) { super.onPostExecute(result);

pDialog.dismiss();

if (success.equals("1")) { password.setText(pass); } else {

TextView keterangan = (TextView) findViewById(R.id.keterangan);

keterangan.setText("Invalid your Email or Answer");

} }

(55)

41 }

@Override

public void onBackPressed() {

Intent i = new Intent(getApplicationContext(), Login.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); finish(); } } Lupapassword.php <?php include "koneksi.php"; $email =$_POST["email"]; $pertanyaan=$_POST['pertanyaan']; $jawaban=$_POST['jawaban'];

$query = "select * from user where email='$email' and pertanyaan='$pertanyaan' and jawaban='$jawaban'"; $hasil = mysql_query($query);

if (mysql_num_rows($hasil) > 0){ $response = array();

$response["lupapassword"] = array();

while ($data = mysql_fetch_array($hasil)) { $h['email'] = $data['email'] ; $h['password'] = $data['password'] ; $h['namalengkap'] = $data['namalengkap']; $h['pertanyaan'] = $data['pertanyaan']; $h['jawaban'] = $data['jawaban']; $h['telepon'] = $data['telepon']; array_push($response["lupapassword"], $h); } $response["success"] = "1"; echo json_encode($response); } else { $response["success"] = "0";

$response["message"] = "Tidak ada data"; echo json_encode($response);

} ?>

4.1.5 Tampilan Halaman Utama

(56)

42

Gambar 4. 5 Tampilan Halaman Utama

Deskripsi Tampilan Halaman Utama aplikasi dijelaskan pada Tabel 4.9. Tabel 4. 9 Deskripsi Tampilan Halaman Utama

Nama File akunku.xml

Deskripsi

ID_Objek Jenis Keterangan

logout Button Sebagai perintah kepada aplikasi untuk melakukan logout id pengguna

estimasi Button Sebagai perintah kepada aplikasi untuk menampilkan halaman Estimate

material Button Sebagai perintah kepada aplikasi untuk menampilkan halaman Material

Implementasi Tampilan Halaman Utama aplikasi dijelaskan pada Tabel 4.10. Tabel 4. 10 Implementasi Tampilan Halaman Utama

Akunku.java

public class Akunku extends Activity { Button logout,estimasi,material; SessionManager session;

ListView lv;

ProgressDialog pDialog; JSONArray contacts = null; String email, namalengkap; @Override

protected void onCreate(Bundle savedInstanceState) {

(57)

43 super.onCreate(savedInstanceState); setContentView(R.layout.akunku); session = new SessionManager(getApplicationContext()); Toast.makeText(getApplicationContext(), "User Login Status: " + session.isLoggedIn(),

Toast.LENGTH_LONG).show(); session.checkLogin();

HashMap<String, String> user = session.getUserDetails(); namalengkap = user.get(SessionManager.KEY_NAMALENGKAP); email=user.get(SessionManager.KEY_EMAIL); TextView status = (TextView)findViewById(R.id.status); status.setText(Html.fromHtml("Welcome,<br><b>"+namalen gkap+"</b> ")); estimasi=(Button)findViewById(R.id.estimasi); material=(Button)findViewById(R.id.material); logout = (Button)findViewById(R.id.logout); material.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Intent myIntent = new

Intent(arg0.getContext(), Material.class); startActivityForResult(myIntent, 0); } }); estimasi.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Intent myIntent = new

Intent(arg0.getContext(), Estimasi.class); startActivityForResult(myIntent, 0); } }); logout.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Dialog();

} }); }

(58)

44

AlertDialog.Builder builder= new AlertDialog.Builder(this);

builder.setMessage("Logout ?"); builder.setPositiveButton("No", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int arg1) {

dialog.dismiss(); } }); builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface arg0, int arg1) { session.logoutUser(); finish(); } }); builder.create().show(); }

@Override public void onBackPressed() { Intent i = new Intent(getApplicationContext(), Dashboard.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); finish(); } }

4.1.6 Tampilan Form Estimate

(59)

45

Gambar 4. 6 Tampilan Halaman Form Estimate

Deskripsi Tampilan Form Estimate aplikasi dijelaskan pada Tabel 4.11. Tabel 4. 11 Deskripsi Tampilan Form Estimate

Nama File estimasi.xml

Deskripsi

ID_Objek Jenis Keterangan

namaproyek EditText Diisi sesuai nama proyek namamaterial2 AutoCompleteTextView Diisi sesuai nama material jumlahmaterial EditText Diisi sesuai jumlah material

inputmaterial Button Sebagai perintah kepada aplikasi untuk menyimpan data estimasi

lihatestimasi Button Sebagai perintah kepada aplikasi untuk menampilkan halaman Estimate

Implementasi Tampilan Form Estimate aplikasi dijelaskan pada Tabel 4.12. Tabel 4. 12 Implementasi Tampilan Form Estimate

Estimasi.java

public class Estimasi extends Activity implements TextWatcher {

TextView hasil;

AutoCompleteTextView edit; ProgressDialog pDialog; SessionManager session;

(60)

46

EditText namaproyek,namamaterial,jumlahmaterial; Button inputmaterial,lihatestimasi;

String email,namaproyek2; private static String url =

"http://192.168.43.239/login/quotation.php"; @Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.estimasi); session = new

SessionManager(getApplicationContext()); HashMap<String, String> user = session.getUserDetails();

email=user.get(SessionManager.KEY_EMAIL); hasil = (TextView) findViewById(R.id.hasil); edit = (AutoCompleteTextView) findViewById(R.id.namamaterial2); edit.addTextChangedListener(this); edit.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_drop down_item_1line, item)); namaproyek =(EditText)findViewById(R.id.namaproyek); namamaterial =(EditText)findViewById(R.id.namamaterial2); jumlahmaterial=(EditText)findViewById(R.id.jumlahmater ial); inputmaterial = (Button)findViewById(R.id.inputmaterial); lihatestimasi = (Button)findViewById(R.id.lihatestimasi); inputmaterial.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) {

new InputDatamaterial().execute(); namamaterial.requestFocus(); } }); lihatestimasi.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View arg0) { Intent myIntent = new

Intent(arg0.getContext(), Quotation.class); namaproyek

(61)

47 namaproyek2=namaproyek.getText().toString(); myIntent.putExtra("namaproyek", namaproyek2); startActivityForResult(myIntent, 0); } }); }

public class InputDatamaterial extends AsyncTask<String, String, String> {

String success; @Override

protected void onPreExecute() {

super.onPreExecute(); pDialog = new ProgressDialog(Estimasi.this); pDialog.setMessage("Processing..."); pDialog.setIndeterminate(false); pDialog.show(); } @Override

protected String doInBackground(String... args) { String strnamaproyek = namaproyek.getText().toString(); String strnamamaterial = namamaterial.getText().toString(); String strjumlahmaterial = jumlahmaterial.getText().toString();

String stremail = email.toString(); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("namaproyek", strnamaproyek)); params.add(new BasicNameValuePair("namamaterial", strnamamaterial)); params.add(new BasicNameValuePair("jumlahmaterial", strjumlahmaterial)); params.add(new BasicNameValuePair("email", stremail)); JSONObject json =

jsonParser.makeHttpRequest(url, "POST", params); try { success = json.getString("success"); }catch (Exception e) { Toast.makeText(getApplicationContext(), "Error!!!", Toast.LENGTH_LONG).show(); }

Gambar

Gambar 3. 1 Deskripsi Umum Sistem
Tabel 3. 3 Analisis Kebutuhan Perangkat Lunak
Tabel 3. 5 Skenario Use Case Melakukan Login
Tabel 3. 7 Skenario Use Case Melakukan Estimate
+7

Referensi

Dokumen terkait

Penerapannya pada pucuk tanaman handeuleum aksesi Bogor menimbulkan keragaman pada peubah pertumbuhan (tinggi tanaman, jumlah.. daun, panjang daun, dan lebar daun), peubah

Namun belum sesuai dengan mekanisme pembagian kerja dengan proses dan prinsip-prinsip pengorganisasian mutu (4) Pelaksanaan Manajemen Mutu Terpadu dalam pembinaan kompetensi

Karena itu PB Tunas Bhakti Trenggalek menarik untuk dikaji bila ditinjau dari aspek pembinaan, keadaan organisasi, prestasi dan sarana prasarana yang dimiliki

Keperawatan Maternitas merupakan subsistem dari pelayanan kesehatan khususnya pelayanan keperawatan, dimana perawat berkolaborasi dengan tenaga kesehatan lain dalam

Capaian pembelajaran PJJ pada program studi atau mata kuliah sama dengan standar capaian pembelajaran program studi atau mata kuliah yang dijalankan dengan sistem tatap

TUBAN IAIN Sunan Ampel Surabaya 12 M.. TUBAN IAIN Sunan

Jadi  dalam  proses  belajar  mengajar  seorang  guru  harus  mampu  memfasilitasi  siswanya  dalam  membangun  pengetahuannya  dengan 

Penelitian ini bertujuan untuk menganalisis penerapan e-faktur dalam rangka meningkatkan kepatuhan PKP untuk pelaporan SPT Masa Pajak Pertambahan Nilai (PPN), berapa banyak