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