(STUDI KASUS CU (CREDIT UNION) Khatulistiwa Bakti)
Tugas Akhir
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh:
Yoseph Rostandy Pian
NIM : 015314032
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
APPLICATION PROGRAM FOR RECORDING CLIENT’S DATA
(A CASE STUDY AT CU (CREDIT UNION) Khatulistiwa Bakti)
Final Project
Presented as Partial Fulfillment of the Requirements
to Obtain the Sarjana Teknik Degree
in Informatics Engineering
By
Yoseph Rostandy Pian
Student Number : 015314032
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
Dengan ini saya sebagai penulis tugas akhir menyatakan dengan
sesungguhnya bahwa tugas akhir yang saya tulis ini tidak memuat karya atau bagian
karya orang lain, kecuali pemikiran, metode atau hasil penelitian orang lain yang
diambil disebutkan dengan jelas sebagai acuan.
Yogyakarta, Desember 2007
Yoseph Rostandy Pian
Penulis
Kupersembahkan karyaku ini untuk...
Bunda Maria,
yang selalu mendengarkan permintaan, keluh kesah, dan doa ku selama kuliah.
Terima kasih untuk melindungi orang-orang di sekitarku, teman-teman, serta orangtua-ku yang
jauh. Terima kasih untuk rahmat, berkat, dan anugerah serta keselamatan selama aku belajar,
bekerja, bermain dan perjalananku...
Tuhan Yesus Kristus,
yang telah memberikan kesempatan untuk berada di dunia ini, yang
telah melindungi dalam perjalanan atau pun pekerjaan, dan melindungi rumah tempat-ku
beristirahat dan bekerja...
Papa dan mama-ku, Drs. Anton Paulus dan Yustina
, yang telah memberikan kesempatan
untuk kuliah disini. Terima kasih untuk nasehat, dorongan, kasih dan doa yang tidak ada
habisnya. Maafkan anakmu yang selalu menyusahkan...
Adikku, Febrio Miki Pian
, untuk beda pendapatnya yang selalu memberikan alternatif
pilihan. DASAR GENDUT!!!
Almamaterku, Teknik Informatika Univ. Sanata Dharma Angkatan 2001
, kalian
memberikan aku banyak pengetahuan, pengalaman dan persahabatan yang tidak akan aku
lupakan...
Motto
“Life is a journey...”
“Ad Maiorem Dei Gloriam...”
“demi kemuliaan Allah yang lebih besar...”
ABSTRAKSI
Data nasabah merupakan hal yang sangat vital bagi perusahaan-perusahaan
yang bergerak di bidang keuangan. Data-data tersebut harus dikelola dengan baik
supaya data-data tersebut tersimpan dengan baik dan selalu siap digunakan jika
diperlukan.
Pada tugas akhir ini akan dibuat perangkat lunak yang menangani data-data
nasabah. Penanganan data-data tersebut meliputi memasukkan data baru (menulis dan
menyimpan data), mencari data, dan mengurutkan data. Perangkat lunak ini tidak
mengenal adanya tingkatan pemakai (level user) dan perbedaan akses seperti
Administrator dan Data Entry.
ABSTRACT
Client’s data is a real vital thing for companies which is active in
finance-related. The datas must be managed carefully so that the datas is on file carefully and
always ready to be applied if it is required.
At this final project will be made a software that handling client’s datas.
Handling of the datas covers enters new data ( writes and saving data), looks for data,
and sorts data. This software do not know existence of user level and difference of
access like Administrator and Data Entry.
KATA PENGANTAR
Puji dan syukur penulis ucapkan kepada Bunda Maria dan Tuhan Yesus
Kristus atas segala berkat, rahmat dan karunia-Nya, sehingga penulis dapat
menyelesaikan karya tulis ini dengan baik. Karya tulis ini dibuat sebagai tugas akhir
yang harus ditempuh penulis untuk mendapatkan gelar sarjana Strata satu ( S1 ) pada
jurusan Teknik Informatika Fakultas Sains dan Teknologi Universitas Sanata Dharma
Yogyakarta.
Dalam menyelesaikan kaya tulis ini, penulis banyak mendapatkan bantuan,
dukungan dan dorongan dari berbagai pihak. Oleh karena itu, dalam kesempatan ini
penulis hendak menyampaikan rasa terima kasih yang sedalam-dalamnya kepada :
1.
Romo Ir. Greg Heliarko, S.J., S.S., B.S.T., M.A., M.Sc selaku Dekan
Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
2.
Ibu Agnes Maria Polina, S.Kom, M.Sc. selaku Ketua Jurusan Teknik
Informatika Universitas Sanata Dharma Yogyakarta.
3.
Bapak Alb. Agung Hadhiatma, S.T., M.T., selaku Dosen Pembimbing Tugas
Akhir dan Dosen Pembimbing Akademik penulis. Terima kasih untuk
bimbingan, dorongan dan masukannya.
4.
Seluruh Dosen Universitas Sanata Dharma, khususnya Dosen yang mengajar
di Teknik Informatika, yang telah memberikan dan mengajarkan banyak ilmu
kepada penulis.
5.
Kedua orangtua penulis, Drs. Anton Paulus dan Yustina, yang telah
memberikan banyak nasehat, dorongan, doa dan materi kepada penulis, hingga
penulis dapat menyelesaikan tugas akhir ini.
sehingga penulis mempunyai alternatif pilihan.
7.
Buat teman-teman Teknik Informatika angkatan 2001 kelas A dan B, kalian
semua, Tatag, Ndon, Bernard, Albert, Ucok Daus, Cokde, Tito, Eko, Kuncoro,
Andri Punk, Andri Solo, Andi’ Cuplis, Bojack + Agnes, Tio, Vivi + Indra,
Emma (makasih buat cerita-ceritanya...), Dinar S. (ketua kelas A), Yongki,
Agus Maran (Ayo pek!!), Adit Bajuri, Aryo, Danu, Devi, Tina, Iis, Iin, Detti
Bule, Lenny, Anna, Rita, Fanny, Hendy Moenyoex, Eva, Janto, Aris, Yoan,
Carlo, Heny, Siska (‘ncis), kita bakal ketemu lagi? Hope so.... Miss u guys a
lot!! Buat Lijun ‘02, gimana, ade proyek ndak? Bagi-bagilah!! Buat kalian
semua yang secara langsung atau tidak, telah membantu aku, makasih banyak
buat kalian!! Dan maaf juga, seandainya aku pernah mengecewakan
kalian...
8.
Buat anak kos di Jl. Mawar no. 8a, kos Kelapa Ijo. Kalian memang temanku,
yang membuat aku kuat dan belajar menjadi dan bersikap dewasa saat orang
tuaku tidak mengawasiku. Makasih buat Frans (‘ncis), Indro, Wisa (2
rembulannya gak ada yang nempel ya... Sori!!!), Adi, Nael, Angga, Klin,
Dika, Amos, Alex, Didit, Aan, A sun, Nando (Pace, ko’ pi mana?!), Yano
Bagong. Dan semua komunitas anak kos di Paingan, asik banget sih kalian!!
9.
Dan terakhir, untuk semua pihak yang telah membantu terselesaikannya tugas
akhir ini, penulis dengan segala kerendahan hati mengucapkan beribu terima
kasih atas bantuan kalian. Hanya Tuhan yang bisa membalas budi baik
kalian...
Akhir kata, seperti kata pepatah “Tak ada gading yang tak retak”, maka
penulis mohon maaf dengan segala kerendahan hati apabila dalam penulisan tugas
akhir ini terdapat kesalahan dan kekurangan. Penulis juga mengharapkan kritik dan
saran yang membangun yang dapat dikirimkan melalui e-mail cep_zone@plasa.com,
sehingga dapat menjadi masukan bagi penulis.
Semoga apa yang telah penulis tulis dan laporkan pada tugas akhir ini dapat
bermanfaat bagi siapa saja yang membutuhkan. Atas segala perhatiannya penulis
ucapkan terima kasih.
Yogyakarta, Desember 2007
Yoseph Rostandy Pian
Penulis
Halaman Judul...
i
Halaman Persetujuan...
iii
Halaman Pengesahan...
iv
Halaman Pernyataan...
v
Halaman Persembahan...
vi
Halaman Motto...
vii
Abstraksi... viii
Abstract... ix
Kata Pengantar...
x
Daftar Isi...
xiii
Daftar Gambar...
xvi
Daftar Tabel...
xviii
BAB I Pendahuluan...
1
A. Latar Belakang Masalah...
1
B. Rumusan Masalah...
3
C. Batasan Masalah...
3
D. Tujuan dan Manfaat Penelitian...
4
E. Metodologi Penelitian...
4
F. Sistematika Penulisan...
5
BAB II Landasan Teori...
6
A. J2ME (Java 2 Micro Edition)... 6
A.1 J2ME Configuration... 8
A.2 J2ME Profile... 9
A.3 Aplikasi Midlet... 10
a. Arsitektur Aplikasi Midlet... 10
b. Daur hidup sebuah Midlet... 12
A.4 User Interface pada Midlet... 13
B. HTTP...
14
C. Apache...
15
D. PHP (Personal Home Page)... 15
BAB III Analisa dan Peracangan Sistem...
17
A. Analisa Sistem...
17
A.1 Gambaran Umum Sistem yang Lama...
17
A.2 Gambaran Sistem yang Akan Dikembangkan...
17
A.3 Batasan Sistem...
20
B. DFD (Data Flow Diagram)... 20
B.1 Use Case Diagram... 20
B.2 Diagram Berjenjang...
21
B.3 Overview Diagram Level 0...
21
C. Perancangan Antar Muka...
22
BAB IV Implementasi Sistem...
26
A. Kebutuhan Sistem...
26
B. User Interface... 27
BAB V Analisa Hasil...
34
A. Pengujian Sistem...
34
B. Kelebihan dan Kekurangan Sistem...
38
BAB VI Kesimpulan...
40
A. Kesimpulan...
40
DAFTAR PUSTAKA...
41
DAFTAR GAMBAR
Gambar 2.1 Lingkungan kerja J2ME...
7
Gambar 2.2 Daur hidup dari sebuah midlet... 12
Gambar 2.3 Gambar class diagram... 14
Gambar 3.1 Gambaran proses bisnis... 19
Gambar 3.2 Use Case diagram...
20
Gambar 3.3 Diagram berjenjang... 21
Gambar 3.4 Overview diagram level 0...
21
Gambar 3.5 Rancangan tampilan awal aplikasi... 22
Gambar 3.6 Rancangan tampilan menu... 23
Gambar 3.7 Rancangan tampilan opasi Simpan...
24
Gambar 3.8 Rancangan tampilan opsi Tentang...
25
Gambar 3.9 Rancangan tampilan opsi Bantuan... 25
Gambar 4.1 Tampila awal aplikasi...
27
Gambar 4.2 Tampilan input data aplikasi... 28
Gambar 4.3 Tampilan ketika opsi Menu dipilih...
29
Gambar 4.4 Tampilan ketika opsi Register dipilih...
30
Gambar 4.5 Tampilan data yang telah di-Simpan... 31
Gambar 4.6 Tampilan data gagal disimpan...
31
Gambar 4.7 Tampilan data sudah ada... 32
Gambar 4.8 Tampilan opsi Tentang Program... 32
Gambar 4.9 Tampilan opsi Bantuan Program... 33
Gambar 5.1 Tampilan awal aplikasi...
34
Gambar 5.2 Tampilan form input data... 35
Gambar 5.3 Tampilan pengiriman data ke web server... 36
xviii
DAFTAR TABEL
BAB I
PENDAHULUAN
A. Latar Belakang Masalah
CU (Credit Union) Khatulistiwa Bakti adalah sebuah badan koperasi. CU
(Credit Union) Khatulistiwa Bakti memiliki beberapa macam produk pelayanan yang
dapat dinikmati oleh nasabahnya, antara lain Pelayanan Simpanan dan Pinjaman,
dengan beberapa produk layanannya antara lain, Simpanan Saham, Simpanan Setara
Saham, Simpanan Non Saham, dan Pinjaman, serta produk Pelayanan Non Simpanan
dan Non Pinjaman, dengan produk layanan, antara lain SOLKES (Solidaritas
Kesehatan), SOLDUTA (Solidaritas Duka Cita), dan beberapa produk lainnya.
Untuk mendapatkan semua produk layanan dari CU (Credit Union)
Khatulistiwa Bakti ini, seseorang harus mendaftarkan dirinya, dengan menjadi
nasabah dari CU (Credit Union) Khatulistiwa Bakti. Setelah menjadi nasabah dari CU
(Credit Union) Khatulistiwa Bakti ini, nasabah tersebut akan mengikuti Pendidikan
Dasar yang bertujuan untuk mengetahui apa-apa saja yang menjadi hak dan kewajiban
selama menjadi nasabah dari CU (Credit Union) Khatulistiwa Bakti.
Untuk menjadi nasabah dari CU (Credit Union) Khatulistiwa Bakti, seseorang
harus melewati tahap survey yang dilakukan oleh karyawan koperasi. Hal ini
dimaksudkan untuk mengetahui sejauh mana calon nasabah tersebut mengenal CU
(Credit Union) Khatulistiwa Bakti. Apakah calon nasabah tersebut sudah pernah
menjadi nasabah CU (Credit Union) Khatulistiwa Bakti sebelumnya atau belum,
apakah calon nasabah tersebut pernah mendengar tentang CU (Credit Union)
2
Khatulistiwa Bakti, dari mana calon nasabah tersebut mengetahui CU (Credit Union)
Khatulistiwa Bakti, dan hal-hal lainnya.
Setelah melakukan survey tersebut, barulah karyawan koperasi akan
memberikan formulir untuk diisi calon nasabah, sebagai tanda bahwa calon nasabah
tersebut sudah siap untuk bergabung dengan CU (Credit Union) Khatulistiwa Bakti.
Beberapa hal yang biasanya menjadi kendala dalam mencatatkan calon nasabah
tersebut menjadi nasabah CU (Credit Union) Khatulistiwa Bakti adalah
kendala-kendala teknis seperti habisnya stok lembar formulir, tertinggal atau lupa terbawa,
terkena hujan/basah, dan kendala teknis lainnya.
B. Rumusan Masalah
Pada tugas akhir ini akan dibangun sebuah aplikasi yang akan menangani
pencatatan data-data detil dari calon nasabah dari CU (Credit Union) Khatulistiwa
Bakti. Aplikasi ini akan dibangun dengan menggunakan tools NetBeans 5.5 Beta 2
dan add-on Mobility Pack. Tools ini dapat membangun aplikasi yang bersifat mobile,
yaitu aplikasi yang dapat diimplementasikan dan dijalankan pada device/perangkat
selular, serta mendukung J2ME dan MIDP. Sebelum aplikasi ini diterapkan pada
device yang sebenarnya, aplikasi akan diterapkan pada emulator.
Data calon nasabah yang telah dicatat tidak dapat langsung disimpan pada
device / perangkat seluler, karena aplikasi yang dibangun dengan bahasa
pemrograman J2ME sangat terbatas dalam mengalokasikan memori penyimpanan.
Karena keterbatasan memori tersebut maka digunakan suatu metode untuk
menyimpan data langsung ke server. Metode tersebut adalah dengan menggunakan
koneksi HTTP. HTTP merupakan sebuah protokol untuk melakukan request dan
menerima respon dari server.
C. Batasan Masalah
Batasan masalah untuk penelitian ini adalah :
1.
Tidak membahas masalah jaringan.
2.
Tidak mambahas masalah keamanan.
3.
Data – data yang digunakan adalah sample yang diambil selama melakukan
Kerja Praktek di CU (Credit Union) Khatulistiwa Bhakti Pontianak,
Kalimantan Barat.
4
5.
Aplikasi akan dibangun dengan menggunakan program NetBeans 5.5 Beta 2
dan add-on Mobility Pack, dengan bahasa pemrograman J2ME.
6. Aplikasi ini hanya menangani pencatatan data, berikut penambahan data
baru, membaca data, dan pencarian data.
D. Tujuan dan Manfaat Penelitian
Tujuan dan manfaat dari penelitian ini adalah :
1.
Mempercepat pencatatan data calon nasabah jika calon nasabah tersebut
hendak menjadi anggota koperasi.
2.
Mempercepat dan mempermudah kerja karyawan survey lapangan.
E. Metodologi Penelitian
1. Mencatat data-data sample, yang didapat selama melakukan Kerja Praktek.
2. Studi literatur, mengumpulkan informasi literatur dari semua sumber seperti
buku, dan internet(jurnal online).
3. Analisa sistem, yang meliputi :
- Analisa kebutuhan sistem
- Analisa kegunaan sistem
4. Disain sistem, yang meliputi perancangan interface untuk input, output dan
penyimpanan data.
5. Implementasi Sistem, yang meliputi
- Menterjemahkan model rancangan ke dalam bentuk kode-kode program.
- Mencoba kode-kode program pada emulator.
F. Sistematika Penulisan
Sistematika penulisan Tugas Akhir ini adalah :
1.
BAB I : PENDAHULUAN
Bab ini berisi tentang Latar Belakang Masalah, Rumusan Masalah, Batasan
Masalah, Tujuan dan Manfaat Penelitian, Metodologi Penelitian dan
Sistematika Penulisan.
2.
BAB II : LANDASAN TEORI
Bab ini berisi penjelasan tentang teori-teori yang berhubungan dengan
pengembangan sistem yang akan dibangun yaitu aplikasi pencatatan record
seorang calon nasabah. Dasar teori yang dibahas adalah : J2ME (Java 2 Micro
Edition) dan HTTP.
3.
BAB III : ANALISA DAN DESAIN SISTEM
Bab ini berisi desain dan analisa aplikasi yang akan dibangun
4.
BAB IV : IMPLEMENTASI SISTEM
Bab ini berisi tentang pengimplementasian sistem ke dalam bahasa
pemrograman.
5.
BAB V : ANALISA HASIL
Bab ini berisis tentang analisa hasil dari aplikasi yang diterapkan pada
emulator. Juga berisi analisa kelebihan dan kekurangan yang muncul dari
aplikasi, serta analisa teknologi yang digunakan.
6.
BAB VI : PENUTUP
BAB II
LANDASAN TEORI
Teknologi
wireless Internet, atau akses Internet tanpa kabel, saat ini akan
memungkinkan kita terkoneksi ke jaringan Internet dengan segala macam perangkat
bergerak (mobile devices) yang kita miliki, baik itu berupa Palm, Pocket PC, atau
jenis PDA (Personal Digital Assistance) lainnya, bahkan dengan
handphone/telepon genggam yang kita miliki.
A. J2ME (Java 2 Micro Edition)
J2ME merupakan subset dari J2SE (Java 2 Standard Edition, yaitu teknologi
Java
untuk aplikasi desktop) yang ditujukan untuk implementasi pada peralatan
embedded system dan handheld yang tidak mampu mendukung secara penuh
implementasi menggunakan J2SE. Embedded system adalah produk-produk dengan
komputer kecil berada di dalamnya, dimana peralatan ini dimanfaatkan oleh aplikasi
yang lebih spesifik. Karakteristik dari peralatan embedded system dan handheld yang
mengimplementasikan aplikasi dari teknologi J2ME adalah jumlah memori dan
kapasitas yang terbatas, serta kemampuan user interface yang terbatas pada perangkat
komunikasi bergerak (mobile device) yaitu telepon genggam, PDA (Personal Digital
Assistant) dan sebagainya.
J2ME dirancang untuk dapat menjalankan program Java perangkat-perangkat
semacam telepon genggam atau PDA memiliki memori terbatas. Pada Gambar 2.1
akan ditunjukkan lingkungan kerja J2ME pada pemrograman Java.
Gambar 2.1 Lingkungan Kerja J2ME
Virtual machine yang digunakan oleh aplikasi J2ME disebut dengan K virtual
machine, yang mana merupakan implementasi dari java virtual machine yang
digunakan pada J2ME CLDC (Connected Limited Device Configuration).
K virtual
machine adalah virtual machine yang sangat kecil dalam kebutuhan memorinya yaitu
mulai dari 128 kilobyte sampai 512 kilobyte, dimana huruf K pada K virtual machine
menunjukkan kilobyte.
Saat ini terdapat 2 jenis aplikasi dari J2ME, yaitu :
1. Walled Garden Application
8
2. Network Aware Application
Aplikasi ini merupakan aplikasi yang berinteraksi dengan jaringan atau dengan
kata lain memiliki kemampuan akses terhadap sumber data eksternal. Contoh dari
aplikasi ini adalah aplikasi email pada telepon genggam, aplikasi untuk mencari
alamat – alamat yang tersimpan di jaringan, dan pengiriman email ke berbagai alamat
melalui jaringan data.
A.1.
J2ME Configuration
Configuration adalah spesifikasi yang secara detail menjelaskan
tentang sebuah virtual machine dan kumpulan API-API (Application
Programming Interface) dasar yang digunakan dalam class-class tertentu dari
sebuah peralatan. J2ME Configuration ini akan menyediakan library standar
yang mengimplementasikan fitur standar dari sebuah peralatan.
Ada 2 kategori J2ME Configuration, yaitu :
1.
CLDC (Connected Limited Device Configuration)
2.
CDC (Connected Device Configuration)
Konfigurasi ini umumnya digunakan untuk peralatan dengan kapasitas
memori yang lebih besar (ukuran memori sampai megabyte) dengan
koneksi jaringan yang lebih kokoh. Contoh penggunaan dari
konfigurasi ini adalah internet television, internet-enable screenphone,
high-end communicator, dan sebagainya.
Secara ringkas perbedaan antara CLDC dengan CDC adalah sebagai
berikut :
Tabel 2-1. Perbedaan antara CLDC dengan CDC
CLDC CDC
Mengimplementasikan subset dari J2SE Mengimplementasikan subset dari J2SE
JVM yang digunakan dikenal dengan nama
KVM (Kilo Virtual Machine)
JVM yang digunakan dikenal dengan nama
CVM (Classic Virtual Machine)
Digunakan pada perangkat handheld dengan
memori terbatas (128 – 512 KB)
Digunakan pada perangkat handheld dengan
memori minimal 2 MB
Prosesor 16 bit atau 32 bit Prosesor 32 bit
A.2. J2ME Profile
J2ME
Profile menyediakan implementasi-implementasi tambahan
yang sangat spesifik dari sebuah handheld devices, sedangkan J2ME
Configuration menyediakan libary-library Java untuk implementasi fitur-fitur
10
Ada 5 kategori J2ME Profile, yaitu :
1.
MIDP (Mobile Information Device Profile)
MIDP menyediakan library-library Java untuk implementasi dasar
antar muka (GUI – Graphical User Interface), implementasi jaringan
(networking),
database, dan timer. MIDP dirancang khusus untuk
wireless phone dan pager.
2.
Foundation Profile
3.
Personal Profile
4.
RMI Profile
5.
Personal Digital Assistant Profile
A.3. Aplikasi MIDlet
MIDlet adalah aplikasi yang dibuat menggunakan J2ME (Java 2 Micro
Edition) dengan profile MIDP (Mobile Information Device Profile).
a.
Arsitektur Aplikasi MIDlet
Sebuah pengembangan aplikasi MIDlet terdiri atas direktori-direktori
sebagai berikut :
1.
src : berisi file-file kode Java
2.
bin : berisi file-file JAD, JAR, dan manifest
3.
lib : berisi file-file kelas Java yang diperlukan dalam format
JAR atau ZIP
Istilah-istilah penting dalam daur hidup (LifeCycle) sebuah MIDlet,
yaitu :
a.
Application Management Software (AMS)
AMS adalah sebuah lingkungan tempat siklus sebuah MIDlet
mampu diciptakan, dijalankan, dihentikan maupun dihilangkan.
Fungsi dari AMS adalah mengatur manajemen aplikasi MIDlet
yang ada.
b.
MIDlet
merupakan aplikasi yang dijalankan pada sebuah perangkat
handheld. Midlet tidak berinteraksi langsung dengan hardware
dari telepon genggam, PDA atau perangkat handheld lainnya,
melainkan berinteraksi melalui Application Management
Software (AMS). AMS inilah yang akan menerima sinyal dari
MIDlet bahwa MIDlet akan dijalankan atau berhenti.
c.
MIDlet States
merupakan status dari sebuah MIDlet.
Ada 3 status MIDlet, yaitu :
a)
Paused
Status ini terjadi jika MIDlet selesai diinisialisasi dan tidak
melakukan aksi apapun. Status MIDlet akan mengalami pause
apabila :
1.
Setelah MIDlet dibuat dengan konstruktor new()
12
3.
dari status active, ketika akan start() terjadi kesalahan berupa
exception:MIDletStateChangeException
b) Active
Status ini terjadi jika MIDlet sedang berjalan dengan normal, yaitu
setelah memanggil fungsi MIDlet.startApp().
c) Destroyed
Status ini terjadi jika MIDlet berhenti berjalan (exit), sehingga
seluruh
resource yang digunakan akan dilepaskan. Status ini
berhasil jika dilakukan pemanggilan fungsi MIDlet.destroyApp()
atau MIDlet.notifyDestroyed().
b. Daur Hidup Sebuah
MIDlet
Berikut ini gambaran daur hidup dari sebuah MIDlet :
Baru
Keluar jika ada exception
destroyApp()
startApp() pauseApp()
destroyApp()
PAUSE
ACTIVE
DESTROY
Dari gambar tersebut, dapat dijelaskan sebagai berikut :
- Ketika MIDlet pertama kali diciptakan dan diinisialisasi oleh
AMS (Application Management Software), MIDlet akan berada
dalam status pause.
- Apabila terjadi kesalahan selama konstruksi MIDlet, MIDlet akan
berpindah ke status destroy, dan MIDlet batal diciptakan dengan
jalan memanggil fungsi standar destroyApp().
- Selanjutnya, ketika AMS memutuskan bahwa MIDlet sudah
waktunya dijalankan, MIDlet akan berada pada status active,
dalam hal ini fungsi standar yang dipanggil startApp().
- Akan tetapi, ketika AMS memutuskan bahwa MIDlet harus
dihentikan sementara, MIDlet akan berada dalam status pause
dengan jalan memanggil fungsi standar pauseApp().
- Ketika AMS memutuskan bahwa MIDlet harus dinonaktifkan
selamanya, maka AMS akan memanggil fungsi
MIDlet.destroyApp().
Pada status ini diperlukan fungsi proses clean-up untuk
membersihkan alokasi memori yang akan digunakan oleh MIDlet
yang bersangkutan atau garbage collector yang dihasilkan.
A.4. User Interface pada MIDlet
User interface dari MIDP (Mobile Information Device Profile) terdiri
14
level API adalah alert, form, list, textbox.
Class
diagram dari user interface
dapat dilihat pada gambar berikut :
Displayable
Screen
Canvas
TextBox
List
Form
Alert
Gambar 2-3. Gambar class diagram
B. HTTP
J2ME menyediakan beberapa cara untuk melakukan koneksi antara perangkat
bergerak (mobile device) dan server yaitu lewat socket, SMS, koneksi HTTP,
infrared, bluetooth, kabel dan lainnya. Koneksi HTTP menjadi salah satu pilihan yang
sering digunakan dibandingkan koneksi lainnya karena ruang lingkup penggunaannya
luas dan hampir seluruh perangkat bergerak (mobile device) mendukung jenis koneksi
ini.
HTTP adalah sebuah protokol request/response, artinya client dapat
mengirimkan
request ke server dengan alamat yang telah dispesifikasikan pada
Uniform Resource Locator(URL), kemudian server akan memberikan respon kepada
client. Untuk dapat melakukan koneksi dengan HTTP, harus melalui 3 tahapan, yaitu
dikirim pada stream terpisah, dan dengan metode HEAD data yang dikirim adalah
meta information.
C. APACHE
Apache merupakan web
server yang bersifat open source dan tersedia di
berbagai platforms, termasuk Linux dan Windows. Apache merupakan program
web
server yang melayani permintaan akses web dari client. Pada Tugas Akhir
ini, Apache digunakan sebagai web server untuk memberi respon hasil dari komputasi
script yang di-request dari aplikasi.
D. PHP (Personal Home Page)
PHP merupakan akronim dari Profesional Home Page. PHP merupakan
salah satu bahasa pemrograman/scripting yang biasa digunakan untuk web
development yang dapat diselipkan dalam HTML. Berbeda dengan script-script
lainnya seperti Java Script atau VB script, PHP dieksekusi di lingkungan server, client
hanya menerima hasil dari script yang telah dieksekusi, tanpa bisa mengetahui
kode yang digunakan.
Awalnya, PHP bekerja di lingkungan Linux, karena merupakan ’turunan’
bahasa PEARL yang merupakan bahasa pemrograman native di lingkungan Linux
dan Unix. Namun seiring perkembangan dan kebutuhan maka PHP dibuat secara
cross platform. PHP dapat bekerja di lingkungan Windows maupun Linux. PHP
16
(<) dan diakhiri dengan tanda lebih besar (>). Ada tiga cara untuk menulis script PHP,
yaitu :
1.
<?
Script PHP
?>
2.
<?php
Script
?>
3.
<SCRIPT LANGUAGE=”php”>
Script PHP
BAB III
ANALISA DAN PERANCANGAN SISTEM
A. Analisa Sistem
A.1 Gambaran Umum Sistem Yang Lama
Credit Union Khatulistiwa Bakti adalah sebuah unit koperasi simpan pinjam.
Tiap nasabah yang terdaftar sebagai anggota koperasi berhak untuk melakukan
simpan mau pun pinjam berupa uang. Untuk mendaftar menjadi calon nasabah atau
anggota, calon nasabah atau anggota tersebut mengisi formulir secara manual.
Beberapa hal dari sistem lama yang dilakukan oleh karyawan untuk mencatat
data calon nasabah adalah :
-
karyawan melakukan survei terhadap calon nasabah,
-
karyawan memberikan formulir kepada calon nasabah dan mengisi secara
manual,
-
memberikan formulir yang telah diisi oleh calon nasabah kepada kasir dan
kasir mencatat data calon nasabah ke komputer database.
Masalah yang dihadapi adalah pencatatan data calon nasabah secara manual
lewat formulir dan kadangkala formulir tidak tersedia.
A.2 Gambaran Umum Sistem Yang Akan Dikembangkan
Untuk mengatasi masalah yang dihadapi tersebut, akan dikembangkan suatu
aplikasi pencatatan data calon nasabah tersebut. Aplikasi tersebut akan berjalan pada
18
platform mobile device, sehingga dimana saja dan kapan saja aplikasi tersebut dapat
digunakan.
Gambaran umum untuk sistem yang baru adalah
1.
Aplikasi dijalankan pada device yang mendukung Java. Dalam hal ini device
yang digunakan adalah telepon seluler.
2.
Fasilitas yang terdapat pada aplikasi ini adalah mencatat data calon nasabah
yang hendak mendaftar menjadi anggota koperasi simpan pinjam. Data dari
calon nasabah yang dicatat tersebut adalah meliputi no. BA (Buku Anggota),
nama anggota, golongan, wilayah, tanggal menjadi anggota, no. BA referensi,
ahli waris, no. KTP/SIM, alamat, kota, telepon, tempat lahir, tanggal lahir,
jenis kelamin, status kawin/belum kawin, pendidikan dan pekerjaan.
Gambaran untuk sistem yang baru dapat dilihat dalam proses bisnis sebagai berikut :
20
A.3 Batasan Sistem
Batasan sistem untuk aplikasi ini adalah :
1
.
Aplikasi yang dibangun dengan platform J2ME ini bersifat single user dan
sangat terbatas dalam penyimpanan data. Hasil pencatatan data tersebut
akan di-parsing ke web server dan akan dikembalikan ke aplikasi untuk
ditampilkan.
2.
Data hasil pencatatan tidak dapat dilihat menggunakan aplikasi lain seperti
aplikasi yang berjalan pada platform desktop.
B
.
DFD (Data Flow Diagram)
DFD adalah sebuah model proses yang digunakan untuk menggambarkan
aliran data yang terlibat dalam satu prosedur (event) dari mana dan ke mana data yang
keluar serta dimana data tersebut disimpan. DFD menggambarkan penyimpanan data
dan proses yang mentransformasikan data. DFD menunjukkan hubungan antara data
pada sistem dan proses pada sistem.
B.1 Use Case Diagram
Register data calon nasabah Membaca data calon
nasabah
input data calon nasabah
Simpan data calon nasabah
user
B.2 Diagram Berjenjang
0
Data Recording1
Proses input data2
Proses register data3
Proses baca data4
Proses simpan dataGambar 3.3 Diagram Berjenjang
B.3 Overview Diagram level 0
1
Proses inputdata
USER
no.BA,nama anggota,golongan,wilayah,tanggal menjadi anggota,no. BA referensi,ahli waris, no. KTP/SIM,alamat,kota,telepon,tempat lahir, tanggal lahir,jenis kelamin,status kawin/belum kawin,pendidikan,pekerjaan.
2
Proses register data3
Proses baca datadetil data calon nasabah yang di-register
4
Proses simpan datadetil data calon nasabah
detil data calon nasabah yang di-register dan disimpan
22
C. Perancangan Antar Muka
Perancangan antar muka ini dimaksudkan sebagai rancangan awal
tampilan-tampilan yang akan digunakan dalam aplikasi J2ME, sehingga user yang akan
menggunakan aplikasi ini dapat berinteraksi dan berkomunikasi dengan telepon
seluler.
Tampilan awal
Input Data
SPLASH SCREEN
Keluar Menu
Gambar 3.5 Rancangan tampilan awal aplikasi
Setelah tampil user interface,
user dapat melihat tampilan menu aplikasi.
Berikut adalah gambaran tampilan menu aplikasi :
(TICKER)
Menu Menu
1.Data Baru 2.Tentang Program 3. Bantuan Program 4. Keluar
Input Data
Gambar 3.6 Rancangan tampilan menu
24
Berikut adalah tampilan ketika opsi Simpan dipilih.
No. BA xxxxxx
Nama Anggota xxxxxx
Golongan xxxxxx
Wilayah xxxxxx
Tanggal menjadi anggota xxxxxx
No. BA referensi xxxxxx
Ahli waris xxxxxx
No. KTP/SIM xxxxxx
Alamat xxxxxx
Kota xxxxxx
Telepon xxxxxx
Tempat lahir xxxxxx
Tanggal lahir xxxxxx
Jenis kelamin xxxxxx
Status xxxxxx
Pendidikan xxxxxx
Pekerjaan xxxxxx
Kembali Simpan Input Data
Berikut adalah tampilan ketika menu Tentang Program dipilih :
Program ini digunakan untuk mencatat detil data calon nasabah yang hendak mendaftar pada CU Khatuistiwa Bakti.
Program dibuat oleh Yoseph Rostandy P., Teknik Informatika, Fakultas Sains dan Teknologi, Kampus 3 Univ. Sanata Dharma, Yogyakarta.
Kembali Keluar Tentang Program
Gambar 3.8 Rancangan tampilan opsi Tentang
Berikut adalah tampilan ketika menu Bantuan Program dipilih :
Program ini bersifat mobile, dapat dijalankan pada semua mobile device yang mendukung Java dan MIDP 2.0
Untuk keterangan lebih lanjut, silakan menghubungi Administrator atau via email : cep_zone@plasa.com
Kembali Keluar Bantuan Program
BAB IV
IMPLEMENTASI SISTEM
Setelah melakukan analisa dan perancangan sistem, tahap berikutnya adalah
mengimplementasikan hasil dan rancangan yang sudah dibuat sebelumnya. Bab ini
membahas implementasi sistem berdasarkan analisa dan rancangan yang telah dibuat.
A. Kebutuhan Sistem
Untuk dapat menjalankan sistem, maka dibutuhkan beberapa sistem
penunjang, antara lain :
Software :
-
netBeans 5.5 Beta 2 dan add-on
Mobility Pack, digunakan untuk
membangun sistem.
-
J2ME
Wireless Toolkit 2.2 versi Beta, digunakan untuk uji coba sistem
dengan emulator.
-
PHPTriad 2.2, yang berisi paket web server Apache (1.3.23)
MySQL(3.23.48) dan PHP(4.1.1).
Hardware
:
-
Prosessor Intel Celeron 1,3 Ghz
-
RAM 192 MB
-
Harddisc 40 GB
Sistem Operasi :
Microsoft Windows XP Professional Service Pack
B. User Interface
Gambar 3.1 merupakan tampilan awal dari aplikasi ketika dijalankan pada
emulator.
Gambar 4.1 Tampilan awal aplikasi
Tampilan awal merupakan tampilan yang pertama kali dilihat oleh user pada
waktu pertama kali menjalankan aplikasi. Berikut adalah perintah untuk memproses
tampilan awal :
public programSkripsi() { initialize();
}
private void initialize() { // Insert pre-init code here
getDisplay().setCurrent(get_frmInput()); // Insert post-init code here
} /**
* This method should return an instance of the display. */
public Display getDisplay() {
return Display.getDisplay(this); } /**
* This method should exit the midlet. */
public void exitMIDlet() { getDisplay().setCurrent(null);
destroyApp(true);
28
Setelah opsi Launch dipilih, maka akan masuk ke dalam form
Input Data.
Gambar 3.2 merupakan tampilan Input Data aplikasi.
Gambar 4.2 Tampilan Input Data aplikasi
Berikut adalah perintah yang digunakan untuk menampilkan form Input Data.
public Form get_frmInput() {
if (frmInput == null) { // Insert pre-init code here
frmInput = new Form("Input Data", new Item[] { get_txtBA(), get_txtNama(),
get_txtGol(), get_txtWil(), get_txtTJA(), get_txtRef(), get_txtAw(), get_txtID(), get_txtAl(), get_txtKota(), get_txtTlp(), get_txtTmpLhr(), get_txtTglLhr(), get_txtGender(), get_txtStatus(), get_txtPend(), get_txtPkj()
});
frmInput.addCommand(get_cmdRegister()); frmInput.addCommand(get_cmdSimpan()); frmInput.addCommand(get_cmdKeluar()); frmInput.setCommandListener(this); // Insert post-init code here
Pada saat pertama kali menjalankan aplikasi, maka form akan menampilkan
form
Input Data yang kosong. Pada form ini, user dapat memasukkan data calon
nasabah. Setelah data-data tersebut selesai dimasukkan, user dapat memilih opsi
Menu. Pada opsi ini terdapat 2 sub opsi yaitu Register dan Simpan. Berikut adalah
tampilan ketika opsi Menu dipilih :
Gambar 4.3 Tampilan ketika opsi Menu dipilih
Berikut adalah perintah yang digunakan untuk memproses opsi Menu :
public void commandAction(Command command, Displayable displayable) { // Insert global pre-action code here
if (displayable == frmInput) { if (command == cmdRegister) {
getDisplay().setCurrent(get_frmResult()); } else if (command == cmdKeluar) {
exitMIDlet();
} else if (command == cmdSimpan) {
getDisplay().setCurrent(get_frmResult()); inputstream.read(incomingData);
str = new String(incomingData); }
} else if (displayable == frmResult) {
if (command == cmdBack) {
getDisplay().setCurrent(get_frmInput()); } else if (command == cmdExit) {
exitMIDlet(); }}}
30
Setelah
user
memilih sub opsi Register, maka aplikasi akan mengirim data
tersebut ke web server. Berikut adalah tampilan ketika aplikasi mengirim data ke web
server :
Gambar 4.4 Tampilan ketika opsi Register dipilih
Berikut adalah perintah yang digunakan untuk menampilkan sub menu
Register:
public Command get_cmdRegister() { if (cmdRegister == null) { // Insert pre-init code here
cmdRegister = new Command("Simpan", Command.OK, 1); // Insert post-init code here
Setelah data dikirim ke web server, maka data akan dikembalikan ke aplikasi
untuk dibaca/ditampilkan. Berikut adalah tampilan ketika data ditampilkan pada
aplikasi :
Gambar 4.5 Tampilan data yang telah di-Simpan
Berikut adalah tampilan ketika data gagal disimpan :
32
Berikut adalah tampilan ketika data sudah ada dan tidak bisa disimpan :
Gambar 4.7 Tampilan data sudah ada
Berikut adalah tampilan ketika opsi Tentang Program dipilih :
Perintah yang digunakan untuk menampilkan opsi Tentang program adalah :
public Command get_cmdAbout1() { if (cmdAbout1 == null) { // Insert pre-init code here
cmdAbout1 = new Command("Tentang Program", Command.OK, 1); // Insert post-init code here
} return cmdAbout1; }
Berikut adalah tampilan ketika opsi Bantuan Program dipilih :
Gambar 4.9 Tampilan opsi Bantuan Program
Perintah yang digunakan untuk menampilkan opsi Bantuan Program adalah :
public Command get_cmdHelp() { if (cmdHelp == null) { // Insert pre-init code here
cmdHelp = new Command("Bantuan Program", Command.OK, 1); // Insert post-init code here
BAB V
ANALISA HASIL
A. Pengujian Sistem
Setelah melewati tahap perancangan dan membangun aplikasi, maka
dilakukan proses pengujian aplikasi. Pengujian aplikasi akan dilakukan pada
emulator. Emulator yang digunakan adalah emulator
default yang sudah ada pada
J2ME Wireless Toolkit 2.2 versi Beta.
Gambar 5.1 Tampilan awal aplikasi
Pada saat pertama kali dijalankan, emulator akan menunjukkan
aplikasi-aplikasi mana yang siap untuk dijalankan. Setelah memilih menu Launch, aplikasi-aplikasi
akan langsung masuk pada form Input Data. Pada form ini, user dapat memasukan
data-data detil dari calon nasabah.
Berikut adalah tampilan ketika data seorang calon nasabah dimasukkan :
Gambar 5.2 Tampilan form Input Data
Setelah data dimasukkan, user
dapat memilih opsi Menu. Pada opsi ini
terdapat 4 sub menu yaitu Data Baru, Tentang Program, Bantuan Program dan Keluar.
Pada
sub menu Simpan, aplikasi akan mengirimkan data ke web server. Data yang
dikirimkan pada web server tersebut akan diproses oleh sebuah script
PHP. Berikut
adalah tampilan script tersebut :
<?php
$n = ereg_replace("~"," ",$n); $ah = ereg_replace("~"," ",$ah); $al = ereg_replace("~"," ",$al);
echo "No. BA : " .$ba. "\n"; echo "Nama Anggota: " .$n. "\n"; echo "Golongan : " .$g. "\n"; echo "Wilayah : " .$w. "\n";
echo "Tanggal menjadi anggota : " .$t. "\n"; echo "No. BA referensi : " .$rf. "\n";
36
Pengiriman data ke web
server ini bertujuan supaya data yang telah dicatat
dapat dikembalikan dan ditampilkan kembali pada aplikasi.
echo "Alamat : " .$al. "\n"; echo "Kota : " .$k. "\n"; echo "Telepon : " .$tl. "\n"; echo "Tempat lahir : " .$tel. "\n"; echo "Tanggal lahir : " .$tal. "\n"; echo "Jenis kelamin : " .$jk. \n"; echo "Status : " .$s. \n";
echo "Pendidikan : " .$pn. "\n"; echo "Pekerjaan : " .$pk. "\n"; ?>
Berikut adalah tampilan ketika data dikirim ke web
server dan dikembalikan
ke aplikasi :
Berikut adalah perintah yang digunakan untuk mengirim data ke web server :
Gambar 5.4 Tampilan pengiriman data dikembalikan
ke aplikasi
private String executePHP(String noBA, String nama, String golongan, String wilayah, String TJA, String ref, String waris, String ID, String alamat, String kota, String tlp, String tmpLhr, String tglLhr, String gender, String status, String pend, String pkj) throws IOException {
HttpConnection conn = null; int responsecode;
try {
String url =
"http://localhost/data.php?ba="+noBA+"&n="+trueName+"&g="+golongan+"&w="+w ilayah+"&t="+TJA+"&rf="+ref+"&ah="+trueWaris+"&id="+ID+"&al="+trueAlamat+"&k ="+kota+"&tl="+tlp+"&tel="+tmpLhr+"&tal="+tglLhr+"&jk="+gender+"&s="+status+"& pn="+pend+"&pk="+pkj;
conn = (HttpConnection)Connector.open(url); conn.setRequestMethod(HttpConnection.GET); responsecode = conn.getResponseCode(); if (responsecode != HttpConnection.HTTP_OK) {
throw new IOException("HTTP Error with code: " + responsecode); }
int size = 1000;
StringBuffer tmp = new StringBuffer(size);
InputStreamReader input = new
38
while ((input.read(buffer,0,buffer.length)) != -1) { tmp.append(buffer);
buffer = new char[1000]; }
input.close();
//5. Kembalikan hasilnya
String resultText = tmp.toString(); return resultText;
} catch(Exception e) {
throw new IllegalArgumentException(e.getMessage()); }
finally {
//6. Tutup koneksi HTTP if (conn != null) {
conn.close(); } } }
class sendRegister extends Thread { private CommandListener listener;
public void setListener (CommandListener cl) { listener = cl;
}
public void run() { try { String rsl =
executePHP(txtBA.getString(),txtNama.getString(),txtGol.getString(),txtWil.getStri ng(),txtTJA.getString(),txtRef.getString(),txtAw.getString(),txtID.getString(),txtAl.ge tString(),txtKota.getString(),txtTlp.getString(),txtTmpLhr.getString(),txtTglLhr.getSt ring(),txtGender.getString(),txtStatus.getString(),txtPend.getString(),txtPkj.getStrin g()); frmResult.deleteAll(); frmResult.append(rsl); } catch(Exception e) {
frmResult.deleteAll();
frmResult.append("Fail to get target file!"); }
} }
B. Kelebihan dan Kekurangan Sistem
Setelah melalui tahap pengujian sistem, terdapat beberapa kelebihan dan
kekurangan yaitu :
a. Kelebihan :
- sistem dapat digunakan oleh siapa saja
2.0 dan mendukung Java.
- sistem dapat menyimpan pada database.
b. Kekurangan :
BAB VI
KESIMPULAN
A. Kesimpulan
1. Aplikasi Pencatatan Data untuk calon nasabah bagi CU (Credit Union)
Khatulistiwa Bakti ini menggunakan teknologi J2ME dan HTTP sebagai
media untuk mempermudah kerja karyawan selama melakukan survey.
2. Aplikasi ini dapat berjalan pada semua device yang mendukung MIDP
2.0 dan mendukung Java.
3. Aplikasi ini sudah dapat diimplementasikan pada device yang
sebenarnya, tetapi belum dapat menyimpan data ke web server karena
penulis belum menemukan web hosting yang support dengan database
MySQL yang digunakan penulis.
DAFTAR PUSTAKA
Michael Siregar, Ivan, Membangun Aplikasi Chat Lewat GPRS dengan J2ME
Menggunakan netBeans IDE 5.0, Gava Media, Yogyakarta, 2007
Shalahuddin, M., Rosa A.S., Pemrograman J2ME, Informatika, Bandung,
2006
Nugroho, Bunafit, Dasar Pengembangan Program WAP dengan WML dan
PHP, Gava Media, Yogyakarta, 2005
Internet :
-
http://www.netBeans.org
-
http://www.mysql.com
LAM PI RAN
Nama file : programskripsi.java Source :
/*
* programSkripsi.java *
* Created on August 15, 2007, 3:46 PM */ package programSkripsi; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.io.*; import java.io.*; /** *
* @author blueSideGemini */
public class programSkripsi extends MIDlet implements CommandListener {
/** Creates a new instance of programSkripsi */ public programSkripsi() {
initialize(); }
private Form frmInput;//GEN-BEGIN:MVDFields private Form frmResult;
private TextField txtBA; private TextField txtNama; private TextField txtGol; private TextField txtWil; private TextField txtTJA; private TextField txtRef; private TextField txtAw; private TextField txtID; private TextField txtAl; private TextField txtKota; private TextField txtTlp; private TextField txtTmpLhr; private TextField txtTglLhr; private TextField txtGender; private TextField txtStatus; private TextField txtPend; private TextField txtPkj; private Command cmdExit; private Command cmdBack; private Command cmdSimpan; private Command cmdBack3; private Command cmdSimpan2; private Command cmdBaru; private Form frmNavigation; private Ticker ticker1;
private Command cmdBaru1;
private Command cmdSkip; private Image splash;
private org.netBeans.microedition.lcdui.SplashScreen splash1; private Form frmAbout;
private StringItem stringItem1; private Form frmHelp;
private StringItem stringItem2; private Command cmdBack1; private Command cmdBack2; private Command cmdAbout1; private Command cmdHelp; private Command cmdKeluar; private Command cmdExit1; private ImageItem imageItem1; private Image image1;
private TextField txtIbu;//GEN-END:MVDFields public String trueName ="";
public String trueAlamat=""; public String trueWaris=""; private Display display; //GEN-LINE:MVDMethods
/** Called by the system to indicate that a command has been invoked on a particular displayable.//GEN-BEGIN:MVDCABegin
* @param command the Command that ws invoked
* @param displayable the Displayable on which the command was invoked */
public void commandAction(Command command, Displayable displayable) {//GEN-END:MVDCABegin
// Insert global pre-action code here char inputNama[] = new char[50]; char inputWaris[] = new char[50]; char inputAlamat[] = new char[120];
if (displayable == frmInput) {//GEN-BEGIN:MVDCABody if (command == cmdBack3) {//GEN-END:MVDCABody // Insert pre-action code here
getDisplay().setCurrent(get_frmNavigation());//GEN-LINE:MVDCAAction34 // Insert post-action code here
} else if (command == cmdSimpan) {//GEN-LINE:MVDCACase34 // Insert pre-action code here
getDisplay().setCurrent(get_frmResult());//GEN-LINE:MVDCAAction30 // Insert post-action code here
txtNama.getChars(inputNama);
for (int i=0;i<=txtNama.getString().length();i++) { if (inputNama[i]==' ') {
inputNama[i] = '~'; }
trueName += inputNama[i]; }
trueName = trueName.substring(0,trueName.length()-1);
txtAw.getChars(inputWaris);
for (int i=0;i<=txtAw.getString().length();i++) { if (inputWaris[i]==' ') {
inputWaris[i] = '~';
}
trueWaris += inputWaris[i]; }
trueWaris = trueWaris.substring(0,trueWaris.length()-1);
txtAl.getChars(inputAlamat);
for (int i=0;i<=txtAl.getString().length();i++) { if (inputAlamat[i]==' ') {
inputAlamat[i] = '~'; }
trueAlamat += inputAlamat[i]; }
trueAlamat = trueAlamat.substring(0,trueAlamat.length()-1);
SimpanData sd = new SimpanData(); sd.setListener(this);
sd.start();
}//GEN-BEGIN:MVDCACase30 } else if (displayable == frmResult) {
if (command == cmdBaru) {//GEN-END:MVDCACase30 // Insert pre-action code here
getDisplay().setCurrent(get_frmNavigation());//GEN-LINE:MVDCAAction40 // Insert post-action code here
}//GEN-BEGIN:MVDCACase40 } else if (displayable == frmNavigation) {
if (command == cmdBaru1) {//GEN-END:MVDCACase40 // Insert pre-action code here
getDisplay().setCurrent(get_frmInput());//GEN-LINE:MVDCAAction50 // Insert post-action code here
} else if (command == cmdAbout1) {//GEN-LINE:MVDCACase50 // Insert pre-action code here
getDisplay().setCurrent(get_frmAbout());//GEN-LINE:MVDCAAction71 // Insert post-action code here
} else if (command == cmdHelp) {//GEN-LINE:MVDCACase71 // Insert pre-action code here
getDisplay().setCurrent(get_frmHelp());//GEN-LINE:MVDCAAction73 // Insert post-action code here
} else if (command == cmdKeluar) {//GEN-LINE:MVDCACase73 // Insert pre-action code here
exitMIDlet();//GEN-LINE:MVDCAAction75 // Insert post-action code here
}//GEN-BEGIN:MVDCACase75 } else if (displayable == splash1) {
if (command == splash1.DISMISS_COMMAND) {//GEN-END:MVDCACase75 // Insert pre-action code here
getDisplay().setCurrent(get_frmNavigation());//GEN-LINE:MVDCAAction60 // Insert post-action code here
}//GEN-BEGIN:MVDCACase60 } else if (displayable == frmHelp) {
if (command == cmdBack2) {//GEN-END:MVDCACase60 // Insert pre-action code here
getDisplay().setCurrent(get_frmNavigation());//GEN-LINE:MVDCAAction69 // Insert post-action code here
}//GEN-BEGIN:MVDCACase69
} else if (displayable == frmAbout) {
if (command == cmdBack1) {//GEN-END:MVDCACase69 // Insert pre-action code here
getDisplay().setCurrent(get_frmNavigation());//GEN-LINE:MVDCAAction67 // Insert post-action code here
}//GEN-BEGIN:MVDCACase67 }//GEN-END:MVDCACase67 // Insert global post-action code here }//GEN-LINE:MVDCAEnd
/** This method initializes UI of the application.//GEN-BEGIN:MVDInitBegin */
private void initialize() {//GEN-END:MVDInitBegin // Insert pre-init code here
getDisplay().setCurrent(get_splash1());//GEN-LINE:MVDInitInit // Insert post-init code here
}//GEN-LINE:MVDInitEnd
/**
* This method should return an instance of the display. */
public Display getDisplay() {//GEN-FIRST:MVDGetDisplay return Display.getDisplay(this);
}//GEN-LAST:MVDGetDisplay
/**
* This method should exit the midlet. */
public void exitMIDlet() {//GEN-FIRST:MVDExitMidlet getDisplay().setCurrent(null);
destroyApp(true); notifyDestroyed();
}//GEN-LAST:MVDExitMidlet
/** This method returns instance for frmInput component and should be called instead of accessing frmInput field directly.//GEN-BEGIN:MVDGetBegin2
* @return Instance for frmInput component */
public Form get_frmInput() {
if (frmInput == null) {//GEN-END:MVDGetBegin2 // Insert pre-init code here
get_txtGender(), get_txtStatus(), get_txtPend(), get_txtPkj(), get_txtIbu() }); frmInput.addCommand(get_cmdSimpan()); frmInput.addCommand(get_cmdBack3()); frmInput.setCommandListener(this);//GEN-END:MVDGetInit2 // Insert post-init code here
}//GEN-BEGIN:MVDGetEnd2 return frmInput;
}//GEN-END:MVDGetEnd2
/** This method returns instance for frmResult component and should be called instead of accessing frmResult field directly.//GEN-BEGIN:MVDGetBegin3
* @return Instance for frmResult component */
public Form get_frmResult() {
if (frmResult == null) {//GEN-END:MVDGetBegin3 // Insert pre-init code here
frmResult = new Form("Data Calon Nasabah", new Item[0]);//GEN-BEGIN:MVDGetInit3
frmResult.addCommand(get_cmdBaru());
frmResult.setCommandListener(this);//GEN-END:MVDGetInit3 // Insert post-init code here
}//GEN-BEGIN:MVDGetEnd3 return frmResult;
}//GEN-END:MVDGetEnd3
/** This method returns instance for txtBA component and should be called instead of accessing txtBA field directly.//GEN-BEGIN:MVDGetBegin4
* @return Instance for txtBA component */
public TextField get_txtBA() {
if (txtBA == null) {//GEN-END:MVDGetBegin4 // Insert pre-init code here
txtBA = new TextField("No. BA", null, 120, TextField.NUMERIC);//GEN-LINE:MVDGetInit4
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd4 return txtBA;
}//GEN-END:MVDGetEnd4
/** This method returns instance for txtNama component and should be called instead of accessing txtNama field directly.//GEN-BEGIN:MVDGetBegin5
* @return Instance for txtNama component */
public TextField get_txtNama() {
if (txtNama == null) {//GEN-END:MVDGetBegin5 // Insert pre-init code here
txtNama = new TextField("Nama Anggota", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit5
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd5
return txtNama;
}//GEN-END:MVDGetEnd5
/** This method returns instance for txtGol component and should be called instead of accessing txtGol field directly.//GEN-BEGIN:MVDGetBegin6
* @return Instance for txtGol component */
public TextField get_txtGol() {
if (txtGol == null) {//GEN-END:MVDGetBegin6 // Insert pre-init code here
txtGol = new TextField("Golongan", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit6
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd6 return txtGol;
}//GEN-END:MVDGetEnd6
/** This method returns instance for txtWil component and should be called instead of accessing txtWil field directly.//GEN-BEGIN:MVDGetBegin7
* @return Instance for txtWil component */
public TextField get_txtWil() {
if (txtWil == null) {//GEN-END:MVDGetBegin7 // Insert pre-init code here
txtWil = new TextField("Wilayah", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit7
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd7 return txtWil;
}//GEN-END:MVDGetEnd7
/** This method returns instance for txtTJA component and should be called instead of accessing txtTJA field directly.//GEN-BEGIN:MVDGetBegin8
* @return Instance for txtTJA component */
public TextField get_txtTJA() {
if (txtTJA == null) {//GEN-END:MVDGetBegin8 // Insert pre-init code here
txtTJA = new TextField("Tanggal jadi Anggota (DDMMYYY)", null, 120, TextField.NUMERIC);//GEN-LINE:MVDGetInit8
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd8 return txtTJA;
}//GEN-END:MVDGetEnd8
/** This method returns instance for txtRef component and should be called instead of accessing txtRef field directly.//GEN-BEGIN:MVDGetBegin9
* @return Instance for txtRef component */
public TextField get_txtRef() {
if (txtRef == null) {//GEN-END:MVDGetBegin9 // Insert pre-init code here
txtRef = new TextField("No. BA referensi", null, 120,
TextField.NUMERIC);//GEN-LINE:MVDGetInit9 // Insert post-init code here
}//GEN-BEGIN:MVDGetEnd9 return txtRef;
}//GEN-END:MVDGetEnd9
/** This method returns instance for txtAw component and should be called instead of accessing txtAw field directly.//GEN-BEGIN:MVDGetBegin10
* @return Instance for txtAw component */
public TextField get_txtAw() {
if (txtAw == null) {//GEN-END:MVDGetBegin10 // Insert pre-init code here
txtAw = new TextField("Ahli Waris", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit10
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd10 return txtAw;
}//GEN-END:MVDGetEnd10
/** This method returns instance for txtID component and should be called instead of accessing txtID field directly.//GEN-BEGIN:MVDGetBegin11
* @return Instance for txtID component */
public TextField get_txtID() {
if (txtID == null) {//GEN-END:MVDGetBegin11 // Insert pre-init code here
txtID = new TextField("No. KTP/SIM", null, 120, TextField.NUMERIC);//GEN-LINE:MVDGetInit11
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd11 return txtID;
}//GEN-END:MVDGetEnd11
/** This method returns instance for txtAl component and should be called instead of accessing txtAl field directly.//GEN-BEGIN:MVDGetBegin12
* @return Instance for txtAl component */
public TextField get_txtAl() {
if (txtAl == null) {//GEN-END:MVDGetBegin12 // Insert pre-init code here
txtAl = new TextField("Alamat", null, 120,
TextField.ANY);//GEN-LINE:MVDGetInit12
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd12 return txtAl;
}//GEN-END:MVDGetEnd12
/** This method returns instance for txtKota component and should be called instead of accessing txtKota field directly.//GEN-BEGIN:MVDGetBegin13
* @return Instance for txtKota component */
public TextField get_txtKota() {
if (txtKota == null) {//GEN-END:MVDGetBegin13 // Insert pre-init code here
txtKota = new TextField("Kota", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit13
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd13 return txtKota;
}//GEN-END:MVDGetEnd13
/** This method returns instance for txtTlp component and should be called instead of accessing txtTlp field directly.//GEN-BEGIN:MVDGetBegin14
* @return Instance for txtTlp component */
public TextField get_txtTlp() {
if (txtTlp == null) {//GEN-END:MVDGetBegin14 // Insert pre-init code here
txtTlp = new TextField("Telepon", null, 120, TextField.NUMERIC);//GEN-LINE:MVDGetInit14
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd14 return txtTlp;
}//GEN-END:MVDGetEnd14
/** This method returns instance for txtTmpLhr component and should be called instead of accessing txtTmpLhr field directly.//GEN-BEGIN:MVDGetBegin15
* @return Instance for txtTmpLhr component */
public TextField get_txtTmpLhr() {
if (txtTmpLhr == null) {//GEN-END:MVDGetBegin15 // Insert pre-init code here
txtTmpLhr = new TextField("Tempat Lahir", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit15
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd15 return txtTmpLhr;
}//GEN-END:MVDGetEnd15
/** This method returns instance for txtTglLhr component and should be called instead of accessing txtTglLhr field directly.//GEN-BEGIN:MVDGetBegin16
* @return Instance for txtTglLhr component */
public TextField get_txtTglLhr() {
if (txtTglLhr == null) {//GEN-END:MVDGetBegin16 // Insert pre-init code here
txtTglLhr = new TextField("Tanggal Lahir (DDMMYYYY)", null, 120, TextField.NUMERIC);//GEN-LINE:MVDGetInit16
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd16 return txtTglLhr;
}//GEN-END:MVDGetEnd16
/** This method returns instance for txtGender component and should be called instead of accessing txtGender field directly.//GEN-BEGIN:MVDGetBegin17
* @return Instance for txtGender component */
public TextField get_txtGender() {
if (txtGender == null) {//GEN-END:MVDGetBegin17 // Insert pre-init code here
txtGender = new TextField("Jenis Kelamin (L/P)", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit17
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd17 return txtGender;
}//GEN-END:MVDGetEnd17
/** This method returns instance for txtStatus component and should be called instead of accessing txtStatus field directly.//GEN-BEGIN:MVDGetBegin18
* @return Instance for txtStatus component */
public TextField get_txtStatus() {
if (txtStatus == null) {//GEN-END:MVDGetBegin18 // Insert pre-init code here
txtStatus = new TextField("Status Kawin/Belum Kawin", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit18
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd18 return txtStatus;
}//GEN-END:MVDGetEnd18
/** This method returns instance for txtPend component and should be called instead of accessing txtPend field directly.//GEN-BEGIN:MVDGetBegin19
* @return Instance for txtPend component */
public TextField get_txtPend() {
if (txtPend == null) {//GEN-END:MVDGetBegin19 // Insert pre-init code here
txtPend = new TextField("Pendidikan", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit19
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd19 return txtPend;
}//GEN-END:MVDGetEnd19
/** This method returns instance for txtPkj component and should be called instead of accessing txtPkj field directly.//GEN-BEGIN:MVDGetBegin20
* @return Instance for txtPkj component */
public TextField get_txtPkj() {
if (txtPkj == null) {//GEN-END:MVDGetBegin20 // Insert pre-init code here
txtPkj = new TextField("Pekerjaan", null, 120, TextField.ANY);//GEN-LINE:MVDGetInit20
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd20 return txtPkj;
}//GEN-END:MVDGetEnd20
/** This method returns instance for cmdExit component and should be called instead of accessing cmdExit field directly.//GEN-BEGIN:MVDGetBegin24
* @return Instance for cmdExit component */
public Command get_cmdExit() {
if (cmdExit == null) {//GEN-END:MVDGetBegin24 // Insert pre-init code here
cmdExit = new Command("Keluar", Command.EXIT, 1);//GEN-LINE:MVDGetInit24
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd24 return cmdExit;
}//GEN-END:MVDGetEnd24
/** This method returns instance for cmdBack component and should be called instead of accessing cmdBack field directly.//GEN-BEGIN:MVDGetBegin26
* @return Instance for cmdBack component */
public Command get_cmdBack() {
if (cmdBack == null) {//GEN-END:MVDGetBegin26 // Insert pre-init code here
cmdBack = new Command("Data Baru", Command.BACK, 1);//GEN-LINE:MVDGetInit26
// Insert post-init code here }//GEN-BEGIN:MVDGetEnd26 return cmdBack;
}//GEN-END:MVDGetEnd26
/** This method returns instance for cmdSimpan component and should be called instead of accessing cmdSimpan field directly.//GEN-BEGIN:MVDGetBegin29
* @return Instance for cmdSimpan component */