You are on page 1of 202

PERANCANGAN SISTEM INFORMASI PENGOLAHAN

DATA ALUMNI MENGGUNAKAN TEKNOLOGI


JAVA REMOTE METHOD INVOKES (JAVA-RMI)
DENGAN METODELOGI BERORIENTASI OBJEK
(Studi Kasus di SMK Negeri 2 Garut)

Tugas Akhir

Diajukan Untuk Memenuhi Salah Satu Syarat Kelulusan


Program Sarjana Strata 1

Disusun Oleh:
DEDEN RIZAL NOPAWIJAYA
NPM. 0606017

JURUSAN TEKNIK INFORMATIKA


SEKOLAH TINGGI TEKNOLOGI GARUT
2010
LEMBAR PENGESAHAN

PERANCANGAN SISTEM INFORMASI PENGOLAHAN


DATA ALUMNI MENGGUNAKAN TEKNOLOGI
JAVA REMOTE METHOD INVOKES (JAVA-RMI)
DENGAN METODELOGI BERORIENTASI OBJEK

Tugas Akhir telah dibaca dan disetujui oleh komisi pembimbing untuk diajukan
dalam sidang sarjana pada Jurusan Teknik Informatika Sekolah Tinggi Teknologi
Garut.

Menyetujui,
Pembimbing I Pembimbing II

Prof. Dr. H. M. Ali Ramdhani, STP, MT. H. Eko Retnadi, M.Kom.


NIDN : 0406117101 NIDN : 0410086401

Mengetahui,
Ketua Jurusan Teknik Informatika

Dini Destiani SF., MT.


NIP : 132055640
DEDEN RIZAL NOPAWIJAYA, 0606017
Perancangan Sistem Informasi Pengolahan Data Alumni Menggunakan
Teknologi Java Remote Method Invokes (Java-RMI) dengan Metodelogi
Berorientasi Objek
Dibawah bimbingan :
Bapak Prof. Dr. H. M. Ali Ramdhani, STP, MT selaku Pembimbing I
Dan Bapak H. Eko Retnadi, M.Kom. selaku Pembimbing II
105 Halaman+xi/12 Tabel/72 Gambar/14 Pustaka (1997-2009)/79 Lampiran

ABSTRAK

Pengelolaan data alumni merupakan proses yang di lakukan sekolah untuk


mengkoordinir data alumni yang pada saat ini proses pencatatan data alumni di SMKN 2
Garut masih terpaku pada buku induk. Oleh karena itu masalah yang sering terjadi
adalah belum adanya pengklasifikasian data alumni secara khusus, pencarian data dan
informasi dibutuhkan waktu yang relatif lama. Adapun yang menjadi tujuan dalam
pelaksanaan tugas akhir ini adalah untuk merancang Sistem Informasi Pengolahan Data
Alumni Menggunakan Teknologi Java Remote Method Invokes (Java-RMI) dengan
Metodelogi Berorientasi Objek di SMK Negeri 2 Garut.
Dalam pengembangan Sistem Informasi Pengolahan Data Alumni di SMK Negeri
2 Garut merupakan salah satu bentuk pengembangan sistem dalam bidang teknologi
informasi. Hal ini membuktikan bahwa teknologi informasi telah mempengaruhi aktifitas
bisnis suatu lingkungan kerja termasuk salah satunya SMK Negeri 2 Garut.
Dilatarbelakangi oleh jumlah alumni yang mencapai lebih dari 10.192 dan jumlah
alumni yang makij kesini semakin bertambah banyak, maka di perlukan suatu Sitem
Pengolahan Data Alumni tang terkomputerisasii dan terintegrasi.
Metode pengembangan sistem informasi yang dirancang menggunakan
metodologi berorientasi objek oriented dan bahasa pemrograman Java serta DBMS
MySql cukup mampu mewakili proses manajerial pada pengelolaan data alumni di SMK
Negeri 2 Garut. Sistem informasi dengan teknologi RMI memungkinkan terjadinya proses
integrasi data antar masing-masing bagian yang ada pada sistem. Proses pelaporan
yang dihasilkan dengan sistem yang terintgrasi mampu menampilkan data alumni untuk
kegiatan monitoring dan evaluasi secara realtime antar bagian karena dirancang dengan
arsitektur client server. Perancangan sistem dengan arsitektur client-server dengan
mengimplementaikan java RMI mampu mewakili proses-proses service yang direquest
oleh mesin client.
Berdasarkan hasil penelitian ini akhirnya dapat ditarik kesimpulan bahwa
perancangan Sistem Informasi Pengolahan Data Alumni dengan arsitektur client-server
dengan mengimplementaikan java RMI mampu mewakili proses-proses service yang
diminta oleh mesin client. Selain itu, informasi yang dihasilkan telah mengakomodasi
kebutuhan user sebagai pengguna sistem.

Kata Kunci : Sistem, Informasi, Alumni, Objeck Oriented, Java RMI

i
KATA PENGANTAR

Assalamu’alaikum Wr. Wb.


Puji dan syukur penulis panjatkan kehadirat Allah SWT atas limpahan
rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Laporan Tugas
Akhir ini. Shalawat serta salam tak lupa penulis curahkan kepada Nabi Besar
Muhammad SAW.
Laporan ini disusun sebagai salah satu syarat kelulusan untuk menempuh
jenjang Strata Satu (S1) di Jurusan Teknik Informatika Sekolah Tinggi Teknologi
Garut (STTG). Adapun judul dari Tugas Akhir ini adalah : “PERANCANGAN
SISTEM INFORMASI PENGOLAHAN DATA ALUMNI
MENGGUNAKAN TEKNOLOGI JAVA REMOTE METHOD INVOKES
(JAVA-RMI) DENGAN METODELOGI BERORIENTASI OBJEK (Studi
Kasus di SMK Negeri 2 Garut)”.
Dalam penyusunan Laporan Tugas Akhir ini penulis banyak sekali
mendapatkan bantuan, dorongan, bimbingan dan petunjuk dari berbagai pihak,
oleh karena itu rasa terima kasih dan penghargaan yang setinggi-tingginya penulis
sampaikan kepada yang terhormat :
1. Ibunda Yeti Roswati dan Ayahanda Asep Rukruk R. tercinta, beserta Kakak
Neneng Intan Novianti, Heri dan adik tersayang Cecep Rezza MY, Haniifah
Hasnaa Husniyyah yang tak pernah lelah memberikan dorongan dan
bimbingan moril maupun materil yang tak ternilai harganya, sehingga penulis
dapat menyelesaikan laporan ini.
2. Bapak Prof. Dr. H. M. Ali Ramdhani, STP, MT., selaku Ketua Sekolah Tinggi
Teknologi Garut dan selaku pembimbing I yang telah banyak meluangkan
waktu, tenaga dan pikirannya dalam memberikan motivasi dan arahan dalam
penyusunan tugas akhir ini.
3. Bapak H. Eko Retnadi, M.Kom., selaku pembimbing II dan Pembantu Ketua
III Bidang Kemahasiswaan yang telah banyak meluangkan waktu, tenaga dan
pikirannya dalam memberikan motivasi dan arahan dalam penyusunan tugas

ii
akhir ini dan juga banyak berkerja bareng di urusan kemahasiswaan
ukhusunya BEM, HIMA dan UKM.
4. Ibu Dini Destiani SF, Dra., MT selaku Ketua Jurusan Teknik Informatika
Sekolah Tinggi Teknologi Garut.
5. Bapak Asep Deddy Supriatna, Ir., M.Kom., selaku Sekretaris Jurusan Teknik
Informatika.
6. Sahabat-sahabat seperjuangan Teknik Informatika 2006 terutama anak-anak
Lima Bunga Matahari (Susane, Iepe, Nuy, Eva, Dian na Rio) tetep tebarkan
cinta dan kasih sayangnya ya.
7. Para Senior Teknik Informatika 2005 Zamzam Bz, Nur Holisoh, Isma yang
banyak membantu pencerahan dalam penyususnan Laporan Tugas Akhir ini.
8. Para senior-senior dan junior-junior yang banyak memeberikan pelajaran
berharga selama di kehidupan organisasi kampus baik di BEM, MAPALA,
LDK maupun di HIMIF.
9. Seluruh staf dosen dan civitas akademika di Sekolah Tinggi Teknologi Garut.
10. Seluruh pihak yang membantu penyusuan laporan tugas akhir ini yang tidak
dapat disebutkan satu persatu.
11. Dan buat yang terakhir yang paling rewel, nyebelein, suka ganggu, bikin
buyar konsentrasi dalam penyusunan tugas akhir ini tapi tetep slalu nganenin
itu adalah kau LINA KARLINA my lovely.
Penulis menyadari bahwa dalam penyusunan Laporan Tugas Akhir ini
masih jauh dari kesempurnaan, oleh karena itu kritik dan saran yang membangun
demi perbaikan di masa yang akan datang selalu penulis nantikan. Akhirnya
penulis berharap semoga Laporan Tugas Akhir ini dapat bermanfaat bagi penulis
khususnya dan bagi para pembaca pada umumnya.
Amin…
Wassalamu’alaikum Wr. Wb.
Garut, September 2010

Penulis

iii
DAFTAR ISI

Halaman
ABSTRAKSI................................................................................................... i
KATA PENGANTAR .................................................................................... ii
DAFTAR ISI ................................................................................................... iv
DAFTAR GAMBAR ...................................................................................... vii
DAFTAR TABEL .......................................................................................... xi
BAB I PENDAHULUAN ............................................................................... 1
1.1. Latar Belakang Masalah............................................................................ 1
1.2. Identifikasi Masalah .................................................................................. 7
1.3. Tujuan ....................................................................................................... 8
1.4. Batasan Masalah ....................................................................................... 8
1.5. Motode Penelitian ..................................................................................... 8
1.6. Kerangka Pemikiran .................................................................................. 12
1.7. Sistematika Penulisan ............................................................................... 13
BAB II TINJAUAN PUSTAKA.................................................................... 15
2.1 Sistem Informasi Manajemen ................................................................ 15
2.1.1. Sistem .............................................................................................. 15
2.1.2. Informasi .......................................................................................... 16
2.1.3. Manajemen ...................................................................................... 17
2.1.4. Konsep Sistem Informasi Manejemen ............................................. 18
2.2 Pengembangan Sistem Berorentasi Objek (Object Oriented System
Development) ............................................................................................ 19
2.2.1 Konsep Objek................................................................................. 20
2.2.1.1 Kelas................................................................................ 20
2.2.1.2 Enkapsulasi ..................................................................... 21
2.2.1.3 Pewarisan (Inheritence)................................................... 23
2.2.2 Metodelogi Berorientasi Objek .................................................... 24

iv
Halaman
2.2.3 Pemodelan Menggunakan Unified Modelling Language
(UML) ............................................................................................ 25
2.2.3.1 Diagram pada UML ........................................................ 26
2.2.3.1.1 Class Diagram........................................................ 26
2.2.3.1.2 Use-case diagram ................................................... 28
2.2.3.1.3 Interaction Diagram ............................................... 30
2.2.3.1.4 Activity Diagram ................................................... 31
2.2.4 Analisis Berorientasi Objek .......................................................... 32
2.2.4.1 Identifikasi Aktor ............................................................ 33
2.2.4.2 Analisa Proses Bisnis ...................................................... 34
2.2.4.3 Identifikasi Use Case ...................................................... 34
2.2.4.4 Pemodelan Interaksi Menggunakan Interaction
Diagram .............................................................................. 35
2.2.4.5 Perancangan Kelas .......................................................... 35
2.2.5 Perancangan (Design) Sistem Berorientasi Objek ..................... 37
2.2.5.1 Penerapan Desain Axiom terhadap desain kelas............. 39
a. Refine atribut................................................................... 39
b.Refine method ................................................................. 39
2.2.5.2 Perancangan Lapisan Akses (Access Layer) .................. 40
2.2.5.2.1 Database Manajemen Sistem (DBMS) ........................... 40
2.2.5.2.2 Database Terdistribusi pada Arsitektur Client-Servetr ... 41
2.2.5.3 Perancangan Lapisan View (View Layer) ...................... 43
2.3 Java RMI ................................................................................................. 44
2.3.1 Arsitektur RMI ................................................................................ 45
2.3.2 Objek Remote .................................................................................. 46
2.3.3 Stub dan Skeleton ............................................................................ 46
2.3.4 Remote Exception ........................................................................... 47
2.3.5 Tahap Pemrograman Java-RMI ....................................................... 47
2.4 Interaksi Manusia dan Komputer ......................................................... 48
2.4.1 Definisi Interaksi Manusia dan Komputer....................................... 48

v
Halaman
2.4.2 Strategi Perkembangan Antar Muka................................................ 48
2.4.3 Ragam Dialoh .................................................................................. 49
BAB III ANALISIS SISTEM ........................................................................ 52
3.1. Identifikasi Aktor (Actors) ................................................................ 52
3.2 Deskripsi Aktivitas (Business process) ............................................. 56
3.3 Identifikasi Use Case .......................................................................... 57
3.4 Identifikasi Interaksi Antar Objek Menggunakan Interaction
diagrams .............................................................................................. 63
3.5 Perancangan Kelas (Classification) ................................................. 71
3.5.1 Identifikasi Kelas (Class) ................................................................. 71
3.5.2 Identifikasi Relationship .................................................................. 77
3.5.3 Identifikasi Atribut (Attributes) ....................................................... 79
3.5.4 Identifikasi Method .......................................................................... 80
BAB IV DESAIN SISTEM ............................................................................ 82
4.1 Desain Axiom Kelas ................................................................................ 82
4.1.1 Refine Atribut-atribut kelas .............................................................. 82
4.1.2 Refine Method-method kelas ............................................................. 86
4.2 Perancangan layer akses (data storage) ................................................ 88
4.2.1 Perancangan Database. ...................................................................... 88
4.2.2 Perancangan Struktur Tabel ............................................................... 89
4.2.3 Penerapan Atribut dan Tipe data....................................................... 89
4.3 Perancangan Layer View ....................................................................... 92
4.3.1 Struktur Navigasi Menu ..................................................................... 95
4.3.2 Rancangan Antarmuka (Interface) ..................................................... 96
4.3.3 Prototipe Antarmuka (Interface Prototype) ....................................... 101
BAB V KESIMPULAN DAN SARAN ......................................................... 105
5.1 Kesimpulan .............................................................................................. 105
5.2 Saran ........................................................................................................ 105
DAFTAR PUSTAKA
LAMPIRAN-LAMPIRAN

vi
DAFTAR GAMBAR

Halaman
Gambar 1.1 : Rangkaian Aktivitas Tata Usaha .............................................. 4
Gambar 1.2 : Kerangka Pemikiran ................................................................. 13
Gambar 2.1 : Model Aktivitas Sistem ............................................................ 16
Gambar 2.2 : Proses Pembentukan Informasi ................................................ 17
Gambar 2.3 : Sumber Informasi yang Dibutuhkan Setiap Tingkatan
Manajemen ............................................................................... 18
Gambar 2.4 : Contoh Objek pada Kelas Employee ........................................ 21
Gambar 2.5 : Contoh Tingkat Visibilitas Kelas pada Konsep Enkapsulasi ..... 23
Gambar 2.6 : Contoh Hierarki Super Kelas dan Sub Kelas yang
Menggambarkan Konsep Pewarisan ........................................ 24
Gambar 2.7 : Contoh Classes ........................................................................... 27
Gambar 2.8 : Contoh Class Diagrams .............................................................. 28
Gambar 2.9 : Contoh Use Case Diagrams ....................................................... 30
Gambar 2.10 : Contoh Sequence Diagrams ..................................................... 31
Gambar 2.11 : Contoh Activity Diagrams ....................................................... 32
Gambar 2.12 : Tahapan Analisis pada Pengembangan Berorientasi Objek ... 33
Gambar 2.13 : Perbedaan Aktor dengan Pengguna ..................................... 34
Gambar 2.14 : Activity Diagram (AD) Menunjukan Beberapa Aktivitas
Dilakukan Aktor ...................................................................... 34
Gambar 2.15 : Contoh Use Case Diagram Pada SistemPerpustakaan ............ 35
Gambar 2.16 : Tiga Kategori Kelas ................................................................. 36
Gambar 2.17 : Proses Perancangan Berorientasi Objek dengan Pendekatan
Unified ...................................................................................... 39
Gambar 2.18 : Sistem Database Vs Sistem File .............................................. 42
Gambar 2.19 : Sistem Client-server dengan Arsitektur Two-tier ................... 43
Gambar 2.20 : Sistem Client-server dengan Arsitektur Three-tier ................. 43

vii
Halaman
Gambar 2.21 : Contoh Desin Interface Dialog Box dengan Banyak Tab pada
Microsoft Multimedia Setup..................................................... 44
Gambar 2.22 : Arsitektur RMI ........................................................................ 45
Gambar 2.23 : Layanan Naming ..................................................................... 46
Gambar 2.24 : Stub dan Skeleton..................................................................... 46
Gambar 2.25 : Contoh Sistem Menu Dasar .................................................... 50
Gambar 2.26 : Contoh Sistem Menu Tarik ..................................................... 50
Gambar 2.27 : Contoh Dialog Berbasis Pengisian Barang ............................. 51
Gambar 2.28 : Antar Muka Berbasis Icon ...................................................... 51
Gambar 3.1 : Perbedaan User dan Aktor ........................................................ 55
Gambar 3.2 : Diagram Aktivitas Pengelolaan Data Alumni .......................... 57
Gambar 3.3 : Package pada Sistem Informasi Pengolahan Data Alumni ...... 59
Gambar 3.4 : Use Case Diagram pada Kegiatan Login dan Verifikasi
Sistem ....................................................................................... 60
Gambar 3.5 : Use Case Diagram untuk Proses Pencatatan dan Modifikasi
Data........................................................................................... 61
Gambar 3.6 : Use Case Diagram untuk Proses Melihat Laporan .................. 62
Gambar 3.7 : Use Case Diagram untuk Proses Administrasi Sistem............. 62
Gambar 3.8 : Sequence Diagram pada Package Use Case Login dan
Verifikasi Sistem ...................................................................... 63
Gambar 3.9 : Collaboration Diagram pada Package Use Case Login dan
Verifikasi Sistem ...................................................................... 64
Gambar 3.10 : Sequence Diagram pada Use Case Registrasi
Pengguna .................................................................................. 65
Gambar 3.11 : Collaboration Diagram pada Use Case Registrasi Pengguna .. 65
Gambar 3.12 : Sequence Diagram untuk Package Use Case Mencatat dan
Memodifikasi Data ................................................................... 67
Gambar 3.13 : Collaboration Diagram untuk Package Use Case Mencatat
dan Memodifikasi Data ............................................................ 68

viii
Halaman
Gambar 3.14 : Sequence Diagram untuk Package Use Case Melihat
Laporan ..................................................................................... 69
Gambar 3.15 : Collaboration Diagram untuk Package Use Case Melihat
Laporan ..................................................................................... 69
Gambar 3.16 : Sequence Diagram untuk Package Use Case Administrasi
Sistem ....................................................................................... 70
Gambar 3.17 : Collaboration Diagram untuk Package Use Case
Administrasi Sistem.................................................................. 71
Gambar 3.18 : Class Diagram untuk Sistem infomasi Pengolahan Data
Alumni ...................................................................................... 78
Gambar 3.19: Class Diagram dengan Beberapa Agregasi dan Generalisasi .. 79
Gambar 3.20 : Class Diagram dengan Atribut-atribut Kelas .......................... 80
Gambar 3.21 : Class Diagram dengan Atribut-atribut dan Method-method
Kelas ......................................................................................... 81
Gambar 4.1 : Class Diagram dengan Atribut yang Audah Dikaji Ulang
(refine) ...................................................................................... 86
Gambar 4.2 : Class Diagram dengan Method yang Sudah Dikaji Ulang
(refine) ...................................................................................... 88
Gambar 4.3 : Perancangan Koneksi Basisdata pada Sistem .......................... 89
Gambar 4.4 : Desain Tabel User pada MySQL Administrator ...................... 90
Gambar 4.5 : Desain Tabel Alumni pada MySQL Administrator ................. 91
Gambar 4.6 : Kelas Diagram yang Terdiri dari Kelas Objek, Kelas Akses
dan Kelas View......................................................................... 94
Gambar 4.7 : Struktur Menu SI Alumni ........................................................ 95
Gambar 4.8 : Rancangan Menu Utama .......................................................... 97
Gambar 4.9 : Rancangan Form Login pada LoginUI .................................... 97
Gambar 4.10 : Rancangan Form Registrasi Pengguna pada
RegistrasiPenggunaUI .............................................................. 98
Gambar 4.11 : Rancangan Form Input Data Alumni ....................................... 99
Gambar 4.12 : Interface Server Side ................................................................ 100

ix
Halaman
Gambar 4.13 : Desain Report Data Alumni ..................................................... 100
Gambar 4.14 : Desain Report Data Alumni Berdasarkan Jurusan ................... 101
Gambar 4.15 : Desain Report Data Alumni Berdasarkan Tahun Lulusan ....... 101
Gambar 4.16 : Splash Screen SI Alumni ......................................................... 102
Gambar 4.17 : Menu Utama ............................................................................. 102
Gambar 4.18 : Form Login pada LoginUI ....................................................... 103
Gambar 4.19 : Form Registrasi Pengguna pada RegistrasiPenggunaUI .......... 103
Gambar 4.20 : Form Input Data Alumni .......................................................... 104
Gambar 4.21 : Interface Server Side ................................................................ 104

x
DAFTAR TABEL

Halaman
Tebel 1.1 : Animo Masuk SMK Negeri 2 Garut Tahun 1995-2009.............. 2
Tabel 1.2 : Jumlah Kelulusan Siswa SKM Negeri 2 Garut Tahun 2003-
2008 ............................................................................................ 3
Tabel 3.1 : Indentifikasi Aktor ...................................................................... 53
Tabel 3.2 : Kandidat Kelas ............................................................................ 72
Tabel 3.3 : Kandidat Kelas dengan Kategori Kelas ...................................... 74
Tabel 3.4 : Indentifikasi Kelas Redundant .................................................... 75
Tabel 3.5 : Deskripsi Kelas ........................................................................... 77
Tabel 3.6 : Keterhubungan (relationship) antar Kelas .................................. 78
Tabel 4.1 : Refine Method-method Kelas ..................................................... 87
Tabel 4.2 : Struktur Tabel User .................................................................... 90
Tabel 4.3 : Struktur Tabel Alumni ................................................................ 91
Tabel 4.4 : Perancangan Hak Akses Aktor.................................................... 96

xi
BAB I
PENDAHULUAN

1.1 Latar Belakang


Pesatnya perkembangan ilmu pengetahuan dan teknologi dewasa ini
khususnya teknologi informasi yang berbasis komputer dirasakan telah berperan
penting dalam berbagai aspek kehidupan karena komputer merupakan salah satu
alat bantu manusia yang digunakan dalam proses pengolahan data, baik di bidang
pendidikan, kesehatan, instansi pemerintah, swasta maupun badan usaha lainnya.
Faktor utama yang mendukung dari penggunaan komputer oleh banyak instansi
pemerintah maupun swasta lainnya yaitu untuk menghasilkan pengolahan data
atau informasi dengan cepat, tepat dan akurat.
Kemajuan pesat teknologi komputer didalam bidang ilmu pengetahuan,
pendidikan, bisnis, administrasi perkantoran, komunikasi dan lain-lain kegiatan
dalam kehidupan sehari-hari akan memegang peranan penting yang cukup besar
di negara kita ini dalam proses pembangunan secara menyeluruh.
Di Indonesia ditemukan banyak perusahaan-perusahaan yang
menggunakan teknologi komputer. Peranan komputer dapat membantu
memecahkan permasalahan manajemen seperti telah dibuktikan pemakaiannya di
negara-negara maju. Peranan komputer didalam pemecahan masalah ini sangat
penting dalam mengolah data.
Sehubungan dengan pentingnya data untuk mendapatkan informasi yang
akurat dari segala bidang, maka dalam hal ini penulis membuat suatu
permasalahan dalam bidang pendidikan terutama dalam hal pengolahan data
informasi administrasi pendidikan yang mencakup berbagai masalah dalam hal ini
mengenai data siswa alumni. Sumber data yang penulis ambil adalah pada
Sekolah Menengah Kejuruan Negeri 2 Garut.
STM Negeri Garut berdiri sejak tahun 1965. Seiring perkembangannya
sekolah menengah kejuruan ini melakukan pergantian nama sekolah pada tahun
1978, Pada saat ini, salah satu sekolah bertaraf internasional di Kabupaten Garut
tersebut menggunakan nama barunya yaitu SMK Negeri 1 Tarogong Kaler Garut

1
2

pada tahun 2002 hingga pada tahun 2009 sesuai dengan Peraturan Bupati Garut
Nomor 446 Tahun 2008 Tentang Penetapan Nama-nama Sekolah Menengah
Pertama Negeri, Sekolah Menengah Atas Negeri dan Sekolah Menengah
Kejuruan Negeri di Lingkungan Pemerintah Kabupaten Garut, dimana SMK
Negeri 1 Tarogong Kaler Garut secara resmi (Formal Yuridis) berubah nama
menjadi SMK Negeri 2 Garut.
SMK Negeri 2 Garut yang sekarang bertempat di Jalan Suherman No. 90
Tarogong Kaler Garut yang memiliki 6 program keahlian yaitu :
1. Teknik Gambar Bangunan
2. Teknik Ketenagalistrikan
3. Teknik Audio Video
4. Teknik Motor Otomotif
5. Teknik Geologi Pertambangan
6. Teknik Multimedia
7. Teknik Broadcasting
Perkembangan animo masyarakat terhadap SMK Negeri 2 Garut ini sangat
pesat hal ini dapat di buktikan pada perkembangan siswa pada SMK Negeri 2
Garut dari tahun 1995 sampai dengan 2009 dapat dilihat pada tabel berikut:
Tabel 1.1 Tabel animo siswa masuk SMK Negeri 2 Garut Tahun 1995-2009

Sumber : Profil SMK 2 Garut 2008-2009


3

Begitu pula dengan perkembangan jumlah kelulusan dari tahun ke tahun,


jumlah siswa yang lulus dari SMK Negeri 2 Garut terus berubah. Angka
perubahan jumlah siswa yang lulus dari SMK Negeri 2 Garut tahun 2003-2008
dapat terlihat pada tabel data jumlah kelulusan dan diagram sebagai berikut
Tabel 1.2 Data Jumlah Kelulusan Siwa SMK Negeri 2 Garut Tahun 2003-2008

Sumber : Profil SMK 2 Garut 2008-2009


Berdasarkan tabel tersebut di atas, diketahui bahwa rata-rata kelulusan
siswa SMK Negeri 2 Garut diatas 98% sehingga dengan jumlah kelulusan dan
jumlah siswa yang terus meningkat dari tahun ketahun akan berpengaruh terhadap
jumlah alumni. Dengan banyaknya jumlah data alumni SMK Negeri 2 Garut yang
sejak pendirian tahun 1965 sampai dengan sekarang terhitung lebih dari 10.192
alumni. Pada saat ini SMK Negeri 2 Garut dalam melakukan pengolahan data
alumni masih bersifat manual yaitu Pada proses pencatatan data alumni, yang
sedang berjalan saat ini masih terpaku pada buku induk dan belum ada buku
khusus yang mencatat tetang data alumni. Oleh karena itu masalah yang sering
terjadi adalah pengklasifikasian data alumni belum rapi, pencarian data dan
informasi dibutuhkan waktu lama, serta penggunaan simpanan konvensional
(dalam hal ini kertas dan buku) rentan terhadap kerusakan data yang diakibatkan
oleh cuaca dan kondisi lingkungan tempat penyimpanan berkas tersebut.
Kebutuhan akan data dan informasi alumni sendiri sangat banyak, baik itu
bagi alumninya sendiri, bagi sekolah maupun bagi pihak luar. Misalnya bagi
alumninya sendiri yaitu pencarian data dan informasi berupa biodata dan nilai-
nilai. Bagi sekolah misalnya untuk kebijakan yang sifatnya strategis dalam
menentukan perubahan atau pengalihan program studi karena dengan adanya data
4

alumni yang terorganisir dengan baik sekolah dapat mengetahui banyak atau
sedikitnya jurusan yang diminati masyarakat khususnya bagi pihak luar dalam hal
ini perusahan-perusahan yang nantinya akan menampung para alumni.
Sedangakan bagi pihak luar dalam hal ini perusahan seringkali meminta data
alumni yang sesuai dengan kualifikasi perusahaan tersebut secara cepat dan
akuran yang nanatinya akan dijadikan karyawannya. Maka dari itu pengelolaan
data yang semula bersifat manual tersebut akan dirubah menjadi komputerisasi,
sehingga pengelolaan datanya diharapkan akan lebih efektif, efisien dan hasilnya
menjadi lebih akurat. Sedangkan penyimpanan data yang tadinya bersifat
konvensional akan diganti dengan penyimpanan data elektronik (Hard Disk)
dengan data yang dikemas dalam sebuah basis data (Data Base), sehingga dengan
demikian proses pencarian, penambahan dan pengurangan akan lebih mudah dan
cepat dilakukan.
Kekurangan dan kelemahan yang terdapat pada prosedur kerja dapat
berdampak pada lambatnya pelayanan administrasi. Adapun pengertian dari
administrasi adalah sebagai berikut :

“Administrasi dalam arti sempit adalah kegiatan penyusunan dan


pencatatan data dan informasi secara sistematis dengan tujuan untuk
menyediakan keterangan serta memudahkan memperolehnya kembali
secara keseluruhan dan dalam satu hubungan satu sama lain. Administrasi
dalam arti sempit ini sebenarnya lebih tepat disebut dengan tata usaha”,
(Haryadi, 2009).

Gambar 1.1 Rangkaian Aktivitas Tata Usaha,


(Silalahi, 2009).
5

Berdasarkan pengertian administrasi di atas, sistem informasi pengolahan


data alumni yang berada di SMK Negri 2 Garut, termasuk belum dapat mencapai
tujuannya. Hal tersebut terlihat jelas pada prosedur yang sedang berjalan masih
memiliki permasalahan. Oleh karena itu, untuk mengatasi permasalahan tersebut
maka perlu dibuat sebuah sistem baru berbasis teknologi komputer, yaitu SIM.

“Sistem Informasi Manajemen (SIM) adalah sebuah sistem informasi pada


level manajemen yang berfungsi untuk membantu perencanaan,
pengendalian, dan pengambilan keputusan dengan menyediakan resume
rutin dan laporan-laporan tertentu”, (Fatta, 2009).

Menurut pendapat Davis (1995) pada (Rochaety, 2006), sistem informasi


manajemen terdiri dari elemen-elemen berikut : Perangkat keras komputer
(hardware), Perangkat lunak (software), Database, Prosedur dan Petugas
operasional.
Secara teori, komputer tidak harus digunakan didalam SIM, tetapi
kenyataannya tidaklah mungkin SIM yang komplek dapat berfungsi tanpa
melibatkan elemen komputer. Lebih lanjut, bahwa SIM selalu berhubungan
dengan pengolahan informasi yang didasarkan pada komputer (computer-based
information processing), (Fatta, 2009).
Oleh karena itu diperlukan pembaharuan dalam bidang pengolahan data
alumni, sehingga pelayanan yang diberikan dapat lebih efesien dan efektif guna
untuk meningkatkan standar mutu pelayanan yang diberikan. Dengan hadirnya
sistem yang baru, diharapkan pelayanan akan semakin optimal agar dapat
memenuhi semua kebutuhan bagi pihak-pihak yang bersangkutan, serta dapat
menghasilkan suatu kebijakan yang baru dalam hal administrasi dan tujuan dari
dapat dicapai sesuai dengan keinginan semua pihak.
Dalam menganalisis perangkat lunak atau sistem informasi diperlukan
suatu pendekatan yang dapat digunakan dalam memecahkan masalah, diantaranya
adalah pendekatan klasik atau konvensional, pendekatan prosedural, dan
pendekatan berorientasi objek.
Diantara semua pendekatan, pendekatan yang terbaru dan popular saat ini
yaitu pendekatan berorientasi objek. Pendekatan ini merupakan suatu teknik yang
6

memusatkan rancangan pada objek dan antar muka yang dihasilkan. Objek adalah
entity yang berisi data atau variabel dan tingkah laku. Data atau variabel yang
menggambarkan sifat atau keadaan objek dalam dunia nyata (real world)
didefiniskan sebagai attribute, sedangkan tingkah laku yang menggambarkan
aksi-aksi yang dimiliki objek didefinisikan sebagai method.
Metode analisis yang berorientasi objek diantaranya Unified Approach
(UA) dari bukunya Bahrami (1999). Unified Approach (UA) adalah suatu
metodologi pengembangan sistem berbasis objek yang menggabungkan proses
dan metodologi yang telah ada sebelumnya dan menggunakan Unified Modelling
Languge (UML) sebagai standar pemodelannya. Proses dan tahapan yang ada
dalam Unified Approach (UA) merupakan proses-proses terbaik yang diambil
dari metode objek yang telah diperkenalkan oleh Booch, Rumbaugh, dan
Jacobson. Tahap Analisis dalam Unified Approach (UA) ditujukan untuk
mengidentifikasi kelas-kelas yang terdapat dalam sistem.
Untuk melanjutkan ketahap desain maka di perlukan juga bahasa
pemograman yang berorientasi objek. Dalam hal ini penulis mencoba merancang
dengan menggunakan bahasa pemrograman Java karena bahasa pemograman Java
merupakan salah satu bahasa pemrograman yang berorientasi objek dan juga Java
merupakan develpment tool yang fleksibel dan powerful. Salah satu
keunggulannya adalah platform independence. Maksud dari platfrom
independence adalah program yang kita tulis tidak tergantung pada sistem operasi
saat program tersebut dibuat. Java dibangun dengan kekuatan C++. Java
mengambil fitur-fitur terbaik dari C++ dan menghilangkan permasalahan yang
ada. Java memiliki fitur garbage collection (menajemen memori secara otomatis),
multithreading (kemampuan untuk melakukan sesuatu lebih dari satu pada saat
bersamaan) dan keamamanan yang lebih baik. Sehinggan Java menjadi
pemograman yang sederhana, elagan, powerful dan mudah digunakan.
Bersamaan dengan semakin berkembangnya teknologi informasi dan
komunikasi, perancangan Sistem informasi yang terdistribusi, dan terintegrasi
yang dapat memungkinkan terciptanya keterpaduan-keterpaduan di atas dapat
dibangun menggunakan teknologi jaringan berbasis client server. Pada arsitektur
7

client server terdapat dua jenis aplikasi, yaitu aplikasi server dan aplikasi client.
Instruksi-instruksi pengolah data disimpan di aplikasi server, sedangkan aplikasi
client hanya memuat instruksi-instruksi yang berkaitan dengan pembuatan user
interface. Komunikasi yang terjadi antara aplikasi server dengan aplikasi client
terjadi ketika aplikasi client me-request instruksi yang ada pada aplikasi server.
Data diinput di client , lalu client meminta aplikasi di server dan mengirimkan
data yang diinput user ke database di server untuk dimanipulasi atau diolah oleh
aplikasi yang berada di server dan hasilnya akan dikembalikan ke client.
Perancangan aplikasi yang terintegrasi dan berbasis client server salah satunya
dapat menggunakan suatu package dalam bahasa pemograman Java yang dikenal
dengan istilah Remote Methode Invokes (RMI). Dengan package ini suatu sistem
memungkinkan untuk dibangun dalam satu kesatuan subsistem yang terintegrasi
secara sistematis dan terdistribusi (ditributed).
Pada karya ilmiah ini penulis mencoba menerapkan konsep-konsep diatas
pada perancangan Sistem Informasi Pengelolaan Data Alumni di SMK Negeri 2
Garut dengan judul karya Ilmiah “PERANCANGAN SISTEM INFORMASI
PENGOLAHAN DATA ALUMNI MENGGUNAKAN TEKNOLOGI JAVA
REMOTE METHOD INVOKES (JAVA-RMI) DENGAN METODELOGI
BERORIENTASI OBJEK (Studi Kasus di SMK Negeri 2 Garut)”.

1.2 Identifikasi Masalah


Berdasarkan latar belakang masalah yang dikemukakan di atas, terdapat
beberapa permasalahan-permasalahan yang dapat diidentifikasi. Adapun
permasalahan tersebut yaitu pada proses pencatatan data alumni masih tepaku
pada buku induk. Oleh karena itu masalah yang sering terjadi adalah
pengklasifikasian data alumni belum rapi, pencarian data dan informasi
dibutuhkan waktu lama, serta penggunaan simpanan konvensional (dalam hal ini
kertas dan buku). Yang menyebabkan :

a. Proses pencarian data alumni relatif lama.


b. Sekolah kesulitan mengidentifikasi program studi apa yang paling
banyak di butuhkan di dunia kerja.
8

c. Pihak lain dalam hal ini perusahaan kesulitan mendapatkan infromasi


yang cepat dan akurat untuk mendapatkan tenaga kerja yang sesuai
dengan kualifikasi yang dibutuhkan.

1.3 Tujuan
Adapun yang menjadi tujuan dari penelitian ini adalah mengembangkan
sebuah sistem informasi pengolahan data alumni yang berbasis komputer dengan
menggunakan metodelogi berorientasi objek, sehingga dengan adanya sistem
informasi tersebut diharapkan dapat menyelesaikan permasalahan yang
berhubungan dengan pengolahan data alumni di SMK Negeri 2 Garut.

1.4 Batasan Masalah


Adapun batasan masalah dalam tugas akhir ini adalah sebagai berikut :
a. Sistem Informasi yang dibuat adalah sistem yang didasarkan pada
aktifitas bisnis pengolahan data alumni di SMK Negeri 2 Garut. Segala
kegiatan di luar sistem dan pembuatan keputusan tidak dibahas.
b. Penggunaan metode pengembangan sistem menggunakan Unified
Approach (UA) yang terdiri pada tahap analisis (tidak sampai tahap
pemeriksaan) serta perancangan (tidak sampai tahap pengujian).
c. Tahap analisis dan perancangan sistem menggunakan bahasa
pemodelan Unified Modelling Language (UML).
d. Tahap proses desain, pada karya tulis ini akan dirancang sebuah
prototype, tidak berupa program secara utuh melainkan hanya pada
tahap perancangan form pengisian data alumni saja yang dirancang
untuk menggambarkan implementasi Java RMI pada perancangannya.

1.5 Metode Penelitian


1. Metode Pengumpulan data
Adapun metode pengumpulan data yang dilakukan adalah sebagai
berikut:
a. Wawancara
9

Wawancara dilakukan terhadap stakeholder yang terkait dengan


sistem.

b. Observasi lapangan
Selain wawancara, penulis juga mengamati secara langsung
bagaimana setiap prosedur berlangsung, sehingga dapat diketahui
aktifitas bisnisnya yang nantinya akan dimodelkan.

c. Studi kepustakaan
Selain itu, penulis juga mempelajari petunjuk ataupun referensi
berupa buku, dokumen, pedoman ataupun formulir tentang
bagaimana proses maupun prosedur pada kegiatan akademik
dilakukan sebagai bahan untuk melakukan analisis dan desain.

2. Metode Pengembangan Sistem


A. Metode Analisis Sistem
Dalam menganalisis sistem, penulis menggunakan metodologi Unified
Approach (UA) sebagai salah satu metodologi yang terdapat pada
konsep pengembangan sistem berorientasi objek. Adapun tahapan dari
metodologi Unified Approach (UA) adalah sebagai berikut:
a. Mengidentifikasi users/actors yang akan menggunakan sistem.
b. Memodelkan business process menggunakan Activity diagrams.
c. Mengidentifikasi Use Case menggunakan Use-case diagrams
d. Mengembangkan Use Case yang telah teridentifikasi dengan
Interaction diagrams, diantaranya menggunakan:
1). Sequence diagrams
2). Collaboration diagrams
e. Membuat klasifikasi menggunakan Class diagrams berdasarkan
Use-case diagrams dan Interaction diagrams dengan langkah-
langkah sebagai berikut:
1). Mengidentifikasi clasess
10

2). Mengidentifikasi relationships


3). Mengidentifikasi attributes
4). Mengidentifikasi methods

B. Metode Desain Sistem


Pada tahapan desain sistem pada penelitian ini penulis menggunakan
metodologi design Unified Approach (UA) yang terdiri dari beberapa
tahapan di bawah ini :
a. Menerapkan desain Axiom pada design Class, beserta atribut-
atributnya, method, asosiasi, struktur dan protokolnya.
1). Memperbaiki dan melengkapi Diagram Class diagram
dengan manambahkan rinciannya. Tahap ini meliputi
aktivitas-aktivitas di bawah ini :
♦ Memperbaiki Atribut
♦ Mendesain method dan protokol
♦ Memperbaiki asosiasi antar kelas
♦ Memperbaiki hirarki kelas
2). Iterasi dan perbaikan ulang

b. Mendesain akses layer


1). Membuat Mirror class.
2). Mengidentifikasi Class relationship pada layer akses.
3). Menyederhanakan beberapa kelas beserta relasinya.
Tujuanya untuk mengeliminasi kelas dan struktur yang
sama (redundant)
♦ Kelas yang redundant : menghilangkan dua atau
lebih kelas yang sama pada kegiatan translate
request dan translate result. Menyederhanakan
dengan memilih salah satu dan mengelimunasi kelas
yang lain.
11

♦ Kelas Method : meninjau kembali kelas-kelas


berada pada satu atau dua method yang
memungkinkan dikombinasikan atau dieleminasu
denagn kelas yang lain.
4). Iterasi dan perbaikan kembali

c. Mendesain tampilan layer kelas


1). Mendesain interface untuk level macro, mengidentifikasi
tampilan layer beberapa objek.
2). Mendesain interface untuk level micro, dengan
mengikutsertakan aktivitas-aktivitas objek.
♦ Mendesain tampilan layer objek dengan
menerapkan desain axiom dan Corollaries.
♦ Membangun prototype dari tampilan layer interface.
3). Mengecek kebutuhan user
4). Iterasi dan perbaikan ulang

d. Iterasi dan perbaikan keseluruhan desain. Menerapkan kembali


desain axiom (jika diperlukan) dan tahapan-tahapan sebelumnya.
12

1.6 Kerangka Pemikiran


Akses data dan Informasi yang dilakukan secara Manual mengakibatkan
dampak yang cukup signifikan pada kualitas manajemen suatu perusahaan atau
lembaga. Proses yang manual seperti inilah yang selama ini menjadi current
system di SMK Negeri 2 Garut khususnya pada Pengolahan Data Alimni. Oleh
karena itu, diperlukannya sebuah Sistem Informasi yang dapat menggantikan
sistem manual tersebut sehingga akses pada data dan informasi lebih cepat, tepat
dan akurat. Dengan begitu, kualitas manajemen data dan informasi lebih
berkualitas. Untuk lebih jelasnya, berikut ini adalah gambaran kerangka pemikiran
perancangan Sistem Informasi Pengolahan Data Alumni SMK Negeri 2 Garut:

SISTEM YANG BERJALAN:


• Proses pencarian data alumni lambat
• Sekolah kesulitan mengidentifikasi data alumni
• Pihak lain kesulitan mendapatkan informasi yang
cepat dan akurat mengenai data alumni

Data, Fakta dan OBJECT ORIENTED ANALYSIS (OOA):


Studi Literatur • Identifikasi Aktor
• Pengembangan Diagram Use Case dan Diagram
Aktifitas
• Pengembangan Diagram Interaksi
• Identifikasi Kelas-kelas, relasi, atribut dan method
Tantangan • Pemeriksaan terhadap tahap sebelumnya
dan Peluang

OBJECT ORIENTED DESAIN (OOD):


• Perancangan kelas, asosiasi, metode dan atribut
Visi, Misi • Menyaring (Memeriksa) UML Class Diagram
dan Strategi • Perancangan Layer Akses dan Layer Antarmuka
• Pengujian

SISTEM YANG AKAN DATANG BERBASIS


KOMPUTER

Gambar 1.2 Kerangka Pemikiran


13

1.7 Sistematika Penulisan


Agar pembahasan pada penyusunan Tugas Akhir ini tersusun
secara sistematis sehingga mudah dipahami oleh pembaca, maka penulis
membaginya ke dalam beberapa Bab dengan Sistematika sebagai berikut :

BAB I PENDAHULUAN

Bab ini akan di bahasa mengenai deskripsi atau gambaran yang


ada pada sistem yang sedang berjalan dengan ruang lingkup
permasalahan, metodologi yang nantinya akan dipakai dan tujuan
akhir yang di harapkan.

BAB II TINJAUAN PUSTAKA

Bab ini akan di bahasa mengenai teori dari berbagai sumber yang
digunakan sebagai referensi baik didalam kegiatan analisis
maupun perancangan untuk menyelesaikan permasalahan dari
studi kasus yang dipilih. Serta memuat konsep-konsep dasar yang
menjadi guidlines sehingga aktivitas analisis maupun desain
sesuai dengan aturan-aturan yang baku.

BAB III ANALISIS SISTEM

Bab ini akan di bahasa mengenai analisis yang menggambarkan


dari current systems dengan menggunakan metodologi Object
Oriented yang merupakan bagian dari konsep pengembangan
sistem berorientasi objek. Pada Bab ini dibahas mulai dari
mengidentifikasi Users/Actors, Memodelkan Bussines proses,
Mengidentifikasi dan mengembangkan Uses case, hingga
membuiat klasifikasi berdasarkan kelas menggunakan Use case
diagram. Selian itu, pada Bab ini dibahas pula mengenai
teknologi Java RMI.
14

BAB IV DESAIN SISTEM

Bab ini akan di bahasa mengenai perancangan sistem kesimpulan


yang dapat ditarik dari pembahasan dan merupakan hasil dari
penyelesaian permasalahan serta saran-saran dari penulis yang
berkaitan dengan kegiatan analisis menggunakan metodologi
berorientasi Objek serta perancangan Sistem Informasi
terdistribusi menggunakan Teknologi Java RMI.

BAB V KESIMPULAN DAN SARAN

Bab ini akan di bahasa mengenai kesimpulan yang dapat ditarik


dari pembahasan dan merupakan hasil dari penyelesaian
permasalahan serta saran-saran dari penulis yang berkaitan
dengan kegiatan analisis menggunakan metodologi berorientasi
Objek, serta proses perancangannya yang merupakan
Implementasi teknologi Java RMI.

DAFTAR PUSTAKA

Berisi kumpulan literature, referensi serta rujukan yang dipakai


dalam menyusun penelitian tugas akhir ini.
BAB II
TINJAUAN PUSTAKA

Pada bab ini akan dilakukan pengamatan pendahuluan dari sistem yang
akan dirancang, pengamatan pendahuluan meliputi studi kepustakaan (library
research). Studi kepustakaan dilakukan untuk meninjau teori-teori dari literatur
mengenai konsep-konsep, metodelogi, pendekatan, serta tahap-tahap penelitian
yang akan dilakukan pada fase-fase selanjutnya.

2.1 Sistem Informasi Manajemen


2.1.1 Sistem
Didalam berbagai aktivitas, apapun aktivitasnya selalu terdapat
istilah ”sistem”, dimana sistem ini merupakan sebuah lingkungan
yang mengarahkan sebuah aktivitas agar tetap berada pada kondisi
terkontrol. Sehingga dengan demikian, aktivitas yang dilakukan dapat
memberikan sebuah manfaat dan output yang diinginkan. Terdapat
beberapa pendefinisian sistem dilihat dari berbagai sudut pandang,
diantaranya sebagai berikut:
Dalam mendefinisikan sistem, terdapat dua kelompok
pendekatan, yaitu pendekatan sistem yang menekankan pada prosedur
yang digunakan dalam sistem. Pendekatan ini medefinisikan sistem
sebagai berikut :
“Sistem adalah suatu jaringan kerja dari prosedur-prosedur yang
berhubungan, berkumpul bersama-sama untuk melakukan suatu
kegiatan atau untuk menyelesaikan suatu sasaran tertentu” (Hartono,
1999).
Pendekatan yang kedua lebih menekankan pada elemen atau
komponen penyusun sistem. Pendekatan ini mendefinisikan sistem
sebagai berikut :
“Sistem adalah kumpulan dari elemen-elemen yang saling berinteraksi
untuk mencapai satu tujuan tertentu” (Hartono, 1999).

15
16

Sedangkan pendapat Kristanto, sebuah sistem dapat


didefinisikan sebagai berikut :
Sistem adalah “kumpulan dari elemen-elemen yang beriteraksi untuk
mencapai suatu tujuan tertentu” (Kristanto, 1999).
Secara umum, definisi sebuah sistem dapat dilihat pada gambar
dibawah berikut:

Gambar 2.1 Model aktivitas sistem (Amsyah, 1997)

2.1.2 Informasi
Tidak berbeda halnya dengan pendefinisian sebuah sistem,
pendefinisian informasipun memiliki pandangan yang berbeda dari
setiap orang, akan tetapi memiliki esensi yang sama. Hal itu dapat
ter;ihat dari pendefinisian informasi berikut:
Informasi didefinisikan sebagai berikut :

Informasi adalah “data yang diolah menjadi bentuk yang lebih berguna
dan lebih berarti bagi yang menerimanya” (Kristanto, 1999).

Informasi adalah “adalah data yang telah diolah menjadi suatu bentuk
yang berarti bagi penerimanya dan bermanfaat dalam pengambilan
keputusan pada saat ini ataupun saat mendatang” (Hartono, 1999).

Secara garis besar, konsep dasar pembentukan sebuah


informasi yang merupakan hasil dari pengolahan data dapat terlihat
pada gambar berikut:
17

Gambar 2.2 Proses pembentukan informasi (Amsyah, 1997)

2.1.3 Manajemen
Secara luas orang sudah banyak mengenal tentang istilah
manajemen, hakikat manajemen secara relatif, yaitu bagaimana sebuah
aktivitas bisa berjalan lebih teratur berdasarkan prosedur dan proses.
Terry (1997) pada buku Rochaety (2006) secara umum
dikatakan bahwa manajemen merupakan proses yang khas yang terdiri
dari tindakan-tindakan perencanaan, pengorganosasian, penggerakan,
dan pengawasan untuk mencapai tujuan yang telah ditetapkan melalui
pemanfaatan sumber daya manusia maupun sumber daya lainnya.
Definisi lain menyatakan bahwa manajemen merupakan proses
perencanaan, pengorganisasian, kepemimpinan, dan pengawasan antar
anggota dengan menggunakan seluruh sumber daya organisasi untuk
mencapai tujuan yang telah ditetapkan (Stoner, 1998) dalam
(Rochaety, 2006).
Pada dasarnya dalam proses penggunaan sistem informasi,
seorang manajer sebelumnya harus memahami posisi dari
hirarki/tingkatan manajemen dimana dia berada, sebagaimana
dikemukakan (McLeod, 2001) dalam (Rochaety, 2006) bahwa
tingkatan manajerial terdiri dari Strategic Planning Level (Top
Management), Management Control Level (Middle Management), dan
Operational Control Level (Lower management). Posisi tersebut sangat
berpengaruh terhadap sumber dan bentuk informasi yang dibutuhkan
oleh seorang manajer (pimpinan) sebagai bahan proses pengambilan
keputusan. Sumber informasi dan bentuk informasi yang dibutuhkan
18

oleh seorang manajer berdasarkan hirarkinya dapat dilihat dalam


gambar di bawah ini :

Gambar 2.3: Sumber informasi yang dibutuhkan setiap tingkatan


manajemen (Rochaety, 2006)

2.1.4 Konsep Sistem Informasi Manajemen


Sistem informasi manajemen (manajement information
system atau sering dikenal dengan singkatannya MIS) merupakan
sistem berbasis komputer yang mengoptimasi kumpulan, transfer, dan
presentasi informasi yang dibutuhkan oleh suatu organisasi yang
mengintegrasikan struktur basisdata dengan aliran informasi (Long,
1997).
Karakteristik dari suatu SIM meliputi hal-hal dibawah ini :
• An MIS supports the data processing functions of
transaction handling and record keeping.
• An MIS uses an integrated database and suports a
variety of functional areas.
• An MIS provides operational, tactical, and strategic
level managers with easy access to timely but, for the
most part, structured information.
• An MIS is somewhat flexible and can be adapted to
meet changing information needs of the organization.
• An MIS provides an envelope of system security that
limits access to authorized personnel (Long, 1997).

Davis (1995) dalam Rochaety (2006) menjelaskan bahwa


sistem informasi manajemen merupakan sebuah sistem manusia dan
19

mesin yang terpadu untuk menyajikan informasi guna mendukung


fungsi operasi, manajemen, dan proses pengambilan keputusan dalam
sebuah organisasi. (Rochaety, 2006).
Laudon dan Laudon (2000) dalam bukunya Management
Information Systems: Managing The Digital Firm :
“A Management Information system is an integrated user-
machine system for providing information to support the operations,
management analysis, and decision making functions.”

2.2 Pengembangan Sistem Berorentasi Objek (Object Oriented System


Development)
Pengembangan software adalah hal yang dinamis dan selalu beriringan
dengan perubahan. Metodelogi yang digunakan di masa yang akan dating
tidak menutup kemungkinan jauh berbeda dengan metodelogi yang ada saat
ini. Salah satu faktornya adalah perubahan pemahaman akan sebuah konsep
pada proses perancangannya.
Saat ini banyak terdapat metodelogi yang diterapkan pada proses
pengembangan sebuah sistem. Pengembangan sistem (system development)
menyangkut seluruh aktivitas yang ada pada perancangan sebuah sistem
informasi. Aktivitas pada System development terdiri dari analisis sistem,
pemodelan, desain/perancangan, impelementassi, testing dan maintenanace.
(Bahrami, 1999)
Pengembangan berorientasi objek merupakan model yang berbeda
dengan pendekatan pada model pengambangan tradisional, berdasarkan fungsi
dan prosedurnya. Dengan kata lain, pengembangan sistem berorientasi objek
adalah suatu cara dalam mengembangangkan software dengan membangun
objek yang dengan mudah ditempatkan, dimodifikasi, dan digunakan kembali.
Dalam sistem berorientasi objek, software merupakan kumpulan dari beberapa
objek-objek tersembunyi yang membungkus suatu data yang memiliki fungsi
sebagaimana fungsinya pada dunia nyata. Setiap objek memiliki atribut (data)
20

dan method (fungsi). Objek-objek tersebut kemudian dikelompokan ke dalam


beberapa kelas (class) (Bahrami, 1999).

2.2.1 Konsep Objek


Istilah objek (object) secara formal pertama kali digunakan
pada bahasa pemrogaraman Simula, objek merupakan ciri khas dari
program Simula untuk mensimulasikan beberapa hal dari dunia nyata.
Istilah objek berarti suatu kombinasi data dan logic yang
merepresentasikan suatu hal pada dunia nyata (Bahrami, 1999).
Contoh Objek Mobil, Mobil dapat menjadi objek pada suatu
pemrograman computer, yang menjadi “data” adalah nama mobil,
warna mobil, plat nomor, harga dll. Sedangkan yang menjadi “logic”
pada objek mobil adalah kumpulan printah pada objek mobil misalkan
maju, berhenti, putar balik dll.

2.2.1.1 Kelas
Objek-objek pada pengembangan software berorientasi objek
kemudian dekelompokan dalam beberapa kelas (Class). Class
digunakan untuk memisahkan suatu objek dari objek yang lain, dengan
kata lain kelas (class) merupakan satu kesatuan objek yang memiliki
struktur dan perilaku (behavior) yang sama/serupa. Setiap kelas
memiliki properties/state/attribute dan prosedur/behavior/method.
(Bahrami, 1999)
21

Gambar 2.4 : Contoh Objek pada Kelas Employee


(Bahrami, 1999)

2.2.1.2 Enkapsulasi
Enkapsulasi adalah pembungkusan objek bersama metode-
metodenya dengan tingkat visibilitas tertentu. Manfaat utama
enkapsulasi adalah penyembunyian rincian-rincian implementasi dari
objek lain. Bagian internal objek mempunyai ketampakan terbatas
dibanding bagian eksternal objek. Penyusunan seperti ini menjaga agar
objek terlindung dari pengaksesan oleh objek lain yang tidak
diinginkan.(Wijono, 2004)
Bagian eksternal objek sering disebut antarmuka objek karena
berlaku sebagai antarmuka terhadap objek lain. Objek lain harus
berkomunikasi dengan objek tersebut hanya melalui antarmuka,
sehingga bagian internal objek dapat dilindungi dari gangguan luar.
Dikarenakan objek luar tidak bisa mengakses implementasi internal
objek, maka implementasi internal objek dapat berubah tanpa
mempengaruhi bagian-bagian yang lain. (Wijono, 2004)
Konsep enkapsulasi ini diimplementasikan oleh kelas. Kelas
membungkus atribut dan metode-metode yang diperlukan untuk
mendeskripsikan objek.
22

Pada konsep enkapsulasi, terdapat tiga macam tingkat visibilias


yang dapat membatasi serta melindungi objek dari akses oleh objek
lain yang tidak diinginkan, yaitu public, protected dan private. Pada
implementasinya tingkat visibilitas ini diterapkan pada metode-metode
dari objek. (Wijono, 2004)
Tingkat visibilitas public memungkinkan sembarang objek dari
kelas manapun dapat mengakses metode-metode dan atribut-atribut
yang dimiliki oleh suatu objek dari suatu kelas. Metode-metode dan
atribut-atribut yang memiliki tingkat visibilitas public inilah yang
menjadi antarmuka objek.
Tingkat visibilitas yang kedua adalah protected. Metode
dengan tingkat visibilitas protected hanya bisa diakses oleh kelas-kelas
lain yang terdapat dalam satu paket beserta kelas turunannya. Kelas-
kelas yang terdapat diluar paket tidak bisa mengakses metode-metode
dan atribut-atribut dengan tingkat visibilitas protected yang dimiliki
oleh suatu kelas pada paket yang berbeda.
Tingkat visibilitas yang ketiga adalah private. Metode dengan
tingkat visibilitas private hanya bisa diakses oleh objek dimana method
tersebut berada. Metode dengan tingkat visibilitas private ini benar-
benar tidak bisa diakses oleh objek yang lain, baik objek-objek yang
satu paket, maupun objek-objek yang berbeda paket. Paket merupakan
kumpulan kelas yang memiliki tema sejenis. Hierarki paket mirip
dengan folder-folder atau direktori yang di dalamnya berisi file-file
atau folder-folder lain. File-file ini bisa dianalogikan sebagai kelas,
sedangkan folder bisa dianalogikan sebagai paket. (Wijono, 2004)
23

Frame
header : FrameHeader
uniqueID : Long

addM essage()
setCheckSum()
encrypt()

Gambar 2.5 : Contoh tingkat visibilitas kelas pada konsep enkapsulasi


(Booch, et. al, 1999)

2.2.1.3 Pewarisan (Inheritence)


Pewarisan adalah penciptaan kelas baru dengan mewarisi
karakteristik kelas yang telah ada ditambah karakteristik unik kelas
baru itu. Pewarisan adalah mekanisme ampuh yang memungkinkan
kelas mewarisi fungsionalitas kelas yang telah ada. Dengan pewarisan
kita dapat menciptakan kelas umum yang mendefinisikan perilaku
umum dari objek-objek. Kelas ini kemudian dapat diwarisi kelas-kelas
lain. Dengan pewarisan dimungkinkan penciptaan klasifikasi
berhierarki. Artinya, kedudukan kelas yang diwarisi dapat
digambarkan menempati posisi yang lebih tinggi dari pada kelas-kelas
yang mewarisi sehingga tercipta sebuah susunan kelas yang hierarkis.
Kelas yang diwarisi disebut superkelas, sedangkan kelas yang
mewarisi disebut subkelas. Dengan demikian dapat dikatakan bahwa
subkelas adalah versi khusus dari superkelasnya. Subkelas dapat
mewarisi seluruh atau sebagian atribut dan metode yang dimiliki oleh
superkelasnya. (Wijono, 2004)
Jika superkelas telah mendefinisikan kelas yang kita perlukan,
maka kita tidak harus mendefinisikan ulang perilaku-perilaku dari
superkelas atau mengkopi kode dari kelas lain. Kita cukup membuat
subkelas dari superkelas yang dimaksud. Superkelas secara otomatis
akan memberikan perilakunya ke subkelas pewaris. Superkelas itu
24

mungkin saja memperoleh perilakunya dari superkelas-superkelasnya


di hierarki yang lebih atas. Sehingga dengan demikian, subkelas akan
merupakan gabungan seluruh fitur dari superkelas-superkelas di
hierarki ditambah fitur kepunyaan sendiri. (Wijono, 2004)
Pewarisan juga berhubungan dengan konsep enkapsulasi.
Tingkat-tingkat visibilitas dalam konsep enkapsulasi memiliki
pengaruh yang cukup signifikan terhadap pewarisan. Pengaruh tersebut
terutama berhubungan dengan tingkat visibilitas pada pewarisan.
Subkelas hanya dapat mewarisi metode-metode dan atribut-atribut
yang memiliki tingkat visibilitas public atau protected dari
superkelasnya. Sedangkan metode-metode dan atribut-atribut yang
dimiliki oleh superkelas dengan tingkat visibilitas private tidak dapat
diwarisi oleh subkelas-subkelasnya, metode-metode dan atribut-atribut
tersebut hanya bisa diakses atau digunakan oleh kelas itu sendiri.

Vehicle

Car

Ford

Mustang Taurus Thunderbird

Gambar 2.6 : Contoh hierarki super kelas dan sub kelas yang
menggambarkan konsep pewarisan (Bahrami, 1999)

2.2.2 Metodelogi Berorientasi Objek


Pada tahaun 1980-an, banyak metodelogi yang dikembangkan
pada perancangan berorientasi objek. Metodelogi berorientasi objek
menjadi sangat popular saat itu, dan banyak membantu banyak
25

pengembang dalam mengeksekusi analisa dan desain yang baik.


Berikut metodelogi-metodelogi yang muncul sekitar tahun 1980-1994
(Bahrami, 1999) :
• 1986, Booch mengembangkan konsep desain berorientasi
objek, dikenal dengan Booch method.
• 1987, Sally Shlaer dan Steve mellor membuat konsep recursive
design approach.
• 1989, Beck dan Cunningham membuat class-responsibility-
collaboration card.
• 1990, Wirfs-Brock, Wilkerson dan Wiener muncul engan
responsibility-driven design.
• 1991, Jim Rumbaugh memimpin sebuah tim pada Research
Labs of General Electric untuk mengembangkan Object
Modelling Technique (OMT)
• 1991, Peter Coad dab Ed Yourdon mengembagkan Coad
lightweight dan prototype-oreinted approach.
• 1994, Ivar Jacobson memperkenalkan konsep use case dan
Object oriented Software Engineering (OOSE)
Pendekatan yang digunakan pada penelitian ini adalah
pendekatan unified (unified approach) yang memiliki basis
metodelogi berdasarkan teori Booch, Rumbaugh dan Jacobson. Pada
pendekatan unified (UA) digunakan sebuah framework yang
menggunakan Unified Modelling Language (UML) untuk
menampilkan model, dan dokumentasi pada seluruh proses
pengembangan software. (Bahrami, 1999).

2.2.3 Pemodelan Menggunakan Unified Modelling Language (UML)


Suatu model merupakan representasi abstrak dari suatu sistem,
dirancang untuk memahami sistem secara detail pada tahap
pembangunan atau pengembangan sistem. Efraim Turban menjelaskan
bahwa suatu model adalah representasi dari sistem di dunia nyata.
26

Model merupakan bentuk sederhana dari suatu sistem di dunia nyata


yang begitu kompleks. (Bahrami, 1999)

2.2.3.1 Diagram pada UML


Setiap sistem yang kompleks akan jauh lebih baik jika
direpresentasikan dalam sebuah model yang sederhana yang
menggambarkan sistem secara keseluruhan. UML mendefinisikan
sembilan diagram untuk menjelaskan suatu sistem (Bahrami 1999) :
1. Class diagram
2. Use-case diagram
3. Behavior diagram
3.1. Interaction diagram
3.1.1. Sequence diagram
3.1.2. Collaboration diagram
3.2. Statechart diagram
3.3. Activity diagram
4. Implementation diagram
4.1. Component diagram
4.2. Deployment diagram

2.2.3.1.1 Class Diagram


Class adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan
dan desain berorientasi objek. Class menggambarkan keadaan
(atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk
memanipulasi keadaan tersebut (metoda/fungsi). Class diagram
menggambarkan struktur dan deskripsi class, package dan objek
beserta hubungan satu sama lain. (Bahrami, 1999)
Class diagram memiliki beberapa komponen, diantaranya
adalah:
27

1) Class Name: merupakan nama dari suatu kelas yang disimpan


pada bagian atas, ditulis dalam huruf tebal dan diletakkan di
tengah-tengah. Nama diambil dari domain permasalahan dan
harus sejelas mungkin. Oleh karena itu nama kelas haruslah
berupa kata benda.
2) Attribute: kelas memiliki atribut yang menggambarkan
karakteristik dari objek. Atribut kelas yang benar adalah yang
dapat mencakup informasi yang dilukiskan dan mengenali
instance tertentu dari kelas.
3) Operation: Operasi digunakan untuk memanipulasi atribut atau
menjalankan aksi-aksi. Operasi biasanya disebut dengan fungsi,
tetapi mereka terdapat di dalam kelas dan dapat diaplikasikan
hanya pada objek dalam kelas tersebut. (Bahrami, 1999)

Wall
height : fl oat
width : float
thickness : float
isLoadingBieari ng : boolean = false

paint()

Gambar 2.7 : Contoh classes (Booch, et. al, 1999)


Class dapat merupakan implementasi dari sebuah interface, yaitu
class abstrak yang hanya memiliki metoda. Interface tidak dapat
langsung diinstansiasikan, tetapi harus diimplementasikan dahulu
menjadi sebuah class. Dengan demikian interface mendukung resolusi
metoda pada saat run-time.
Tiap class diagram bisa memiliki hubungan antar class diagram
lainnya, diantaranya (Bahrami, 1999) :
1. Asosiasi, yaitu hubungan statis antar class. Umumnya
menggambarkan class yang memiliki atribut berupa class lain,
atau class yang harus mengetahui eksistensi class lain. Panah
navigability menunjukkan arah query antar class.
28

2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri


atas”).
3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat
diturunkan dari class lain dan mewarisi semua atribut dan
metoda class asalnya dan menambahkan fungsionalitas baru,
sehingga ia disebut anak dari class yang diwarisinya. Kebalikan
dari pewarisan adalah generalisasi.
4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-
passing dari satu class kepada, class lain. Hubungan dinamis
dapat digambarkan dengan menggunakan sequence diagram.

Company

1..* 1..*
1..*
Office
Department
address : Stri ng
name : Name
* * voi ce : Number
*
*

1..*
Person Headquarters
name : Name
employeeID : Integer
ti tl e : String ContactInformation

getPhoto()
address : String
getSoundBite()
getContactInformati on()
getPersobalRecord()
PeronnelRecord
taxID
employmentHi stotr
sal ary

ISecureInformation

Gambar 2.8 : Contoh class diagrams (Booch, et. al, 1999)

2.2.3.1.2 Use-case diagram


Use case diagram menggambarkan fungsionalitas yang
diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang
diperbuat sistem, dan bukan “bagaimana”. Sebuah use case
merepresentasikan sebuah interaksi antara aktor dengan sistem.
Use case merupakan sebuah pekerjaan tertentu, misalnya login ke
sistem, meng-create sebuah daftar belanja, dan sebagainya.
Seorang/sebuah aktor adalah sebuah entitas manusia atau mesin
29

yang berinteraksi dengan sistem untuk melakukan pekerjaan-


pekerjaan tertentu. Use case diagram dapat sangat membantu bila
kita sedang menyusun requirement sebuah sistem,
mengkomunikasikan rancangan dengan klien, dan merancang test
case untuk semua feature yang ada pada sistem.
Terdapat tiga jenis hubungan yang terjadi antara use case
Bahrami (1999) yaitu :
1) Extends relationship : Hubungan generalization dimana
suatu use case memperluas use case yang lainnya dengan
cara penambahan aksi-aksi pada use case yang umum.
2) Uses relationship : Hubungan generalization dimana suatu
use case menggunakan use case yang lain, ini menandakan
sebagai bagian specifilized use case, tingkah laku dari use
case yang umum akan diikutsertakan atau bisa juga disebut
include relationship.
3) Grouping : Ketika sejumlah use case menangani fungsi
yang sama atau dalam beberapa cara berhubungan satu
dengan yang lainnya, mereka dapat diikat (bundle) dalam
UML Package.
Sebuah use case dapat meng-include fungsionalitas use
case lain sebagai bagian dari proses dalam dirinya. Secara umum
diasumsikan bahwa use case yang di-include akan dipanggil setiap
kali use case yang meng-include dieksekusi secara normal. Sebuah
use case dapat di-include oleh lebih dari satu use case lain,
sehingga duplikasi fungsionalitas dapat dihindari dengan cara
menarik keluar fungsionalitas yang common. Sebuah use case juga
dapat meng-extend use case lain dengan behaviour-nya sendiri.
Sementara hubungan generalisasi antar use case menunjukkan
bahwa use case yang satu merupakan spesialisasi dari yang lain.
30

<<extend>>

Place phone call Place conf erence call


Cellular network

<<extend>>

Receiv e phone call Receiv e additional call

User

Use scheduler

Gambar 2.9 : Contoh use case diagrams (Booch, et. al, 1999)

2.2.3.1.3 Interactiom Diagram


Diagram interaksi adalah diagram yang menguraikan
bagaimana kelompok objek bekerja sama dalam menyelesaikan
suatu pekerjaan. Diagram Interaksi menangkap perilaku dari suatu
Use Case, mempertunjukkan pola interaksi antar objek. Diagram
menunjukkan sejumlah objek contoh dan pesan-pesan lewat antar
objek di dalam use case. Ada dua macam interaksi model, yaitu
sequence diagrams dan collaboration diagram.(Bahrami, 1999)
Sequence diagram menggambarkan interaksi antar objek di
dalam dan di sekitar sistem (termasuk pengguna, display, dan
sebagainya) berupa message yang digambarkan terhadap waktu.
Sequence diagram terdiri antar dimensi vertikal (waktu) dan
dimensi horizontal (objek-objek yang terkait). Sequence diagram
biasa digunakan untuk menggambarkan skenario atau rangkaian
langkah-langkah yang dilakukan sebagai respons dari sebuah event
untuk menghasilkan output tertentu. Diawali dari apa yang men-
trigger aktivitas tersebut, proses dan perubahan apa saja yang
terjadi secara internal dan output apa yang dihasilkan.
31

Masing-masing objek, termasuk aktor, memiliki lifeline


vertikal. Message digambarkan sebagai garis berpanah dari satu
objek ke objek lainnya. Pada fase desain berikutnya, message akan
dipetakan menjadi operasi/metoda dari class. Activation bar
menunjukkan lamanya eksekusi sebuah proses, biasanya diawali
dengan diterimanya sebuah message. (Bahrami, 1999)

c : Client : Transaction p : ODBCProxy

<<create>>

setAction(a, d, o) setValues(d, 3.4)

setValues(a, "CO")
<<destroy>>

Gambar 2.10 : Contoh sequence diagrams (Booch, et. al, 1999)

2.2.3.1.4 Activity Diagram


Activity diagram menggambarkan berbagai alir aktivitas
dalam sistem yang sedang dirancang, bagaimana masing-masing
alir berawal, decision yang mungkin terjadi, dan bagaimana
mereka berakhir. Activity diagram juga dapat menggambarkan
proses paralel yang mungkin terjadi pada beberapa eksekusi.
Activity diagram merupakan state diagram khusus, di mana
sebagian besar state adalah action dan sebagian besar transisi di-
trigger oleh selesainya state sebelumnya (internal processing). Oleh
karena itu activity diagram tidak menggambarkan behaviour
internal sebuah sistem (dan interaksi antar subsistem) secara eksak,
tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas
dari level atas secara umum. Sebuah aktivitas dapat direalisasikan
oleh satu use case atau lebih. Aktivitas menggambarkan proses
32

yang berjalan, sementara use case menggambarkan bagaimana


aktor menggunakan sistem untuk melakukan aktivitas.
Sama seperti state, standar UML menggunakan segiempat
dengan sudut membulat untuk menggambarkan aktivitas. Decision
digunakan untuk menggambarkan behaviour pada kondisi tertentu.
Untuk mengilustrasikan proses-proses paralel (fork dan join)
digunakan titik sinkronisasi yang dapat berupa titik, garis
horizontal atau vertikal.

Select site

Commision architect

Develop plan

Bid plan

[not accepted]

[else]

Do site work Do trade work

Finish
construction

Gambar 2.11 : Contoh activity diagrams (Booch, et. al, 1999)

2.2.4 Analisis Berorientasi Objek


Fase analisis berorientasi objek (OOA) pada pendeketan
unified (UA) menggunakan aktor dan use-case untuk menjelaskan
sistem dari sudut pandang pengguna. Aktor adalah faktor eternal yang
berinteraksi dengan sistem; sedangkan use-case merupakan scenario
yang menjelaskan bagaimana aktor menggunakan sistem (Bahrami,
1999). Proses analisis berorientasi objek meliputi langka-langkah
berikut ini (Gambar 2.12) Bahrami (1999):
1. Identifikasi aktor
• Siapa atau apa yang menggunakan sistem
• Atau, pada kasus perancangan sistem baru, aktor adalah siapa
atau apa yang akan menggunakan sistem.
33

2. Merancang/mengembangkan proses bisnis sederhana


menggunakan diagram aktifitas
3. Merancang/mengembangkan Use case
• Apa yang user lakukan terhadap sistem
• Atau, pada kasus perancangan sistem baru, apa yang user akan
lakukan terhadap sistem
• Use case dirancanag dengan dokumentasi yang komprehensif
dari sistem selama proses analisa.
4. Mempersiapkan diagram interaksi
• Menentukan diagram sequence
• Merancang diagram Kolaborasi (Collaboration Diagrams)
5. Perancangan Kelas (Class), merancang diagram kelas.
• Mengidentifikasi Kelas (Class)
• Megidentifikasi relasi
• Mengidentifikasi atribut
• Mengidentifikasi method.
6. Iterasi dan perbaikan; jika diperlukan.(Bahrami, 1999)

Gambar 2.12 : Tahapan Analisis pada pengembangan berorientasi


Objek (Bahrami, 1999)

2.2.4.1 Identifikasi Aktor


Mengidentifikasi aktor merupakan hal penting dalam
proses analisis sistem. Istilah aktor menunjukan sekumpulan
pengguna yang beraktivitas pada sistem. Satu pengguna
mungkin saja melakukan satu atu lebih aktivitas pada sistem.
Dalam mengidentifikasi aktor mesti dipahami pula bagaimana
aktor tersebut berinterakasi dengan sistem. (Bahrami, 1999)
34

Gambar 2.13 : Perbedaan Aktor dengan Pengguna


(Bahrami, 1999)
Sedangkan definsi aktor pada Whitten (2004) Aktor
adalah sesuatu yang perlu berinteraksi dengan sistem untuk
pertukaran informasi. Pelaku menginisiasi kegiatan sistem,
yakni sebuah use case, dengan maksud melengkapi beberapa
tugas bisnis yang menghasilkan sesuatu yang dapat diukur.
1. Primary Business Actor (Pelaku Bisnis Utama)
Stakeholder yang terutama mendapatkan keuntungan dari
pelaksanaan use case dengan menerima nilai yang
terukur atau terobservasi. Pelaku bisnis utama
kemungkinan tidak menginisiasi kejadian bisnis. Sebagai
contoh, dalam kejadian bisnis dari seorang karyawan
yang menerima gaji (nilai terukur) dari sistem penggajian
setiap hari jumat, karyawan tidak menginisiasi kejadian
itu, tetapi merupakan penerima utama dari sesuatu yang
bernilai.
2. Primary System Actor (Pelaku Sistem Utama)
Stakeholder yang secara langsung berhadapan dengan
sistem untuk menginisiasi atau memicu kegiatan atau
sistem. Pelaku sistem utama dapat berinteraksi dengan
para pelaku bisnis utama untuk menggunakan sistem
aktual. Mereka memfasilitasi kejadian dengan
menggunakan sistem secara langsung demi mencapai
35

keuntungan para pelaku bisnis utama. Contohnya


operator telepon yang memberikan bantuan kepada
pelanggan dan kasir Bank yang memproses transaksi
Bank. Pelaku bisnis utama dan pelaku sistem utama
kemungkinan memiliki persamaan, yaitu sama-sama
pelaku bisnis yang berhadapan langsung dengan sistem,
misalnya seorang yang melayani jasa penyewaan mobil
via website.
3. External Server Actor (Pelaku Server Eksternal)
Stakeholder yang melayani kebutuhan pengguna use case
(misalnya biro kredit yang memiliki kuasa atas
perubahan kartu kredit).
4. External Receiving Actor (Pelaku Penerima Eksternal)
Stakeholder yang bukan pelaku utama, tapi menerima
nilai yang terukur atau teramati (output) dari use case
(misalnya gudang menerima paket permintaan untuk
menyiapkan pengiriman sesudah seorang pelanggan
memesannya).

2.2.4.2 Analisa Proses Bisnis


Tahap ini tidak selalu mengawali suatu proyek analisis
sistem, akan tetapi jika dibutuhkan, proses bisnis dan
kebutuhan pengguna menjelaskan sampai ke level detail.
Berikut contoh pemodelan proses bisnis menggunakan diagram
aktivitas :
36

Gambar 2.14 : Activity Diagram (AD) menunjukan beberapa


aktivitas dilakukan aktor (Bahrami, 1999)

2.2.4.3 Identifikasi Use Case


Suatu use case adalah interaksi antara aktor dengan sistem.
Suatu use-case menyangkut aktivitass dan respon dari suatu aktor.
Pemodelan use case dapat dilakukan dengan mengambil beberapa
aktor kemudian mendiskusikan apa saja yang akan dilakukan aktor
tersebut terhadap sistem. Setiap use case merepresentasikan apa yang
akan dilakukan oleh aktor (Bahrami, 1999). Berikut contoh use case
diagram pada sistem perpustakaan :

Gambar 2.15 : Contoh Use case diagram pada sistem


perpustakaan (Bahrami, 1999)
37

2.2.4.4 Pemodelan Interaksi Menggunakan Interaction Diagram


Interaction Diagram terdiri dari Sequence diagram dan
Collaboration diagram. Diagram interakasi menjelaskan urutan proses
dan interaksi yang terdapat pada use case atau scenario. Pada
interaction diagram digambarkan interakasi antar suatu objek terhadap
objek yang lain. Pengembangan diagram ini menuntut pengembang
untuk mengidentifikasi seluruh objek dan event yang terjadi pada suatu
use case, hal ini akan sangat membantu untuk perancangan kelas
(class). (Bahrami, 1999)

2.2.4.5 Perancangan Kelas


Class adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan
dan desain berorientasi objek. Class menggambarkan keadaan
(atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk
memanipulasi keadaan tersebut (metoda/fungsi). Class diagram
menggambarkan struktur dan deskripsi class, package dan objek
beserta hubungan satu sama lain (Bahrami, 1999).
Dalam proses identifikasi kelas ada beberapa pendekatan yang
dapat digunakan untuk mengidentifikasi kelas-kelas pada system yang
dirancang : Pendekatan Noun Phrase; pendekatan common class
patterns; pendekatan use-case driven; dan pendekatan Class,
Responsibility and Collaborators (CRC). Adapun pendekatan yang
penulis gunakan dalam penelitian ini adalah noun phrases approach,
dengan kata lain pendekatan ini dilakukan dengan cara mendaftar
sejumlah objek (kata benda atau frase) pada sistem yang dirancang
yang dianggap akan menjadi kandidat kelas. Objek yang telah
teridentifikasi menjadi kandidat kelas tersebut kemudian diidentifikasi
menjadi tiga kategori kelas, Rellevant class, Fuzzy class (kelas
ambigu) dan Irrelevant class. Rellevant class adalah kategori kelas
yang terdiri dari objek-objek yang memiliki keterkaitan dengan sistem
38

yang dirancang serta memiliki attribut dan method. Fuzzy class adalah
kelas yang memiliki makna ambigu dimana kelas ini tidak jelas apakah
relevan atau tidak. Irrelevant class adalah kelas yang tidak mempunyai
pengaruh atau keterkaitan langsung dengan sistem yang akan
dirancang, misalkan proses eliminasi pada kelas yang berupa atribut
atau method (Bahrami, 1999).

Relevant Fuzzy Irrelevant


Class Class Class

Gambar 2.16 : Tiga kategori kelas (Bahrami, 1999)

2.2.5 Perancangan (Design) Sistem Berorientasi Objek


Objek-objek yang teridentifikasi pada tahap analisis dapat
menjadi framework pada tahap design. Kelas-kelas yang teridentifikasi
harus diimplemetasikan pada tahap design untuk penerapannya pada
bahasa pemrograman. Kelas-kelas baru hasil refine mungkin saja
muncul selama tahap design. Pada tahap analisis kelas-kelas yang
teridentifikasi berdasarkan pada proses bisnis pada sistem yang
berjalan. Pada tahap design kelas-kelas tersebut dirancang untuk
kebutuhan implementasi sistem. Berikut tahapan-tahapan pada fase
perancangan sistem (Bahrami, 1999) :
a. Menerapkan desain Axiom pada desain Class, beserta atribut-
atributnya, method, asosiasi, struktur dan protokolnya.
2). Memperbaiki dan melengkapi Diagram Class diagram
dengan manambahkan rinciannya. Tahap ini meliputi
aktivitas-aktivitas di bawah ini :
♦ Memperbaiki Atribut
♦ Mendesain method dan protokol
♦ Memperbaiki asosiasi antar kelas
♦ Memperbaiki hirarki kelas
39

3). Iterasi dan perbaikan ulang


b. Mendesain akses layer
4). Membuat Mirror class.
5). Mengidentifikasi Class relationship pada layer akses.
6). Menyederhanakan beberapa kelas beserta relasinya.
Tujuanya untuk mengeliminasi kelas dan struktur yang
sama (redundant)
♦ Kelas yang redundant : menghilangkan dua atau
lebih kelas yang sama pada kegiatan translate
request dan translate result. Menyederhanakan
dengan memilih salah satu dan mengelimunasi kelas
yang lain.
♦ Kelas Method : meninjau kembali kelas-kelas
berada pada satu atau dua method yang
memungkinkan dikombinasikan atau dieleminasu
denagn kelas yang lain.
7). Iterasi dan perbaikan kembali
c. Mendesain tampilan layer kelas
8). Mendesain interface untuk level macro, mengidentifikasi
tampilan layer beberapa objek.
9). Mendesain interface untuk level micro, dengan
mengikutsertakan aktivitas-aktivitas objek.
♦ Mendesain tampilan layer objek dengan
menerapkan desain axiom dan Corollaries.
♦ Membangun prototype dari tampilan layer interface.
10). Mengecek kebutuhan user
11). Iterasi dan perbaikan ulang
d. Iterasi dan perbaikan keseluruhan desain. Menerapkan kembali
desain axiom (jika diperlukan) dan tahapan-tahapan sebelumnya.
(Bahrami, 1999)
40

Gambar 2.17 : Proses perancangan berorientasi objek dengan


pendekatan unified (Bahrami, 1999)

2.2.5.1 Penerapan Desain Axiom Terhadap Desain Kelas


Secara definisi, axiom adalah kenyataan asasi yang
selalu diamati agar sesuai/valid tanpa ada pengecualian
(Bahrami, 1999). Pada perancangan kelas pada tahap design
sistem, desain axiom menyangkut atribut, method, struktur dan
prookol yang ada pada suatu kelas. Atribut-atribut dan method-
method tersebut dikaji ulang (refine) sehingga menghasilkan
kelas yang sesuai/valid untuk tahap implementasi.
a. Refine atribut
Dari kelas-kelas yang teridentifikasi pada tahap
analisis, pada tahap ini akan dilakukan refine untuk masing
atribut-atribut pada masing-masing kelas. atribut-atribut
pada masing-masing kelas dikaji ulang dengan
menambahkan beberapa informasi pada masing-masing
atribut. Informasi yang ditambahkan adalah berupa
visibilitas dan tipe data masing-masing atribut. Visibilitas
terdiri dari tiga jenis visibilitas :
+ public visibility (dapat diakses pada seluruh kelas)
# protected visibility (dapat diakses oleh subclass dan
method pada kelas yang bersangkutan)
41

– private visibility (hanya dapat diakses pada kelas yang


memilikinya)
Sedangkan pada refine tipe data, diidentifikasi
berdasarkan nilai yang akan menjadi input pada atribut
yang bersangkutan. Contoh : username[10] : String.
(Bahrami, 1999)

b. Refine method
Berdasarkan method-method yang teridentifikasi
untuk setiap kelas pada atahap analisis, pada tahap ini
method-method tersebut akan ditinjau ulang dengan
menambahkan beberapa informasi berupa visibilitas
(visibility) dari masing-masing method pada kelas. Berikut
format suatu method berdasarkan notasi Unified Modelling
Language (UML) (Bahrami, 1999) :
visibility name : (parameter-list) : return-type-expression
Berikut beberapa visibilitas suatau method :
+ public visibility (dapat diakses pada seluruh kelas)
# protected visibility (dapat diakses oleh subclass dan
method pada kelas yang bersangkutan)
– private visibility (hanya dapat diakses pada kelas yang
memilikinya)
Parameter–list menunjukan daftar parameter, nilainya
berdasarkan tipe dan expresi datanya. Sedangkan return-
type-expression adalah nilai balik yang dihasilkan dari
method yang bersangkutan. Contoh suatu format method :
+getName() : aName
#getAccountnumber (account:type) : account Number
42

2.2.5.2 Perancangan Lapisan Akses (Access Layer)


2.2.5.2.1 Database Management System (DBMS)
Database Management System (DBMS) adalah suatu
program yang memungkinkan untuk membuat dan memelihara
koleksi dari data yang terkait. DBMS juga meliputi program
akses, manipulasi, penjagaan, dan pengelolaan data. Tujuan
utama dari DBMS adalah untuk menyediakan fasilitas layanan
data agar lebih efektif dan efisien. (Bahrami, 1999)
Proses perancangan lapisan akses pada tahap
perancangan sistem berorientasi objek menunjukan fase dimana
pengembang mempersiapkan sistem database untuk kebutuhan
layanan data pada sistem yang dirancang/dikembangkan.
Karakteristik dasar untuk mendifinisikan format data yang
terdapat pada suatu DBMS meliputi tidak hanya data saja, akan
tetapi seluruh format data mesti dikelola, deskripsi ini dikenal
sebagai schema atau metadata. (Bahrami, 1999)

Gambar 2.18 : Sistem database Vs Sistem file


(Bahrami, 1999)

Pada perancangan sistem berorientasi objek dikenal


istilah Object Oriented Database System (OODBMS).
43

OODBMS adalah perkawinan antara pemograman berorientasi


objek dengan teknologi database untuk menghasilkan apa yang
dikenal dengan istilah basisdata berorientasi objek. (Bahrami,
1999)

2.2.5.2.2 Database Terdistribusi pada Arsitektur Client-Server


Arsitektur client server pada suatu sistem komputer
menunjukan pada pemograman modular. Pemograman modular
meujuk pada satu kesatuan sistem yang terdiri dari beberapa
bagian (modul) yang memungkinkan kemudahan
pengembangan dan pemeliharaan (Bahrami, 1999).
Penerapan arsitektur client server pada sistem database
dimanfaatkan untuk perancangan database terdistribusi.
Terdapat dua arsitektur database terdistribusi, arsitektur two-
tier , dan arsitektur three-tier. Pada arsitektur two-tier, suatu
client berkomunikasi langsung dengan server database, tanpa
ada perantara server. Arsitektur tipe pertama ini banyak
digunakan pada lingkungan sistem yang relatif tidak terlalu
besar (Lihat gambar 2.19). Sedangkan pada arsitektur three-
tier, terdapat suatu server yang ada diantara mesin client dan
server database, server ini biasa disebut server aplikasi (lihat
gambar 2.20). (Bahrami, 1999)

Gambar 2.19 : Sistem client-server dengan arsitektur two-tier


(Bahrami, 1999)
44

Gambar 2.20 : Sistem client-server dengan arsitektur three-tier


(Bahrami, 1999)

2.2.5.3 Perancangan Lapisan View (View Layer)


Fase ini adalah fase dimana pengembang merancang
user interface (UI) yang menjadi antarmuka anatar sistem
dengan pengguna. Tujuan utama dari perancangan UI adalah
untuk menampilkan informasi yang dibutuhkan sehingga dapat
diakses oleh pengguna. Desain dari antarmuka software, tanpa
terkeceuali, akan sangat berpengaruh pada proses interaksi
antara pengguna dengan sistem. Sangat penting untuk
merancang suatu desain interface yang menampilkan informasi
kepada pengguna sesuai dengan kebutuhan serta benar-benar
dapat menyelesaikan pekerjaan pengguna dengan benar.
Graphical User Interface (GUI) menggunakan beberapa icon
untuk merepresentasikan suatu objek, pointer untuk melakukan
operasi, diagram untuk menampilkan relasi. (Bahrami, 1999)
Perancangan layer view pada suatu software mesti
memperhatikan dua aspek utama dari suatu aplikasi (Bahrami,
1999):
45

1. Input – respon terhadap interaksi pengguna. Antarmuka


pengguna harus bisa menterjemahkan kasi dari pengguna
seperti klik tombola tau memilih menu, ke dalam respon
yang tepat.
2. Output – menampilkan atau mencetak objek-objek pada
sistem. Layer view harus mampu manmpilkan objek-objek
pada layer bisnis sesuai kebutuhan pengguna. Dalam
beberapa interface, hal ini biasanya ditampilkan dalam list
bo, tabel, data grid untuk menampilkan sekumpulan
ata/objek.

Gambar 2.21 : Contoh desin interface dialog box dengan


banyak tab pada Microsoft multimedia setup (Bahrami, 1999)

2.3 Java RMI


Teknologi Remote Method Invocation (RMI) pada bahasa
pemograman Java memungkinkan objek Java yang satu untuk berkomunikasi
dengan objek Java lainnya menggunakan pemanggilan method seperti pada
46

objek yang sama. Walaupun objek yang satu berada pada jarak yang cukup
jauh. Selama sistem yang berjalan dapat berkomunikasi melalui TCP/IP, maka
aplikasi Client/Server dapat dikembangkan tanpa menggunakan Stream dan
Socket.
Dengan adanya teknologi RMI ini maka para programmer dapat
menghindari protokol komunikasi yang kompleks antara aplikasi yang
dikembangkan, sebagai gantinya dapat digunakan protokol yang berbasis
method. Secara garis besar RMI ini adalah metode komunikasi antar objek
Java hanya dengan menggunakan pemanggilan method seperti memanggil
method pada kelas yang sama. Dengan adanya aplikasi ini diharapkan RMI
dapat digunakan untuk aplikasi Client/Server lainnya. (Muchalil, 2006)
Pada dasarnya, RMI diarancangan untuk membangun komunikasi
antar dua atau lebih program berbasis Java, yang dapat berjalan dalam Java
Visrtual mechine (JVM) yang terpisah,serta melakukan pemanggilan method
dalam suatu proses secara sekaligus. (Grosso, 2001)

2.3.1 Arsitektur RMI


Sesuai dengan penjelasan di atas, untuk membuat sebuah kelas
yang method-method-nya dapat diakses secara remote, pertama-tama kita
harus membuat sebuah interface, di mana interface-interface ini harus
mendeklarasikan method-method tersebut. Sementara untuk pengiriman
dan penerimaan data sudah pun ditangani secara otomatis oleh objek
stream. Kelas ini nantinya harus mengimplementasikan interface tersebut.
Stub dan skeleton adalah objek yang berfungsi untuk melakukan proses
pengiriman dan penerimaan data dari suatu aplikasi RMI. Skeleton adalah
sebuah kelas yang merupakan pasangan dari kelas stub yang berada pada
mesin yang sama dengan objek remote. Kelas ini juga yang akan
menerima koneksi dari kelas stub dan menerjemahkannya ke dalam
pemanggilan method pada objek remote.(Muchalil, 2006)
Untuk lebih jelasnya mengenai proses ini ditunjukkan oleh
Gambar 2.22 :
47

Gambar 2.22 : Arsitektur RMI (Muchalil, 2006)


Untuk memanggil objek remote, pertama-tama client harus mencari objek
tersebut dengan layangan naming. Layanan ini akan menginformasikan objek
remote bahwa ada sebuah client yang melakukan koneksi.
Koneksi client pada layanan Naming ini dapat dilihat pada
Gambar 2.21 :

Gambar 2.23 : Layanan Naming (Muchalil, 2006)

2.3.2 Objek Remote


Objek remote ini sendiri dapat dikategorikan menjadi dua bagian, yaitu:
• Interface yang menggam barkan tentang method dari objek ini yang
dapat dipanggil secara remote.
• Objek yang mengimplementasikan interface tersebut. (Muchalil, 2006)

2.3.3 Stub dan Skeleton


Fungsi utama dari kedua kelas ini adalah untuk melakukan
pengiriman dan penerimaan data baik di sisi server dan di sisi client.
48

Gambar 2.24 : Stub dan Skeleton (Muchalil, 2006)

Proses yang terjadi adalah sebagai berikut :


 Client memanggil method remote, pemanggilan pertama-tama
disampaikan ke stub
 Stub bertanggung jawab untuk mengirimkan pemanggilan remote ke
skeleton sisi server
 Stub membuka soket ke server remote, melakukan “marshalling”
parameter objek dan menyampaikan data stream ke skeleton.
 Skeleton berisi method untuk menerima pemanggilan remote,
melakkan “unmarshalling” paramter dan memanggil implementasi
aktual dari objek remote.(Muchalil, 2006)

2.3.4 Remote Exception


RemoteException merupakan kelas induk dari segala macam
kegagalan atau eksepsi yang dapat terjadi pada aplikasi RMI. Eksepsi ini
akan dilemparkan jika pemanggilan terhadap method remote gagal.
Semua method yang terdapat pada interface remote harus melemparkan
eksepsi ini.(Muchalil, 2006)

2.3.5 Tahap Pemrograman Java-RMI


Ketika menggunakan RMI untuk membuat sebuah aplikasi, ada
beberapa langkah yang harus diikuti. Adapun langkah-langkah tersebut
seperti berikut:
49

1. Mendefinsikan interface remote


2. Mengembangkan objek remote dengan mengimplementasikan
interface remote
3. Mengembangkan program client
4. Mengcompile source file java
5. Membuat stub dan skeleton dengan rmic
6. Mengaktifkan program rmiregistry
7. Menjalankan objek server remote
8. Menjalankan client. (Muchalil, 2006)

2.4 Interaksi Manusia dan Komputer


2.4.1 Definisi Interaksi Manusia dan Komputer
Menurut Insap Santosa definisi Interaksi Manusia Komputer adalah:
“Satu disiplin ilmu yang mengkaji tentang mendesain, mengevaluasi dan
menerapkan (implementasi) interaksi antara manusia dan komputer, serta
mengkaji tentang komunikasi atau interaksi di antara pengguna dengan
sistem,” (Santosa, 2004).

Prinsip kerja dalam sebuah sistem komputer adalah input, process, output.
Data masukan komputer dapat berupa angka atau karakter yang kemudian
diproses menjadi keluaran sesuai yang diharapkan oleh pengguna. Ketika
seseorang bekerja dengan sebuah komputer, maka ia akan melakukan interaksi
dengan komputer menggunakan cara-cara tertentu. Cara yang umum digunakan
adalah bahwa pengguna memberikan suatu perintah pada komputer, dan komputer
menanggapinya dengan mencetak atau menuliskan tanggapan pada layar tampilan.
Dengan melalui masukan serta keluaran tersebut pengguna dan komputer saling
berinteraksi.
Dengan dikembangkannya antarmuka berbasis grafis yang dikenal dengan
istilah GUI (Graphical User Interface ) dapat memudahkan manusia dalam
mengoperasikan komputer dan mendapatkan berbagai umpan balik sesuai yang
diperlukan. Para perancang antarmuka manusia-komputer harus mampu membuat
sistem komputer yang mempunyai sifat ramah dengan pengguna sehingga
perancang harus mampu memahami aspek psikologi yang yang dimiliki oleh
50

pengguna, hal ini berhungan dengan faktor manusia. Perancang sistem pun harus
mampu memilih teknik dialog interaktif agar komunikasi antara manusia dengan
komputer lebih mudah, (Santosa, 2004).

2.4.2 Strategi Pengembangan Antarmuka


Secara garis besar, menurut Insap Santosa (2004) pengembangan bagian
antarmuka perlu memperhatikan beberapa hal sebagai berikut:
 Pengetahuan tentang mekanisme fungsi manusia sebagai pengguna
komputer.
 Berbagai informasi yang berhubungan dengan karakteristik dialog yang
cukup lebar, sepeti ragam dialog, struktur, isi tekstual dan grafis,
tanggapan waktu, dan kecepatan tampilan.
 Penggunaan prototype yang didasarkan pada spesifikasi dialog formal
yang di susun secara bersama-sama antara (calon) pengguna dan
perancang sistem, serta peranti bantu yang mungkin dapat digunakan
untuk mempercepat proses pembuatan prototype.
 Teknik evaluasi yang digunakan untuk mengevaluasi hasil proses prototipe
yang telah dilakukan, yaitu secara analitis berdasarkan pada analisis atas
transaksi dialog, secara empirik menggunakan uji coba pada sejumlah
kasus, umpan balik pengguna yang dapat dikerjakan dengan Tanya jawab
maupun kuesioner, dan beberapa analisis yang dikerjakan oleh ahli
antarmuka.

2.4.3 Ragam Dialog


Berbagai teknik dialog interaktif yang memungkinkan terjadinya
komuikasi antara manusia dengan komputer pada saat sekarang ini bervariasi,
dimulai dari yang paling sederhana sampai dengan yang cukup canggih. Secara
umum, ragam dialog dapat dikelompokkan menjadi beberapa kategori,
diantaranya (Santosa, 2004):
 Dialog berbasis bahasa pemrograman
51

Dialog ini merupakan ragam dialog yang memungkinkan pengguna untuk


mengemas sejumlah perintah ke dalam suatu bentuk berkas yang disebut
dengan batch file.
 Sistem menu
Sistem menu merupakan pilihan yang tepat untuk menunjukkan
kemampuan dan fasilitas yang dimiliki oleh sebuah program aplikasi
kepada pengguna.
Menu adalah “daftar sejumlah pilihan dalam jumlah terbatas, yang
biasanya berupa kalimat atau kumpulan kata”, (Santosa, 2004).

Menurut Insap Santosa (2004) Terdapat dua sistem menu, yaitu:


- Sistem menu datar
Sistem ini adalah sistem menu yang menampilkan semua pilihan
secara lengkap.

PENGOLAHAN DATA AKADEMIS MAHASISWA “STIMIK PERTIWI”

<A> Inisialisasi Berkas Mahasiswa <E> Mencetak Presensi


Kuliah
<B> Inisialisasi Berkas Mata Kuliah <F> Mencetak
Presensi Ujian
<C> Inisialisasi Berkas Nilai Ujian <G> Mencetak KRS
<D> Membuka Semua Berkas <H> Mencetak Nilai Ujian

Pilih salah satu: _

Gambar 2.25 Contoh Sistem Menu Datar, (Santosa, 2004).

- Sistem menu tarik


Sistem ini adalah sistem menu yang menampilkan pilihan ke dalam
kelompok-kelompok tertentu yang berbasis pada hirarki pilihan
(struktur pohon pilihan).
52

SUBMENU

MENU UTAMA
(PILIHAN DENGAN
HIERARKI

SUB-SUBMENU

Gambar 2.26 Contoh Sistem Menu Tarik, (Santosa, 2004).

 Dialog berbasis pengisian borang


Teknik dialog ini merupakan suatu penerapan langsung dari aktifitas
pengisian borang dalam kehidupan sehari-hari dimana pengguna akan
dihadapkan pada suatu bentuk borang yang ada pada layar komputer yang
digunakan.

Gambar 2.27 Contoh Dialog Berbasis Pengisian Barang, (Santosa, 2004).


53

 Antarmuka berbasis icon

Gambar 2.28 Antarmuka Berbasis Icon, (Santosa, 2004).


BAB III
ANALISIS SISTEM

Pada bab ini akan dilakukan analisis terhadap sistem pengolahan data
alumni di SMKN 2 Garut, dimana tahap analisisnya disusun berdasarkan langkah-
langkah analisis yang dijabarkan dalam metodelogi analisis sistem berorientasi
objek dengan pendekatan unified (UA).

3.1 Identifikasi Aktor (Actors)


Melalui kegiatan interview dan observasi dalam melihat bisnis proses
yang sedang berjalan maka proses identifikasi aktor didapatkan berdasarkan
siapa saja yang akan menggunakan dan mempengaruhi sistem. Aktor tidak
selalu berupa manusia tetapi juga bisa berupa hardware ataupun sistem lain
yang mempengaruhi sistem.
Tabel 3.1 : Identifikasi Aktor

Tipe
No. Aktor Aktivitas Keuntungan
Aktor

1. Alumni PBA - Melihat data individunya untuk - Menerima informasi


memastikan data individunya data alumni
benar tercatat pada database

2. Admin PSA - Melakukan login - Menerima informasi


- Mengakses seluruh data alumni
method/prosedur pada sistem - Menerima semua report
- Melakukan perbaikan jika sistem yang telah
terjadi kesalahan sistem dilakukan oleh opelator
dan user
3. Pelaksana PSA - Melakukan login - Menerima informasi
Urusan - Menginputkan data alumni data siswa yang akan di
- Melakukan proses penghapusan kelola menjadi data
Kesiswaan
dan update data alumni alumni
- Membuat laporan data alumni - Menerima data untuk
- Mengklasifikasikan data alumni membuat laporan

54
55

Tabel 3.1 : Identifikasi Aktor (lanjutan)

Tipe
No. Aktor Aktivitas Keuntungan
Aktor

4. Kasubag ESA - Melakukan login - Menerima informasi


Tata - Melakukan pemeriksaan data alumni
terhadap data alumni - Menerima laporan data
Usaha
alumni
5. BP/ BK ESA - Melakukan login - Menerima informasi
- Melihat data berdasarkan data alunni
klasifikasi - Menerima laporan data
alumni berdasarkan
klasifikasi tertentu
6. Kepala ERA - Menerima informasi
- Melakukan login
Sekolah data alumni
- Melakukan pengawasan
- Menerima laporan data
terhadap pengolahan data
alumni berdasarkan
alumni
klasifikasi tertentu

Dari Tabel di atas, dapat diketahui apa saja yang dilakukan oleh aktor dalam
Sistem Informasi Administrasi Pengolahan Data Alumni yang ada di SMK Negeri
2 Garut, serta keuntungan yang didapat dari sistem tersebut. Serta dapat diketahui
perbedaan antara User dan Aktor serta aktivitasnya seperti pada gambar berikut :

Gambar 3.1 : Perbedaan antara user dan actor


56

Dari gambar di atas aktor di klasifikasikan lagi berdasarakan


penggunaannya terhadap sistem, misalnya apakah aktor disini menggunakan
sistem sebagai administator, operator atau user yang bisa dipakai nantinya
untuk verifikasi aktor. Pada sistem informasi pengolahan data alumni yang
akan dirancang adalah sebagai berikut :
1. Administrator
Aktor yang dapat mengakses seluruh method/prosedur pada
sistem, serta melakukan perbaikan jika terjadi kerusakan sistem.
2. Operator
Aktor yang Mencatat serta memelihara (Melakukan proses
penghapusan dan update) data seluruh data alumni serta melakukan
klasifikasi alumni berdasarkan program studi, tahun kelulusan,
serta melaporkan progress report dari seluruh data alumni kepada
Kepala sekolah. Secara fungsional Aktor yang berlaku sebagai
operator adalah petugas bagian pelaksana urusan kesiswaan.
3. User
Aktor yang dapat mengakses data alumni, akan tetapi tidak bisa
menambah, menghapus, atau mengupdate data. Aktor ini hanya
dapat melihat data saja untuk digunakan pada proses yang sesuai
dengan fungsi user tersebut. Secara fungsional aktor yang berlaku
sebagai user diantaranya adalah sebagai berikut :
• Kepala Sekolah yang melihat laporan rekapitulasi data
alumni.
• Kasubag Tata Usaha yang melihat daftar alumni untuk
keperluan-keperluan perkembangan sekolah.
• BP/ BK yang melihat data alumni untuk digunakan pada
proses bimbingan penyuluhan dan bimbingan kalier.
• Alumni itu sendiri, alumni dapat melihat data individunya
untuk memastikan data individunya benar tercatat pada
database.
57

3.2 Deskripsi Aktivitas (Business process)


Aktivitas pengolahan data alumni di SMKN 2 Garut berdasarkan
aktor-aktor yang telah teridentifikasi di atas dapat digambarkan pada
diagram aktivitas (activity diagram) berikut ini (Gambar 3.2) :
act Activ ity Diagram
ActivityInitial

Tidak
Terdaftar Melakukan
Regstrasi
?

Ya

Operator Bukan

Ya
Administrator

Mencatat/Menambah Memodifikasi
Data Data

Bukan

User Melihat Data


Indiv idu dan
Rekapitulasi Alumni

Melakukan perbaikan
j ika ada kerusakan
sistem/Update Sistem

ActivityFinal

Gambar 3.2 : Diagram Aktivitas Pengolahan Data Alumni


58

3.3 Identifikasi Use Case


Pada analisis dalam diagram aktivitas di atas, terdapat gambaran
umum dari berbagai aktivitas dari seluruh aktivitas yang menunjukan
interaksi antara aktor dengan sistem. Berdasarkan hal tersebut maka dapat
dikembangkan use case untuk kasus-kasus di bawah ini :
1. Nama Use case : Interaksi dengan Sistem. Aktor melakukan interaksi
dengan sistem setelah melakukan proses verifikasi, use case ini
menyangkut setiap kegiatan yang dilakukan aktor ketika melakukan
proses-proses di lingkungan sistem. Berikut gambaran umum use case
interaksi dengan Sistem :
• Membuka aplikasi
• Melakukan proses Login
• Membuka menu interaksi
• Memilih menu interaksi
• Melakukan Interaksi
• Melakukan Proses Logout
• Keluar dari aplikasi
2. Nama Use case : Proses Verifikasi Aktor. Aktor melakukan proses
verifikasi dengan memasukan username dan password pada sistem,
jika verifikasi berhasil (aktor terdaftar) maka aktor tersebut berhak
melakukan proses berikutnya terhadap sistem. Berikut langkah-
langkahnya :
• Sistem meminta username dan password
• Aktor memasukan username dan password
• Username dan password diverifikasi
3. Nama Use Case : Registrasi Pengguna. Jika pengguna belum terdafatar
pada database sistem, maka pengguna harus melakukan registrasi
terlebih dahulu. Use case ini berkaitan dengan use case verifikasi
aktor.
4. Nama Use Case : Mencatat Data Alumni. Aktor yang berlaku sebagai
operator mencatat (menambah) data Alumni yang belum terdaftar pada
59

sistem. Secara implisit proses yang terjadi pada use caase ini adalah
sebagai berikut :
• Aktor membuka menu pada sistem
• Aktor memilih menu pencatatan/penambahan data alumni
• Aktor menyimpan data alumni yang sudah dicatat
• Aktor keluar dari menu pencatatan/penambahan data alumni
• Aktor keluar dari sistem
5. Nama Use Case : Memodifikasi Data Alumni. Aktor yang berlaku
sebagai operator memodifikasi data (menghapus atau mengupdate)
data alumni sesuai dengan kondisi atau kebijakan yang mengharuskan
hal tersebut.
6. Nama Use Case : Melihat Data Alumni. Aktor khususnya yang berlaku
sebagai User, melihat data alumni sesuai dengan kebutuhan dan fungsi
user tersebut.
Secara keseluruhan, dari seluruh use case di atas dapat
dikelompokan ke dalam beberapa package. Setiap package mencakup
beberapa use case yang berkaitan dengan package tersebut. Package ini
dibangun berdasarkan lingkup aktivitas yang ada pada setiap use case.
Setelah dianalisis seluruh use case di atas dapat dikelompokan dengan
package-package di bawah ini :
uc Use Case Model

Package Administrasi Sistem


+ Administrator
+ Interaksi dengan Sistem
+ Memperbaiki Sistem
+ Proses Verifikasi Aktor
+ Registrasi Pengguna

Package Mencatat dan Memodifikasi Data Package Melihat laporan


+ Operator + User
+ Interaksi dengan Sistem + Interaksi dengan Sistem
+ Memodifikasi data alumni + Melihat Data alumni
+ Mencatat Data alumni + Proses Verifikasi Aktor
+ Proses Verifikasi Aktor + Registrasi Pengguna
«use»
+ Registrasi Pengguna

«use»
«use»

Package Login dan Verifikasi Sistem


+ Administrator
+ Operator
+ User
+ Interaksi dengan Sistem
+ Proses Verifikasi Aktor
+ Registrasi Pengguna

Gambar 3.3 : Package pada Sistem Informasi Pengolahan Data Alumni


60

1. Package Use case pada pada kegiatan Login dan Verifikasi Sistem
Package Use case ini meliputi Use case interaksi dengan
sistem, use case verifikasi aktor, dan use case registrasi pengguna.
Berikut ini Use case diagram untuk pacakage ini (Gambar 3.4):
uc Package Login dan Verifikasi Sistem

Interaksi
dengan Sistem
User
«uses»

Proses
Verifikasi Aktor

Operator

«extend»
Administrator
Registrasi
Pengguna

Gambar 3.4 : Use case diagram pada pada kegiatan Login dan Verifikasi
Sistem
2. Package Use case untuk proses Pencatatan dan Modifikasi data
Package Use case ini meliputi Use case interaksi dengan
sistem, verifikasi aktor, registrasi pengguna, mentatat data,
memodifikasi data, dan mencatat data kebutuhan alumni. Berikut ini
Use case diagram untuk pacakage ini (Gambar 3.5):
61

uc Package Mencatat dan Memodifikasi D...

Interaksi Proses
«uses»
dengan Sistem Verifikasi Aktor

«extend»

Registrasi
«extend»
Pengguna

«extend»
Operator
Mencatat Data
alumni

Memodifikasi
data alumni

Gambar 3.5 : Use case diagram untuk proses Pencatatan dan


Modifikasi data

3. Package Use case untuk Melihat Data


Package Use case ini meliputi Use case interaksi dengan
sistem, verifikasi aktor, registrasi pengguna, dan melihat data alumni.
Berikut ini Use case diagram untuk pacakage ini (Gambar 3.6):
62

uc Package Melihat Lapor...

Interaksi Proses
dengan Sistem «uses» Verifikasi Aktor

«extend»

«extend»
Registrasi
User Pengguna

Melihat Data
alumni

Gambar 3.6 : Use case diagram untuk proses Melihat Laporan

4. Package Use case Admnistrasi Sistem


Package Use case ini meliputi Use case interaksi dengan
sistem, verifikasi aktor, dan registrasi pengguna. Berikut ini Use case
diagram untuk pacakage ini (Gambar 3.7):
uc Package Administrasi Sistem

Interaksi Proses
dengan Sistem «uses» Verifikasi Aktor

«extend»

Administrator
Registrasi
Pengguna

Gambar 3.7 : Use case diagram untuk proses Administrasi Sistem


63

3.1.3 Identifikasi Interaksi Antar Objek Menggunakan Interaction


diagrams
Setiap skenario dalam use case dapat digambarkan dalam urutan
interaksi antara aktor dan sistem beserta aktifitasnya. Pengembangan dari
use case yang dapat mengimplementasikan skenario adalah Interaction
Diagram. Untuk mengimplementasikan interaction diagram dapat
menggunakan sequence diagram dan collaboration diagram. Diagram ini
dapat memodelkan analisis lebih spesifik karena memodelkan interaksi
antar objek dalam sistem.
Sequence diagram dan collaboration diagram merepresentasikan
urutan dan interaksi pada use case yang ada untuk mempermudah
identifikasi kelas. Kedua jenis diagram ini juga merepresentasikan suatu
kejadian dan bagaimana objek dalam sistem berinteraksi dengan objek
lain. Berikut Sequence diagram dan collaboration diagram pada sistem
yang dianalisis :
• Diagram Interaksi pada Package Use case Login dan Verifikasi
Sistem
sd Sequence diagram for System Login and Verification

MesinHost Proses Logi n Menu Utama Data Pengguna

Pengguna

Membuka
Apl ikasi()

Meminta username dan


password()
Memasukan Usename dan
Password()

Veri fi kasi username dan


password()

Username dan password


Val id()

Menampil kan
Menu()

Memi li h
Menu()

Mel akukan kegiatan sesuai menu yg


di pi li h()

Mel akukan
l ogout()

Menutup Menu
Kel uar proses() utama()

Keluar dari
proses()
Sel esai

Gambar 3.8 : Sequence diagram pada Package Use case Login dan
Verifikasi Sistem
64

analysis Use case System Administration Realization

1.12: Keluar Aplikasi()


1.11: Melakukan logout()
1.4: Masukan username dan password()
1: buka aplikasi()
SI Alumni

1.3: Request username dan password()


Administrator
1.1: Load proses login()

1.9: Memperbaiki kesalahan()


1.7: Load menu utama()

1.2: Display form login()

Proses Login
1.10: Sistem berhasil diperbaiki()

1.5: Verifikasi username dan password()

1.8: Menampilkan pesan Sistem bermasalah()

1.6: Username dan password valid()

Menu Utama Data Pengguna

Gambar 3.9 : Collaboration diagram pada Package Use case Login dan
Verifikasi Sistem

Diagram di atas dapat memperhatikan aktivitas aktor terhadap


sistem secara keseluruhan beserta urutan prosesnya. Pada proses interaksi
juga terdapat use case registrasi pengguna, dimana jika pengguna belum
terdaftar pada sistem maka dilakukan proses registrasi. Proses registrasi
pengguna ditunjukan pada gambar 3.10 dan gambar 3.11 :
65

sd Sequence diagram for User Registration

Proses Login Formulir Registrasi Data Pengguna

Pengguna

Membuka
Aplikasi()

Request Username dan


Password()

Input username dan


password()

Verifikasi username dan


password()

Username dan password belum


terdaftar()

display
formulir
registrasi()
Register
pengguna()

Menyimpan username dan


password()

registrasi berhasil()

Keluar
dari
proses() Selesai

Gambar 3.10 : Sequence diagram pada Use case Registrasi pengguna

analysis Use case Registrasi pengguna Realization

1: Membuka Aplikasi()
1.2: input username dan pessword()
Proses Login
1.1: Request username dan password()
1.5: Username dan password invalid()
Pengguna
1.3: Verifikasi pengguna()

1.6: Load formulir registrasi()


1.4: Username dan password invalid()

1.9: pesan registrasi sukses()


1.7: Input data pengguna() Data Pengguna

Formulir Registrasi
1.8: menyimpan data pengguna()

Gambar 3.11 : Collaboration diagram pada Use case Registrasi pengguna


66

• Diagram Sequensial untuk Package Use case Mencatat dan


memodifikasi Data
Pada proses pencatatan dan modifikasi data, Aktor yang
berlaku sebagai operator menambah atau memodifikasi (hapus atau
update) data alumni. Setelah proses pencatatan dan modifikasi selesai
kemudian data disimpan dalam database, yang kemudian dapat diakses
kemudian hari baik pada tampilan form maupun tampilan report.
Aktivitas ini dilakuakn pada tahap inisialisasi data awal, penambahan
data alumni. Pada sistem yang diusulkan proses pada package usecase
ini dilakukan secara remote, baik method maupun akses pada
databasenya. Aplikasi client yang dapat mengakses server tidak
tergantung pada satu platform melainkan berbagai platform yang
memiliki environtment yang sama dengan server aplikasi. Urutan
proses pada usecase ini ditunjukan pada gambar 3.12 dan gambar 3.13
:
67

sd Sequence diagram for Add and Modify Data

Mesin Host SI Alumni Data Alumni

Operator

Meminta Username dan


password()

Memasukan Username dan


password()
Verifikasi Username dan
password()

Username dan Password


Valid()

Membuka
Menu()

Memilih Data
Alumni()

Memberikan data
Alumni()

Memberikan data
Alumni()

Melakukan Proses pencatatan


atau modifikasi data()

Menyimpan data yang telah ditambah atau


dimodifikasi()

Data berhasil
disimpan()

Penambahan atau Modifikasi


berhasil()

Keluar dari
proses()

Melakukan
logout()

Keluar aplikasi()

Akhiri proses()

Selesai

Gambar 3.12 : Sequence diagram untuk Package Use case Mencatat dan
memodifikasi Data
68

analysis Use case Add and Data Modification Realization

1.16: Keluar aplikasi()


1.15: Melakukan Logout()
1: Buka aplikasi()
SI Alumni

Operator

1.5: Load menu utama()


1.7: Memilih menu tambah/modifikasi data Alumni()

1.1: Load proses login()

1.12: Menambah/memodifikasi data() 1.6: Display menu utama()

1.2: Proses login dimulai()

Menu Utama
Proses Login

1.8: Load form Alumni()

1.3: Verifikasi username dan password()


1.4: Username dan password valid()
1.14: Tutup form data Alumni() 1.9: Display formulir Alumni()

Data Pengguna

Data Alumni

1.11: Memberikan data Alumni()


1.10: Load data Alumni()

1.13: Menyimpan data Alumni yang telah ditambah/dimodifikasi() DB Alumni

Gambar 3.13 : Collaboration diagram untuk Package Use case Mencatat


dan memodifikasi Data

• Diagram Sequensial untuk Package Use case Melihat Laporan


Pada proses melihat data, aktor yang berlaku sebagai User
melihat laporan data alumni, baik data individu alumni maupun
rekapitulasi data alumni secara keseluruhan dan berdasarkan kategori.
Sistem menampilkan Laporan (report) dalam format read only (baca
saja) artinya aktor tidak bisa mengedit data yang ditampilkan oleh
sistem. Aktivitas pada use case ini berkaitan dengan aktivitas
pengawasan dan penilaian data alumning khususnya yag dilakukan
oleh kepala sekolah untuk menghasilkan kepetusuan pada kegiatan
perencanaan perkembangan program studi.
69

sd Sequence diagram for View Rep...

MesinHost Proses Login Menu Utama Data Pengguna Report Data


Alumni
Pengguna

Membuka
Aplikasi()

Memulai
proses
login()
request data
login()
Request username
dan password()

Memasukan username
dan password()

Verifikasi Username dan


password()

Username dan
password Valid()

Menampilkan menu
Utama()

Memilih menu Report data


Alumni()

Load report data


Alumni()

Memberi kan report data


Alumni()

Menampil kan Report Data


Alumni()

Melakukan
logout()

Keluar
aplikasi ()

End
proses()
Selesai

Gambar 3.14 : Sequence diagram untuk Package Use case Melihat


Laporan
analysis Use CaseView Report Realizati...

1.3: Request username dan password()


SI Alumni
1: Membuka aplikasi()
1.4: Input username dan password()
User
1.13: Melakukan Logout()
1.14: Keluar aplikasi() 1.5: Verifikasi username dan password()

1.9: Memilih menu Report data()

1.7: Load menu utama() 1.6: Username dan password Valid()


1.1: Load proses login()
Data Pengguna

1.12: Display report data Alumni()


1.2: Proses login dimulai()

1.8: Display menu utama()


Proses Login
Menu Utama

1.11: Display report()


1.10: Load report()

Report Data Alumni

Gambar 3.15 : Collaboration diagram untuk Package Use case Melihat


Laporan
70

• Diagram Sequensial untuk Package Use case Administrasi Sistem


Aktivitas pada use case ini berkaitan dengan kegiatan aktor
yang berlaku sebagai administrator yang melakukan pengguna. Aktor
akan diverifikasi oleh sistem, jika aktor tersebut dikenali sebagai
Administrator maka aktor tersebut mempunyai hak akses terhadap
modul maintenance yang ada pada sistem. Kegiatan ini sekaligus
pemberian hak akses pada setiap pengguna untuk dapat menggunakan
sistem dengan hak akses yang ditentukan berdasarkan tipe
pengunannya.

sd Sequence diagram for System Administration

MesinHost Proses Login Menu Utama Data Pengguna

Pengguna

Membuka aplikasi()

Load form login()

Menampilkan form login()

Request username dan password()

Memasukan username dan password()

Verifikasi username dan password()

Username dan password Valid()

Load Menu Utama()

Menampilkan menu Utama()

Melakukan Registrasi Pengguna()

Melakukan Logout()

Keluar aplikasi()

End proses()

Selesai

Gambar 3.16 : Sequence diagram untuk Package Use case Administrasi


Sistem
71

analysis Use case System Administration Realization

1.12: Keluar Aplikasi()


1.11: Melakukan logout()
1.4: Masukan username dan password()
1: buka aplikasi()
SI Alumni

1.3: Request username dan password()


Administrator
1.1: Load proses login()

1.9: Memperbaiki kesalahan()


1.7: Load menu utama()

1.2: Display form login()

Proses Login
1.10: Sistem berhasil diperbaiki()

1.5: Verifikasi username dan password()

1.8: Menampilkan pesan Sistem bermasalah()

1.6: Username dan password valid()

Menu Utama Data Pengguna

Gambar 3.17 : Collaboration diagram untuk Package Use case


Administrasi Sistem

3.1.4 Perancangan Kelas (Classification)


Perancangan kelas pada sistem yang diusulkan didasarkan pada use
case diagrams dan interaction diagrams yang diimplementasikan dengan
sequence diagrams dan collaboration diagrams pada tahap sebelumnya.
Adapun tahapan dalam klasifikasinya meliputi:
- Identifikasi Kelas (classes)
- Identifikasi relationships
- Identifikasi attributes
- Identifikasi methods

3.1.4.1 Identifikasi Kelas (Class)


Dalam proses identifikasi kelas ada beberapa pendekatan yang
dapat digunakan untuk mengidentifikasi kelas-kelas pada system yang
dirancang : Pendekatan Noun Phrase; pendekatan common class patterns;
pendekatan use-case driven; dan pendekatan Class, Responsibility and
72

Collaborators (CRC). Adapun pendekatan yang penulis gunakan dalam


penelitian ini adalah noun phrases approach, dengan kata lain pendekatan
ini dilakukan dengan cara mendaftar sejumlah objek (kata benda atau
frase) pada sistem yang dirancang yang dianggap akan menjadi kandidat
kelas. Objek yang telah teridentifikasi menjadi kandidat kelas tersebut
kemudian diidentifikasi menjadi tiga kategori kelas, Rellevant class, Fuzzy
class (kelas ambigu) dan Irrelevant class. Rellevant class adalah kategori
kelas yang terdiri dari objek-objek yang memiliki keterkaitan dengan
sistem yang dirancang serta memiliki attribut dan method. Fuzzy class
adalah kelas yang memiliki makna ambigu dimana kelas ini tidak jelas
apakah relevan atau tidak. Irrelevant class adalah kelas yang tidak
mempunyai pengaruh atau keterkaitan langsung dengan sistem yang akan
dirancang, misalkan proses eliminasi pada kelas yang berupa atribut atau
method.
Berdasarkan use case yang telah dikembangakan sebelumnya,
maka pada lingkungan sistem yang dirancang terdapat kandididat kelas
berikut ini (Tabel 3.2) :

Tabel 3.2 : Kandidat Kelas


1 Package Use Case Interaksi dengan Sistem
1. SI Alumni
2. Menu Utama
3. Proses Login
4. Username
5. Password
6. Pengguna
7. Mesin Host
73

Tabel 3.2 : Kandidat Kelas (Lanjutan)


2 Package Mencatat dan Modifikasi Data
1. Data Alumni
2. Formulir Data Alumni
3. Data Individu
4. Operator
5. Proses Pencatatan Data
6. Proses Modifikasi Data

3 Package Use case Melihat Data


1. Report
2. Report Data Alumni
3. Rekapitulasi
4. User

4 Package Use case memperbaiki Sistem


1. Pesan Kesalahan
2. Administrator

Dari kandidat kelas diatas kemudian dieleminasi object yang tidak


relevan, sehingga kelas terdiri dari seluruh kelas relevan (Relevant class)
atau kelas fuzzy (Fuzzy class). Pada tahap ini maka kandidat kelas
username, password akan dieleminasi karena kandidat kelas ini hany
berupa sebuah atribut dari kelas Pengguna. Begtu pula pada objek Pesan
kesalahan karena hanya berupa eksepsi (pengecualian kesalahan). Tabel
berikut menunjukan deskripsi masing masing kandidat kelas (Tabel 3.3) :
74

Tabel 3.3 : Kandidat kelas dengan kategori kelas


No Kandidat Kelas Kategori Kelas
1 Package Use Case Interaksi dengan Sistem
Kandidat kelas Kategori kelas Deskripsi
Menunjukan keseluruhan
1. SI Alumni Relevant Class
Sistem
Merupakan antamuka utama
2. Menu Utama Relevant Class
pada system
Merupakan tampilan awal
3. Proses Login Relevant Class
saat sistem dijalankan
4. Username Irrelevant Class Atribut pada data pengguna
5. Password Irrelevant Class Atribut pada pengguna
6. Pengguna Relevant Class Aktor pada sistem
Merupakan portal untuk
7. Mesin Host Relevant Class
mengakses sistem informasi
2 Package Mencatat dan Modifikasi Data
1. Formulir data Tampilan operasi data
Relevant Class
alumni Alumni
2. Data Alumni Relevant Class Lapisan akses data alumni
3. Data Individu Relevant Class Atribut pada data alumni
4. Operator Relevant Class Aktor pada sistem
5. Proses Pencatatan
Relevant Class Kondisi Akses pada data
Data
6. Proses Modifikasi
Relevant Class Kondisi Akses pada data
Data
75

Tabel 3.3 : Kandidat kelas dengan kategori kelas (Lanjutan)


3 Package Use case Melihat Data
1. Report Relevant Class Tampilan laporan data
Tampilan laporan data
2. Report Data Alumni Relevant Class
alumni
3. Rekapitulasi
Relevant Class Tampilan data rekap alumni
Alumni
4. User Relevant Class Aktor pada sistem
4 Package Use case memperbaiki Sistem
1. Pesan Kesalahan Relevant Class Antarmuka pesan kesalahan
2. Administrator Relevant Class Aktor pada sistem

Setelah kita menentukan kategori kelas dari kandidat-kandidat


kelas di atas, tahap selanjutnya adalah memeriksa jika terdapat kelas yag
redundant, yaitu kelas yang berbeda akan tetapi memiliki makna yang
sama (same idea). Berikut adalah beberapa kelas redundant yang terdapat
pada kandidat kelas di atas (Tabel 3.4) :

Tabel 3.4 : Iidentifikasi Kelas Redundant

No Kelas Redundant Kelas yang dipilih

1 Administrator, User, Operator, Pengguna Pengguna


Data Alumni, Data Individu, Formulir
2 Data Alumni
data alumni

Report, report data Alumni, Rekapitulasi


3 Report data alumni
data Alumni

4 SI Alumni, Menu Utama, Proses Login SI Alumni


76

Berdasarkan analisis serta eliminasi di atas maka kandidat kelas


yang tidak relevan atau redundant tidak diidentifikasi sebagai kelas pada
sistem :

1. SI Alumni
2. Menu Utama
3. Proses Login
4. Username
5. Password
6. Pengguna
7. Mesin Host
8. Formulir data Alumni
9. Data alumni
10. Data Individu
11. Operator
12. Proses Pencatatan Data
13. Proses Modifikasi Data
14. Report
15. Report Data Alumni
16. Rekapitulasi Alumni
17. User
18. Pesan Kesalahan
19. Administrator
77

Jika kita pisahkan kelas-kelas yang terpilih maka hasilnya sebagai


berikut (table 3.5):

Tabel 3.5 : Deskripsi Kelas


Nama Kelas Deskripsi
Kelas yang menunjukan keseluruhan sistem
secara general, didalamnya akan terdapat
SI Alumni
kelas-kelas yang lain yang menjadi bagian
dari SI Alumni.
Merupakan portal untuk mengakses sistem
Mesin Host
informasi
Tampilan laporan yang dapat dilihat oleh
user untuk kegiatan penilaian, pengawasan,
Report Alumni
perencanaan, serta pendukung pada
pengambilan keputusan.
Kelas yang merupakan aktor pada Sistem,
Pengguna yang menyimpan data username dan
password serta tipe aktor.
Merupakan database yang menyimpan data
Data Alumni
seluruh alumni, baik data individunya.
Proses Pencatatan Kelas yang menunjukan kondisi Akses pada
Data data alumni
Proses Modifikasi Kelas yang menunjukan kondisi Akses pada
Data data Alumni

3.1.4.2 Identifikasi Relationship


Setelah semua kelas teridentifikasi, maka langkah selanjutnya
yaitu menentukan keterhubungan (relationships) antar kelas. Adapun
relationships dari tiap kelas dapat dilihat pada tabel berikut (tabel
3.6):
78

Tabel 3.6 : Keterhubungan (relationship) antar kelas


Relasi antar beberapa kelas dan Kardinalitasnya
Kelas Kelas terkait Hubungan (Relasi) Kardinalitas
Pengguna SI Alumni Repair/Update One
SI Alumni Pengguna Zero or More
Pengguna Data Alumni Catat dan Modifikasi One
Data Alumni Pengguna One or More
Pengguna Report Data Lihat One or More
Alumni
Report data Pengguna One or More
Alumni

Dari tabel di atas terlihat adanya beberapa relasi/asosiasi dari


beberapa kelas yang telah teridentifikasi serta kardinalitas dari masing-
masing asosiasi/relasinya. Terlihat pada tabel di atas bahwa tidak
semua kelas memiliki asosiasi dengan kelas yang lain, ada pula yang
hanya memiliki hubungan agregasi (Lihat Gambar 3.19). Jika
dimodelkan dalam bentuk Class diagram maka model dari relasi
berdasarkan tabel di atas adalah sebagai berikut (Gambar 3.18) :
class Agregasi Generalisasi Class Diagram

ProsesModifikasiData
SI_Alumni
Mesin_Host

0..*

Data_Alumni
Repair/Update System

1..*
Add or Modify Data 1

Pengguna
1

1..*
Display Report

ProsesPencatatanData 1..*

Report_data_alumni

Gambar 3.18 : Class diagram untuk Sistem Infomasi Pengolahan


Data Alumni
79

Selain asosiasi berupa relationship, kelas-kelas di atas juga ada


yang mempunya asosiasi dalam bentuk agregasi (agregation) dan
Generalisasi. Agregasi menunjukan hubungan antar kelas yang
menunjukan bahwa suatu kelas adalah bagian dari kelas yang lain.
Sedangkan Generalisasi menunjukan hubungan umum ke khusus dari satu
kelas kepada kelas yang lain. Berikut ini adalah diagram kelas pada sistem
yang akan dirancang yang sudah ditambah beberapa agregasi (Gambar
3.19) :
class Agregasi Generalisasi Class Diagram

ProsesModifikasiData
SI_Alumni
Mesin_Host

0..*

Data_Alumni
Repair/Update System

1..*
Add or Modify Data 1

Pengguna
1

1..*
Display Report

ProsesPencatatanData 1..*

Report_data_alumni

Gambar 3.19 : Class diagram dengan beberapa Agregasi dan Generalisasi

3.1.4.3 Identifikasi Atribut (Attributes)


Setelah relasi antar kelas sudah terbentuk, maka langkah
selanjutnya yaitu menentukan attributes dari tiap kelas. Adapun
attributes dari tiap kelas pada perancangan sistem informasi
pengelolaan data alumni yang akan dirancang dapat dilihat pada model
class diagrams dibawah ini (Gambar 3.20) :
80

class Atribut Class Diagram

ProsesModifikasiData
Mesin_Host
- idTrans: String
- tglTrans: Date - hostName: String
- ipAddress: String
SI_Alumni

Repair/Update System
0..*

1
Data_Alumni
Pengguna
- alamat: String
- nama: String - namaPengguna: String
- noinduk: int - password: String
- tahunKeluar: String - tipePengguna: String
- tempatLahir: String Add or Modify Data - username: String
- tglLahir: Date
1..* 1

1..*

Display Report

1..*

Report_data_alumni

ProsesPencatatanData

- idTrans: String
- tglTrans: Date

Gambar 3.20 : Class diagram dengan atribut-atribut kelas

3.1.4.4 Identifikasi Method


Setelah attributes dari tiap kelas terbentuk, maka langkah
selanjutnya yaitu menentukan methods/behavior dari tiap kelas. Method
pada kelas menunjukan perilaku atau prosedur yang berlaku pada kelas
yang bersangkutan. Adapun methods/behavior dari tiap kelas pada kelas-
kelas yang telah teridentifikasi di atas dapat dilihat pada diagram dibawah
ini (gambar 3.21):
81

class Static Class Diagram

ProsesModifikasiData
SI_Alumni
- idT rans: String
- tglTrans: Date

+ setIdTrans() : void
+ setT glTrans() : void

0..*

Mesin_Host

- hostName: String
Repair/Update - ipAddress: String
System

Data_Alumni
Pengguna
- alamat: String
- namaPengguna: String
- nama: String 1
- password: String
- noinduk: int Add or Modify Data
- tipePengguna: String
- tahunKeluar: String
1..* 1 - username: String
- tempatLahir: String
- tglLahir: Date
+ verifikasiPengguna() : void
+ getAll() : void
1..*
+ getById() : void
+ getByNeme() : void
+ hapus() : void
+ insert() : void Display
+ update() : void Report

1..*

Report_data_alumni

ProsesPencatatanData

- idTrans: String
- tglT rans: Date

- setIdTrans() : void
- setTglT rans() : void

Gambar 3.21 : Class diagram dengan atribut-atribut dan


method-method kelas
BAB IV
PERANCANGAN SISTEM

Pada bab ini akan dilakukan perancangan terhadap sistem pengelolaan


data alumni di SMK Negeri 2 Garut, dimana tahap perancangannnya disusun
berdasarkan langkah-langkah desain yang dijabarkan dalam metodelogi
perancangan sistem berorientasi objek dengan pendekatan unified (UA).

4.4 Desian Axiom Kelas


Desain axiom pada suatu kelas menyangkut atribut, method, struktur
dan prookol yang ada pada suatu kelas. Pada tahap ini, atribut-atribut dan
method-method pada kelas-kelas yang teridentifikasi dikaji ulang (refine)
sehingga menghasilkan kelas yang sesuai/valid untuk tahap implementasi.
Sebagaimana telah dijelaskan pada bab sebelumnya (lihat Tabel 3.5),
bahwa kelas-kelas yang teridentifikasi pada sistem informasi pengolahan data
alumni yang diusulkan pada penelitian ini adalah sebagai berikut :
1. Kelas Pengguna
2. Kelas SIAlumni
3. Kelas DataAlumni
4. Kelas MesinHost
5. Kelas ProsesPencatatanData
6. Kelas ProsesModifikasiData
7. Kelas ReportAlumni
Kelas-kelas di atas akan dikaji ulang dari sisi atribut serta method-
methodnya.

4.4.1 Refine Atribut-atribut kelas


Dari kelas-kelas yang dijelaskan sebelumnya (lihat gambar
3.20), pada tahap ini akan dilakukan refine untuk masing atribut-
atribut pada masing-masing kelas. atribut-atribut pada masing-masing
kelas dikaji ulang dengan menambahkan beberapa informasi pada

85
83

masing-masing atribut. Informasi yang ditambahkan adalah berupa


visibilitas dan tipe data masing-masing atribut. Visibilitas terdiri dari
tiga jenis visibilitas :
+ public visibility (dapat diakses pada seluruh kelas)
# protected visibility (dapat diakses oleh subclass dan method
pada kelas yang bersangkutan)
– private visibility (hanya dapat diakses pada kelas yang
memilikinya)
Sedangkan pada refine tipe data, diidentifikasi berdasarkan
nilai yang akan menjadi input pada atribut yang bersangkutan.
Contoh : username[10] : String. Berikut rincian proses refine untuk
masing-masing kelas :
1. Refine atribut pada Kelas Pengguna
Pada tahap analisis (lihat Gambar 3.20), kelas Pengguna
diidentifikasi memiliki atribut-atribut di bawah ini :
username
password
tipePengguna
Setelah dilakukan refine maka atribut-atribut diatas
ditambahkan informasi sebagai berikut :
#username : String
#password : String
#tipePengguna: String
Visibilitas pada seluruh atribut dalam kelas ini adalah
protected, karena seluruh atribut pada kelas pengguna hanya akan
dipakai pada kelas pengguna saja.
2. Refine atribut Kelas Si Alumni
Refine atribut untuk kelas ini SiAlumni disesuaikan dengan
refine pada kelas yang memiliki agregasi dengan kelas ini, yakni
kelas DataAlumni, dan kelas MesinHost.
84

3. Refine atribut Kelas Data Alumni


Berdasarkan atribut yang teridentifikasi pada tahap analisis
(lihat Gambar 3.20), maka refine atribut pada kelas ini adalah
sebagai berikut :
#noInduk : String
#nama : String
#jk : String
#tempatLahir : String
#tglLahir : Date
#alamat : String
#tahunLulus : Date
#jurusan : String
#status : String
#rerataNilai : Integer
4. Refine attribute Kelas MesinHost
Berdasarkan atribut yang teridentifikasi pada tahap analisis
(lihat Gambar 3.20), maka refine atribut pada kelas ini adalah
sebagai berikut :
#hostName : String
#ipAddess : String
5. Refine atribut Kelas Proses Pencatatan Data
Berdasarkan atribut yang teridentifikasi pada tahap analisis
(lihat Gambar 3.20), maka refine atribut pada kelas ini adalah
sebagai berikut :
#idTrans : String
#tglTrans : String
#Pengguna : Pengguna (atribut hasil asosiasi)
#DataAlumni : DataAlumni (atribut hasil asosiasi)
85

6. Refine atribut Kelas Proses Modifikasi Data


Berdasarkan atribut yang teridentifikasi pada tahap analisis
(lihat Gambar 3.20), maka refine atribut pada kelas ini adalah
sebagai berikut :
#idTrans : String
#tglTrans : String
#Pengguna : Pengguna (atribut hasil asosiasi)
#DataAlumni : DataAlumni (atribut hasil asosiasi)
7. Refine atribut Kelas Proses Report Alumni
Berdasarkan atribut yang teridentifikasi pada tahap analisis
(lihat Gambar 3.20), maka refine atribut pada kelas ini adalah
sebagai berikut :
#idReport
#tipeReport
Berikut adalah class diagram dengan atribut yang sudah
dikaji ulang :
86

class Method Class Diagr...

ProsesModifikasiData
SI_Alumni
- dataalumni: data alumni
- idTrans: String
- pengguna: pengguna
- tglTrans: Date

0..*

Mesin_Host

- hostName: Sting
Repair/Update - ipAddres: Sting
System

Data_Alumni
Pengguna
- alamat: String
- password: String
- jk: Sting 1
- jurusan: String - tipePengguna: String
- userName: String
- nama: String
Add or Modify Data
- rerataNilai: int
- status: String 1..* 1
- tahunLulus: String
- tempatLahir: String
1..*
- tglLahir: Date

Display
Report

1..*

Report_data_alumni

- idReport: int
- tipeReport: int

ProsesPencatatanData

- dataAlumni: Data Alumni


- idTrans: String
- pengguna: Pengguna
- tglTrans: Date

Gambar 4.1 : Class Diagram dengan atribut yang sudah dikaji


ulang (refine)

4.4.2 Refine Method-method Kelas


Sebagaimana method-methode yang telah teridentifikasi pada
bab sebelumnya (lihat gambar 3.21), pada tahap ini method-method
tersebut akan ditinjau ulang dengan menambahkan beberapa informasi
berupa visibilitas (visibility) dari masing-masing method pada kelas.
Berikut format suatu method berdasarkan notasi Unified Modelling
Language (UML) :
visibility name : (parameter-list) : return-type-expression
Berikut beberapa visibilitas suatu method :
+ public visibility (dapat diakses pada seluruh kelas)
87

# protected visibility (dapat diakses oleh subclass dan method


pada kelas yang bersangkutan)
– private visibility (hanya dapat diakses pada kelas yang
memilikinya)
Parameter–list menunjukan daftar parameter, nilainya
berdasarkan tipe dan expresi datanya. Sedangkan return-type-
expression adalah nilai balik yang dihasilkan dari method yang
bersangkutan. Contoh suatu format method :
+getName() : aName
#getAccountnumber (account:type) : account Number

Berikut tabel yang menunjukan method pada masing-masing kelas :

Tabel 4.1 : Refine Method-method Kelas


Kelas Method
Kelas Pengguna +verifikasiPengguna()
Kelas SiAlumni +connectToDatabase
Kelas DataAlumni +getAll()
+insertAlumni()
+updateAlumni()
+deleteAlumni()
+getByID()
Kelas MesinHost +connectToServer
Kelas ProsesPencatatanData #setIdTrans()
#setTglTrans()
Kelas ProsesModifikasiData #setIdTrans()
#setTglTrans()
Kelas ReportAlumni #printReport
88

class Method Class Diagr...

ProsesModifikasiData SI_Alumni
- dataalumni: data alumni
- idTrans: String + connectToDatabase() : void
- pengguna: pengguna
- tglT rans: Date

- setTglTrans() : void
- stIdT rans() : void
0..*

Mesin_Host

- hostName: Sting
Repair/Update - ipAddres: Sting
System
+ connectToServer() : void

Data_Alumni
Pengguna
- alamat: String
- jk: Sting - password: String
1
- jurusan: String - tipePengguna: String
- nama: String - userName: String
Add or Modify Data
- rerataNilai: int
- status: String 1..* 1 + verifikasiPengguna() : void
- tahunLulus: String
- tempatLahir: String 1..*
- tglLahir: Date

+ getAll() : void
+ getById() : void Display
+ getByName() : void Report
+ hapusAlumni() : void
+ insertAlumni() : void
+ updateAlumni() : void
1..*

Report_data_alumni

- idReport: int
- tipeReport: int

- printReport() : void
ProsesPencatatanData

- dataAlumni: Data Alumni


- idT rans: String
- pengguna: Pengguna
- tglTrans: Date

- setIdTrans() : void
- setT glT rans() : void

Gambar 4.2 : Class Diagram dengan method yang sudah dikaji ulang
(refine)

4.5 Perancangan layer akses (data storage)


4.5.1 Perancangan Database.
Sebagaimana dijelaskan sebelumnya bahwa perancangan
basisdata pada sistem yang diusulkan adalah menggunakan MySQL.
Berikut gambaran umum koneksi antar interface sistem dengan sistem
basisdata MySQL :
89

Gambar 4.3 : Perancangan koneksi basisdata pada Sistem

4.5.2 Perancangan Struktur Tabel


Pada basisdata yang dirancang pada sistem terdapat beberapa
tabel yang akan menjadi sumber data pada sistem. Tabel-tabel yang
dirancang diambil dari kelas-kelas yang telah teridentifikasi (lihat tabel
3.5), yang berupa kelas layer akses (kelas yang menunjukan basisdata).
Dari kelas-kelas yang terpilih, berikut adalah kelas-kelas yang
menunjukan kelas layer akses :
1. Pengguna
2. Data Alumni
Jika kita terjemahkan dalam bentuk tabel, maka hasilnya
sebagai berikut :
1. Pengguna: Tabel user
2. Data Alumni : Tabel alumni

4.5.3 Penerapan Atribut dan Tipe data


Tabel-tabel yang ada pada basisdata sistem tentu memiliki
field/atribut serta tipedata untuksetiapfield/atributnya, berikut
penjelasan rinci pada masing-masing tabel pada database :

1. Tabel user
Tabel ini menyimpan data pengguna pada sistem, berikut struktur
dari tabel pengguna:
90

Tabel 4.2 : Struktur Tabel User


Atribut/Field Tipe data Constraint
username Varchar (15) PRIMARY KEY
NOT NULL
password Varchar (15) NOT NULL
Password Char
tipePengguna Varchar (15) NOT NULL

Gambar 4.4 : Desain tabel user pada MySQL administrator

Berikut Statement SQL untuk tabel user :


CREATE TABLE `sialumni`.`user` (
`username` VARCHAR(15) NOT NULL,
`password` VARCHAR(15) NOT NULL,
`tipepengguna` VARCHAR(15) NOT NULL,
PRIMARY KEY(`username`)
)
TYPE = InnoDB
COMMENT = 'tabel data alumni';
91

2. Tabel alumni
Tabel ini menyimpan data alumni pada sistem, berikut struktur
dari tabel alumni :

Tabel 4.3: Struktur Tabel Alumni


Atribut/Field Tipe data Constraint
noInduk Integer PRIMARY KEY
NOT NULL
namaDepan Varchar(25) NOT NULL
namaBelakang Varchar (25) NULL
Jk Varchar(10) NOT NULL
tempatLahir Varcar(25) NOT NULL
alamat Varchar(100) NOT NULL
tglLahir Date NOT NULL
jurusan Varchar (25) NOT NULL
status Varchar (30) NOT NULL
tahunLulus Varchar(4) NOT NULL
rerataNilai Integer NOT NULL
92

Gambar 4.5 : Desain tabel alumni pada MySQL administrator


Berikut Statement SQL untuk tabel alumni :
CREATE TABLE `sialumni`.`alumni` (
`noInduk` INTEGER UNSIGNED NOT NULL
AUTO_INCREMENT,
`namaDepan` VARCHAR(25) NOT NULL,
`namabelakang` VARCHAR(25) NOT NULL,
`jk` VARCHAR(10) NOT NULL,
`tempatLahir` VARCHAR(25) NOT NULL,
`tglLahir` DATETIME NOT NULL,
`jurusan` VARCHAR(25) NOT NULL,
`status` VARCHAR(25) NOT NULL,
`rerataNilai` VARCHAR(25) NOT NULL,
PRIMARY KEY(`noInduk`)
)
TYPE = InnoDB
COMMENT = 'tabel data alumni';

4.6 Perancangan Layer View


Layer view pada sistem yang akan dirancang menunjukan antarmuka
pengguna (user interface / UI) yang menjembatani interaksi antar
pengguna/aktor dengan sistem. Interface yang dirancang berdasarkan interkasi
antar aktor dengan sistem yang telah teridentifikasi pada tahap analisis (lihat
gambar 3.3 – 3.6), user interface akan dirancang untuk seluruh use case yang
memiliki interaksi langsung dengan sistem. Berikut adalah use case yang
berinteraksi langsung dengan sistem :
1. Use case interaksi dengan sistem - merupakan use case yang
berkaitan dengan aktivitas sistem secara keseluruhan. (lihat gambar
3.3)
2. Use case Registrasi pengguna (lihat Gambar 3.6)
3. Use case Mencatat dan Modifikasi data Alumni (lihat Gambar 3.4)
93

4. Use case Melihat data Alumni (lihat gambar 3.5)


Berdasarkan use case di atas maka akan dirancang lima objek user
interface (UI). Pada tahap perancangan, objek interfacenya dirancang
berdasarkan sequence dan collaboration diagram pada bab sebelumnya (lihat
Gambar 3.7-3.17). berikut adalah objek-objek user interface (UI) yang akan di
rancang :
1. MenuUtamaUI untuk Use case interaksi dengan sistem
2. LoginUI untuk Use case interaksi dengan sistem
3. RegistrasiPenggunaUI untuk Use case Registrasi pengguna
4. PentatatanDanModifikasiDataUI untuk Use case Mencatat dan
Modifikasi data Alumni
5. PrintReportUI untuk Use case Melihat data Alumni
Interface-interface di atas merupakan kelas-kelas pada layer view
(view class) pada sistem yang dirancang. Sampai pada tahap ini, telah
teridentifikasi tiga lapisan kelas : kelas-kelas bisnis (lihat Gambar 3.19),
kelas-kelas akses (database), serta kelas-kelas view yang teridentifikasi di atas.
Berikut diagram kelas yang menunjukan relasi antar kelas pada sistem yang
dirancang (Gambar 4.6) :
94

class Class Diagram

Kelas Bisnis
Kelas View

SI_Alumni
Mesin_Host
ProsesModifikasiData
MenuUtamaUI RegistrasiPenggunaUI
LoginUI
Kelas Akses

database sialumni

Data Alumni
Pengguna PencatatanDanModifikasiDataUI
sistem
administration
add or modify PrintReportUI

Display report

Report_data_alumni

ProsesPencatatanData

Gambar 4.6 : kelas diagram yang terdiri dari kelas objek, kelas akses dan kelas view
95

4.6.1 Struktur Navigasi Menu


Navigasi menu digunakan untuk memudahkan pengguna dalam
mengakses suatu perintah atau objek pada sistem yang diusulkan.
Perancangan struktus menu dirancang berdasarkan prinsip interaksi
manusia dan komputer (IMK) serta memperlihatkan alur informasi dari
suatu sistem yang terdiri dari bagian input, output, proses dan data
storage. Berikut adalah struktur menu yang diusulkan :

Gambar 4.7 : Struktur Menu SI Alumni

Sebagaimana analisis pada Bab III, aktor yang akan menjadi


pengguna pada sistem yang diuulkan memiliki hak akses yang berbeda
terhadap sistem. Aktor yang berlaku sebagai Administrator akan
memiliki hak akses yang lebih dibanding aktor yang berlaku sebagai
operator atau user. Berikut adalah tabel hak akses menu pada sistem
untuk masing-masing aktor :
96

Tabel 4.5 : Perancangan Hak Akses Aktor


Aktor
No Menu
Administrator Operator User
1 Login   
2 Keluar   
3 Input data alumni   
5 Registrasi pengguna   
6 Cetak data alumni   
8 Petunjuk   

4.6.2 Rancangan Antarmuka (Interface)


Antarmuka yang digambarkan pada tahap ini berdasarkan kelas
view yang teridentifikasi di atas (lihat Gambar 4.7). berikut
rancangannya :

1. MenuUtamaUI
MenuUtamaUI merupakan interface yang menunjukan
aktivitas pengguna dengan sistem secara keseluruhan. Objek ini
merupakan interface dari use case interaksi dengan sistem dan
layer dari kelas S I Alumni (lihat Gambar 4.7). berikut rancangan
tampilannya (Gambar 4.9):
97

Gambar 4.8 : Rancangan Menu Utama

2. LoginUI
LoginUI merupakan interface pada proses verifikasi
pengguna, dimana setiap pengguna diminta untuk memasukan
username dan password untuk dapat mengakses menu utama dari
sistem. Berikut rancangan tampilannya (Gambar 4.11) :

Gambar 4.9 : Rancangan Form Login pada LoginUI


98

3. RegistrasiPenggunaUI
RegistrasiPenggunaUI merupakan interface untuk kelas
Registrasi pengguna, dimana pengguna yang berlaku sebagai
admin melakukan pencatatan dan modifikasi data pengguna yang
nantinya akan diberi hak untuk mengakses sistem. Berikut
rancangan tampilannya (Gambar 4.11) :

Gambar 4.10 : Rancangan Form Registrasi Pengguna pada


RegistrasiPenggunaUI

4. PentatatanDanModifikasiDataUI
PencatatanDanModifikasiUI terdiri dari form pencatatan
data alumni. Form ini disediakan untuk operator untuk proses
pencatatan dan modifikasi data alumni serta menyimpannya ke
dalam database. Berikut rancangan tampilannya (gambar 4.12) :
99

Gambar 4.11 : Rancangan Form Input data Alumni

Pada perancangan di atas terlihat beberapa interface yang akan


dirancang pada sistem, akan tetapi interface-interface di atas belum
mewakili seluruh tampilan pada sistem yang dirancang. Hal ini
dikarenakan sistem yang dirancang berupa aplikasi berbasis client- server
sedangkan pada perancangan di atas hanya rancangan tampilan pada sisi
client.
Tampilan pada sisi server merupakan tampilan yang dieksekusi
untuk menjalankan service-service pada server. Pada rancangan
tampilannya, interface server hanya berupa form yang berisi indikator
serta log massages yang menampilkan koneksi serta method-method yang
dipanggil oleh client. Berikut rancangan tampilannya (Gambar 4.13) :
100

Gambar 4.12 : Interface server side

Pada sistem yang dirancang juga tidak hanya menampilkan data


dalam bentuk form, akan tetapi untuk pengguna yang berlaku sebagai user
data disajikan dalam bentuk report yang bersifat read-only. Berikut
contoh desain report pada sistem yang dirancang (Gambar 4.15 - 4.16) :

Gambar 4.13 : Desain report data Alumni


101

4.6.3 Prototipe Antarmuka (Interface Prototype)


Dari rancangan antarmuka yang dijelaskan sebelumnya, tahap
selanjutnya adalah perncangan prototipe dari antaramuka sistem yang
diusulkan. Dalam merancang prototipe, penulis menggunakan
Netbeans IDE 6.8 sebagai tool perancangannya. Berikut antarmuka
prototipe sistem yang diusulkan :

1. Splash screen
Berikut adalah tampilah splash screen pada sistem
informasi pengolahan data alumni :

Gambar 4.14 : Splash screen SI Alumni

2. MenuUtamaUI

Gambar 4.15 : Menu Utama


102

3. LoginUI

Gambar 4.16 : Form Login pada LoginUI

4. RegistrasiPenggunaUI
RegistrasiPenggunaUI merupakan interface untuk kelas
Registrasi pengguna, dimana pengguna yang berlaku sebagai
admin melakukan pencatatan dan modifikasi data pengguna yang
nantinya akan diberi hak untuk mengakses sistem. Berikut
rancangan tampilannya (Gambar 4.18) :

Gambar 4.17 : Form Registrasi Pengguna pada


RegistrasiPenggunaUI
103

5. PentatatanDanModifikasiDataUI

Gambar 4.18: Form Input Data Alumni

6. Server
Berikut prototipe antarmuka server :

Gambar 4.19 : Interface server side


BAB V
KESIMPULAN DAN SARAN

5.1 Kesimpulan
Berdasarkan hasil kajian dan tinjauan teori yang ada, kesimpulan yang
diambil dari hasil analisis dan pengembangan Sistem Informasi Pengolahan Data
Alumni di SMK Negeri 2 Garut adalah sebagai berikut:
1. Sistem Informasi Pengolahan Data Alumni telah mengakomodasi aktivitas
bisnis yang ada antara lain mempermudah user melakukan pencatatan,
pencarian dan pelaporan data.
2. Unified Approach (UA) dapat digunakan untuk pengembangan Sistem
Informasi Pengolahan Data Alumni di SMK Negeri 2 Garut.
3. Perancangan sistem dengan arsitektur client-server dengan
mengimplementaikan java RMI mampu mewakili proses-proses service
yang diminta oleh mesin client.
4. Sistem Informasi Pengolahan Data Alumni di SMK Negeri 2 Garut dapat
membantu sekolah dalam melaksanakan salah satu tugasnya yaitu
memberikan pelayanan kepada alumni dan pihak lain dalam hal ini yaitu
perusahan yang bekerja sama dengan sekolah yang membutuhkan data-data
alumni dan juga membantu sekolah dalam hal pengembangan program studi
yang ada di SMK Negeri 2 Garut.

5.2 Saran
Sebagaimana yang dijelaskan sebelumnya, bahwa penelitian ini hanya
sampai pada tahapan prototipe, serta modul yang diimplementasikan hanya pada
proses pencatatan data, maka berdasarkan hal itu penulis menyarankan :
1. Mengaharapkan kritik dan saran yang dapat membangun demi
kesempurnaan penyusunan laporan Tugas Akhir ini
2. Diharapkan pada nantinya di rancang Sistem Informasi Pengolahan Data
Alumni secara utuh sampai pada tahap implementasi.

104
DAFTAR PUSTAKA

Amsyah, Zulkifli, “Manajemen Sistem Informasi”, Gramedia Pustaka Utama,


Jakarta, 1997.
Bahrami, Ali. “Object Oriented System Development”. Irwin-McGraw-Hill,
Singapore, 1999.
Booch, Grady; Jacobson, Ivar; and Rumbaugh, James., ”The Unified Modeling
Language User Guide”., Addison Wesley Longman, Inc.,
Massachusetts., 1999.
Fatta, Hanif Al, ”Perancangan Sistem Informasi & Analisis Desain”, Andi,
Yogyakarta, 2009.
Grosso, William., “Java MI”., O’reilly, 2001.
Hartono, Jogiyanto., MBA., Akt., Ph.D. “Analisis & Desain Sistem Informasi:
Pendekatan terstruktur teori dan praktek aplikasi bisnis”. ANDI,
Yogyakarta, 1999.
Haryadi, Hendi, “Administrasi Perkantoran Untuk Manajer & Staf”, Visimedia,
Jakarta, 2009.
Kristanto, Andi., ”Perancangan Sistem Infomasi dan Aplikasinya”., Gavamedia,
Yogyakata, 1999
Laudon, Kenneth C. dan Laudon, Jane P., “Management Information Systems :
Managing The Digital Firm 9th Edition”., Pearson Prentice Hall,
Pearson Education, Inc., 2000.
Long, Larry dan Long Nancy., ”Introduction to Computers & Information
Systems”. Prentice Hall International, 1997.
Muchalil, Sayed., Remote Methode Invocation Pada Bahasa Pemograman Java
Sebagai alternatif pemrograman client server., Jurusan Teknik
Elekto Univ. Syiah Kuala, 2006.
Rochaety, Eti, “Sistem Informasi Manajemen Pendidikan”, Bumi Aksara,
Yogyakarta, 2006.
Santosa, Insap, “Interaksi Manusia dan Komputer Teori dan Praktek”, Andi,
Yogyakarta, 2004.
Silalahi, Ulbert, “Studi Tentang Ilmu Administrasi”, Sinar Baru Algensindo,
Bandung, 2009.
Wijono, Matius Soesilo.dkk, ”Java2SE dengan Jbuilder”, ANDI Yogyakarta.,
2004.
Whitten, Jeffery L., Lonnie D. Bentley, & Kevin C. Dittman. ”Metoda Desain
dan Analisis Sistem (Edisi-6)”. ANDI and McGraw-Hill Education,
2004.
LAMPIRAN-LAMPIRAN
Lampiran 1 (Kondisi Objektif SMK Negeri 2 Garut)
Profil SMK Negeri 2 Garut
SMKN 2 Garut atau pada awalnya dikenal sebagau STM Negeri, adalah salah
satu Lembaga Pendidikan tingkat menengah kejuruan negeri yang berada di
kabupaten Garut yang turut serta telah berkiprah meningkatkan berbagai kinerja
dalam rangka mencapai sasaran utama, yaitu unggul, berkembang dan berprestasi
dalam Ilmu Pengetahuan dan Teknologi (IPTEK) serta menghasilkan tamatan yang
mampu bekerja mandiri, dapat bersaing di pasar kerja tingkat nasional dan
internasional dengan dilandasi Iman dan Taqwa.
SMKN 2 Garut didirikan pada tahun 1965 dengan luas tanah 33,160 M2
dengan izin operasional.
Nomor : 118/DIR.PT/B.1/1965
Tanggal : 3 Agustus 1965
SMKN 2 Garut telah berkembang sedemikian rupa menjadi Sekolah Rintisan
Berstandar Internasional, serta telah tersertifikasi ISO 2001 yang merupakan
perwujudan komitmen kepala sekolah, komite, guru dan seluruh stakeholders dalam
membangun sekolah teknik berkualitas Internasional di Garut.

Visi Misi
Visi :
Unggul, berkembang dan berprestasi dalam Ilmu Pengetahuan dan
Teknologi (IPTEK) serta menghasilkan tamatan yang mampu
bekerja mandiri, dapat bersaing di pasar kerja tingkat nasional dan
internasional dengan dilandasi Iman dan Taqwa.

Misi : • Menyelenggarakan pengelolaan sekolah dengan menggunakan


pendekatan manajamen bisnis, sebagai usaha membangun
Sumber Daya Manusia yang handal, dalam pembentukan
manusia cerdas, terampil, mampu mengembangkan potensi
dalam bidang keakhliannya dan dapat hidup mandiri serta
beriman dan bertaqwa Kepada Tuhan Yang Maha Esa
• Mengembangkan dan melaksanakan proses pendidikan dan
pelatihan sejalan dengan perkembangan Ilmu Pengetahuan dan
Teknologi (IPTEK) dan tuntutan pasar kerja melalui
pembelajaran yang berkualitas serta dilandasi iman dan taqwa
kepada Tuhan Yang Maha Esa.
• Mencari peluang-peluang untuk menerapkan pendidikan dan
pelatihan sesuai plat form Internasional dan mencobakan
standar-standar dan plat form Internasional melalui kerja sama
dengan industri, dan mendorong mengadakan Diklat jangka
pendek sesuai kebutuhan industri setempat.
• Pengembangan sistem dan menyelenggarakan asistensi usaha
sendiri dalam pengelolaan bantuan modal usaha, serta melatih
tenaga pendidik untuk mengembangkan unit produksi sekolah

Struktur Organisasi SMKN 2 Garut

Gambar Struktur Organisasi SMKN 2 Garut

Deskripsi Jabatan Tenaga kependidikan


Berdasarkan struktur, tugas pokok dan fungsinya masing-masing, maka
tenaga kependidikan di SMKN 2 Garut dapat dijelaskan dalam tabel di bawah ini :
Tabel Deskripsi jabatan tenaga kependidikan
No Nama Jabatan Deskripsi Tugas
1 Kepala sekolah Bertanggung jawab atas keseluruhan
kegiatan penyelenggaraan pendidikan di
sekolah baik ke dalam maupun ke luar
yakni dengan melaksanakan segala
kebijaksanaan, peraturan dan ketentuan
yang ditetapkan oleh lembaga yang lebih
tinggi.
2 Wakasek Bertanggung jawab membantu Kepala
Urusan sekolah dalam menyelenggarakan
Kurikulum kegiatan-kegiatan yang berkaitan
langsung dengan pelaksanaan kurikulum
dan proses belajar mengajar
3 Wakasek Bertanggung jawab membantu kepala
Urusan sekolah dalam penyelenggaraan
Kesiswaan kegiatan-kegiatan kesiswaan dan ekstra
kurikuler.
4 Wakasek urusan Bertanggung jawab atas kegiatan-
Sarana Prasana kegiatan inventarisasi pendayagunaan
dan pemeliharaan sarana dan prasarana
serta keuangan sekolah.
5 Wakasek Bertanggung jawab membantu kepala
Urusan Khusus/ sekolah dalam penyelenggaraan
Koordinator pelayanan khusus, seperti hubungan
BP/BK masyarakat, bimbingan dan penyuluhan,
usaha kesehatan sekolah dan
perpustakaan sekolah.
6 Guru Bertanggung jawab atas pelaksanaan
tugas mengajar peserta didik.
7 Petugas Tata Bertanggung jawab atas penyelenggaraan
Usaha kegiatan-kegiatan dan pelayanan
administratif atau teknis operasional
pendidikan di sekolah.
8 Komite Sekolah Merumuskan/menetapkan program
tahunan sekolah sebagai penjabaran dari
program stratejik sekolah. Memantau
kinerja sekolah secara menyeluruh dan
kontinyu, meliputi konerja dan
kepemimpinan kepala sekolah, kinerja
manajemen sekolah, kinerja guru dan
mutu proses belajar mengajar, hasil
belajar siswa, disiplin dan tata tertib
sekolah, serta prestasi sekolah bidang
akademik maupun non akademik.

Selain jabatan-jabatan di atas, terdapat pula beberapa tenaga teknis maupun


tenaga fungsional diantaranya pustakawan (petugas perpustakaan), laboran,
koordinator ruang multimedia, operator Internet, petugas kebersiahan dan Keamanan.

Batasan Sistem Secara Fungsional


Fungsi Substantif
Pengelolaan data alumni merupakan proses yang di lakukan sekolah untuk
mengkoordinir data alumni yang pada saat ini proses pencatatan data alumni di SMKN
2 Garut masih terpaku pada buku induk. Oleh karena itu masalah yang sering terjadi
adalah pengklasifikasian data alumni belum rapi, pencarian data dan informasi
dibutuhkan waktu lama. Sistem informasi pengolahan data alumni diharapkan proses
pencatatan dan pencarian data alumni lebih cepat. Pada pihak sekolah bertujuan untuk
mengidentifikasi program studi apa yang paling banyak dibutuhkan di dunia kerja yang
nantinya bisa dipakai sekolah untuk perkembangan sekolah dalam hal ini
perkembangan program studi apakah akan ditambah kelas atau ganti dengan program
studi lain. Pada pihak lain dalam hal ini perusahaan akan relatif mudah mendapatkan
informasi data alumni yang sesuai dengan kualifikasi tertentu yang dibutuhkan.
Fungsi Fasilitatif
Fungsi fasilitatif menggambarkan kelompok kegiatan pendukung dari sistem
informasi penjadwalan pelajaran. Adapun perangkat kegiatan pendukung tersebut
meliputi:
1. Kepala Sekolah yang berperan sebagai pengawas dari pengolahan data alumni
agar berjalan dengan lancar dan sesuai dengan keinginan semua pihak.
2. Tata Usaha, berperan sebagai user yang berhubungan dengan sistem dan
mengolah data yang di ambil dari buku induk perprogram studi.
3. Alumni, berperan sebagai penerima data alumni yang telah dibuat.

Lampiran 2 (Analisis Kebutuhan Sistem (System Requirement))


Dalam merancang Sistem Informasi Pengolahan Data Alumni terdapat beberapa
hal yang mesti diperhatikan agar sistem yang dirancang benar-benar dapat
mengakomodasi setiap kegiatan yang ada pada lingkungan sistem, tanpa mengurangi
fungsi-fungsi yang ada pada sistem yang berjalan (current system). Adapun hal-hal
yang harus diperhatikan adalah sebagai berikut :
• Sistem yang dirancang dapat memberikan hak akses pada setiap pengguna baik
untuk administrator, operator maupun user.
• Aktor yang berlaku sebagai Administrator dapat mengakses semua method dari
antarmuka sistem serta melakukan perbaikan kerusakan sistem jika terjadi
kerusakan (crash).
• Sistem yang dirancang memiliki sistem keamanan (verifikasi pengguna)
• Pada sistem yang dirancang terdapat form pencatatan data alumni
• Pada sistem yang dirancanag terdapat form pemeliharaan data alumni (hapus dan
update) data alumni
• Sistem yang dirancang dapat menampilkan laporan rekapitulasi data alumni secara
keseluruhan dan berdasarakan kategori tertentu.
• Sistem yang dirancang menggunakan teknologi Java Remote Method Invocation
(RMI), sehingga sistem memungkinkan untuk diakses secara jaringan dan tidak
tergantung pada satu Sistem Operasi (Multi Platform)
Lampiran 3 Gambaran Umum Sistem yang Di Rancang
Tahap perancangan sistem didasarkan pada tahap analisis sebelumnya. Dalam
metodelogi pengembangan sistem berorientasi objek dengan pendekatan unified, tahap
perancangan sistem terdiri dari beberepa tahapan mulai refine (memperbaiki) kelas-kelas
yang teridentifikasi pada tahap analisis, berdasarkan atribut, struktur, method serta
relasinya.
Kelas-kelas yang teridentifikasi pada tahap analisis akan menjadi ranacangan awal
pada perancangan kelas untuk sistem yang diusulkan. Kelas-kelas tersebut kemudian
ditinjau kembali strukturnya disesuaikan dengan kebutuhan pada tahap perancangan.
Kebutuhan kelas pada sistem yang diusulkan disesuaikan pula dengan basis
pemograman yang digunakan pada tahap perancangan sistem. Seperti yang sudah
dijelaskan pada bab-bab sebelumnya bahwa sistem informasi yang akan dirancang pada
penelitian ini merupakan sistem informasi yang berbasis bahasa pemrograman Java
remote method invokes (Java-RMI) serta arsitektur jaringan menggunakan arsitektur
client-server, dimana pada lapisan view-nya terdapat dua interface, interface client
(bagian yang melakukan request method dan akses basisdata) dan interface server (bagian
yang menyediakan layanan berupa method serta layanan akses basisdata). Berikut
arsitektur pemanggilan method pada aplikasi berbasis Java RMI :

Gambar Arsitektur Java RMI pada sistem yang akan dirancang

Teknologi pada Sistem


Perancangan sistem yang diusulkan ini melibatkan beberapa teknologi yang
membangun sistem secara keseluruhan, berikut deskripsi teknologi yang digunakan
pada sistem yang dirancang :
1. Sistem Informasi yang diusulkan berupa sebuah paket software yang dibangun
menggunakan bahasa pemrograman Java 2 Standar Edition dengan
mengimplementasikan package remote method invokes (java.rmi.*), sedangkan
code generator/editor-nya menggunkan Netbeans IDE 6.8.
2. Pada perancangan lapisan akses manajemen basisdata (DBMS) menggunakan
MySQL versi 5.0 dengan tool MySQL Administrator, MySQL Query browser,
dan MySQL Front 1.0.
3. Sistem Operasi yang digunakan adalah sistem operasi berbasis Microsoft windows
dan sistem operasi berbasis Linux Distro Ubuntu 10.4 dengan Gnome desktop.
4. Arsitektur jaringan pada sistem menggunakan arsitektur client server, dimana
sistem terbadi dua sisi (side), client side dan server side. Port yang digunakan
adalah 1099, yang merupakan port standar koneksi RMI.
5. Media transmisi pada koneksi jaringan menggunakan kabel dan wireless.

Spesifikasi Kebutuhan Minimal Hardware


Pada perancangan sistem informasi pengolahan data alumni yang diusulkan
diharapkan dapat berjalan dengan spesifikasi minimal perangkat keras yang sebagai
berikut :
a. Mesin Server
1. Motherboard dan Processor minimal setara intel Pentium IV, karena software
yang dirancang direncanakan hanya menggunakan CPU usage sekitar 800
MHz - 1 GHz.
2. Memori (RAM) 512 MB, karena penggunaan memory untuk software serta
keseluruhan service pada sistem berkisar sekitar 200-350 Mb.
3. Display Adapter (VGA) 32 Mb untuk kebutuhan grafis pada sistem.
4. Ruang kosong pada hardisk minimal 10 MB untuk aplikasi, dan 100 MB
untuk database.
5. Ethernet card/Wireless Adapter karena sistem yang dirancang dibangun
dengan arsitektur jaringan.
6. Input device: Mouse dan Keyboard
7. Output Device : Monitor

b. Mesin Client
1. Motherboard dan Processor minimal setara intel Pentium IV, karena software
yang dirancang direncakan hanya menggunakan CPU usage sekitar 800 MHz -
1 GHz.
2. Memori (RAM) 128 MB, karena penggunaan memory untuk software serta
keseluruhan service pada sistem berkisar sekitar 200-350 Mb.
3. Display Adapter (VGA) 32 Mb untuk kebutuhan grafis pada sistem.
4. Ruang kosong pada hardisk minimal 10 MB untuk aplikasi.
5. Ethernet card /Wireless Adapter karena sistem yang dirancang dibangun
dengan arsitektur jaringan.
6. Input device: Mouse dan Keyboard
7. Output Device : Monitor, Printer

Arsitektur Sistem
Berdasarkan deskripsi umum serta teknologi yang digunakan maka berikut
gambaran arstiketur pada sistem yang dirancang:

Gambar Arsitektur Sistem yang diusulkan

Pada Gambar di atas terlihat rancangan arsitektur sistem informasi yang


diusulkan. Setiap Client di lingkungan sistem melakukan request kepada sever
aplikasi, serta server aplikasi memberikan respon berupa layanan-layanan sesuai yang
dipanggil oleh client. Begitu juga jika ada pemanggilan basisdata, aplikasi server
melakukan request kepda server database (DBMS), kemudian server database
memberikan data sesuai data yang dipanggil.
Perancangan arsitektur sistem mengimplementasikan arsitektur three-tier,
dimana terdapat dua buah server, yaitu server database dan server aplikasi.
Lampiran 4
Source Code & Screenshoot
SI Alumni
Sistem Informasi Pengolahan Data Alumni
SMK Negeri 2 Garut
Dibuat Dengan Menggunakan Bahasa Pemrograman Java Versi 1.6

Library
package nopawijaya.api.entity;

import java.io.Serializable; this.jurusan = jurusan;


import java.util.Date; }

public String getNamaBelakang()


/** {
* return namaBelakang;
* @author Deden-pc }
*/
public class Alumni implements public void
Serializable { setNamaBelakang(String namaBelakang)
private String noInduk; {
private String namaDepan; this.namaBelakang =
private String namaBelakang; namaBelakang;
private String alamat; }
private String jk;
private String jurusan; public String getNamaDepan() {
private String tempatLahir; return namaDepan;
private Date tanggalLahir; }
private String status;
private String tahunLulus; public void setNamaDepan(String
private String rerataNilai; namaDepan) {
this.namaDepan = namaDepan;
public String getAlamat() { }
return alamat;
} public String getNoInduk() {
return noInduk;
public void setAlamat(String }
alamat) {
this.alamat = alamat; public void setNoInduk(String
} noInduk) {
this.noInduk = noInduk;
public String getJk() { }
return jk;
} public String getRerataNilai() {
return rerataNilai;
public void setJk(String jk) { }
this.jk = jk;
} public void
setRerataNilai(String rerataNilai) {
public String getJurusan() { this.rerataNilai =
return jurusan; rerataNilai;
} }

public void setJurusan(String public String getStatus() {


jurusan) { return status;
}
public void setTanggalLahir(Date
public void setStatus(String tanggalLahir) {
status) { this.tanggalLahir =
this.status = status; tanggalLahir;
} }

public String getTahunLulus() { public String getTempatLahir() {


return tahunLulus; return tempatLahir;
} }

public void setTahunLulus(String public void


tahunLulus) { setTempatLahir(String tempatLahir) {
this.tahunLulus = this.tempatLahir =
tahunLulus; tempatLahir;
} }

public Date getTanggalLahir() {


return tanggalLahir;
} }

package nopawijaya.api.entity;

import java.io.Serializable; return tipePengguna;


}
/**
* public void
* @author Deden-pc setTipePengguna(String
*/ tipePengguna) {
public class Pengguna implements this.tipePengguna =
Serializable{ tipePengguna;
private String username,password, }
tipePengguna;
public String getUsername() {
public String getPassword() { return username;
return password; }
}
public void setUsername(String
public void setPassword(String username) {
password) { this.username = username;
this.password = password; }
}
}
public String
getTipePengguna() {

package nopawijaya.api.service;

import java.rmi.Remote; Alumni insertAlumni (Alumni


import java.rmi.RemoteException; a)throws RemoteException;
import java.util.List; void updateAlumni (Alumni
import a)throws RemoteException;
nopawijaya.api.entity.Alumni; void deleteAlumni (String
noInduk)throws RemoteException;
/** Alumni getAlumni(String
* @author Deden-pc noInduk)throws RemoteException;
*/ List<Alumni> getAlumni()throws
public interface AlumniService RemoteException;
extends Remote { public void writeLog(String
string) throws RemoteException;
package nopawijaya.api.service;

import java.rmi.Remote; void updatePengguna (Pengguna


import java.rmi.RemoteException; p)throws RemoteException;
import java.util.List; void deletePengguna (String
import username)throws RemoteException;
nopawijaya.api.entity.Pengguna; Pengguna getPengguna(String
username)throws RemoteException;
/** List<Pengguna>
* getPengguna()throws
* @author Deden-pc RemoteException;
*/ public void writeLog(String
public interface PenggunaService string) throws RemoteException;
extends Remote{ }
Pengguna insertPengguna
(Pengguna p)throws
RemoteException;

Interface Client
Form Data Alumni

package nopawijaya.client.gui;
import java.rmi.RemoteException; public class FormAlumni extends
import java.util.Date; javax.swing.JFrame {
import java.util.List; private TabelModelAlumni
import tabelModelAlumni = new
javax.swing.event.ListSelectionEve TabelModelAlumni();
nt; private AlumniService as;
import
javax.swing.event.ListSelectionLis /** Creates new form
tener; FormAlumni */
import
nopawijaya.api.entity.Alumni; public
import FormAlumni(AlumniService
nopawijaya.api.service.AlumniServi alumniService) {
ce; this.as = alumniService;
import try{
nopawijaya.client.model.TabelModel
Alumni; tabelModelAlumni.setData(this.as.g
etAlumni());
}catch(RemoteException
/** ex){
* ex.printStackTrace();
* @author Deden-pc }
*/ initComponents();
* WARNING: Do NOT modify this
tblAlumni.setModel(tabelModelAlumn code. The content of this method
i); is
* always regenerated by the
tblAlumni.getSelectionModel().addL Form Editor.
istSelectionListener(new */
ListSelectionListener() { @SuppressWarnings("unchecked")
// <editor-fold
public void defaultstate="collapsed"
valueChanged(ListSelectionEvent e) desc="Generated Code">
{ private void initComponents()
int row = {
tblAlumni.getSelectedRow();
if(row != -1){ jPanel1 = new
Alumni a = javax.swing.JPanel();
tabelModelAlumni.get(row); jLabel1 = new
javax.swing.JLabel();
txtNoInduk.setText(a.getNoInduk()) jLabel2 = new
; javax.swing.JLabel();
txtNamaDepan = new
txtNamaDepan.setText(a.getNamaDepa javax.swing.JTextField();
n()); jLabel3 = new
javax.swing.JLabel();
txtNamaBelakang.setText(a.getNamaB txtNamaBelakang = new
elakang()); javax.swing.JTextField();
jLabel4 = new
txtJk.setSelectedItem(a.getJk()); javax.swing.JLabel();
txtTanggalLahir = new
txtTempatLahir.setText(a.getTempat javax.swing.JFormattedTextField();
Lahir()); jLabel6 = new
javax.swing.JLabel();
txtTanggalLahir.setValue(a.getTang txtTempatLahir = new
galLahir()); javax.swing.JTextField();
jLabel8 = new
txtStatus.setSelectedItem(a.getJk( javax.swing.JLabel();
)); jLabel9 = new
javax.swing.JLabel();
txtAlamat.setText(a.getAlamat()); jLabel10 = new
javax.swing.JLabel();
txtJurusan.setSelectedItem(a.getJu jPanel2 = new
rusan()); javax.swing.JPanel();
btnInsert = new
txtStatus.setSelectedItem(a.getSta javax.swing.JButton();
tus()); btnUpdate = new
javax.swing.JButton();
txtTahunLulus.setText(a.getTahunLu btnDelete = new
lus()); javax.swing.JButton();
btnRefresh = new
txtRerataNilai.setValue(a.getRerat javax.swing.JButton();
aNilai()); jLabel12 = new
javax.swing.JLabel();
} txtAlamat = new
} javax.swing.JTextField();
}); txtTahunLulus = new
} javax.swing.JFormattedTextField();
txtNoInduk = new
/** This method is called from javax.swing.JTextField();
within the constructor to jScrollPane1 = new
* initialize the form. javax.swing.JScrollPane();
tblAlumni = new
javax.swing.JTable();
txtJk = new
javax.swing.JComboBox();
txtJurusan = new txtTanggalLahir.setFormatterFactor
javax.swing.JComboBox(); y(new
txtStatus = new javax.swing.text.DefaultFormatterF
javax.swing.JComboBox(); actory(new
jLabel11 = new javax.swing.text.DateFormatter(jav
javax.swing.JLabel(); a.text.DateFormat.getDateInstance(
txtRerataNilai = new java.text.DateFormat.LONG))));
javax.swing.JFormattedTextField();
jLabel5 = new txtTanggalLahir.setValue(new
javax.swing.JLabel(); java.util.Date());

jPanel1.add(txtTanggalLahir, new
setDefaultCloseOperation(javax.swi org.netbeans.lib.awtextra.Absolute
ng.WindowConstants.DISPOSE_ON_CLOS Constraints(300, 150, 135, -1));
E);
setTitle("Si Alumni jLabel6.setText("Jenis
Client"); Kelamin");
jPanel1.add(jLabel6, new
org.netbeans.lib.awtextra.Absolute
jPanel1.setBorder(javax.swing.Bord Constraints(20, 120, -1, -1));
erFactory.createTitledBorder("Alum
ni")); jPanel1.add(txtTempatLahir, new
org.netbeans.lib.awtextra.Absolute
jPanel1.setFocusable(false); Constraints(160, 150, 135, -1));
jPanel1.setLayout(new
org.netbeans.lib.awtextra.Absolute
Layout()); jLabel8.setText("Jurusan");
jPanel1.add(jLabel8, new
jLabel1.setText("No. org.netbeans.lib.awtextra.Absolute
Induk"); Constraints(470, 60, -1, -1));
jPanel1.add(jLabel1, new
org.netbeans.lib.awtextra.Absolute jLabel9.setText("Tahun
Constraints(20, 30, -1, -1)); Lulus");
jPanel1.add(jLabel9, new
jLabel2.setText("Nama org.netbeans.lib.awtextra.Absolute
Depan"); Constraints(470, 120, -1, -1));
jPanel1.add(jLabel2, new
org.netbeans.lib.awtextra.Absolute jLabel10.setText("Rerata
Constraints(20, 60, -1, -1)); Nilai");
jPanel1.add(txtNamaDepan, jPanel1.add(jLabel10, new
new org.netbeans.lib.awtextra.Absolute
org.netbeans.lib.awtextra.Absolute Constraints(470, 150, -1, -1));
Constraints(160, 60, 179, -1));
jPanel2.setLayout(new
jLabel3.setText("Nama java.awt.GridLayout(1, 0));
Belakang");
jPanel1.add(jLabel3, new btnInsert.setIcon(new
org.netbeans.lib.awtextra.Absolute javax.swing.ImageIcon(getClass().g
Constraints(20, 90, -1, -1)); etResource("/nopawijaya/client/ima
ge/disk.png"))); // NOI18N
jPanel1.add(txtNamaBelakang, new
org.netbeans.lib.awtextra.Absolute btnInsert.setText("Insert");
Constraints(160, 90, 179, -1));
btnInsert.addActionListener(new
jLabel4.setText("Tempat, java.awt.event.ActionListener() {
Tgl Lahir"); public void
jPanel1.add(jLabel4, new actionPerformed(java.awt.event.Act
org.netbeans.lib.awtextra.Absolute ionEvent evt) {
Constraints(20, 150, -1, -1));
jPanel1.add(jPanel2, new
btnInsertActionPerformed(evt); org.netbeans.lib.awtextra.Absolute
} Constraints(60, 200, 720, 30));
});
jPanel2.add(btnInsert);
jLabel12.setText("Alamat");
btnUpdate.setIcon(new jPanel1.add(jLabel12, new
javax.swing.ImageIcon(getClass().g org.netbeans.lib.awtextra.Absolute
etResource("/nopawijaya/client/ima Constraints(470, 30, -1, -1));
ge/plugin.png"))); // NOI18N jPanel1.add(txtAlamat, new
org.netbeans.lib.awtextra.Absolute
btnUpdate.setText("Update"); Constraints(610, 30, 276, -1));
jPanel1.add(txtTahunLulus,
btnUpdate.addActionListener(new new
java.awt.event.ActionListener() { org.netbeans.lib.awtextra.Absolute
public void Constraints(610, 120, 86, -1));
actionPerformed(java.awt.event.Act jPanel1.add(txtNoInduk,
ionEvent evt) { new
org.netbeans.lib.awtextra.Absolute
btnUpdateActionPerformed(evt); Constraints(160, 30, 105, -1));
}
}); tblAlumni.setModel(new
jPanel2.add(btnUpdate); javax.swing.table.DefaultTableMode
l(
btnDelete.setIcon(new new Object [][] {
javax.swing.ImageIcon(getClass().g {null, null, null,
etResource("/nopawijaya/client/ima null},
ge/bin_closed.png"))); // NOI18N {null, null, null,
null},
btnDelete.setText("Delete"); {null, null, null,
null},
btnDelete.addActionListener(new {null, null, null,
java.awt.event.ActionListener() { null}
public void },
actionPerformed(java.awt.event.Act new String [] {
ionEvent evt) { "Title 1", "Title
2", "Title 3", "Title 4"
btnDeleteActionPerformed(evt); }
} ));
});
jPanel2.add(btnDelete); jScrollPane1.setViewportView(tblAl
umni);
btnRefresh.setIcon(new
javax.swing.ImageIcon(getClass().g jPanel1.add(jScrollPane1,
etResource("/nopawijaya/client/ima new
ge/lifebuoy.png"))); // NOI18N org.netbeans.lib.awtextra.Absolute
Constraints(20, 260, 870, 210));
btnRefresh.setText("Refresh");
txtJk.setModel(new
btnRefresh.addActionListener(new javax.swing.DefaultComboBoxModel(n
java.awt.event.ActionListener() { ew String[] { "Pilih salah
public void satu..", "Lelaki", "Perempuan"
actionPerformed(java.awt.event.Act }));
ionEvent evt) { jPanel1.add(txtJk, new
org.netbeans.lib.awtextra.Absolute
btnRefreshActionPerformed(evt); Constraints(160, 120, 179, -1));
}
}); txtJurusan.setModel(new
jPanel2.add(btnRefresh); javax.swing.DefaultComboBoxModel(n
ew String[] { "Pilih salah
satu..", "T. Gambar Bangunan", "T.
Ketenagalistrikan", "T. Audio
Video", "T. Motor Otomotif", "T. .addGap(61, 61, 61)
Geologi Pertambangan", "T.
Multimedia", "T. Broadcasting" .addComponent(jLabel5,
})); javax.swing.GroupLayout.PREFERRED_
jPanel1.add(txtJurusan, SIZE, 178,
new javax.swing.GroupLayout.PREFERRED_
org.netbeans.lib.awtextra.Absolute SIZE))
Constraints(610, 60, 179, -1));
.addComponent(jPanel1,
txtStatus.setModel(new javax.swing.GroupLayout.PREFERRED_
javax.swing.DefaultComboBoxModel(n SIZE, 907,
ew String[] { "Pilih salah javax.swing.GroupLayout.PREFERRED_
satu..", "Bekerja", "Lanjut SIZE))
Sekolah", "Tidak Lanjut" }));
jPanel1.add(txtStatus, new .addContainerGap(28,
org.netbeans.lib.awtextra.Absolute Short.MAX_VALUE))
Constraints(610, 90, 179, -1)); );
layout.setVerticalGroup(

jLabel11.setText("Status"); layout.createParallelGroup(javax.s
jPanel1.add(jLabel11, new wing.GroupLayout.Alignment.LEADING
org.netbeans.lib.awtextra.Absolute )
Constraints(470, 90, -1, -1));
.addGroup(layout.createSequentialG
jPanel1.add(txtRerataNilai, new roup()
org.netbeans.lib.awtextra.Absolute .addGap(18, 18,
Constraints(610, 150, 86, -1)); 18)

jLabel5.setFont(new .addComponent(jLabel5)
java.awt.Font("Tahoma", 1, 14));
jLabel5.setIcon(new .addPreferredGap(javax.swing.Layou
javax.swing.ImageIcon(getClass().g tStyle.ComponentPlacement.UNRELATE
etResource("/nopawijaya/client/ima D)
ge/Open.png"))); // NOI18N
jLabel5.setText("Form Data .addComponent(jPanel1,
Alumni"); javax.swing.GroupLayout.PREFERRED_
SIZE, 497,
javax.swing.GroupLayout javax.swing.GroupLayout.PREFERRED_
layout = new SIZE)
javax.swing.GroupLayout(getContent
Pane()); .addContainerGap(javax.swing.Group
Layout.DEFAULT_SIZE,
getContentPane().setLayout(layout) Short.MAX_VALUE))
; );
layout.setHorizontalGroup(
pack();
layout.createParallelGroup(javax.s java.awt.Dimension
wing.GroupLayout.Alignment.LEADING screenSize =
) java.awt.Toolkit.getDefaultToolkit
().getScreenSize();
.addGroup(layout.createSequentialG java.awt.Dimension
roup() dialogSize = getSize();

.addGroup(layout.createParallelGro setLocation((screenSize.width-
up(javax.swing.GroupLayout.Alignme dialogSize.width)/2,(screenSize.he
nt.LEADING) ight-dialogSize.height)/2);
}// </editor-fold>
.addGroup(layout.createSequentialG
roup()
private void
btnRefreshActionPerformed(java.awt }
.event.ActionEvent evt) {
// TODO add your handling private void
code here: btnUpdateActionPerformed(java.awt.
try{ event.ActionEvent evt) {
List<Alumni> list = // TODO add your handling
as.getAlumni(); code here:
try{
tabelModelAlumni.setData(list); int row =
}catch(RemoteException tblAlumni.getSelectedRow();
ex){ if(row == -1){
ex.printStackTrace(); return;
} }
} Alumni person =
tabelModelAlumni.get(row);
private void
btnInsertActionPerformed(java.awt. person.setNoInduk(txtNoInduk.getTe
event.ActionEvent evt) { xt());
// TODO add your handling
code here: person.setNamaDepan(txtNamaDepan.g
try{ etText());
Alumni a = new
Alumni(); person.setNamaBelakang(txtNamaBela
kang.getText());
a.setNoInduk(txtNoInduk.getText())
; person.setStatus((String)
txtStatus.getSelectedItem());
a.setNamaDepan(txtNamaDepan.getTex person.setJk((String)
t()); txtJk.getSelectedItem());

a.setNamaBelakang(txtNamaBelakang. person.setTempatLahir(txtTempatLah
getText()); ir.getText());
a.setJk((String)
txtJk.getSelectedItem()); person.setTanggalLahir((Date)txtTa
nggalLahir.getValue());
a.setTempatLahir(txtTempatLahir.ge
tText()); person.setAlamat(txtAlamat.getText
());
a.setTanggalLahir((Date)
txtTanggalLahir.getValue()); person.setJurusan((String)
txtJurusan.getSelectedItem());
a.setAlamat(txtAlamat.getText());
a.setJurusan((String) person.setTahunLulus(txtTahunLulus
txtJurusan.getSelectedItem()); .getText());
a.setStatus((String) person.setRerataNilai(
txtStatus.getSelectedItem()); (String)
txtRerataNilai.getValue());
a.setTahunLulus(txtTahunLulus.getT
ext()); as.updateAlumni(person);
a.setRerataNilai(
txtRerataNilai.getText()); tabelModelAlumni.update(row,
Alumni person1 = person);
as.insertAlumni(a); }catch(RemoteException
exception){
tabelModelAlumni.insert(person1);
}catch(RemoteException exception.printStackTrace();
exception){ }
}
exception.printStackTrace();
}
private void private javax.swing.JLabel
btnDeleteActionPerformed(java.awt. jLabel3;
event.ActionEvent evt) { private javax.swing.JLabel
// TODO add your handling jLabel4;
code here: private javax.swing.JLabel
try{ jLabel5;
int row = private javax.swing.JLabel
tblAlumni.getSelectedRow(); jLabel6;
if(row == -1){ private javax.swing.JLabel
return; jLabel8;
} private javax.swing.JLabel
String noInduk = jLabel9;
tabelModelAlumni.get(row).getNoInd private javax.swing.JPanel
uk(); jPanel1;
private javax.swing.JPanel
as.deleteAlumni(noInduk); jPanel2;
private
tabelModelAlumni.delete(row); javax.swing.JScrollPane
jScrollPane1;
}catch(RemoteException private javax.swing.JTable
ex){ tblAlumni;
ex.printStackTrace(); private javax.swing.JTextField
} txtAlamat;
} private javax.swing.JComboBox
txtJk;
/** private javax.swing.JComboBox
* @param args the command line txtJurusan;
arguments private javax.swing.JTextField
*/ txtNamaBelakang;
private javax.swing.JTextField
// Variables declaration - do txtNamaDepan;
not modify private javax.swing.JTextField
private javax.swing.JButton txtNoInduk;
btnDelete; private
private javax.swing.JButton javax.swing.JFormattedTextField
btnInsert; txtRerataNilai;
private javax.swing.JButton private javax.swing.JComboBox
btnRefresh; txtStatus;
private javax.swing.JButton private
btnUpdate; javax.swing.JFormattedTextField
private javax.swing.JLabel txtTahunLulus;
jLabel1; private
private javax.swing.JLabel javax.swing.JFormattedTextField
jLabel10; txtTanggalLahir;
private javax.swing.JLabel private javax.swing.JTextField
jLabel11; txtTempatLahir;
private javax.swing.JLabel // End of variables
jLabel12; declaration
private javax.swing.JLabel
jLabel2; }
Form Login

package nopawijaya.client.gui;
import java.rmi.RemoteException; * always regenerated by the
import javax.swing.GroupLayout; Form Editor.
import javax.swing.JOptionPane; */
import @SuppressWarnings("unchecked")
nopawijaya.api.entity.Pengguna; // <editor-fold
import defaultstate="collapsed"
nopawijaya.api.service.AlumniServi desc="Generated Code">
ce; private void initComponents()
{

/** jTextField1 = new


* javax.swing.JTextField();
* @author Deden-pc jPasswordField1 = new
*/ javax.swing.JPasswordField();
jLabel1 = new
public class FormLogin extends javax.swing.JLabel();
javax.swing.JDialog { jLabel2 = new
private AlumniService service; javax.swing.JLabel();
private Pengguna jButton1 = new
PenggunaAplikasi = null; javax.swing.JButton();
/** Creates new form jButton2 = new
FormLogin */ javax.swing.JButton();
public jLabel3 = new
FormLogin(java.awt.Frame parent, javax.swing.JLabel();
boolean modal) { lblLoading = new
super(parent, modal); javax.swing.JLabel();
initComponents(); jSeparator1 = new
javax.swing.JSeparator();
lblLoading.setVisible(false);
GroupLayout gl =
(GroupLayout) setDefaultCloseOperation(javax.swi
getContentPane().getLayout(); ng.WindowConstants.DISPOSE_ON_CLOS
E);
gl.setHonorsVisibility(lblLoading, setTitle("Login");
false);
}
jTextField1.addInputMethodListener
public Pengguna (new
getPenggunaAplikasi() { java.awt.event.InputMethodListener
return PenggunaAplikasi; () {
} public void
caretPositionChanged(java.awt.even
t.InputMethodEvent evt) {
}
/** This method is called from public void
within the constructor to inputMethodTextChanged(java.awt.ev
* initialize the form. ent.InputMethodEvent evt) {
* WARNING: Do NOT modify this
code. The content of this method jTextField1InputMethodTextChanged(
is evt);
}
}); lblLoading.setIcon(new
javax.swing.ImageIcon(getClass().g
jTextField1.addKeyListener(new etResource("/nopawijaya/client/ima
java.awt.event.KeyAdapter() { ge/loadingpreview.gif"))); //
public void NOI18N
keyTyped(java.awt.event.KeyEvent
evt) { lblLoading.setText("Verifikasi
Pengguna....");
jTextField1KeyTyped(evt);
} javax.swing.GroupLayout
}); layout = new
javax.swing.GroupLayout(getContent
Pane());
jLabel1.setText("Username");
getContentPane().setLayout(layout)
;
jLabel2.setText("Password"); layout.setHorizontalGroup(

jButton1.setIcon(new layout.createParallelGroup(javax.s
javax.swing.ImageIcon(getClass().g wing.GroupLayout.Alignment.LEADING
etResource("/nopawijaya/client/ima )
ge/key.png"))); // NOI18N
jButton1.setText("Login"); .addGroup(layout.createSequentialG
roup()
jButton1.addActionListener(new .addGap(26, 26,
java.awt.event.ActionListener() { 26)
public void
actionPerformed(java.awt.event.Act .addGroup(layout.createParallelGro
ionEvent evt) { up(javax.swing.GroupLayout.Alignme
nt.LEADING)
jButton1ActionPerformed(evt);
} .addGroup(layout.createSequentialG
}); roup()

jButton2.setIcon(new .addComponent(lblLoading)
javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima .addPreferredGap(javax.swing.Layou
ge/cross.png"))); // NOI18N tStyle.ComponentPlacement.RELATED,
89, Short.MAX_VALUE)
jButton2.setText("Cancel");
.addComponent(jButton1)
jButton2.addActionListener(new
java.awt.event.ActionListener() { .addPreferredGap(javax.swing.Layou
public void tStyle.ComponentPlacement.RELATED)
actionPerformed(java.awt.event.Act
ionEvent evt) { .addComponent(jButton2))

jButton2ActionPerformed(evt); .addGroup(layout.createSequentialG
} roup()
});
.addGroup(layout.createParallelGro
jLabel3.setFont(new up(javax.swing.GroupLayout.Alignme
java.awt.Font("Tahoma", 1, 24)); nt.LEADING)
jLabel3.setIcon(new
javax.swing.ImageIcon(getClass().g .addComponent(jLabel1)
etResource("/nopawijaya/client/ima
ge/Key lock.png"))); // NOI18N .addComponent(jLabel2))
jLabel3.setText("
Silahkan Login"); .addGap(30, 30, 30)

.addGroup(layout.createParallelGro
up(javax.swing.GroupLayout.Alignme SIZE,
nt.TRAILING, false) javax.swing.GroupLayout.DEFAULT_SI
ZE,
.addComponent(jPasswordField1) javax.swing.GroupLayout.PREFERRED_
SIZE))
.addComponent(jTextField1,
javax.swing.GroupLayout.DEFAULT_SI .addPreferredGap(javax.swing.Layou
ZE, 246, Short.MAX_VALUE))) tStyle.ComponentPlacement.RELATED)

.addGroup(layout.createSequentialG .addGroup(layout.createParallelGro
roup() up(javax.swing.GroupLayout.Alignme
nt.CENTER)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addComponent(jPasswordField1,
.addGroup(javax.swing.GroupLayout. javax.swing.GroupLayout.PREFERRED_
Alignment.TRAILING, SIZE,
layout.createSequentialGroup() javax.swing.GroupLayout.DEFAULT_SI
ZE,
.addGap(38, 38, 38) javax.swing.GroupLayout.PREFERRED_
SIZE))
.addComponent(jSeparator1, .addGap(18, 18,
javax.swing.GroupLayout.DEFAULT_SI 18)
ZE, 356, Short.MAX_VALUE)))
.addGroup(layout.createParallelGro
.addContainerGap()) up(javax.swing.GroupLayout.Alignme
); nt.BASELINE)
layout.setVerticalGroup(
.addComponent(lblLoading)
layout.createParallelGroup(javax.s
wing.GroupLayout.Alignment.LEADING .addComponent(jButton2)
)
.addComponent(jButton1))
.addGroup(layout.createSequentialG
roup() .addContainerGap(javax.swing.Group
.addContainerGap() Layout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addComponent(jLabel3) );

.addPreferredGap(javax.swing.Layou java.awt.Dimension
tStyle.ComponentPlacement.RELATED) screenSize =
java.awt.Toolkit.getDefaultToolkit
.addComponent(jSeparator1, ().getScreenSize();
javax.swing.GroupLayout.PREFERRED_
SIZE, 10, setBounds((screenSize.width-
javax.swing.GroupLayout.PREFERRED_ 438)/2, (screenSize.height-222)/2,
SIZE) 438, 222);
}// </editor-fold>
.addPreferredGap(javax.swing.Layou
tStyle.ComponentPlacement.UNRELATE
D) private void
jButton1ActionPerformed(java.awt.e
.addGroup(layout.createParallelGro vent.ActionEvent evt) {
up(javax.swing.GroupLayout.Alignme if(new
nt.CENTER) String(jPasswordField1.getPassword
()).contains("admin") &&
.addComponent(jLabel1) jTextField1.getText().contains("ad
min")){
.addComponent(jTextField1,
javax.swing.GroupLayout.PREFERRED_ JOptionPane.showMessageDialog(null
, "Selamat datang " + PenggunaAplikasi = new
jTextField1.getText()); Pengguna();
PenggunaAplikasi =
new Pengguna(); PenggunaAplikasi.setUsername("user
");
PenggunaAplikasi.setUsername("admi
n"); PenggunaAplikasi.setPassword("user
");
PenggunaAplikasi.setPassword("admi
n"); PenggunaAplikasi.setTipePengguna("
User");
PenggunaAplikasi.setTipePengguna(" try {
Administrator");
try { service.writeLog("Client Berhasil
Login, username : user");
service.writeLog("Client Berhasil } catch
Login, username : admin"); (RemoteException ex) {
} catch
(RemoteException ex) { }
} dispose();
dispose(); }else if(new
String(jPasswordField1.getPassword
}else if(new ()).contains("coba1") &&
String(jPasswordField1.getPassword jTextField1.getText().contains("co
()).contains("operator") && ba1")){
jTextField1.getText().contains("op
erator")){ JOptionPane.showMessageDialog(null
, "Selamat datang
JOptionPane.showMessageDialog(null "+jTextField1.getText());
, "Selamat datang PenggunaAplikasi = new
"+jTextField1.getText()); Pengguna();
PenggunaAplikasi = new
Pengguna(); PenggunaAplikasi.setUsername("coba
1");
PenggunaAplikasi.setUsername("oper
ator"); PenggunaAplikasi.setPassword("coba
1");
PenggunaAplikasi.setPassword("oper
ator"); PenggunaAplikasi.setTipePengguna("
Operator");
PenggunaAplikasi.setTipePengguna(" try {
Operator");
try { service.writeLog("Client Berhasil
Login, username : coba1");
service.writeLog("Client Berhasil } catch
Login, username : operator"); (RemoteException ex) {
} catch
(RemoteException ex) { }
dispose();
} }else if(new
dispose(); String(jPasswordField1.getPassword
}else if(new ()).contains("coba") &&
String(jPasswordField1.getPassword jTextField1.getText().contains("co
()).contains("user") && ba")){
jTextField1.getText().contains("us
er")){ JOptionPane.showMessageDialog(null
, "Selamat datang
JOptionPane.showMessageDialog(null "+jTextField1.getText());
, "Selamat datang PenggunaAplikasi = new
"+jTextField1.getText()); Pengguna();
PenggunaAplikasi.setUsername("coba }
");
private void
PenggunaAplikasi.setPassword("coba jTextField1KeyTyped(java.awt.event
"); .KeyEvent evt) {
// TODO add your handling
PenggunaAplikasi.setTipePengguna(" code here:
User");
try { if(!jTextField1.getText().equals("
")){
service.writeLog("Client Berhasil
Login, username : coba"); lblLoading.setVisible(true);
} catch }else{
(RemoteException ex) {
lblLoading.setVisible(false);
} }
dispose(); }
}else{
void setService(AlumniService
JOptionPane.showMessageDialog(null service) {
, "Username atau password tidak this.service = service;
terdaftar"); }

jTextField1.requestFocus(); // Variables declaration - do


not modify
jTextField1.selectAll(); private javax.swing.JButton
try { jButton1;
private javax.swing.JButton
service.writeLog("Client Gagal jButton2;
Login"); private javax.swing.JLabel
} catch (RemoteException jLabel1;
ex) { private javax.swing.JLabel
jLabel2;
} private javax.swing.JLabel
} jLabel3;
} private
javax.swing.JPasswordField
private void jPasswordField1;
jButton2ActionPerformed(java.awt.e private javax.swing.JSeparator
vent.ActionEvent evt) { jSeparator1;
dispose(); private javax.swing.JTextField
} jTextField1;
private javax.swing.JLabel
private void lblLoading;
jTextField1InputMethodTextChanged( // End of variables
java.awt.event.InputMethodEvent declaration
evt) {
// TODO add your handling }
code here:
Form Menu Utama SI Alumni

package nopawijaya.client.gui;
import java.rmi.RemoteException; String url =
import java.sql.Connection; "jdbc:mysql://localhost:3306/sialu
import java.sql.DriverManager; mni";
import java.util.logging.Level;
import java.util.logging.Logger; DriverManager.registerDriver(new
import javax.swing.JOptionPane; com.mysql.jdbc.Driver());
import javax.swing.SwingWorker;
import //Class.forName("com.mysql.jdbc.Dr
net.sf.jasperreports.engine.JRExce iver").newInstance();
ption; conn =
import DriverManager.getConnection(url,
net.sf.jasperreports.engine.Jasper "root", "root");
FillManager; }catch(Exception e){
import e.printStackTrace();
net.sf.jasperreports.engine.Jasper }
Print;
import mnRegister.setVisible(false);
net.sf.jasperreports.view.JasperVi
ewer; btnRegister.setVisible(false);
import
nopawijaya.api.service.AlumniServi setExtendedState(javax.swing.JFram
ce; e.MAXIMIZED_BOTH);
import
nopawijaya.api.service.PenggunaSer }
vice;
/** This method is called from
within the constructor to
/** * initialize the form.
* * WARNING: Do NOT modify this
* @author Deden-pc code. The content of this method
*/ is
public class FormMain extends * always regenerated by the
javax.swing.JFrame { Form Editor.
*/
private AlumniService @SuppressWarnings("unchecked")
alumniService; // <editor-fold
private PenggunaService ps; defaultstate="collapsed"
private Connection conn; desc="Generated Code">
private void initComponents()
/** Creates new form FormMain {
*/
public FormMain() { jToolBar1 = new
initComponents(); javax.swing.JToolBar();
try{ btnLogin = new
javax.swing.JButton();
btnInputAlumni = new
javax.swing.JButton(); btnLogin.setToolTipText("Login");
btnRegister = new
javax.swing.JButton(); btnLogin.setFocusable(false);
btnCetakAumni = new
javax.swing.JButton(); btnLogin.setHorizontalTextPosition
btnPetunjuk = new (javax.swing.SwingConstants.CENTER
javax.swing.JButton(); );
btnKeluar = new
javax.swing.JButton(); btnLogin.setVerticalTextPosition(j
jPanel1 = new avax.swing.SwingConstants.BOTTOM);
javax.swing.JPanel();
lblKet = new btnLogin.addActionListener(new
javax.swing.JLabel(); java.awt.event.ActionListener() {
jLabel1 = new public void
javax.swing.JLabel(); actionPerformed(java.awt.event.Act
jMenuBar1 = new ionEvent evt) {
javax.swing.JMenuBar();
mnAplikasi = new btnLoginActionPerformed(evt);
javax.swing.JMenu(); }
mnLogin = new });
javax.swing.JMenuItem(); jToolBar1.add(btnLogin);
mnKeluar = new
javax.swing.JMenuItem(); btnInputAlumni.setIcon(new
mnInput = new javax.swing.ImageIcon(getClass().g
javax.swing.JMenu(); etResource("/nopawijaya/client/ima
mnInputAlumni = new ge/Open (2).png"))); // NOI18N
javax.swing.JMenuItem();
mnRegister = new btnInputAlumni.setToolTipText("Inp
javax.swing.JMenuItem(); ut Data Alumni");
mnReport = new
javax.swing.JMenu(); btnInputAlumni.setEnabled(false);
mnCetakAlumni = new
javax.swing.JMenuItem(); btnInputAlumni.setFocusable(false)
jMenuItem1 = new ;
javax.swing.JMenuItem();
jMenuItem2 = new btnInputAlumni.setHorizontalTextPo
javax.swing.JMenuItem(); sition(javax.swing.SwingConstants.
jMenuItem3 = new CENTER);
javax.swing.JMenuItem();
jMenuItem4 = new btnInputAlumni.setVerticalTextPosi
javax.swing.JMenuItem(); tion(javax.swing.SwingConstants.BO
mnBantuan = new TTOM);
javax.swing.JMenu();
mnPetunjuk = new btnInputAlumni.addActionListener(n
javax.swing.JMenuItem(); ew java.awt.event.ActionListener()
{
public void
setDefaultCloseOperation(javax.swi actionPerformed(java.awt.event.Act
ng.WindowConstants.EXIT_ON_CLOSE); ionEvent evt) {
setTitle("SI Alumni
Client"); btnInputAlumniActionPerformed(evt)
;
}
jToolBar1.setRollover(true); });

btnLogin.setIcon(new jToolBar1.add(btnInputAlumni);
javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima btnRegister.setIcon(new
ge/Key lock.png"))); // NOI18N javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima
ge/People.png"))); // NOI18N jToolBar1.add(btnCetakAumni);

btnRegister.setToolTipText("Regist btnPetunjuk.setIcon(new
rasi Pengguna"); javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima
btnRegister.setEnabled(false); ge/Notebook.png"))); // NOI18N

btnRegister.setFocusable(false); btnPetunjuk.setToolTipText("Petunj
uk");
btnRegister.setHorizontalTextPosit
ion(javax.swing.SwingConstants.CEN btnPetunjuk.setFocusable(false);
TER);
btnPetunjuk.setHorizontalTextPosit
btnRegister.setVerticalTextPositio ion(javax.swing.SwingConstants.CEN
n(javax.swing.SwingConstants.BOTTO TER);
M);
btnPetunjuk.setVerticalTextPositio
btnRegister.addActionListener(new n(javax.swing.SwingConstants.BOTTO
java.awt.event.ActionListener() { M);
public void
actionPerformed(java.awt.event.Act btnPetunjuk.addActionListener(new
ionEvent evt) { java.awt.event.ActionListener() {
public void
btnRegisterActionPerformed(evt); actionPerformed(java.awt.event.Act
} ionEvent evt) {
});
btnPetunjukActionPerformed(evt);
jToolBar1.add(btnRegister); }
});
btnCetakAumni.setIcon(new
javax.swing.ImageIcon(getClass().g jToolBar1.add(btnPetunjuk);
etResource("/nopawijaya/client/ima
ge/printer_48.png"))); // NOI18N btnKeluar.setIcon(new
javax.swing.ImageIcon(getClass().g
btnCetakAumni.setToolTipText("Ceta etResource("/nopawijaya/client/ima
k Data Pendidik"); ge/cancel_48.png"))); // NOI18N

btnCetakAumni.setEnabled(false); btnKeluar.setToolTipText("Keluar")
;
btnCetakAumni.setFocusable(false);
btnKeluar.setFocusable(false);
btnCetakAumni.setHorizontalTextPos
ition(javax.swing.SwingConstants.C btnKeluar.setHorizontalTextPositio
ENTER); n(javax.swing.SwingConstants.CENTE
R);
btnCetakAumni.setVerticalTextPosit
ion(javax.swing.SwingConstants.BOT btnKeluar.setVerticalTextPosition(
TOM); javax.swing.SwingConstants.BOTTOM)
;
btnCetakAumni.addActionListener(ne
w java.awt.event.ActionListener() btnKeluar.addActionListener(new
{ java.awt.event.ActionListener() {
public void public void
actionPerformed(java.awt.event.Act actionPerformed(java.awt.event.Act
ionEvent evt) { ionEvent evt) {

btnCetakAumniActionPerformed(evt); btnKeluarActionPerformed(evt);
} }
}); });
jToolBar1.add(btnKeluar);
public void
actionPerformed(java.awt.event.Act
getContentPane().add(jToolBar1, ionEvent evt) {
java.awt.BorderLayout.PAGE_START);
mnLoginActionPerformed(evt);
}
jPanel1.setBorder(javax.swing.Bord });
erFactory.createCompoundBorder(jav mnAplikasi.add(mnLogin);
ax.swing.BorderFactory.createEtche
dBorder(), mnKeluar.setIcon(new
javax.swing.BorderFactory.createEm javax.swing.ImageIcon(getClass().g
ptyBorder(2, 2, 2, 2))); etResource("/nopawijaya/client/ima
ge/cross.png"))); // NOI18N
jPanel1.setPreferredSize(new
java.awt.Dimension(934, 32)); mnKeluar.setText("Keluar");
jPanel1.setLayout(new
java.awt.BorderLayout()); mnKeluar.addActionListener(new
java.awt.event.ActionListener() {
lblKet.setIcon(new public void
javax.swing.ImageIcon(getClass().g actionPerformed(java.awt.event.Act
etResource("/nopawijaya/client/ima ionEvent evt) {
ge/loadingpreview.gif"))); //
NOI18N mnKeluarActionPerformed(evt);
lblKet.setText("-"); }
jPanel1.add(lblKet, });
java.awt.BorderLayout.CENTER); mnAplikasi.add(mnKeluar);

jMenuBar1.add(mnAplikasi);
getContentPane().add(jPanel1,
java.awt.BorderLayout.PAGE_END); mnInput.setText("Input");
mnInput.setEnabled(false);
jLabel1.setIcon(new
javax.swing.ImageIcon(getClass().g mnInputAlumni.setIcon(new
etResource("/nopawijaya/client/ima javax.swing.ImageIcon(getClass().g
ge/ground.jpg"))); // NOI18N etResource("/nopawijaya/client/ima
ge/user.png"))); // NOI18N
getContentPane().add(jLabel1,
java.awt.BorderLayout.CENTER); mnInputAlumni.setText("Input Data
Alumni");

mnAplikasi.setText("Aplikasi"); mnInputAlumni.addActionListener(ne
w java.awt.event.ActionListener()
mnAplikasi.addActionListener(new {
java.awt.event.ActionListener() { public void
public void actionPerformed(java.awt.event.Act
actionPerformed(java.awt.event.Act ionEvent evt) {
ionEvent evt) {
mnInputAlumniActionPerformed(evt);
mnAplikasiActionPerformed(evt); }
} });
});
mnInput.add(mnInputAlumni);
mnLogin.setIcon(new
javax.swing.ImageIcon(getClass().g mnRegister.setIcon(new
etResource("/nopawijaya/client/ima javax.swing.ImageIcon(getClass().g
ge/key.png"))); // NOI18N etResource("/nopawijaya/client/ima
mnLogin.setText("Login"); ge/user_business_boss.png"))); //
NOI18N
mnLogin.addActionListener(new
java.awt.event.ActionListener() { mnRegister.setText("Register
Pengguna");
public void
mnRegister.addActionListener(new actionPerformed(java.awt.event.Act
java.awt.event.ActionListener() { ionEvent evt) {
public void
actionPerformed(java.awt.event.Act jMenuItem1ActionPerformed(evt);
ionEvent evt) { }
});
mnRegisterActionPerformed(evt); mnReport.add(jMenuItem1);
}
}); jMenuItem2.setIcon(new
mnInput.add(mnRegister); javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima
jMenuBar1.add(mnInput); ge/printer.png"))); // NOI18N
jMenuItem2.setText("Data
Alumni Berdasarkan Status
mnReport.setText("Report"); Lulusan");

mnReport.setEnabled(false); jMenuItem2.addActionListener(new
java.awt.event.ActionListener() {
mnReport.addActionListener(new public void
java.awt.event.ActionListener() { actionPerformed(java.awt.event.Act
public void ionEvent evt) {
actionPerformed(java.awt.event.Act
ionEvent evt) { jMenuItem2ActionPerformed(evt);
}
mnReportActionPerformed(evt); });
} mnReport.add(jMenuItem2);
});
jMenuItem3.setIcon(new
mnCetakAlumni.setIcon(new javax.swing.ImageIcon(getClass().g
javax.swing.ImageIcon(getClass().g etResource("/nopawijaya/client/ima
etResource("/nopawijaya/client/ima ge/printer.png"))); // NOI18N
ge/printer.png"))); // NOI18N jMenuItem3.setText("Data
Alumni Berdasarkan Nilai Tertinggi
mnCetakAlumni.setText("Data PerJurusan");
Alumni");
jMenuItem3.addActionListener(new
mnCetakAlumni.addActionListener(ne java.awt.event.ActionListener() {
w java.awt.event.ActionListener() public void
{ actionPerformed(java.awt.event.Act
public void ionEvent evt) {
actionPerformed(java.awt.event.Act
ionEvent evt) { jMenuItem3ActionPerformed(evt);
}
mnCetakAlumniActionPerformed(evt); });
} mnReport.add(jMenuItem3);
});
jMenuItem4.setIcon(new
mnReport.add(mnCetakAlumni); javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima
jMenuItem1.setIcon(new ge/printer.png"))); // NOI18N
javax.swing.ImageIcon(getClass().g jMenuItem4.setText("Alumni
etResource("/nopawijaya/client/ima Jurusan T. Audio Video 2010
ge/printer.png"))); // NOI18N Berdasarkan Status ");
jMenuItem1.setText("Data
Alumni Berdasarkan Jurusan"); jMenuItem4.addActionListener(new
java.awt.event.ActionListener() {
jMenuItem1.addActionListener(new public void
java.awt.event.ActionListener() { actionPerformed(java.awt.event.Act
ionEvent evt) {
private void
jMenuItem4ActionPerformed(evt); mnPetunjukActionPerformed(java.awt
} .event.ActionEvent evt) {
}); // TODO add your handling
mnReport.add(jMenuItem4); code here:
if
jMenuBar1.add(mnReport); (lblKet.getText().equals("Server
tidak ditemukan")) {

mnBantuan.setText("Bantuan"); JOptionPane.showMessageDialog(null
, "Pastikan komputer anda
mnPetunjuk.setIcon(new terhubung ke Server, hubungi
javax.swing.ImageIcon(getClass().g Administrator untuk keterangan
etResource("/nopawijaya/client/ima lebih lanjut !!");
ge/lightbulb.png"))); // NOI18N } else {

mnPetunjuk.setText("Petunjuk"); JOptionPane.showMessageDialog(null
, "selamat Datang di Program SI
mnPetunjuk.addActionListener(new Alumni v.1.0, ini merupakan
java.awt.event.ActionListener() { program berbasis Java RMI");
public void }
actionPerformed(java.awt.event.Act }
ionEvent evt) {
private void
mnPetunjukActionPerformed(evt); btnKeluarActionPerformed(java.awt.
} event.ActionEvent evt) {
}); // TODO add your handling
mnBantuan.add(mnPetunjuk); code here:
System.exit(0);
jMenuBar1.add(mnBantuan); }

setJMenuBar(jMenuBar1); private void


mnLoginActionPerformed(java.awt.ev
java.awt.Dimension ent.ActionEvent evt) {
screenSize = if
java.awt.Toolkit.getDefaultToolkit (mnLogin.getText().equalsIgnoreCas
().getScreenSize(); e("Logout")) {

setBounds((screenSize.width- mnLogin.setText("Login");
950)/2, (screenSize.height-569)/2,
950, 569); btnLogin.setToolTipText("Login");
}// </editor-fold> btnLogin.setIcon(new
javax.swing.ImageIcon(getClass().g
private void etResource("/jawaxa/simpendikclien
btnLoginActionPerformed(java.awt.e t/image/Key.png")));
vent.ActionEvent evt) {
// TODO add your handling mnRegister.setVisible(false);
code here:
mnInput.setEnabled(false);
mnLoginActionPerformed(evt);
} mnReport.setEnabled(false);

private void btnInputAlumni.setEnabled(false);


mnInputAlumniActionPerformed(java.
awt.event.ActionEvent evt) { btnRegister.setVisible(false);
FormAlumni f = new
FormAlumni(alumniService); btnRegister.setEnabled(false);
f.setVisible(true);
} btnCetakAumni.setEnabled(false);
return;
}
FormLogin f = new
FormLogin(this, true); mnRegister.setVisible(false);

f.setService(alumniService); mnInput.setEnabled(false);
f.setVisible(true);
if mnReport.setEnabled(true);
(f.getPenggunaAplikasi() == null)
{ btnInputAlumni.setEnabled(false);

mnLogin.setText("Login"); btnRegister.setVisible(false);

} else if btnRegister.setEnabled(false);
(f.getPenggunaAplikasi().getTipePe
ngguna().equalsIgnoreCase("adminis btnCetakAumni.setEnabled(true);
trator")) {
mnLogin.setText("Logout");
mnRegister.setVisible(true);
btnLogin.setToolTipText("Logout");
mnInput.setEnabled(true);
}
mnReport.setEnabled(true); }

btnInputAlumni.setEnabled(true); private void


btnPetunjukActionPerformed(java.aw
btnRegister.setVisible(true); t.event.ActionEvent evt) {
// TODO add your handling
btnRegister.setEnabled(true); code here:
if
btnCetakAumni.setEnabled(true); (lblKet.getText().equals("Server
tidak ditemukan")) {
mnLogin.setText("Logout");
JOptionPane.showMessageDialog(null
btnLogin.setToolTipText("Logout"); , "Pastikan komputer anda
terhubung ke Server, hubungi
} else if Administrator untuk keterangan
(f.getPenggunaAplikasi().getTipePe lebih lanjut !!");
ngguna().equalsIgnoreCase("operato
r")) { } else {

mnRegister.setVisible(false); JOptionPane.showMessageDialog(null
, "selamat Datang di Program SI
mnInput.setEnabled(true); Alumni v.1.0, ini merupakan
program berbasis Java RMI");
mnReport.setEnabled(true); }
}
btnInputAlumni.setEnabled(true);
private void
btnRegister.setVisible(false); mnAplikasiActionPerformed(java.awt
.event.ActionEvent evt) {
btnRegister.setEnabled(false); // TODO add your handling
code here:
btnCetakAumni.setEnabled(true); }

mnLogin.setText("Logout"); private void


mnKeluarActionPerformed(java.awt.e
btnLogin.setToolTipText("Logout"); vent.ActionEvent evt) {
System.exit(0);
} else if }
(f.getPenggunaAplikasi().getTipePe
ngguna().equalsIgnoreCase("user"))
{
private void private void
mnRegisterActionPerformed(java.awt jMenuItem1ActionPerformed(java.awt
.event.ActionEvent evt) { .event.ActionEvent evt) {
// TODO add your handling try {
code here:
FormRegPengguna f = new alumniService.writeLog("Client
FormRegPengguna(ps); melihat Report data Alumni
f.setVisible(true); Berdasarkan Jurusan");
} JasperPrint print =
JasperFillManager.fillReport("alum
private void niJurusan.jasper",null,conn);
mnCetakAlumniActionPerformed(java.
awt.event.ActionEvent evt) { JasperViewer.viewReport(print,
false);
try {
JasperViewer.setDefaultLookAndFeel
alumniService.writeLog("Client Decorated(true);
melihat Report data Alumni"); } catch (RemoteException
JasperPrint print = ex) {
JasperFillManager.fillReport("data
Alumni.jasper",null,conn); Logger.getLogger(FormMain.class.ge
tName()).log(Level.SEVERE, null,
JasperViewer.viewReport(print, ex);
false); } catch (JRException ex) {
ex.printStackTrace();
JasperViewer.setDefaultLookAndFeel }
Decorated(true); }
} catch (RemoteException
ex) { private void
jMenuItem2ActionPerformed(java.awt
Logger.getLogger(FormMain.class.ge .event.ActionEvent evt) {
tName()).log(Level.SEVERE, null, try {
ex);
} catch (JRException ex) { alumniService.writeLog("Client
ex.printStackTrace(); melihat Report data Alumni
} Berdasarkan Status Lulusan");
} JasperPrint print =
JasperFillManager.fillReport("alum
private void niStatus.jasper",null,conn);
btnInputAlumniActionPerformed(java
.awt.event.ActionEvent evt) { JasperViewer.viewReport(print,
false);
mnInputAlumniActionPerformed(evt);
} JasperViewer.setDefaultLookAndFeel
Decorated(true);
private void } catch (RemoteException
btnRegisterActionPerformed(java.aw ex) {
t.event.ActionEvent evt) {
Logger.getLogger(FormMain.class.ge
mnRegisterActionPerformed(evt); tName()).log(Level.SEVERE, null,
} ex);
} catch (JRException ex) {
private void ex.printStackTrace();
btnCetakAumniActionPerformed(java. }
awt.event.ActionEvent evt) { }

mnCetakAlumniActionPerformed(evt); private void


} mnReportActionPerformed(java.awt.e
vent.ActionEvent evt) {

}
* @param args the comman d
private void line arguments
jMenuItem3ActionPerformed(java.awt */
.event.ActionEvent evt) { // Variables declaration - do
try { not modify
private javax.swing.JButton
alumniService.writeLog("Client btnCetakAumni;
melihat Report data Alumni private javax.swing.JButton
Berdasarkan Nilai Tertinggu Per btnInputAlumni;
Jurusan"); private javax.swing.JButton
JasperPrint print = btnKeluar;
JasperFillManager.fillReport("nila private javax.swing.JButton
iTinggi.jasper",null,conn); btnLogin;
private javax.swing.JButton
JasperViewer.viewReport(print, btnPetunjuk;
false); private javax.swing.JButton
btnRegister;
JasperViewer.setDefaultLookAndFeel private javax.swing.JLabel
Decorated(true); jLabel1;
} catch (RemoteException private javax.swing.JMenuBar
ex) { jMenuBar1;
private javax.swing.JMenuItem
Logger.getLogger(FormMain.class.ge jMenuItem1;
tName()).log(Level.SEVERE, null, private javax.swing.JMenuItem
ex); jMenuItem2;
} catch (JRException ex) { private javax.swing.JMenuItem
ex.printStackTrace(); jMenuItem3;
} private javax.swing.JMenuItem
} jMenuItem4;
private javax.swing.JPanel
private void jPanel1;
jMenuItem4ActionPerformed(java.awt private javax.swing.JToolBar
.event.ActionEvent evt) { jToolBar1;
try { private javax.swing.JLabel
lblKet;
alumniService.writeLog("Client private javax.swing.JMenu
melihat Report data Alumni Jurusan mnAplikasi;
T. Audio Video Berdasarkan Status private javax.swing.JMenu
Lulusan"); mnBantuan;
JasperPrint print = private javax.swing.JMenuItem
JasperFillManager.fillReport("av.j mnCetakAlumni;
asper",null,conn); private javax.swing.JMenu
mnInput;
JasperViewer.viewReport(print, private javax.swing.JMenuItem
false); mnInputAlumni;
private javax.swing.JMenuItem
JasperViewer.setDefaultLookAndFeel mnKeluar;
Decorated(true); private javax.swing.JMenuItem
} catch (RemoteException mnLogin;
ex) { private javax.swing.JMenuItem
mnPetunjuk;
Logger.getLogger(FormMain.class.ge private javax.swing.JMenuItem
tName()).log(Level.SEVERE, null, mnRegister;
ex); private javax.swing.JMenu
} catch (JRException ex) { mnReport;
ex.printStackTrace(); // End of variables
} declaration
// TODO add your handling
code here: public void setservice(final
} AlumniService service1) {
/**
this.alumniService = }
service1;
@Override
if (service1 == null) { protected void
lblKet.setText("Server done() {
tidak ditemukan"); try {
//lblKet.setIcon(new get();
javax.swing.ImageIcon(getClass().g } catch
etResource("/jawaxa/simpendikclien (Exception e) {
t/image/notserver.gif")));
} else { lblKet.setText("Server ditemukan,
lblKet.setText("Server namun server tidak terkoneksi ke
ditemukan, menghubungkan aplikasi database");
ke database ..");
//lblKet.setIcon(new //lblKet.setIcon(new
javax.swing.ImageIcon(getClass().g javax.swing.ImageIcon(getClass().g
etResource("/jawaxa/simpendikclien etResource("/jawaxa/simpendikclien
t/image/loadingpreview.gif"))); t/image/notserver.gif")));
new SwingWorker() { }
}
@Override }.execute();
protected Object }
doInBackground() throws Exception
{ }

service1.getAlumni();

lblKet.setText("Server ditemukan, public void


dan server terkoneksi ke database, setPenggunaservice(PenggunaService
aplikasi siap dijalankan"); service2) {
this.ps = service2;
//lblKet.setIcon(new }
javax.swing.ImageIcon(getClass().g
etResource("/jawaxa/simpendikclien
t/image/server.gif"))); }
return null;

Form Registrasi Pengguna

package nopawijaya.client.gui;
import java.rmi.RemoteException; import
import java.util.List; nopawijaya.api.service.AlumniServi
import ce;
javax.swing.event.ListSelectionEve import
nt; nopawijaya.api.service.PenggunaSer
import vice;
javax.swing.event.ListSelectionLis import
tener; nopawijaya.client.model.TabelModel
import Pengguna;
nopawijaya.api.entity.Pengguna;
/** This method is called from
within the constructor to
/** * initialize the form.
* * WARNING: Do NOT modify this
* @author Deden-pc code. The content of this method
*/ is
public class FormRegPengguna * always regenerated by the
extends javax.swing.JFrame { Form Editor.
private TabelModelPengguna */
tabelModelPengguna = new @SuppressWarnings("unchecked")
TabelModelPengguna(); // <editor-fold
private AlumniService defaultstate="collapsed"
alumniService; desc="Generated Code">
private PenggunaService private void initComponents()
penggunaService; {
/** Creates new form
FormRegPengguna */ jLabel1 = new
public javax.swing.JLabel();
FormRegPengguna(PenggunaService txtUsername = new
penggunaService) { javax.swing.JTextField();
this.penggunaService = jLabel2 = new
penggunaService; javax.swing.JLabel();
try{ jLabel3 = new
javax.swing.JLabel();
tabelModelPengguna.setData(this.pe jLabel4 = new
nggunaService.getPengguna()); javax.swing.JLabel();
}catch(RemoteException txtTipePengguna = new
ex){ javax.swing.JComboBox();
ex.printStackTrace(); jPanel1 = new
} javax.swing.JPanel();
initComponents(); btnInsert = new
javax.swing.JButton();
tblPengguna.setModel(tabelModelPen btnUpdate = new
gguna); javax.swing.JButton();
btnDelete = new
tblPengguna.getSelectionModel().ad javax.swing.JButton();
dListSelectionListener(new btnClose = new
ListSelectionListener() { javax.swing.JButton();
txtPassword = new
public void javax.swing.JPasswordField();
valueChanged(ListSelectionEvent e) jScrollPane1 = new
{ javax.swing.JScrollPane();
int row = tblPengguna = new
tblPengguna.getSelectedRow(); org.jdesktop.swingx.JXTable();
if(row != -1){
Pengguna p =
tabelModelPengguna.get(row); setDefaultCloseOperation(javax.swi
ng.WindowConstants.DISPOSE_ON_CLOS
txtUsername.setText(p.getUsername( E);
)); setResizable(false);

txtPassword.setText(p.getPassword( jLabel1.setFont(new
)); java.awt.Font("Tahoma", 1, 18));
jLabel1.setIcon(new
txtTipePengguna.setSelectedItem(p. javax.swing.ImageIcon(getClass().g
getTipePengguna()); etResource("/nopawijaya/client/ima
} ge/Open.png"))); // NOI18N
} jLabel1.setText("Form
}); Registrasi Pengguna");
}
public void
jLabel2.setText("Username"); actionPerformed(java.awt.event.Act
ionEvent evt) {

jLabel3.setText("Password"); btnDeleteActionPerformed(evt);
}
jLabel4.setText("Tipe });
Pengguna"); jPanel1.add(btnDelete);

btnClose.setIcon(new
txtTipePengguna.setModel(new javax.swing.ImageIcon(getClass().g
javax.swing.DefaultComboBoxModel(n etResource("/nopawijaya/client/ima
ew String[] { "Pilih salah satu", ge/lifebuoy.png"))); // NOI18N
"Administrator", "Operator",
"User" })); btnClose.setText("Refresh");

btnInsert.setIcon(new btnClose.addActionListener(new
javax.swing.ImageIcon(getClass().g java.awt.event.ActionListener() {
etResource("/nopawijaya/client/ima public void
ge/disk.png"))); // NOI18N actionPerformed(java.awt.event.Act
ionEvent evt) {
btnInsert.setText("Insert");
btnCloseActionPerformed(evt);
btnInsert.addActionListener(new }
java.awt.event.ActionListener() { });
public void jPanel1.add(btnClose);
actionPerformed(java.awt.event.Act
ionEvent evt) {
jScrollPane1.setViewportView(tblPe
btnInsertActionPerformed(evt); ngguna);
}
}); javax.swing.GroupLayout
jPanel1.add(btnInsert); layout = new
javax.swing.GroupLayout(getContent
btnUpdate.setIcon(new Pane());
javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/client/ima getContentPane().setLayout(layout)
ge/plugin.png"))); // NOI18N ;
layout.setHorizontalGroup(
btnUpdate.setText("Update");
layout.createParallelGroup(javax.s
btnUpdate.addActionListener(new wing.GroupLayout.Alignment.LEADING
java.awt.event.ActionListener() { )
public void
actionPerformed(java.awt.event.Act .addGroup(layout.createSequentialG
ionEvent evt) { roup()
.addGap(10, 10,
btnUpdateActionPerformed(evt); 10)
}
}); .addComponent(jLabel1,
jPanel1.add(btnUpdate); javax.swing.GroupLayout.PREFERRED_
SIZE, 296,
btnDelete.setIcon(new javax.swing.GroupLayout.PREFERRED_
javax.swing.ImageIcon(getClass().g SIZE))
etResource("/nopawijaya/client/ima
ge/bin_closed.png"))); // NOI18N .addGroup(layout.createSequentialG
roup()
btnDelete.setText("Delete"); .addGap(24, 24,
24)
btnDelete.addActionListener(new
java.awt.event.ActionListener() { .addComponent(jLabel2)
.addGap(71, 71, javax.swing.GroupLayout.PREFERRED_
71) SIZE))
);
.addComponent(txtUsername, layout.setVerticalGroup(
javax.swing.GroupLayout.PREFERRED_
SIZE, 164, layout.createParallelGroup(javax.s
javax.swing.GroupLayout.PREFERRED_ wing.GroupLayout.Alignment.LEADING
SIZE)) )

.addGroup(layout.createSequentialG .addGroup(layout.createSequentialG
roup() roup()
.addGap(24, 24, .addGap(23, 23,
24) 23)

.addComponent(jLabel3) .addComponent(jLabel1)
.addGap(73, 73, .addGap(30, 30,
73) 30)

.addComponent(txtPassword, .addGroup(layout.createParallelGro
javax.swing.GroupLayout.PREFERRED_ up(javax.swing.GroupLayout.Alignme
SIZE, 164, nt.LEADING)
javax.swing.GroupLayout.PREFERRED_
SIZE)) .addGroup(layout.createSequentialG
roup()
.addGroup(layout.createSequentialG .addGap(3,
roup() 3, 3)
.addGap(24, 24,
24) .addComponent(jLabel2))

.addComponent(jLabel4) .addComponent(txtUsername,
.addGap(48, 48, javax.swing.GroupLayout.PREFERRED_
48) SIZE,
javax.swing.GroupLayout.DEFAULT_SI
.addComponent(txtTipePengguna, ZE,
javax.swing.GroupLayout.PREFERRED_ javax.swing.GroupLayout.PREFERRED_
SIZE, 119, SIZE))
javax.swing.GroupLayout.PREFERRED_ .addGap(6, 6, 6)
SIZE))
.addGroup(layout.createParallelGro
.addGroup(layout.createSequentialG up(javax.swing.GroupLayout.Alignme
roup() nt.LEADING)
.addGap(24, 24,
24) .addGroup(layout.createSequentialG
roup()
.addComponent(jPanel1, .addGap(3,
javax.swing.GroupLayout.PREFERRED_ 3, 3)
SIZE,
javax.swing.GroupLayout.DEFAULT_SI .addComponent(jLabel3))
ZE,
javax.swing.GroupLayout.PREFERRED_ .addComponent(txtPassword,
SIZE)) javax.swing.GroupLayout.PREFERRED_
SIZE,
.addGroup(layout.createSequentialG javax.swing.GroupLayout.DEFAULT_SI
roup() ZE,
.addGap(30, 30, javax.swing.GroupLayout.PREFERRED_
30) SIZE))
.addGap(6, 6, 6)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_ .addGroup(layout.createParallelGro
SIZE, 360, up(javax.swing.GroupLayout.Alignme
nt.LEADING)
.addComponent(jLabel4) tabelModelPengguna.insert(pgn);
}catch(RemoteException
.addComponent(txtTipePengguna, exception){
javax.swing.GroupLayout.PREFERRED_
SIZE, exception.printStackTrace();
javax.swing.GroupLayout.DEFAULT_SI }
ZE, }
javax.swing.GroupLayout.PREFERRED_
SIZE)) private void
.addGap(18, 18, btnUpdateActionPerformed(java.awt.
18) event.ActionEvent evt) {
try{
.addComponent(jPanel1, int row =
javax.swing.GroupLayout.PREFERRED_ tblPengguna.getSelectedRow();
SIZE, if(row == -1){
javax.swing.GroupLayout.DEFAULT_SI return;
ZE, }
javax.swing.GroupLayout.PREFERRED_ Pengguna p =
SIZE) tabelModelPengguna.get(row);
.addGap(4, 4, 4)
p.setUsername(txtUsername.getText(
.addComponent(jScrollPane1, ));
javax.swing.GroupLayout.PREFERRED_
SIZE, 273, p.setPassword(txtPassword.getText(
javax.swing.GroupLayout.PREFERRED_ ));
SIZE))
); p.setTipePengguna((String)
txtTipePengguna.getSelectedItem())
pack(); ;
java.awt.Dimension
screenSize =
java.awt.Toolkit.getDefaultToolkit penggunaService.updatePengguna(p);
().getScreenSize();
java.awt.Dimension tabelModelPengguna.update(row, p);
dialogSize = getSize(); }catch(RemoteException
exception){
setLocation((screenSize.width-
dialogSize.width)/2,(screenSize.he exception.printStackTrace();
ight-dialogSize.height)/2); }
}// </editor-fold> }

private void private void


btnInsertActionPerformed(java.awt. btnDeleteActionPerformed(java.awt.
event.ActionEvent evt) { event.ActionEvent evt) {
try{ try{
Pengguna p = new int row =
Pengguna(); tblPengguna.getSelectedRow();
if(row == -1){
p.setUsername(txtUsername.getText( return;
)); }
String Username =
p.setPassword(txtPassword.getText( tabelModelPengguna.get(row).getUse
)); rname();

p.setTipePengguna((String) penggunaService.deletePengguna(Use
txtTipePengguna.getSelectedItem()) rname);
;
Pengguna pgn = tabelModelPengguna.delete(row);
penggunaService.insertPengguna(p);
}catch(RemoteException private javax.swing.JButton
ex){ btnUpdate;
ex.printStackTrace(); private javax.swing.JLabel
} jLabel1;
} private javax.swing.JLabel
jLabel2;
private void private javax.swing.JLabel
btnCloseActionPerformed(java.awt.e jLabel3;
vent.ActionEvent evt) { private javax.swing.JLabel
try{ jLabel4;
List<Pengguna> list = private javax.swing.JPanel
penggunaService.getPengguna(); jPanel1;
private
tabelModelPengguna.setData(list); javax.swing.JScrollPane
}catch(RemoteException jScrollPane1;
ex){ private
ex.printStackTrace(); org.jdesktop.swingx.JXTable
} tblPengguna;
} private
javax.swing.JPasswordField
/** txtPassword;
* @param args the command line private javax.swing.JComboBox
arguments txtTipePengguna;
*/ private javax.swing.JTextField
txtUsername;
// End of variables
// Variables declaration - do declaration
not modify
private javax.swing.JButton }
btnClose; /*
private javax.swing.JButton * To change this template, choose
btnDelete; Tools | Templates
private javax.swing.JButton * and open the template in the
btnInsert; editor.
*/

Library
package nopawijaya.client.main;

import java.net.InetAddress; /**


import java.rmi.NotBoundException; * @param args the command
import java.rmi.RemoteException; line arguments
import */
java.rmi.registry.LocateRegistry; public static void
import java.rmi.registry.Registry; main(String[] args) throws
import javax.swing.SwingUtilities; RemoteException, NotBoundException
import {
nopawijaya.api.service.AlumniServi
ce;
import SwingUtilities.invokeLater(new
nopawijaya.api.service.PenggunaSer Runnable() {
vice;
import public void run() {
nopawijaya.client.gui.FormMain; AlumniService
service1 = null;
/** PenggunaService
* service2 = null;
* @author Deden-pc try{
*/ Registry registry
public class Main { =
LocateRegistry.getRegistry("192.16 } catch
8.1.1",9999); (InterruptedException ex) {
service1 =
(AlumniService) ex.printStackTrace();
registry.lookup("service1"); }
service2 = FormMain formMain
(PenggunaService) = new FormMain();
registry.lookup("service2");
formMain.setVisible(true);
try{
String s= formMain.setservice(service1);
InetAddress.getLocalHost().toStrin
g(); formMain.setPenggunaservice(servic
e2);
service1.writeLog("Request koneksi }
dari Client : "+s); });
}catch(Exception }
e){}
}
}catch(Exception /*
e){ * To change this template, choose
Tools | Templates
e.printStackTrace(); * and open the template in the
} editor.
try { */

Thread.sleep(1500);

package nopawijaya.client.model;

import java.util.ArrayList; fireTableDataChanged();


import java.util.List; }
import public void delete(int row ){
javax.swing.table.AbstractTableMod list.remove(row);
el; fireTableDataChanged();
import }
nopawijaya.api.entity.Alumni; public void
setData(List<Alumni> list){
/** this.list = list;
* fireTableDataChanged();
* @author Deden-pc
*/ }
public class TabelModelAlumni
extends AbstractTableModel { @Override
private List<Alumni> list = new public String
ArrayList<Alumni>(); getColumnName(int column) {
public TabelModelAlumni() { switch(column){
} case 0 : return "No
Induk";
public Alumni get(int row){ case 1 : return "Nama
return list.get(row); Depan";
} case 2 : return "Nama
Belakang";
public void insert(Alumni case 3 : return "JK";
person){ case 4 : return
list.add(person); "Tempat Lahir";
fireTableDataChanged(); case 5 : return
} "Tanggal Lahir";
public void update(int case 6 : return
row,Alumni person){ "Alamat";
list.set(row, person);
case 7 : return case 4 : return
"Jurusan"; list.get(rowIndex).getTempatLahir(
case 8 : return );
"Status"; case 5 : return
case 9 : return "Tahun list.get(rowIndex).getTanggalLahir
Lulus"; ();
case 10 : return case 6 : return
"Rerata Nilai"; list.get(rowIndex).getAlamat();
default: return null; case 7 : return
} list.get(rowIndex).getJurusan();
} case 8 : return
list.get(rowIndex).getStatus();
case 9 : return
public int getRowCount() { list.get(rowIndex).getTahunLulus()
return list.size(); ;
} case 10 : return
list.get(rowIndex).getRerataNilai(
public int getColumnCount() { );
return 11; default:
} return null;
}
public Object getValueAt(int }
rowIndex, int columnIndex) {
switch(columnIndex){ }
case 0 : return /*
list.get(rowIndex).getNoInduk(); * To change this template, choose
case 1 : return Tools | Templates
list.get(rowIndex).getNamaDepan(); * and open the template in the
case 2 : return editor.
list.get(rowIndex).getNamaBelakang */
();
case 3 : return
list.get(rowIndex).getJk();

package nopawijaya.client.model;

import java.util.ArrayList; public void insert(Pengguna


import java.util.List; p){
import list.add(p);
javax.swing.table.AbstractTableMod fireTableDataChanged();
el; }
import public void update(int
nopawijaya.api.entity.Pengguna; row,Pengguna p){
list.set(row, p);
/** fireTableDataChanged();
* }
* @author Deden-pc public void delete(int row ){
*/ list.remove(row);
public class TabelModelPengguna fireTableDataChanged();
extends AbstractTableModel{ }
public void
private List<Pengguna> list = setData(List<Pengguna> list){
new ArrayList<Pengguna>(); this.list = list;
fireTableDataChanged();
public TabelModelPengguna(){
}
}
public Pengguna get(int row){ @Override
return list.get(row); public String
} getColumnName(int column) {
switch(column){
case 0 : return }
"Username";
case 1 : return public Object getValueAt(int
"Password"; rowIndex, int columnIndex) {
case 2 : return "Tipe switch(columnIndex){
Pengguna"; case 0 : return
default: return null; list.get(rowIndex).getUsername();
} case 1 : return
} list.get(rowIndex).getPassword();
case 2 : return
list.get(rowIndex).getTipePengguna
public int getRowCount() { ();
return list.size(); default:
} return null;
}
public int getColumnCount() { }
return 3; }

Report Data Alumni

<?xml version="1.0" encoding="UTF- </queryString>


8"?> <field name="alumni_noInduk"
<jasperReport class="java.lang.String">
xmlns="http://jasperreports.source
forge.net/jasperreports" <fieldDescription><![CDATA[]
xmlns:xsi="http://www.w3.org/2001/ ]></fieldDescription>
XMLSchema-instance" </field>
xsi:schemaLocation="http://jasperr <field
eports.sourceforge.net/jasperrepor name="alumni_namaDepan"
ts class="java.lang.String">
http://jasperreports.sourceforge.n
et/xsd/jasperreport.xsd" <fieldDescription><![CDATA[]
name="null" pageWidth="595" ]></fieldDescription>
pageHeight="842" columnWidth="535" </field>
leftMargin="20" rightMargin="20" <field
topMargin="20" bottomMargin="20"> name="alumni_namaBelakang"
<queryString language="SQL"> class="java.lang.String">
<![CDATA[SELECT
alumni.`noInduk` AS <fieldDescription><![CDATA[]
alumni_noInduk, ]></fieldDescription>
alumni.`namaDepan` AS </field>
alumni_namaDepan, <field name="alumni_jk"
alumni.`namaBelakang` AS class="java.lang.String">
alumni_namaBelakang,
alumni.`jk` AS alumni_jk, <fieldDescription><![CDATA[]
alumni.`tempatLahir` AS ]></fieldDescription>
alumni_tempatLahir, </field>
alumni.`tanggalLahir` AS <field
alumni_tanggalLahir, name="alumni_tempatLahir"
alumni.`alamat` AS class="java.lang.String">
alumni_alamat,
alumni.`jurusan` AS <fieldDescription><![CDATA[]
alumni_jurusan, ]></fieldDescription>
alumni.`status` AS </field>
alumni_status, <field
alumni.`tahunLulus` AS name="alumni_tanggalLahir"
alumni_tahunLulus, class="java.sql.Date">
alumni.`rerataNilai` AS
alumni_rerataNilai <fieldDescription><![CDATA[]
FROM ]></fieldDescription>
`alumni` alumni]]> </field>
<field name="alumni_alamat"
class="java.lang.String"> </textElement>

<fieldDescription><![CDATA[] <text><![CDATA[SMK Negeri 2


]></fieldDescription> Garut]]></text>
</field> </staticText>
<field name="alumni_jurusan" <staticText>
class="java.lang.String">
<reportElement x="65" y="52"
<fieldDescription><![CDATA[] width="424" height="35"/>
]></fieldDescription>
</field> <textElement
<field name="alumni_status" textAlignment="Center">
class="java.lang.String">
<font size="14"
<fieldDescription><![CDATA[] isBold="true"/>
]></fieldDescription>
</field> </textElement>
<field
name="alumni_tahunLulus" <text><![CDATA[Jalan
class="java.lang.String"> Suherman No. 9 Tarogong
Garut]]></text>
<fieldDescription><![CDATA[] </staticText>
]></fieldDescription> <staticText>
</field>
<field <reportElement x="1" y="88"
name="alumni_rerataNilai" width="424" height="35"/>
class="java.lang.Long">
<textElement
<fieldDescription><![CDATA[] textAlignment="Left">
]></fieldDescription>
</field> <font fontName="SansSerif"
<background> size="24" isBold="true"
<band isItalic="false"
splitType="Stretch"/> isUnderline="true"/>
</background>
<title> </textElement>
<band height="123"
splitType="Stretch"> <text><![CDATA[Cetak Data
<line> Alumni]]></text>
</staticText>
<reportElement x="0" y="8" </band>
width="555" height="1"/> </title>
</line> <pageHeader>
<line> <band
splitType="Stretch"/>
<reportElement </pageHeader>
positionType="FixRelativeToBottom" <columnHeader>
x="0" y="79" width="555" <band height="18"
height="1"/> splitType="Stretch">
</line> <staticText>
<staticText>
<reportElement mode="Opaque"
<reportElement x="65" y="13" x="0" y="0" width="50" height="18"
width="424" height="35"/> forecolor="#FFFFFF"
backcolor="#999999"/>
<textElement
textAlignment="Center"> <textElement>

<font fontName="SansSerif" <font size="12"/>


size="26" isBold="true"/>
</textElement> <font size="12"/>

<text><![CDATA[No </textElement>
Induk]]></text>
</staticText> <text><![CDATA[alumni_jurusa
<staticText> n]]></text>
</staticText>
<reportElement mode="Opaque" <staticText>
x="50" y="0" width="100"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="458" y="0" width="62"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[Nama]]></text </textElement>
>
</staticText> <text><![CDATA[Thn
<staticText> Lulus]]></text>
</staticText>
<reportElement mode="Opaque" <staticText>
x="150" y="0" width="70"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="520" y="0" width="35"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[Jk]]></text> </textElement>
</staticText>
<staticText> <text><![CDATA[r-
Nilai]]></text>
<reportElement mode="Opaque" </staticText>
x="220" y="0" width="120" </band>
height="18" forecolor="#FFFFFF" </columnHeader>
backcolor="#999999"/> <detail>
<band height="22"
<textElement> splitType="Stretch">
<textField>
<font size="12"/>
<reportElement x="0" y="0"
</textElement> width="50" height="20"/>

<text><![CDATA[Tmpt, Tgl <textElement>


Lahir]]></text>
</staticText> <font size="12"/>
<staticText>
</textElement>
<reportElement mode="Opaque"
x="340" y="0" width="118" <textFieldExpression
height="18" forecolor="#FFFFFF" class="java.lang.String"><![CDATA[
backcolor="#999999"/> $F{alumni_noInduk}]]></textFieldEx
pression>
<textElement> </textField>
<textField>
<textFieldExpression
<reportElement x="50" y="0" class="java.lang.String"><![CDATA[
width="100" height="20"/> $F{alumni_jurusan}]]></textFieldEx
pression>
<textElement> </textField>
<textField>
<font size="12"/>
<reportElement x="458" y="0"
</textElement> width="50" height="20"/>

<textFieldExpression <textElement>
class="java.lang.String"><![CDATA[
$F{alumni_namaDepan}+" <font size="12"/>
"+$F{alumni_namaBelakang}]]></text
FieldExpression> </textElement>
</textField>
<textField> <textFieldExpression
class="java.lang.String"><![CDATA[
<reportElement x="150" y="0" $F{alumni_tahunLulus}]]></textFiel
width="70" height="20"/> dExpression>
</textField>
<textElement> <textField>

<font size="12"/> <reportElement x="531" y="0"


width="24" height="20"/>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.String"><![CDATA[ <font size="12"/>
$F{alumni_jk}]]></textFieldExpress
ion> </textElement>
</textField>
<textField> <textFieldExpression
class="java.lang.Long"><![CDATA[$F
<reportElement x="218" y="0" {alumni_rerataNilai}]]></textField
width="120" height="20"/> Expression>
</textField>
<textElement> </band>
</detail>
<font size="12"/> <columnFooter>
<band
</textElement> splitType="Stretch"/>
</columnFooter>
<textFieldExpression <pageFooter>
class="java.lang.String"><![CDATA[ <band height="151"
$F{alumni_tempatLahir}+","+$F{alum splitType="Stretch">
ni_tanggalLahir}]]></textFieldExpr <textField
ession> evaluationTime="Report" pattern=""
</textField> isBlankWhenNull="false">
<textField>
<reportElement
<reportElement x="338" y="0" key="textField" x="512" y="132"
width="120" height="20"/> width="36" height="19"
forecolor="#000000"
<textElement> backcolor="#FFFFFF"/>
<box>
<font size="12"/>
<topPen lineWidth="0.0"
</textElement> lineStyle="Solid"
lineColor="#000000"/>
<leftPen lineWidth="0.0" <textFieldExpression
lineStyle="Solid" class="java.lang.String"><![CDATA[
lineColor="#000000"/> "Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression>
<bottomPen lineWidth="0.0" </textField>
lineStyle="Solid" <textField
lineColor="#000000"/> pattern=""
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
lineStyle="Solid" <reportElement
lineColor="#000000"/> key="textField" x="1" y="132"
</box> width="209" height="19"
forecolor="#000000"
<textElement> backcolor="#FFFFFF"/>
<box>
<font size="10"/>
<topPen lineWidth="0.0"
</textElement> lineStyle="Solid"
lineColor="#000000"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ <leftPen lineWidth="0.0"
"" + lineStyle="Solid"
$V{PAGE_NUMBER}]]></textFieldExpre lineColor="#000000"/>
ssion>
</textField> <bottomPen lineWidth="0.0"
<textField lineStyle="Solid"
pattern="" lineColor="#000000"/>
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
<reportElement lineStyle="Solid"
key="textField" x="338" y="132" lineColor="#000000"/>
width="170" height="19" </box>
forecolor="#000000"
backcolor="#FFFFFF"/> <textElement>
<box>
<font size="10"/>
<topPen lineWidth="0.0"
lineStyle="Solid" </textElement>
lineColor="#000000"/>
<textFieldExpression
<leftPen lineWidth="0.0" class="java.util.Date"><![CDATA[ne
lineStyle="Solid" w Date()]]></textFieldExpression>
lineColor="#000000"/> </textField>
<staticText>
<bottomPen lineWidth="0.0"
lineStyle="Solid" <reportElement x="493"
lineColor="#000000"/> y="38" width="62" height="20"/>

<rightPen lineWidth="0.0" <textElement/>


lineStyle="Solid"
lineColor="#000000"/> <text><![CDATA[Mengetahuli,]
</box> ]></text>
</staticText>
<textElement <staticText>
textAlignment="Right">
<reportElement x="397"
<font size="10"/> y="87" width="158" height="20"/>

</textElement> <textElement>
<font isBold="true"/> <textElement/>

</textElement> <text><![CDATA[Garut,
September 2010]]></text>
<text><![CDATA[Kepala </staticText>
Sekolah SMK Negeri 2 </band>
Garut]]></text> </pageFooter>
</staticText> <summary>
<staticText> <band
splitType="Stretch"/>
<reportElement x="442" </summary>
y="18" width="113" height="20"/> </jasperReport>

Report Data Alumni Jurusan T. Audio Video yang Status Lulusannya Bekerja

<?xml version="1.0" encoding="UTF- </queryString>


8"?> <field
<jasperReport name="alumni_namaDepan"
xmlns="http://jasperreports.source class="java.lang.String">
forge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/ <fieldDescription><![CDATA[]
XMLSchema-instance" ]></fieldDescription>
xsi:schemaLocation="http://jasperr </field>
eports.sourceforge.net/jasperrepor <field name="alumni_noInduk"
ts class="java.lang.String">
http://jasperreports.sourceforge.n
et/xsd/jasperreport.xsd" <fieldDescription><![CDATA[]
name="null" pageWidth="595" ]></fieldDescription>
pageHeight="842" columnWidth="535" </field>
leftMargin="20" rightMargin="20" <field
topMargin="20" bottomMargin="20"> name="alumni_namaBelakang"
<queryString language="SQL"> class="java.lang.String">
<![CDATA[SELECT
alumni.`namaDepan` AS <fieldDescription><![CDATA[]
alumni_namaDepan, ]></fieldDescription>
alumni.`noInduk` AS </field>
alumni_noInduk, <field name="alumni_jk"
alumni.`namaBelakang` AS class="java.lang.String">
alumni_namaBelakang,
alumni.`jk` AS alumni_jk, <fieldDescription><![CDATA[]
alumni.`tempatLahir` AS ]></fieldDescription>
alumni_tempatLahir, </field>
alumni.`tanggalLahir` AS <field
alumni_tanggalLahir, name="alumni_tempatLahir"
alumni.`alamat` AS class="java.lang.String">
alumni_alamat,
alumni.`jurusan` AS <fieldDescription><![CDATA[]
alumni_jurusan, ]></fieldDescription>
alumni.`status` AS </field>
alumni_status, <field
alumni.`tahunLulus` AS name="alumni_tanggalLahir"
alumni_tahunLulus, class="java.sql.Date">
alumni.`rerataNilai` AS
alumni_rerataNilai <fieldDescription><![CDATA[]
FROM ]></fieldDescription>
`alumni` alumni where </field>
alumni.`jurusan` = "T. Audio <field name="alumni_alamat"
Video" and alumni.`status` = class="java.lang.String">
"Bekerja" order by
alumni.`rerataNilai` desc]]>
<fieldDescription><![CDATA[] <text><![CDATA[Classic
]></fieldDescription> template]]></text>
</field> </staticText>
<field name="alumni_jurusan" </band>
class="java.lang.String"> </title>
<pageHeader>
<fieldDescription><![CDATA[] <band
]></fieldDescription> splitType="Stretch"/>
</field> </pageHeader>
<field name="alumni_status" <columnHeader>
class="java.lang.String"> <band height="18"
splitType="Stretch">
<fieldDescription><![CDATA[] <staticText>
]></fieldDescription>
</field> <reportElement mode="Opaque"
<field x="0" y="0" width="50" height="18"
name="alumni_tahunLulus" forecolor="#FFFFFF"
class="java.lang.String"> backcolor="#999999"/>

<fieldDescription><![CDATA[] <textElement>
]></fieldDescription>
</field> <font size="12"/>
<field
name="alumni_rerataNilai" </textElement>
class="java.lang.Long">
<text><![CDATA[No
<fieldDescription><![CDATA[] Induk]]></text>
]></fieldDescription> </staticText>
</field> <staticText>
<background>
<band <reportElement mode="Opaque"
splitType="Stretch"/> x="50" y="0" width="100"
</background> height="18" forecolor="#FFFFFF"
<title> backcolor="#999999"/>
<band height="58"
splitType="Stretch"> <textElement>
<line>
<font size="12"/>
<reportElement x="0" y="8"
width="555" height="1"/> </textElement>
</line>
<line> <text><![CDATA[Nama]]></text
>
<reportElement x="0" y="51" </staticText>
width="555" height="1"/> <staticText>
</line>
<staticText> <reportElement mode="Opaque"
x="150" y="0" width="50"
<reportElement x="65" y="13" height="18" forecolor="#FFFFFF"
width="424" height="35"/> backcolor="#999999"/>

<textElement <textElement>
textAlignment="Center">
<font size="12"/>
<font size="26"
isBold="true"/> </textElement>

</textElement> <text><![CDATA[Jk]]></text>
</staticText>
<staticText>
<reportElement mode="Opaque" <text><![CDATA[alumni_rerata
x="200" y="0" width="100" Nilai]]></text>
height="18" forecolor="#FFFFFF" </staticText>
backcolor="#999999"/> </band>
</columnHeader>
<textElement> <detail>
<band height="20"
<font size="12"/> splitType="Stretch">
<textField>
</textElement>
<reportElement x="0" y="0"
<text><![CDATA[Tmpt, Tgl width="50" height="20"/>
Lahir]]></text>
</staticText> <textElement>
<staticText>
<font size="12"/>
<reportElement mode="Opaque"
x="300" y="0" width="50" </textElement>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <textFieldExpression
class="java.lang.String"><![CDATA[
<textElement> $F{alumni_noInduk}]]></textFieldEx
pression>
<font size="12"/> </textField>
<textField>
</textElement>
<reportElement x="150" y="0"
<text><![CDATA[alumni_alamat width="50" height="20"/>
]]></text>
</staticText> <textElement>
<staticText>
<font size="12"/>
<reportElement mode="Opaque"
x="450" y="0" width="50" </textElement>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <textFieldExpression
class="java.lang.String"><![CDATA[
<textElement> $F{alumni_jk}]]></textFieldExpress
ion>
<font size="12"/> </textField>
<textField>
</textElement>
<reportElement x="200" y="0"
<text><![CDATA[alumni_tahunL width="50" height="20"/>
ulus]]></text>
</staticText> <textElement>
<staticText>
<font size="12"/>
<reportElement mode="Opaque"
x="500" y="0" width="50" </textElement>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <textFieldExpression
class="java.lang.String"><![CDATA[
<textElement> $F{alumni_tempatLahir}+","+$F{alum
ni_tanggalLahir}]]></textFieldExpr
<font size="12"/> ession>
</textField>
</textElement> <textField>
{alumni_rerataNilai}]]></textField
<reportElement x="250" y="0" Expression>
width="50" height="20"/> </textField>
<textField>
<textElement>
<reportElement x="50" y="0"
<font size="12"/> width="50" height="20"/>

</textElement> <textElement>

<textFieldExpression <font size="12"/>


class="java.util.Date"><![CDATA[$F
{alumni_tanggalLahir}]]></textFiel </textElement>
dExpression>
</textField> <textFieldExpression
<textField> class="java.lang.String"><![CDATA[
$F{alumni_namaDepan}+"
<reportElement x="300" y="0" "+$F{alumni_namaBelakang}]]></text
width="50" height="20"/> FieldExpression>
</textField>
<textElement> </band>
</detail>
<font size="12"/> <columnFooter>
<band
</textElement> splitType="Stretch"/>
</columnFooter>
<textFieldExpression <pageFooter>
class="java.lang.String"><![CDATA[ <band height="26"
$F{alumni_alamat}]]></textFieldExp splitType="Stretch">
ression> <textField
</textField> evaluationTime="Report" pattern=""
<textField> isBlankWhenNull="false">

<reportElement x="450" y="0" <reportElement


width="50" height="20"/> key="textField" x="516" y="6"
width="36" height="19"
<textElement> forecolor="#000000"
backcolor="#FFFFFF"/>
<font size="12"/> <box>

</textElement> <topPen lineWidth="0.0"


lineStyle="Solid"
<textFieldExpression lineColor="#000000"/>
class="java.lang.String"><![CDATA[
$F{alumni_tahunLulus}]]></textFiel <leftPen lineWidth="0.0"
dExpression> lineStyle="Solid"
</textField> lineColor="#000000"/>
<textField>
<bottomPen lineWidth="0.0"
<reportElement x="500" y="0" lineStyle="Solid"
width="50" height="20"/> lineColor="#000000"/>

<textElement> <rightPen lineWidth="0.0"


lineStyle="Solid"
<font size="12"/> lineColor="#000000"/>
</box>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.Long"><![CDATA[$F <font size="10"/>
</textField>
</textElement> <textField
pattern=""
<textFieldExpression isBlankWhenNull="false">
class="java.lang.String"><![CDATA[
"" + <reportElement
$V{PAGE_NUMBER}]]></textFieldExpre key="textField" x="1" y="6"
ssion> width="209" height="19"
</textField> forecolor="#000000"
<textField backcolor="#FFFFFF"/>
pattern="" <box>
isBlankWhenNull="false">
<topPen lineWidth="0.0"
<reportElement lineStyle="Solid"
key="textField" x="342" y="6" lineColor="#000000"/>
width="170" height="19"
forecolor="#000000" <leftPen lineWidth="0.0"
backcolor="#FFFFFF"/> lineStyle="Solid"
<box> lineColor="#000000"/>

<topPen lineWidth="0.0" <bottomPen lineWidth="0.0"


lineStyle="Solid" lineStyle="Solid"
lineColor="#000000"/> lineColor="#000000"/>

<leftPen lineWidth="0.0" <rightPen lineWidth="0.0"


lineStyle="Solid" lineStyle="Solid"
lineColor="#000000"/> lineColor="#000000"/>
</box>
<bottomPen lineWidth="0.0"
lineStyle="Solid" <textElement>
lineColor="#000000"/>
<font size="10"/>
<rightPen lineWidth="0.0"
lineStyle="Solid" </textElement>
lineColor="#000000"/>
</box> <textFieldExpression
class="java.util.Date"><![CDATA[ne
<textElement w Date()]]></textFieldExpression>
textAlignment="Right"> </textField>
</band>
<font size="10"/> </pageFooter>
<summary>
</textElement> <band
splitType="Stretch"/>
<textFieldExpression </summary>
class="java.lang.String"><![CDATA[ </jasperReport>
"Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression>

Report Data Alumni Berdasarkan Jurusan

<?xml version="1.0" encoding="UTF- http://jasperreports.sourceforge.n


8"?> et/xsd/jasperreport.xsd"
<jasperReport name="null" pageWidth="595"
xmlns="http://jasperreports.source pageHeight="842" columnWidth="535"
forge.net/jasperreports" leftMargin="20" rightMargin="20"
xmlns:xsi="http://www.w3.org/2001/ topMargin="20" bottomMargin="20">
XMLSchema-instance" <queryString language="SQL">
xsi:schemaLocation="http://jasperr <![CDATA[SELECT
eports.sourceforge.net/jasperrepor alumni.`noInduk` AS
ts alumni_noInduk,
alumni.`namaDepan` AS </field>
alumni_namaDepan, <field name="alumni_alamat"
alumni.`namaBelakang` AS class="java.lang.String">
alumni_namaBelakang,
alumni.`jk` AS alumni_jk, <fieldDescription><![CDATA[]
alumni.`tempatLahir` AS ]></fieldDescription>
alumni_tempatLahir, </field>
alumni.`tanggalLahir` AS <field name="alumni_jurusan"
alumni_tanggalLahir, class="java.lang.String">
alumni.`alamat` AS
alumni_alamat, <fieldDescription><![CDATA[]
alumni.`jurusan` AS ]></fieldDescription>
alumni_jurusan, </field>
alumni.`status` AS <field name="alumni_status"
alumni_status, class="java.lang.String">
alumni.`tahunLulus` AS
alumni_tahunLulus, <fieldDescription><![CDATA[]
alumni.`rerataNilai` AS ]></fieldDescription>
alumni_rerataNilai </field>
FROM <field
`alumni` alumni]]> name="alumni_tahunLulus"
</queryString> class="java.lang.String">
<field name="alumni_noInduk"
class="java.lang.String"> <fieldDescription><![CDATA[]
]></fieldDescription>
<fieldDescription><![CDATA[] </field>
]></fieldDescription> <field
</field> name="alumni_rerataNilai"
<field class="java.lang.Long">
name="alumni_namaDepan"
class="java.lang.String"> <fieldDescription><![CDATA[]
]></fieldDescription>
<fieldDescription><![CDATA[] </field>
]></fieldDescription> <group
</field> name="alumni_jurusan">
<field
name="alumni_namaBelakang" <groupExpression><![CDATA[$F
class="java.lang.String"> {alumni_jurusan}]]></groupExpressi
on>
<fieldDescription><![CDATA[] <groupHeader>
]></fieldDescription> <band
</field> height="27" splitType="Stretch">
<field name="alumni_jk"
class="java.lang.String"> <staticText>

<fieldDescription><![CDATA[] <reportElement mode="Opaque"


]></fieldDescription> x="0" y="0" width="139"
</field> height="27" forecolor="#FFFFFF"
<field backcolor="#000000"/>
name="alumni_tempatLahir"
class="java.lang.String"> <textElement>

<fieldDescription><![CDATA[] <font size="18"/>


]></fieldDescription>
</field> </textElement>
<field
name="alumni_tanggalLahir" <text><![CDATA[Jurusan]]></t
class="java.sql.Date"> ext>

<fieldDescription><![CDATA[] </staticText>
]></fieldDescription>
<textField> <textElement
textAlignment="Center">
<reportElement mode="Opaque"
x="139" y="0" width="416" <font size="14"
height="27" forecolor="#FFFFFF" isBold="true"/>
backcolor="#000000"/>
</textElement>
<textElement>
<text><![CDATA[Jalan
<font size="18" Suherman No. 9 Tarogong
isBold="true"/> Garut]]></text>
</staticText>
</textElement> <staticText>

<textFieldExpression <reportElement x="75" y="10"


class="java.lang.String"><![CDATA[ width="424" height="35"/>
$F{alumni_jurusan}]]></textFieldEx
pression> <textElement
textAlignment="Center">
</textField>
</band> <font fontName="SansSerif"
</groupHeader> size="26" isBold="true"/>
<groupFooter>
<band height="8" </textElement>
splitType="Stretch">
<line <text><![CDATA[SMK Negeri 2
direction="BottomUp"> Garut]]></text>
</staticText>
<reportElement key="line" <staticText>
x="1" y="4" width="554"
height="1"/> <reportElement x="3" y="88"
</line> width="501" height="35"/>
</band>
</groupFooter> <textElement
</group> textAlignment="Left">
<background>
<band <font fontName="SansSerif"
splitType="Stretch"/> size="22" isBold="true"
</background> isItalic="false"
<title> isUnderline="true"/>
<band height="132"
splitType="Stretch"> </textElement>
<line>
<text><![CDATA[Report Data
<reportElement x="0" y="8" Alumni Berdasarkan
width="555" height="1"/> Jurusan]]></text>
</line> </staticText>
<line> </band>
</title>
<reportElement <pageHeader>
positionType="FixRelativeToBottom" <band
x="0" y="67" width="555" splitType="Stretch"/>
height="1"/> </pageHeader>
</line> <columnHeader>
<staticText> <band height="18"
splitType="Stretch">
<reportElement x="75" y="42" <staticText>
width="424" height="35"/>
<reportElement mode="Opaque"
x="0" y="0" width="65" height="18"
forecolor="#FFFFFF"
backcolor="#999999"/> <reportElement mode="Opaque"
x="402" y="0" width="93"
<textElement> height="18" forecolor="#FFFFFF"
backcolor="#999999"/>
<font size="12"/>
<textElement>
</textElement>
<font size="12"/>
<text><![CDATA[No
Induk]]></text> </textElement>
</staticText>
<staticText> <text><![CDATA[Status]]></te
xt>
<reportElement mode="Opaque" </staticText>
x="65" y="0" width="136" <staticText>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <reportElement mode="Opaque"
x="495" y="0" width="60"
<textElement> height="18" forecolor="#FFFFFF"
backcolor="#999999"/>
<font size="12"/>
<textElement>
</textElement>
<font size="12"/>
<text><![CDATA[Nama]]></text
> </textElement>
</staticText>
<staticText> <text><![CDATA[r-
Nilai]]></text>
<reportElement mode="Opaque" </staticText>
x="201" y="0" width="80" </band>
height="18" forecolor="#FFFFFF" </columnHeader>
backcolor="#999999"/> <detail>
<band height="20"
<textElement> splitType="Stretch">
<textField>
<font size="12"/>
<reportElement x="0" y="0"
</textElement> width="65" height="20"/>

<text><![CDATA[Jk]]></text> <textElement>
</staticText>
<staticText> <font size="12"/>

<reportElement mode="Opaque" </textElement>


x="281" y="0" width="121"
height="18" forecolor="#FFFFFF" <textFieldExpression
backcolor="#999999"/> class="java.lang.String"><![CDATA[
$F{alumni_noInduk}]]></textFieldEx
<textElement> pression>
</textField>
<font size="12"/> <textField>

</textElement> <reportElement x="65" y="0"


width="136" height="20"/>
<text><![CDATA[Tmpt, Tgl
Lahir]]></text> <textElement>
</staticText>
<staticText> <font size="12"/>
</textElement> <reportElement x="495" y="0"
width="55" height="20"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ <textElement>
$F{alumni_namaDepan}+"
"+$F{alumni_namaBelakang}]]></text <font size="12"/>
FieldExpression>
</textField> </textElement>
<textField>
<textFieldExpression
<reportElement x="201" y="0" class="java.lang.Long"><![CDATA[$F
width="80" height="20"/> {alumni_rerataNilai}]]></textField
Expression>
<textElement> </textField>
</band>
<font size="12"/> </detail>
<columnFooter>
</textElement> <band
splitType="Stretch"/>
<textFieldExpression </columnFooter>
class="java.lang.String"><![CDATA[ <pageFooter>
$F{alumni_jk}]]></textFieldExpress <band height="125"
ion> splitType="Stretch">
</textField> <textField
<textField> evaluationTime="Report" pattern=""
isBlankWhenNull="false">
<reportElement x="281" y="0"
width="121" height="20"/> <reportElement
key="textField" x="518" y="105"
<textElement> width="36" height="19"
forecolor="#000000"
<font size="12"/> backcolor="#FFFFFF"/>
<box>
</textElement>
<topPen lineWidth="0.0"
<textFieldExpression lineStyle="Solid"
class="java.lang.String"><![CDATA[ lineColor="#000000"/>
$F{alumni_tempatLahir}+","+$F{alum
ni_tanggalLahir}]]></textFieldExpr <leftPen lineWidth="0.0"
ession> lineStyle="Solid"
</textField> lineColor="#000000"/>
<textField>
<bottomPen lineWidth="0.0"
<reportElement x="402" y="0" lineStyle="Solid"
width="93" height="20"/> lineColor="#000000"/>

<textElement> <rightPen lineWidth="0.0"


lineStyle="Solid"
<font size="12"/> lineColor="#000000"/>
</box>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.String"><![CDATA[ <font size="10"/>
$F{alumni_status}]]></textFieldExp
ression> </textElement>
</textField>
<textField> <textFieldExpression
class="java.lang.String"><![CDATA[
"" +
$V{PAGE_NUMBER}]]></textFieldExpre
ssion> <bottomPen lineWidth="0.0"
</textField> lineStyle="Solid"
<textField lineColor="#000000"/>
pattern=""
isBlankWhenNull="false"> <rightPen lineWidth="0.0"
lineStyle="Solid"
<reportElement lineColor="#000000"/>
key="textField" x="344" y="105" </box>
width="170" height="19"
forecolor="#000000" <textElement>
backcolor="#FFFFFF"/>
<box> <font size="10"/>

<topPen lineWidth="0.0" </textElement>


lineStyle="Solid"
lineColor="#000000"/> <textFieldExpression
class="java.util.Date"><![CDATA[ne
<leftPen lineWidth="0.0" w Date()]]></textFieldExpression>
lineStyle="Solid" </textField>
lineColor="#000000"/> <staticText>

<bottomPen lineWidth="0.0" <reportElement x="498"


lineStyle="Solid" y="36" width="62" height="20"/>
lineColor="#000000"/>
<textElement/>
<rightPen lineWidth="0.0"
lineStyle="Solid" <text><![CDATA[Mengetahuli,]
lineColor="#000000"/> ]></text>
</box> </staticText>
<staticText>
<textElement
textAlignment="Right"> <reportElement x="384"
y="85" width="175" height="20"/>
<font size="10"/>
<textElement>
</textElement>
<font isBold="true"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ </textElement>
"Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression> <text><![CDATA[Kepala
</textField> Sekolah SMK Negeri 2
<textField Garut]]></text>
pattern="" </staticText>
isBlankWhenNull="false"> <staticText>

<reportElement <reportElement x="447"


key="textField" x="3" y="105" y="16" width="113" height="20"/>
width="209" height="19"
forecolor="#000000" <textElement/>
backcolor="#FFFFFF"/>
<box> <text><![CDATA[Garut,
September 2010]]></text>
<topPen lineWidth="0.0" </staticText>
lineStyle="Solid" </band>
lineColor="#000000"/> </pageFooter>
<summary>
<leftPen lineWidth="0.0" <band
lineStyle="Solid" splitType="Stretch"/>
lineColor="#000000"/> </summary>
</jasperReport>

Report Data Alumni Bedasarkan Status

<?xml version="1.0" encoding="UTF-


8"?> <fieldDescription><![CDATA[]
<jasperReport ]></fieldDescription>
xmlns="http://jasperreports.source </field>
forge.net/jasperreports" <field
xmlns:xsi="http://www.w3.org/2001/ name="alumni_namaBelakang"
XMLSchema-instance" class="java.lang.String">
xsi:schemaLocation="http://jasperr
eports.sourceforge.net/jasperrepor <fieldDescription><![CDATA[]
ts ]></fieldDescription>
http://jasperreports.sourceforge.n </field>
et/xsd/jasperreport.xsd" <field
name="null" pageWidth="595" name="alumni_tempatLahir"
pageHeight="842" columnWidth="535" class="java.lang.String">
leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20"> <fieldDescription><![CDATA[]
<queryString language="SQL"> ]></fieldDescription>
<![CDATA[SELECT </field>
alumni.`noInduk` AS <field
alumni_noInduk, name="alumni_tanggalLahir"
alumni.`namaDepan` AS class="java.sql.Date">
alumni_namaDepan,
alumni.`jk` AS alumni_jk, <fieldDescription><![CDATA[]
alumni.`namaBelakang` AS ]></fieldDescription>
alumni_namaBelakang, </field>
alumni.`tempatLahir` AS <field name="alumni_alamat"
alumni_tempatLahir, class="java.lang.String">
alumni.`tanggalLahir` AS
alumni_tanggalLahir, <fieldDescription><![CDATA[]
alumni.`alamat` AS ]></fieldDescription>
alumni_alamat, </field>
alumni.`jurusan` AS <field name="alumni_jurusan"
alumni_jurusan, class="java.lang.String">
alumni.`status` AS
alumni_status, <fieldDescription><![CDATA[]
alumni.`tahunLulus` AS ]></fieldDescription>
alumni_tahunLulus, </field>
alumni.`rerataNilai` AS <field name="alumni_status"
alumni_rerataNilai class="java.lang.String">
FROM
`alumni` alumni]]> <fieldDescription><![CDATA[]
</queryString> ]></fieldDescription>
<field name="alumni_noInduk" </field>
class="java.lang.String"> <field
name="alumni_tahunLulus"
<fieldDescription><![CDATA[] class="java.lang.String">
]></fieldDescription>
</field> <fieldDescription><![CDATA[]
<field ]></fieldDescription>
name="alumni_namaDepan" </field>
class="java.lang.String"> <field
name="alumni_rerataNilai"
<fieldDescription><![CDATA[] class="java.lang.Long">
]></fieldDescription>
</field> <fieldDescription><![CDATA[]
<field name="alumni_jk" ]></fieldDescription>
class="java.lang.String"> </field>
<group name="alumni_status"> </group>
<background>
<groupExpression><![CDATA[$F <band
{alumni_status}]]></groupExpressio splitType="Stretch"/>
n> </background>
<groupHeader> <title>
<band <band height="117"
height="27" splitType="Stretch"> splitType="Stretch">
<line>
<staticText>
<reportElement x="0" y="8"
<reportElement mode="Opaque" width="555" height="1"/>
x="0" y="0" width="200" </line>
height="27" forecolor="#FFFFFF" <line>
backcolor="#000000"/>
<reportElement
<textElement> positionType="FixRelativeToBottom"
x="10" y="67" width="555"
<font size="18"/> height="1"/>
</line>
</textElement> <staticText>

<text><![CDATA[Status <reportElement x="85" y="41"


Lulusan Alumni :]]></text> width="424" height="35"/>

</staticText> <textElement
textAlignment="Center">
<textField>
<font size="14"
<reportElement mode="Opaque" isBold="true"/>
x="200" y="0" width="355"
height="27" forecolor="#FFFFFF" </textElement>
backcolor="#000000"/>
<text><![CDATA[Jalan
<textElement> Suherman No. 9 Tarogong
Garut]]></text>
<font size="18" </staticText>
isBold="true"/> <staticText>

</textElement> <reportElement x="10" y="78"


width="530" height="35"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ <textElement
$F{alumni_status}]]></textFieldExp textAlignment="Left">
ression>
<font fontName="SansSerif"
</textField> size="22" isBold="true"
</band> isItalic="false"
</groupHeader> isUnderline="true"/>
<groupFooter>
<band height="8" </textElement>
splitType="Stretch">
<line <text><![CDATA[Report Data
direction="BottomUp"> Alumni Berdasarkan Status
Lulusan]]></text>
<reportElement key="line" </staticText>
x="1" y="4" width="554" <staticText>
height="1"/>
</line> <reportElement x="85" y="9"
</band> width="424" height="35"/>
</groupFooter>
<textElement <font size="12"/>
textAlignment="Center">
</textElement>
<font fontName="SansSerif"
size="26" isBold="true"/> <text><![CDATA[Jk]]></text>
</staticText>
</textElement> <staticText>

<text><![CDATA[SMK Negeri 2 <reportElement mode="Opaque"


Garut]]></text> x="239" y="0" width="91"
</staticText> height="18" forecolor="#FFFFFF"
</band> backcolor="#999999"/>
</title>
<pageHeader> <textElement>
<band
splitType="Stretch"/> <font size="12"/>
</pageHeader>
<columnHeader> </textElement>
<band height="18"
splitType="Stretch"> <text><![CDATA[Tmpt, Tgl
<staticText> Lahir]]></text>
</staticText>
<reportElement mode="Opaque" <staticText>
x="0" y="0" width="55" height="18"
forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="330" y="0" width="84"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[No </textElement>
Induk]]></text>
</staticText> <text><![CDATA[Alamat]]></te
<staticText> xt>
</staticText>
<reportElement mode="Opaque" <staticText>
x="55" y="0" width="110"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="414" y="0" width="95"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[Nama]]></text </textElement>
>
</staticText> <text><![CDATA[Jurusan]]></t
<staticText> ext>
</staticText>
<reportElement mode="Opaque" <staticText>
x="165" y="0" width="74"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="509" y="0" width="46"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>
$F{alumni_jk}]]></textFieldExpress
<textElement> ion>
</textField>
<font size="12"/> <textField>

</textElement> <reportElement x="239" y="0"


width="91" height="20"/>
<text><![CDATA[Lulusan]]></t
ext> <textElement>
</staticText>
</band> <font size="12"/>
</columnHeader>
<detail> </textElement>
<band height="20"
splitType="Stretch"> <textFieldExpression
<textField> class="java.lang.String"><![CDATA[
$F{alumni_tempatLahir}+","+$F{alum
<reportElement x="0" y="0" ni_tanggalLahir}]]></textFieldExpr
width="55" height="20"/> ession>
</textField>
<textElement> <textField>

<font size="12"/> <reportElement x="330" y="0"


width="84" height="20"/>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.String"><![CDATA[ <font size="12"/>
$F{alumni_noInduk}]]></textFieldEx
pression> </textElement>
</textField>
<textField> <textFieldExpression
class="java.lang.String"><![CDATA[
<reportElement x="55" y="0" $F{alumni_alamat}]]></textFieldExp
width="110" height="20"/> ression>
</textField>
<textElement> <textField>

<font size="12"/> <reportElement x="414" y="0"


width="95" height="20"/>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.String"><![CDATA[ <font size="12"/>
$F{alumni_namaDepan}+"
"+$F{alumni_namaBelakang}]]></text </textElement>
FieldExpression>
</textField> <textFieldExpression
<textField> class="java.lang.String"><![CDATA[
$F{alumni_jurusan}]]></textFieldEx
<reportElement x="165" y="0" pression>
width="74" height="20"/> </textField>
<textField>
<textElement>
<reportElement x="509" y="0"
<font size="12"/> width="46" height="20"/>

</textElement> <textElement>

<textFieldExpression <font size="12"/>


class="java.lang.String"><![CDATA[
</textElement> <reportElement
key="textField" x="344" y="108"
<textFieldExpression width="170" height="19"
class="java.lang.String"><![CDATA[ forecolor="#000000"
$F{alumni_tahunLulus}]]></textFiel backcolor="#FFFFFF"/>
dExpression> <box>
</textField>
</band> <topPen lineWidth="0.0"
</detail> lineStyle="Solid"
<columnFooter> lineColor="#000000"/>
<band
splitType="Stretch"/> <leftPen lineWidth="0.0"
</columnFooter> lineStyle="Solid"
<pageFooter> lineColor="#000000"/>
<band height="133"
splitType="Stretch"> <bottomPen lineWidth="0.0"
<textField lineStyle="Solid"
evaluationTime="Report" pattern="" lineColor="#000000"/>
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
<reportElement lineStyle="Solid"
key="textField" x="518" y="108" lineColor="#000000"/>
width="36" height="19" </box>
forecolor="#000000"
backcolor="#FFFFFF"/> <textElement
<box> textAlignment="Right">

<topPen lineWidth="0.0" <font size="10"/>


lineStyle="Solid"
lineColor="#000000"/> </textElement>

<leftPen lineWidth="0.0" <textFieldExpression


lineStyle="Solid" class="java.lang.String"><![CDATA[
lineColor="#000000"/> "Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression>
<bottomPen lineWidth="0.0" </textField>
lineStyle="Solid" <textField
lineColor="#000000"/> pattern=""
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
lineStyle="Solid" <reportElement
lineColor="#000000"/> key="textField" x="3" y="108"
</box> width="209" height="19"
forecolor="#000000"
<textElement> backcolor="#FFFFFF"/>
<box>
<font size="10"/>
<topPen lineWidth="0.0"
</textElement> lineStyle="Solid"
lineColor="#000000"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ <leftPen lineWidth="0.0"
"" + lineStyle="Solid"
$V{PAGE_NUMBER}]]></textFieldExpre lineColor="#000000"/>
ssion>
</textField> <bottomPen lineWidth="0.0"
<textField lineStyle="Solid"
pattern="" lineColor="#000000"/>
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
lineStyle="Solid" </staticText>
lineColor="#000000"/> <staticText>
</box>
<reportElement x="448"
<textElement> y="18" width="113" height="20"/>

<font size="10"/> <textElement/>

</textElement> <text><![CDATA[Garut,
September 2010]]></text>
<textFieldExpression </staticText>
class="java.util.Date"><![CDATA[ne <staticText>
w Date()]]></textFieldExpression>
</textField> <reportElement x="499"
<staticText> y="38" width="62" height="20"/>

<reportElement x="385" <textElement/>


y="87" width="175" height="20"/>
<text><![CDATA[Mengetahuli,]
<textElement> ]></text>
</staticText>
<font isBold="true"/> </band>
</pageFooter>
</textElement> <summary>
<band
<text><![CDATA[Kepala splitType="Stretch"/>
Sekolah SMK Negeri 2 </summary>
Garut]]></text> </jasperReport>

Report Data Alumni Jurusan T. Audio Video

<?xml version="1.0" encoding="UTF- alumni.`alamat` AS


8"?> alumni_alamat,
<jasperReport alumni.`jurusan` AS
xmlns="http://jasperreports.source alumni_jurusan,
forge.net/jasperreports" alumni.`status` AS
xmlns:xsi="http://www.w3.org/2001/ alumni_status,
XMLSchema-instance" alumni.`tahunLulus` AS
xsi:schemaLocation="http://jasperr alumni_tahunLulus,
eports.sourceforge.net/jasperrepor alumni.`rerataNilai` AS
ts alumni_rerataNilai
http://jasperreports.sourceforge.n FROM
et/xsd/jasperreport.xsd" `alumni` alumni where
name="null" pageWidth="595" alumni.`jurusan` = "T. Audio
pageHeight="842" columnWidth="535" Video"]]>
leftMargin="20" rightMargin="20" </queryString>
topMargin="20" bottomMargin="20"> <field name="alumni_noInduk"
<queryString language="SQL"> class="java.lang.String">
<![CDATA[SELECT
alumni.`noInduk` AS <fieldDescription><![CDATA[]
alumni_noInduk, ]></fieldDescription>
alumni.`namaDepan` AS </field>
alumni_namaDepan, <field
alumni.`namaBelakang` AS name="alumni_namaDepan"
alumni_namaBelakang, class="java.lang.String">
alumni.`jk` AS alumni_jk,
alumni.`tempatLahir` AS <fieldDescription><![CDATA[]
alumni_tempatLahir, ]></fieldDescription>
alumni.`tanggalLahir` AS </field>
alumni_tanggalLahir,
<field
name="alumni_namaBelakang" <groupExpression><![CDATA[$F
class="java.lang.String"> {alumni_status}]]></groupExpressio
n>
<fieldDescription><![CDATA[] <groupHeader>
]></fieldDescription> <band
</field> height="27" splitType="Stretch">
<field name="alumni_jk"
class="java.lang.String"> <staticText>

<fieldDescription><![CDATA[] <reportElement mode="Opaque"


]></fieldDescription> x="0" y="0" width="139"
</field> height="27" forecolor="#FFFFFF"
<field backcolor="#000000"/>
name="alumni_tempatLahir"
class="java.lang.String"> <textElement>

<fieldDescription><![CDATA[] <font size="18"/>


]></fieldDescription>
</field> </textElement>
<field
name="alumni_tanggalLahir" <text><![CDATA[Status
class="java.sql.Date"> Lulusan]]></text>

<fieldDescription><![CDATA[] </staticText>
]></fieldDescription>
</field> <textField>
<field name="alumni_alamat"
class="java.lang.String"> <reportElement mode="Opaque"
x="139" y="0" width="416"
<fieldDescription><![CDATA[] height="27" forecolor="#FFFFFF"
]></fieldDescription> backcolor="#000000"/>
</field>
<field name="alumni_jurusan" <textElement>
class="java.lang.String">
<font size="18"
<fieldDescription><![CDATA[] isBold="true"/>
]></fieldDescription>
</field> </textElement>
<field name="alumni_status"
class="java.lang.String"> <textFieldExpression
class="java.lang.String"><![CDATA[
<fieldDescription><![CDATA[] $F{alumni_status}]]></textFieldExp
]></fieldDescription> ression>
</field>
<field </textField>
name="alumni_tahunLulus" </band>
class="java.lang.String"> </groupHeader>
<groupFooter>
<fieldDescription><![CDATA[] <band height="8"
]></fieldDescription> splitType="Stretch">
</field> <line
<field direction="BottomUp">
name="alumni_rerataNilai"
class="java.lang.Long"> <reportElement key="line"
x="1" y="4" width="554"
<fieldDescription><![CDATA[] height="1"/>
]></fieldDescription> </line>
</field> </band>
<group name="alumni_status"> </groupFooter>
</group>
<background>
<band <font fontName="SansSerif"
splitType="Stretch"/> size="26" isBold="true"/>
</background>
<title> </textElement>
<band height="133"
splitType="Stretch"> <text><![CDATA[SMK Negeri 2
<line> Garut]]></text>
</staticText>
<reportElement x="0" y="8" </band>
width="555" height="1"/> </title>
</line> <pageHeader>
<line> <band
splitType="Stretch"/>
<reportElement x="0" y="71" </pageHeader>
width="555" height="1"/> <columnHeader>
</line> <band height="18"
<staticText> splitType="Stretch">
<staticText>
<reportElement x="10" y="97"
width="530" height="35"/> <reportElement mode="Opaque"
x="0" y="0" width="55" height="18"
<textElement> forecolor="#FFFFFF"
backcolor="#999999"/>
<font fontName="SansSerif"
size="18" isBold="true" <textElement>
isItalic="false"
isUnderline="true"/> <font size="12"/>

</textElement> </textElement>

<text><![CDATA[Report Status <text><![CDATA[No


Data Alumni Jurusan T. Audio Video Induk]]></text>
tahun 2010]]></text> </staticText>
</staticText> <staticText>
<staticText>
<reportElement mode="Opaque"
<reportElement x="76" y="40" x="55" y="0" width="112"
width="424" height="35"/> height="18" forecolor="#FFFFFF"
backcolor="#999999"/>
<textElement
textAlignment="Center"> <textElement>

<font size="14" <font size="12"/>


isBold="true"/>
</textElement>
</textElement>
<text><![CDATA[Nama]]></text
<text><![CDATA[Jalan >
Suherman No. 9 Tarogong </staticText>
Garut]]></text> <staticText>
</staticText>
<staticText> <reportElement mode="Opaque"
x="167" y="0" width="94"
<reportElement x="76" y="8" height="18" forecolor="#FFFFFF"
width="424" height="35"/> backcolor="#999999"/>

<textElement <textElement>
textAlignment="Center">
<font size="12"/>
</textElement> <reportElement x="0" y="0"
width="55" height="20"/>
<text><![CDATA[Jk]]></text>
</staticText> <textElement>
<staticText>
<font size="12"/>
<reportElement mode="Opaque"
x="261" y="0" width="124" </textElement>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <textFieldExpression
class="java.lang.String"><![CDATA[
<textElement> $F{alumni_noInduk}]]></textFieldEx
pression>
<font size="12"/> </textField>
<textField>
</textElement>
<reportElement x="55" y="0"
<text><![CDATA[Tmpt, Tgl width="112" height="20"/>
Lahir]]></text>
</staticText> <textElement>
<staticText>
<font size="12"/>
<reportElement mode="Opaque"
x="380" y="0" width="115" </textElement>
height="18" forecolor="#FFFFFF"
backcolor="#999999"/> <textFieldExpression
class="java.lang.String"><![CDATA[
<textElement> $F{alumni_namaDepan}+"
"+$F{alumni_namaBelakang}]]></text
<font size="12"/> FieldExpression>
</textField>
</textElement> <textField>

<text><![CDATA[Alamat]]></te <reportElement x="167" y="0"


xt> width="69" height="20"/>
</staticText>
<staticText> <textElement>

<reportElement mode="Opaque" <font size="12"/>


x="495" y="0" width="60"
height="18" forecolor="#FFFFFF" </textElement>
backcolor="#999999"/>
<textFieldExpression
<textElement> class="java.lang.String"><![CDATA[
$F{alumni_jk}]]></textFieldExpress
<font size="12"/> ion>
</textField>
</textElement> <textField>

<text><![CDATA[r- <reportElement x="261" y="0"


Nilai]]></text> width="124" height="20"/>
</staticText>
</band> <textElement>
</columnHeader>
<detail> <font size="12"/>
<band height="20"
splitType="Stretch"> </textElement>
<textField>
<textFieldExpression
class="java.lang.String"><![CDATA[
$F{alumni_tempatLahir}+","+$F{alum lineStyle="Solid"
ni_tanggalLahir}]]></textFieldExpr lineColor="#000000"/>
ession>
</textField> <bottomPen lineWidth="0.0"
<textField> lineStyle="Solid"
lineColor="#000000"/>
<reportElement x="380" y="0"
width="115" height="20"/> <rightPen lineWidth="0.0"
lineStyle="Solid"
<textElement> lineColor="#000000"/>
</box>
<font size="12"/>
<textElement>
</textElement>
<font size="10"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ </textElement>
$F{alumni_alamat}]]></textFieldExp
ression> <textFieldExpression
</textField> class="java.lang.String"><![CDATA[
<textField> "" +
$V{PAGE_NUMBER}]]></textFieldExpre
<reportElement x="495" y="0" ssion>
width="60" height="20"/> </textField>
<textField
<textElement> pattern=""
isBlankWhenNull="false">
<font size="12"/>
<reportElement
</textElement> key="textField" x="345" y="115"
width="170" height="19"
<textFieldExpression forecolor="#000000"
class="java.lang.Long"><![CDATA[$F backcolor="#FFFFFF"/>
{alumni_rerataNilai}]]></textField <box>
Expression>
</textField> <topPen lineWidth="0.0"
</band> lineStyle="Solid"
</detail> lineColor="#000000"/>
<columnFooter>
<band <leftPen lineWidth="0.0"
splitType="Stretch"/> lineStyle="Solid"
</columnFooter> lineColor="#000000"/>
<pageFooter>
<band height="134" <bottomPen lineWidth="0.0"
splitType="Stretch"> lineStyle="Solid"
<textField lineColor="#000000"/>
evaluationTime="Report" pattern=""
isBlankWhenNull="false"> <rightPen lineWidth="0.0"
lineStyle="Solid"
<reportElement lineColor="#000000"/>
key="textField" x="519" y="115" </box>
width="36" height="19"
forecolor="#000000" <textElement
backcolor="#FFFFFF"/> textAlignment="Right">
<box>
<font size="10"/>
<topPen lineWidth="0.0"
lineStyle="Solid" </textElement>
lineColor="#000000"/>
<textFieldExpression
<leftPen lineWidth="0.0" class="java.lang.String"><![CDATA[
"Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression> <reportElement x="385"
</textField> y="96" width="175" height="20"/>
<textField
pattern="" <textElement>
isBlankWhenNull="false">
<font isBold="true"/>
<reportElement
key="textField" x="4" y="115" </textElement>
width="209" height="19"
forecolor="#000000" <text><![CDATA[Kepala
backcolor="#FFFFFF"/> Sekolah SMK Negeri 2
<box> Garut]]></text>
</staticText>
<topPen lineWidth="0.0" <staticText>
lineStyle="Solid"
lineColor="#000000"/> <reportElement x="499"
y="47" width="62" height="20"/>
<leftPen lineWidth="0.0"
lineStyle="Solid" <textElement/>
lineColor="#000000"/>
<text><![CDATA[Mengetahuli,]
<bottomPen lineWidth="0.0" ]></text>
lineStyle="Solid" </staticText>
lineColor="#000000"/> <staticText>

<rightPen lineWidth="0.0" <reportElement x="448"


lineStyle="Solid" y="27" width="113" height="20"/>
lineColor="#000000"/>
</box> <textElement/>

<textElement> <text><![CDATA[Garut,
September 2010]]></text>
<font size="10"/> </staticText>
</band>
</textElement> </pageFooter>
<summary>
<textFieldExpression <band
class="java.util.Date"><![CDATA[ne splitType="Stretch"/>
w Date()]]></textFieldExpression> </summary>
</textField> </jasperReport>
<staticText>

Report Data Alumni Berdasarkan Nilai Terbesar

<?xml version="1.0" encoding="UTF- <queryString language="SQL">


8"?> <![CDATA[SELECT
<jasperReport alumni.`noInduk` AS
xmlns="http://jasperreports.source alumni_noInduk,
forge.net/jasperreports" alumni.`namaDepan` AS
xmlns:xsi="http://www.w3.org/2001/ alumni_namaDepan,
XMLSchema-instance" alumni.`namaBelakang` AS
xsi:schemaLocation="http://jasperr alumni_namaBelakang,
eports.sourceforge.net/jasperrepor alumni.`jk` AS alumni_jk,
ts alumni.`tempatLahir` AS
http://jasperreports.sourceforge.n alumni_tempatLahir,
et/xsd/jasperreport.xsd" alumni.`tanggalLahir` AS
name="null" pageWidth="595" alumni_tanggalLahir,
pageHeight="842" columnWidth="535" alumni.`alamat` AS
leftMargin="20" rightMargin="20" alumni_alamat,
topMargin="20" bottomMargin="20">
alumni.`jurusan` AS
alumni_jurusan, <fieldDescription><![CDATA[]
alumni.`status` AS ]></fieldDescription>
alumni_status, </field>
alumni.`tahunLulus` AS <field name="alumni_status"
alumni_tahunLulus, class="java.lang.String">
alumni.`rerataNilai` AS
alumni_rerataNilai <fieldDescription><![CDATA[]
FROM ]></fieldDescription>
`alumni` alumni order by </field>
alumni.`rerataNilai` desc]]> <field
</queryString> name="alumni_tahunLulus"
<field name="alumni_noInduk" class="java.lang.String">
class="java.lang.String">
<fieldDescription><![CDATA[]
<fieldDescription><![CDATA[] ]></fieldDescription>
]></fieldDescription> </field>
</field> <field
<field name="alumni_rerataNilai"
name="alumni_namaDepan" class="java.lang.Long">
class="java.lang.String">
<fieldDescription><![CDATA[]
<fieldDescription><![CDATA[] ]></fieldDescription>
]></fieldDescription> </field>
</field> <group
<field name="alumni_jurusan">
name="alumni_namaBelakang"
class="java.lang.String"> <groupExpression><![CDATA[$F
{alumni_jurusan}]]></groupExpressi
<fieldDescription><![CDATA[] on>
]></fieldDescription> <groupHeader>
</field> <band
<field name="alumni_jk" height="27" splitType="Stretch">
class="java.lang.String">
<staticText>
<fieldDescription><![CDATA[]
]></fieldDescription> <reportElement mode="Opaque"
</field> x="0" y="0" width="139"
<field height="27" forecolor="#FFFFFF"
name="alumni_tempatLahir" backcolor="#000000"/>
class="java.lang.String">
<textElement>
<fieldDescription><![CDATA[]
]></fieldDescription> <font size="18"/>
</field>
<field </textElement>
name="alumni_tanggalLahir"
class="java.sql.Date"> <text><![CDATA[Jurusan]]></t
ext>
<fieldDescription><![CDATA[]
]></fieldDescription> </staticText>
</field>
<field name="alumni_alamat" <textField>
class="java.lang.String">
<reportElement mode="Opaque"
<fieldDescription><![CDATA[] x="139" y="0" width="416"
]></fieldDescription> height="27" forecolor="#FFFFFF"
</field> backcolor="#000000"/>
<field name="alumni_jurusan"
class="java.lang.String"> <textElement>
<staticText>
<font size="18"
isBold="true"/> <reportElement x="92" y="7"
width="424" height="35"/>
</textElement>
<textElement
<textFieldExpression textAlignment="Center">
class="java.lang.String"><![CDATA[
$F{alumni_jurusan}]]></textFieldEx <font fontName="SansSerif"
pression> size="26" isBold="true"/>

</textField> </textElement>
</band>
</groupHeader> <text><![CDATA[SMK Negeri 2
<groupFooter> Garut]]></text>
<band height="8" </staticText>
splitType="Stretch"> <staticText>
<line
direction="BottomUp"> <reportElement x="0" y="87"
width="530" height="35"/>
<reportElement key="line"
x="1" y="4" width="554" <textElement>
height="1"/>
</line> <font fontName="SansSerif"
</band> size="18" isBold="true"
</groupFooter> isItalic="false"
</group> isUnderline="true"/>
<background>
<band </textElement>
splitType="Stretch"/>
</background> <text><![CDATA[Report Data
<title> Alumni Berdasarkan Urutan Nilai
<band height="127" Tertinggi Perjurusan]]></text>
splitType="Stretch"> </staticText>
<line> </band>
</title>
<reportElement x="0" y="8" <pageHeader>
width="555" height="1"/> <band
</line> splitType="Stretch"/>
<line> </pageHeader>
<columnHeader>
<reportElement x="1" y="66" <band height="18"
width="555" height="1"/> splitType="Stretch">
</line> <staticText>
<staticText>
<reportElement mode="Opaque"
<reportElement x="92" y="39" x="0" y="0" width="55" height="18"
width="424" height="35"/> forecolor="#FFFFFF"
backcolor="#999999"/>
<textElement
textAlignment="Center"> <textElement>

<font size="14" <font size="12"/>


isBold="true"/>
</textElement>
</textElement>
<text><![CDATA[No
<text><![CDATA[Jalan Induk]]></text>
Suherman No. 9 Tarogong </staticText>
Garut]]></text> <staticText>
</staticText>
</staticText>
<reportElement mode="Opaque" <staticText>
x="55" y="0" width="110"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="440" y="0" width="55"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[Nama]]></text </textElement>
>
</staticText> <text><![CDATA[Tahun
<staticText> Lulusan]]></text>
</staticText>
<reportElement mode="Opaque" <staticText>
x="165" y="0" width="55"
height="18" forecolor="#FFFFFF" <reportElement mode="Opaque"
backcolor="#999999"/> x="495" y="0" width="55"
height="18" forecolor="#FFFFFF"
<textElement> backcolor="#999999"/>

<font size="12"/> <textElement>

</textElement> <font size="12"/>

<text><![CDATA[Jk]]></text> </textElement>
</staticText>
<staticText> <text><![CDATA[r-
Nilai]]></text>
<reportElement mode="Opaque" </staticText>
x="220" y="0" width="110" </band>
height="18" forecolor="#FFFFFF" </columnHeader>
backcolor="#999999"/> <detail>
<band height="20"
<textElement> splitType="Stretch">
<textField>
<font size="12"/>
<reportElement x="0" y="0"
</textElement> width="55" height="20"/>

<text><![CDATA[Tmpt, Tgl <textElement>


Lahir]]></text>
</staticText> <font size="12"/>
<staticText>
</textElement>
<reportElement mode="Opaque"
x="330" y="0" width="110" <textFieldExpression
height="18" forecolor="#FFFFFF" class="java.lang.String"><![CDATA[
backcolor="#999999"/> $F{alumni_noInduk}]]></textFieldEx
pression>
<textElement> </textField>
<textField>
<font size="12"/>
<reportElement x="55" y="0"
</textElement> width="110" height="20"/>

<text><![CDATA[Alamat]]></te <textElement>
xt>
<font size="12"/> <reportElement x="440" y="0"
width="55" height="20"/>
</textElement>
<textElement>
<textFieldExpression
class="java.lang.String"><![CDATA[ <font size="12"/>
$F{alumni_namaDepan}+"
"+$F{alumni_namaBelakang}]]></text </textElement>
FieldExpression>
</textField> <textFieldExpression
<textField> class="java.lang.String"><![CDATA[
$F{alumni_tahunLulus}]]></textFiel
<reportElement x="165" y="0" dExpression>
width="55" height="20"/> </textField>
<textField>
<textElement>
<reportElement x="495" y="0"
<font size="12"/> width="55" height="20"/>

</textElement> <textElement>

<textFieldExpression <font size="12"/>


class="java.lang.String"><![CDATA[
$F{alumni_jk}]]></textFieldExpress </textElement>
ion>
</textField> <textFieldExpression
<textField> class="java.lang.Long"><![CDATA[$F
{alumni_rerataNilai}]]></textField
<reportElement x="220" y="0" Expression>
width="110" height="20"/> </textField>
</band>
<textElement> </detail>
<columnFooter>
<font size="12"/> <band
splitType="Stretch"/>
</textElement> </columnFooter>
<pageFooter>
<textFieldExpression <band height="144"
class="java.lang.String"><![CDATA[ splitType="Stretch">
$F{alumni_tempatLahir}+","+$F{alum <textField
ni_tanggalLahir}]]></textFieldExpr evaluationTime="Report" pattern=""
ession> isBlankWhenNull="false">
</textField>
<textField> <reportElement
key="textField" x="516" y="114"
<reportElement x="330" y="0" width="36" height="19"
width="112" height="20"/> forecolor="#000000"
backcolor="#FFFFFF"/>
<textElement> <box>

<font size="12"/> <topPen lineWidth="0.0"


lineStyle="Solid"
</textElement> lineColor="#000000"/>

<textFieldExpression <leftPen lineWidth="0.0"


class="java.lang.String"><![CDATA[ lineStyle="Solid"
$F{alumni_alamat}]]></textFieldExp lineColor="#000000"/>
ression>
</textField> <bottomPen lineWidth="0.0"
<textField>
lineStyle="Solid" <textField
lineColor="#000000"/> pattern=""
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
lineStyle="Solid" <reportElement
lineColor="#000000"/> key="textField" x="1" y="114"
</box> width="209" height="19"
forecolor="#000000"
<textElement> backcolor="#FFFFFF"/>
<box>
<font size="10"/>
<topPen lineWidth="0.0"
</textElement> lineStyle="Solid"
lineColor="#000000"/>
<textFieldExpression
class="java.lang.String"><![CDATA[ <leftPen lineWidth="0.0"
"" + lineStyle="Solid"
$V{PAGE_NUMBER}]]></textFieldExpre lineColor="#000000"/>
ssion>
</textField> <bottomPen lineWidth="0.0"
<textField lineStyle="Solid"
pattern="" lineColor="#000000"/>
isBlankWhenNull="false">
<rightPen lineWidth="0.0"
<reportElement lineStyle="Solid"
key="textField" x="342" y="114" lineColor="#000000"/>
width="170" height="19" </box>
forecolor="#000000"
backcolor="#FFFFFF"/> <textElement>
<box>
<font size="10"/>
<topPen lineWidth="0.0"
lineStyle="Solid" </textElement>
lineColor="#000000"/>
<textFieldExpression
<leftPen lineWidth="0.0" class="java.util.Date"><![CDATA[ne
lineStyle="Solid" w Date()]]></textFieldExpression>
lineColor="#000000"/> </textField>
<staticText>
<bottomPen lineWidth="0.0"
lineStyle="Solid" <reportElement x="379"
lineColor="#000000"/> y="90" width="175" height="20"/>

<rightPen lineWidth="0.0" <textElement>


lineStyle="Solid"
lineColor="#000000"/> <font isBold="true"/>
</box>
</textElement>
<textElement
textAlignment="Right"> <text><![CDATA[Kepala
Sekolah SMK Negeri 2
<font size="10"/> Garut]]></text>
</staticText>
</textElement> <staticText>

<textFieldExpression <reportElement x="442"


class="java.lang.String"><![CDATA[ y="21" width="113" height="20"/>
"Page " + $V{PAGE_NUMBER} + " of
"]]></textFieldExpression> <textElement/>
</textField>
<text><![CDATA[Garut, <text><![CDATA[Mengetahuli,]
September 2010]]></text> ]></text>
</staticText> </staticText>
<staticText> </band>
</pageFooter>
<reportElement x="493" <summary>
y="41" width="62" height="20"/> <band
splitType="Stretch"/>
<textElement/> </summary>
</jasperReport>

Form Server SI Alumni

package nopawijaya.server.gui;

import javax.swing.Icon; initComponents();

/** }
*
* @author Deden-pc public static void
*/ writeLog(String s){
public class FormServer extends jTextArea1.append(s+"\n");
javax.swing.JFrame { }
/** This method is called from
public static void within the constructor to
setStatus(String s) { * initialize the form.
* WARNING: Do NOT modify this
lblServerStatus.setText(s); code. The content of this method
is
} * always regenerated by the
Form Editor.
public static void */
setDbStatus(String s, Icon i) { @SuppressWarnings("unchecked")
lblDbStatus.setText(s); // <editor-fold
lblDbStatus.setIcon(i); defaultstate="collapsed"
desc="Generated Code">
} private void initComponents()
{

/** Creates new form jScrollPane1 = new


FrameServer */ javax.swing.JScrollPane();
public FormServer() { jTextArea1 = new
javax.swing.JTextArea();
jLabel1 = new
javax.swing.JLabel(); lblDbStatus.setText("Mencoba
jLabel2 = new menghubungi database.....");
javax.swing.JLabel();
jLabel3 = new jButton1.setIcon(new
javax.swing.JLabel(); javax.swing.ImageIcon(getClass().g
lblServerStatus = new etResource("/nopawijaya/server/sto
javax.swing.JLabel(); pserver.png"))); // NOI18N
lblDbStatus = new jButton1.setText(" Stop
javax.swing.JLabel(); Server");
jPanel1 = new
javax.swing.JPanel(); jButton1.addActionListener(new
jButton1 = new java.awt.event.ActionListener() {
javax.swing.JButton(); public void
jButton2 = new actionPerformed(java.awt.event.Act
javax.swing.JButton(); ionEvent evt) {
jButton3 = new
javax.swing.JButton(); jButton1ActionPerformed(evt);
}
setTitle("Server"); });
jPanel1.add(jButton1);
jTextArea1.setColumns(20);
jTextArea1.setRows(5); jButton2.setIcon(new
javax.swing.ImageIcon(getClass().g
jScrollPane1.setViewportView(jText etResource("/nopawijaya/server/got
Area1); ray.png"))); // NOI18N
jButton2.setText("
jLabel1.setText("Sistem Background Mode");
Informasi Pengolahan Data
Alumni"); jButton2.addActionListener(new
java.awt.event.ActionListener() {
jLabel2.setFont(new public void
java.awt.Font("Tahoma", 1, 28)); actionPerformed(java.awt.event.Act
// NOI18N ionEvent evt) {
jLabel2.setForeground(new
java.awt.Color(0, 102, 102)); jButton2ActionPerformed(evt);
jLabel2.setIcon(new }
javax.swing.ImageIcon(getClass().g });
etResource("/nopawijaya/server/com jPanel1.add(jButton2);
puter_48.png"))); // NOI18N
jLabel2.setText("SI Alumni jButton3.setIcon(new
SMK Negeri 2 Garut"); javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/server/arr
jLabel3.setFont(new ow_refresh.png"))); // NOI18N
java.awt.Font("Tahoma", 1, 18)); jButton3.setText("
jLabel3.setText("SERVER"); Clear Log");

jButton3.addActionListener(new
lblServerStatus.setIcon(new java.awt.event.ActionListener() {
javax.swing.ImageIcon(getClass().g public void
etResource("/nopawijaya/server/dat actionPerformed(java.awt.event.Act
abase.png"))); // NOI18N ionEvent evt) {

lblServerStatus.setText("Status jButton3ActionPerformed(evt);
server"); }
});
lblDbStatus.setIcon(new jPanel1.add(jButton3);
javax.swing.ImageIcon(getClass().g
etResource("/nopawijaya/server/loa javax.swing.GroupLayout
dingpreview.gif"))); // NOI18N layout = new
javax.swing.GroupLayout(getContent
Pane()); .addComponent(jPanel1,
javax.swing.GroupLayout.Alignment.
getContentPane().setLayout(layout) TRAILING,
; javax.swing.GroupLayout.DEFAULT_SI
layout.setHorizontalGroup( ZE, 481, Short.MAX_VALUE)

layout.createParallelGroup(javax.s .addComponent(jScrollPane1,
wing.GroupLayout.Alignment.LEADING javax.swing.GroupLayout.PREFERRED_
) SIZE, 460,
javax.swing.GroupLayout.PREFERRED_
.addGroup(javax.swing.GroupLayout. SIZE)))
Alignment.TRAILING,
layout.createSequentialGroup() .addGroup(javax.swing.GroupLayout.
Alignment.TRAILING,
.addGroup(layout.createParallelGro layout.createSequentialGroup()
up(javax.swing.GroupLayout.Alignme
nt.TRAILING) .addContainerGap(432,
Short.MAX_VALUE)
.addGroup(layout.createSequentialG
roup() .addComponent(jLabel3)))))

.addContainerGap() .addContainerGap())
);
.addComponent(jLabel2)) layout.setVerticalGroup(

.addGroup(layout.createParallelGro layout.createParallelGroup(javax.s
up(javax.swing.GroupLayout.Alignme wing.GroupLayout.Alignment.LEADING
nt.TRAILING) )

.addGroup(layout.createSequentialG .addGroup(layout.createSequentialG
roup() roup()
.addContainerGap()
.addContainerGap()
.addComponent(jLabel2)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.Layou
.addGroup(layout.createParallelGro tStyle.ComponentPlacement.RELATED)
up(javax.swing.GroupLayout.Alignme
nt.LEADING) .addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_
.addGroup(layout.createSequentialG SIZE, 22,
roup() javax.swing.GroupLayout.PREFERRED_
SIZE)
.addGap(22, 22, 22)
.addPreferredGap(javax.swing.Layou
.addGroup(layout.createParallelGro tStyle.ComponentPlacement.RELATED)
up(javax.swing.GroupLayout.Alignme
nt.LEADING) .addComponent(jLabel1)
.addGap(18, 18,
.addGroup(layout.createSequentialG 18)
roup()
.addGroup(layout.createParallelGro
.addGap(12, 12, 12) up(javax.swing.GroupLayout.Alignme
nt.BASELINE)
.addComponent(lblServerStatus)
.addComponent(lblServerStatus)
.addGap(30, 30, 30)
.addComponent(lblDbStatus))
.addComponent(lblDbStatus))
System.exit(1);
.addPreferredGap(javax.swing.Layou }
tStyle.ComponentPlacement.RELATED)
private void
.addComponent(jScrollPane1, jButton3ActionPerformed(java.awt.e
javax.swing.GroupLayout.PREFERRED_ vent.ActionEvent evt) {
SIZE, 242, // TODO add your handling
javax.swing.GroupLayout.PREFERRED_ code here:
SIZE) jTextArea1.setText("");
}
.addPreferredGap(javax.swing.Layou
tStyle.ComponentPlacement.RELATED) /**
* @param args the command line
.addComponent(jPanel1, arguments
javax.swing.GroupLayout.PREFERRED_ */
SIZE,
javax.swing.GroupLayout.DEFAULT_SI
ZE, // Variables declaration - do
javax.swing.GroupLayout.PREFERRED_ not modify
SIZE) private javax.swing.JButton
jButton1;
.addContainerGap(javax.swing.Group private javax.swing.JButton
Layout.DEFAULT_SIZE, jButton2;
Short.MAX_VALUE)) private javax.swing.JButton
); jButton3;
private javax.swing.JLabel
java.awt.Dimension jLabel1;
screenSize = private javax.swing.JLabel
java.awt.Toolkit.getDefaultToolkit jLabel2;
().getScreenSize(); private javax.swing.JLabel
jLabel3;
setBounds((screenSize.width- private javax.swing.JPanel
529)/2, (screenSize.height-477)/2, jPanel1;
529, 477); private
}// </editor-fold> javax.swing.JScrollPane
jScrollPane1;
private void private static
jButton2ActionPerformed(java.awt.e javax.swing.JTextArea jTextArea1;
vent.ActionEvent evt) { private static
// TODO add your handling javax.swing.JLabel lblDbStatus;
code here: private static
hide(); javax.swing.JLabel
} lblServerStatus;
// End of variables
private void declaration
jButton1ActionPerformed(java.awt.e
vent.ActionEvent evt) {
// TODO add your handling }
code here:

package nopawijaya.server.service;

import com.mysql.jdbc.Statement; import java.util.ArrayList;


import java.rmi.RemoteException; import java.util.List;
import import
java.rmi.server.UnicastRemoteObjec nopawijaya.api.entity.Alumni;
t; import
import java.sql.Date; nopawijaya.api.service.AlumniServi
import java.sql.PreparedStatement; ce;
import java.sql.ResultSet; import
import java.sql.SQLException; nopawijaya.server.gui.FormServer;
import
nopawijaya.server.utilitiies.Datab statement.executeUpdate();
aseUtilities;

/** }catch(SQLException
* exception){
* @author Deden-pc
*/ exception.printStackTrace();
public class AlumniServiceServer }finally{
extends UnicastRemoteObject if (statement !=
implements AlumniService { null){
try{
public AlumniServiceServer() statement.close();
throws RemoteException {
} }catch(SQLException exception){
}
public Alumni }
insertAlumni(Alumni a) throws }
RemoteException { return a;
FormServer.writeLog("Client }
melakukan proses Insert data
Alumni"); public void
PreparedStatement statement updateAlumni(Alumni a) throws
= null; RemoteException {

try{ FormServer.writeLog("Client
statement = melakukan proses Update data
DatabaseUtilities.getConnection(). Alumni");
prepareStatement( PreparedStatement
"INSERT INTO statement = null;
alumni (noInduk, namaDepan, try{
namaBelakang, jk, tempatLahir, statement =
tanggalLahir, alamat, jurusan, DatabaseUtilities.getConnection().
status, tahunLulus, rerataNilai) prepareStatement(
values (?,?,?,?,?,?,?,?,?,?,?)" "UPDATE alumni
); SET
statement.setString(1, namaDepan=?,namaBelakang=?,jk=?,te
a.getNoInduk()); mpatLahir=?,tanggalLahir=?,alamat=
statement.setString(2, ?,jurusan=?,status=?,tahunLulus=?,
a.getNamaDepan()); rerataNilai=? WHERE noInduk = ?"
statement.setString(3, );
a.getNamaBelakang());
statement.setString(4,
a.getJk());
statement.setString(5, statement.setString(1,
a.getTempatLahir()); a.getNamaDepan());
statement.setDate(6, statement.setString(2,
new a.getNamaBelakang());
Date(a.getTanggalLahir().getTime() statement.setString(3,
)); a.getJk());
statement.setString(7, statement.setString(4,
a.getAlamat()); a.getTempatLahir());
statement.setString(8, statement.setDate(5,
a.getJurusan()); new
statement.setString(9, Date(a.getTanggalLahir().getTime()
a.getStatus()); ));
statement.setString(10, statement.setString(6,
a.getTahunLulus()); a.getAlamat());
statement.setString(11, statement.setString(7,
a.getRerataNilai()); a.getJurusan());
statement.setString(8, }
a.getStatus());
statement.setString(9, public Alumni getAlumni(String
a.getTahunLulus()); noInduk) throws RemoteException {
statement.setString(10,
a.getRerataNilai()); FormServer.writeLog("Client
statement.setString(11, melakukan pross getByKode");
a.getNoInduk()); PreparedStatement
statement = null;
statement.executeUpdate(); try{
statement =
}catch(SQLException (PreparedStatement)
exception){ DatabaseUtilities.getConnection().
prepareStatement(
exception.printStackTrace(); "SELECT * FROM
}finally{ alumni WHERE noInduk = ?");
if(statement != null){ ResultSet result =
try{ statement.executeQuery();
statement.close(); Alumni a = null;
}catch(SQLException if(result.next()){
exception){ a = new Alumni();

exception.printStackTrace(); a.setNoInduk(result.getString("noI
} nduk"));
}
} a.setNamaDepan(result.getString("n
} amaDepan"));

public void a.setNamaBelakang(result.getString


deleteAlumni(String noInduk) ("namaBelakang"));
throws RemoteException {
a.setJk(result.getString("jk"));
FormServer.writeLog("Client
melakukan proses Delete data a.setTempatLahir(result.getString(
Alumni"); "tempatlahir"));
PreparedStatement
statement = null; a.setTanggalLahir(result.getDate("
try{ tanggalLahir"));
statement =
(PreparedStatement) a.setAlamat(result.getString("alam
DatabaseUtilities.getConnection(). at"));
prepareStatement(
"DELETE FROM a.setJurusan(result.getString("jur
alumni WHERE noInduk = ?"); usan"));

statement.setString(1,noInduk); a.setStatus(result.getString("stat
statement.executeUpdate(); us"));

}catch(SQLException a.setTahunLulus(result.getString("
exception){ tahunLulus"));

exception.printStackTrace(); a.setRerataNilai(result.getString(
}finally{ "rerataNilai"));
try{
statement.close();
}catch(SQLException }
exception){ result.close();
return a;
exception.printStackTrace(); }catch(SQLException
} exception){
}
exception.printStackTrace(); alumni.setTempatLahir(result.getSt
return null; ring("tempatLahir"));
}finally{
if (statement != null){ alumni.setTanggalLahir(result.getD
try{ ate("tanggalLahir"));
statement.close();
}catch(SQLException alumni.setAlamat(result.getString(
exception){ "alamat"));

exception.printStackTrace(); alumni.setJurusan(result.getString
} ("jurusan"));
}
} alumni.setStatus(result.getString(
} "status"));

public List<Alumni> alumni.setTahunLulus(result.getStr


getAlumni() throws RemoteException ing("tahunLulus"));
{
alumni.setRerataNilai(result.getSt
FormServer.writeLog("Client ring("rerataNilai"));
melakukan proses Load Database list.add(alumni);
Server");
Statement statement = }
null; result.close();
try{ return list;
statement =
(Statement) }catch(SQLException
DatabaseUtilities.getConnection(). exception){
createStatement();
ResultSet result = exception.printStackTrace();
statement.executeQuery("SELECT * return null;
FROM alumni"); }finally{
List<Alumni> list = if (statement != null){
new ArrayList<Alumni>(); try{
while(result.next()){ statement.close();
Alumni alumni = }catch(SQLException
new Alumni(); exception){

alumni.setNoInduk(result.getString exception.printStackTrace();
("noInduk")); }
}
alumni.setNamaDepan(result.getStri }
ng("namaDepan")); }

alumni.setNamaBelakang(result.getS public void writeLog(String


tring("namaBelakang")); string) throws RemoteException {

alumni.setJk(result.getString("jk" FormServer.writeLog(string);
)); }

package nopawijaya.server.service;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import nopawijaya.api.entity.Pengguna;
import nopawijaya.api.service.PenggunaService;
import nopawijaya.server.gui.FormServer;
import nopawijaya.server.utilitiies.DatabaseUtilities;

/**
*
* @author Deden-pc
*/
public class PenggunaServiceServer extends UnicastRemoteObject
implements PenggunaService {

public PenggunaServiceServer() throws RemoteException {


}

public Pengguna insertPengguna(Pengguna p) throws


RemoteException {
FormServer.writeLog("Client melakukan proses Insert data
Pengguna");
PreparedStatement statement = null;
try{
statement = (PreparedStatement)
DatabaseUtilities.getConnection().prepareStatement(
"INSERT INTO user
(username,password,tipePengguna) values (?,?,?)"
);
statement.setString(1, p.getUsername());
statement.setString(2, p.getPassword());
statement.setString(3, p.getTipePengguna());

statement.executeUpdate();

}catch(SQLException exception){
exception.printStackTrace();
}finally{
if (statement != null){
try{
statement.close();
}catch(SQLException exception){
}
}
}
return p;
}

public void updatePengguna(Pengguna p) throws RemoteException


{
FormServer.writeLog("Client melakukan proses Update data
Pengguna");
PreparedStatement statement = null;
try{
statement = (PreparedStatement)
DatabaseUtilities.getConnection().prepareStatement(
"UPDATE user SET password=?,tipePengguna=?
WHERE username = ?"
);

statement.setString(1, p.getPassword());
statement.setString(2, p.getTipePengguna());
statement.setString(3, p.getUsername());
statement.executeUpdate();

}catch(SQLException exception){
exception.printStackTrace();
}finally{
if(statement != null){
try{
statement.close();
}catch(SQLException exception){
exception.printStackTrace();
}
}
}
}

public void deletePengguna(String username) throws


RemoteException {
FormServer.writeLog("Client melakukan proses Delete data
Pengguna");
PreparedStatement statement = null;
try{
statement = (PreparedStatement)
DatabaseUtilities.getConnection().prepareStatement(
"DELETE FROM user WHERE username = ?");
statement.setString(1,username);
statement.executeUpdate();

}catch(SQLException exception){
exception.printStackTrace();
}finally{
try{
statement.close();
}catch(SQLException exception){
exception.printStackTrace();
}
}
}

public Pengguna getPengguna(String username) throws


RemoteException {
FormServer.writeLog("Client melakukan pross getByKode");
PreparedStatement statement = null;
try{
statement = (PreparedStatement)
DatabaseUtilities.getConnection().prepareStatement(
"SELECT * FROM user WHERE username = ?");
ResultSet result = statement.executeQuery();
Pengguna p = null;
if(result.next()){
p = new Pengguna();
p.setUsername(result.getString("username"));
p.setPassword(result.getString("password"));

p.setTipePengguna(result.getString("tipePengguna"));

}
result.close();
return p;
}catch(SQLException exception){
exception.printStackTrace();
return null;
}finally{
if (statement != null){
try{
statement.close();
}catch(SQLException exception){
exception.printStackTrace();
}
}
}
}

public List<Pengguna> getPengguna() throws RemoteException {


FormServer.writeLog("Client melakukan proses Load Data
Pengguna");
Statement statement = null;
try{
statement = (Statement)
DatabaseUtilities.getConnection().createStatement();
ResultSet result = statement.executeQuery("SELECT *
FROM user");
List<Pengguna> list = new ArrayList<Pengguna>();
while(result.next()){
Pengguna p = new Pengguna();
p.setUsername(result.getString("username"));
p.setPassword(result.getString("password"));

p.setTipePengguna(result.getString("tipePengguna"));

list.add(p);

}
result.close();
return list;

}catch(SQLException exception){
exception.printStackTrace();
return null;
}finally{
if (statement != null){
try{
statement.close();
}catch(SQLException exception){
exception.printStackTrace();
}
}
}
}

public void writeLog(String string) throws RemoteException {


throw new UnsupportedOperationException("Not supported
yet.");
}

}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package nopawijaya.server.utilitiies;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author Deden-pc
*/
public class DatabaseUtilities {
private static Connection connection;
public static Connection getConnection(){

if (connection == null){
try {
DriverManager.registerDriver(new
com.mysql.jdbc.Driver());
connection =
DriverManager.getConnection("jdbc:mysql://Localhost:3306/sialumni"
,"root","root");
} catch (SQLException ex) {

Logger.getLogger(DatabaseUtilities.class.getName()).log(Level.SEVE
RE, null, ex);
}

}
return connection;
}
}

You might also like