PEMBUATAN APLIKASI PENYEBARAN

advertisement
PEMBUATAN APLIKASI PENYEBARAN INFORMASI BERBASIS
SHORT MESSAGE SERVICE (SMS)
DI LINGKUNGAN PROGRAM STUDI TEKNIK INFORMATIKA
Oleh
RUSDIANTORO
NIM : 104091002846
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI (UIN)
JAKARTA
2010
ABSTRAK
Rusdiantoro (104091002846). Pembuatan Aplikasi EI (Extract Information) Berbasis
Sms di lingkungan Program Studi TI, mengambil sample pada penyebaran informasi
yang terjadi di lingkungan Program Studi TI. Dibimbing oleh Bapak Yusuf
Durachman dan Bapak Zulfiandri.
Program Studi TI adalah suatu sub unit yang menjalankan aktivitas akademik yang
ada pada program studi teknik informatika, yang mempunyai tugas mengatur segala
jenis aktivitas, menyebarkan informasi serta kegiatan apapun yang dilakukan di dalam
Program Studi TI.
Dalam menjalankan tugasnya pihak Program Studi cenderung mengalami kesulitan
untuk memberikan informasi kepada mahasiswa, dan bagi mahasiswa, mereka juga
mengalami kesulitan dalam pencarian informasi di sekitar fakultas, seperti
mendapatkan informasi Dosen Pembina Akademik, Dosen Pembimbing Praktek Kerja
Lapangan dan informasi lainnya. Kebutuhan mendasar pada informasi yang bersifat
penting agar pihak mahasiswa dan Program Studi dapat mengetahui informasi yang
mereka butuhkan, membuat saya sebagai peneliti tertarik untuk membuat aplikasi
berbasis SMS yang dapat membantu pihak Program Studi dan mahasiswa untuk
mendapatkan informasi yang mereka inginkan. Dengan judul “PEMBUATAN
APLIKASI PENYEBARAN INFORMASI BERBASIS SHORT MESSAGE
SERVOCE (SMS) DI LINGKUNGAN PROGRAM STUDI TEKNIK
INFORMATIKA “.
Dalam pengembangan sistem ini, penulis menggunakan metodologi RAD (Rapid
Application Development). Secara garis besar, aplikasi ini meliputi penyebaran
informasi untuk mahasiswa, informasi biaya semester, informasi dosen Pembina
Akademik dan Pembina PKL serta Polling sms untuk mengetahui suara mahasiswa.
dalam pembuatan aplikasi ini penulis menggunakan bahasa pemrograman java dan
menggunakan MySQL sebagai database nya serta menggunakan SmitDev Server
sebagai sms gateway. Dalam menjalankan aplikasi ini, penulis akan menggunakan
bahasa AT COMMAND untuk bahasa perintah handphone dan Bluetooth sebagai
media perantara antara komputer dan handphone.
Kata Kunci : Short Message Service, Program Studi Teknik Informatika, Informasi.
V Bab + xviii Halaman + 132 Halaman + Daftar Gambar + Daftar Tabel + Daftar
Simbol + Daftar Pustaka + Lampiran.
Pustaka Acuan (19, 2003-2009)
vi
KATA PENGANTAR
Alhamdulillah, penulis panjatkan kepada Allah SWT atas seluruh rahmat dan karunia-Nya
yang telah diberokan kepada penulis sehingga penulis dapat melaksanakan Penelitian dan
menyelesaikan tugas akhir ini. Shalawat beserta salam selalu tersampaikan kepada junjungan
kita Nabi besar Muhammad SAW, beserta kepada para keluarga, sahabat, dan seluruh
pengikutnya.
Skripsi ini berjudul Pembuatan Aplikasi Penyebaran Informasi Berbasis Short Message
Service (SMS) di lingkungan Program Studi Teknik Informatika, yang disusun untuk
memenuhi salah satu syarat dalam menyelesaikan program S1 pada program studi Teknik
Informatika di Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Pada kesempatan ini, penulis ingin menyampaikan ucapan terima kasih kepada pihak – pihak
yang telah mendukung terselesaikanya skripsi ini. Karena tanpa dukungan dari mereka,
penulis tidak akan mampu menyelesaikan laporan ini dengan baik. Mereka yang teleh
mendukung penulis adalah :
1. DR. Syopiansyah Jaya Putra, M.Sis. Selaku Dekan Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
2. Yusuf Durrachman, MIT dan Viva Arifin selaku Ketua dan Sekretaris Program Studi
Teknik Informatika beserta staff yang tidak dapat penulis sebutkan satu persatu.
3. Dosen Pembimbing, Bapak Yusuf Durrachman, MIT dan Bapak Zulfiandri MMSI.
Terima kasih banyak untuk waktu dan pengarahannya yang telah diberikan selama
ini.
4. Dosen Penguji, Husni Teja Sukmana, Phd dan Viva Arifin, MMSI. Terima kasih
banyak untuk waktu dan bimbinganya selama revisi sidang berlangsung. Penulis
vi
mohon maaf jika banyak mengganggu waktu bapak-ibu penguji agar dapat
terselesaikannya skripsi ini hingga akhir.
5. Kedua Orang Tuaku, tanpa doa dari kalian, penulis tidak akan memiliki semangat dan
motivasi untuk menyelesaikan penulisan ini. Adikku (Dinni), yang selalu
mengingatkan penulis untuk menyelesaikan tugas akhir ini.
6. Untuk seseorang yang selalu membantu dan memotivasiku dari awal penulisan
hingga seminar dan sidang, serta memberikan doa dan perhatian untukku ”Dian
Berliani”.
7. Kepada teman – temanku, Irham, Ismaya, Rijal, Andika dan teman – teman TI – B
2004 lainya yang tidak bisa penulis sebutkan satu per satu.
8. Kepada Staff Fakultas Sains dan Teknologi terutama Program Studi Teknik
Informatika yang tidak bisa disebutkan namanya satu per satu namun tidak
mengurangi rasa terima kasih saya sudah membantu dalam menyelesaikan penulisan
ini.
Pada kesempatan ini penulis ingin menyampaikan terima kasih yang sebesarbesarnya kepada semua pihak yang membantu penyelesaian penulisan skripsi ini hingga
akhir. Semoga segala bantuan yang diberikan rekan - rekan akan mendapatkan balasan
yang setimpal dari Allah AWT, Amiin.
Akhir kata penulis berharap agar skripsi ini dapat bermanfaat bagi semua yang
membaca.
Ciputat, Juni 2010
Penulis
vii
DAFTAR ISI
Halaman
Halaman Judul…………………………………………………………………
i
Halaman Persetujuan Pembimbing……………………………………………
ii
Halaman Pengesahan Ujian…………………………………………………..
iii
Halaman Pernyataan…………………………………………………………..
iv
ABSTRAK……………………………………………………………………..
v
KATA PENGANTAR………………………………………………………….
vi
DAFTAR ISI…………………………………………………………………..
viii
DAFTAR GAMBAR…………………………………………………………..
xiii
DAFTAR TABEL……………………………………………………………...
xv
DAFTAR LAMPIRAN……………………………………………………….
xvi
SIMBOL – SIMBOL ..………………………………………………………...
xvii
BAB I PENDAHULUAN……………………………………………………..
1
1.1 Latar Belakang……………………………………………………………..
1
1.2 Rumusan Masalah…………………………………………………………
4
1.3 Batasan Masalah…………………………………………………………
5
1.4 Tujuan dan Manfaat Penelitian…………………………………………….
5
1.4.1 Tujuan Penelitian…………………………………………………….
5
1.4.2 Manfaat Penelitian…………………………………………………...
6
1.5 Metodologi Penelitian……………………………………………………..
7
1.5.1 Waktu dan Tempat Penelitian………………………………………..
7
1.5.2 Metode Pengumpulan Data…………………………………………….. 7
viii
1.5.3 Metode Pengembangan Sistem…………………………………………. 9
1.6 Sistematika Penulisan Skripsi………………………………………………
11
BAB II LANDASAN TEORI………………………………………………..
12
2.1 Pembuatan……………………………………………………………………. 12
2.2 Aplikasi……….………..…………………………………………………….. 13
2.3 Pembuatan Aplikasi…………..……………………………………………… 14
2.4 SMS Gateway...................................................................................................
14
2.5 SMS (Short Message Service)..……………………………………………… 16
2.5.1 Pengertian SMS.......................................................................................
16
2.5.2 Sejarah SMS............................................................................................ 17
2.5.3 Fasilitas Dasar SMS................................................................................
17
2.5.4 Kelebihan Utama SMS............................................................................
19
2.6 GSM (Global System for Mobile)……………………………………………
20
2.7 Informasi..................................................……………………………………
20
2.8 Dosen..................…………………………………………………………….
21
2.9 Polling.............................…………………………………………………….
21
2.10 AT COMMAND............……………………………………………………
22
2.10.1 AT Command untuk Komunikasi Port....…………………………….. 23
2.10.2 AT Command untuk Pemilihan SMS Storage..………………………. 23
2.10.3 AT Command untuk SMS...………………………………………….. 23
2.11 Java…………………………………………………………………………. 24
2.11.1 Pengertian Java………………………………………………………..
24
2.11.2 Versi Java……………………………………………………………..
26
2.11.3 Kelebihan dan Kekurangan Bahasa Pemrograman Java.…………….. 26
ix
2.11.4 Java Net Beans dan Java Studio Enterprise.…………………………..
29
2.12 My Structured Query Language(MySQL)…………..……...……………
30
2.12.1 Fungsi SQL…..…………………………………………………….
31
2.12.2 Tipe Data SQL……………………………………………………..
32
2.12.3 Beberapa Perintah SQL.……………………………………………
34
2.12.3.1 Perintah Select………………………………………………..
37
2.13.3.2 Perintah Insert...........................................................................
36
2.12.3.3 Perintah Update..……………………………………………..
37
2.12.3.4 Perintah Delete………………………………………………..
39
2.13 Bluetooth.....………………………………………………………………
40
2.13.1 Sejarah Bluetooth..............................................................................
40
2.13.2 Cara Kerja Bluetooth.........................................................................
40
2.13.3 Frekuensi Bluetooth...........................................................................
42
2.13.4 Bluetooth Serial Port..........................................................................
42
2.14 Bagan Alir (Flowchart).…………………………………………………..
43
2.15 Perancangan Sistem DFD.………………………………………………..
44
2.15.1 Komponen DFD.................................................................................
44
2.15.2 Levelisasi DFD..................................................................................
45
2.15.3 Penggambaran DFD...........................................................................
46
2.15.4 Entity Relationship Diagram (ERD)..................................................
48
2.16 Kamus Data...……………………………………………………………..
51
2.16.1 Pendefinisian Data Element Dalam Kamus Data..………………….
51
2.17 Normalisasi..………………………………………………………………
54
2.17.1 Tujuan Dari Normalisasi ....................................................................
54
x
2.17.2 Proses Normalisasi..............................................................................
54
2.17.3 Tahapan Normalisasi .........................................................................
55
2.17.3.1 Ketergantungan Fungsional.......................................................
56
2.17.3.2 Ketergantungan Fungsional Penuh............................................
57
2.17.3.3 Ketergantungan Transitif...........................................................
58
2.18 Metode Penelitian RAD.………………………………………………….
66
2.19 Studi Literatur....………………………………………………………….
69
BAB III METODOLOGI PENELITIAN……………………………………...
72
3.1 Waktu dan Tempat Penelitian..……………………………………………
72
3.2 Profil Prodi TI...................................……….…………………………......
72
3.3 Kajian Penelitian...................................……….………………………….
74
3.4 Prosedur Penelitian…………………………………………………………
75
3.5 Teknik Pengumpulan Data.................……….…………………………......
78
BAB IV ANALISIS IMPLEMENTASI….……………………………………
79
4.1 Bisnis Modelling....……………………………..….………………………
79
4.1.1 Informasi apa saja yang mengendalikan proses...................................
82
4.1.2 Informasi apa yang dimunculkan.........................................................
82
4.1.3 Dimana Informasi Digunakan..............................................................
83
4.1.4 Siapa Yang Memproses.......................................................................
83
4.2 Data Modeling......………………………..……..…………………………
84
4.2.1 DFD (Data Flow Diagram)................................................................
84
4.2.1 Flowchart Data Flow Diagram............................................................
91
4.2.3 Kamus Data.........................................................................................
102
4.3 Process Modelling…………………..……………...…………......................
xi
105
4.3.1 Entity Relationship Diagram..................................................................
105
4.3.2 Relasi Antar Tabel..................................................................................
106
4.3.3 Normalisasi.............................................................................................
107
4.3.4 Perancangan Database...........................................................................
114
4.4 Application Generation...……………………………………………………
116
4.5 Testing & Turnover.....................……………………………………………
129
BAB V PENUTUP…………………………………………………………….
130
5.1 Kesimpulan…………………………………………………………………
130
5.2 Saran………………………………………………………………………..
131
DAFTAR PUSTAKA…………………………………………………………..
132
xii
DAFTAR GAMBAR
Halaman
Gambar 2.1 SMS Mobile Terminated point to point.......................................
17
Gambar 2.2 SMS Mobile Originated Point to Point.......................................
18
Gambar 2.3 Levelisasi DFD.......…………………………………………….
45
Gambar 2.4 Data Flow Untuk Perhitungan Pajak...........................................
53
Gambar 2.5 Tahapan Normalisasi...................................................................
55
Gambar 2.6 Diagram Ketergantungan Fungsional 1.......................................
60
Gambar 2.7 Diagram Ketergantungan Fungsional 2………….......................
64
Gambar 2.8 Model RAD.............................…………………………………
67
Gambar 4.1 Bisnis Modelling....................………………………………….
79
Gambar 4.2 Context Diagram Aplikasi EI (Extract Information)…………...
84
Gambar 4.3 Diagram Zero Aplikasi EI...........................................................
85
Gambar 4.4 Diagram detail level 1 proses kirim SMS…………...................
86
Gambar 4.5 Diagram detail Level 1 proses tanya pembimbing PKL.............
87
Gambar 4.6 Diagram detail Level 1 proses Tanya Biaya Mahasiswa..............
88
Gambar 4.7 Diagram detail Level 1 proses Polling SMS.................................
89
Gambar 4.8 Diagram detail Level 1 proses Tanya Dosen PA..........................
90
Gambar 4.9 Flowchart 1.1p proses isi no telepon............................................
91
Gambar 4.10 Flowchart 1.2p Input Buku Telepon...........................................
92
Gambar 4.11 Flowchart 1.3p Isi Pesan.............................................................
93
Gambar 4.12 Flowchart 2.1p Input Dosen Pembimbing PKL..........................
94
Gambar 4.13 Flowchart 2.2p Tanya Dosen Pembimbing PKL........................
95
xiii
Gambar 4.14 flowchart 3.1p Input Biaya Semester..........................................
96
Gambar 4.15 Flowchart 3.2p Tanya biaya Semester........................................
97
Gambar 4.16 Flowchart 4.1p Input Polling SMS.............................................
98
Gambar 4.17 Flowchart 4.2p Proses Isi Polling SMS......................................
99
Gambar 4.18 Flowchart 5.1p Input Dosen Pembimbing Akademik................
100
Gambar 4.19 Flowchart 5.2p Tanya Dosen Pembimbing Akademik..............
101
Gambar 4.20 Entity Relationship Diagram EI……………………………….
105
Gambar 4.21 Relasi Antar Tabel.....................................................................
106
Gambar 4.22 Tampilan Jendela Utama Aplikasi EI........................................
117
Gambar 4.23 Tampilan Jendela Kirim SMS...................................................
118
Gambar 4.24 Tampilan Jendela Pengaturan Terminal.................................
119
Gambar 4.25 Tampilan Jendela SMS Masuk.................................................
120
Gambar 4.26 Tampilan Jendela SMS Keluar.................................................
121
Gambar 4.27 Tampilan Jendela Buku Telepon..............................................
122
Gambar 4.28 Tampilan Jendela Input Data Mahasiswa, Dosen PA & PKL..
123
Gambar 4.29 Tampilan Jendela Biaya Semester............................................
124
Gambar 4.30 Tampilan Jendela Pertanyaan Polling.......................................
125
Gambar 4.31 Tampilan Jendela Hasil Polling................................................
126
Gambar 4.32 Tampilan Bluetooth..................................................................
127
Gambar 4.33 Detect Perangkat.......................................................................
128
Gambar 4.34 Bluetooth serial port service.....................................................
128
Gambar 4.35 Password untuk konfirmasi......................................................
129
xiv
DAFTAR TABEL
Halaman
Tabel 2.1 Contoh AT Command....................................................................
24
Tabel 2.2 Frekuensi Bluetooth di Berbagai Negara.......................................
42
Tabel 2.3 Pemasok Barang....................….…………………………………
56
Tabel 2.4 Kirim Barang.........................…………………………………….
57
Tabel 2.5 Gambar Contoh Ketergantungan Transitif………………………..
58
Tabel 2.6 KIRIM-1 (Unnormal)................………………………………….
59
Tabel 2.7 KIRIM-2 (1NF).................……………………………………….
60
Tabel 2.8 Pemasok-1 (2NF).................……………………………………..
61
Tabel 2.9 Kirim-3 (3NF)...........................................................…………….
62
Tabel 2.10 Pemasok-2 (3NF)....................................................…………….
62
Tabel 2.11 Pemasok-3 (3NF)...........................................................……….
63
Tabel 2.12 Mahasiswa-1 (Unnormal).......................................…………….
63
Tabel 2.13 Mahasiswa-2 (1NF)....................................................………….
64
Tabel 2.14 Mahasiswa-3 (3NF)....................................................………….
65
Tabel 2.15 Nilai (3NF).................................................................………….
65
Tabel 2.16 Mata Kuliah (3NF).....................................................………….
65
Tabel 2.17 Dosen (3NF)...............................................................………….
66
xv
DAFTAR LAMPIRAN
Halaman
LAMPIRAN A : Wawancara....................................................................…….
134
LAMPIRAN B : Coding Aplikasi EI...........................………………………..
136
LAMPIRAN C : Pembuatan Database...........................……………………...
179
xvi
SIMBOL – SIMBOL
Komponen DFD
xvii
Simbol Bagan Alir (Flowchart)
xviii
xix
Simbol ERD
xx
Simbol Notasi Kamus Data
NOTASI
ARTI
=
Terdiri dari, terbentuk dari, sama dengan
+
dan
()
optional
{}
iterasi/pengulangan, misal : 1{...} 10
[]
**
pilih salah satu dari beberapa alternatif
(pilihan) misal : [A|B|C|D]
komentar
@
identifier suatu data store
I
pemisah dalam bentuk [ ]
Alias
nama lain untuk suatu data
xxi
BAB I
PENDAHULUAN
1.1 Latar Belakang.
SMS (Short Message Service) merupakan layanan atau fasilitas yang
diberikan dan dikembangkan oleh para operator GSM (Global System of Mobile
Communication). Layanan atau fasilitas SMS merupakan salah satu hasil
pengembangan dari aplikasi perangkat seluler atau mobile-phone yang dapat
digunakan sebagai media berkomunikasi. Adapun cara berkomunikasi memakai SMS
adalah dengan cara mengirimkan sebuah pesan singkat, berupa text atau
alphanumeric yang sederhana. Cara komunikasi dengan menggunakan SMS
merupakan cara berkomunikasi yang lain, selain berkomunikasi dengan mengirim
sinyal suara.
Fasilitas SMS sampai saat ini masih dikembangkan lebih lanjut, tidak sekedar
untuk mengirim dan menerima sebuah pesan saja, tetapi sekarang telah banyak
dimanfaatkan untuk berbagai macam layanan. Mulai dari layanan marketing, layanan
informasi baik informasi film bioskop, jadwal perjalanan, humor, harga saham,
hingga layanan yang lebih kompleks seperti SMS Banking. SMS Polling dan Quiz,
serta masih banyak layanan lainya yang dapat dikembangkan dengan menggunakan
media SMS ini sesuai dengan kebutuhan yang diperlukan.
2
Program studi TI adalah suatu badan yang menjalankan aktivitas akademik
program studi Teknik Informatika, yang mempunyai tugas mengatur segala jenis
aktivitas dan kegiatan yang dilakukan di dalam program studi TI. Program studi TI
juga mempunyai tugas untuk memberikan informasi kepada mahasiswa dan melayani
mahasiswa dalam bidang seputar kegiatan mahasiswa. Susunan staff dalam Program
studi TI dikepalai oleh seorang kaprogram studi dan dalam kinerjanya kepala
program studi dibantu oleh seorang sekretaris, seorang kepala pengurus mahasiswa
program non-reguler dan tiga orang orang pemberi pelayanan informasi bagi
mahasiswa
Jenis pelayanan yang diberikan oleh pihak Program studi TI kepada
mahasiswa diantaranya adalah mengurus surat-menyurat untuk mahasiswa,
memberikan informasi dan dalam kegiatanya program studi juga menerima informasi
dari mahasiswa seperti biodata mahasiswa, pendapat dari mahasiswa mengenai
kinerja dosen, fasilitas fakultas serta masih banyak lagi jenis pelayanan dan informasi
yang diberikan atau diterima pihak program studi dari mahasiswa. Akan tetapi dalam
berjalanya kegiatan tersebut, pihak program studi cenderung mengalami kesulitan
untuk mendapatkan informasi serta mencari tahu informasi yang dibutuhkan baik
bagi pihak mahasiswa atau pihak program studi. Bagi pihak mahasiswa, mereka
banyak mengalami kesulitan dalam pencarian informasi di sekitar fakultas, dari
informasi Dosen Pembina Akademik, Dosen Pembimbing Praktek Kerja Lapangan
sampai informasi jadwal kelas dan informasi lainya. Dengan banyaknya jumlah
mahasiswa yang ada di program studi TI, dan terjadinya kesulitan dalam mengatur
3
jadwal mahasiswa untuk meminta informasi kepada pihak program studi maka sering
terjadi keterlambatan dalam permintaan informasi yang diajukan oleh mahasiswa,
baik bagi mereka yang ingin mengetahui dosen PA dan PKL atau mengurus surat –
surat yang dibutuhkan oleh mahasiswa. Bagi pihak program studi, mereka mengalami
kesulitan dalam memberikan informasi, menggumpulkan suara mahasiswa dan
informasi dari mahasiswa yang berperan penting bagi pihak program studi.
Sedangkan informasi yang disampaikan oleh pihak program studi mempunyai
peranan penting dalam kebutuhan informasi bagi mahasiswa, dan jika ada informasi
yang akan diberikan oleh pihak program studi kepada mahasiswa tertentu, mereka
masih mengalami kesulitan dalam memberikan informasi tersebut, karena belum ada
data yang lengkap atau mengalami kesulitan dalam pencarian data mahasiswa yang
bersangkutan.
Kebutuhan mendasar pada informasi yang bersifat penting agar pihak
mahasiswa dan program studi dapat mengetahui informasi yang mereka butuhkan
membuat saya sebagai peneliti tertarik untuk membuat aplikasi berbasis SMS yang
dapat membantu pihak program studi dan mahasiswa mendapatkan informasi yang
mereka inginkan. Dengan judul “ PEMBUATAN APLIKASI PENYEBARAN
INFORMASI
BERBASIS
SHORT
MESSAGE
SERVICE
(SMS)
DI
LINGKUNGAN PROGRAM STUDI TEKNIK INFORMATIKA “. Tulisan ini
merupakan penelitian skripsi yang merupakan syarat dalam memperoleh kelulusan
dan memperoleh gelar sarjana.
4
1.2 Rumusan Masalah
Berbagai bentuk pencarian informasi telah banyak dilakukan oleh pihak
mahasiswa maupun program studi, dari pencarian informasi yang bersifat langsung
(direct) seperti menanyakan informasi langsung kepada pihak program studi atau
bersifat tidak langsung (indirect) seperti pengambilan informasi dari mahasiswa
dalam bentuk angket. Dan dalam aktivitas program studi atau mahasiswa terdapat
beberapa permasalahan yang menjadi penghambat dalam pemberian dan penerimaan
informasi, permasalahan tersebut adalah sebagai berikut :
a. Kurangnya komunikasi antara mahasiswa dan pihak program studi, menjadi
salah satu penyebab utama tidak berjalannya penyebaran informasi secara efisien
di FST.
b. Dalam menanyakan informasi kepada pihak program studi, banyaknya jumlah
mahasiswa membuat pihak program studi mengalami kesulitan dalam melayani
permintaan mahasiswa, sehingga sering terjadi keterlambatan dalam pelayanan
permintaan informasi yang diajukan oleh mahasiswa.
c. Membuat aplikasi penyebaran informasi yang membantu pihak program studi TI
dalam memberikan informasi kepada mahasiswa dengan info terbaru, seperti
informasi pembimbing praktek kerja lapangan, pembina akademik, biaya
semester dan polling sms yang membantu mengetahui suara mahasiswa.
5
1.3 Batasan Masalah
Dalam pembuatan skripsi ini, peneliti membatasi permasalahan
dengan batasan masalah sebagai berikut :
a. Informasi yang diberikan dalam aplikasi ini berupa penyebaran informasi
langsung kepada mahasiswa, informasi dosen pembimbing praktek kerja
lapangan, pembina akademik, biaya semester dan polling sms.
b. Menggunakan media handphone bertipe GSM yaitu Siemens CX75 sebagai
server perantara antara aplikasi dari komputer dan koneksi sinyal.
c.
Menggunakan program smitdev server untuk membuat koneksi antara Bahasa
pemrograman Java dengan handphone yang dikoneksikan ke dalam PC.
d. Pihak yang menggunakan aplikasi ini ialah staff program studi Teknik
Informatika yang membantu pelayanan informasi mahasiswa.
1.4 Tujuan dan Manfaat Penelitian
1.4.1. Tujuan Penelitian
Adapun tujuan dari peneliti membahas studi kasus ini adalah :
1. Untuk mengembangkan dan mengimplementasikan aplikasi berbasis SMS
untuk digunakan di lingkungan Program studi TI.
2. Bagi pihak program studi aplikasi ini dapat membantu mereka dalam
memberikan dan menerima informasi dari mahasiswa serta dapat mengetahui
suara mayoritas mahasiswa.
6
3. Bagi pihak mahasiswa aplikasi ini diharapkan dapat membantu mahasiswa
dalam mendapatkan dan menerima informasi yang diberikan oleh pihak
program studi, terutama dalam hal pemberian informasi yang bersifat penting.
4. 1.4.2. Manfaat Penelitian
Manfaat dari penelitian ini adalah :
1.
Bagi Peneliti.
a) Menambah pengalaman, memperluas wawasan pemikiran dan
mengembangkan potensi diri.
b) Memperoleh pengetahuan baru yang berhubungan dengan bahasa
pemrograman java dan MySQL.
c) Untuk memenuhi salah satu syarat kelulusan strata satu (S1)
Program Studi Teknik Informatika Fakultas Sains dan Teknologi
UIN Syarif Hidayatullah Jakarta.
2.
Bagi Pihak Program Studi TI dan Mahasiswa.
a) Dengan dibuatnya aplikasi ini diharapkan akan mempermudah pihak
Program studi dan Mahasiswa dalam mencari dan mendapatkan
informasi yang dibutuhkan.
b) Dapat meningkatkan komunikasi antara pihak program studi dan
mahasiswa.
7
3.
Bagi Pihak Universitas.
a) Sebagai sumbangan karya ilmiah dalam disiplin ilmu khususnya
dalam bidang teknologi informatika.
1.5 Metodologi Penelitian
Langkah-langkah dalam pengerjaan Tugas Akhir :
1.5.1 Waktu dan Tempat Penelitian
Penelitian pengembangan aplikasi ini dilaksanakan selama 3 (tiga)
bulan, dimulai pada tanggal 1 Oktober 2009 sampai dengan 1 Desember 2009.
Tempat penelitian di Program Studi Teknik Informatika, Fakultas Sains dan
Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta.
1.5.2 Metode Pengumpulan Data
Penelitian yang dilakukan adalah penelitian eksperimen dan simulasi.
Penelitian ini menggunakan sebuah laptop dan handphone sebagai sarana untuk
mengembangkan aplikasi berbasis SMS.
8
a. Penelitian Kepustakaan
Metode ini dilakukan dengan cara mencari bahan – bahan atau
materi sumber yang dapat digunakan sebagai referensi peneliti atau
mencari hal – hal yang dapat digunakan dalam pembuatan aplikasi
berbasis SMS ini.
b. Wawancara
Wawancara
bertujuan
untuk
mengetahui
pendapat
dari
mahasiswa apakah aplikasi berbasis SMS ini akan bermanfaat bagi
mahasiswa dan civitas akademik.
c. Studi Literatur tentang :
1) Pemrograman dengan bahasa Java, karena aplikasi berbasis SMS
ini akan dibuat menggunakan bahasa Java.
2) Koneksi antara mobile-phone dengan komputer melalui Kabel
Data, serta menggunakan Bluetooth sebagai media perantara.
3) Belajar bahasa pemrograman SQL, serta menggunakan MySQL
sebagai database-nya.
9
1.5.3
Metode Pengembangan Sistem
Metode pengembangan sistem yang digunakan dalam penelitian ini
menggunakan metode RAD (Rapid Application Development) dan dengan
model-model sebagai berikut:
1). Model Bisnis
Pada tahap ini menentukan ruang lingkup program yang akan
dibangun sesuai fungsi – fungsi bisnis yang berjalan dalam proses bisnis
2). Model Data
Membentuk serangkaian objek data yang dibutuhkan untuk
menopang model bisnis tersebut. Pada tahapan ini, dilakukan analisa
terhadap berbagai macam hal yang dibutuhkan untuk membangun serta
mensimulasikan aplikasi berbasis SMS ini. Analisa yang dilakukan antara
lain adalah:
a) Analisa terhadap sumber daya yang dimiliki, termasuk untuk
menentukan jenis bahasa pemrograman dan database yang akan
digunakan.
b) Analisa terhadap teknologi SMS dan SMS Gateway.
c) Analisa serta memilih komponen yang tepat sesuai dengan
teknologi yang telah dipilih baik hardware maupun software untuk
memenuhi aplikasi layanan yang akan dibangun.
10
3). Perencanaan dan Pembuatan Perangkat Lunak
a) Membuat
agar
berhubungan
mobile-phone
dengan
komputer
yang
ada
melalui
di
server
dapat
data,
serta
kabel
menggunakan ATCommand dalam membaca data dari mobilephone ke PC.
b) Membuat aplikasi berbasis SMS.
c) Membuat server menjadi database untuk hasil informasi yang
diterima dari mahasiswa.
4.) Pengujian dan Analisa Perangkat Lunak
a) Pengujian program yang telah dibuat.
b) Analisa hasil output-an dari program yang telah dibuat.
5). Pengambilan Kesimpulan
Pengambilan kesimpulan terhadap alat yang telah dibuat sesuai
dengan hasil yang didapat dalam pengujian. Sedapat mungkin dilakukan
perbaikan-perbaikan sehinga mendapatkan hasil yang lebih optimum.
11
1.6 Sistematika Penulisan Skripsi
Dalam penelitian karya ilmiah ini, penulis membagi pembahasan
menjadi beberapa bab yang secara singkat dapat dijelaskan sebagai berikut:
BAB I
: Pendahuluan
Pada bab ini berisi pendahuluan yang terdiri dari latar belakang,
permasalahan, tujuan dan manfaat, metodologi penelitian dan
sistematika penelitian.
BAB II
: Landasan Teori
Bab ini akan menjelaskan secara singkat teori yang diperlukan dalam
pembuatan aplikasi ini.
BAB III
: Metodologi Penelitian
Pada bab ini akan dijelaskan proses penelitian peneliti dalam
merancang dan membangun aplikasi berbasis SMS.
BAB IV
: Analisa dan Perancangan Sistem
Pada bab ini akan dibahas proses analisa peneliti dan perancangan
serta pembuatan sistem aplikasi berbasis SMS untuk mendapatkan
suara dari mahasiswa secara cepat dan mudah.
12
BAB V
: Kesimpulan dan Saran
Dalam bab ini berisi uraian tentang kesimpulan-kesimpulan yang
didapat serta memberikan saran yang dianggap perlu.
BAB II
LANDASAN TEORI
2.1
Pembuatan
Pembuatan bertujuan untuk menghasilkan perangkat pembelajaran, seperti
silabus, bahan ajar, media, modul praktikum, latihan kerja siswa, alat mengukur
kemajuan belajar, alat mengukur hasil belajar, dan sebagainya. Yang melatar
belakangi perlunya dilakukan pembuatan adalah adanya masalah yang terkait dengan
perangkat pembelajaran yang kurang tepat. Masalah ini ditemui oleh peneliti dari
hasil pengamatan selama mengajar atau dari hasil needs assessment (Latief, 2009 :2).
Menurut undang – undang Republik Indonesia Nomor 18 Tahun 2002.
Pembuatan merupakan kegiatan ilmu pengetahuan dan teknologi yang bertujuan
memanfaatkan kaidah dan teori ilmu pengetahuan yang telah terbukti kebenarannya
untuk meningkatkan fungsi, manfaat, dan aplikasi ilmu pengetahuan dan teknologi
yang telah ada, atau menghasilkan teknologi baru.
13
2.2
Aplikasi
Aplikasi dapat di definisikan sebagai suatu sistem komputer (yang terdiri dari
beberapa program, modul dan lain-lain) yang di desain untuk menyelesaikan tugas
operasional yang membantu user dalam menyelesaikan pekerjaanya (Runkle, 2008
:1).
Sumber dari (http://www.wikipedia.org) menjelaskan bahwa aplikasi adalah
suatu subkelas perangkat lunak komputer yang memanfaatkan kemampuan komputer
langsung untuk melakukan suatu tugas yang diinginkan pengguna. Biasanya
dibandingkan dengan perangkat lunak sistem yang mengintegrasikan berbagai
kemampuan komputer, tapi tidak secara langsung menerapkan kemampuan tersebut
untuk mengerjakan suatu tugas yang menguntungkan pengguna. Contoh utama
perangkat lunak aplikasi adalah pengolah kata, lembar kerja, dan pemutar media..
Tujuan utama dari pembuatan suatu aplikasi ialah membantu user dalam kegiatan
yang akan ia lakukan. Seperti aplikasi MS Word yang membantu user untuk
mengetik atau mengerjakan tugas, aplikasi winamp yang membantu user untuk
mendengarkan musik, dan aplikasi lainya yang mempunyai fungsi yang sama yaitu
memudahkan user dalam melakukan hal yang diinginkanya.
14
2.3
Pembuatan Aplikasi
Pembuatan Aplikasi dapat di defnisikan sebagai pembuatan dari aplikasi yang
baru, dari segi jendela utama, server, dasar jaringan, tampilan web atau dari
kombinasi keduanya. Sebagai sebuah contoh aplikasi yang dikembangkan dalam
bentuk : penelitian, analisa, pengumpulan data, desain, programing, testing,
dokumentasi dan implementasi (Hasan, 2007 : 3).
Menurut sumber (dspace.widyatama.ac.id) pembuatan aplikasi adalah kumpulan
tata cara, teknik dan langkah – langkah pembuatan untuk menghasilkan software.
Atau dapat dikatakan pembuatan aplikasi adalah suatu kegiatan atau penelitian yang
bersifat membuat atau menciptakan suatu aplikasi.
2.4
SMS Gateway
SMS Gateway adalah sebuah perangkat lunak yang menggunakan bantuan komputer
dan memanfaatkan teknologi seluler yang diintegrasikan guna mendistribusikan
pesan – pesan yang di-generate lewat sistem informasi melalui media SMS yang dihandle oleh jaringan seluler (http://www.apolloasia.com/gateway.html). Secara
khusus, sistem ini akan memiliki fungsi-fungsi sebagai berikut :
15
1. Message Management dan Delivery
a. Pengaturan pesan yang meliputi manajemen prioritas pesan, manajemen
pengiriman pesan, dan manajemen antrian.
b. Pesan yang dilalukan harus sedapat mungkin fail safe. Artinya, jika terdapat
gangguan pada jaringan telekomunikasi, maka system secara otomatis akan
mengirim ulang pesan tersebut.
2. Korelasi
Berfungsi untuk melakukan korelasi data untuk menghasilkan data baru hasil
korelasi. Pada sistem yang terpasang saat ini, arsitektur lalu lintas data melalui SMS
sudah terjalin cukup baik. Hanya saja, keterbatasan akses data dan tujuan informasi
SMS yang belum terfokus menyebabkan banyaknya jawaban standar (default replies)
masih banyak terjadi.
SMS Gateway banyak digunakan dalam berbagai proses bisnis dan usaha. Proses
bisnis dan bidang layanan yang bisa ditangani oleh aplikasi SMS Gateway, yaitu
sebagai berikut :
a. Manajemen Inventori
b. CRM (Customer Relationship Management), misalnya Rumah Makan,
Cafe, Executive Club, Stasiun Radio, Stasiun TV, Lembaga Pendidikan
16
2.5
SMS (Short Message Service)
Short Message Sevice (SMS) adalah salah satu fasilitas dari teknologi GSM
yang memungkinkan mengirim dan menerima pesan – pesan singkat berupa text
dengan kapasitas maksimal 160 karakter dari Mobile Station (MS). Kapasitas
maksimal ini tergantung dari alphabet yang digunakan, untuk alphabet Latin
maksimal 160 karakter, dan untuk non – Latin misalnya alphabet Arab atau China
maksimal 70 karakter (Sugiono, 2007:10).
2.5.1 Pengertian SMS
Short Message Service (SMS) adalah kemampuan untuk mengirim dan
menerima pesan yang terbatas besarnya ( pesan singkat ) antar handphone/telepon
selular yang berupa data dalam bentuk string atau teks dan data binary. Setiap sms
dibtasi hanya sampai 160 karakter saja, dengan menggunakan huruf latin, sedangkan
untuk karakter non latin seperti karakter Arab atau chinese, sms dibatasi hanya
sampai 70 karakter saja. Sms merupakan salah satu dari GSM data services yang
disediakan oleh PLMN (Public Land Mobile Network). Contoh GSM data services
yang lain adalah fax dan data transfer. GSM data services hanya dapat digunakan jika
sebuah PLMN menyediakan fasilitas tersebut (Sugiono, 2007:10).
17
2.5.2 Sejarah SMS
SMS (Short Message Service) dikenalkan pada tahun 1991 di Eropa, dan pada
tahun 1998 mulai dipasarkan oleh BellSouth Mobility dan Nextel di Amerika Utara
yang tergabung dalam layanan Personal Communications Service (PCS) dalam
jaringan GSM (Global Standard for Mobiles), CDMA (Code Division Meltiple
Access) dan TDMA (Time Division Multiple Access) menggunakan frekuensi radio
900MHz, dan pada saat sudah berkembang dengan menggunakan frakuensi radio
1800MHz. Penyedia jasa point-to-point SMS memberikan layanan sebuah
mekanisme pengiriman pesan singkat (Na’am, 2006: 1).
2.5.3
Fasilitas Dasar SMS
Ada dua macam fasilitas dasar pada SMS (Na’am, 2006 : 8), yaitu :
a. SM MT (Short Message Mobile Terminated)
b.SM MO ( Short Message Mobile Originated)
SM MT merupakan kemampuan untuk mentransfer sebuah pesan singkat
yang dikirim dari SC ke salah satu MS, dan menyediakan informasi tentang
pengiriman pesan tersebut apakah berhasil atau gagal.
Sumber : Yulimingtarto, 2004 : 7
18
SM MO adalah kemampuan dari sistem GSM untuk mentransfer pesan yang
dikirim dari MS (Mobile Station) ke SME melalui SC, dan juga menyediakan
informasi mengenai pengiriman pesan, apakah gagal atau sukses, juga pesan tersebut
mengikutsertakan alamat dari SME supaya SC dapat berhasil mengirimkan pesan
tersebut.
Sumber : Yulimingtarto, 2004 : 7
Sebuah MS yang aktif dapat menerima pesan singkat (SMS deliver) setiap
saat, sebuah laporan selalu dikirimkan ke SC untuk memberi informasi bahwa MS
(Mobile Station) sudah menerima pesan, berhasil diterima atau tidak, serta alasanya.
MS yang aktif dapat mengirimkan pesan singkat (SMS Submit) setiap saat,
sebuah laporan selalu dikirimkan ke MS untuk memberi bahwa SC sudah berhasil
menerima pesan tersebut atau memberi informasi kepada MS bahwa tidak mungkin
mengirimkan sebuah pesan ke SC, serta alasanya.
19
2.5.4
Kelebihan Utama SMS
Kelebihan utama dari SMS ini antara lain adalah sebagai berikut (Lekkad :
2008, 2) :
a. Pengiriman pesan antar mobile-phone, adalah fungsi umum dari SMS.
b. Mengurangi kemungkinan miss dalam pengiriman informasi.
c. SMS dapat diterima secara langsung, yang menjadikan SMS solusi yang
ideal untuk menyebarkan informasi.
d. 94% SMS dibaca oleh para penerima.
e. Pengiriman pesan ke beberapa orang secara bersamaan.
f. Pengiriman pesan yang cepat, kurang dari 1 menit.
g. Layanan Informasi.
h. Sebagai pemberitahuan dan iklan, seperti informasi cuaca, pembukaan
outlet baru, kurs mata uang, ataupun horoskop.
20
2.6 GSM (Global System for Mobile)
Global system for mobile communication (GSM) merupakan standar yang diterima
secara global untuk komunikasi selular digital. GSM adalah nama group standardisasi
yang di mapankan pada tahun 1982 untuk menghasilkan standar telepon bergerak di
eropa, digunakan sebagai formula spesifikasi untuk pan-eropa sistem selular radio
bergerak yang bekerja pada frekuensi 900 Mhz. Dan diperkirakan banyak negara
lainnya diluar eropa akan turut menggunakan teknologi GSM (faiz, 2005 : 1).
2.7 Informasi
Informasi adalah data yang telah diproses menjadi bentuk yang memiliki arti
bagi penerima dan dapat berupa fakta, suatu nilai yang bermanfaat. Jadi ada suatu
proses transformasi data menjadi suatu informasi = input – proses – output .
(http://willis.comze.com/pengertian_informasi.html).
Informasi dapat juga dibuat untuk keperluan manajemen sesuai dengan unit
kerjanya pada tingkatnya masing-masing (http://willis.comze.com/). Informasi
mempunyai tingkat kualitas. Yang ditentukan beberapa hal antara lain:
a. Akurat, informasi harus bebas dari kesalahan-kesalahan dan tidak bisa
atau menyesatkan dan harus jelas penyampaian maksudnya.
b. Tepat pada waktunya, informasi yang datang tidak boleh terlambat pada
penerima.
21
c. Relevan, informasi harus mempunyai manfaat bagi pemakainya.
d. Lengkap, informasi berisi informasi yang dibutuhkan.
e. Jelas, isi informasi bertenu dengan keperluan pemakai.
2.8 Dosen
Dosen
ialah
pendidik
profesional
dan
ilmuan
dengan
tugas
utama
mentransformasikan, mengembangkan, dan menyebarluaskan ilmu pengetahuan,
teknologi, dan seni melalui pendidikan, penelitian, dan pengabdian masyarakat
(Peraturan Pemerintah Republik Indonesia Nomor 37 Tahun 2009)
2.9 Polling
Polling adalah bentuk ekspresi pengungkapan pendapat umum paling
kontemporer yang dikenal manusia. Akan lebih mudah memahami pengertian ini
dengan melihat sejarah ekspresi pendapat umum, dan bagaimana polling muncul
sebagai suatu bentuk pengungkapan pendapat umum. Inti dari pendapat umum adalah
diakuinya pendapat umum masyarakat. Masyarakat mempunyai cara-cara tertentu
agar pendapatnya diketahui orang lain atau diterima oleh pengambilan kebijakan.
Dengan demikian pendapat umum umurnya amat tua, meskipun baru pada abad 18,
pendapat umum mulai mendapat tempat penting dalam kekuasaan. Di sini pendapat
umum diterima dan mampu mempengeruhi kekuasaan dan kebijakan sehingga apa
22
yang dipikirkan masyarakat menjadi penting untuk diketahui. Ekspresi untuk
menyatakan pendapat umum itu berbeda-beda dari satu masa ke masa lain –
bergantung pada bagaimana paham demokrasi itu muncul, kemajuan teknologi yang
menentukan bagaimana pendapat itu harus disuarakan. Secara umum dalam sejarah
dikenal teknik ekspresi pendapat umum berturut-turut: orator, cetakan, kerumunan,
petisi, ruang diskusi, coffe house, gerakan revolusi, pemogokan, pemilihan umum,
straw polls (pemungutan suara tak resmi), surat kabar modern, surat untuk pejabat
publik, perencanaan agenda media massa, dan metode yang terbaru adalah penelitian
survey yang lebih dikenal sebagai polling. Pembagian dan tahap-tahap ekspresi
pendapat umum ini didasarkan pada pendapat Susan Herbst dalam bukunya
Numbered Voice. How Opinion Polling Has Shaped American Politics (Mazdalifah,
2006 : 38-39).
2.10 AT COMMAND
AT COMMAND adalah perintah-perintah yang digunakan pada telepon selular.
AT COMMAND dari tiap-tiap telepon selular (khususnya yang berbeda merk atau
pembuatnya) bisa berbeda-beda, tetapi pada dasarnya sama. Pada proyek ini AT
COMMAND yang digunakan adalah AT COMMAND untuk mengirim dan
menerima SMS. AT Command untuk SMS ini sama untuk semua tipe telepon selular
(AT Command Guide, 2000 : 3).
23
2.10.1 AT Command untuk Komunikasi Port
AT Command sebenarnya hampir sama dengan perintah >(prompt) pada DOS
(Disk Operating System). Perintah-perintah yang dimasukan ke port dimulai
dengan kata AT, kemudan diikuti oleh karakter lainya yang mempunyai fungsifungsi unik. Contohnya : perintah ATEI digunakan untuk mengetahui status port,
bila status port dalam keadaan siap, maka respon keluaran adalah ‘OK’
(Tetelepta, 2004 : 12).
2.10.2 AT Command untuk Pemilihan SMS Storage
AT Command yang digunakan untuk pemilihan SMS ‘storage’ adalah
AT+CPMS=##, dimana beberapa alternatif dari ## adalah :
a. ME (Mobile Equipment)
Pemilihan memori mobile-phone sebagai SMS Storage.
b. SM (SIM Card)
Pemilihan SIM Card sebagai SMS Storage.
2.10.3 AT Command untuk SMS
Perintah AT (Hayes AT Command) digunakan untuk berkomunikasi dengan
terminal (modem) melalui gerbang serial pada komputer. Dengan penggunaan
perintah AT, dapat diketahui atau dibaca kondisi dari terminal, seperti mengetahui
kondisi sinyal, kondisi baterai, mengirim pesan, membaca pesan, menambah item
24
pada daftar telepon, dan sebagainya. Pada Gambar 1 diperlihatka nbeberapa jenis
perintah AT yang berhubungan dengan penanganan pesan-pesan SMS (Efendy,
2004 : 78-79).
Tabel 2.1 Contoh AT Command
Sumber : Istiyanto, 2004 : 79
2.11 Java
2.11.1
Pengertian Java
Java merupakan sebuah bahasa berorientasi objek (object oriented
programming). Yang merupakan karya Sun Microsystem Inc. Yang dapat
dijalannkan dimanapun dan di sembarang platform apapun, di beragam lingkungan:
Internet, intranets, pemakaian produk elektronik, dan aplikasi komputer. Jika anda
pernah memprogram dengan bahasa pemrograman OOP , seperti C++ atau Smalltalk,
25
mungkin anda ingat betapa menyenangkannya memprogram dengan konteks objek.
Anda merancang beberapa objek satu demi satu dengan mendefinisikan berbagai
property yang dimiliki object tersebut dan pekerjaan (task) yang dapat ditangani oleh
objek tersebut. Kemudian anda merangkai semua objek tersebut dengan
mendefinisikan relasi antar objek tersebut seperti halnya membangun sebuah mobil
dari komponen-komponennya. Belakangan ini , mungkin anda akrab dengan slogan
"reusable of code". "Reuse of code" ini bukanlah cut & paste. Yang dimaskud dengan
"reuse of code" ini adalah suatu keadaan dimana para programmer untuk membangun
sebuah objek dengan mengextend objek-objek yang telah ada secara mudah. Secara
mudah disini adalah, programmer itu mungkin tidak perlu tahu dengan kode-kode
dari objek yang ingin ia extend, yang ia butuhkan hanyalah pengetahuan mengenai
property dari objek itu dan hal-hal yang dapat dilakukan oleh objek itu (Hariyanto,
2003 : 3-10).
Bahasa Pemrograman Java pertama kali lahir dari the green project, yang
berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek
tersebut belum menggunakan versi yang dinamakan Oak. Proyek tersebut dimotori
oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, beserta sembilan
pemrogram lainya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot
duke yang dibuat oleh Joe Palrang.
26
2.11.2 Versi Java
Versi awal Java ditahun 1996 sudah merupakan versi release sehingga
dinamakan Java Versi 1.0. Berdasarkan (http://www.wikipedia.com) Java versi ini
menyertakan banyak paket standar awal yang terus dikembangkan pada versi
selanjutnya :
a. java.lang: Peruntukan kelas elemen-elemen dasar.
b. java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
c. java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas
kelas penanggalan.
d. java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi
dengan komputer lain menggunakan jaringan TCP/IP.
e. java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
f. java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada
penjelajah web.
2.11.3 Kelebihan dan Kekurangan Bahasa Pemrograman Java
Kelebihan dari bahasa pemrograman java adalah :
a) Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa
platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali,
jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis
27
sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti
manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat
dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini
memungkinkan sebuah program berbasis java dikerjakan diatas operating
system Linux tetapi dijalankan dengan baik di atas Microsoft Windows.
Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux,
Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi
menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java)
untuk meninterpretasikan bytecode tersebut.
b) OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang
artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan
salah satu bahasa pemrograman berbasis objek secara murni. Semua tipe data
diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan
pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi
kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan
terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa
pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti
komunikasi antara komputer sekalipun.
c) Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan
library/perpustakaan (kumpulan program program yang disertakan dalam
pemrograman java) yang sangat memudahkan dalam penggunaan oleh para
28
pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini
ditambah dengan keberadaan komunitas Java yang besar yang terus menerus
membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh
kebutuhan pembangunan aplikasi.
d) Bergaya C++, memiliki sintaks seperti bahasa pemrograman [C++] sehingga
menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna
Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke
Java. Universitas-universitas di Amerika juga mulai berpindah dengan
mengajarkan Java kepada murid-murid yang baru karena lebih mudah
dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan
mengambil jurusan komputer.
e) Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan
memori sehingga para pemrogram tidak perlu melakukan pengaturan memori
secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
- Kekurangan dari bahasa pemrograman java adalah :
a) Tulis sekali, perbaiki di mana saja - Masih ada beberapa hal yang tidak
kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya
SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.
b) Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode
jadi menjadi kode sumber. Ini dimungkinkan karena koe jadi Java merupakan
29
bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti namanama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft
.NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih
sulit disembunyikan dan mudah dibajak/direverse-engineer.
c) Penggunaan memori yang banyak. Penggunaan memori untuk program
berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya
seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal).
Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi
terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah
bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih
dari 4 tahun.
2.11.4
Java Net Beans dan Java Studio Enterprise
Sejarah Netbeans berawal dari sebuah kota klasik yang sangat indah yaitu
Prague di Cekoslovakia. Disana ada sebuah perusahaan kecil yang sangat inovatif
mengembangkan Java IDE berbasis AWT/Swing yang disebut Forte. Sun
mengakuisisi Forte pada tahun 1999. Akuisisi ini menandakan Sun mulai serius
menggarap pasar IDE komersial. Untuk melakukan counter attack terhadap langkah
IBM meng-opensourcekan Eclipse, Sun melepaskan versi opensource dari Forte yaitu
Netbeans. Pada zaman Sun dipimpin oleh Scott McNealy, divisi IDE ini cukup serius
mengembangkan produk-produknya. Forte yang masih tetap berstatus komersial
30
dikembangkan menjadi SunONE Studio dengan menambahkan kemampuan untuk
mengembangkan aplikasi Java Enterprise (EJB), kemudian pada tahun 2003 dirubah
lagi namanya menjadi Sun Java System (www.ilmukomputer.com).
Beberapa tahun kemudian munculah sebuah framework pengembangan aplikasi
java enterprise yang disebut JSF. Pengembangan teknologi JSF dipimpin oleh Ed
Burns. JSF menjadi teknologi standard Java untuk mengembangkan aplikasi web
berbasis komponen, secara langsung ingin menyaingi teknologi ASP.NET-nya
Microsoft. Sayangnya pada awal-awal perkembangannya, JSF tergantung sekali
dengan IDE sebagai basis pengembangan aplikasi. Sun mengantisipasi ini dengan
memecah Sun Java Studio menjadi dua produk, Sun Java Studio Creator dan Sun
Java
Studio
Enterprise.
Sun
Java
Studio
Enterprise
difokuskan
untuk
mengembangkan aplikasi berbasis EJB dan Sun Java Studio Creator difokuskan
untuk mengembangkan aplikasi berbasis EJB dan JSF. Dengan teknologi JSF, kita
bisa mengembangkan aplikasi Java berbasis Visual IDE seperti halnya Visual Studio
for ASP.NET.
2.12 My Structured Query Language (MySQL)
MySQL adalah multi user database yang menggandung bahasa Structured
Query Language (SQL) yaitu bahasa yang digunakan untuk komunikasi dengan basis
data. Menurut ANSI (American National Standards Institute), bahasa ini merupakan
standar untuk Relational Basis data Management System (RDBMS).
31
Pada awalnya, MySQL mempunyai nama mSQL, dan sering digunakan untuk
keperluan koneksi ke table menggunakan fast low level routine. Namun mSQL
terbukti kurang cepat dan tidak sefleksibel saat itu. Karena hal itu, dibuatlah suatu
SQL interface dengan API interface yang hampir sama dengan mSQL dan akhirnya
lebih populer disebut MySQL (Dwi Prasetyo, 2004 : 11-14) .
Asal mula nama MySQL tidak terlalu jelas, tetapi yang pasti sudah lebih dari
10 tahun semua library dan tools yang ada diberikan awalan “My”. Logo MySQL
adalah ikan lumba-lumba bernama sakila. Nama ini diperoleh dari lomba pemberian
nama ikan lumba-lumba yang dimenangkan oleh Ambrose Twebaze, seorang opensource developer dari Swaziland, Afrika. Menurutnya nama Sakila asal kata dari
Siswati, yaitu bahasa lokal Swaziland. Sakila juga merupakan nama sebuah kota di
Arusha, Tanzania (Dwi Prasetyo, 2004 : 11-14).
2.12.1
Fungsi SQL
Fungsi-fungsi dari SQL adalah sebagai berikut :
a. Data Definition
Data Definition berfungsi untuk mendefinisikan struktur Gambar, tipe data
dari setiap field di dalam Gambar dan hubungan referensial dari field-field
tertentu ke field-field pada Gambar lain.
b. Data Retrieval
32
Aplikasi client memakai SQL untuk meminta data dari server. SQL juga
mengijinkan client mendifinisikan data yang akan dibaca dan bagaimana data
tersebut di retrieve, misalnya urutanya dan field-field apa yang di-retrieve.
c. Data integrity
Berfungsi untuk menjaga integritas data dengan berbagai konstrain integritas
sebagai bagian dari Gambar atau terpisah dari Gambar.
d. Data Processing
SQL mengijinkan client mengubah, menambah, menghapus data dari server.
e. Security
Sebagai proteksi data dengan mendefinisikan hak akses, view dan batasan
pengaksesan pada objek-objek database.
f. SQL mengatur pengaksesan secara simultan sehingga satu pengaksesan tidak
menggangu pengaksesan lainya.
2.12.2
Tipe Data SQL
Tipe-tipe data yang ada dalam SQL adalah sebgai berikut :
a. Char, character(n)
Mengidentifikasi sebuah string dari n karakter.
b. Int, integer
33
Sebuah bilangan integer (besanya biasanya 4 byte), tetapi hal tersebut
tergentug dari platform-nya.
c. Smallint
Sebuah bilangan integer yang lebih kecil dibanding integer, besarnya
biasanya 2 byte.
d. Float
Sebuah bilangan floating-point.
e. Double Frecision
Sebuah bilangan floating point. Yang berpresisi tinggi.
f. Numeric (precision, scale)
Sebuah bilangan floating-point dengan presisi dan skala terindikasi.
g. Date
Sebuah tanggal, tipe data ini bervariasi dari server ke server.
h. Blob
Sebuah object yang mengandung data biner dalam jumlah besar.
i. Varchar
Sebuah string yang ukurannya variable, digunakan untuk menghindari
konsumsi space dari sebuah fixed large string.
34
2.12.3
Beberapa Perintah SQL
SQL memiliki beberapa perintah untuk mengakses Gambar-Gambar dari
database. Perintah-perintah itu dapat digunakan untuk memasukan, melihat,
mengubah dan menghapus data dalam Gambar database. Perintah SQL juga dapat
mengakses beberapa Gambar sekaligus atau mencari data berdasarkan kondisi yang
diinginkan.
Perintah – perintah SQL tergantung dari jenis database dan database engine
yang digunakan. Pada dasarnya sebagian besar sama, akan tetapi ada perbedaan pada
fungsi-fungsinya. Misalnya ada perintah yang dimiliki SQL Server tetapi tidak
dimiliki oleh MySQL.
2.12.3.1
Perintah ‘Select’
Perintah Select adalah perintah yang umum digunakan dalam bahasa SQL.
Perintah ini digunakan untuk mengambil data dari satu atau lebih Gambar dalam
sebuah database. Sintaks perintahnya adalah sebagai berikut :
Select<fields>from<table>
Pada bagian field dapat diisi sebuah field atau lebih, yang dipisahkan dengan
tanda koma. Gunakan tanda ‘*’ pada bagian fields untuk mengidentifikasi bahwa
semua field yang ada pada table dipakai semua.
35
Jika Klausa where ditambahkan, perintah Select dapat digunakan untuk
memilih secara lebih spesifik record mana yang akan diambil. Sintaks perintahnya
sebagai berikut :
Select <fields>
from
<table>
where <expression>
Kriteria untuk <expression> dapat menggunakan operator-operator standar
seperti +, - , >, <, =, <>, >= dan <=. Selain itu ada pula operator-operator khusus
untuk SQL yaitu :
a. is null
untuk mengetes apakah nilai dalam field terdefinisi atau tidak.
b. in <list>
Untuk mengetes apakah nilai dalam field terdapat dalam ‘list’ atau
tidak.
c. between <min> and <max>
Untuk mengetahui apakah nilai dalam field ada dalam range yang
dibatasi oleh nilai<min> dan <max>.
36
d. like <list>
Untuk mengambil data record dengan kriteria nama sama dengan ‘list’
Klausa lain yang dapat ditambahkna adalah order by. Klausa ini
digunakan untuk sorting data. Sintaks perintahnya sebagai berikut :
Select<fields>
From<table>
Order by <fields>
Sorting dengan menggunakan klausa order ada 2 macam, yaitu sort by
ascending dan sort by descending.
Klausa yang juga dapat digunakan adalah klausa group by. Klausa ini dapat
mengelompokan data berdasarkan kriteria tertentu sebelum melakukan komputasi
dengan fungsi-fungsi standar. Sintaks perintahnya sebagai berikut :
Select <fields>
From <table>
Group by <fields>
Perintah Select juga dapat digunakan untuk mengambil nilai-nilai khusus
yang dikomputasi oleh fungsi-fungsi standar yang ada pada SQL. Fungsi-fungsi
standar tersebut adalah :
37
a. Fungsi avg
Fungsi ini digunakan untuk menghitung nilai rata-rata dari semua kolom.
Fungsi ini hanya dapat digunakan pada field yang berisikan data numerik.
b. Fungsi count
Fungsi ini digunakan untuk menghitung banyaknya data yang ada sesuai
dengan syarat yang ditentukan.
c. Fungsi Max
Fungsi ini digunakan untuk mendapatkan nilai maksimum dari sebuah
kolom
d. Fungsi min
Fungsi ini digunakan untuk mendapatkan nilai minimum dari sebuah
kolom
e. Fungsi sum
Fungsi ini digunakan untuk menghitung jumlah total dari nilai-nilai yang
ada pada sebuah kolom. Fungsi ini hanya dapat digunakan pada kolom
yang berisi data numerik.
2.12.3.2
Perintah ‘Insert’
Perintah Insert digunakan untuk menambahkan record baru ke dalam Gambar.
Sintaks perintahnya adalah sebagai berikut :
Insert into<table> (field1,field2,...)
38
Value (nilai1, nilai2,...)
Table adalah nama dari Gambar yang menjadi tujuan untuk memasukan data,
dan field adalah field yang akan memasukan data serta nilai adalah nilai dari data
yang akan dimasukan ke field pada Gambar. Nama field tujuan pada Gambar
urutanya harus sama dengan urutan nilai yang akan dimasukan, misalnya yang
dimasukan field1 adalah nilai 1.
2.12.3.3
Perintah ‘Update’
Perintah update digunakan untuk memodifikasi satu atau lebih record dalam
sebuah Gambar. Sintaks perintahnya adalah sebagai berikut :
Update<table>
Set<field1 = nila1>, <field2 = nila2>,...
Where<expression>
Table adalah nama dari table yang akan diubah datanya, field adalah field
yang akan diubah nilainya serta nilai adalah nilai baru dari data yang akan dimasukan
ke field lama pada Gambar. Expression adalah syarat yang harus dipenuhi untuk
mengubah data pada Gambar, apabila ingin merubah semua record pada Gambar
maka syarat where tidak diperlukan.
39
2.12.3.4
Perintah ‘Delete’
Perintah delete digunakan untuk menghapus satu atau lebih record dalam
sebuah Gambar. Sintaks perintahnya adalah sebagai berikut :
Delete from <table>
Where<expression>
Table adalah nama dari Gambar yang akan dihapus datanya dan expression
Adalah syarat yang harus dipenuhi untuk menghapus data pada Gambar. Apabila
ingin menghapus semua record pada Gambar, maka syarat where tidak diperlukan.
2.13 Bluetooth
Bluetooth adalah nama yang diadopsi dari nama Raja Denmark Harald
Bluetooth yang memerintah kerajaan Denmark pada tahun 940 – 981 SM. Namanya
diambil karena raja Denmark tersebut sukses menggabungkan 2 kerajaan yaitu
Denmark dan Norwegia menjadi sebuah kerajaan utuh. Selain itu, dia juga sukses
dalam menyebarkan agama kristen di kedua negara tersebut. Dengan penamaan
tersebut diharapkan Bluetooth yang merupakan media transmisi ini bisa juga menjadi
teknologi pemersatu yang digunakan di dalam dunia komputer dan dunia
telekomunikasi (Puy, 2008 : 6).
40
2.13.1 Sejarah Bluetooth
Bluetooth pertama kali ditemukan dan dikembangkan pada tahun 1994.
Bluetooth ini ditemukan secara tidak sengaja, awalnya penelitian yang dilakukan di
universitas di Swedia ini ingin membuat koneksi nirkabel yang menghubungkan
earphone cordless dengan headset handphone. Namun akhirnya mereka malah
menemukan koneksi tersebut dapat dijadikan sebagai gelombang radio yang tidak
membutuhkan lisensi. Kemudian dari sinilah awal mulainya pengembangan
perangkat bluetooth. Hingga perusahaan Ericson pun tanggap akan manfaat teknologi
ini sehingga Ericson melakukan suatu terobosan dengan memberikan teknologi ini
secara gratis kepada publik. Pada awal tahun 1998 Ericson, Nokia, IBM, Toshiba,
dan Intel membetuk SIG (Bluetooth Special Interest Group) yang digunakan untuk
melanjutkan pengembangan teknologi ini. Kelima perusahaan yang membentuk SIG
tersebut merupakan perwakilan dari berbagai bidang industri yang ada. Ericsson dan
Nokia mewakili perusahaan telepon genggam, IBM dan Intel mewakili perusahaan
pengembang komputer, dan Toshiba mewakili perusahaan yang bergerak dalam
teknologi pemrosesan signal digital (Eko, 2005 : 3).
2.13.2
Cara Kerja Bluetooth
Di dalam Bluetooth terdapat microchip (transceiver) yang mengirimkan dan
menerima frekuensi sebesar 2.4 GHz. Frekuensi ini tersedia di seluruh dunia (dengan
41
beberapa perbedaan bandwith pada setiap Negara). Di samping informasi, ada tiga
jalur suara yang tersedia.
Gambar 2.5 Gambaran Bluetooth
Informasi tersebut dapat merubah kecepatan pengiriman data sampai 1
megabit per detik (dalam generasi kedua Bluetooth mempunyai kecepatan hingga
2megabit per detik). Skema dari “frequency hop”(lompatan frekuensi) membuat
peralatan Bluetooth dapat berkomunikasi secara khusus di dalam area yang terdapat
banyak gangguan elektromagnetik. Selain itu di dalam peralatan bluetoth juga
terdapat skema encryption dan check yang membuat komunikasi dalam Bluetooth
lebih aman.
42
2.13.3
Frekuensi Bluetooth
Bluetooth standar beroperasi pada frekuensi bandwith sebesar 2,4 GHz. Dan
frekuensi bandwith tersebut tersedia di seluruh dunia, luasnya bandwith dapat
berbeda di setiap Negara. Frekuensi yang digunakan untuk penelitian dan industri
medical berdasarkan ISM (Industrial, scientific and medical) sebesar 2,45 GHz. Besar
bandwith yang digunakan di Amerika Serikat dan Eropa. diantara 2.400 hingga
2.483,5 MHz begitu pula di Prancis dan Spanyol. Di jepang besarnya bandwith
diantara 2.471 hingga 2.497 MHz.
Tabel 2.2 Frekuensi Bluetooth di berbagai negara
2.13.4 Bluetooth Serial Port (SPP)RFCOMM (Cable replacement protocol)
Serial Port Profile (SPP), adalah salah satu layanan yang ada di dalam
bluetooth. Seperti yang kita ketahui banyak jenis layanan bluetooth yang lain seperti,
“Audio Headset” atau “Bluetooth Printer”. Bluetooth serial port bisa di kategorikan
sebagai COM di dalam Windows (seperti COM3 atau COM7), yang dapat berfungsi
sama dengan port RS232 yang tersedia di komputer atau virtual COM (Heggel,
2009:1).
43
2.14
Bagan Alir (Flowchart)
Flowchart merupakan teknik analitikal yang digunakan untuk mendeskripsikan
beberapa aspek dari sistem informasi dalam wujud yang lebih jelas, ringkas, dan
secara logika. Flowchart menggunakan serangkaian simbol standar untuk
mendeskripsikan dalam gambar, prosedur pemrosesan transaksi yang digunakan oleh
perusahaan dan aliran data dalam suatu sistem.Menunjukkan apa yang dikerjakan di
sistem (jogiyanto, 2005 : 795)
Simbol-simbol :
44
2.15
Perancangan Sistem DFD
Data Flow Diagram (DFD) yang didefinisikan sebagai suatu alat yang
membentuk permodelan dan memungkinkan analis sistem dalam menggambarkan
sistem sebagai suatu jaringan proses (network) dan fungsi yang dihubungkan satu
dengan yang lainnya dan disebut dengan arus data (data flow). (Jogiyanto, 2000:
700).
Komponen-komponen Data Flow Diagram, terdiri atas (Jogiyanto, 2000, hal 700) :
2.15.1 Komponen DFD
Komponen dalam data flow diagram menurut Jogiyanto terdiri dari :
1. Terminator
Terminator digambarkan dengan bentuk persegi empat, terminator merupakan
lingkungan luar (eksternal) dari suatu sistem yang sedang dikembangkan juga
menujukan tempat asal data (source)dan tujuan data.
2. Transformation Proses
Proses melakukan suatu perubahan berdasarkan data yang dimasukan dan
menghasilkan data atau beberapa keterangan dari perubahan tersebut.
3. Data Flow
Data flow merupakan aliran data yang berjalan dan diberi simbol anak panah.
4. Data Store
Data store merupakan penyimpanan sementara dari suatu data.
45
2.15.2 Levelisasi DFD
Gambar 2.3 : Levelisasi DFD
Sumber :Jogiyanto, 2005 : 715
46
2.15.3 Penggambaran DFD
Tidak ada aturan baku untuk menggambarkan DFD, tapi dari berbagai
referensi yg ada, secara garis besar (Jogiyanto, 200 : 713):
1. Buat diagram context
Diagram ini adalah diagram level tertinggi dari DFD yg menggambarkan
hubungan sistem dgn lingkungan luarnya.
Cara pembuatanya :
a. Tentukan nama sistemnya.
b. Tentukan batasan sistemnya.
c. Tentukan terminator apa saja yg ada dalam sistem.
d. Tentukan apa yg diterima/diberikan terminator dari/pada sistem.
e. Gambarkan diagram context.
2. Buat diagram level Zero
Diagram ini adalah dekomposisi dari diagram Context.
Cara pembuatnya :
a. Tentukan proses utama yg ada pada sistem.
b. Tentukan apa yg diberikan/diterima masing-masing proses pada/dari
sistem sambil memperhatikan konsep keseimbangan (alur data yg
47
keluar/masuk dari suatu level harus sama dgn alur data yg
masuk/keluar pada level berikutnya)
c. Apabila diperlukan, munculkan data store (master) sebagai sumber
maupun tujuan alur data.
d. Gambarkan diagram level zero.
e. Hindari perpotongan arus data
f. Beri nomor pada proses utama (nomor tidak menunjukkan urutan
proses).
3. Buat diagram level Satu
Diagram ini merupakan dekomposisi dari diagram level zero.
Cara Pembuatanya :
a. Tentukan proses yg lebih kecil (sub-proses) dari proses utama yg ada
di level zero.
b. Tentukan apa yg diberikan/diterima masing-masing sub-proses pada
atau dari sistem dan perhatikan konsep keseimbangan.
c. Apabila diperlukan, munculkan data store (transaksi) sbg sumber
maupun tujuan alur data.
d. Gambarkan DFD level Satu
e. Hindari perpotongan arus data.
48
f. Beri nomor pada masing-masing sub-proses yg menunjukkan
dekomposisi dari proses sebelumnya. Contoh : 1.1, 1.2, 2.1
4. DFD level dua, tiga,...
Diagram ini merupakan dekomposisi dari level sebelumnya. Proses
dekomposisi dilakukan sampai dg proses siap dituangkan ke dalam program. Aturan
yg digunakan sama dgn level satu.
2.15.4 Entity Relationship Diagram (ERD)
Model Entity Relationship adalah suatu bentuk penyajian data yang
berhubungan dengan menggunakan Entity dan Relationship. (Jogiyanto, 2005 : 782).
Komponen-komponen dalam ERD, yaitu :
1. Entity
Entity adalah suatu bentuk yang berbeda dengan yang lainnya, dimana informasi
didalamnya terdapat atribut-atribut yang berkumpul. Entity Set merupakan
sekumpulan dari entity yang sejenis, objek yang ada di dalamnya dapat berupa objek
secara fisik dan objek secara konsep. Bentuk yang digunakan untuk entity adalah
persegi panjang.
49
2. Relationship
Relationship adalah suatu bentuk hubungan yang terjadi dan salin berkaitan antara
satu atau lebih entiry. Relationship set merupaka sekumpulan dari relasi yang sejenis,
bentuk yang digunakan relationship adalah bentuk belah ketupat/wajik.
3. Atribut
Atribut adalah karakteristik dari entity atau relationship yang menyediakan
penjelasan detail tentang entity atau relationship tersebut. Nilai atribut merupakan
data actual atau informasi yang disimpan pada suatu atribut didalam suatu entity atau
relationship tersebut. Dibawah ini merupakan jenis-jenis atribut, yaitu :
a. Atribut Key
Suatu atribut kunci yang menentukan suatu entity secara unik atau yang disebut
dengan primary key.
b. Atribut Sample
Suatu atribut yang bukan kunci dan mempunyai nilai tunggal. Bentuk yang digunakan
pada atribut ini adalah oval.
50
4. Cardinality Ratio
Cardinality Ratio menjelaskan batasan jumlah keterhubungan suatu entity lainnya.
Jenis-jenis cardinality ratio, yaitu (Waljiyanto, 2000, hal 51) :
a. One to One Relationship (1:1)
Hubungan antara dua file pertama dengan file kedua, hubungan kedua file tersebut
adalah satu banding satu.
b. One To Many Relationship/Many To Relationship (1:M/M:1)
Hubungan antara file dengan file kedua dan merupakan satu berbanding banyak atau
hubungan file pertama dengan file kedua adalah banyak berbanding satu
51
2.16 Kamus Data
Kamus data adalah suatu daftar data elemen yang terorganisir dengan definisi
yang tetap dan sesuai dengan sistem, sehingga user dan analis sistem mempunyai
pengertian yang sama tentang input, output, dan komponen data strore. Kamus data
ini sangat membantu analis sistem dalam mendefinisikan data yang mengalir di
dalam sistem, sehingga pendefinisian data itu dapat dilakukan dengan lengkap dan
terstruktur. Pembentukan kamus data dilaksanakan dalam tahap analisis dan
perancangan suatu system (Mazwan, 2007 : 1).
2.16.1 Pendefinisian Data Element Dalam Kamus Data
Kamus data mendefinisikan data elemen dengan cara (Mazwan, 2007 :6) :
a. menguraikan arti dari alur data dan data store dalam DFD.
b. Menguraikan komposisi paket data pada alur data ke dalam alur yang lebih
elementary(kecil) contoh : Alamat langganan yang terdiri dari nama jalan,
kota dan kode pos.
c. Menguraikan komposisi paket data dalam data store.
d. Menspesifikasikan nilai dan unit informasi dalam alur data dan data store.
e. Menguraikan hubungan yang terperinci antara data store dalam suatu entity
relationship diagram (ERD).
52
Notasi Kamus Data
Notasi “=“
Elemen data elementary adalah suatu dekomposisi yang tidak mempunyai arti dalam
konteks lingkungan user.
Contoh :
Nama = Nama_Depan + Nama_Belakang
Nama_Depan dan Nama_Belakang dari contoh di atas tidak mempunyai arti, dan
tidak ada komentar yang ditunjukan dengan “* *“
53
Contoh : Current_Height = *Unit : 150 Cm*
Notasi “ ( ) “
Berdsarkan contoh di atas dapat diberikan kamus datanya sebagai berikut :
Nama_Langganan = (Title) + Nama_Depan + (Nama_Tengah) + Nama_Belakang
Customer_Address = (Shipping_Address) + (Billing_Address)
Notasi “ { } “
Notasi ini digunakan untuk menggambarkan suatu komponen data secara berulang
Contoh :
Order = Customer_Name + Shipping_Address + 1{item}10
Notasi “ [ ] “
Contoh :
Jenis_Kelamin = [ Pria I Wanita]
Notasi “ * * “
Contoh :
Gambar 2.4 : Data Flow Untuk Perhitungan Pajak
Sumber : Mazwan, 2007 : 8
54
Penjualan = *Jumlah penjualan selama satu tahun*
*Dalam ribuan rupiah*
Pajak rate = *Satuan pajak yang berlaku ditentukan oleh pemerintah dalam %*
Jumlah Pajak = *Jumlah pajak yang harus dibayar hasil perkalian dari sales*
*pajak rate dalam ribuan rupiah*
Notasi “ Alias “
Contoh :
Client = Alias untuk customer.
2.17 Normalisasi
Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam GambarGambar untuk memenuhi kebutuhan pemakai di dalam suatu organisasi (Lajmudin,
2005 : 168).
2.17.1 Tujuan dari Normalisasi
a. Untuk menghilangkan kerangkapan data
b. Untuk mengurangi kompleksitas
c. Untuk mempermudah pemodifikasian data
2.17.2 Proses Normalisasi
A. Data diuraikan dalam bentuk Gambar, selanjutnya dianalisis berdasarkan
persyaratan tertentu ke beberapa tingkat.
55
B. Apabila Gambar yang diuji belum memenuhi persyaratan tertentu,maka
Gambar tersebut perlu dipecah menjadi beberapa Gambar yang lebih
sederhana sampai memenuhi bentuk yang optimal.
2.17.3 Tahapan Normalisasi
Bentuk Tidak Normal
Menghilangkan perulangan group
Bentuk Normal Pertama (1NF)
Menghilangkan ketergantungan sebagian
Bentuk Normal Kedua (2NF)
Menghilangkan ketergantungan transitif
Bentuk Normal Ketiga (3NF)
Menghilangkan anomali-anomali hasil dari
ketergantungan fungsional
Bentuk Normal Boyce-Codd (BCNF)
Menghilangkan Ketergantungan Multivalue
Bentuk Normal Keempat (4NF)
Menghilangkan anomali-anomali yang tersisa
Bentuk Normal Kelima
Gambar 2.5 : Tahapan Normalisasi
Sumber : Primashanti, 2007: 2
56
2.17.3.1 Ketergantungan Fungsional
Atribut Y pada relasi R dikatakan tergantung fungsional pada atribut X (R.X --> R.Y), jika dan hanya jika setiap nilai X pada relasi R mempunyai tepat satu nilai Y
pada R.
Misal, terdapat skema database Pemasok-barang :
Pemasok (No-pem, Na-pem)
Gambar PEMASOK-BARANG
Tabel 2.3 : Pemasok Barang
Sumber : Primashanti, 2007 : 3
Ketergantungan fungsional dari Gambar PEMASOK-BARANG adalah :
No-pem ---> Na-pem
57
2.17.3.2 Ketergantungan Fungsional Penuh
Atribut Y pada relasi R dikatakan tergantung fungsional penuh pada atribut X
pada relasi R, jika Y tidak tergantung pada subset dari X ( bila X adalah key
gabungan)
Contoh :
KIRIM-BARANG( No-pem, Na-pem, No-bar, Jumlah)
Tabel 2.4 : Kirim Barang
Sumber : Primashanti, 2007: 4
No-pem --> Na-pem
No-bar, No-pem --> Jumlah (Tergantung penuh thd keynya)
58
2.17.3.3 Ketergantungan Transitif
Atribut Z pada relasi R dikatakan tergantung transitif pada
atribut X , jika atribut Y tergantung pada atribut X pada relasi
R dan atribut Z tergantung pada atribut Y pada relasi R. (
X Y, Y Z maka X Z) Contoh :
Tabel 2.5 : Gambar contoh ketergantungan transitif
Sumber : Primashanti, 2007: 5
2.17.3.4 Ketergantungan transitif :
No-pem Kode-kota
Kode-kota Kota , maka
No-pem Kota
59
Bentuk Normal kesatu (1NF)
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kesatu bila setiap data
bersifat atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data
(Primashanti, 2007 : 6).
Gambar KIRIM-1 (Unnormal)
Tabel 2.6 : KIRIM-1 (Unnormal)
Sumber : Primashanti, 2007 : 6
60
Gambar Kirim 2 (1NF)
Tabel 2.7 : Kirim-2 (INF)
Sumber : Primashanti, 2007: 6
Diagram Ketergantungan Fungsional
Gambar 2.6 : Diagram Ketergantungan Fungsional 1
Sumber : Primashanti, 2007: 7
61
Bentuk Normal kedua(2NF)
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kedua bila relasi
tersebut sudah memenuhi bentuk Normal kesatu, dan atribut yang bukan key sudah
tergantung penuh terhadap keynya (Primashanti, 2007: 7).
Tabel 2.8 : Pemasok-1 (2NF)
Sumber : Primashanti, 2007 : 7
Bentuk Normal Ketiga (3NF)
Suatu relasi dikatakan sudah memenuhi Bentuk Normal ketiga bila relasi
tersebut sudah memenuhi bentuk Normal kedua dan atribut yang bukan key tidak
tergantung transitif terhadap keynya (Primashanti, 2007: 8).
62
Tabel 2.9 : Kirim-3 (3NF)
Sumber : Primashanti, 2007: 8
Tabel 2.10 : Pemasok-2 (3NF)
Sumber : Primashanti, 2007: 8
63
Tabel 2.11 : Pemasok-3 (3NF)
Sumber : Primashanti, 2007: 8
Asumsi :
a. Seorang mahasiswa dapat mengambil beberapa mata kuliah
b. Satu mata kuliah dapat diambil oleh lebih dari satu mahasiswa
c. Satu mata kuliah hanya diajarkan oleh satu dosen
d. Satu dosen dapat mengajar beberapa mata kuliah
e. Seorang mahasiswa pada mata kuliah tertentu hanya mempunyai satu
nilai
Tabel 2.12 : Mahasiswa-1 (Unnormal)
Sumber : Primashanti, 2007: 9
64
Tabel 2.13 : Mahasiswa-2 (1NF)
Sumber : Primashanti, 2007: 9
Diagram Ketergantungan Fungsional
Gambar 2.7 : Diagram Ketergantungan Fungsional 2
Sumber : Primashanti, 2007: 10
65
Tabel 2.14 : Mahasiswa-3 (3NF)
Sumber : Primashanti, 2007 : 10
Tabel 2.15 : Nilai (3NF)
Sumber : Primashanti, 2007: 11
Tabel 2.16 : MataKuliah (3NF)
Sumber : Primashanti, 2007: 11
66
Tabel 2.17 : Dosen (3NF)
Sumber : Primashanti, 2007: 11
2.18 Metode Penelitian RAD
RAD atau (Rapid Application Development) adalah model proses pembangunan
Perangkat Lunak yang incremental. RAD menekankan pada siklus pembangunan
yang pendek/singkat. RAD mengadopsi model waterfall dan pembangunan dalam
waktu singkat dicapai dengan menerapkan component based construction. Waktu
yang singkat adalah batasan yang penting untuk model ini. Jika kebutuhan lengkap
dan jelas maka waktu yang dibutuhkan untuk menyelesaikan secara komplit software
yang dibuat adalah misalnya 60 sampai 90 hari (Proboyekti, 2008 : 6-7).
Kelemahan dalam model ini:
1. tidak cocok untuk proyek skala besar
2. proyek bisa gagal karena waktu yang disepakati tidak dipenuhi
3. sistem yang tidak bisa dimodularisasi tidak cocok untuk model ini
4. resiko teknis yang tinggi juga kurang cocok untuk model ini
67
Gambar: 2.8 Model RAD Sumber : (Proboyekti, 2008 : 6-7)
Fase-fase di atas menggambarkan proses dalam model RAD. Sistem dibagibagi menjadi beberapa modul dan dikerjakan dalam waktu yang hampir bersamaan
dalam batasan waktu yang sudah ditentukan.
68
1. Business modelling : menjawab pertanyaan-pertanyaan: informasi apa yang
mengendalikan proses bisnis? Informasi apa yang dihasilkan? Siapa yang
menghasilkan informasi? Kemana informasi itu diberikan? Siapa yang mengolah
informasi? _ kebutuhan dari system
2. Data modelling: aliran informasi yang sudah didefinisikan, disusun menjadi
sekumpulan objek data. Ditentukan karakteristik/atribut dan hubungan antar objekobjek tersebut _ analisis kebutuhan dan data
3. Process Modelling : objek data yang sudah didefinisikan diubah menjadi aliran
informasi yang diperlukan untukmenjalankan fungsi-fungsi bisnis.
4. Application Generation: RAD menggunakan component program yang sudah ada
atau membuat component yang bisa digunakan lagi, selama diperlukan.
5. Testing and Turnover: karena menggunakan component yang sudah ada, maka
kebanyakan component sudah melalui uji atau testing. Namun component baru dan
interface harus tetap diuji.
69
2.19 Studi Literature
Penelitian adalah kegiatan ilmiah yang dilakukan untuk menemukan jawaban
suatu permasalahan, dan yang tujuan akhirnya adalah memberikan kontribusi teoretis
dan/atau praktis pada pengembangan bidang ilmu yang bersangkutan. Penemuan
suatu penelitian bisa suatu hal yang baru, bisa juga konfirmasi penemuan terdahulu;
bisa bersifat teoretis dan/atau praktis. Kebaruan tersebut bisa dari segi kerangka
berpikir atau kerangka berpikir, metodologi, karakteristik subyek yang diteliti,
dan/atau hasil penelitian (Widawaty, 2004: 2).
Dengan perkataan lain, usaha membangun ilmu pengetahuan baru dapat
berlangsung secara efektif dan efisien, bila si peneliti mendasarkannya pada kajian
literatur. Melalui kajian literatur, peneliti dapat terhindar dari melakukan penelitian
hal-hal yang sudah pernah diteliti, pengembangan instrumen yang sudah pernah
dibuat, dan pengulangan kesalahan-kesalahan masa lalu. Peneliti juga dapat
mengetahui penelitian-penelitian apa dan yang bagaimana yang masih perlu
dilakukan. Dengan demikian, penelitian yang dilakukannya niscaya akan senantiasa
dapat memperkaya dan memperluas bangunan ilmu pengetahuan yang bersangkutan.
Berikut adalah contoh dari penelitian atau pembuatan aplikasi berbasis SMS yang
digunakan sebagai study literature penulis, diantaranya adalah :
70
1. Perancangan dan Pembuatan aplikasi kuis berbasis SMS, WEB dan WAP di
PT. Mitra Mediayama Kalimantan.
Sumber : http://dewey.petra.ac.id/jiunkpe_dg_11182.html.
Abstrak
Pada masa sekarang, inovasi di bidang teknologi komunikasi terus
berkembang. Kini orang tak lagi memanfaatkan SMS untuk berkirim pesan saja.
Adanya teknologi SMS push memungkinkan konsumen meminta layanan yang
disediakan oleh operator dan content provider. PT. Mitra Mediamaya Kalimantan
sebagai perusahaan penyedia content membutuhkan sebuah aplikasi content kuis
dengan tema olahraga, dan ingin mengembangkannya dalam bentuk aplikasi lain
yang dapat diakses melalui internet sebagai alternatif untuk dapat mengakses layanan
content. Pada Tugas Akhir ini, penulis mengimplementasikan kuis dengan tema
olahraga yang dapat diakses menggunakan layanan content berupa SMS, website dan
WAP. Kuis ini dapat diakses oleh member dengan melakukan registrasi terlebih
dahulu melalui layanan SMS (khusus untuk pelanggan Telkomsel). Sebelum
membuat kuis olahraga, disiapkan sejumlah pertanyaan kuis seputar olahraga, dan
mempelajari sistem pengiriman content dari member dan pengiriman content untuk
member. Tugas akhir ini dibuat dengan menggunakan Macromedia Dreamweaver
MX dengan PHP Hypertext Preprocessor (PHP) sebagai bahasa script dan MySQL
sebagai penyimpan database. Kuis olahraga ini telah selesai dibuat dengan fitur-fitur
71
yang telah direncanakan sebelumnya. Member dapat mengakses kuis melalui layanan
SMS, website dan WAP. Member dapat meminta informasi poin, informasi panduan
kuis, informasi undian, dan terdapat profil member. Kuis olahraga dibuat sebagai
layanan content pada perusahaan PT. Mitra Mediamaya Kalimantan, dengan
alternatif website dan WAP untuk memudahkan dan menghemat pulsa member.
2. Kajian Teknologi Layanan Free – Reply – SMS.
Sumber: bdo.blog.ittelkom.ac.id/blog/files/2010/02/Free-Reply-SMS.pdf
Abstrak
Saat ini, layanan pesan singkat atau Short Message Service (SMS) sudah
menjadi kebutuhan utama bagi sekitar 20 juta pelanggan telepon selular di Indonesia.
Sebagai suatu teknologi informasi, SMS hanya merupakan layanan tambahan yang
ditumpangkan pada kanal frekuensi selular, sehingga secara teknis dapat diberikan
secara mudah dan murah. Namun karena keterbatasannya, pengembangan SMS lebih
banyak dilakukan pada nilai tambah layanannya (VAS), bukan teknologinya. Untuk
itu pada makalah ini akan dikaji suatu konsep baru layanan SMS, yaitu Free Repply
SMS atau layanan bebas balas SMS -dimana penerima pesan dapat membalas pesan
yang masuk tanpa membayar/berkurang pulsanya, dengan beberapa kondisi yang
memenuhi persyaratan. Kajian pada makalah ini akan dibahas dari aspek teknologi
dan aspek lain yang memungkinkan pada penerapannya.
BAB III
METODOLOGI PENELITIAN
Bab ini membahas metodologi penelitian meliputi metode penelitian, prosedur
penelitian, dan teknik pengumpulan data.
3.1
Waktu dan Tempat Penelitian
Penelitian pengembangan aplikasi ini dilaksanakan selama 3 (tiga) bulan,
dimulai pada tanggal 1 Oktober 2009 sampai dengan 1 Desember 2009. Tempat
penelitian di Program Studi Teknik Informatika, Fakultas Sains dan Teknologi,
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
3.2
Profil Prodi TI
Program Studi (Prodi) Teknik Informatika Fakultas Sains dan Teknologi
(FST) Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta yang bertujuan
menghasilkan Sarjana Komputer yang memiliki pemahaman teori dan metode di
bidang informatika, profesionalitas dan integritas, serta etika dan sikap Islami
sehingga mampu menganalisis dan memecahkan berbagai persoalan di bidang
sistem informasi yang bermanfaat bagi peningkatan kualitas hidup masyarakat
(Tim Penyusun Pedoman Akademik UIN Syarif Hidayatullah Jakarta 2007-2008,
2007: 261).
73
Susunan staff dalam Prodi TI dikepalai oleh seorang kaprodi dan dalam
kinerjanya kaprodi dibantu oleh seorang sekretaris seorang pengurus kordinator
non-reguler dan tiga orang pemberi pelayanan informasi bagi mahasiswa Jenis
pelayanan yang diberikan oleh pihak Prodi TI kepada mahasiswa diantaranya
adalah mengurus surat-menyurat untuk mahasiswa, memberikan nilai IPK kepada
mahasiswa, memberikan informasi dan dalam kegiatanya prodi juga menerima
informasi dari mahasiswa seperti biodata mahasiswa, pendapat dari mahasiswa
mengenai kinerja dosen, fasilitas fakultas serta masih banyak lagi jenis pelayanan
dan informasi yang diberikan atau diterima pihak prodi dari mahasiswa.
Akan tetapi dalam berjalanya kegiatan tersebut, pihak prodi cenderung
mengalami kesulitan untuk mendapatkan informasi serta mencari tahu informasi
yang dibutuhkan baik bagi pihak mahasiswa atau pihak prodi. Bagi pihak
mahasiswa, mereka banyak mengalami kesulitan dalam pencarian informasi di
sekitar fakultas, dari informasi IPK sampai informasi jadwal kelas dan informasi
lainya. Dengan banyaknya jumlah mahasiswa yang ada di prodi TI, dan terjadinya
kesulitan dalam mengatur jadwal mahasiswa untuk meminta informasi kepada
pihak prodi maka sering terjadi keterlambatan dalam permintaan informasi yang
diajukan oleh mahasiswa, baik bagi mereka yang ingin mengetahui nilai IPK atau
mengurus surat – surat yang dibutuhkan oleh mahasiswa. Bagi pihak prodi,
mereka mengalami kesulitan dalam memberikan informasi, menggumpulkan
suara mahasiswa dan biodata mahasiswa yang berperan penting bagi pihak prodi.
Sedangkan informasi yang disampaikan oleh pihak prodi mempunyai peranan
penting dalam kebutuhan informasi bagi mahasiswa, dan jika ada informasi yang
74
akan diberikan oleh pihak prodi kepada mahasiswa tertentu mereka masih
mengalami kesulitan dalam memberikan informasi tersebut, karena belum ada
biodata yang lengkap atau mengalami kesulitan dalam pencarian data mahasiswa
yang bersangkutan.
3.3
Kajian Penelitian
Kajian yang digunakan pada penelitian ini ada 3 (tiga), yaitu :
a.
Kajian Teori
Penelitian yang dilakukan berdasarkan kajian teori, yaitu dilakukan dari
tanggal 1 oktober hingga 1 desember dengan mempelajari teori–teori dari
buku–buku
dan
jurnal–jurnal
penelitian
yang
membahas
tentang
pemrograman java dan MySQL.
b. Kajian Observasi
Penelitian yang dilakukan berdasarkan kajian observasi, yaitu melakukan
pengamatan terhadap lokasi PRODI TI dari tanggal 5 oktober 2009 hingga 9
oktober 2009, dalam observasi panulis memantau pertukaran informasi dan
peencarian informasi yang dilakukan mahasiswa atau pihak prodi di
lingkungan PRODI TI.
75
c. Kajian Wawancara
Kajian wawancara dilakukan dengan cara pengambilan suara secara langsung
da ri mahasiswa melalui wawancara mengenai penyebaran informasi di Prodi
TI. kegiatan wawancara ini berlangsung dari tanggal 12 Oktober 2009 hingga
16 oktober 2009.
3.4
Prosedur Penelitian
Adapun prosedur penelitian sebagai berikut:
A. Bahan dan Alat
Pada pengembangan aplikasi ini, bahan dan alat yang digunakan adalah
software dan hardware. Software yang digunakan dalam penelitian ini adalah
Java Studio Enterprise 8.0 sebagai program antarmuka dan MySQL Server 5.0
sebagai database. Hardware yang digunakan adalah komputer dengan sistem
operasi Windows XP Professional Service Pack 2, dengan menggunakan
Handphone dan Bluetooth sebagai media perantara pengganti serial port.
B. Cara Kerja
Penelitian ini menggunakan Rapid Application Development (RAD) sebagai
metode pengembangan sistem. Adapun langkah–langkah kerja penelitian ini
adalah:
76
1. Business Modeling
a.
Melakukan observasi pada program studi Teknik Informatika,
Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif
Hidayatullah Jakarta.
b.
Melakukan kajian teori untuk mengumpulkan referensi yang
dijadikan sebagai acuan dalam penelitian tersebut. Referensi–referensi
tersebut bisa berupa buku–buku maupun publikasi hasil penelitian
yang berhubungan dengan penelitian ini.
c.
Mengolah informasi yang telah didapat dari wawancara dan studi
pustaka. Merancang dan menentukan informasi–informasi yang akan
diproses oleh aplikasi yang akan dibuat secara mendasar. Menentukan
informasi apa yang akan dihasilkan sebagai output.
2. Data Modeling
Mengidentifikasi masalah. Mendefinisikan informasi – informasi yang
telah diperoleh dari langkah sebelumnya dan diklasifikasikan ke dalam
objek–objek yang dibutuhkan. Menetapkan hubungan di antara objek–
objek tersebut. Objek–objek yang ada harus ditetapkan atribut–atributnya,
seperti menentukan jenis data pada atribut dalam database.
77
3. Process Modeling
Mendesain aplikasi dengan menggunakan objek–objek yang telah
ditentukan pada langkah sebelumnya. Membuat struktur database untuk
menyimpan data–data yang dibutuhkan pada aplikasi pengembangan EI
(Extract Information), serta merancang desain antarmuka pada aplikasi
tersebut.
4. Application Generation
Mengimplementasikan aplikasi ke dalam bentuk pemrograman. Membuat
database dengan menggunakan MySQL Server 5.0 serta Java Studio
Enterprise 8.0 sebagai program utamanya.
5. Testing and turnover
Uji coba terhadap aplikasi yang baru. Apakah aplikasi tersebut sesuai
dengan kebutuhan user. Proses pemeriksaan kesalahan dimulai. Apabila
dalam langkah sebelumnya banyak menggunakan objek–objek yang sudah
ada, maka proses uji coba ini akan lebih cepat, sehingga lebih menghemat
waktu.
78
3.5
Teknik Pengumpulan Data
Adapun teknik pengumpulan data yang digunakan ada 2 (dua):
a.
Data Primer
Data Primer adalah data yang diperoleh langsung dari objek penelitian.
Contohnya adalah data suara mahasiswa yang langsung didapat dari
mahasiswa.
b. Data Sekunder
Data Sekunder adalah data yang diperoleh setelah data tersebut sudah diolah.
Contohnya adalah data Dosen Pembimbing Akademik, dosen pembimbing
PKL dan Biaya semester mahasiswa yang didapat dari program studi Teknik
Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif
Hidayatullah Jakarta.
BAB IV
ANALISIS IMPLEMENTASI
Sesuai dengan metode pengembangan sistem yang digunakan peneliti, berikut
ini beberapa hal yang dilakukan peneliti dengan berpedoman pada metode
pengembangan Rapid Application Development (RAD).
4.1
Bisnis Modelling
Dalam pembuatan aplikasi ini peneliti menggunakan bisnis modeling yang
mengendalikan bisnis dalam pembuatan aplikasi ini.
informasi dari prodi TI
PRODI TI
MAHASISWA
informasi dari Mahasiswa
Gambar 4.1 Bisnis Modeling
Prodi TI adalah suatu badan yang menjalankan aktivitas akademik jurusan
Teknik Informatika, yang mempunyai tugas mengatur segala jenis aktivitas dan
kegiatan yang dilakukan di dalam prodi TI. Prodi TI juga mempunyai tugas untuk
memberikan informasi kepada mahasiswa dan melayani mahasiswa dalam bidang
seputar kegiatan mahasiswa. Susunan staff dalam Prodi TI dikepalai oleh seorang
80
kaprodi dan dalam kinerjanya kaprodi dibantu oleh seorang sekretaris dan dua orang
pemberi pelayanan informasi bagi mahasiswa
Jenis pelayanan yang diberikan oleh pihak Prodi TI kepada mahasiswa
diantaranya adalah mengurus surat-menyurat untuk mahasiswa, memberikan nilai
IPK kepada mahasiswa, memberikan informasi dan dalam kegiatanya prodi juga
menerima informasi dari mahasiswa seperti biodata mahasiswa, pendapat dari
mahasiswa mengenai kinerja dosen, fasilitas fakultas serta masih banyak lagi jenis
pelayanan dan informasi yang diberikan atau diterima pihak prodi dari mahasiswa.
Akan tetapi dalam berjalanya kegiatan tersebut, pihak prodi cenderung mengalami
kesulitan untuk mendapatkan informasi serta mencari tahu informasi yang dibutuhkan
baik bagi pihak mahasiswa atau pihak prodi. Bagi pihak mahasiswa, mereka banyak
mengalami kesulitan dalam pencarian informasi di sekitar fakultas, dari informasi
IPK sampai informasi jadwal kelas dan informasi lainya. Dengan banyaknya jumlah
mahasiswa yang ada di prodi TI, dan terjadinya kesulitan dalam mengatur jadwal
mahasiswa untuk meminta informasi kepada pihak prodi maka sering terjadi
keterlambatan dalam permintaan informasi yang diajukan oleh mahasiswa, baik bagi
mereka yang ingin mengetahui nilai IPK atau mengurus surat – surat yang dibutuhkan
oleh mahasiswa. Bagi pihak prodi, mereka mengalami kesulitan dalam memberikan
informasi, menggumpulkan suara mahasiswa dan biodata mahasiswa yang berperan
penting bagi pihak prodi. Sedangkan informasi yang disampaikan oleh pihak prodi
mempunyai peranan penting dalam kebutuhan informasi bagi mahasiswa, dan jika
ada informasi yang akan diberikan oleh pihak prodi kepada mahasiswa tertentu
81
mereka masih mengalami kesulitan dalam memberikan informasi tersebut, karena
belum ada biodata yang lengkap atau mengalami kesulitan dalam pencarian data
mahasiswa yang bersangkutan.
Kebutuhan mendasar pada informasi yang bersifat penting agar pihak
mahasiswa dan prodi dapat mengetahui informasi yang mereka butuhkan membuat
saya sebagai peneliti tertarik untuk membuat aplikasi berbasis SMS yang dapat
membantu pihak prodi dan mahasiswa mendapatkan informasi yang mereka inginkan.
Dengan
judul
“PEMBUATAN
APLIKASI
PENYEBARAN
INFORMASI
BERBASIS SMS GATEWAY DI LINGKUNGAN PRODI TI “. Dimana peneliti
akan membuat 5 aplikasi yang akan membantu pihak mahasiswa dan prodi dalam
memberikan dan menerima informasi. Aplikasi tersebut ialah : 1. Aplikasi pemberian
informasi terbaru dari prodi ke mahasiswa, 2. Aplikasi Tanya Dosen Pembimbing
Akademik, 3. Aplikasi Tanya Dosen Pembimbing PKL, 4. Aplikasi Tanya Biaya
Semester, 5. Aplikasi Polling SMS mengenai kinerja dosen di Prodi TI.
82
4.1.1
Informasi apa saja yang mengendalikan proses
Dalam pembuatan aplikasi ini, informasi akan disebarluaskan kepada
mahasiswa dan pihak prodi TI. Bagi pihak mahasiswa, dengan adanya aplikasi
penyebaran informasi mereka dapat menerima informasi terbaru dari prodi TI, bisa
mengakses dosen pembimbing PKL, Penasehat akademik dan biaya semester mereka
langsung melalui aplikasi ini dan juga dapat mengkontribusikan suara keapada pihak
prodi secara langung dengan menggunakan aplikasi polling sms.
Bagi pihak prodi TI dengan menggunakan informasi ini mereka dapat
menyebarkan informasi kepada mahsiswa dengan mudah, dapat mengetahui biodata
mahasiswa langsung dari mahasiswa dan dapat mengambil suara mahasiswa jika
ingin mengambil suara mahasiswa dalam suatu polling.
4.1.2
Informasi apa yang dimunculkan
Dalam pembuatan aplikasi ini, informasi yang akan diberikan dan di terima oleh
mahasiswa dan prodi TI adalah :
a. Informasi terbaru dari prodi
b. Informasi Dosen Pembimbing Akademik
c. Informasi Dosen Pembimbing PKL
d. Informasi Biaya semester Mahasiswa
e. Informasi suara mahasiswa melalui polling sms
83
4.1.3
Dimana Informasi digunakan
Aplikasi EI (extract Information) ini digunakan untuk membantu pihak prodi dan
mahasiswa dalam memberikan informasi dan menerima informasi di lingkungan
Prodi TI.
4.1.4
Siapa yang memproses.
Aplikasi ini akan dijalankan oleh pihak prodi TI, dari mengolah informasi yang
diberikan mahasiswa sampai informasi yang akan diberikan kepada mahasiswa
nantinya.
84
4.2
Data Modeling
Model data yang digunakan dalam pembuatan aplikasi ini adalah :
4.2.1
DFD (Data Flow Diagram)
DFD adalah diagram yang menggunakan notasi – notasi untuk menggambarkan
arus dari data sistem (Jogiyanto, 2005 : 700)
a. Context Diagram
Context diagram adalah diagram level tertinggi dari DFD yg menggambarkan
hubungan sistem dgn lingkungan luarnya.
Bentuk context diagram aplikasi EI (EXTRACT INFORMATION) :
Gambar 4.2 Context Diagram Aplikasi EI (Extract Information)
85
b. Diagram Zero
Gambar 4.3 Diagram Zero Aplikasi EI
86
c. Diagram Detail
a. Level 1 proses 1 Kirim SMS
b
Level 1 proses 1 Kirim sms
Mahasiswa
1.1p
Isi no telepon
Isi No
Telepon
isi pesan
Informasi untuk mahasiswa
1.3p
a
Isi Pesan
Prodi TI
Data Buku telepon
Input buku
telepon
1.2p
Input buku
telepon
Simpan data
D1
Buku_telepon
Gambar 4.4 Diagram detail level 1 proses kirim SMS
87
b. Level 1 Proses 2 Tanya Pembimbing PKL
Gambar 4.5 Diagram detail Level 1 proses tanya pembimbing PKL
88
c. Level 1 Proses 3 Tanya Biaya Mahasiswa
Simpan data
biaya semester
input
biaya semester
a
Prodi TI
D5
Biaya_semester
3.1p
Input Biaya
semester
data biaya semester
3.2p
b
bertanya biaya semester
Mahasiswa
Menjawab
pertanyaan
Mahasiswa
Gambar 4.6 Diagram detail Level 1 proses Tanya Biaya Mahasiswa
89
d. Level 1 Proses 4 Polling SMS
Gambar 4.7 Diagram detail Level 1 proses Polling SMS
90
e. Level 1 Proses 5 Tanya Dosen Pembimbing Akademik
Simpan data
a
Input dosen
Pembimbing akademik
Prodi TI
D4 Data_Mahasiswa
5.1p
Input dosen
pembimbing
akademik
data dosen pembimbing
akademik
5.2p
b
bertanya dosen
pembimbing akademik
Mahasiswa
Menjawab
pertanyaan
mahasiswa
Gambar 4.8 Diagram detail Level 1 proses Tanya Dosen PA
91
4.2.2
Flowchart Data Flow Diagram
Berikut akan kami tampilkan flowchart dari masing – masing proses yang ada di
dalam Data Flow Diagram.
a. Flowchart 1.1p Proses isi no telepon
Gambar 4.9 Flowchart 1.1p proses isi no telepon
92
b. Flowchart Proses 1.2p Input Buku Telepon
Gambar 4.10 Flowchart 1.2p Input Buku Telepon
93
c. Flowchart Proses 1.3p isi pesan.
START
Kirim Pesan
Input isi pesan
Apakah sudah
benar?
tidak
Kirim pesan ke
mahasiswa
END
Gambar 4.11 Flowchart 1.3p Isi Pesan
94
d. Flowchart Proses 2.1p Input Dosen Pembimbing PKL
Gambar 4.12 Flowchart 2.1p Input Dosen Pembimbing PKL
95
e. Flowchart Proses 2.2p Tanya Dosen Pembimbing PKL
START
bertanya
dosen
pembimbing
PKL
Meminta data ke
database
Kirim jawaban ke
mahasiswa
END
Gambar 4.13 Flowchart 2.2p Tanya Dosen Pembimbing PKL
96
f. Flowchart Proses 3.1p Input Biaya Semester
Gambar 4.14 flowchart 3.1p Input Biaya Semester
97
g. Flowchart Proses 3.2p Tanya Biaya Semester
START
bertanya
biaya
semester
Meminta data ke
database
Kirim jawaban ke
mahasiswa
END
Gambar 4.15 Flowchart 3.2p Tanya biaya Semester
98
h. Flowchart Proses 4.1p Input Polling SMS
Gambar 4.16 Flowchart 4.1p Input Polling SMS
99
i. Flowchart Proses 4.2p Proses Isi Polling SMS
START
mahasiswa
mengisi
polling sms
Apakah isi
polling valid?
tidak
ya
Simpan data
ke
hasil_polling
Tampilan
hasil polling
END
Gambar 4.17 Flowchart 4.2p Proses Isi Polling SMS
100
j. Flowchart Proses 5.1p Input Dosen Pembimbing Akademik
Gambar 4.18 Flowchart 5.1p Input Dosen Pembimbing Akademik
101
j. Flowchart Proses 5.2p Tanya Dosen Pembimbing Akademik
START
bertanya
dosen
pembimbing
akademik
Meminta data ke
database
Kirim jawaban ke
mahasiswa
END
Gambar 4.19 Flowchart 5.2p Tanya Dosen Pembimbing Akademik
102
4.2.3
Kamus Data
Kamus data adalah suatu daftar data elemen yang terorganisir dengan definisi
yang tetap dan sesuai dengan sistem, sehingga user dan analis sistem mempunyai
pengertian yang sama tentang input, output, dan komponen data store.
Kamus data ini sangat membantu analis sistem dalam mendefinisikan data
yang mengalir di dalam sistem, sehingga pendefinisian data itu dapat dilakukan
dengan lengkap dan terstruktur. Pembentukan kamus data dilaksanakan dalam tahap
analisis dan perancangan suatu system (Mazwan, 2007 : 1).
1. Kamus data Level 1 Proses 1 Kirim sms
Isi no telepon = kode area + no telepon +
Input buku telepon = no telepon + nama kontak + alamat +
Isi pesan = teks pesan +
Data buku telepon = no telepon +
Informasi untuk mahasiswa = teks pesan + no telepon +
2. Kamus data Level 1 Proses 2 Tanya dosen pembimbing PKL
Input dosen pembimbing PKL = nim + nama mahasiswa + no telepon +
Dosen PKL + Tahun Masuk +
Bertanya dosen pembimbing PKL = nim + nama mahasiswa + no telepon +
Dosen PKL + Tahun Masuk +
Data dosen pembimbing PKL = nim + nama mahasiswa + no telepon + Dosen
PKL + Tahun Masuk +
103
3. Kamus data Level 1 Proses 3 Tanya biaya semester
Input biaya semester = kode + nim + nama + spp + dop + dkm + dp + dm +
total biaya +
Bertanya biaya semester = nim + nama + spp + dop + dkm + dp + dm + total
biaya +
Data biaya semester = kode + nim + nama + spp + dop + dkm + dp + dm +
total biaya +
4. Kamus data Level 1 Proses 4 Polling SMS
Input polling sms = kode pertanyaan + isi pertanyaan + pilihan a + pilihan b +
pilihan c +
Pertanyaan polling = isi pertanyaan + pilihan a + pilihan b + pilihan c +
Isi polling sms = pilihan a + pilihan b + pilihan c +
Simpan data isi polling sms = no urut + kode pertanyaan + pilihan + no
telepon pengirim +
5. Kamus data Level 1 Proses 5 Tanya Dosen Pembimbing Akademik
Input dosen PA = nim + nama mahasiswa + no telepon + dosen PA + tahun
masuk +
Data dosen pembimbing PA = nim + nama mahasiswa + no telepon + dosen
PA + tahun masuk +
Bertanya dosen pembimbing PA = nim + nama mahasiswa + no telepon +
dosen PA + tahun masuk +
104
6. Kamus data Level 1 Proses 6p Sms masuk – sms keluar
Laporan informasi untuk mahasiswa = id keluar + status keluar + isi pesan
keluar + jam keluar + no telepon keluar + tanggal keluar +
Informasi untuk Prodi TI = id masuk + status masuk + isi pesan masuk + jam
masuk + no telepon masuk + tanggalmasuk +
7. Kamus data Level 1 Proses 7p Laporan proses
Laporan hasil polling = urut + kode pertanyaan + pilihan + no telepon
pengirim +
Laporan pertanyaan polling = kode pertanyaan + isi pertanyaan + pilihan a +
pilihan b + pilihan c +
Laporan biaya semester = + nim + nama + spp + dop + dkm + dp + dm + total
biaya +
Laporan dosen pembimbing PKL = No PKL + nip + nama dosen + nim +
nama mahasiswa + tahun PKL +
Laporan dosen Pembimbing PA = nip + nama dosen + nim + nama mahasiswa
+ akademik angkatan +
Laporan sms masuk = id masuk + status masuk + isi pesan masuk + jam
masuk + no telepon masuk + tanggalmasuk +
Laporan sms keluar = id keluar + status keluar + isi pesan keluar + jam keluar
+ no telepon keluar + tanggal keluar +
105
4.3
Process Modelling
4.3.1
Entity Relationship Diagram
gambar 4.20 Entity Relationship Diagram EI
106
4.3.2
Relasi Antar Tabel
Gambar 4.21 Relasi Antar Tabel
107
4.3.3
Normalisasi
Bentuk Tidak Normal (Unnormalized Form)
Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti format tertentu, dapat saja
tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan saat menginput.
No Urut
01
02
Status_keluar
SEND
WAIT
Jam_masuk
12:28:01
11:15:05
15:20:51
06:42:33
Kode_Pertanyaan
TI1
TI2
Isi_pesan_keluar
Halo
Hai
Tes
cek
Pilihan
A
B
C
B
Jam_keluar
12:24:01
11:05:05
14:54:51
06:32:33
No_telepon_pengirim
085695011110
085699999999
085677777777
085644444444
No_telepon
085695011110
085699999999
085677777777
085644444444
No_telepon_keluar
085695011110
085699999999
085677777777
085644444444
Tanggal_keluar
08-12-2009
08-12-2009
08-12-2009
08-12-2009
No_telepon_masuk Tanggal_masuk
Nim
Nama_mahasiswa
085695011110
08-12-2009
104091002846
Rusdiantoro
104093002929
085699999999
08-12-2009
Dian
105097777444
085677777777
08-12-2009
Wahyu
085644444444
08-12-2009
Pram
103055588888
Nama_kontak
Rusdi
Bambang
Id_masuk
01
02
03
04
Dosen_PA
Adi
Alamat
Pamulang
Ciputat
Parung
Bogor
Status_masuk
SEND
WAIT
Dosen_PKL
Adi
Bambang
Bambang
Id_keluar
01
02
03
04
Isi_pesan_masuk
Halo
Hai
Tes
cek
108
Kode_pertanyaan
TI1
TI2
TI3
TI4
Isi_pertanyaan
Kinerja dosen
Kebersihan
Pelayanan Prodi TI
Disiplin
Pilihan_a
Baik
Baik
Baik
Baik
Pilihan_b
Cukup
Cukup
Cukup
Cukup
Pilihan_c
Kurang
Kurang
Kurang
Kurang
kode
01
02
03
04
SPP
300000
DOP
200000
DKM
200000
DP
200000
Jumlah
900000
Pajak
30000
Total_Pembayaran
930000
400000
200000
300000
100000
300000
100000
300000
100000
1300000
500000
40000
20000
1340000
520000
Nim
104091002846
104093002929
105097777444
103055588888
Bulan_pembayaran
Maret
109
Bentuk Normal ke satu (First Normal Form/1NF)
Pada tahap ini dilakukan penghilangan beberapa group elemen yang berulang agar menjadi satu harga tunggal yang
berinteraksi terhadap setiap baris pada suatu table, dan setiap atribut harus mempunyai data yang atomic (bersifat atomic
value). Atom adalah zat terkecil yang masih memiliki sifat induknya, bila dipecah lagi maka ia tidak akan memiliki sifat
induknya.
No Urut*
01
Kode_Pertanyaan**
TI1
02
TI2
Status_keluar
SEND
WAIT
Jam_masuk
12:28:01
11:15:05
15:20:51
06:42:33
Isi_pesan_keluar
Halo
Hai
Tes
cek
Pilihan
A
B
C
B
Jam_keluar
12:24:01
11:05:05
14:54:51
06:32:33
No_telepon_pengirim
085695011110
085699999999
085677777777
085644444444
No_telepon_keluar
085695011110
085699999999
085677777777
085644444444
No_telepon*
085695011110
085699999999
085677777777
085644444444
Nama_kontak
Rusdi
Bambang
Tanggal_keluar Id_masuk*
08-12-2009
01
08-12-2009
02
08-12-2009
03
08-12-2009
04
No_telepon_masuk Tanggal_masuk
Nim*
Nama_mahasiswa**
085695011110
08-12-2009
104091002846
Rusdiantoro
085699999999
08-12-2009
104093002929
Dian
085677777777
08-12-2009
Wahyu
105097777444
085644444444
08-12-2009
Pram
103055588888
Alamat
Pamulang
Ciputat
Parung
Bogor
Status_masuk
SEND
Dosen_PA
Adi
WAIT
Dosen_PKL
Adi
Bambang
Bambang
Id_keluar*
01
02
03
04
Isi_pesan_masuk
Halo
Hai
Tes
cek
110
Kode_pertanyaan*
TI1
TI2
TI3
TI4
Isi_pertanyaan
Kinerja dosen
Kebersihan
Pelayanan Prodi TI
Disiplin
Pilihan_a
Baik
Baik
Baik
Baik
Pilihan_b
Cukup
Cukup
Cukup
Cukup
Pilihan_c
Kurang
Kurang
Kurang
Kurang
Kode*
01
02
03
04
SPP
300000
DOP
200000
DKM
200000
DP
200000
Jumlah
900000
Pajak
30000
Total_Pembayaran
930000
400000
200000
300000
100000
300000
100000
300000
100000
1300000
500000
40000
20000
1340000
520000
Nim **
104091002846
104093002929
105097777444
103055588888
Bulan_pembayaran
Maret
111
Bentuk Normal kedua (Second Normal Form/2NF)
Bentuk normal kedua didasarai atas konsep full functional dependency (ketergantungan fungsional sepenuhnya)
yang dapat didefiniskan sebagai berikut: jika A dan B adalah atribut-atribut dari suatu relasi, B dikatakan full functional
dependency (memiliki ketergantungan functional sepenuhnya) terhadap A, jika B adalah tergantung fungsional terhadap A,
tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan bagian) dari A.
Table hasil polling
No_urut*
Kode_pertanyaan**
Pilihan
No_telepon_pengirim
01
02
03
TI1
TI1
TI1
A
B
C
085695011110
085699999999
085677777777
Table pertanyaan polling
Kode_pertanyaan*
TI1
TI2
TI3
Isi_pertanyaan
Kinerja dosen
Kebersihan
Pelayanan Prodi TI
Pilihan_a
baik
baik
baik
Pilihan_b
cukup
cukup
cukup
Pilihan_c
kurang
kurang
kurang
Table Buku Telepon
No_Telepon*
085695011110
0218888888
081888888888
085333333388
Nama_Mahasiswa
Rusdi
Rusdi
Budi
Budi
Alamat
Pamulang
Ciputat
Bintaro
Senayan
112
Table SMS Keluar
Id_keluar*
01
02
03
04
Status_keluar
SEND
SEND
WAIT
WAIT
Isi_pesan_keluar
Halo
Hai
Tes
cek
Jam_keluar
12:24:01
11:05:05
14:54:51
06:32:33
No_telepon_keluar**
085695011110
085999999999
081333333333
085999999999
Tanggal_Keluar
08-12-2009
08-12-2009
08-12-2009
08-12-2009
Status_masuk
SEND
SEND
WAIT
WAIT
Isi_pesan_masuk
Halo
Hai
Tes
cek
Jam_masuk
12:24:01
11:05:05
14:54:51
06:32:33
No_telepon_masuk**
085695011110
085999999999
081333333333
085999999999
Tanggal_masuk
08-12-2009
08-12-2009
08-12-2009
08-12-2009
Table SMS Masuk
Id_masuk*
01
02
03
04
Table Mahasiswa
Nim*
104091002846
104093002929
105097777444
103055588888
Nama_Mahasiswa
Rusdiantoro
Dian
Wahyu
Pram
Dosen_PA
Adi
Adi
Bambang
Bambang
Dosen_PKL
Adi
Adi
Adi
Bambang
113
Table Biaya Semester
Kode*
01
02
03
Jumlah
200000
300000
100000
Nim**
104091002846
105088966655
103055447788
SPP
300000
400000
200000
Total_biaya
1100000
1600000
100000
DOP
200000
300000
100000
DKM
200000
300000
100000
DP
200000
300000
100000
Jumlah
200000
300000
100000
Total_biaya
1100000
1600000
100000
114
4.3.4 Perancangan Database
Macam-macam tabel yang ada pada Aplikasi EI(Extract Information)
a. Tabel sms_masuk
NO
1
2
3
4
5
6
FIELD
id_masuk
no_telepon_masuk
tanggal_masuk
jam_masuk
isi_pesan_masuk
status_masuk
TYPE
int(11)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
NO
NO
DEFAULT
NULL
EXTRA
auto_increment
TYPE
int(11)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
NO
NO
DEFAULT
NULL
EXTRA
auto_increment
TYPE
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
DEFAULT
NULL
EXTRA
b. Tabel sms_keluar
NO
1
2
3
4
5
6
FIELD
id_keluar
no_telepon_keluar
tanggal_keluar
jam_keluar
isi_pesan_keluar
status_keluar
c. table data mahasiswa
NO
1
2
3
4
FIELD
nim
nama_mahasiswa
dosen_pa
dosen_pkl
115
d. Tabel buku_telepon
NO
1
2
3
FIELD
no_telepon
nama_kontak
alamat
TYPE
varchar (25)
varchar (150)
varchar (250)
NULL KEY
NO
PRI
NO
NO
DEFAULT
NULL
EXTRA
TYPE
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (10)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
NO
NO
NO
NO
NO
NO
DEFAULT
NULL
EXTRA
TYPE
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
NO
DEFAULT
NULL
EXTRA
TYPE
int(11)
varchar (100)
varchar (100)
varchar (100)
NULL KEY
NO
PRI
NO
NO
NO
DEFAULT
NULL
EXTRA
auto_increment
e. Tabel biaya_semester
NO
1
2
3
4
5
6
7
8
9
10
FIELD
kode
nim
spp
dop
dkm
dp
jumlah
pajak
total_pembayaran
bulan_pembayaran
f. Tabel data_pertanyaan_polling
NO
1
2
3
4
5
FIELD
Kode_pertanyaan
Isi_pertanyaan
Pilihan_a
Pilihan_b
Pilihan_c
g. Tabel_hasil_polling
NO
1
2
3
4
FIELD
no_urut
kode_pertanyaan
pilihan
no_telepon_pengirim
116
4.4
Application Generation
Pada pembuatan aplikasi ini peneliti akan menjelaskan cara membuat aplikasi ini
dengan menggunakan Java Studio Enterprise versi 8.0, untuk database peneliti akan
menggunakan MySQL versi 5 dan menggunakan smitdev-server sebagai penghubung
bahasa pemrograman java dengan Handphone. Flowchart dan source code yang
digunakan terlampir di skripsi ini.
1.
Membuat coding aplikasi (terlampir)
2.
Membuat database menggunakan MySQL (terlampir)
117
3.
Tampilan Desain Aplikasi EI (extract information)
a. Tampilan Desain Utama Aplikasi EI
Gambar 4.22 Tampilan Jendela Utama Aplikasi EI
118
b.
Desain Kirim SMS
Gambar 4.23 Tampilan Jendela Kirim SMS
119
c.
Desain Pengaturan Terminal
Jendela Pengaturan Terminal
Konfigurasi Terminal
Serial Port
:
XXXXXXX
Bits Per Second
:
XXXXXXX
Data Bits
:
XXXXXXX
Parity
:
XXXXXXX
Stop Bits
:
XXXXXXX
Flow Control
:
XXXXXXX
Konfigurasi DataBase (MySQL DataBase Server)
Nama Host
:
XXXXXXX
Nama Port
:
XXXXXXX
Nama Database
:
XXXXXXX
Nama Pengguna
:
XXXXXXX
Password
:
XXXXXXX
Setuju
Tidak
Gambar 4.24 Tampilan Jendela Pengaturan Terminal
120
d. Jendela SMS Masuk
Jendela SMS Masuk
Data SMS Masuk
No Telepon
XXXXXXXXXXXX
XXXXXXXXXXXX
Balas SMS
Nama Kontak
XXXXXXXXX
XXXXXXXXX
Hapus
Hapus SMS
Isi Pesan
Status
XXXXXXXXXXXXXXXXXXXXXXXXX XXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX XXXXX
Tutup Jendela
Gambar 4.25 Tampilan Jendela SMS Masuk
121
e. Jendela SMS Keluar
Jendela SMS KELUAR
Data SMS Keluar
No Telepon
XXXXXXXXXXXX
XXXXXXXXXXXX
Nama Kontak
XXXXXXXXX
XXXXXXXXX
Teruskan Kirim SMS
Hapus
Isi Pesan
Status
XXXXXXXXXXXXXXXXXXXXXXXXX XXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX XXXXX
Hapus Semua
Tutup Jendela
Gambar 4.26 Tampilan Jendela SMS Keluar
122
f.
Jendela Buku Telepon
Jendela Buku Telepon
Buku Telepon
No Telepon
XXXXXXXXXXXX
XXXXXXXXXXXX
Nama Kontak
XXXXXXXXX
XXXXXXXXX
Tambah Data Baru
Kirim SMS
Alamat
XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX
Hapus Data
Tutup Jendela
Gambar 4.27 Tampilan Jendela Buku Telepon
123
g. Jendela Input Data Mahasiswa, Dosen PA, Dosen PKL
Gambar 4.28 Tampilan Jendela Input Data Mahasiswa, Dosen PA & PKL
124
h. Jendela Input Biaya Semester
Jendela Biaya Semester
Data SMS Request
Biaya Semester
Bulan
:
XXXXXXXX
Nim
:
XXXXXXXXXXXX
Nama Mahasiswa
SPP
:
Tahun
:
XXXX
XXXXXXXXXXX
:
XXXXXXX
DOP :
XXXXXXX
DKM :
XXXXXXX
DP
:
XXXXXXX
DM
:
XXXXXXX
+
Total Biaya Semester
Simpan Data
:
XXXXXXXX
Update Data
Tutup Jendela
Gambar 4.29 Tampilan Jendela Biaya Semester
125
i. Jendea Input Data Pertanyaan Polling
Gambar 4.30 Tampilan Jendela Pertanyaan Polling
126
j.
Jendela Hasil Polling
Gambar 4.31 Tampilan Jendela Hasil Polling
127
4.
Koneksi Aplikasi dengan Handphone melalui media bluetooth
Dalam penggunaan aplikasi ini, peneliti menggunakan service virtual Comm yang
ada pada aplikasi bluetooth. Cara menset bluetooh agar terdeteksi aplikasi ialah
sebagai berikut :
a. Install Aplikasi Bluetooth
langkah awal dalam menggunakan aplikasi bluetooth adalah dengan
menginstall software bluesoleil yang digunakan untuk melakukan koneksi dengan
bluetooth.
b. aktivkan bluetooth dan pilih bluetooth device discovery
Setelah aplikasi terinstall, aktivkan bluetooth sehingga muncul gambar seperti
di bawah ini :
Gambar 4.32 Tampilan Bluetooth
128
c. Cari perangkat handphone disekitar yang mengaktivkan bluetoothnya kemudian
klik dua kali, sehingga muncul gambar sepeerti berikut :
Gambar 4.33 Detect Perangkat
d. pilih bluetooth serial port service
Gambar 4.34 Bluetooth serial port service
129
e. masukan password untuk konfirmasi
Gambar 4.35 Password untuk konfirmasi
Setelah di masukan password dan dikonfirmasi oleh handphone, maka akan tercipta
virtual serial port yang digunakan dalam aplikasi ini.
4.5 Testing dan Turnover
1. Mengaktivkan MySQL dan menggunakan database sms sebagai database utamanya
2. Menjalankan Aplikasi EI
BAB V
PENUTUP
5.1 Kesimpulan
Setelah membuat aplikasi EI dan menjalankanya, penulis menarik kesimpulan
sebagai berikut :
1. Pembuatan Aplikasi EI (Extract Information) Di Lingkungan Prodi TI ini
dibuat sebagai sarana mempermudah komunikasi antara pihak prodi TI dan
mahasiswa.
2. Bagi pihak prodi aplikasi ini dapat membantu mereka dalam memberikan dan
menerima informasi dari mahasiswa serta dapat mengetahui suara mayoritas
mahasiswa.
3. Bagi pihak mahasiswa aplikasi ini diharapkan dapat membantu mahasiswa
dalam mendapatkan dan menerima informasi terbaru yang diberikan oleh
pihak prodi.
131
5.2 Saran
Sehubungan dengan kesimpulan di atas, penulis hendak memberikan
saran-saran sebagai berikut:
1) Kepada pembaca yang ingin meneruskan aplikasi Extract Information,
diharapkan mengambil ruang lingkup penelitian yang lebih luas, seperti
wilayah fakultas atau universitas.
2) Kepada mahasiswa yang akan ingin mengembangkan aplikasi ini,
diharapkan menambahkan aplikasi yang memberikan informasi bagi
mahasiswa seperti nilai IPK mahasiswa, jadwal kelas atau jadwal mata
kuliah dan lain-lain.
DAFTAR PUSTAKA
Dwi Prasetyo, Didik. Administrasi Database Server MySQL. Media Elex Komputido.
Yogyakarta, 2004.
Efendy, Yeyen & Istiyanto, Jazi Eko. Rancangan dan Implementasi Prototipe Sistem
Kendali Jarak Jauh Berbasis AT89C52 dan Layanan SMS GSM. UGM.
Yogyakarta, 2004.
Eko. Pengantar Teknologi Bluetooth. Jurnal, 2005.
Faiz, GP. Global System for Mobile Communication. Jurnal, 2005.
Hariyanto, Bambang. Esensi – esensi Bahasa Pemrograman Java. Informatika
Bandung, 2005.
Hasan. Multimedia Information Retrieval. Institut Teknologi Surabaya. Jurnal, 2007.
Heggel. Docklight Application Note : Bluetooth Serial Port. Jurnal, 2009.
Istiyanto, Jazi Eko. Rancangan dan Implementasi Prototipe Sistem Kendali Jarak
Jauh. UGM. Yogyakarta, 2004.
Jogiyanto, Hartono. Analisis dan Desain Sistem Informasi : Pendekatan Terstruktur
Teori Dan Praktik Aplikasi Bisnis. ANDI Yogyakarta, 2005.
Latief, Adnan. Penelitian Pengembangan. Universitas Negeri Malang. Jurnal, 2009.
Lajmudin, Bin Al – Bahra. Analisis dan Desain Sistem Informasi. Yogyakarta. 2005.
Lekkad, Pritviraj. SMS The New Age Communication Technique. UNITES
Professionals. Bangalore - India. 2008.
Mazwan, Kamus Data (Data Dictionary). Jurnal, 2007.
Mazdalifah . Buku Ajar Pendapat Umum. Departemen Ilmu Komunikasi Fakultas
Ilmu Sosial dan Politik Sumatera Utara. Jurnal, 2006.
133
Na’am, Ufriadif. Penerapan Mobile Banking Berbasis SMS. Jurnal, 2006.
Peraturan Pemerintah Republik Indonesia Nomor 37 Tahun 2009, Tentang Dosen.
Purnomo, Adi. Pemrograman Java 2 (Membangun Beragam Aplikasi Layanan SMS).
Salemba Infotek Jakarta, 2007.
Puy, Inigo. Bluetooth. Jurnal, 2008.
Ramadhani, Emilia & Mazdalifah. Buku Ajar Pendapat Umum. Jurnal, 2006.
Runkle, Tom. Application Definition. Jurnal, 2008.
Sugiono. Perancangan Sistem Informasi Appointment Pasien Berbasis SMS di Rumah
Bersalin. Stikes Surya Global. Yogyakarta. 2007.
Tetelepta, Franklin Arthur. Sistem Akses Fasilitas Pendaftaran Rencana Studi dan
Jadwal Ujian VIA SMS. Jurnal, 2003.
Undang – undang Republik Indonesia Nomor 18 Tahun 2002. Tentang Pembuatan
dan Pengembangan.
Widawaty, Yunita Riris & Lien, Diao Ai. Kegunaan Studi Literature Dalam
Penelitian. Jurnal, 2004.
Waljiyanto,. Sistem Basis Data : Analisis dan Pemodelan Data. Informatika.
Bandung. 2000.
Yulimingtarto, Johan. Pengolahan Data GPS yang Dikirim dengan Teknologi SMS
untuk Pelacakan Kendaraan. Petra Christian University. Surabaya, 2004.
http://dewey.petra.ac.id/jiunkpe_dg_11182.html. (10-01-2010) : 09.00)
http://willis.comze.com/pengertian_informasi.html (12-03-2010 : 14.00)
bdo.blog.ittelkom.ac.id/blog/files/2010/02/Free-Reply-SMS.pdf (23-12-2009 : 10.20)
http://www.textsmsmarketing.com/uses_benefits.php (24 - 05 - 2010 : 11.00)
(http://www.apolloasia.com/gateway.html) (24 – 05 – 2010 : 11.00)
134
LAMPIRAN A
WAWANCARA PRODI TI
1. Informasi apa saja yang ditanyakan oleh mahasiswa ketika datang ke prodi TI?
-
Mahasiswa biasanya menanyakan informasi nilai semester, IPK, dosen PKL dan
dosen PA.
2. Bagaimana cara memberikan informasi untuk mahasiswa TI?
-
Kami memberikan informasi baik dari pihak prodi sendiri atau informasi dari
pusat melalui mading mading yang berada di depan ruangan Prodi TI.
3. Langkah apa yang dilakukan oleh pihak prodi jika ingin mengambil suara dari
mahasiswa?
-
Untuk mendapatkan suara dari mahasiswa biasanya kami menggunakan angket
untuk dibagikan kepada mahasiswa, akan tetapi pembagian angket ini masih
kurang effisien karena banyak memakan waktu dan sering terjadi kerusakan
dalam pengembalian angket.
4. Bisakah bapak teraangkan susunan organisasi di Prodi TI ?
-
Prodi TI dikepalai oleh Kaprodi dan ada sekretaris yang membantu kaprodi,
juga pembantu staff yang membantu mahasiswa
Nara Sumber : Bapak Tomy.
135
WAWANCARA MAHASISWA
1. Informasi apa saja yang akan anda cari jika datang ke Prodi TI?
-
Biasanya saya mencari informasi jadwal kuliah, nilai ipk, dosen PA dan PKL.
2. Menurut anda bagaimana penyebaran informasi yang ada di prodi TI?
-
Tidak effisien, informasi terbaru hanya ditujukan kepada mahasiswa yang
sering ke kampus, sedangkan bagi mahasiswa yang sudah kerja mengalami
kesulitan dalam memcari informasi.
3. Bagaimana menurut anda dengan pembagian angket yang dilakukan pihak prodi
untuk mengambil suara dari Mahasiswa?
-
menurut saya bagus, karena pembagian angket bisa menyalurkan suara
mahasiswa. Akan tetapi lebih bagus lagi bisa dilakukan secara sering dan terus –
menerus.
4. Dalam pemberian informasi, bagaimana menurut anda yang effisien?
-
Menurut saya mahasiswa seharusnya mendapatkan informasi secara cepat dan
tidak bertele – tele.
5. Menurut anda perlukah mahasiswa diberikan informasi mengenai biaya
semester?
-
Menurut saya itu penting untuk orang tua mahasiswa, karena dengan adanya
laporan tersebut mereka bisa mengetahui biaya semester yang harus dibayar
oleh anaknya.
6. Bagaimana jika dibuat aplikasi yang membantu penyebaran informasi di Prodi
TI?
-
Menurut saya bagus, lebih baik lagi jika dilakukan secara online atau melalui
sms.
Sumber : Irham Hayat Daud
Nim : 104091003205
Rusdiantoro.
Jurnal Informatika, Juni 2010
PENGEMBANGAN APLIKASI PENYEBARAN INFORMASI BERBASIS
SHORT MESSAGE SERVICE (SMS)
DI LINGKUNGAN PROGRAM STUDI TEKNIK INFORMATIKA
Rusdiantoro
Program Studi Teknik Informatika
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Jl. Ir. H. Juanda No. 95 Ciputat, Jakarta Selatan, Indonesia 15419
Telp : (021)-7401925 Fax (021)-7402982
Email : [email protected]
Pada penelitian ini akan dikembangkan suatu perangkat lunak yang mempunyai tujuan
utama untuk menyebarkan informasi yang ada di lingkungan Program Studi Teknik Informatika.
Aplikasi ini dikembangkan untuk membantu penyebaran informasi dan pertukaran informasi karena
dalam menjalankan tugasnya pihak Program Studi cenderung mengalami kesulitan untuk memberikan
informasi kepada mahasiswa, dan bagi mahasiswa, mereka juga mengalami kesulitan dalam pencarian
informasi di sekitar fakultas, seperti mendapatkan informasi Dosen Pembina Akademik, Dosen
Pembimbing Praktek Kerja Lapangan dan informasi lainnya.
Kebutuhan mendasar pada informasi yang bersifat penting agar pihak mahasiswa dan
Program Studi dapat mengetahui informasi yang mereka butuhkan, membuat saya sebagai peneliti
tertarik untuk membuat aplikasi berbasis SMS yang dapat membantu pihak Program Studi dan
mahasiswa untuk mendapatkan informasi yang mereka inginkan. Dengan judul “PEMBUATAN
APLIKASI PENYEBARAN INFORMASI BERBASIS SHORT MESSAGE SERVOCE (SMS) DI
LINGKUNGAN PROGRAM STUDI TEKNIK INFORMATIKA “. Di mana aplikasi ini akan
mengiriman informasi sms kepada mahasiswayang berupa informasi dosen pembina praktek kerja
lapangan, dosen pembina akademik, informasi biaya semester mahasiswa dan polling sms.
Dalam pengembangan sistem ini, penulis menggunakan metodologi RAD (Rapid Application
Development), menggunakan bahasa pemrograman java dan menggunakan MySQL sebagai database
nya serta menggunakan SmitDev Server sebagai sms gateway. Dalam menjalankan aplikasi ini, penulis
akan menggunakan bahasa AT COMMAND untuk bahasa perintah handphone dan Bluetooth sebagai
media koneksi perantara antara komputer dan handphone.
Kata Kunci : short message service (SMS), Informasi, Mahasiswa, Program Studi Teknik
Informatika
Latar Belakang
SMS (Short Message Service) merupakan layanan atau fasilitas yang diberikan dan
dikembangkan oleh para operator GSM (Global System of Mobile Communication). Layanan atau
fasilitas SMS merupakan salah satu hasil pengembangan dari aplikasi perangkat seluler atau mobilephone yang dapat digunakan sebagai media berkomunikasi. Adapun cara berkomunikasi memakai SMS
adalah dengan cara mengirimkan sebuah pesan singkat, berupa text atau alphanumeric yang sederhana.
Cara komunikasi dengan menggunakan SMS merupakan cara berkomunikasi yang lain, selain
berkomunikasi dengan mengirim sinyal suara.
Program studi TI adalah suatu badan yang menjalankan aktivitas akademik program studi Teknik
Informatika, yang mempunyai tugas mengatur segala jenis aktivitas dan kegiatan yang dilakukan di
dalam program studi TI. Program studi TI juga mempunyai tugas untuk memberikan informasi kepada
mahasiswa dan melayani mahasiswa dalam bidang seputar kegiatan mahasiswa. Susunan staff dalam
Program studi TI dikepalai oleh seorang kaprogram studi dan dalam kinerjanya kepala program studi
dibantu oleh seorang sekretaris, seorang kepala pengurus mahasiswa program non-reguler dan tiga orang
orang pemberi pelayanan informasi bagi mahasiswa.
Jenis pelayanan yang diberikan oleh pihak Program studi TI kepada mahasiswa diantaranya
adalah mengurus surat-menyurat untuk mahasiswa, memberikan informasi dan dalam kegiatanya
program studi juga menerima informasi dari mahasiswa seperti biodata mahasiswa, pendapat dari
mahasiswa mengenai kinerja dosen, fasilitas fakultas serta masih banyak lagi jenis pelayanan dan
informasi yang diberikan atau diterima pihak program studi dari mahasiswa. Akan tetapi dalam
berjalanya kegiatan tersebut, pihak program studi cenderung mengalami kesulitan untuk mendapatkan
informasi serta mencari tahu informasi yang dibutuhkan baik bagi pihak mahasiswa atau pihak program
studi.
1
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Bagi pihak mahasiswa, mereka banyak mengalami kesulitan dalam pencarian informasi di sekitar
fakultas, dari informasi Dosen Pembina Akademik, Dosen Pembimbing Praktek Kerja Lapangan sampai
informasi jadwal kelas dan informasi lainya. Dengan banyaknya jumlah mahasiswa yang ada di program
studi TI, dan terjadinya kesulitan dalam mengatur jadwal mahasiswa untuk meminta informasi kepada
pihak program studi maka sering terjadi keterlambatan dalam permintaan informasi yang diajukan oleh
mahasiswa, baik bagi mereka yang ingin mengetahui dosen PA dan PKL atau mengurus surat – surat
yang dibutuhkan oleh mahasiswa. Bagi pihak program studi, mereka mengalami kesulitan dalam
memberikan informasi, menggumpulkan suara mahasiswa dan informasi dari mahasiswa yang berperan
penting bagi pihak program studi. Sedangkan informasi yang disampaikan oleh pihak program studi
mempunyai peranan penting dalam kebutuhan informasi bagi mahasiswa, dan jika ada informasi yang
akan diberikan oleh pihak program studi kepada mahasiswa tertentu, mereka masih mengalami kesulitan
dalam memberikan informasi tersebut, karena belum ada data yang lengkap atau mengalami kesulitan
dalam pencarian data mahasiswa yang bersangkutan.
Kebutuhan mendasar pada informasi yang bersifat penting agar pihak mahasiswa dan program
studi dapat mengetahui informasi yang mereka butuhkan membuat saya sebagai peneliti tertarik untuk
membuat aplikasi berbasis SMS yang dapat membantu pihak program studi dan mahasiswa
mendapatkan informasi yang mereka inginkan. Dengan judul “ PEMBUATAN APLIKASI
PENYEBARAN INFORMASI BERBASIS SHORT MESSAGE SERVICE (SMS) DI LINGKUNGAN
PROGRAM STUDI TEKNIK INFORMATIKA “. Tulisan ini merupakan penelitian skripsi yang
merupakan syarat dalam memperoleh kelulusan dan memperoleh gelar sarjana.
Rumusan Masalah
Berbagai bentuk pencarian informasi telah banyak dilakukan oleh pihak mahasiswa maupun
program studi, dari pencarian informasi yang bersifat langsung (direct) seperti menanyakan informasi
langsung kepada pihak program studi atau bersifat tidak langsung (indirect) seperti pengambilan
informasi dari mahasiswa dalam bentuk angket. Dan dalam aktivitas program studi atau mahasiswa
terdapat beberapa permasalahan yang menjadi penghambat dalam pemberian dan penerimaan informasi,
permasalahan tersebut adalah sebagai berikut :
a. Kurangnya komunikasi antara mahasiswa dan pihak program studi, menjadi salah satu penyebab
utama tidak berjalannya penyebaran informasi secara efisien di FST.
b. Dalam menanyakan informasi kepada pihak program studi, banyaknya jumlah mahasiswa membuat
pihak program studi mengalami kesulitan dalam melayani permintaan mahasiswa, sehingga sering
terjadi keterlambatan dalam pelayanan permintaan informasi yang diajukan oleh mahasiswa.
c. Membuat aplikasi penyebaran informasi yang membantu pihak program studi TI dalam memberikan
informasi kepada mahasiswa dengan info terbaru, seperti informasi pembimbing praktek kerja
lapangan, pembina akademik, biaya semester dan polling sms yang membantu mengetahui suara
mahasiswa.
Batasan Masalah
Dalam pembuatan skripsi ini, peneliti membatasi permasalahan dengan batasan masalah sebagai
berikut :
a. Informasi yang diberikan dalam aplikasi ini berupa penyebaran informasi langsung kepada
mahasiswa, informasi dosen pembimbing praktek kerja lapangan, pembina akademik, biaya semester
dan polling sms.
b. Menggunakan media handphone bertipe GSM yaitu Siemens CX75 sebagai server perantara antara
aplikasi dari komputer dan koneksi sinyal.
c. Menggunakan program smitdev server untuk membuat koneksi antara Bahasa pemrograman Java
dengan handphone yang dikoneksikan ke dalam PC.
d. Pihak yang menggunakan aplikasi ini ialah staff program studi Teknik Informatika yang membantu
pelayanan informasi mahasiswa.
Tujuan Penelitian
Adapun tujuan dari peneliti membahas studi kasus ini adalah :
1. Untuk mengembangkan dan mengimplementasikan aplikasi berbasis SMS untuk digunakan di
lingkungan Program studi TI.
2. Bagi pihak program studi aplikasi ini dapat membantu mereka dalam memberikan dan menerima
informasi dari mahasiswa serta dapat mengetahui suara mayoritas mahasiswa.
3. Bagi pihak mahasiswa aplikasi ini diharapkan dapat membantu mahasiswa dalam mendapatkan dan
menerima informasi yang diberikan oleh pihak program studi, terutama dalam hal pemberian
informasi yang bersifat penting.
2
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Manfaat Penelitian
Bagi Peneliti.
a) Menambah pengalaman, memperluas wawasan pemikiran dan mengembangkan potensi diri.
b) Memperoleh pengetahuan baru yang berhubungan dengan bahasa pemrograman java dan MySQL.
c) Untuk memenuhi salah satu syarat kelulusan strata satu (S1) Program Studi Teknik Informatika
Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta.
Bagi Pihak Program Studi TI dan Mahasiswa.
a) Dengan dibuatnya aplikasi ini diharapkan akan mempermudah pihak Program studi dan Mahasiswa
dalam mencari dan mendapatkan informasi yang dibutuhkan.
b) Dapat meningkatkan komunikasi antara pihak program studi dan mahasiswa.
Bagi Pihak Universitas.
a) Sebagai sumbangan karya ilmiah dalam disiplin ilmu khususnya dalam bidang teknologi informatika.
Metodologi Penelitian
Langkah-langkah dalam pengerjaan Tugas Akhir :
Waktu dan Tempat Penelitian
Penelitian pengembangan aplikasi ini dilaksanakan selama 3 (tiga) bulan, dimulai pada tanggal 1
Oktober 2009 sampai dengan 1 Desember 2009. Tempat penelitian di Program Studi Teknik
Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Metode Pengumpulan Data
Penelitian yang dilakukan adalah penelitian eksperimen dan simulasi. Penelitian ini
menggunakan sebuah laptop dan handphone sebagai sarana untuk mengembangkan aplikasi berbasis
SMS.
a. Penelitian Kepustakaan
Metode ini dilakukan dengan cara mencari bahan – bahan atau materi sumber yang dapat digunakan
sebagai referensi peneliti atau mencari hal – hal yang dapat digunakan dalam pembuatan aplikasi
berbasis SMS ini.
b. Wawancara
Wawancara bertujuan untuk mengetahui pendapat dari mahasiswa apakah aplikasi berbasis SMS ini
akan bermanfaat bagi mahasiswa dan civitas akademik.
c. Studi Literatur tentang :
1) Pemrograman dengan bahasa Java, karena aplikasi berbasis SMS ini akan dibuat menggunakan
bahasa Java.
2) Koneksi antara mobile-phone dengan komputer melalui Kabel Data, serta menggunakan Bluetooth
sebagai media perantara.
3) Belajar bahasa pemrograman SQL, serta menggunakan MySQL sebagai database-nya.
3
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Metode Pengembangan Sistem
Metode pengembangan sistem yang digunakan dalam penelitian ini menggunakan metode RAD
(Rapid Application Development) dan dengan model-model sebagai berikut:
1). Model Bisnis
Pada tahap ini menentukan ruang lingkup program yang akan dibangun sesuai fungsi – fungsi
bisnis yang berjalan dalam proses bisnis
2). Model Data
Membentuk serangkaian objek data yang dibutuhkan untuk menopang model bisnis tersebut.
Pada tahapan ini, dilakukan analisa terhadap berbagai macam hal yang dibutuhkan untuk membangun
serta mensimulasikan aplikasi berbasis SMS ini. Analisa yang dilakukan antara lain adalah:
a) Analisa terhadap sumber daya yang dimiliki, termasuk untuk menentukan jenis bahasa pemrograman
dan database yang akan digunakan.
b) Analisa terhadap teknologi SMS dan SMS Gateway.
c) Analisa serta memilih komponen yang tepat sesuai dengan teknologi yang telah dipilih baik
hardware maupun software untuk memenuhi aplikasi layanan yang akan dibangun.
3). Perencanaan dan Pembuatan Perangkat Lunak
a) Membuat agar mobile-phone yang ada di server dapat berhubungan dengan komputer melalui kabel
data, serta menggunakan ATCommand dalam membaca data dari mobile-phone ke PC.
b) Membuat aplikasi berbasis SMS.
c) Membuat server menjadi database untuk hasil informasi yang diterima dari mahasiswa.
4.) Pengujian dan Analisa Perangkat Lunak
a) Pengujian program yang telah dibuat.
b) Analisa hasil output-an dari program yang telah dibuat.
5). Pengambilan Kesimpulan
Pengambilan kesimpulan terhadap alat yang telah dibuat sesuai dengan hasil yang didapat dalam
pengujian. Sedapat mungkin dilakukan perbaikan-perbaikan sehinga mendapatkan hasil yang lebih
optimum.
Gambar 1. Rapid Application Development Model
4
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Pengertian SMS
Short Message Service (SMS) adalah kemampuan untuk mengirim dan menerima pesan yang
terbatas besarnya ( pesan singkat ) antar handphone/telepon selular yang berupa data dalam bentuk
string atau teks dan data binary. Setiap sms dibtasi hanya sampai 160 karakter saja, dengan
menggunakan huruf latin, sedangkan untuk karakter non latin seperti karakter Arab atau chinese, sms
dibatasi hanya sampai 70 karakter saja. Sms merupakan salah satu dari GSM data services yang
disediakan oleh PLMN (Public Land Mobile Network). Contoh GSM data services yang lain adalah fax
dan data transfer. GSM data services hanya dapat digunakan jika sebuah PLMN menyediakan fasilitas
tersebut.
GSM (Global System for Mobile)
Global system for mobile communication (GSM) merupakan standar yang diterima secara global
untuk komunikasi selular digital. GSM adalah nama group standardisasi yang di mapankan pada tahun
1982 untuk menghasilkan standar telepon bergerak di eropa, digunakan sebagai formula spesifikasi
untuk pan-eropa sistem selular radio bergerak yang bekerja pada frekuensi 900 Mhz. Dan diperkirakan
banyak negara lainnya diluar eropa akan turut menggunakan teknologi GSM.
AT COMMAND
AT COMMAND adalah perintah-perintah yang digunakan pada telepon selular. AT
COMMAND dari tiap-tiap telepon selular (khususnya yang berbeda merk atau pembuatnya) bisa
berbeda-beda, tetapi pada dasarnya sama. Pada proyek ini AT COMMAND yang digunakan adalah AT
COMMAND untuk mengirim dan menerima SMS. AT Command untuk SMS ini sama untuk semua tipe
telepon selular.
Gambar 2. Contoh AT-Command
Java
Java merupakan sebuah bahasa berorientasi objek (object oriented programming). Yang
merupakan karya Sun Microsystem Inc. Yang dapat dijalannkan dimanapun dan di sembarang platform
apapun, di beragam lingkungan: Internet, intranets, pemakaian produk elektronik, dan aplikasi
komputer. Jika anda pernah memprogram dengan bahasa pemrograman OOP , seperti C++ atau
Smalltalk, mungkin anda ingat betapa menyenangkannya memprogram dengan konteks objek. Anda
merancang beberapa objek satu demi satu dengan mendefinisikan berbagai property yang dimiliki object
tersebut dan pekerjaan (task) yang dapat ditangani oleh objek tersebut. Kemudian anda merangkai
semua objek tersebut dengan mendefinisikan relasi antar objek tersebut seperti halnya membangun
sebuah mobil dari komponen-komponennya. Belakangan ini , mungkin anda akrab dengan slogan
"reusable of code". "Reuse of code" ini bukanlah cut & paste. Yang dimaskud dengan "reuse of code"
ini adalah suatu keadaan dimana para programmer untuk membangun sebuah objek dengan mengextend
objek-objek yang telah ada secara mudah. Secara mudah disini adalah, programmer itu mungkin tidak
perlu tahu dengan kode-kode dari objek yang ingin ia extend, yang ia butuhkan hanyalah pengetahuan
mengenai property dari objek itu dan hal-hal yang dapat dilakukan oleh objek itu.
5
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
My Structured Query Language (MySQL)
MySQL adalah multi user database yang menggandung bahasa Structured Query Language (SQL) yaitu
bahasa yang digunakan untuk komunikasi dengan basis data. Menurut ANSI (American National
Standards Institute), bahasa ini merupakan standar untuk Relational Basis data Management System
(RDBMS). Pada awalnya, MySQL mempunyai nama mSQL, dan sering digunakan untuk keperluan
koneksi ke table menggunakan fast low level routine. Namun mSQL terbukti kurang cepat dan tidak
sefleksibel saat itu. Karena hal itu, dibuatlah suatu SQL interface dengan API interface yang hampir
sama dengan mSQL dan akhirnya lebih populer disebut MySQL.
Bluetooth Serial Port (SPP)RFCOMM (Cable replacement protocol)
Bluetooth adalah nama yang diadopsi dari nama Raja Denmark Harald Bluetooth yang
memerintah kerajaan Denmark pada tahun 940 – 981 SM. Namanya diambil karena raja Denmark
tersebut sukses menggabungkan 2 kerajaan yaitu Denmark dan Norwegia menjadi sebuah kerajaan utuh.
Selain itu, dia juga sukses dalam menyebarkan agama kristen di kedua negara tersebut. Dengan
penamaan tersebut diharapkan Bluetooth yang merupakan media transmisi ini bisa juga menjadi
teknologi pemersatu yang digunakan di dalam dunia komputer dan dunia telekomunikasi.
Bluetooth Serial Port Profile (SPP), adalah salah satu layanan yang ada di dalam bluetooth.
Seperti yang kita ketahui banyak jenis layanan bluetooth yang lain seperti, “Audio Headset” atau
“Bluetooth Printer”. Bluetooth serial port bisa di kategorikan sebagai COM di dalam Windows (seperti
COM3 atau COM7), yang dapat berfungsi sama dengan port RS232 yang tersedia di komputer atau
virtual COM.
Gambar 3. Contoh Bluetooth Serial Port
6
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Analisis Implementasi.
Sesuai dengan metode pengembangan sistem yang digunakan peneliti, berikut ini beberapa hal
yang dilakukan peneliti dengan berpedoman pada metode pengembangan Rapid Application
Development (RAD).
1. Bisnis Modelling.
Dalam pembuatan aplikasi ini peneliti menggunakan bisnis modeling yang mengendalikan bisnis
dalam pembuatan aplikasi ini.
Gambar 4. Bisnis Modelling
2. Data Modeling
Model data yang digunakan adalah :
2.1 DFD (Data Flow Diagram)
DFD adalah diagram yang menggunakan notasi – notasi untuk menggambarkan arus dari data
sistem (Jogiyanto, 2005 : 700)
a. Context Diagram
Context diagram adalah diagram level tertinggi dari DFD yg menggambarkan hubungan sistem
dgn lingkungan luarnya.
Bentuk context diagram aplikasi EI (EXTRACT INFORMATION) :
Gambar 5. Context Diagram
7
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
3.
Jurnal Informatika, Juni 2010
Process Modelling
Process modelling yang digunakan adalah :
3.1 Entity Relationship Diagram
Gambar 6. Entity Relationship Diagram (ERD)
3.2 Perancangan Database
Macam-macam tabel yang digunakan pada pada aplikasi ini adalah :
a. Tabel sms_masuk
NO
1
2
3
4
5
6
FIELD
id_masuk
no_telepon_masuk
tanggal_masuk
jam_masuk
isi_pesan_masuk
status_masuk
TYPE
int(11)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL
NO
NO
NO
NO
NO
NO
KEY
PRI
DEFAULT
NULL
EXTRA
auto_increment
Tabel 1. Sms Masuk
8
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
b. Tabel sms_keluar
NO
1
2
3
4
5
6
FIELD
TYPE
id_keluar
no_telepon_keluar
tanggal_keluar
jam_keluar
isi_pesan_keluar
status_keluar
NULL
int(11)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
KEY
NO
NO
NO
NO
NO
NO
DEFAULT
PRI
EXTRA
NULL
auto_increment
Tabel 2. Sms Keluar
c. table data mahasiswa
NO
1
2
3
4
FIELD
TYPE
nim
nama_mahasiswa
dosen_pa
dosen_pkl
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL
KEY
NO
NO
NO
NO
PRI
DEFAULT
EXTRA
NULL
Tabel 3. Data Mahasiswa
d. Tabel buku_telepon
NO
1
2
3
FIELD
no_telepon
nama_kontak
alamat
TYPE
varchar (25)
varchar (150)
varchar (250)
NULL
KEY
DEFAULT
NO
NO
NO
PRI
NULL
EXTRA
Tabel 4. Buku Telepon
b. Tabel biaya_semester
NO
1
2
3
4
5
6
7
8
9
10
FIELD
kode
nim
spp
dop
dkm
dp
jumlah
pajak
total_pembayaran
bulan_pembayaran
TYPE
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (10)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
KEY
PRI
DEFAULT
EXTRA
NULL
Tabel 5. Biaya Semester
9
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
c. Tabel data_pertanyaan_polling
NO
1
2
3
4
5
FIELD
TYPE
Kode_pertanyaan
Isi_pertanyaan
Pilihan_a
Pilihan_b
Pilihan_c
varchar (100)
varchar (100)
varchar (100)
varchar (100)
varchar (100)
NULL
NO
NO
NO
NO
NO
KEY
PRI
DEFAULT
EXTRA
NULL
Tabel 6. Data Pertanyaan Polling
d. Tabel_hasil_polling
NO
1
2
3
4
FIELD
TYPE
no_urut
kode_pertanyaan
pilihan
no_telepon_pengirim
int(11)
varchar (100)
varchar (100)
varchar (100)
NULL
NO
NO
NO
NO
KEY
PRI
DEFAULT
NULL
EXTRA
auto_increment
Tabel 7. Hasil Polling
4. Application Generation
Peneliti akan menerangkan pembutan database dan tampilan yang akan digunakan di dalam aplikasi ini :
4.1 Pembuatan Database
Membuat database menggunakan MySQL :
1. Aktivkan MySQL lalu tekan tombol enter :
Gambar 7. Mengaktivkan MySQL
10
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
2. ketik perintah (show databases;) lalu akan ada tampilan seperti ini :
Gambar 8. Show Databases MySQL
3. lalu pilih (use sms), lalu ketik (show tables;) maka akan ada tampilan seperti ini :
Gambar 9. Show Tables MySQL
4. berikut adalah coding MySQL untuk membuat database :
a. Database sms masuk :
CREATE TABLE SMS_MASUK (id_masuk int(11) NOT NULL auto_increment, no_telepon_masuk
varchar(100) NOT NULL default ‘’ , tanggal_masuk varchar(100) NOT NULL default ‘’, jam_masuk
varchar(100) NOT NULL default ‘’, isi_pesan_masuk varchar(160) NOT NULL default ‘’,
status_masuk varchar(100) NOT NULL default ‘’, PRIMARY KEY (id_masuk)) ENGINE=MyISAM
DEFAULT CHARSET=latin1;
b. Database sms keluar :
CREATE TABLE SMS_KELUAR (id_keluar int(11) NOT NULL auto_increment,
no_telepon_keluar varchar(100) NOT NULL default ‘’ , tanggal_keluar varchar(100) NOT NULL
default ‘’, jam_keluar varchar(100) NOT NULL default ‘’, isi_pesan_keluar varchar(160) NOT
NULL default ‘’, status_keluar varchar(100) NOT NULL default ‘’, PRIMARY KEY (id_keluar))
ENGINE=MyISAM DEFAULT CHARSET=latin1;
11
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
c. Database Data Buku Telepon :
CREATE TABLE DATA_BUKU_TELEPON (nomor_telepon varchar(25) NOT NULL default ‘’,
nama_kontak varchar(150) NOT NULL default ‘’, alamat varchar(250) NOT NULL default ‘’,
PRIMARY KEY (no_telepon)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
d. Database Data Mahasiswa:
CREATE TABLE DATA_MAHASISWA (nim varchar(100) NOT NULL default ‘’,
nama_mahasiswa varchar(100) NOT NULL default ‘’, dosen_pa varchar(100) NOT NULL default ‘’,
dosen_pkl varchar(100) NOT NULL default ‘’, PRIMARY KEY (nim)) ENGINE=MyISAM
DEFAULT CHARSET=latin1;
e. Database Biaya Semester :
CREATE TABLE BIAYA_SEMESTER (kode varchar(100) NOT NULL default ‘’, nim varchar(100)
NOT NULL default ‘’ , spp varchar(100) NOT NULL default ‘’, dop varchar(100) NOT NULL
default ‘’, dkm varchar(100) NOT NULL default ‘’, dp varchar(10) NOT NULL default ‘’, jumlah
varchar(100) NOT NULL default ‘’ , pajak varchar(100) NOT NULL default ‘’, total_pembayaran
varchar(100) NOT NULL default ‘’, bulan_pembayaran varchar(100) NOT NULL default ‘’,
PRIMARY KEY (kode)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
f. Database Data Hasil Polling :
CREATE TABLE DATA_HASIL_POLLING (no_urut int(11) NOT NULL auto_increment,
kode_pertanyaan varchar(100) NOT NULL default ‘’, pilihan varchar(100) NOT NULL default ‘’,
no_telepon_pengimrim varchar(100) NOT NULL default ‘’, PRIMARY KEY (no_urut))
ENGINE=MyISAM DEFAULT CHARSET=latin1;
g. Database Pertanyaan Polling :
CREATE TABLE DATA_PERTANYAAN_POLLING (kode_pertanyaan varchar(100) NOT NULL
default ‘’, isi_pertanyaan varchar(100) NOT NULL default ‘’, pilihan_a varchar(100) NOT NULL
default ‘’, pilihan_b varchar(100) NOT NULL default ‘’, pilihan_c varchar(100) NOT NULL default
‘’, PRIMARY KEY (nim)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
4.2 Tampilan Aplikasi.
Peneliti akan menampilkan desain aplikasi yang akan digunakan dalam aplikasi :
1. Halaman Utama
12
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
2. Halaman Kirim SMS
3. Halaman Pengaturan Terminal
13
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
4. Halaman SMS Masuk
5. Halaman SMS Keluar
14
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
6. Halaman Buku Telepon
7. Halaman Data Mahasiswa, Dosen PA, Dosen PKL
15
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
8. Halaman Input Biaya Semester
9. Halaman Input Pertanyaan Polling
16
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
10. Halaman Hasil Polling
5. Testing Dan Turnover
Pengujian Aplikasi ini dilakukan untuk mengetahui apakah aplikasi yang telah
dikembangkan dapat berfungsi seperti yang diharapkan. Pengujian ini menggunakan Java
Studio 8 untuk running program, perangkat lunak harus terlebih dahulu terhubung dengan
database server dan telepon selelur yang dihubungkan ke Bluetooth serial port.
17
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Kesimpulan
Setelah membuat aplikasi penyebaran informasi berbasis short message service dan menjalankanya,
penulis menarik kesimpulan sebagai berikut :
1. Pembuatan Aplikasi penyebaran informasi Di Lingkungan Program Studi Teknik Informatika ini
dibuat sebagai sarana mempermudah komunikasi antara pihak program studi dan mahasiswa.
2. Bagi pihak program studi aplikasi ini dapat membantu mereka dalam memberikan dan menerima
informasi dari mahasiswa serta dapat mengetahui suara mayoritas mahasiswa.
3. Bagi pihak mahasiswa aplikasi ini diharapkan dapat membantu mahasiswa dalam mendapatkan dan
menerima informasi terbaru yang diberikan oleh pihak program studi.
Saran
Sehubungan dengan kesimpulan di atas, penulis hendak memberikan saran-saran sebagai berikut:
1) Kepada pembaca yang ingin meneruskan aplikasi Extract Information, diharapkan mengambil
ruang lingkup penelitian yang lebih luas, seperti wilayah fakultas atau universitas.
2) Kepada mahasiswa yang akan ingin mengembangkan aplikasi ini, diharapkan menambahkan
aplikasi yang memberikan informasi bagi mahasiswa seperti nilai IPK mahasiswa, jadwal kelas
atau jadwal mata kuliah dan lain-lain.
DAFTAR PUSTAKA
Dwi Prasetyo, Didik. Administrasi Database Server MySQL. Media Elex Komputido. Yogyakarta,
2004.
Efendy, Yeyen & Istiyanto, Jazi Eko. Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh
Berbasis AT89C52 dan Layanan SMS GSM. UGM. Yogyakarta, 2004.
Eko. Pengantar Teknologi Bluetooth. Jurnal, 2005.
Faiz, GP. Global System for Mobile Communication. Jurnal, 2005.
Hariyanto, Bambang. Esensi – esensi Bahasa Pemrograman Java. Informatika Bandung, 2005.
Hasan. Multimedia Information Retrieval. Institut Teknologi Surabaya. Jurnal, 2007.
Heggel. Docklight Application Note : Bluetooth Serial Port. Jurnal, 2009.
Istiyanto, Jazi Eko. Rancangan dan Implementasi Prototipe Sistem Kendali Jarak Jauh. UGM.
Yogyakarta, 2004.
Jogiyanto, Hartono. Analisis dan Desain Sistem Informasi : Pendekatan Terstruktur Teori Dan Praktik
Aplikasi Bisnis. ANDI Yogyakarta, 2005.
Latief, Adnan. Penelitian Pengembangan. Universitas Negeri Malang. Jurnal, 2009.
Lajmudin, Bin Al – Bahra. Analisis dan Desain Sistem Informasi. Yogyakarta. 2005.
Lekkad, Pritviraj. SMS The New Age Communication Technique. UNITES Professionals. Bangalore India. 2008.
Mazwan, Kamus Data (Data Dictionary). Jurnal, 2007.
Mazdalifah . Buku Ajar Pendapat Umum. Departemen Ilmu Komunikasi Fakultas Ilmu Sosial dan
Politik Sumatera Utara. Jurnal, 2006.
18
UIN Syarif Hidayatullah Jakarta
Rusdiantoro
Jurnal Informatika, Juni 2010
Na’am, Ufriadif. Penerapan Mobile Banking Berbasis SMS. Jurnal, 2006.
Peraturan Pemerintah Republik Indonesia Nomor 37 Tahun 2009, Tentang Dosen.
Primashanti, Ida Ayu. 2007. Normalisasi.
Purnomo, Adi. Pemrograman Java 2 (Membangun Beragam Aplikasi Layanan SMS). Salemba Infotek
Jakarta, 2007.
Puy, Inigo. Bluetooth. Jurnal, 2008.
Ramadhani, Emilia & Mazdalifah. Buku Ajar Pendapat Umum. Jurnal, 2006.
Runkle, Tom. Application Definition. Jurnal, 2008.
Sugiono. Perancangan Sistem Informasi Appointment Pasien Berbasis SMS di Rumah Bersalin. Stikes
Surya Global. Yogyakarta. 2007.
Tetelepta, Franklin Arthur. Sistem Akses Fasilitas Pendaftaran Rencana Studi dan Jadwal Ujian VIA
SMS. Jurnal, 2003.
Undang – undang Republik Indonesia Nomor 18 Tahun 2002. Tentang Pembuatan dan Pengembangan.
Widawaty, Yunita Riris & Lien, Diao Ai. Kegunaan Studi Literature Dalam Penelitian. Jurnal, 2004.
Waljiyanto,. Sistem Basis Data : Analisis dan Pemodelan Data. Informatika. Bandung. 2000.
Yulimingtarto, Johan. Pengolahan Data GPS yang Dikirim dengan Teknologi SMS untuk Pelacakan
Kendaraan. Petra Christian University. Surabaya, 2004.
http://dewey.petra.ac.id/jiunkpe_dg_11182.html. (10-01-2010) : 09.00)
http://willis.comze.com/pengertian_informasi.html (12-03-2010 : 14.00)
bdo.blog.ittelkom.ac.id/blog/files/2010/02/Free-Reply-SMS.pdf (23-12-2009 : 10.20)
http://www.textsmsmarketing.com/uses_benefits.php (24 - 05 - 2010 : 11.00)
http://www.apolloasia.com/gateway.html (24 – 05 – 2010 : 11.00)
19*
UIN Syarif Hidayatullah Jakarta
136
Lampiran B. Coding Aplikasi
Coding Tampilan Utama
public class Utama_SMS extends javax.swing.JFrame implements
javax.comm.SerialPortEventListener{
/**
* Creates new form Utama_SMS
*/
String nilaiSerialPort;
String nilaiBitPerSecond;
String nilaiDataBits;
String nilaiParity;
String nilaiStopBit;
String nilaiFlowControl;
String driverJDBC;
String url;
String user;
String password;
public Utama_SMS(String nilaiSerialPort,
String nilaiBitPerSecond,
String nilaiDataBits,
String nilaiParity,
String nilaiStopBit,
String nilaiFlowControl,
String driverJDBC,
String url,
String user,
String password) {
this.nilaiSerialPort = nilaiSerialPort;
this.nilaiBitPerSecond = nilaiBitPerSecond;
this.nilaiDataBits = nilaiDataBits;
this.nilaiParity = nilaiParity;
this.nilaiStopBit = nilaiStopBit;
this.nilaiFlowControl = nilaiFlowControl;
this.driverJDBC = driverJDBC;
this.url = url;
this.user = user;
this.password = password;
initComponents();
belumTerhubung();
}
/**
* Methode serialEvent
* Keterangan : menerima respon dari terminal
* @param event = reapon yang diterima terminal
*/
// Deklarasi variabel
int bufferOffset = 0;
byte[] bacaBuffer = new byte[100000];
int n;
java.io.InputStream input;
// Awal methode serialEvent
public void serialEvent(javax.comm.SerialPortEvent event) {
try {
input = SmitDev.SmsServer.Server.port.getInputStream();
// Apabila ada respons dari terminal, lakukan pembacaan
while ( (n = input.available()) > 0) {
n = input.read(bacaBuffer, bufferOffset, n);
bufferOffset += n;
// Jika ada respons "\15" (Line Feed Carriage Return),
if ( (bacaBuffer[bufferOffset - 1] == 10) &&
(bacaBuffer[bufferOffset - 2] == 13)) {
String buffer = new String(bacaBuffer, 0, bufferOffset - 2);
// Berikan ke methode terimaResponAT
terimaResponAT(buffer);
bufferOffset = 0;
}
} // Akhir while
} // Akhir try
catch (java.io.IOException e) {
}
} // Akhir methode serialEvent public void
serialEvent(javax.comm.SerialPortEvent event) {
int Index = 0;
String id_sms = "";
boolean merek = false;
boolean seri = false;
boolean imei = false;
boolean bacaSMS = false;
String respons = "";
String nilaiMerek = "Unknow Device";
String nilaiSeri= "Unknow Device";
String nilaiIMEI= "Unknow Device";
String nilaiOperator= "Unknow Network";
private void terimaResponAT(String buffer){
String tanggal_sms = "";
String jam_sms = "";
String tlp_sms = "";
String isi_sms = "";
java.util.StringTokenizer st = new java.util.StringTokenizer(buffer,
"\r\n");
while (st.hasMoreTokens()) {
// mengambil token yang ada pada obyek
respons = st.nextToken();
tulis_proses(respons);
if (merek) {
nilaiMerek = respons;
merek = false;
} else if (seri) {
nilaiSeri = respons;
seri = false;
} else if (imei) {
nilaiIMEI = respons;
imei = false;
}
// Respon Jika Terminal Sudah Tersambung
if(respons.startsWith("ATH0")){
sedangTerhubung();
} else if (respons.startsWith("+COPS:")) {
java.util.regex.Pattern pattern =
java.util.regex.Pattern.compile(",");
String[] hasil = pattern.split(respons.trim());
nilaiOperator = hasil[2].trim();
} else if (respons.startsWith("AT+CGMI")) {
merek = true;
} else if (respons.startsWith("AT+CGMM")) {
seri = true;
} else if (respons.startsWith("AT+CGSN")) {
imei = true;
} else if (respons.startsWith("+CMGR:")) {
bacaSMS = true;
} else if (bacaSMS) {
try{
SmitDev.SmsServer.Server.terimaSMS(respons.trim());
id_sms = String.valueOf(Index);
tlp_sms = SmitDev.SmsServer.Server.noTlpPengirim;
isi_sms = SmitDev.SmsServer.Server.isiPesanTerima;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsMasuk(tlp_sms,
isi_sms);
SmitDev.SmsServer.Server.kirimAT("AT+CMGD=" +
id_sms + "\15", 1250);
bacaSMS = false;
} catch (Exception e){e.getMessage();}
} else if (respons.startsWith("+CMTI:")) {
java.util.regex.Pattern pattern =
java.util.regex.Pattern.compile(":");
String[] hasil = pattern.split(respons.trim());
pattern = java.util.regex.Pattern.compile(",");
hasil = pattern.split(hasil[1].trim());
Index = Integer.parseInt(hasil[1].trim());
SmitDev.SmsServer.Server.kirimAT("AT+CPMS=" +
hasil[0].trim() + "\15", 1250);
SmitDev.SmsServer.Server.kirimAT("AT+CMGR=" + Index +
"\15", 1250); // Baca Pesan Baru yang Masuk
} else if (respons.startsWith("+CMGS:")) {
tulis_proses("Pesan Berhasil Dikirim");
137
new
prosesDatabaseSmsServer(koneksi).updateStatusData(id_Sms_Kirim,
"SEND");
this.thKirim.resume();
} else if (respons.startsWith("+CMS ERROR:")) {
tulis_proses("Pesan GAGAL Dikirim");
new
prosesDatabaseSmsServer(koneksi).updateStatusData(id_Sms_Kirim,
"NO");
this.thKirim.resume();
}
}
}
public void tulis_proses(String data) {
getWaktu();
String waktu = jam + ":" + menit + ":" + detik;
String ddmmyy = tanggal + bulan + tahun;
data = "\"" + waktu + "\", \"" + data + "\"\015";
try {
byte b[] = data.getBytes();
java.io.File outputx = new java.io.File(ddmmyy +
".SmitDevSmsServer");
java.io.RandomAccessFile random = new
java.io.RandomAccessFile(outputx, "rw");
random.seek(outputx.length());
random.write(b);
random.close();
} catch (java.io.IOException ex) {
System.out.println(ex);
}
}
javax.swing.table.DefaultTableModel tabSMSMasuk = new
javax.swing.table.DefaultTableModel(
null, new String[] {"No. Telepon", "Nama Kontak", "Tanggal",
"Jam", "Isi Pesan", "Status"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;
}};
javax.swing.table.DefaultTableModel tabSMSTerkirim = new
javax.swing.table.DefaultTableModel(
null, new String[] {"No. Telepon", "Nama Kontak",
"Tanggal", "Jam", "Isi Pesan", "Status"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;
}};
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
panelTengah = new javax.swing.JPanel();
jLabel11 = new javax.swing.JLabel();
labelJumlahKeluar = new javax.swing.JLabel();
jPanel13 = new javax.swing.JPanel();
jLabel13 = new javax.swing.JLabel();
labelSuksesTerkirim = new javax.swing.JLabel();
jPanel14 = new javax.swing.JPanel();
jLabel15 = new javax.swing.JLabel();
labelJumlahAntrianKeluar = new javax.swing.JLabel();
jPanel15 = new javax.swing.JPanel();
jLabel17 = new javax.swing.JLabel();
labelGagalTerkirim = new javax.swing.JLabel();
panelAtas = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
panelBawah = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
menuBerkas = new javax.swing.JMenu();
subMenuKoneksi = new javax.swing.JMenuItem();
subMenuPutus = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
subMenuKirimSms = new javax.swing.JMenuItem();
subMenuPengaturanTerminal = new javax.swing.JMenuItem();
jSeparator4 = new javax.swing.JSeparator();
subMenuKeluar = new javax.swing.JMenuItem();
menuDatabase = new javax.swing.JMenu();
subMenuSmsMasuk = new javax.swing.JMenuItem();
subMenuSmsTerkirim = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JSeparator();
subMenuBukuTelepon = new javax.swing.JMenuItem();
menuSMSRequest = new javax.swing.JMenu();
menuInputDataMahasiswa = new javax.swing.JMenuItem();
menuInputDataBiayaSemester = new javax.swing.JMenuItem();
menuSMSPolling = new javax.swing.JMenu();
menuInputPertanyaanPolling = new javax.swing.JMenuItem();
menuHasilPolling = new javax.swing.JMenuItem();
menuSystem = new javax.swing.JMenu();
subMenuKonfigurasi = new javax.swing.JMenuItem();
subMenuAktivitasSystem = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING
_ON_CLOSE);
setTitle("APLIKASI EXTRACT INFORMATION oleh
Rusdiantoro");
setBackground(new java.awt.Color(255, 255, 255));
setCursor(new
java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
panelTengah.setLayout(new java.awt.GridLayout(1, 0));
panelAwal = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
waktuLokal = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tabelSmsMasukHariIni = new javax.swing.JTable();
jPanel5 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tabelSmsTerkirimHariIni = new javax.swing.JTable();
jPanel3 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
labelJumlahMasuk = new javax.swing.JLabel();
jPanel9 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
labelSuksesProses = new javax.swing.JLabel();
jPanel10 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
labelAntriProses = new javax.swing.JLabel();
jPanel11 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
panelAwal.setLayout(new javax.swing.BoxLayout(panelAwal,
javax.swing.BoxLayout.Y_AXIS));
panelAwal.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 5, 1));
jPanel1.setBackground(new java.awt.Color(102, 255, 255));
waktuLokal.setFont(new java.awt.Font("Dialog", 1, 12));
waktuLokal.setText("jLabel19");
waktuLokal.setText(SmitDev.SmsServer.Jam.getWaktu());
waktu();
jPanel1.add(waktuLokal);
panelAwal.add(jPanel1);
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.X_AXIS));
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setLayout(new java.awt.GridLayout(1, 0));
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
138
SMS Masuk Hari Ini ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
jScrollPane1.setBorder(new
javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWE
RED));
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstan
ts.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setToolTipText("");
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.
VERTICAL_SCROLLBAR_ALWAYS);
tabelSmsMasukHariIni.setModel(new
javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabelSmsMasukHariIni.setToolTipText("");
tabelSmsMasukHariIni.setModel(tabSMSMasuk);
javax.swing.table.TableColumn colx =
this.tabelSmsMasukHariIni.getColumn("No. Telepon");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(90);
colx = this.tabelSmsMasukHariIni.getColumn("Tanggal");
colx.setWidth(0);
colx.setMinWidth(0);
colx.setMaxWidth(0);
colx = this.tabelSmsMasukHariIni.getColumn("Jam");
colx.setWidth(0);
colx.setMinWidth(0);
colx.setMaxWidth(0);
colx = this.tabelSmsMasukHariIni.getColumn("Nama Kontak");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(80);
colx = this.tabelSmsMasukHariIni.getColumn("Status");
colx.setWidth(40);
colx.setMinWidth(40);
colx.setMaxWidth(50);
this.tabelSmsMasukHariIni.sizeColumnsToFit(0);
jScrollPane1.setViewportView(tabelSmsMasukHariIni);
jPanel4.add(jScrollPane1);
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabelSmsTerkirimHariIni.setToolTipText("");
tabelSmsTerkirimHariIni.setModel(tabSMSTerkirim);
javax.swing.table.TableColumn col =
this.tabelSmsTerkirimHariIni.getColumn("No. Telepon");
col.setWidth(80);
col.setMinWidth(80);
col.setMaxWidth(90);
col = this.tabelSmsTerkirimHariIni.getColumn("Tanggal");
col.setWidth(0);
col.setMinWidth(0);
col.setMaxWidth(0);
col = this.tabelSmsTerkirimHariIni.getColumn("Jam");
col.setWidth(0);
col.setMinWidth(0);
col.setMaxWidth(0);
col = this.tabelSmsTerkirimHariIni.getColumn("Nama Kontak");
col.setWidth(80);
col.setMinWidth(80);
col.setMaxWidth(80);
col = this.tabelSmsTerkirimHariIni.getColumn("Status");
col.setWidth(40);
col.setMinWidth(40);
col.setMaxWidth(50);
this.tabelSmsTerkirimHariIni.sizeColumnsToFit(0);
jScrollPane2.setViewportView(tabelSmsTerkirimHariIni);
jPanel5.add(jScrollPane2);
jPanel2.add(jPanel5);
panelAwal.add(jPanel2);
jPanel3.setLayout(new javax.swing.BoxLayout(jPanel3,
javax.swing.BoxLayout.X_AXIS));
jPanel6.setLayout(new java.awt.GridLayout(2, 0));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jPanel6.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
Traffic SMS Terima Hari ini ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.add(jPanel4);
jPanel5.setLayout(new java.awt.GridLayout(1, 0));
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
SMS Keluar Hari Ini ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jScrollPane2.setBackground(new java.awt.Color(255, 255, 255));
jScrollPane2.setBorder(new
javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWE
RED));
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstan
ts.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane2.setToolTipText("");
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Jml SMS Masuk :");
jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jLabel3.setPreferredSize(new java.awt.Dimension(102, 16));
jPanel8.add(jLabel3);
labelJumlahMasuk.setText("0");
labelJumlahMasuk.setPreferredSize(new java.awt.Dimension(40,
16));
jPanel8.add(labelJumlahMasuk);
jPanel6.add(jPanel8);
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.
VERTICAL_SCROLLBAR_ALWAYS);
tabelSmsTerkirimHariIni.setModel(new
javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel7.setText("Proses Sukses :");
jLabel7.setPreferredSize(new java.awt.Dimension(103, 16));
jPanel9.add(jLabel7);
139
labelSuksesProses.setText("0");
labelSuksesProses.setPreferredSize(new java.awt.Dimension(40, 16));
jPanel9.add(labelSuksesProses);
jPanel6.add(jPanel9);
jPanel7.add(jPanel13);
jPanel14.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
jPanel10.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jLabel5.setBackground(new java.awt.Color(51, 102, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel5.setText("Jml Antrian :");
jLabel5.setPreferredSize(new java.awt.Dimension(102, 16));
jPanel10.add(jLabel5);
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel15.setText("Jml Antrian :");
jLabel15.setPreferredSize(new java.awt.Dimension(102, 16));
jPanel14.add(jLabel15);
labelJumlahAntrianKeluar.setText("0");
labelJumlahAntrianKeluar.setPreferredSize(new
java.awt.Dimension(40, 16));
jPanel14.add(labelJumlahAntrianKeluar);
labelAntriProses.setText("0");
labelAntriProses.setPreferredSize(new java.awt.Dimension(40, 16));
jPanel10.add(labelAntriProses);
jPanel6.add(jPanel10);
jPanel7.add(jPanel14);
jPanel15.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel15.setBackground(new java.awt.Color(255, 255, 255));
jPanel11.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel9.setText("Proses Gagal :");
jLabel9.setPreferredSize(new java.awt.Dimension(103, 16));
jPanel11.add(jLabel9);
jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel17.setText("Gagal Terkirim :");
jLabel17.setPreferredSize(new java.awt.Dimension(103, 16));
jPanel15.add(jLabel17);
labelGagalTerkirim.setText("0");
labelGagalTerkirim.setPreferredSize(new java.awt.Dimension(40,
16));
jLabel10.setText("0");
jLabel10.setPreferredSize(new java.awt.Dimension(40, 16));
jPanel11.add(jLabel10);
jPanel15.add(labelGagalTerkirim);
jPanel6.add(jPanel11);
jPanel3.add(jPanel7);
jPanel3.add(jPanel6);
panelAwal.add(jPanel3);
jPanel7.setLayout(new java.awt.GridLayout(2, 0));
panelTengah.add(panelAwal);
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jPanel7.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
Traffic SMS Keluar Hari Ini ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jPanel12.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText("Jml SMS Keluar :");
jLabel11.setPreferredSize(new java.awt.Dimension(102, 14));
jPanel12.add(jLabel11);
labelJumlahKeluar.setText("0");
labelJumlahKeluar.setPreferredSize(new java.awt.Dimension(40,
16));
jPanel12.add(labelJumlahKeluar);
jPanel7.add(jPanel12);
jPanel13.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel13.setBackground(new java.awt.Color(255, 255, 255));
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel13.setText("Suskses Terkirim :");
jLabel13.setPreferredSize(new java.awt.Dimension(103, 14));
jPanel13.add(jLabel13);
jPanel7.add(jPanel15);
getContentPane().add(panelTengah,
java.awt.BorderLayout.CENTER);
panelAtas.setBackground(new java.awt.Color(102, 255, 255));
panelAtas.setForeground(new java.awt.Color(102, 255, 0));
jLabel1.setFont(new java.awt.Font("DialogInput", 1, 24));
jLabel1.setForeground(new java.awt.Color(255, 51, 51));
jLabel1.setText("APLIKASI EI (EXTRACT INFORMATION)");
panelAtas.add(jLabel1);
getContentPane().add(panelAtas, java.awt.BorderLayout.NORTH);
panelBawah.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
panelBawah.setBorder(new
javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWE
RED));
jLabel2.setFont(new java.awt.Font("Dialog", 1, 12));
jLabel2.setText("Belum Terhubung");
panelBawah.add(jLabel2);
getContentPane().add(panelBawah, java.awt.BorderLayout.SOUTH);
menuBerkas.setText("Berkas");
subMenuKoneksi.setText("Koneksi Terminal");
subMenuKoneksi.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuKoneksiActionPerformed(evt);
}
});
menuBerkas.add(subMenuKoneksi);
labelSuksesTerkirim.setText("0");
labelSuksesTerkirim.setPreferredSize(new java.awt.Dimension(40,
16));
jPanel13.add(labelSuksesTerkirim);
subMenuPutus.setText("Putus Terminal");
subMenuPutus.addActionListener(new
java.awt.event.ActionListener() {
140
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuPutusActionPerformed(evt);
}
});
menuBerkas.add(subMenuPutus);
menuBerkas.add(jSeparator1);
subMenuKirimSms.setText("Kirim SMS");
subMenuKirimSms.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuKirimSmsActionPerformed(evt);
}
});
menuBerkas.add(subMenuKirimSms);
subMenuPengaturanTerminal.setText("Pengaturan Terminal");
subMenuPengaturanTerminal.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuPengaturanTerminalActionPerformed(evt);
}
});
menuBerkas.add(subMenuPengaturanTerminal);
menuBerkas.add(jSeparator4);
subMenuKeluar.setText("Keluar");
subMenuKeluar.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuKeluarActionPerformed(evt);
}
});
menuBerkas.add(subMenuKeluar);
jMenuBar1.add(menuBerkas);
menuDatabase.setText("Database");
subMenuSmsMasuk.setText("SMS Masuk");
subMenuSmsMasuk.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuSmsMasukActionPerformed(evt);
}
});
menuDatabase.add(subMenuSmsMasuk);
subMenuSmsTerkirim.setText("SMS Keluar");
subMenuSmsTerkirim.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuSmsTerkirimActionPerformed(evt);
}
});
menuDatabase.add(subMenuSmsTerkirim);
menuDatabase.add(jSeparator3);
subMenuBukuTelepon.setText("Buku Telepon");
subMenuBukuTelepon.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuBukuTeleponActionPerformed(evt);
}
});
menuDatabase.add(subMenuBukuTelepon);
jMenuBar1.add(menuDatabase);
menuSMSRequest.setText(" SMS Request");
menuInputDataMahasiswa.setText("Input Data Mahasiswa");
menuInputDataMahasiswa.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuInputDataMahasiswaActionPerformed(evt);
}
});
menuSMSRequest.add(menuInputDataMahasiswa);
menuInputDataBiayaSemester.setText("Input Data Biaya Semester");
menuInputDataBiayaSemester.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuInputDataBiayaSemesterActionPerformed(evt);
}
});
menuSMSRequest.add(menuInputDataBiayaSemester);
jMenuBar1.add(menuSMSRequest);
menuSMSPolling.setText("SMS Polling");
menuSMSPolling.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuSMSPollingActionPerformed(evt);
}
});
menuInputPertanyaanPolling.setText("Input Pertanyaan Polling");
menuInputPertanyaanPolling.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuInputPertanyaanPollingActionPerformed(evt);
}
});
menuSMSPolling.add(menuInputPertanyaanPolling);
menuHasilPolling.setText("Hasil Polling");
menuHasilPolling.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuHasilPollingActionPerformed(evt);
}
});
menuSMSPolling.add(menuHasilPolling);
jMenuBar1.add(menuSMSPolling);
menuSystem.setText("System");
subMenuKonfigurasi.setText("Konfigurasi Perangkat");
subMenuKonfigurasi.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuKonfigurasiActionPerformed(evt);
}
});
menuSystem.add(subMenuKonfigurasi);
subMenuAktivitasSystem.setText("Aktivitas System");
subMenuAktivitasSystem.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
subMenuAktivitasSystemActionPerformed(evt);
}
});
menuSystem.add(subMenuAktivitasSystem);
jMenuBar1.add(menuSystem);
setJMenuBar(jMenuBar1);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800,
600);
}
141
// </editor-fold>
tulis_proses("");
tulis_proses(
"--------------------------------------------------------------------");
tulis_proses("New Session");
tulis_proses(
"--------------------------------------------------------------------");
koneksiDatabase();
private void
menuSMSPollingActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void
menuHasilPollingActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaHasilPolling(koneksi, "").setVisible(true);
}
private void
menuInputPertanyaanPollingActionPerformed(java.awt.event.ActionEvent
evt) {
new jendelaInputPertanyaanPolling(koneksi).setVisible(true);
}
private void
menuInputDataBiayaSemesterActionPerformed(java.awt.event.ActionEve
nt evt) {
new jendelaInputBiayaSemester(koneksi, tahun).setVisible(true);
}
private void
menuInputDataMahasiswaActionPerformed(java.awt.event.ActionEvent
evt) {
new jendelaInputDataMahasiswa(koneksi, tahun).setVisible(true);
}
private void
subMenuKonfigurasiActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaKonfigurasiPerangkat(nilaiMerek, nilaiSeri, nilaiIMEI,
nilaiOperator).setVisible(true);
}
private void
subMenuSmsTerkirimActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaSmsKeluar(koneksi).setVisible(true);
}
private void
subMenuAktivitasSystemActionPerformed(java.awt.event.ActionEvent
evt) {
new jendelaAktivitasSystem().setVisible(true);
}
private void
subMenuSmsMasukActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaSmsMasuk(koneksi).setVisible(true);
}
private void
subMenuPengaturanTerminalActionPerformed(java.awt.event.ActionEven
t evt) {
this.dispose();
setting.setVisible(true);
}
private void
subMenuKirimSmsActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaKirimSms(koneksi, "", "").setVisible(true);
}
private void
subMenuBukuTeleponActionPerformed(java.awt.event.ActionEvent evt) {
new jendelaBukuTelepon(koneksi, "", "", "").setVisible(true);
}
private void
subMenuPutusActionPerformed(java.awt.event.ActionEvent evt) {
SmitDev.SmsServer.Server.tutupTerminal();
tulis_proses("Pemutusan Terminal");
tulis_proses("Serial Port Ditutup");
this.thKirim.stop();
this.thKirim.stop();
belumTerhubung();
}
private void
subMenuKoneksiActionPerformed(java.awt.event.ActionEvent evt) {
}
java.sql.Connection koneksi = null;
private void koneksiDatabase(){
boolean driver = false;
try {
// Penyambungan Driver
Class.forName(this.driverJDBC);
tulis_proses("Mencoba Loading Driver JDBC");
tulis_proses(this.driverJDBC);
driver = true;
// Apabila Kelas Driver Tidak Ditemukan
} catch (ClassNotFoundException not) {
SmitDev.SmsServer.Server.proses_Gagal("Sms Server Error",
"Tidak Menemukan Driver -- " + this.driverJDBC +
"\n" + not.getMessage());
tulis_proses("Tidak Menemukan Driver -- " + this.driverJDBC +
"\n"+
not.getMessage());
}
if (driver == true) {
tulis_proses("Loading Driver JDBC Sukses");
tulis_proses("Mencoba melakukan sambungan dengan Database
Server");
try {
tulis_proses(url);
koneksi = java.sql.DriverManager.getConnection(url, user,
password);
tulis_proses("Koneksi Database Server Sukses");
koneksiPerangkat();
// sedangTerhubung(); // Only Testing
} // Akhir try
// Apabila Gagal melakukan penyambungan Database
catch (java.sql.SQLException sqln) {
SmitDev.SmsServer.Server.proses_Gagal("Sms Server Error",
"Gagal Koneksi Database -- " + sqln.getMessage());
tulis_proses("Gagal Koneksi Database -- " + sqln.getMessage());
}
}
}
private void koneksiPerangkat(){
SmitDev.SmsServer.Server.koneksiTerminal(nilaiSerialPort,
nilaiBitPerSecond, nilaiDataBits, nilaiParity, nilaiStopBit,
nilaiFlowControl);
try {
SmitDev.SmsServer.Server.port.addEventListener(this);
} //Akhir try addEvenListener
catch (java.util.TooManyListenersException tmle) {
System.out.print(tmle.getMessage());
}
SmitDev.SmsServer.Server.kirimAT("ATE1" + "\15", 1000); //
Merek
SmitDev.SmsServer.Server.kirimAT("AT+CNMI=1,1,2,2,1" + "\15",
1250);
SmitDev.SmsServer.Server.kirimAT("AT+CGMI" + "\15", 1000); //
Merek
SmitDev.SmsServer.Server.kirimAT("AT+CGMM" + "\15", 1000); //
Seri
SmitDev.SmsServer.Server.kirimAT("AT+CGSN" + "\15", 1000); //
IMEI
SmitDev.SmsServer.Server.kirimAT("AT+COPS?" + "\15", 1000); //
Network
SmitDev.SmsServer.Server.kirimAT("ATH0" + "\15", 500);
}
private void belumTerhubung(){
menuDatabase.setEnabled(false);
subMenuKoneksi.setEnabled(true);
subMenuKirimSms.setEnabled(false);
subMenuPutus.setEnabled(false);
subMenuPengaturanTerminal.setEnabled(true);
subMenuKonfigurasi.setEnabled(false);
142
jLabel2.setText("Belum Terhubung");
jLabel2.setForeground(java.awt.Color.RED);
menuSMSRequest.setEnabled(false);
menuSMSPolling.setEnabled(false);
// Tambahkan "0" didepannya
nol_jam = "0";
}
// Jika nilai MENIT lebih kecil dari 10 (hanya 1 digit)
if (nilai_menit <= 9) {
// Tambahkan "0" didepannya
nol_menit = "0";
}
// Jika nilai DETIK lebih kecil dari 10 (hanya 1 digit)
if (nilai_detik <= 9) {
// Tambahkan "0" didepannya
nol_detik = "0";
}
// Keadaan Waktu Sekarang
}
ThreadPeriksaDataSmsKeluar thKirim= new
ThreadPeriksaDataSmsKeluar();
ThreadPeriksaDataSmsMasuk thTerima= new
ThreadPeriksaDataSmsMasuk();
private void sedangTerhubung(){
menuDatabase.setEnabled(true);
subMenuKoneksi.setEnabled(false);
subMenuKirimSms.setEnabled(true);
subMenuPutus.setEnabled(true);
subMenuPengaturanTerminal.setEnabled(false);
subMenuKonfigurasi.setEnabled(true);
jLabel2.setText("Sedang Terhubung");
jLabel2.setForeground(java.awt.Color.BLUE);
menuSMSRequest.setEnabled(true);
menuSMSPolling.setEnabled(true);
javax.swing.JOptionPane.showMessageDialog(null,
"Selamat !!!\nSMS Server Berhasil Terhubung");
tulis_proses("Terminal Berhasil Terhubung");
tulis_proses("");
if(!thTerima.isAlive()){
thKirim.start();
thTerima.start();
}
tampilTabelSmsKeluar();
tampilTabelSmsMasuk();
}
private void waktu(){
java.awt.event.ActionListener taskPerformer = new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
waktuLokal.setText(SmitDev.SmsServer.Jam.getWaktu());
}
};
// Timer
new javax.swing.Timer(1000, taskPerformer).start();
}
String tahun;
String bulan;
String tanggal;
String jam;
String menit;
String detik;
private void getWaktu(){
String tgl_nol = "";
String bln_nol = "";
// Mengambil Waktu sekarang
java.util.Calendar dt = java.util.Calendar.getInstance();
int tgl = dt.get(java.util.Calendar.DAY_OF_MONTH);
int bln = dt.get(java.util.Calendar.MONTH)+1;
int thn = dt.get(java.util.Calendar.YEAR);
// Apabila nilai tanggal lebih kecil dari 10
if (tgl < 10) {
tgl_nol = "0";
}
if (bln < 10) {
bln_nol = "0";
}
// Membuat String Tanggal dan Tahun
tanggal = tgl_nol + Integer.toString(tgl);
bulan = bln_nol + Integer.toString(bln);
tahun = Integer.toString(thn);
//********************************************
String nol_jam = "";
String nol_menit = "";
String nol_detik = "";
// Membuat Date
// Mengambil nilaj JAM, MENIT, dan DETIK Sekarang
int nilai_jam = dt.get(java.util.Calendar.HOUR_OF_DAY);
int nilai_menit = dt.get(java.util.Calendar.MINUTE);
int nilai_detik = dt.get(java.util.Calendar.SECOND);
// Jika nilai JAM lebih kecil dari 10 (hanya 1 digit)
if (nilai_jam <= 9) {
// Membuat String JAM, MENIT, DETIK
jam = nol_jam + Integer.toString(nilai_jam);
menit = nol_menit + Integer.toString(nilai_menit);
detik = nol_detik + Integer.toString(nilai_detik);
}
private void formWindowClosing(java.awt.event.WindowEvent evt) {
keluar();
}
private void
subMenuKeluarActionPerformed(java.awt.event.ActionEvent evt) {
keluar();
}
private void keluar(){
if (this.subMenuKoneksi.isEnabled()){
int n = javax.swing.JOptionPane.showConfirmDialog(null, "Anda
Ingin Keluar dari Aplikasi ini ?", "Keluar Aplikasi",
javax.swing.JOptionPane.YES_NO_OPTION);
if(n == 0){
this.thKirim.stop();
this.thKirim.stop();
System.exit(1);
}
} else {
javax.swing.JOptionPane.showMessageDialog(null,
"Opss.. Aplikasi Belum bisa ditutup\nSilahkan lakukan
pemutusan terminal terlebih dahulu\nsebelum menutup aplikasi ini");
}
}
private void tampilTabelSmsMasuk() {
int row = tabSMSMasuk.getRowCount();
for (int i = 0; i < row; i++) {
tabSMSMasuk.removeRow(0);
}
getWaktu();
String tanggal_hari_ini = tanggal+"-"+bulan+"-"+tahun;
String sql =
"SELECT COUNT(id_MASUK) as jml FROM SMS_MASUK
WHERE tanggal_MASUK = '"+tanggal_hari_ini+"'";
String sql2 = "SELECT * FROM SMS_MASUK WHERE
tanggal_MASUK = '"+tanggal_hari_ini+"' ORDER BY
TANGGAL_MASUK DESC , JAM_MASUK DESC";
String sql3 =
"SELECT COUNT(id_MASUK) as jml2 FROM SMS_MASUK
WHERE status_MASUK = 'WAIT' AND TANGGAL_MASUK =
'"+tanggal_hari_ini+"'";
String jml_all = "";
String jml_antri = "";
try {
// SQL
java.sql.Statement stat = koneksi.createStatement();
java.sql.Statement statu = koneksi.createStatement();
try {
java.sql.ResultSet rSet = stat.executeQuery(sql);
while (rSet.next()) {
jml_all = rSet.getString("jml");
this.labelJumlahMasuk.setText(jml_all);
} // Akhir while
java.sql.ResultSet rSt = stat.executeQuery(sql2);
while (rSt.next()) {
143
String no = rSt.getString("NO_TELEPON_MASUK");
String psn = rSt.getString("ISI_PESAN_MASUK");
String sts = rSt.getString("STATUS_MASUK");
String time = rSt.getString("JAM_MASUK");
String tg = rSt.getString("TANGGAL_MASUK");
String nama = "";
String sqlKontak = "SELECT * FROM data_buku_telepon
WHERE nomor_telepon = '"+no+"'";
java.sql.ResultSet rStN = statu.executeQuery(sqlKontak);
if (rStN.next()) {
nama = rStN.getString("NAMA_KONTAK");
}
Object[] data = {no, nama, tg, time, psn, sts};
String time = rSt.getString("JAM_KELUAR");
String tg = rSt.getString("TANGGAL_KELUAR");
String nama = "";
String sqlKontak = "SELECT * FROM data_buku_telepon
WHERE nomor_telepon = '"+no+"'";
java.sql.ResultSet rStN = statu.executeQuery(sqlKontak);
if (rStN.next()) {
nama = rStN.getString("NAMA_KONTAK");
}
Object[] data = {no, nama, tg, time, psn, sts};
tabSMSTerkirim.addRow(data);
int adi = this.tabelSmsTerkirimHariIni.getRowCount();
}
java.sql.ResultSet rSet2 = stat.executeQuery(sql3);
while (rSet2.next()) {
jml_antri = rSet2.getString("jml2");
this.labelJumlahAntrianKeluar.setText(jml_antri);
} // Akhir while
tabSMSMasuk.addRow(data);
int adi = this.tabelSmsMasukHariIni.getRowCount();
}
java.sql.ResultSet rSet2 = stat.executeQuery(sql3);
while (rSet2.next()) {
jml_antri = rSet2.getString("jml2");
this.labelAntriProses.setText(jml_antri);
java.sql.ResultSet rSet3 = stat.executeQuery(sql4);
while (rSet3.next()) {
String jml_suk = rSet3.getString("jml3");
this.labelSuksesTerkirim.setText(jml_suk);
} // Akhir while
this.labelSuksesProses.setText(String.valueOf(Integer.parseInt(jml_all) Integer.parseInt(jml_antri)));
} // Akhir while
} // Akhir try
catch (java.sql.SQLException e) {
tulis_proses(e.getMessage());
e.printStackTrace();
}
// Menutup Statement
} // Akhir try
catch (Exception e) {
System.out.println(e.getMessage() + " tampil_kirim");
}
}
private void tampilTabelSmsKeluar() {
int row = tabSMSTerkirim.getRowCount();
for (int i = 0; i < row; i++) {
tabSMSTerkirim.removeRow(0);
}
getWaktu();
String tanggal_hari_ini = tanggal+"-"+bulan+"-"+tahun;
String sql =
"SELECT COUNT(id_KELUAR) as jml FROM
SMS_KELUAR WHERE tanggal_KELUAR = '"+tanggal_hari_ini+"'";
String sql2 = "SELECT * FROM SMS_keluar WHERE
tanggal_KELUAR = '"+tanggal_hari_ini+"' ORDER BY
TANGGAL_KELUAR DESC , JAM_KELUAR DESC ";
String sql3 =
"SELECT COUNT(id_KELUAR) as jml2 FROM SMS_keluar
WHERE status_KELUAR = 'WAIT' AND TANGGAL_KELUAR =
'"+tanggal_hari_ini+"'";
String sql4 =
"SELECT COUNT(id_KELUAR) as jml3 FROM SMS_keluar
WHERE status_KELUAR = 'SEND' AND TANGGAL_KELUAR =
'"+tanggal_hari_ini+"'";
String sql5 =
"SELECT COUNT(id_KELUAR) as jml4 FROM SMS_keluar
WHERE status_KELUAR = 'NO' AND TANGGAL_KELUAR =
'"+tanggal_hari_ini+"'";
String jml_all = "";
String jml_antri = "";
try {
// SQL
java.sql.Statement stat = koneksi.createStatement();
java.sql.Statement statu = koneksi.createStatement();
try {
java.sql.ResultSet rSet = stat.executeQuery(sql);
while (rSet.next()) {
jml_all = rSet.getString("jml");
this.labelJumlahKeluar.setText(jml_all);
} // Akhir while
java.sql.ResultSet rSt = stat.executeQuery(sql2);
while (rSt.next()) {
String no = rSt.getString("NO_TELEPON_KELUAR");
String psn = rSt.getString("ISI_PESAN_KELUAR");
String sts = rSt.getString("STATUS_KELUAR");
java.sql.ResultSet rSet4 = stat.executeQuery(sql5);
while (rSet4.next()) {
String jml_gal = rSet4.getString("jml4");
this.labelGagalTerkirim.setText(jml_gal);
} // Akhir while
} // Akhir try
catch (java.sql.SQLException e) {
tulis_proses(e.getMessage());
e.printStackTrace();
}
// Menutup Statement
} // Akhir try
catch (Exception e) {
System.out.println(e.getMessage() + " tampil_kirim");
}
}
/**
* @param args the command line arguments
*/
static pengaturan_Terminal setting = new pengaturan_Terminal(true);
public static void main(String args[]) {
try {
javax.swing.UIManager.setLookAndFeel("com.stefankrause.xplookandfee
l.XPLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
setting.tampilanGUI();
setting.setVisible(true);
}
});
}
public void periksaDataSmsMasuk() {
getWaktu();
String tanggal_hari_ini = tanggal+"-"+bulan+"-"+tahun;
try {
if (koneksi.isClosed()) {
// System.out.println("koneksi terima null");
} else {
try {
String sqljml = "SELECT COUNT(id_masuk) as jmlnya
FROM SMS_MASUK WHERE tanggal_masuk = '"+tanggal_hari_ini+"'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sqljml);
java.sql.ResultSet rs = pStatement.executeQuery();
while (rs.next()) {
String jm2 = rs.getString("jmlnya");
if
(jm2.equalsIgnoreCase(this.labelJumlahMasuk.getText())) {
144
} else {
tampilTabelSmsMasuk();
}
}
rs.close();
} catch (java.sql.SQLException ex) {
tulis_proses(ex.getMessage());
}
try {
String sqljml = "SELECT COUNT(id_masuk) as jmlnya
FROM SMS_MASUK WHERE status_masuk = 'ok' AND tanggal_masuk
= '"+tanggal_hari_ini+"'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sqljml);
java.sql.ResultSet rs = pStatement.executeQuery();
while (rs.next()) {
String jm2 = rs.getString("jmlnya");
if (jm2.equalsIgnoreCase(this.labelSuksesProses.getText()))
{
} else {
tampilTabelSmsMasuk();
}
}
rs.close();
} catch (java.sql.SQLException ex) {
tulis_proses(ex.getMessage());
}
try {
// Statement SQL
String sql =
"Select * From SMS_MASUK Where
STATUS_MASUK = 'WAIT'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sql);
try {
java.sql.ResultSet rSet = pStatement.executeQuery();
while (rSet.next()) {
// Mengambil data dari tabel TERIMA
String dataId = rSet.getString("ID_MASUK"); // ID
Pesan
String dataNotlp =
rSet.getString("NO_TELEPON_MASUK"); // Nomer Telepon Pengirim
String dataPesan =
rSet.getString("ISI_PESAN_MASUK"); // Isi Pesan
new
prosesDatabaseSmsServer(koneksi).prosesTabelMasuk(dataId, dataNotlp,
dataPesan);
}
pStatement.close();
rSet.close();
} catch (Exception ie) {
}
} catch (Exception e) {
}
}
} catch (Exception ex1) {
}
}
String id_Sms_Kirim = "0";
public void periksaDataSmsKeluar() {
getWaktu();
String tanggal_hari_ini = tanggal+"-"+bulan+"-"+tahun;
try {
if (koneksi.isClosed()) {
// System.out.println("koneksi terima null");
} else {
try {
String sqljml = "SELECT COUNT(id_KELUAR) as jmlnya
FROM SMS_KELUAR WHERE tanggal_KELUAR =
'"+tanggal_hari_ini+"'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sqljml);
java.sql.ResultSet rs = pStatement.executeQuery();
while (rs.next()) {
String jm2 = rs.getString("jmlnya");
if
(jm2.equalsIgnoreCase(this.labelJumlahKeluar.getText())) {
} else {
tampilTabelSmsKeluar();
}
}
rs.close();
} catch (java.sql.SQLException ex) {
tulis_proses(ex.getMessage());
}
try {
String sqljml = "SELECT COUNT(id_KELUAR) as jmlnya
FROM SMS_KELUAR WHERE status_KELUAR = 'SEND' AND
tanggal_KELUAR = '"+tanggal_hari_ini+"'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sqljml);
java.sql.ResultSet rs = pStatement.executeQuery();
while (rs.next()) {
String jm2 = rs.getString("jmlnya");
if
(jm2.equalsIgnoreCase(this.labelSuksesTerkirim.getText())) {
} else {
tampilTabelSmsKeluar();
}
}
rs.close();
} catch (java.sql.SQLException ex) {
tulis_proses(ex.getMessage());
}
}
} catch (Exception ex1) {
}
}
public void periksaDataSiapKirim(){
try {
// Statement SQL
String sql =
"Select * From SMS_KELUAR Where STATUS_KELUAR =
'WAIT'";
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(sql);
try {
java.sql.ResultSet rSet = pStatement.executeQuery();
while (rSet.next()) {
// Mengambil data dari tabel TERIMA
String dataId = rSet.getString("ID_KELUAR"); // ID Pesan
String dataNotlp =
rSet.getString("NO_TELEPON_KELUAR"); // Nomer Telepon Pengirim
String dataPesan = rSet.getString("ISI_PESAN_KELUAR");
// Isi Pesan
id_Sms_Kirim = dataId;
prosesKirimSms(dataNotlp, dataPesan);
}
pStatement.close();
rSet.close();
} catch (Exception ie) {
}
} catch (Exception e) {
}
}
public void prosesKirimSms(String notlp, String pesan) {
new
prosesDatabaseSmsServer(koneksi).updateStatusData(id_Sms_Kirim,
"PROCESS");
String nop = notlp;
if (notlp.startsWith("0")) {
nop = notlp.replaceFirst("0", "62");
}
try {
String pesanPDUKirim =
SmitDev.SmsServer.formatPDU.PduKirimSms(nop.trim(), pesan.trim(),
false);
// Proses Mengirim Pesan
SmitDev.SmsServer.Server.kirimAT("AT+CMGS=" +
(pesanPDUKirim.length() / 2) + "\15", 500);
SmitDev.SmsServer.Server.kirimAT("00" + pesanPDUKirim,
2500); // Kirim Pesan Format PDU
SmitDev.SmsServer.Server.kirimAT("\032", 100); // Ctrl + Z
this.thKirim.suspend();
} catch (Exception e) {}
}
145
private javax.swing.JMenu menuBerkas;
private javax.swing.JMenu menuDatabase;
private javax.swing.JMenuItem menuHasilPolling;
private javax.swing.JMenuItem menuInputDataBiayaSemester;
private javax.swing.JMenuItem menuInputDataMahasiswa;
private javax.swing.JMenuItem menuInputPertanyaanPolling;
private javax.swing.JMenu menuSMSPolling;
private javax.swing.JMenu menuSMSRequest;
private javax.swing.JMenu menuSystem;
private javax.swing.JPanel panelAtas;
private javax.swing.JPanel panelAwal;
private javax.swing.JPanel panelBawah;
private javax.swing.JPanel panelTengah;
private javax.swing.JMenuItem subMenuAktivitasSystem;
private javax.swing.JMenuItem subMenuBukuTelepon;
private javax.swing.JMenuItem subMenuKeluar;
private javax.swing.JMenuItem subMenuKirimSms;
private javax.swing.JMenuItem subMenuKoneksi;
private javax.swing.JMenuItem subMenuKonfigurasi;
private javax.swing.JMenuItem subMenuPengaturanTerminal;
private javax.swing.JMenuItem subMenuPutus;
private javax.swing.JMenuItem subMenuSmsMasuk;
private javax.swing.JMenuItem subMenuSmsTerkirim;
private javax.swing.JTable tabelSmsMasukHariIni;
private javax.swing.JTable tabelSmsTerkirimHariIni;
private javax.swing.JLabel waktuLokal;
// End of variables declaration
// Akhir Methode prosesKirimSms
//
************************************************************
**********
// Class Untuk Selalu memanggil methode ambilDataMasuk()
class ThreadPeriksaDataSmsMasuk extends Thread {
public ThreadPeriksaDataSmsMasuk() {
this.setDaemon(true);
}
public void run() {
while (true) {
periksaDataSmsMasuk();
periksaDataSmsKeluar();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
}
//
************************************************************
**********
// Class Untuk Selalu memanggil methode ambilDataKeluar()
class ThreadPeriksaDataSmsKeluar extends Thread {
public ThreadPeriksaDataSmsKeluar() {
this.setDaemon(true);
}
}
public void run() {
while (true) {
periksaDataSiapKirim();
try {
Thread.sleep(1500);
} catch (InterruptedException e) {}
}
}
}
// Variables declaration - do not modify
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel9;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JLabel labelAntriProses;
private javax.swing.JLabel labelGagalTerkirim;
private javax.swing.JLabel labelJumlahAntrianKeluar;
private javax.swing.JLabel labelJumlahKeluar;
private javax.swing.JLabel labelJumlahMasuk;
private javax.swing.JLabel labelSuksesProses;
private javax.swing.JLabel labelSuksesTerkirim;
Coding Aktivitas System :
public class jendelaAktivitasSystem extends javax.swing.JFrame {
/** Creates new form jendelaAktivitasSystem */
public jendelaAktivitasSystem() {
initComponents();
bacaFile();
}
/** This method is called from within the constructor to
* initialize the form.
146
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
private void jButton1ActionPerformed(java.awt.event.ActionEvent
evt) {
jTextArea1.setText("");
bacaFile();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new jendelaAktivitasSystem().setVisible(true);
}
});
}
String data;
private void bacaFile(){
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Aktivitas System SMS Server");
jPanel1.setLayout(new java.awt.GridLayout(1, 0));
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstan
ts.HORIZONTAL_SCROLLBAR_ALWAYS);
java.util.Calendar dt = java.util.Calendar.getInstance();
int tgl = dt.get(java.util.Calendar.DAY_OF_MONTH);
int bln = dt.get(java.util.Calendar.MONTH) + 1;
int thn = dt.get(java.util.Calendar.YEAR);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.
VERTICAL_SCROLLBAR_ALWAYS);
jTextArea1.setEditable(false);
jTextArea1.setDragEnabled(true);
jScrollPane1.setViewportView(jTextArea1);
String tgl_nol = "";
String bln_nol = "";
if (tgl < 10) {
tgl_nol = "0";
}
if (bln < 10) {
bln_nol = "0";
}
jPanel1.add(jScrollPane1);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setBackground(new java.awt.Color(255, 51, 51));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel1.setForeground(new java.awt.Color(255, 51, 51));
jLabel1.setText("jLabel1");
jPanel2.add(jLabel1);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jPanel3.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton1.setText("Penyegaran File");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel3.add(jButton1);
jButton2.setText("Tutup Jendela");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel3.add(jButton2);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel5, java.awt.BorderLayout.WEST);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
String tanggal = tgl_nol + Integer.toString(tgl);
String bulan = bln_nol + Integer.toString(bln);
String ddmmyy = tanggal + bulan +
Integer.toString(thn);
java.io.File file = new java.io.File(ddmmyy + ".SmitDevSmsServer");
jTextArea1.setDocument(new javax.swing.text.PlainDocument());
this.jLabel1.setText("Aktivitas System " + tanggal + "-" + bulan + "-"
+ thn);
try{
java.io.BufferedReader read = new java.io.BufferedReader(new
java.io.FileReader(file));
StringBuffer textBuffer = new StringBuffer();
String tempText = "";
while(true){
tempText = read.readLine();
if(tempText != null){
textBuffer.append(tempText + "\n");
} else {
break;
}
}
String text = textBuffer.toString();
jTextArea1.setText(text);
} catch (java.io.IOException e){}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}
147
String no = rSet.getString("nomor_telepon");
String nama = rSet.getString("nama_kontak");
String alamat = rSet.getString("alamat");
String[] data = {no, nama, alamat};
this.tabBuku.addRow(data);
}
} catch(Exception e){}
}
Coding Jendela Buku Telepon :
public class jendelaBukuTelepon extends javax.swing.JFrame {
java.awt.CardLayout cardTengah = new java.awt.CardLayout();
java.awt.CardLayout cardTombol = new java.awt.CardLayout();
public jendelaBukuTelepon(java.sql.Connection koneksi) {
this.koneksi = koneksi;
initComponents();
awal();
}
java.sql.Connection koneksi = null;
String notlp ="";
String namaKontak ="";
String Alamat = "";
public jendelaBukuTelepon(java.sql.Connection koneksi, String notlp,
String namaKontak, String Alamat) {
this.notlp = notlp;
this.namaKontak = namaKontak;
this.Alamat = Alamat;
this.koneksi = koneksi;
initComponents();
awal();
tampilTabelBukuTelepon();
}
String temp = "";
public jendelaBukuTelepon(java.sql.Connection koneksi, String temp) {
this.koneksi = koneksi;
initComponents();
this.temp = temp;
tampilTabelBukuTelepon();
}
private void awal(){
this.dataNomorTelepon.setText(notlp);
this.dataNamaKontak.setText(namaKontak);
this.dataAlamat.setText(Alamat);
}
private void tampilTabelBukuTelepon(){
int row = tabBuku.getRowCount();
for (int i = 0; i < row; i++){
tabBuku.removeRow(0);
}
String sql = "SELECT * FROM data_buku_telepon";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
javax.swing.table.DefaultTableModel tabBuku = new
javax.swing.table.DefaultTableModel(
null, new String[] {"No. Telepon", "Nama Kontak", "Alamat"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;
}};
/** Creates new form jendelaBukuTelepon */
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this
method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel13 = new javax.swing.JPanel();
jPanel14 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jPanel16 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
dataNomorTelepon = new javax.swing.JTextField();
jPanel7 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dataNamaKontak = new javax.swing.JTextField();
jPanel8 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
dataAlamat = new javax.swing.JTextField();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jPanel12 = new javax.swing.JPanel();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jPanel9 = new javax.swing.JPanel();
jButton8 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Buku Telepon");
jPanel1.setLayout(new java.awt.CardLayout());
jPanel1.setLayout(cardTengah);
jPanel4.setLayout(new java.awt.BorderLayout());
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
148
jTable1.setModel(tabBuku);
javax.swing.table.TableColumn colx = this.jTable1.getColumn("No.
Telepon");
colx.setWidth(100);
colx.setMinWidth(100);
colx.setMaxWidth(100);
colx = this.jTable1.getColumn("Nama Kontak");
colx.setWidth(130);
colx.setMinWidth(130);
colx.setMaxWidth(130);
this.jTable1.sizeColumnsToFit(0);
jScrollPane1.setViewportView(jTable1);
jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel13.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel13, java.awt.BorderLayout.NORTH);
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel14, java.awt.BorderLayout.SOUTH);
jPanel15.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel15, java.awt.BorderLayout.EAST);
jPanel16.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel16, java.awt.BorderLayout.WEST);
jPanel1.add(jPanel4, "panelTabel");
jPanel5.setLayout(new java.awt.GridLayout(7, 0));
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.add(jPanel10);
jPanel6.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jPanel6.setPreferredSize(new java.awt.Dimension(121, 32));
dataAlamat.setPreferredSize(new java.awt.Dimension(200,
22));
jPanel8.add(dataAlamat);
jPanel5.add(jPanel8);
jPanel1.add(jPanel5, "panelData");
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Dialog", 1, 14));
jLabel1.setForeground(new java.awt.Color(255, 51, 51));
jLabel1.setText("Buku Telepon");
jPanel2.add(jLabel1);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jPanel3.setLayout(new java.awt.CardLayout());
jPanel3.setLayout(cardTombol);
jPanel11.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 10));
jButton2.setText("Tambah Data Baru");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel11.add(jButton2);
jButton7.setText("Kirim SMS");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jPanel11.add(jButton7);
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Nomor Telepon :");
jLabel2.setPreferredSize(new java.awt.Dimension(100, 16));
jPanel6.add(jLabel2);
dataNomorTelepon.setDocument(SmitDev.SmsServer.saring_karakter.set
AllOnlyDigit());
dataNomorTelepon.setPreferredSize(new java.awt.Dimension(200,
22));
jPanel6.add(dataNomorTelepon);
jPanel5.add(jPanel6);
jPanel7.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Nama Mahasiswa :");
jLabel3.setPreferredSize(new java.awt.Dimension(100, 16));
jPanel7.add(jLabel3);
dataNamaKontak.setPreferredSize(new java.awt.Dimension(200,
22));
jPanel7.add(dataNamaKontak);
jPanel5.add(jPanel7);
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Alamat :");
jLabel4.setPreferredSize(new java.awt.Dimension(100, 16));
jPanel8.add(jLabel4);
jButton3.setText("Hapus Data");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel11.add(jButton3);
jButton1.setText("Tutup Jendela");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel11.add(jButton1);
jPanel3.add(jPanel11, "tombolPanelTabel");
jPanel12.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 10));
jButton4.setText("Simpan Data");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel12.add(jButton4);
jButton5.setText("Batal");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
149
jPanel12.add(jButton5);
String no = tabBuku.getValueAt(xrow, 0).toString();
dispose();
jendelaKirimSms sms = new jendelaKirimSms(koneksi, no, temp);
sms.setVisible(true);
jButton6.setText("Tutup Jendela");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu nomor telepon yang dituju !!");
} else {
String no = tabBuku.getValueAt(xrow, 0).toString();
dispose();
jendelaKirimSms sms = new jendelaKirimSms(koneksi, no, temp);
sms.setVisible(true);
}
jPanel12.add(jButton6);
jPanel3.add(jPanel12, "tombolPanelData");
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton8.setText("Ambil Nomor Telepon");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
this.dataNomorTelepon.setText("");
this.dataNamaKontak.setText("");
this.dataAlamat.setText("");
cardTengah.show(jPanel1, "panelData");
cardTombol.show(jPanel3, "tombolPanelData");
jPanel9.add(jButton8);
jPanel3.add(jPanel9, "cardAmbil");
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
}
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
{
cardTengah.show(jPanel1, "panelTabel");
cardTombol.show(jPanel3, "tombolPanelTabel");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dulu data tabel yang ingin dihapus !!");
} else {
String no = tabBuku.getValueAt(xrow, 0).toString();
String nama = tabBuku.getValueAt(xrow, 1).toString();
String alamat = tabBuku.getValueAt(xrow, 2).toString();
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"No. Telepon : " +
no + "\nNama Kontak : " + nama + "\nAlamat : " + alamat +
"\n\nAnda Ingin menghapus data tersebut ?", "Konfirmasi
Hapus Data", javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus == 0){
String sql = "DELETE FROM data_buku_telepon WHERE
nomor_telepon = ?";
try{
java.sql.PreparedStatement stat =
koneksi.prepareStatement(sql);
try{
stat.setString(1, no);
stat.executeUpdate();
tampilTabelBukuTelepon();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
}
}
dispose();
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
String no = this.dataNomorTelepon.getText();
String nama = this.dataNamaKontak.getText();
String alamat = this.dataAlamat.getText();
String sql = "INSERT INTO data_buku_telepon(nomor_telepon,
nama_kontak, alamat) VALUES(?,?,?)";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, no);
stat.setString(2, nama);
stat.setString(3, alamat);
stat.executeUpdate();
tampilTabelBukuTelepon();
cardTengah.show(jPanel1, "panelTabel");
cardTombol.show(jPanel3, "tombolPanelTabel");
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Buku Telepon", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan Data
Buku Telepon", se.getMessage());
}
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu nomor telepon yang dituju !!");
} else {
// Variables declaration - do not modify
private javax.swing.JTextField dataAlamat;
private javax.swing.JTextField dataNamaKontak;
private javax.swing.JTextField dataNomorTelepon;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
150
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
public javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel2;
public javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
cariDataPertanyaan(kode);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
barPilihanA = new javax.swing.JProgressBar();
jPanel12 = new javax.swing.JPanel();
dataPilihanA = new javax.swing.JTextField();
jPanel17 = new javax.swing.JPanel();
jumlahPilihanA = new javax.swing.JLabel();
persenPilihanA = new javax.swing.JLabel();
jPanel9 = new javax.swing.JPanel();
jPanel13 = new javax.swing.JPanel();
dataPilihanB = new javax.swing.JTextField();
jPanel14 = new javax.swing.JPanel();
barPilihanB = new javax.swing.JProgressBar();
jPanel18 = new javax.swing.JPanel();
jumlahPilihanB = new javax.swing.JLabel();
persenPilihanB = new javax.swing.JLabel();
jPanel10 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
dataPilihanC = new javax.swing.JTextField();
jPanel16 = new javax.swing.JPanel();
barPilihanC = new javax.swing.JProgressBar();
jPanel19 = new javax.swing.JPanel();
jumlahPilihanC = new javax.swing.JLabel();
persenPilihanC = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
dataPertanyaan = new javax.swing.JTextArea();
jPanel5 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
dataKode = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jLabel10 = new javax.swing.JLabel();
jumlahSMS = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Hasil Polling SMS");
setResizable(false);
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel4.setLayout(new java.awt.BorderLayout());
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel6.setLayout(new java.awt.GridLayout(1, 0));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jPanel8.setLayout(new java.awt.BorderLayout());
Coding Hasil Polling :
public class jendelaHasilPolling extends javax.swing.JFrame {
java.sql.Connection koneksi;
/** Creates new form jendelaHasilPolling */
public jendelaHasilPolling(java.sql.Connection koneksi, String kode) {
this.koneksi = koneksi;
initComponents();
jPanel8.setBackground(new java.awt.Color(0, 255, 255));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
barPilihanA.setFont(new java.awt.Font("Tahoma", 1, 12));
barPilihanA.setForeground(new java.awt.Color(0, 0, 0));
barPilihanA.setOrientation(1);
barPilihanA.setOpaque(true);
barPilihanA.setPreferredSize(new java.awt.Dimension(18, 150));
barPilihanA.setString("Pilihan A");
barPilihanA.setStringPainted(true);
jPanel11.add(barPilihanA);
jPanel8.add(jPanel11, java.awt.BorderLayout.CENTER);
151
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
dataPilihanA.setEditable(false);
dataPilihanA.setHorizontalAlignment(javax.swing.JTextField.CENTER);
dataPilihanA.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel12.add(dataPilihanA);
barPilihanC.setDoubleBuffered(true);
barPilihanC.setOpaque(true);
barPilihanC.setPreferredSize(new java.awt.Dimension(18, 150));
barPilihanC.setString("Pilihan C");
barPilihanC.setStringPainted(true);
barPilihanC.setVerifyInputWhenFocusTarget(false);
jPanel16.add(barPilihanC);
jPanel8.add(jPanel12, java.awt.BorderLayout.SOUTH);
jPanel10.add(jPanel16, java.awt.BorderLayout.CENTER);
jPanel17.setBackground(new java.awt.Color(255, 255, 255));
jPanel19.setBackground(new java.awt.Color(255, 255, 255));
jumlahPilihanA.setHorizontalAlignment(javax.swing.SwingConstants.RIG
HT);
jumlahPilihanA.setText("0");
jumlahPilihanA.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel17.add(jumlahPilihanA);
persenPilihanA.setText("(0%)");
persenPilihanA.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel17.add(persenPilihanA);
jumlahPilihanC.setHorizontalAlignment(javax.swing.SwingConstants.RIG
HT);
jumlahPilihanC.setText("0");
jumlahPilihanC.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel19.add(jumlahPilihanC);
persenPilihanC.setText("(0%)");
persenPilihanC.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel19.add(persenPilihanC);
jPanel8.add(jPanel17, java.awt.BorderLayout.NORTH);
jPanel10.add(jPanel19, java.awt.BorderLayout.NORTH);
jPanel6.add(jPanel8);
jPanel6.add(jPanel10);
jPanel9.setLayout(new java.awt.BorderLayout());
jPanel4.add(jPanel6, java.awt.BorderLayout.CENTER);
jPanel9.setBackground(new java.awt.Color(255, 255, 0));
jPanel13.setBackground(new java.awt.Color(255, 255, 255));
dataPilihanB.setEditable(false);
dataPilihanB.setHorizontalAlignment(javax.swing.JTextField.CENTER);
dataPilihanB.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel13.add(dataPilihanB);
jPanel9.add(jPanel13, java.awt.BorderLayout.SOUTH);
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
barPilihanB.setFont(new java.awt.Font("Tahoma", 1, 12));
barPilihanB.setForeground(new java.awt.Color(0, 0, 0));
barPilihanB.setOrientation(1);
barPilihanB.setOpaque(true);
barPilihanB.setPreferredSize(new java.awt.Dimension(18, 150));
barPilihanB.setString("Pilihan B");
barPilihanB.setStringPainted(true);
jPanel14.add(barPilihanB);
jPanel7.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Isi Pertanyaan :");
jLabel2.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel7.add(jLabel2);
dataPertanyaan.setEditable(false);
dataPertanyaan.setLineWrap(true);
dataPertanyaan.setWrapStyleWord(true);
dataPertanyaan.setPreferredSize(new java.awt.Dimension(300, 50));
jScrollPane1.setViewportView(dataPertanyaan);
jPanel7.add(jScrollPane1);
jPanel4.add(jPanel7, java.awt.BorderLayout.NORTH);
jPanel9.add(jPanel14, java.awt.BorderLayout.CENTER);
jPanel1.add(jPanel4, java.awt.BorderLayout.CENTER);
jPanel18.setBackground(new java.awt.Color(255, 255, 255));
jumlahPilihanB.setHorizontalAlignment(javax.swing.SwingConstants.RIG
HT);
jumlahPilihanB.setText("0");
jumlahPilihanB.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel18.add(jumlahPilihanB);
persenPilihanB.setText("(0%)");
persenPilihanB.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel18.add(persenPilihanB);
jPanel9.add(jPanel18, java.awt.BorderLayout.NORTH);
jPanel5.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel1.setText("Kode Pertanyaan :");
jLabel1.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel5.add(jLabel1);
dataKode.setEditable(false);
dataKode.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel5.add(dataKode);
jPanel6.add(jPanel9);
jPanel10.setLayout(new java.awt.BorderLayout());
jPanel10.setBackground(new java.awt.Color(0, 255, 102));
jPanel15.setBackground(new java.awt.Color(255, 255, 255));
dataPilihanC.setEditable(false);
dataPilihanC.setHorizontalAlignment(javax.swing.JTextField.CENTER);
dataPilihanC.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel15.add(dataPilihanC);
jButton1.setText("Cari");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel5.add(jButton1);
jLabel10.setText("Jumlah SMS Masuk :");
jPanel5.add(jLabel10);
jPanel10.add(jPanel15, java.awt.BorderLayout.SOUTH);
jPanel16.setBackground(new java.awt.Color(255, 255, 255));
barPilihanC.setFont(new java.awt.Font("Tahoma", 1, 12));
barPilihanC.setForeground(new java.awt.Color(0, 0, 0));
barPilihanC.setOrientation(1);
jumlahSMS.setText("0");
jumlahSMS.setPreferredSize(new java.awt.Dimension(50, 14));
jPanel5.add(jumlahSMS);
jPanel1.add(jPanel5, java.awt.BorderLayout.NORTH);
152
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel3.setText("Hasil Polling SMS ");
jPanel2.add(jLabel3);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jButton2.setText("Tutup Jendela");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel3.add(jButton2);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-449)/2, (screenSize.height-407)/2, 449,
407);
}
// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
int valuePersen_B = 0;
int valuePersen_C = 0;
try{
String sqlAll = "SELECT COUNT(kode_pertanyaan) as jmlSMS
FROM data_hasil_polling WHERE kode_pertanyaan = '"+kode+"'";
java.sql.Statement statAll = koneksi.createStatement();
java.sql.ResultSet rSetAll = statAll.executeQuery(sqlAll);
if(rSetAll.next()){
hasilAll = rSetAll.getString("jmlSMS");
}
String sqlPilihA = "SELECT COUNT(pilihan) as jmlPilihanA
FROM data_hasil_polling WHERE kode_pertanyaan = '"+kode+"' AND
pilihan = 'A'";
java.sql.Statement statA = koneksi.createStatement();
java.sql.ResultSet rSetA = statA.executeQuery(sqlPilihA);
if(rSetA.next()){
hasil_A = rSetA.getString("jmlPilihanA");
}
String sqlPilihB = "SELECT COUNT(pilihan) as jmlPilihanB
FROM data_hasil_polling WHERE kode_pertanyaan = '"+kode+"' AND
pilihan = 'B'";
java.sql.Statement statB = koneksi.createStatement();
java.sql.ResultSet rSetB = statB.executeQuery(sqlPilihB);
if(rSetB.next()){
hasil_B = rSetB.getString("jmlPilihanB");
}
{
dispose();
jendelaInputPertanyaanPolling bk = new
jendelaInputPertanyaanPolling(koneksi);
bk.cardTengah.show(bk.jPanel13, "panelTabelPertanyaan");
bk.cardTombol.show(bk.jPanel3, "tombolPanelAmbil");
bk.setVisible(true);
String sqlPilihC = "SELECT COUNT(pilihan) as jmlPilihanC
FROM data_hasil_polling WHERE kode_pertanyaan = '"+kode+"' AND
pilihan = 'C'";
java.sql.Statement statC = koneksi.createStatement();
java.sql.ResultSet rSetC = statC.executeQuery(sqlPilihC);
if(rSetC.next()){
hasil_C = rSetC.getString("jmlPilihanC");
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
private void cariDataPertanyaan(String kode){
this.dataKode.setText(kode);
boolean adaData = false;
String sql = "SELECT * FROM data_pertanyaan_polling WHERE
kode_pertanyaan = '"+kode+"'";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String pertanyaan = rSet.getString("isi_pertanyaan");
String pilihan_a = rSet.getString("pilihan_a");
String pilihan_b = rSet.getString("pilihan_b");
String pilihan_c = rSet.getString("pilihan_c");
this.dataPertanyaan.setText(pertanyaan);
this.dataPilihanA.setText(pilihan_a);
this.dataPilihanB.setText(pilihan_b);
this.dataPilihanC.setText(pilihan_c);
adaData = true;
}
if(adaData){
cariHasilPolling(kode);
}
} catch(java.sql.SQLException e){}
}
private void cariHasilPolling(String kode){
String hasilAll = "0";
String hasil_A = "0";
String hasil_B = "0";
String hasil_C = "0";
double persen_A = 0;
double persen_B = 0;
double persen_C = 0;
int valuePersen_A = 0;
if(!hasil_A.equalsIgnoreCase("0")){
persen_A =
100/(Double.parseDouble(hasilAll)/Double.parseDouble(hasil_A));
java.util.StringTokenizer token = new
java.util.StringTokenizer(String.valueOf(persen_A), ".");
valuePersen_A = Integer.parseInt(token.nextToken());
}
if(!hasil_B.equalsIgnoreCase("0")){
persen_B =
100/(Double.parseDouble(hasilAll)/Double.parseDouble(hasil_B));
java.util.StringTokenizer token = new
java.util.StringTokenizer(String.valueOf(persen_B), ".");
valuePersen_B = Integer.parseInt(token.nextToken());
}
if(!hasil_C.equalsIgnoreCase("0")){
persen_C =
100/(Double.parseDouble(hasilAll)/Double.parseDouble(hasil_C));
java.util.StringTokenizer token = new
java.util.StringTokenizer(String.valueOf(persen_C), ".");
valuePersen_C = Integer.parseInt(token.nextToken());
}
this.persenPilihanA.setText("("+persen_A+"%)");
this.persenPilihanB.setText("("+persen_B+"%)");
this.persenPilihanC.setText("("+persen_C+"%)");
this.barPilihanA.setValue(valuePersen_A);
this.barPilihanB.setValue(valuePersen_B);
this.barPilihanC.setValue(valuePersen_C);
this.jumlahSMS.setText(hasilAll);
this.jumlahPilihanA.setText(hasil_A);
this.jumlahPilihanB.setText(hasil_B);
this.jumlahPilihanC.setText(hasil_C);
} catch(java.sql.SQLException e){
System.out.println(e.getMessage());
}
}
// Variables declaration - do not modify
private javax.swing.JProgressBar barPilihanA;
private javax.swing.JProgressBar barPilihanB;
private javax.swing.JProgressBar barPilihanC;
private javax.swing.JTextField dataKode;
private javax.swing.JTextArea dataPertanyaan;
private javax.swing.JTextField dataPilihanA;
153
private javax.swing.JTextField dataPilihanB;
private javax.swing.JTextField dataPilihanC;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel jumlahPilihanA;
private javax.swing.JLabel jumlahPilihanB;
private javax.swing.JLabel jumlahPilihanC;
private javax.swing.JLabel jumlahSMS;
private javax.swing.JLabel persenPilihanA;
private javax.swing.JLabel persenPilihanB;
private javax.swing.JLabel persenPilihanC;
// End of variables declaration
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
dataBulan = new javax.swing.JComboBox();
jLabel5 = new javax.swing.JLabel();
dataTahun = new javax.swing.JTextField();
jPanel9 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dataIdPelanggan = new javax.swing.JTextField();
jButton4 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel22 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
dataNamaPelanggan = new javax.swing.JTextField();
jPanel10 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
dataBiayaBeban = new javax.swing.JTextField();
jPanel16 = new javax.swing.JPanel();
jLabel10 = new javax.swing.JLabel();
dataBiayaPemakaian = new javax.swing.JTextField();
jPanel17 = new javax.swing.JPanel();
jLabel11 = new javax.swing.JLabel();
dataBiayaKeterlambatan = new javax.swing.JTextField();
jPanel18 = new javax.swing.JPanel();
jLabel12 = new javax.swing.JLabel();
dataBiayaLainLain = new javax.swing.JTextField();
jPanel20 = new javax.swing.JPanel();
jLabel14 = new javax.swing.JLabel();
dataPPJ = new javax.swing.JTextField();
jPanel19 = new javax.swing.JPanel();
jLabel13 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
dataJumlah = new javax.swing.JTextField();
jPanel23 = new javax.swing.JPanel();
jLabel16 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jPanel21 = new javax.swing.JPanel();
jLabel15 = new javax.swing.JLabel();
jLabel20 = new javax.swing.JLabel();
dataTotalPembayaran = new javax.swing.JTextField();
jPanel2 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Data Biaya Semester");
jPanel1.setLayout(new java.awt.GridLayout(17, 0));
Coding Input Biaya Semester
public class jendelaInputBiayaSemester extends javax.swing.JFrame {
/** Creates new form jendelaInputBiayaSemester */
java.sql.Connection koneksi;
public jendelaInputBiayaSemester(java.sql.Connection koneksi, String
tahun) {
initComponents();
this.koneksi = koneksi;
this.dataTahun.setText(tahun);
dataPelangganKosong();
dataPembayaranKosong();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel11);
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Bulan Pembayaran :");
jLabel4.setPreferredSize(new java.awt.Dimension(110, 14));
jPanel8.add(jLabel4);
dataBulan = SmitDev.SmsServer.Jam.daftarNamaBulan();
jPanel8.add(dataBulan);
jLabel5.setText("Tahun Pembayaran :");
154
jPanel8.add(jLabel5);
dataTahun.setPreferredSize(new java.awt.Dimension(50, 19));
jPanel8.add(dataTahun);
jPanel1.add(jPanel8);
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
dataBiayaBeban.setDocument(SmitDev.SmsServer.saring_karakter.setAll
OnlyDigit());
dataBiayaBeban.setText("0");
dataBiayaBeban.setPreferredSize(new java.awt.Dimension(100, 19));
dataBiayaBeban.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
dataBiayaBebanKeyReleased(evt);
}
});
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jPanel15.add(dataBiayaBeban);
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("NIM :");
jLabel3.setPreferredSize(new java.awt.Dimension(110, 14));
jPanel9.add(jLabel3);
dataIdPelanggan.setPreferredSize(new java.awt.Dimension(150, 19));
dataIdPelanggan.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
dataIdPelangganKeyReleased(evt);
}
});
jPanel1.add(jPanel15);
jPanel16.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel16.setBackground(new java.awt.Color(0, 204, 204));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel10.setText("DOP :");
jLabel10.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel16.add(jLabel10);
jPanel9.add(dataIdPelanggan);
jButton4.setText("Tampilkan");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel9.add(jButton4);
jButton3.setText("Cari ...");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel9.add(jButton3);
dataBiayaPemakaian.setDocument(SmitDev.SmsServer.saring_karakter.se
tAllOnlyDigit());
dataBiayaPemakaian.setText("0");
dataBiayaPemakaian.setPreferredSize(new java.awt.Dimension(100,
19));
dataBiayaPemakaian.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
dataBiayaPemakaianKeyReleased(evt);
}
});
jPanel16.add(dataBiayaPemakaian);
jPanel1.add(jPanel16);
jPanel17.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel1.add(jPanel9);
jPanel17.setBackground(new java.awt.Color(0, 204, 204));
jPanel22.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel22);
jPanel12.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText("DKM :");
jLabel11.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel17.add(jLabel11);
jPanel12.setBackground(new java.awt.Color(255, 255, 51));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Nama Mahasiswa :");
jLabel6.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel12.add(jLabel6);
dataNamaPelanggan.setEditable(false);
dataNamaPelanggan.setPreferredSize(new java.awt.Dimension(150,
19));
jPanel12.add(dataNamaPelanggan);
dataBiayaKeterlambatan.setDocument(SmitDev.SmsServer.saring_karakte
r.setAllOnlyDigit());
dataBiayaKeterlambatan.setText("0");
dataBiayaKeterlambatan.setPreferredSize(new
java.awt.Dimension(100, 19));
dataBiayaKeterlambatan.addKeyListener(new
java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
dataBiayaKeterlambatanKeyReleased(evt);
}
});
jPanel1.add(jPanel12);
jPanel17.add(dataBiayaKeterlambatan);
jPanel10.setLayout(new java.awt.GridLayout(3, 0));
jPanel1.add(jPanel17);
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel10);
jPanel15.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel15.setBackground(new java.awt.Color(0, 204, 204));
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel9.setText("SPP :");
jLabel9.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel15.add(jLabel9);
jPanel18.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel18.setBackground(new java.awt.Color(0, 204, 204));
jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel12.setText("DP + DM:");
jLabel12.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel18.add(jLabel12);
155
dataBiayaLainLain.setDocument(SmitDev.SmsServer.saring_karakter.set
AllOnlyDigit());
dataBiayaLainLain.setText("0");
dataBiayaLainLain.setPreferredSize(new java.awt.Dimension(100,
19));
dataBiayaLainLain.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyReleased(java.awt.event.KeyEvent evt) {
dataBiayaLainLainKeyReleased(evt);
}
});
jPanel18.add(dataBiayaLainLain);
jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel20.setText("Rp.");
jLabel20.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel21.add(jLabel20);
dataTotalPembayaran.setEditable(false);
dataTotalPembayaran.setFont(new java.awt.Font("Tahoma", 1, 11));
dataTotalPembayaran.setHorizontalAlignment(javax.swing.JTextField.RI
GHT);
dataTotalPembayaran.setText("0");
dataTotalPembayaran.setPreferredSize(new java.awt.Dimension(100,
19));
jPanel21.add(dataTotalPembayaran);
jPanel1.add(jPanel18);
jPanel1.add(jPanel21);
jPanel20.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel20.setBackground(new java.awt.Color(0, 204, 204));
jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel14.setText("Pajak :");
jLabel14.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel20.add(jLabel14);
dataPPJ.setBackground(new java.awt.Color(255, 255, 255));
dataPPJ.setText("0");
dataPPJ.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel20.add(dataPPJ);
jPanel1.add(jPanel20);
jPanel19.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.Y_AXIS));
jPanel6.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Input Data SMS Request");
jPanel6.add(jLabel1);
jPanel2.add(jPanel6);
jPanel7.setBackground(new java.awt.Color(102, 255, 255));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel2.setForeground(new java.awt.Color(255, 51, 51));
jLabel2.setText("(Data Biaya Semester)");
jPanel7.add(jLabel2);
jPanel2.add(jPanel7);
jPanel19.setBackground(new java.awt.Color(0, 204, 204));
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel13.setText("Jumlah :");
jLabel13.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel19.add(jLabel13);
jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel18.setText("Rp.");
jLabel18.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel19.add(jLabel18);
dataJumlah.setEditable(false);
dataJumlah.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
dataJumlah.setText("0");
dataJumlah.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel19.add(dataJumlah);
jPanel1.add(jPanel19);
jPanel23.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel3.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton1.setText("Simpan Data");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel3.add(jButton1);
jButton2.setText("Update Data");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel3.add(jButton2);
jLabel17.setText("_________________ +");
jPanel23.add(jLabel17);
jButton5.setText("Tutup Jendela");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jPanel1.add(jPanel23);
jPanel3.add(jButton5);
jPanel23.setBackground(new java.awt.Color(0, 204, 204));
jLabel16.setPreferredSize(new java.awt.Dimension(265, 14));
jPanel23.add(jLabel16);
jPanel21.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel21.setBackground(new java.awt.Color(0, 204, 204));
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel15.setText("Total Pembayaran :");
jLabel15.setPreferredSize(new java.awt.Dimension(155, 14));
jPanel21.add(jLabel15);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel5, java.awt.BorderLayout.WEST);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
156
setBounds((screenSize.width-550)/2, (screenSize.height-604)/2, 550,
604);
}
// </editor-fold>
{
private void
dataIdPelangganKeyReleased(java.awt.event.KeyEvent evt) {
int key = evt.getKeyCode();
if(key == evt.VK_ENTER){
this.tampilkanDataPajak();
}
}
dispose();
String tahun = this.dataTahun.getText();
jendelaInputDataMahasiswa bk = new
jendelaInputDataMahasiswa(koneksi, tahun);
{
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
bk.cardTombol.show(bk.jPanel3, "tombolPanelAmbil");
bk.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
String id = this.dataIdPelanggan.getText();
String bln = this.dataBulan.getSelectedItem().toString();
String thn = this.dataTahun.getText();
String bulan_pembayaran = bln + thn;
String kode = id + bulan_pembayaran;
String beban = this.dataBiayaBeban.getText();
if(beban.length() == 0){
beban = "0";
}
String pakai = this.dataBiayaPemakaian.getText();
if(pakai.length() == 0){
pakai = "0";
}
String terlambat = this.dataBiayaKeterlambatan.getText();
if(terlambat.length() == 0){
terlambat = "0";
}
String lain = this.dataBiayaLainLain.getText();
if(lain.length() == 0){
lain = "0";
}
String jumlah = this.dataJumlah.getText();
String ppj = this.dataPPJ.getText();
String total = this.dataTotalPembayaran.getText();
if(total.equalsIgnoreCase("0")){
SmitDev.SmsServer.Server.proses_Gagal("Proses Update Data
Gagal !!", "Biaya Semester Belum dimasukan");
} else{
String sql = "UPDATE biaya_semester SET nim = ?,
bulan_pembayaran = ?, spp = ?, dop = ?, dkm = ?, dp = ? , jumlah = ?,
pajak = ?, total_pembayaran = ? WHERE kode = ?";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, id);
stat.setString(2, bulan_pembayaran);
stat.setString(3, beban);
stat.setString(4, pakai);
stat.setString(5, terlambat);
stat.setString(6, lain);
stat.setString(7, jumlah);
stat.setString(8, ppj);
stat.setString(9, total);
stat.setString(10, kode);
stat.executeUpdate();
javax.swing.JOptionPane.showMessageDialog(null,
"Selamat !!!\nData Biaya Semester Berhasil DiUpdate");
this.dataIdPelanggan.setText("");
dataPelangganKosong();
dataPembayaranKosong();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah
Data Biaya Semester", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah Data
Biaya semester", se.getMessage());
}
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
String id = this.dataIdPelanggan.getText();
String bln = this.dataBulan.getSelectedItem().toString();
String thn = this.dataTahun.getText();
String bulan_pembayaran = bln + thn;
String kode = id + bulan_pembayaran;
String beban = this.dataBiayaBeban.getText();
if(beban.length() == 0){
beban = "0";
}
String pakai = this.dataBiayaPemakaian.getText();
if(pakai.length() == 0){
pakai = "0";
}
String terlambat = this.dataBiayaKeterlambatan.getText();
if(terlambat.length() == 0){
terlambat = "0";
}
String lain = this.dataBiayaLainLain.getText();
if(lain.length() == 0){
lain = "0";
}
String jumlah = this.dataJumlah.getText();
String ppj = this.dataPPJ.getText();
String total = this.dataTotalPembayaran.getText();
if(total.equalsIgnoreCase("0")){
SmitDev.SmsServer.Server.proses_Gagal("Proses Simpan Data
Gagal !!", "Biaya Semester Belum dimasukan");
} else{
String sql = "INSERT INTO biaya_semester(kode, nim,
bulan_pembayaran, spp, dop, dkm, dp, jumlah, pajak, total_pembayaran)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, kode);
stat.setString(2, id);
stat.setString(3, bulan_pembayaran);
stat.setString(4, beban);
stat.setString(5, pakai);
stat.setString(6, terlambat);
stat.setString(7, lain);
stat.setString(8, jumlah);
stat.setString(9, ppj);
stat.setString(10, total);
stat.executeUpdate();
javax.swing.JOptionPane.showMessageDialog(null,
"Selamat !!!\nData Biaya Semester Berhasil Disimpan");
this.dataIdPelanggan.setText("");
dataPelangganKosong();
dataPembayaranKosong();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Biaya Semester", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Biaya Semester", se.getMessage());
}
}
}
private void dataBiayaLainLainKeyReleased(java.awt.event.KeyEvent
evt) {
prosesJumlah();
}
157
private void
dataBiayaKeterlambatanKeyReleased(java.awt.event.KeyEvent evt) {
prosesJumlah();
}
private void dataBiayaPemakaianKeyReleased(java.awt.event.KeyEvent
evt) {
prosesJumlah();
}
private void dataBiayaBebanKeyReleased(java.awt.event.KeyEvent evt)
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menampilkan Data", "Data NIM atau Tahun Pembayaran masih Kosong
!!");
} else{
String sql = "SELECT * FROM data_mahasiswa WHERE nim =
'"+id+"'";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String nama = rSet.getString("nama_mahasiswa");
{
prosesJumlah();
}
private void prosesJumlah(){
String beban = this.dataBiayaBeban.getText();
if(beban.length() == 0){
beban = "0";
}
int biayaBeban = Integer.parseInt(beban);
String pakai = this.dataBiayaPemakaian.getText();
if(pakai.length() == 0){
pakai = "0";
}
int biayaPakai= Integer.parseInt(pakai);
String terlambat = this.dataBiayaKeterlambatan.getText();
if(terlambat.length() == 0){
terlambat = "0";
}
int biayaTerlambat= Integer.parseInt(terlambat);
String lain = this.dataBiayaLainLain.getText();
if(lain.length() == 0){
lain = "0";
}
int biayaLain= Integer.parseInt(lain);
this.dataNamaPelanggan.setText(nama);
adaDataPelanggan = true;
}
if(!adaDataPelanggan){
dataPelangganKosong();
dataPembayaranKosong();
} else{
String sql2 = "SELECT * FROM biaya_semester WHERE
kode = '"+kode+"'";
try{
java.sql.Statement stat2 = koneksi.createStatement();
java.sql.ResultSet rSet2 = stat2.executeQuery(sql2);
while(rSet2.next()){
String beban = rSet2.getString("spp");
String pakai = rSet2.getString("dop");
String terlambat = rSet2.getString("dkm");
String lain = rSet2.getString("dp");
String jml = rSet2.getString("jumlah");
String ppj = rSet2.getString("pajak");
String total_bayar =
rSet2.getString("total_pembayaran");
this.dataBiayaBeban.setText(beban);
this.dataBiayaKeterlambatan.setText(terlambat);
this.dataBiayaLainLain.setText(lain);
this.dataBiayaPemakaian.setText(pakai);
this.dataJumlah.setText(jml);
this.dataPPJ.setText(ppj);
this.dataTotalPembayaran.setText(total_bayar);
int jumlah = biayaBeban + biayaPakai + biayaTerlambat + biayaLain;
String hasilJumlah =
java.text.NumberFormat.getNumberInstance(java.util.Locale.ENGLISH).f
ormat(
jumlah);
java.util.StringTokenizer token = new
java.util.StringTokenizer(hasilJumlah, ".");
hasilJumlah = token.nextToken();
hasilJumlah = hasilJumlah.replace(',', '.');
this.dataJumlah.setText(String.valueOf(hasilJumlah));
this.jButton2.setEnabled(true);
this.jButton1.setEnabled(false);
adaDataPembayaran = true;
}
if(!adaDataPembayaran){
dataPembayaranKosong();
this.jButton1.setEnabled(true);
this.jButton2.setEnabled(false);
}
} catch(java.sql.SQLException e){
double ppj = jumlah * 0.05;
String hasilPPJ =
java.text.NumberFormat.getNumberInstance(java.util.Locale.ENGLISH).f
ormat(
ppj);
token = new java.util.StringTokenizer(hasilPPJ, ".");
hasilPPJ = token.nextToken();
hasilPPJ = hasilPPJ.replace(',', '.');
this.dataPPJ.setText(hasilPPJ);
double totalBayar = jumlah;
String hasilTotalBayar =
java.text.NumberFormat.getNumberInstance(java.util.Locale.ENGLISH).f
ormat(
totalBayar);
token = new java.util.StringTokenizer(hasilTotalBayar, ".");
hasilTotalBayar = token.nextToken();
hasilTotalBayar = hasilTotalBayar.replace(',', '.');
this.dataTotalPembayaran.setText(hasilTotalBayar);
}
public void tampilkanDataPajak(){
String id = this.dataIdPelanggan.getText();
String bln = this.dataBulan.getSelectedItem().toString();
String thn = this.dataTahun.getText();
String kode = id + bln + thn;
boolean adaDataPelanggan = false;
boolean adaDataPembayaran = false;
if(id.length() == 0 || thn.length() == 0){
}
}
} catch(java.sql.SQLException e){
}
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
tampilkanDataPajak();
}
private void dataPelangganKosong(){
this.dataNamaPelanggan.setText("");
this.jButton1.setEnabled(false);
this.jButton2.setEnabled(false);
}
private void dataPembayaranKosong(){
this.dataBiayaBeban.setText("0");
this.dataBiayaKeterlambatan.setText("0");
this.dataBiayaLainLain.setText("0");
this.dataBiayaPemakaian.setText("0");
158
this.dataJumlah.setText("0");
this.dataPPJ.setText("0");
this.dataTotalPembayaran.setText("0");
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
// Variables declaration - do not modify
private javax.swing.JTextField dataBiayaBeban;
private javax.swing.JTextField dataBiayaKeterlambatan;
private javax.swing.JTextField dataBiayaLainLain;
private javax.swing.JTextField dataBiayaPemakaian;
private javax.swing.JComboBox dataBulan;
public javax.swing.JTextField dataIdPelanggan;
private javax.swing.JTextField dataJumlah;
private javax.swing.JTextField dataNamaPelanggan;
private javax.swing.JTextField dataPPJ;
private javax.swing.JTextField dataTahun;
private javax.swing.JTextField dataTotalPembayaran;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel20;
private javax.swing.JPanel jPanel21;
private javax.swing.JPanel jPanel22;
private javax.swing.JPanel jPanel23;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
// End of variables declaration
}
Coding Input Data Mahasiswa:
public class jendelaInputDataMahasiswa extends javax.swing.JFrame {
java.awt.CardLayout cardTengah = new java.awt.CardLayout();
java.awt.CardLayout cardTombol = new java.awt.CardLayout();
java.sql.Connection koneksi;
/**
* Creates new form jendelaInputDataMahasiswa
*/
String tahun;
public jendelaInputDataMahasiswa(java.sql.Connection koneksi, String
tahun) {
this.koneksi = koneksi;
this.tahun = tahun;
initComponents();
tampilTabelDataMahasiswa();
}
javax.swing.table.DefaultTableModel tabPelanggan = new
javax.swing.table.DefaultTableModel(
null, new String[] {"NIM", "Nama Mahasiswa", "Dosen PA",
"Dosen PKL"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;
}};
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this
method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel11 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jPanel16 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel19 = new javax.swing.JPanel();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
159
jPanel20 = new javax.swing.JPanel();
jButton9 = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel13 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel17 = new javax.swing.JPanel();
jPanel18 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
dataIdPelanggan = new javax.swing.JTextField();
jPanel7 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dataNamaPelanggan = new javax.swing.JTextField();
jPanel8 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
dataAlamatPelanggan = new javax.swing.JTextField();
jPanel9 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
dataDaya = new javax.swing.JTextField();
jPanel14 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Input Data SMS Request (Data Mahasiswa)");
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.Y_AXIS));
jPanel2.setBackground(new java.awt.Color(51, 51, 51));
jPanel10.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Input Data SMS Request");
jPanel10.add(jLabel1);
jPanel2.add(jPanel10);
jPanel11.setBackground(new java.awt.Color(102, 255, 255));
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel8.setForeground(new java.awt.Color(255, 51, 51));
jLabel8.setText("(Data Mahasiswa Prodi TI)");
jPanel11.add(jLabel8);
jPanel16.add(jButton2);
jButton3.setText("Tutup Jendela");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel16.add(jButton3);
jPanel3.add(jPanel16, "tombolPanelTabel");
jPanel19.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton5.setText("Simpan Data");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jPanel19.add(jButton5);
jButton6.setText("Update Data");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jPanel19.add(jButton6);
jButton7.setText("Batal");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jPanel19.add(jButton7);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jButton8.setText("Tutup Jendela");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jPanel3.setLayout(new java.awt.CardLayout());
jPanel19.add(jButton8);
jPanel2.add(jPanel11);
jPanel3.setLayout(cardTombol);
jPanel16.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton1.setText("Tambah Baru");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel3.add(jPanel19, "tombolPanelData");
jPanel20.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton9.setText("Ambil NIM Mahasiswa");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jPanel16.add(jButton1);
jPanel20.add(jButton9);
jButton4.setText("Biaya Semester");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel3.add(jPanel20, "tombolPanelAmbil");
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel16.add(jButton4);
jButton2.setText("Rubah Data");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel5, java.awt.BorderLayout.WEST);
jPanel13.setLayout(new java.awt.CardLayout());
jPanel13.setLayout(cardTengah);
jPanel15.setLayout(new java.awt.BorderLayout());
160
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.setModel(tabPelanggan);
jScrollPane1.setViewportView(jTable1);
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel5.setText("Dosen PKL :");
jLabel5.setPreferredSize(new java.awt.Dimension(150, 14));
jPanel9.add(jLabel5);
dataDaya.setPreferredSize(new java.awt.Dimension(200, 19));
jPanel9.add(dataDaya);
jPanel1.add(jPanel9);
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel14);
jPanel13.add(jPanel1, "panelDataPelanggan");
jPanel15.add(jScrollPane1, java.awt.BorderLayout.CENTER);
getContentPane().add(jPanel13, java.awt.BorderLayout.CENTER);
jPanel17.setBackground(new java.awt.Color(255, 255, 255));
jPanel15.add(jPanel17, java.awt.BorderLayout.NORTH);
jPanel18.setBackground(new java.awt.Color(255, 255, 255));
jPanel15.add(jPanel18, java.awt.BorderLayout.SOUTH);
jPanel13.add(jPanel15, "panelTabelPelanggan");
jPanel1.setLayout(new java.awt.GridLayout(7, 0));
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel12);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
private void
dataAlamatPelangganActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt)
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("NIM :");
jLabel2.setPreferredSize(new java.awt.Dimension(150, 14));
jPanel6.add(jLabel2);
dataIdPelanggan.setText("jTextField1");
dataIdPelanggan.setPreferredSize(new java.awt.Dimension(200, 19));
jPanel6.add(dataIdPelanggan);
jPanel1.add(jPanel6);
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu nim Mahasiswa yang ingin ditampilkan
!!");
} else {
String no = tabPelanggan.getValueAt(xrow, 0).toString();
dispose();
jendelaInputBiayaSemester sms = new
jendelaInputBiayaSemester(koneksi, tahun);
sms.dataIdPelanggan.setText(no);
sms.tampilkanDataPajak();
sms.setVisible(true);
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Nama Mahasiswa :");
jLabel3.setPreferredSize(new java.awt.Dimension(150, 14));
jPanel7.add(jLabel3);
}
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt)
{
dataNamaPelanggan.setText("jTextField2");
dataNamaPelanggan.setPreferredSize(new java.awt.Dimension(200,
19));
jPanel7.add(dataNamaPelanggan);
jPanel1.add(jPanel7);
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Dosen PA :");
jLabel4.setPreferredSize(new java.awt.Dimension(150, 14));
jPanel8.add(jLabel4);
dataAlamatPelanggan.setText("jTextField3");
dataAlamatPelanggan.setPreferredSize(new java.awt.Dimension(200,
19));
dataAlamatPelanggan.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dataAlamatPelangganActionPerformed(evt);
}
});
jPanel8.add(dataAlamatPelanggan);
jPanel1.add(jPanel8);
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
String id = dataIdPelanggan.getText();
String nama = dataNamaPelanggan.getText();
String dosenpa = dataAlamatPelanggan.getText();
String dosenpkl = dataDaya.getText();
if(nama.length()==0 || dosenpa.length()==0 || dosenpkl.length()==0){
SmitDev.SmsServer.Server.proses_Gagal("Proses Rubah Data
Gagal !!", "Terdapat Data yang Belum Dimasukkan");
} else{
String sql = "UPDATE data_mahasiswa SET nama_mahasiswa = ?,
dosen_pa = ?, dosen_pkl = ? WHERE nim = ?";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, nama);
stat.setString(2, dosenpa);
stat.setString(3, dosenpkl);
stat.setString(4, id);
stat.executeUpdate();
tampilTabelDataMahasiswa();
cardTengah.show(jPanel13, "panelTabelPelanggan");
cardTombol.show(jPanel3, "tombolPanelTabel");
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah
Data Mahasiswa", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah Data
Mahasiswa", se.getMessage());
}
161
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu nim Mahasiswa yang ingin ditampilkan
!!");
} else {
String no = tabPelanggan.getValueAt(xrow, 0).toString();
dispose();
jendelaInputBiayaSemester sms = new
jendelaInputBiayaSemester(koneksi, tahun);
sms.dataIdPelanggan.setText(no);
sms.tampilkanDataPajak();
sms.setVisible(true);
}
}
private void tampilTabelDataMahasiswa(){
int row = tabPelanggan.getRowCount();
for (int i = 0; i < row; i++){
tabPelanggan.removeRow(0);
}
String sql = "SELECT * FROM data_mahasiswa";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String nim = rSet.getString("nim");
String nama = rSet.getString("nama_mahasiswa");
String dosenpa = rSet.getString("dosen_pa");
String dosenpkl = rSet.getString("dosen_pkl");
String[] data = {nim, nama, dosenpa, dosenpkl};
this.tabPelanggan.addRow(data);
}
} catch(Exception e){}
}
SmitDev.SmsServer.Server.proses_Gagal("Proses Simpan
Data Gagal !!", "Terdapat Data yang Belum Dimasukkan");
} else{
String sql = "INSERT INTO data_mahasiswa(nim,
nama_mahasiswa, dosen_pa, dosen_pkl) VALUES(?,?,?,?)";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, nim);
stat.setString(2, nama);
stat.setString(3, dosenpa);
stat.setString(4, dosenpkl);
stat.executeUpdate();
tampilTabelDataMahasiswa();
cardTengah.show(jPanel13, "panelTabelPelanggan");
cardTombol.show(jPanel3, "tombolPanelTabel");
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Pelanggan", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Pelanggan", se.getMessage());
}
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
this.dataIdPelanggan.setText("");
this.dataNamaPelanggan.setText("");
this.dataAlamatPelanggan.setText("");
this.dataDaya.setText("");
this.dataIdPelanggan.setEnabled(true);
this.jButton6.setEnabled(false);
this.jButton5.setEnabled(true);
cardTengah.show(jPanel13, "panelDataPelanggan");
cardTombol.show(jPanel3, "tombolPanelData");
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
}
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Pelanggan yang ingin dirubah datanya
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
!!");
} else {
String nim = tabPelanggan.getValueAt(xrow, 0).toString();
String nama = tabPelanggan.getValueAt(xrow, 1).toString();
String dosenpa = tabPelanggan.getValueAt(xrow, 2).toString();
String dosenpkl = tabPelanggan.getValueAt(xrow, 3).toString();
this.dataIdPelanggan.setText(nim);
this.dataNamaPelanggan.setText(nama);
this.dataAlamatPelanggan.setText(dosenpa);
this.dataDaya.setText(dosenpkl);
this.dataIdPelanggan.setEnabled(false);
this.jButton5.setEnabled(false);
this.jButton6.setEnabled(true);
cardTengah.show(jPanel13, "panelDataPelanggan");
cardTombol.show(jPanel3, "tombolPanelData");
}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
{
cardTengah.show(jPanel13, "panelTabelPelanggan");
cardTombol.show(jPanel3, "tombolPanelTabel");
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
{
String nim = dataIdPelanggan.getText();
String nama = dataNamaPelanggan.getText();
String dosenpa = dataAlamatPelanggan.getText();
String dosenpkl = dataDaya.getText();
if(nim.length()==0 || nama.length()==0 || dosenpa.length()==0 ||
dosenpkl.length()==0){
// Variables declaration - do not modify
private javax.swing.JTextField dataAlamatPelanggan;
private javax.swing.JTextField dataDaya;
private javax.swing.JTextField dataIdPelanggan;
private javax.swing.JTextField dataNamaPelanggan;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
public javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
public javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
162
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel20;
public javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
jButton4 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel19 = new javax.swing.JPanel();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jPanel20 = new javax.swing.JPanel();
jButton9 = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel13 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel17 = new javax.swing.JPanel();
jPanel18 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
dataKodePertanyaan = new javax.swing.JTextField();
jPanel7 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dataIsiPertanyaanPolling = new javax.swing.JTextField();
jPanel8 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
dataPilihan_A = new javax.swing.JTextField();
jPanel9 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
dataPilihan_B = new javax.swing.JTextField();
jPanel14 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
dataPilihan_C = new javax.swing.JTextField();
jPanel11 = new javax.swing.JPanel();
cekHapusHasilPolling = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Input Pertanyaan Polling");
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,
javax.swing.BoxLayout.Y_AXIS));
Coding Jendela Input Pertanyaan :
public class jendelaInputPertanyaanPolling extends javax.swing.JFrame {
java.awt.CardLayout cardTengah = new java.awt.CardLayout();
java.awt.CardLayout cardTombol = new java.awt.CardLayout();
java.sql.Connection koneksi;
/**
* Creates new form jendelaInputPertanyaanPolling
*/
public jendelaInputPertanyaanPolling(java.sql.Connection koneksi) {
this.koneksi = koneksi;
initComponents();
tampilTabelDataPertanyaan();
}
javax.swing.table.DefaultTableModel tabPertanyaan = new
javax.swing.table.DefaultTableModel(
null, new String[] {"Kode Pertanyaan", "Pertanyaan Polling",
"Pilihan A", "Pilihan B", "Pilihan C"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;
}};
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this
jPanel2.setBackground(new java.awt.Color(51, 51, 51));
jPanel10.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Input Data Pertanyaan Polling");
jPanel10.add(jLabel1);
jPanel2.add(jPanel10);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jPanel3.setLayout(new java.awt.CardLayout());
jPanel3.setLayout(cardTombol);
jPanel16.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton1.setText("Tambah Baru");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel16.add(jButton1);
method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jPanel16 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
jButton2.setText("Rubah Data");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel16.add(jButton2);
jButton10.setText("Hapus Data");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
163
jButton10ActionPerformed(evt);
}
});
getContentPane().add(jPanel3,
java.awt.BorderLayout.SOUTH);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel16.add(jButton10);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel5, java.awt.BorderLayout.WEST);
jButton4.setText("Lihat Hasil Polling");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel13.setLayout(new java.awt.CardLayout());
jPanel13.setLayout(cardTengah);
jPanel15.setLayout(new java.awt.BorderLayout());
jPanel16.add(jButton4);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.setModel(tabPertanyaan);
jScrollPane1.setViewportView(jTable1);
jButton3.setText("Tutup Jendela");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel16.add(jButton3);
jPanel3.add(jPanel16, "tombolPanelTabel");
jPanel19.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel15.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jButton5.setText("Simpan Data");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jPanel17.setBackground(new java.awt.Color(255, 255, 255));
jPanel15.add(jPanel17, java.awt.BorderLayout.NORTH);
jPanel18.setBackground(new java.awt.Color(255, 255, 255));
jPanel15.add(jPanel18, java.awt.BorderLayout.SOUTH);
jPanel19.add(jButton5);
jPanel13.add(jPanel15, "panelTabelPertanyaan");
jButton6.setText("Update Data");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jPanel1.setLayout(new java.awt.GridLayout(7, 0));
jPanel19.add(jButton6);
jButton7.setText("Batal");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel12);
jPanel6.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Kode Pertanyaan :");
jLabel2.setPreferredSize(new java.awt.Dimension(120, 14));
jPanel6.add(jLabel2);
dataKodePertanyaan.setText("jTextField1");
dataKodePertanyaan.setPreferredSize(new java.awt.Dimension(100,
jPanel19.add(jButton7);
jButton8.setText("Tutup Jendela");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
19));
jPanel6.add(dataKodePertanyaan);
jPanel1.add(jPanel6);
jPanel7.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel19.add(jButton8);
jPanel3.add(jPanel19, "tombolPanelData");
jPanel20.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton9.setText("Ambil Kode Pertanyaan");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jPanel7.setMinimumSize(new java.awt.Dimension(164, 33));
jPanel7.setPreferredSize(new java.awt.Dimension(472, 52));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Isi Pertanyaan Polling :");
jLabel3.setPreferredSize(new java.awt.Dimension(120, 14));
jPanel7.add(jLabel3);
dataIsiPertanyaanPolling.setText("jTextField2");
dataIsiPertanyaanPolling.setPreferredSize(new
java.awt.Dimension(350, 19));
jPanel7.add(dataIsiPertanyaanPolling);
jPanel20.add(jButton9);
jPanel1.add(jPanel7);
jPanel3.add(jPanel20, "tombolPanelAmbil");
164
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Pilihan A :");
jLabel4.setPreferredSize(new java.awt.Dimension(120, 14));
jPanel8.add(jLabel4);
dataPilihan_A.setText("jTextField3");
dataPilihan_A.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel8.add(dataPilihan_A);
jPanel1.add(jPanel8);
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel5.setText("Pilihan B :");
jLabel5.setPreferredSize(new java.awt.Dimension(120, 14));
jPanel9.add(jLabel5);
dataPilihan_B.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel9.add(dataPilihan_B);
jPanel1.add(jPanel9);
jPanel14.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Pilihan C :");
jLabel6.setPreferredSize(new java.awt.Dimension(120, 14));
jPanel14.add(jLabel6);
dataPilihan_C.setText("jTextField1");
dataPilihan_C.setPreferredSize(new java.awt.Dimension(100, 19));
jPanel14.add(dataPilihan_C);
jPanel1.add(jPanel14);
kode + "\nAnda Ingin menghapus data pertanyaan
tersebut ?", "Konfirmasi Hapus Data",
javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus == 0){
String sql = "DELETE FROM data_pertanyaan_polling WHERE
kode_pertanyaan = ?";
try{
java.sql.PreparedStatement stat =
koneksi.prepareStatement(sql);
try{
stat.setString(1, kode);
stat.executeUpdate();
tampilTabelDataPertanyaan();
int hapus2 =
javax.swing.JOptionPane.showConfirmDialog(null, "Pertanyaan dengan
kode : "+kode+" Telah dihapus"+
"\nAnda Ingin Menghapus Semua Hasil Polling dari
Kode Pertanyaan Tersebut ???", "Konfirmasi Hapus Data",
javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus2 == 0){
String sql2 = "DELETE FROM data_hasil_polling
WHERE kode_pertanyaan = ?";
try{
java.sql.PreparedStatement stat2 =
koneksi.prepareStatement(sql2);
try{
stat2.setString(1, kode);
stat2.executeUpdate();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", se.getMessage());
}
}
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
jPanel11.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
cekHapusHasilPolling.setBackground(new java.awt.Color(255, 255,
255));
cekHapusHasilPolling.setText("Hapus data Hasil Polling saat
Pertanyaan dirubah");
jPanel11.add(cekHapusHasilPolling);
}
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Kode Pertanyaan yang dicari !!");
} else {
String kode = tabPertanyaan.getValueAt(xrow, 0).toString();
dispose();
new jendelaHasilPolling(koneksi, kode).setVisible(true);;
jPanel1.add(jPanel11);
jPanel13.add(jPanel1, "panelDataPertanyaan");
getContentPane().add(jPanel13, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
private void jButton10ActionPerformed(java.awt.event.ActionEvent
evt) {
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Kode Pertanyaan yang ingin dihapus
!!");
} else {
String kode = tabPertanyaan.getValueAt(xrow, 0).toString();
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"Kode Pertanyaan : " +
}
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt)
{
String kode = dataKodePertanyaan.getText();
String pertanyaan = dataIsiPertanyaanPolling.getText();
String pilih_a = dataPilihan_A.getText();
String pilih_b = dataPilihan_B.getText();
String pilih_c = dataPilihan_C.getText();
boolean hapus = this.cekHapusHasilPolling.isSelected();
if(pertanyaan.length()==0 || pilih_a.length()==0 || pilih_b.length()==0
|| pilih_c.length()==0){
SmitDev.SmsServer.Server.proses_Gagal("Proses Rubah Data
Gagal !!", "Terdapat Data yang Belum Dimasukkan");
} else{
165
String sql = "UPDATE data_Pertanyaan_polling SET
isi_Pertanyaan = ?, pilihan_a = ?, pilihan_b = ?, pilihan_c = ? WHERE
kode_Pertanyaan = ?";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, pertanyaan);
stat.setString(2, pilih_a);
stat.setString(3, pilih_b);
stat.setString(4, pilih_c);
stat.setString(5, kode);
stat.executeUpdate();
tampilTabelDataPertanyaan();
if(hapus){
int hapus2 =
javax.swing.JOptionPane.showConfirmDialog(null, "Pertanyaan dengan
kode : "+kode+" Telah dirubah"+
"\nAnda Ingin Menghapus Semua Hasil Polling dari
Kode Pertanyaan Tersebut ???", "Konfirmasi Hapus Data",
javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus2 == 0){
String sql2 = "DELETE FROM data_hasil_polling
WHERE kode_pertanyaan = ?";
try{
java.sql.PreparedStatement stat2 =
koneksi.prepareStatement(sql2);
try{
stat2.setString(1, kode);
stat2.executeUpdate();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", se.getMessage());
}
}
}
cardTengah.show(jPanel13, "panelTabelPertanyaan");
cardTombol.show(jPanel3, "tombolPanelTabel");
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah
Data Pertanyaan", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Merubah Data
Pertanyaan", se.getMessage());
}
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu kode Pertanyaan yang ingin
ditampilkan !!");
} else {
String kode = tabPertanyaan.getValueAt(xrow, 0).toString();
dispose();
new jendelaHasilPolling(koneksi, kode).setVisible(true);;
}
}
private void tampilTabelDataPertanyaan(){
int row = tabPertanyaan.getRowCount();
for (int i = 0; i < row; i++){
tabPertanyaan.removeRow(0);
}
String sql = "SELECT * FROM data_Pertanyaan_polling";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String kode = rSet.getString("kode_Pertanyaan");
String pertanyaan = rSet.getString("isi_pertanyaan");
String pilihan_a = rSet.getString("pilihan_a");
String pilihan_b = rSet.getString("pilihan_b");
String pilihan_c = rSet.getString("pilihan_c");
String[] data = {kode, pertanyaan, pilihan_a, pilihan_b,
pilihan_c};
this.tabPertanyaan.addRow(data);
}
} catch(Exception e){}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Pertanyaan yang ingin dirubah datanya
!!");
} else {
String kode = tabPertanyaan.getValueAt(xrow, 0).toString();
String isi = tabPertanyaan.getValueAt(xrow, 1).toString();
String pilih_a = tabPertanyaan.getValueAt(xrow, 2).toString();
String pilih_b = tabPertanyaan.getValueAt(xrow, 3).toString();
String pilih_c = tabPertanyaan.getValueAt(xrow, 4).toString();
this.dataKodePertanyaan.setText(kode);
this.dataIsiPertanyaanPolling.setText(isi);
this.dataPilihan_A.setText(pilih_a);
this.dataPilihan_B.setText(pilih_b);
this.dataPilihan_C.setText(pilih_c);
this.cekHapusHasilPolling.setSelected(true);
this.cekHapusHasilPolling.setEnabled(true);
this.dataKodePertanyaan.setEnabled(false);
this.jButton5.setEnabled(false);
this.jButton6.setEnabled(true);
cardTengah.show(jPanel13, "panelDataPertanyaan");
cardTombol.show(jPanel3, "tombolPanelData");
}
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt)
{
cardTengah.show(jPanel13, "panelTabelPertanyaan");
cardTombol.show(jPanel3, "tombolPanelTabel");
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
{
String kode = dataKodePertanyaan.getText();
String pertanyaan = dataIsiPertanyaanPolling.getText();
String pilih_a = dataPilihan_A.getText();
String pilih_b = dataPilihan_B.getText();
String pilih_c = dataPilihan_C.getText();
if(kode.length()==0 || pertanyaan.length()==0 || pilih_a.length()==0 ||
pilih_b.length()==0 || pilih_c.length()==0){
SmitDev.SmsServer.Server.proses_Gagal("Proses Simpan Data
Gagal !!", "Terdapat Data yang Belum Dimasukkan");
} else{
String sql = "INSERT INTO
data_Pertanyaan_Polling(kode_Pertanyaan, isi_Pertanyaan, pilihan_a,
pilihan_b, pilihan_c) VALUES(?,?,?,?,?)";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, kode);
stat.setString(2, pertanyaan);
stat.setString(3, pilih_a);
stat.setString(4, pilih_b);
stat.setString(5, pilih_c);
stat.executeUpdate();
tampilTabelDataPertanyaan();
cardTengah.show(jPanel13, "panelTabelPertanyaan");
cardTombol.show(jPanel3, "tombolPanelTabel");
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Pertanyaan", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menyimpan
Data Pertanyaan", se.getMessage());
}
}
}
166
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
this.dataKodePertanyaan.setText("");
this.dataIsiPertanyaanPolling.setText("");
this.dataPilihan_A.setText("");
this.dataPilihan_B.setText("");
this.dataPilihan_C.setText("");
this.cekHapusHasilPolling.setSelected(false);
this.cekHapusHasilPolling.setEnabled(false);
this.dataKodePertanyaan.setEnabled(true);
this.jButton6.setEnabled(false);
this.jButton5.setEnabled(true);
cardTengah.show(jPanel13, "panelDataPertanyaan");
cardTombol.show(jPanel3, "tombolPanelData");
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
// Variables declaration - do not modify
private javax.swing.JCheckBox cekHapusHasilPolling;
private javax.swing.JTextField dataIsiPertanyaanPolling;
private javax.swing.JTextField dataKodePertanyaan;
private javax.swing.JTextField dataPilihan_A;
private javax.swing.JTextField dataPilihan_B;
private javax.swing.JTextField dataPilihan_C;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
public javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
public javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel20;
public javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
Coding Kirim SMS :
public class jendelaKirimSms extends javax.swing.JFrame {
java.sql.Connection koneksi = null;
/** Creates new form jendelaKirimSms */
public jendelaKirimSms(java.sql.Connection koneksi, String notlp,
String pesan) {
this.koneksi = koneksi;
initComponents();
this.dataNoTlp.setText(notlp);
this.dataIsiPesan.setText(pesan);
this.dataIsiPesan.requestFocus();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel9 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
dataNoTlp = new javax.swing.JTextField();
jButton4 = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
dataIsiPesan = new javax.swing.JTextArea();
jPanel7 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel11 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
sisaKarakter = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Kirim SMS");
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1,
javax.swing.BoxLayout.Y_AXIS));
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel9);
jPanel4.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Nomor Telepon :");
jLabel2.setPreferredSize(new java.awt.Dimension(100, 16));
jPanel4.add(jLabel2);
}
dataNoTlp.setDocument(SmitDev.SmsServer.saring_karakter.setAllOnlyD
igit());
dataNoTlp.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel4.add(dataNoTlp);
jButton4.setText("Cari");
167
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton2.addActionListener(new
java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel4.add(jButton4);
jPanel3.add(jButton2);
jPanel1.add(jPanel4);
jButton3.setText("Tutup Jendela");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel5.setLayout(new java.awt.BorderLayout());
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
dataIsiPesan.setLineWrap(true);
dataIsiPesan.setRows(200);
dataIsiPesan.setWrapStyleWord(true);
dataIsiPesan.setPreferredSize(new java.awt.Dimension(300, 3400));
dataIsiPesan.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
dataIsiPesanFocusGained(evt);
}
});
dataIsiPesan.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
dataIsiPesanKeyReleased(evt);
}
});
jPanel3.add(jButton3);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400,
300);
}
// </editor-fold>
private void dataIsiPesanFocusGained(java.awt.event.FocusEvent evt) {
hitungSisaKarakter();
}
jScrollPane1.setViewportView(dataIsiPesan);
jPanel5.add(jScrollPane1, java.awt.BorderLayout.CENTER);
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.add(jPanel7, java.awt.BorderLayout.EAST);
{
this.dataIsiPesan.setText("");
this.dataNoTlp.setText("");
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.add(jPanel10, java.awt.BorderLayout.WEST);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
jPanel1.add(jPanel5);
jPanel11.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Sisa Karakter :");
jLabel3.setPreferredSize(new java.awt.Dimension(100, 16));
jPanel11.add(jLabel3);
{
String no_tlp = dataNoTlp.getText();
String pesan = dataIsiPesan.getText();
boolean status = new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(no_tlp,
pesan);
if(status){
dispose();
}
}
private void hitungSisaKarakter(){
int nilai = dataIsiPesan.getText().length();
int sisa = 160;
int kar = sisa - nilai;
if (kar <= 0) {
dataIsiPesan.setText(dataIsiPesan.getText().substring(0, 160));
sisaKarakter.setText(String.valueOf(0));
} else {
sisaKarakter.setText(String.valueOf(kar));
}
}
sisaKarakter.setText("160");
sisaKarakter.setPreferredSize(new java.awt.Dimension(30, 16));
jPanel11.add(sisaKarakter);
jPanel1.add(jPanel11);
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel8);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Dialog", 1, 14));
jLabel1.setText("Kirim SMS");
jPanel2.add(jLabel1);
private void dataIsiPesanKeyReleased(java.awt.event.KeyEvent evt) {
hitungSisaKarakter();
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
{
dispose();
String temp = this.dataIsiPesan.getText();
jendelaBukuTelepon bk = new jendelaBukuTelepon(koneksi, temp);
bk.cardTombol.show(bk.jPanel3, "cardAmbil");
bk.setVisible(true);
jPanel3.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 10));
jButton1.setText("Kirim SMS");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
jPanel3.add(jButton1);
jButton2.setText("Hapus");
168
// Variables declaration - do not modify
private javax.swing.JTextArea dataIsiPesan;
public javax.swing.JTextField dataNoTlp;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel sisaKarakter;
// End of variables declaration
setTitle("Konfigurasi Perangkat");
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1,
javax.swing.BoxLayout.Y_AXIS));
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel6);
jPanel7.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Merek Perangkat :");
jLabel2.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel7.add(jLabel2);
nilaiMerek.setFont(new java.awt.Font("Tahoma", 1, 11));
nilaiMerek.setText("jLabel5");
jPanel7.add(nilaiMerek);
jPanel1.add(jPanel7);
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
}
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Seri Perangkat :");
jLabel3.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel8.add(jLabel3);
Coding Konfigurasi Perangkat :
public class jendelaKonfigurasiPerangkat extends javax.swing.JFrame {
nilaiSeri.setFont(new java.awt.Font("Tahoma", 1, 11));
nilaiSeri.setText("jLabel6");
jPanel8.add(nilaiSeri);
jPanel1.add(jPanel8);
/** Creates new form jendelaKonfigurasiPerangkat */
public jendelaKonfigurasiPerangkat(String merek, String seri, String
imei, String operator) {
initComponents();
this.nilaiMerek.setText(merek);
this.nilaiSeri.setText(seri);
this.nilaiImei.setText(imei);
this.nilaiOperator.setText(operator);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
nilaiMerek = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
nilaiSeri = new javax.swing.JLabel();
jPanel9 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
nilaiImei = new javax.swing.JLabel();
jPanel10 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
nilaiOperator = new javax.swing.JLabel();
jPanel12 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("IMEI Perangkat :");
jLabel4.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel9.add(jLabel4);
nilaiImei.setFont(new java.awt.Font("Tahoma", 1, 11));
nilaiImei.setText("jLabel7");
jPanel9.add(nilaiImei);
jPanel1.add(jPanel9);
jPanel10.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel8.setText("Operator SIM Card :");
jLabel8.setPreferredSize(new java.awt.Dimension(100, 14));
jPanel10.add(jLabel8);
nilaiOperator.setFont(new java.awt.Font("Tahoma", 1, 11));
nilaiOperator.setText("jLabel9");
jPanel10.add(nilaiOperator);
jPanel1.add(jPanel10);
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel12);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Konfigurasi Perangkat");
jPanel2.add(jLabel1);
169
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jButton1.setText("Tutup Jendela");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel3.add(jButton1);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel5, java.awt.BorderLayout.WEST);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-300)/2, (screenSize.height-300)/2, 300,
300);
}
// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JLabel nilaiImei;
private javax.swing.JLabel nilaiMerek;
private javax.swing.JLabel nilaiOperator;
private javax.swing.JLabel nilaiSeri;
// End of variables declaration
}
Coding SMS Keluar :
public class jendelaSmsKeluar extends javax.swing.JFrame {
javax.swing.table.DefaultTableModel tabSMSKeluar = new
javax.swing.table.DefaultTableModel(
null, new String[] {"id", "No. Telepon", "Nama Kontak",
"Tanggal", "Jam", "Isi Pesan", "Status"}){
public boolean isCellEditable(int iRows, int iCols) {
return false;}
};
java.sql.Connection koneksi;
/** Creates new form jendelaSmsKeluar */
public jendelaSmsKeluar(java.sql.Connection koneksi) {
this.koneksi = koneksi;
initComponents();
tampilDataTabel();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this
method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel7 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel5 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("SMS Keluar");
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel6.setLayout(new java.awt.GridLayout(1, 0));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.setModel(tabSMSKeluar);
javax.swing.table.TableColumn colx = this.jTable1.getColumn("id");
colx.setWidth(0);
colx.setMinWidth(0);
colx.setMaxWidth(0);
colx = this.jTable1.getColumn("No. Telepon");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(90);
colx = this.jTable1.getColumn("Tanggal");
colx.setWidth(60);
colx.setMinWidth(60);
colx.setMaxWidth(60);
colx = this.jTable1.getColumn("Jam");
170
colx.setWidth(60);
colx.setMinWidth(60);
colx.setMaxWidth(60);
colx = this.jTable1.getColumn("Nama Kontak");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(80);
colx = this.jTable1.getColumn("Status");
colx.setWidth(40);
colx.setMinWidth(40);
colx.setMaxWidth(50);
this.jTable1.sizeColumnsToFit(0);
jScrollPane1.setViewportView(jTable1);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
jPanel6.add(jScrollPane1);
if (hapus == 0){
String sql = "DELETE FROM SMS_KELUAR";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.executeUpdate();
tampilDataTabel();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
}
jPanel1.add(jPanel6, java.awt.BorderLayout.CENTER);
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel7, java.awt.BorderLayout.NORTH);
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel8, java.awt.BorderLayout.SOUTH);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel2, java.awt.BorderLayout.WEST);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel4, java.awt.BorderLayout.EAST);
jPanel3.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Data SMS Keluar");
jPanel3.add(jLabel1);
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"Anda Yakin Ingin Menghapus Semua Data\nyang ada di database SMS
Masuk ?\n\nPerhatian : Semua Data SMS Masuk akan hilang",
"Konfirmasi Hapus Data", javax.swing.JOptionPane.YES_NO_OPTION);
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dulu data tabel yang ingin dihapus !!");
} else {
String id = tabSMSKeluar.getValueAt(xrow, 0).toString();
String no = tabSMSKeluar.getValueAt(xrow, 1).toString();
String tgl = tabSMSKeluar.getValueAt(xrow, 3).toString();
String jam = tabSMSKeluar.getValueAt(xrow, 4).toString();
getContentPane().add(jPanel3, java.awt.BorderLayout.NORTH);
jPanel5.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jButton1.setText("Teruskan Kirim SMS");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel5.add(jButton1);
jButton2.setText("Hapus");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel5.add(jButton2);
jButton3.setText("Hapus Semua");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel5.add(jButton3);
jButton4.setText("Tutup Jendela");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel5.add(jButton4);
getContentPane().add(jPanel5, java.awt.BorderLayout.SOUTH);
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"No. Telepon : " +
no + "\nTanggal : " + tgl + "\nJam : " + jam +
"\n\nAnda Ingin menghapus data tersebut ?", "Konfirmasi
Hapus Data", javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus == 0){
String sql = "DELETE FROM SMS_KELUAR WHERE
id_keluar = ?";
try{
java.sql.PreparedStatement stat =
koneksi.prepareStatement(sql);
try{
stat.setString(1, id);
stat.executeUpdate();
tampilDataTabel();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
}
}
private void tampilDataTabel(){
int row = tabSMSKeluar.getRowCount();
for (int i = 0; i < row; i++){
tabSMSKeluar.removeRow(0);
}
String sql = "SELECT * FROM SMS_KELUAR ORDER BY
TANGGAL_KELUAR DESC , JAM_KELUAR DESC ";
try{
java.sql.Statement stat = koneksi.createStatement();
171
java.sql.Statement statu = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String id = rSet.getString("ID_KELUAR");
String no = rSet.getString("NO_TELEPON_KELUAR");
String psn = rSet.getString("ISI_PESAN_KELUAR");
String sts = rSet.getString("STATUS_KELUAR");
String time = rSet.getString("JAM_KELUAR");
String tg = rSet.getString("TANGGAL_KELUAR");
String nama = "";
String sqlKontak = "SELECT * FROM data_buku_telepon
WHERE nomor_telepon = '"+no+"'";
java.sql.ResultSet rStN = statu.executeQuery(sqlKontak);
if (rStN.next()) {
nama = rStN.getString("NAMA_KONTAK");
}
Object[] data = {id, no, nama, tg, time, psn, sts};
tabSMSKeluar.addRow(data);
}
} catch(Exception e){}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Pesan yang akan diteruskan !!");
} else {
String no = tabSMSKeluar.getValueAt(xrow, 1).toString();
String pesan = tabSMSKeluar.getValueAt(xrow, 5).toString();
dispose();
jendelaKirimSms sms = new jendelaKirimSms(koneksi, no, pesan);
sms.setVisible(true);
}
return false;}
};
java.sql.Connection koneksi;
/** Creates new form jendelaSmsMasuk */
public jendelaSmsMasuk(java.sql.Connection koneksi) {
this.koneksi = koneksi;
initComponents();
tampilDataTabel();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this
method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel5 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jPanel6 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("SMS Masuk");
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setLayout(new java.awt.GridLayout(1, 0));
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
Coding SMS Masuk :
public class jendelaSmsMasuk extends javax.swing.JFrame {
javax.swing.table.DefaultTableModel tabSMSMasuk = new
javax.swing.table.DefaultTableModel(
null, new String[] {"id", "No. Telepon", "Nama Kontak",
"Tanggal", "Jam", "Isi Pesan", "Status"}){
public boolean isCellEditable(int iRows, int iCols) {
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.setModel(tabSMSMasuk);
javax.swing.table.TableColumn colx = this.jTable1.getColumn("id");
colx.setWidth(0);
colx.setMinWidth(0);
colx.setMaxWidth(0);
colx = this.jTable1.getColumn("No. Telepon");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(90);
colx = this.jTable1.getColumn("Tanggal");
colx.setWidth(60);
colx.setMinWidth(60);
colx.setMaxWidth(60);
colx = this.jTable1.getColumn("Jam");
colx.setWidth(60);
colx.setMinWidth(60);
colx.setMaxWidth(60);
colx = this.jTable1.getColumn("Nama Kontak");
colx.setWidth(80);
colx.setMinWidth(80);
colx.setMaxWidth(80);
colx = this.jTable1.getColumn("Status");
colx.setWidth(40);
colx.setMinWidth(40);
172
colx.setMaxWidth(50);
this.jTable1.sizeColumnsToFit(0);
jScrollPane1.setViewportView(jTable1);
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"Anda Yakin Ingin Menghapus Semua Data\nyang ada di database SMS
Masuk ?\n\nPerhatian : Semua Data SMS Masuk akan hilang",
"Konfirmasi Hapus Data", javax.swing.JOptionPane.YES_NO_OPTION);
jPanel4.add(jScrollPane1);
jPanel1.add(jPanel4, java.awt.BorderLayout.CENTER);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel5, java.awt.BorderLayout.NORTH);
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.add(jPanel8, java.awt.BorderLayout.SOUTH);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel2.setBackground(new java.awt.Color(102, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
jLabel1.setText("Data SMS Masuk");
jPanel2.add(jLabel1);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
jPanel3.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
if (hapus == 0){
String sql = "DELETE FROM SMS_MASUK";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.executeUpdate();
tampilDataTabel();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
jButton1.setText("Balas SMS");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dulu data tabel yang ingin dihapus !!");
} else {
String id = tabSMSMasuk.getValueAt(xrow, 0).toString();
String no = tabSMSMasuk.getValueAt(xrow, 1).toString();
String tgl = tabSMSMasuk.getValueAt(xrow, 3).toString();
String jam = tabSMSMasuk.getValueAt(xrow, 4).toString();
jPanel3.add(jButton1);
jButton2.setText("Hapus");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel3.add(jButton2);
jButton3.setText("Hapus Semua");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel3.add(jButton3);
jButton4.setText("Tutup Jendela");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel3.add(jButton4);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel6, java.awt.BorderLayout.EAST);
int hapus = javax.swing.JOptionPane.showConfirmDialog(null,
"No. Telepon : " +
no + "\nTanggal : " + tgl + "\nJam : " + jam +
"\n\nAnda Ingin menghapus data tersebut ?", "Konfirmasi
Hapus Data", javax.swing.JOptionPane.YES_NO_OPTION);
if (hapus == 0){
String sql = "DELETE FROM SMS_MASUK WHERE
id_masuk = ?";
try{
java.sql.PreparedStatement stat =
koneksi.prepareStatement(sql);
try{
stat.setString(1, id);
stat.executeUpdate();
tampilDataTabel();
} catch (java.sql.SQLException s){
SmitDev.SmsServer.Server.proses_Gagal("Gagal
Menghapus Data", s.getMessage());
}
} catch (Exception se){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Menghapus
Data", se.getMessage());
}
}
}
}
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
getContentPane().add(jPanel7, java.awt.BorderLayout.WEST);
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-550)/2, (screenSize.height-400)/2, 550,
400);
}
// </editor-fold>
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{
int xrow = this.jTable1.getSelectedRow();
if (xrow < 0) {
javax.swing.JOptionPane.showMessageDialog(null,
"Silahkan pilih dahulu Pesan yang akan dibalas !!");
} else {
String no = tabSMSMasuk.getValueAt(xrow, 1).toString();
String pesan = "\n--- Pesan Asli ----\n" +
tabSMSMasuk.getValueAt(xrow, 5).toString();
dispose();
jendelaKirimSms sms = new jendelaKirimSms(koneksi, no, pesan);
sms.setVisible(true);
173
}
}
private void tampilDataTabel(){
int row = tabSMSMasuk.getRowCount();
for (int i = 0; i < row; i++){
tabSMSMasuk.removeRow(0);
}
String sql = "SELECT * FROM SMS_MASUK ORDER BY
TANGGAL_MASUK DESC , JAM_MASUK DESC ";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.Statement statu = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String id = rSet.getString("ID_MASUK");
String no = rSet.getString("NO_TELEPON_MASUK");
String psn = rSet.getString("ISI_PESAN_MASUK");
String sts = rSet.getString("STATUS_MASUK");
String time = rSet.getString("JAM_MASUK");
String tg = rSet.getString("TANGGAL_MASUK");
String nama = "";
String sqlKontak = "SELECT * FROM data_buku_telepon
WHERE nomor_telepon = '"+no+"'";
java.sql.ResultSet rStN = statu.executeQuery(sqlKontak);
if (rStN.next()) {
nama = rStN.getString("NAMA_KONTAK");
}
Object[] data = {id, no, nama, tg, time, psn, sts};
tabSMSMasuk.addRow(data);
}
} catch(Exception e){}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
Coding Pengaturan Terminal :
public class pengaturan_Terminal extends javax.swing.JDialog {
/** Creates new form pengaturan_Terminal */
public pengaturan_Terminal(boolean modal) {
super(new java.awt.Frame(), modal);
}
public pengaturan_Terminal() {
}
public void tampilanGUI(){
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
dataSerial = new javax.swing.JComboBox();
jPanel7 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
dataBps = new javax.swing.JComboBox();
jPanel8 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dataBits = new javax.swing.JComboBox();
jPanel9 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
dataParity = new javax.swing.JComboBox();
jPanel10 = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
dataStop = new javax.swing.JComboBox();
jPanel11 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
dataFlowControl = new javax.swing.JComboBox();
jPanel5 = new javax.swing.JPanel();
jPanel12 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
dataNamaHost = new javax.swing.JTextField();
jPanel13 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
dataNamaPort = new javax.swing.JTextField();
jPanel14 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
dataNamaDatabase = new javax.swing.JTextField();
jPanel16 = new javax.swing.JPanel();
jPanel15 = new javax.swing.JPanel();
jLabel10 = new javax.swing.JLabel();
dataNamaPengguna = new javax.swing.JTextField();
jPanel17 = new javax.swing.JPanel();
jLabel11 = new javax.swing.JLabel();
dataPassword = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_
CLOSE);
setTitle("Pengaturan Terminal SMS Server");
setCursor(new
java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1,
javax.swing.BoxLayout.Y_AXIS));
jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4,
javax.swing.BoxLayout.Y_AXIS));
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
Konfigurasi Terminal ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jPanel6.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel6.setBackground(new java.awt.Color(255, 255, 255));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel1.setText("Serial Port :");
jLabel1.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel6.add(jLabel1);
dataSerial = SmitDev.SmsServer.Port.daftarSerialPort();
dataSerial.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel6.add(dataSerial);
jPanel4.add(jPanel6);
jPanel7.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
174
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText("Bits per Second :");
jLabel2.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel7.add(jLabel2);
dataBps = SmitDev.SmsServer.Port.BitsPerSecond();
dataBps.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel7.add(dataBps);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.setBorder(new javax.swing.border.TitledBorder(new
javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true), "
Konfigurasi Database (MySQL Database Server) ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 1, 12)));
jPanel12.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel12.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel7);
jPanel8.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel8.setBackground(new java.awt.Color(255, 255, 255));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel7.setText("Nama Host :");
jLabel7.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel12.add(jLabel7);
dataNamaHost.setText("localhost");
dataNamaHost.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel12.add(dataNamaHost);
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel3.setText("Data bits :");
jLabel3.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel8.add(jLabel3);
jPanel5.add(jPanel12);
dataBits = SmitDev.SmsServer.Port.DataBits();
dataBits.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel8.add(dataBits);
jPanel13.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
jPanel13.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel8);
jPanel9.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
jPanel9.setBackground(new java.awt.Color(255, 255, 255));
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel8.setText("Nama Port :");
jLabel8.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel13.add(jLabel8);
dataNamaPort.setText("3306");
dataNamaPort.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel13.add(dataNamaPort);
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel4.setText("Parity :");
jLabel4.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel9.add(jLabel4);
jPanel5.add(jPanel13);
dataParity = SmitDev.SmsServer.Port.Parity();
dataParity.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel9.add(dataParity);
jPanel14.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel14.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.add(jPanel9);
jPanel10.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel10.setBackground(new java.awt.Color(255, 255, 255));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel5.setText("Stop bits :");
jLabel5.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel10.add(jLabel5);
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel9.setText("Nama Database :");
jLabel9.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel14.add(jLabel9);
dataNamaDatabase.setPreferredSize(new java.awt.Dimension(150,
22));
jPanel14.add(dataNamaDatabase);
jPanel5.add(jPanel14);
dataStop = SmitDev.SmsServer.Port.StopBits();
dataStop.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel10.add(dataStop);
jPanel4.add(jPanel10);
jPanel16.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.add(jPanel16);
jPanel15.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
jPanel11.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));
jPanel11.setBackground(new java.awt.Color(255, 255, 255));
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel6.setText("Flow control :");
jLabel6.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel11.add(jLabel6);
dataFlowControl = SmitDev.SmsServer.Port.FlowControl();
dataFlowControl.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel11.add(dataFlowControl);
jPanel15.setBackground(new java.awt.Color(255, 255, 255));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel10.setText("Nama Pengguna :");
jLabel10.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel15.add(jLabel10);
dataNamaPengguna.setText("root");
dataNamaPengguna.setPreferredSize(new java.awt.Dimension(150,
22));
jPanel15.add(dataNamaPengguna);
jPanel5.add(jPanel15);
jPanel4.add(jPanel11);
jPanel1.add(jPanel4);
jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5,
javax.swing.BoxLayout.Y_AXIS));
jPanel17.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanel17.setBackground(new java.awt.Color(255, 255, 255));
175
}
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText("Password :");
jLabel11.setPreferredSize(new java.awt.Dimension(160, 16));
jPanel17.add(jLabel11);
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
System.exit(0);
}
dataPassword.setPreferredSize(new java.awt.Dimension(150, 22));
jPanel17.add(dataPassword);
/**
* @param args the command line arguments
*/
jPanel5.add(jPanel17);
jPanel1.add(jPanel5);
// Variables declaration - do not modify
private javax.swing.JComboBox dataBits;
private javax.swing.JComboBox dataBps;
private javax.swing.JComboBox dataFlowControl;
private javax.swing.JTextField dataNamaDatabase;
private javax.swing.JTextField dataNamaHost;
private javax.swing.JTextField dataNamaPengguna;
private javax.swing.JTextField dataNamaPort;
private javax.swing.JComboBox dataParity;
private javax.swing.JTextField dataPassword;
private javax.swing.JComboBox dataSerial;
private javax.swing.JComboBox dataStop;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
// End of variables declaration
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel3.setLayout(new
java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 5, 10));
jButton1.setText("Setuju");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel3.add(jButton1);
jButton2.setText("Tidak");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel3.add(jButton2);
getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);
getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-400)/2, (screenSize.height-500)/2, 400,
500);
}
// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
String serialPort = this.dataSerial.getSelectedItem().toString();
String bps = this.dataBps.getSelectedItem().toString();
String bits = this.dataBits.getSelectedItem().toString();
String parity = this.dataParity.getSelectedItem().toString();
String stopBit = this.dataStop.getSelectedItem().toString();
String flowControl =
this.dataFlowControl.getSelectedItem().toString();
}
String driverJDBC ="com.mysql.jdbc.Driver";
String url = "jdbc:mysql://" + this.dataNamaHost.getText() + ":"
+ this.dataNamaPort.getText() + "/" +
this.dataNamaDatabase.getText();
String user = this.dataNamaPengguna.getText();
String password = this.dataPassword.getText();
if(this.dataNamaDatabase.getText().length()<= 0 ){
SmitDev.SmsServer.Server.proses_Gagal("Gagal Melakukan
Pengaturan Terminal", "Nama Database Belum di Masukkan");
this.dataNamaDatabase.requestFocus();
} else {
this.dispose();
Utama_SMS utama = new Utama_SMS(serialPort,
bps,
bits,
parity,
stopBit,
flowControl,
driverJDBC,
url,
user,
password);
utama.setVisible(true);
}
176
public void prosesTabelMasuk(String id, String notlp, String pesan){
String kode_1_salah = null;
String kode_1_format = null;
String pesanSalahKode_1 = null;
String[] hasil;
Coding Database Sms Server :
public class prosesDatabaseSmsServer {
java.sql.Connection koneksi;
/** Creates a new instance of prosesDatabaseSmsServer */
public prosesDatabaseSmsServer(java.sql.Connection koneksi) {
this.koneksi = koneksi;
}
String tahun;
String bulan;
String tanggal;
String jam;
String menit;
String detik;
public void getWaktu(){
String tgl_nol = "";
String bln_nol = "";
// Mengambil Waktu sekarang
java.util.Calendar dt = java.util.Calendar.getInstance();
int tgl = dt.get(java.util.Calendar.DAY_OF_MONTH);
int bln = dt.get(java.util.Calendar.MONTH)+1;
int thn = dt.get(java.util.Calendar.YEAR);
// Apabila nilai tanggal lebih kecil dari 10
if (tgl < 10) {
tgl_nol = "0";
}
if (bln < 10) {
bln_nol = "0";
}
// Membuat String Tanggal dan Tahun
tanggal = tgl_nol + Integer.toString(tgl);
bulan = bln_nol + Integer.toString(bln);
tahun = Integer.toString(thn);
//********************************************
String nol_jam = "";
String nol_menit = "";
String nol_detik = "";
// Membuat Date
// Mengambil nilaj JAM, MENIT, dan DETIK Sekarang
int nilai_jam = dt.get(java.util.Calendar.HOUR_OF_DAY);
int nilai_menit = dt.get(java.util.Calendar.MINUTE);
int nilai_detik = dt.get(java.util.Calendar.SECOND);
// Jika nilai JAM lebih kecil dari 10 (hanya 1 digit)
if (nilai_jam <= 9) {
// Tambahkan "0" didepannya
nol_jam = "0";
}
// Jika nilai MENIT lebih kecil dari 10 (hanya 1 digit)
if (nilai_menit <= 9) {
// Tambahkan "0" didepannya
nol_menit = "0";
}
// Jika nilai DETIK lebih kecil dari 10 (hanya 1 digit)
if (nilai_detik <= 9) {
// Tambahkan "0" didepannya
nol_detik = "0";
}
// Keadaan Waktu Sekarang
// Membuat String JAM, MENIT, DETIK
jam = nol_jam + Integer.toString(nilai_jam);
menit = nol_menit + Integer.toString(nilai_menit);
detik = nol_detik + Integer.toString(nilai_detik);
}
updateStatusData(id, "OK");
java.util.StringTokenizer st = new java.util.StringTokenizer(pesan);
int i = 0;
String awal = "";
StringBuffer kode = new StringBuffer(200);
String kode1 = "";
String kode2 = "";
while (st.hasMoreTokens()) {
awal = st.nextToken();
i = i + 1;
}
if (i == 1) {
kode1 = awal.toUpperCase(); // Kode pertama
kode2 = "null";
kode.append("null");
} else {
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(" ");
hasil = pattern.split(pesan.trim());
if (i == 3) {
kode1 = hasil[0].trim().toString().toUpperCase(); // Kode
pertama
kode2 = hasil[1].trim().toString().toUpperCase(); // Kode kedua
String kod = hasil[2].toString().toUpperCase();
kode.append(kod);
} else {
kode1 = hasil[0].trim().toString().toUpperCase(); // Kode
pertama
kode2 = hasil[1].trim().toString().toUpperCase(); // Kode kedua
for (int b = 2; b < i; b++) {
String kod = hasil[b].toString().toUpperCase();
kode.append(kod);
}
}
}
String kode3 = kode.toString();
kode3 = kode3.replaceAll(" ", "");
System.out.println(notlp+" "+kode1+" "+kode2+" "+kode3);
if (kode1.equalsIgnoreCase("REQUEST")) {
new prosesSmsRequest(koneksi, notlp, kode2, kode3);
} else if (kode1.equalsIgnoreCase("POLLING")) {
new prosesSmsPolling(koneksi, notlp, kode2, kode3);
} else{
kode_1_salah = "Kode1 yang Anda Masukkan Salah" + "\nkode : "
+ kode1 +
"\nTidak terdaftar";
kode_1_format =
"\nTerima Kasih\nSmitDev SMS Server";
pesanSalahKode_1 = kode_1_salah + kode_1_format;
inputDataTabelSmsKeluar(notlp, pesanSalahKode_1);
} // Akhir else
}
boolean statusInputSmsKeluar = false;
public boolean inputDataTabelSmsKeluar(String notlp, String pesan){
getWaktu();
String tanggalHari = tanggal + "-" + bulan + "-" + tahun;
String jamHari = jam + ":" + menit + ":" + detik;
try {
// SQL (Masukkan ke tabel TERIMA)
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(
"Insert Into
SMS_KELUAR(NO_TELEPON_KELUAR,ISI_PESAN_KELUAR,STA
TUS_KELUAR,TANGGAL_KELUAR, JAM_KELUAR) Values
(?,?,?,?,?)");
try {
pStatement.setString(1, notlp);
pStatement.setString(2, pesan);
pStatement.setString(3, "WAIT");
177
pStatement.setString(4, tanggalHari);
pStatement.setString(5, jamHari);
pStatement.executeUpdate();
statusInputSmsKeluar = true;
} // Akhir try
catch (Exception ei) {}
// Menutup Statement
pStatement.close();
} // Akhir try
catch (Exception e) {}
return statusInputSmsKeluar;
}
public void inputDataTabelSmsMasuk(String notlp, String pesan){
getWaktu();
String tanggalHari = tanggal + "-" + bulan + "-" + tahun;
String jamHari = jam + ":" + menit + ":" + detik;
try {
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(
"Insert Into
SMS_MASUK(NO_TELEPON_MASUK,ISI_PESAN_MASUK,STATU
S_MASUK,TANGGAL_MASUK, JAM_MASUK) Values (?,?,?,?,?)");
try {
pStatement.setString(1, notlp);
pStatement.setString(2, pesan);
pStatement.setString(3, "WAIT");
pStatement.setString(4, tanggalHari);
pStatement.setString(5, jamHari);
pStatement.executeUpdate();
} // Akhir try
catch (Exception ei) {}
// Menutup Statement
pStatement.close();
} // Akhir try
catch (Exception e) {}
}
public void updateStatusData(String id, String status) {
String tulisStatus = "";
try {
if (status.equals("SEND")) {
tulisStatus = "Update SMS_KELUAR Set
STATUS_KELUAR='SEND' Where ID_KELUAR=?";
} else if (status.equals("NO")) {
tulisStatus = "Update SMS_KELUAR Set
STATUS_KELUAR='NO' Where ID_KELUAR=?";
}else if (status.equals("PROCESS")) {
tulisStatus = "Update SMS_KELUAR Set
STATUS_KELUAR='PROCESS' Where ID_KELUAR=?";
} else if (status.equals("OK")) {
tulisStatus = "Update SMS_MASUK Set
STATUS_MASUK='OK' Where ID_MASUK=?";
}
java.sql.PreparedStatement pStatement =
koneksi.prepareStatement(tulisStatus);
try {
pStatement.setString(1, id);
pStatement.executeUpdate();
Coding SMS Polling ke Database :
public class prosesSmsPolling {
java.sql.Connection koneksi;
/** Creates a new instance of prosesSmsPolling */
public prosesSmsPolling(java.sql.Connection koneksi, String notlp,
String kode2, String kode3) {
this.koneksi = koneksi;
prosesSimpanDataPolling(notlp, kode2, kode3);
}
private void prosesSimpanDataPolling(String notlp, String kode2, String
kode3){
String sql = "INSERT INTO data_hasil_Polling(kode_Pertanyaan,
pilihan, no_telepon_pengirim) VALUES(?,?,?)";
try{
java.sql.PreparedStatement stat = koneksi.prepareStatement(sql);
try{
stat.setString(1, kode2);
stat.setString(2, kode3);
stat.setString(3, notlp);
stat.executeUpdate();
} catch (java.sql.SQLException s){
System.out.println(s.getMessage());
}
} catch (Exception se){
System.out.println(se.getMessage());
}
}
}
} // Akhir try
catch (Exception e) {}
pStatement.close();
} // Akhir try
catch (Exception e) {}
}
}
Coding SMS Request Ke Database :
public class prosesSmsRequest {
java.sql.Connection koneksi;
/** Creates a new instance of prosesSmsRequest */
178
public prosesSmsRequest(java.sql.Connection koneksi, String notlp,
String kode2, String kode3) {
this.koneksi = koneksi;
prosesValidasiKode(notlp, kode2, kode3);
}
prosesDatabaseSmsServer pd = new
prosesDatabaseSmsServer(koneksi);
pd.getWaktu();
String tahun = pd.tahun;
String bulan = pd.bulan;
private void prosesValidasiKode(String notlp, String kode2, String
kode3){
if (kode2.equalsIgnoreCase("DATA")) {
prosesRequestDataPelanggan(notlp, kode3);
} else if (kode2.equalsIgnoreCase("BIAYA")) {
prosesRequestPajakPelanggan(notlp, kode3);
} else if (kode2.equalsIgnoreCase("null")) {
String kode_1_salah = "Format SMS yang Anda Masukkan
Salah.";
String kode_1_format =
"\nFORMAT SMS adalah REQUEST DATA <IdPelang> atau
REQUEST BIAYA <IdPelang>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
} else {
String kode_1_salah = "Kode2 yang Anda Masukkan Salah" +
"\nkode : " + kode2 + "\nTidak terdaftar";
String kode_1_format = "\nKode2 yang diijinkan adalah DATA
atau BIAYA. \nFORMAT SMS adalah REQUEST DATA <ID> atau
REQUEST PAJAK <ID>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
}
}
String namaBulan =
SmitDev.SmsServer.Jam.konversiBulan(Integer.parseInt(bulan)-1);
String kode = kode3+namaBulan+tahun;
System.out.println(kode);
boolean status_cari = false;
if(kode3.equalsIgnoreCase("null")){
String kode_1_salah = "Format SMS yang Anda Masukkan
Salah.";
String kode_1_format =
"\nFORMAT SMS adalah REQUEST DATA <IdPelang> atau
REQUEST BIAYA <IdPelang>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
} else {
String sql = "SELECT * FROM biaya_semester WHERE kode =
'"+kode+"'";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String beban = rSet.getString("spp");
String pakai = rSet.getString("dop");
String terlambat = rSet.getString("dkm");
String lain = rSet.getString("dp");
String jml = rSet.getString("jumlah");
String ppj = rSet.getString("pajak");
String total_bayar = rSet.getString("total_pembayaran");
String dataPesan =
kode3+"\nBulan:"+namaBulan+tahun+"\nSPP:"+beban+"\nDOP:"+pakai+
"\nDKM:"+terlambat+"\nDP+DM:"+lain+"\nJml:"+jml+"\nPajak:"+ppj+"\
n\nTotalPajak:"+total_bayar;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
dataPesan);
status_cari = true;
}
if(!status_cari){
String kode_1_salah = "Data Biaya Semester Dengan NIM :
"+kode3+"\nTidak Ditemukan.";
String kode_1_format =
"\nFORMAT SMS adalah REQUEST DATA <IdPelang>
atau REQUEST BIAYA <IdPelang>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
}
} catch(Exception e){}
}
}
}
private void prosesRequestDataPelanggan(String notlp, String kode3){
boolean status_cari = false;
if(kode3.equalsIgnoreCase("null")){
String kode_1_salah = "Format SMS yang Anda Masukkan
Salah.";
String kode_1_format =
"\nFORMAT SMS adalah REQUEST DATA <IdPelang> atau
REQUEST BIAYA <IdPelang>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
} else {
String sql = "SELECT * FROM data_mahasiswa WHERE nim =
'"+kode3+"'";
try{
java.sql.Statement stat = koneksi.createStatement();
java.sql.ResultSet rSet = stat.executeQuery(sql);
while(rSet.next()){
String nama = rSet.getString("nama_mahasiswa");
String alamat = rSet.getString("dosen_pa");
String daya = rSet.getString("dosen_pkl");
String dataPesan = "NIM : "+kode3+"\nNama :
"+nama+"\nDosen PA : "+alamat+"\nDosen PKL : "+daya;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
dataPesan);
status_cari = true;
}
if(!status_cari){
String kode_1_salah = "Data Mahasiswa dengan NIM :
"+kode3+"\nTidak Ditemukan.";
String kode_1_format =
"\nKetik REQUEST DATA <IdPelang> atau REQUEST
BIAYA <IdPelang>";
String pesanSalahKode_1 = kode_1_salah + kode_1_format;
new
prosesDatabaseSmsServer(koneksi).inputDataTabelSmsKeluar(notlp,
pesanSalahKode_1);
}
} catch(Exception e){}
}
}
private void prosesRequestPajakPelanggan(String notlp, String kode3){
179
Lampiran C
Membuat database menggunakan MySQL :
1. Aktivkan MySQL lalu tekan tombol enter :
2. ketik perintah (show databases;) lalu akan ada tampilan seperti ini :
3. lalu pilih (use sms), lalu ketik (show tables;) maka akan ada tampilan seperti ini :
4. berikut adalah coding MySQL untuk membuat database :
a. Database sms masuk :
CREATE TABLE SMS_MASUK (id_masuk int(11) NOT NULL auto_increment,
no_telepon_masuk varchar(100) NOT NULL default ‘’ , tanggal_masuk varchar(100)
NOT NULL default ‘’, jam_masuk varchar(100) NOT NULL default ‘’,
180
isi_pesan_masuk varchar(160) NOT NULL default ‘’, status_masuk varchar(100)
NOT NULL default ‘’, PRIMARY KEY (id_masuk)) ENGINE=MyISAM
DEFAULT CHARSET=latin1;
b. Database sms keluar :
CREATE TABLE SMS_KELUAR (id_keluar int(11) NOT NULL auto_increment,
no_telepon_keluar varchar(100) NOT NULL default ‘’ , tanggal_keluar varchar(100)
NOT NULL default ‘’, jam_keluar varchar(100) NOT NULL default ‘’,
isi_pesan_keluar varchar(160) NOT NULL default ‘’, status_keluar varchar(100)
NOT NULL default ‘’, PRIMARY KEY (id_keluar)) ENGINE=MyISAM
DEFAULT CHARSET=latin1;
c. Database Data Buku Telepon :
CREATE TABLE DATA_BUKU_TELEPON (nomor_telepon varchar(25) NOT
NULL default ‘’, nama_kontak varchar(150) NOT NULL default ‘’, alamat
varchar(250) NOT NULL default ‘’, PRIMARY KEY (no_telepon))
ENGINE=MyISAM DEFAULT CHARSET=latin1;
d. Database Data Mahasiswa:
CREATE TABLE DATA_MAHASISWA (nim varchar(100) NOT NULL default ‘’,
nama_mahasiswa varchar(100) NOT NULL default ‘’, dosen_pa varchar(100) NOT
NULL default ‘’, dosen_pkl varchar(100) NOT NULL default ‘’, PRIMARY KEY
(nim)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
e. Database Biaya Semester :
CREATE TABLE BIAYA_SEMESTER (kode varchar(100) NOT NULL default ‘’,
nim varchar(100) NOT NULL default ‘’ , spp varchar(100) NOT NULL default ‘’,
dop varchar(100) NOT NULL default ‘’, dkm varchar(100) NOT NULL default ‘’, dp
varchar(10) NOT NULL default ‘’, jumlah varchar(100) NOT NULL default ‘’ ,
pajak varchar(100) NOT NULL default ‘’, total_pembayaran varchar(100) NOT
NULL default ‘’, bulan_pembayaran varchar(100) NOT NULL default ‘’, PRIMARY
KEY (kode)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
f. Database Data Hasil Polling :
CREATE TABLE DATA_HASIL_POLLING (no_urut int(11) NOT NULL
auto_increment, kode_pertanyaan varchar(100) NOT NULL default ‘’, pilihan
varchar(100) NOT NULL default ‘’, no_telepon_pengimrim varchar(100) NOT
NULL default ‘’, PRIMARY KEY (no_urut)) ENGINE=MyISAM DEFAULT
CHARSET=latin1;
g. Database Pertanyaan Polling :
CREATE
TABLE
DATA_PERTANYAAN_POLLING
(kode_pertanyaan
varchar(100) NOT NULL default ‘’, isi_pertanyaan varchar(100) NOT NULL default
‘’, pilihan_a varchar(100) NOT NULL default ‘’, pilihan_b varchar(100) NOT NULL
default ‘’, pilihan_c varchar(100) NOT NULL default ‘’, PRIMARY KEY (nim))
ENGINE=MyISAM DEFAULT CHARSET=latin1;
LEMBAR PENGESAHAN UJIAN
Skripsi berjudul “Pembuatan Aplikasi Penyebaran Informasi Berbasis Short
Message Service (SMS) di Lingkungan Program Studi Teknik Informatika” yang
ditulis oleh RUSDIANTORO, NIM 104091002846 telah diuji dan dinyatakan lulus
dalam siding Munaqosyah Fakultas Sains dan Teknologi Universitas Islam Negeri
Syarif Hidayatullah Jakarta pada tanggal 19 Mei 2010. Skripsi ini telah diterima
sebagai salah satu syarat untuk memperoleh gelar sarjana strata satu (S1) Program
Studi Teknik Informatika.
Menyetujui :
Penguji 1
Penguji II
Husni Teja Sukmana, Phd
Viva Arifin, MMSI
NIP : 19771030 200112 1 003
NIP : 19730810 200604 2 001
Pembimbing 1
Pembimbing II
Yusuf Durrachman, M.Sc, MIT
Zulfiandri, MMSI
NIP : 19710522 200604 1 002
NIP : 19700130 200501 1 003
Mengetahui :
Dekan Fakultas Sains san Teknologi
Ketua Program Studi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis
Yusuf Durrachman, M.Sc, MIT
NIP : 19680117 200112 1 001
NIP : 19710522 200604 1 002
iii
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR
HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI
SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU
LEMBAGA MANAPUN.
Jakarta. Juni 2010
Rusdiantoro
104091002846
v
Download