53
BAB IV Implementasi dan Analisa
4.1 Diagram Kelas
4.1.1 Server Pemilu
HalamanAwal SettingDB
ServerUI ServerPemilu
ServerPemiluImplement
KandidatDAO VoteDAO
PemilihDAO KPUDAO
OperatorDAO Prodi
Kandidat Pemilih
Panitia
use use
1
1 1
1 1
1 1
1 1
1
RMI
Gambar 4.1 Diagram Kelas Server pemilu PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.2 Operator
RemoteServerUtama
CekNiM Bilik
Pemilih Panitia
ServerPemilu
OperatorRemote
SampleServer049
use
use use
use 1
1 1
RMI
Gambar 4.2 Diagram Kelas operator 4.1.3
Pemilih
RemoteServerUtama
Setupbilik HalamanVote 1234
Pemilih Kandidat
ServerPemilu
sampleServerImplement ServerBilik
use
use
use 1
1
use
1
RMI
Gambar 4.3 Diagram kelas pemilih PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.4 KPU
RemoteServerUtama
Home HasilVote
Pemilih Kandidat
ServerPemilu
Panitia
TambahKandidat
EditKandidat TambahPemilih
1
1 1
1 use
1 1
1 1
RMI
Gambar 4.3 Diagram kelas KPU 4.2
Cara kerja aplikasi
Cara kerja sistem ini pada saat pemilih memberikan NIM kepada operator maka operator akan mengecek NIM dimana sistem akan mengget NIM dan status
pemilih dari database. jika status false maka pemilih dinyatakan belum menggunakan hak pilih akan tetapi jika bernilai true maka pemilih sudah
menggunakan hak pilih. setelah itu operator akan membuka bilik suara yaitu dengan menampilkan halaman pemilih pada bilik dengan menggunakan remote
rmi dimana sistem akan mengecek terlebih dahulu apakah UI pemilih pada bilik PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
masih tampil atau tidak jika masih tampil maka akan muncul pesan bilik sedang digunakan bila tidak maka bilik akan terbuka dan pemilih dapat menggunakan
hak pilihnya di bilik tersebut. untuk selengkapnya proses cara kerja aplikasi adalah sebagai berikut.
4.2.1 Server Pemilu
4.2.1.1 HalamanAwal.java
Pada awal aplikasi server di run maka yang pertama kali dijalankan adalah kelas Halaman awal, halaman ini berfungsi untuk
menampilkan UI Halaman Utama Server yang berisi tombol setup database dan tombol aktifkan server.
private void jButton2ActionPerformedjava.awt.event.ActionEvent evt {
new SettingDB.setVisibletrue; this.dispose;
}
listing program diatas akan mengaktifkan kelas SettingDB.java ketika tombol tersebut diklik
private void jButton1ActionPerformedjava.awt.event.ActionEvent evt { new ServeruI.setVisibletrue;
this.dispose; }
listing program diatas akan mengaktifkan kelas Serverui.java ketika tombol tersebut diklik.
4.2.1.2 SettingDB.java
Ketika tombol setup databasediklik maka akan dilakukan eksekusi pada program ini.
public class SettingDB extends javax.swing.JFrame { SetupDatabase setup=new SetupDatabase;
public SettingDB { initComponents;
Object obj = new tools1.StreamToObyek; if obj = null {
setup = SetupDatabase obj; jTextField1.setTextsetup.getUsername;
jPasswordField1.setTextsetup.getPassword; }
}
Listing program diatas untuk akan mengecek apakan sudah ada simpanan data settingDB.ser, jika ya maka akan diambil datanya
menggunakan kelas tools1.java lalu data tersebut akan digunakan untuk mengisi kolom textfield pada UI SettingDB.java
private void jButton1ActionPerformedjava.awt.event.ActionEvent evt { setup.setUsernamejTextField1.getText;
setup.setPasswordjPasswordField1.getText; boolean DBKonek = false;
if new tools1.ObyekTostreamsetup { try {
Connection con = Connection Koneksi.getInstance.getKoneksi; DBKonek = true;
jLabel4.setTextKoneksi Sukses; jLabel4.setForegroundColor.GREEN;
JOptionPane.showMessageDialogthis, Data Berhasil Disimpan; this.dispose;
new HalamanAwal.setVisibletrue; } catch SQLException ex {
jLabel4.setTextGagal Tersambung ke DATABASE; jLabel4.setForegroundColor.red;
Logger.getLoggerSettingDB.class.getName.logLevel.SEVERE,
null, ex; }
} else {
JOptionPane.showMessageDialogthis, Data GAGAL Disimpan; }
listing program diatas untuk meng get username dan password yang diisikan user dikolom textfield lalu memasukkannya kedalam
obyek setup, setelah itu akan disimpan distream menggunakan kelas tools jika tidak berhasil maka akan muncul pesan error, jika berhasil
maka akan dicek apakah bisa terkoneksi kedalam database, jika tidak akan muncul pesan tidak berhasil tersambung kedatabase, jika berhasil
akan muncul pesan koneksi sukses. 4.2.1.3
ServerUi.java Kelas merupakan kelas untuk menampilkan settingan IP server
pemilu yang akan digunakan untuk menghubungkan dengan client.
public class ServeruI extends javax.swing.JFrame { ServerPemiluImplement remote;
String ip; public ServeruI {
initComponents; try {
IP = Inet4Address.getLocalHost.getHostAddress; } catch UnknownHostException ex {
Logger.getLoggerServeruI.class.getName.logLevel.SEVERE, null, ex;
} jTextField1.setTextip;
}
Listing diatas digunakan untuk mengambil alamat IP pada komputer yang tersambung ke lan untuk ditampilkan pada kolom
textfield.
private void jButton1ActionPerformedjava.awt.event.ActionEvent evt { try {
remote=new ServerPemiluImplementthis;
if remote.startjTextField1.getText { jLabel4.setTextServer Aktif \n IP Server= + jTextField1.getText;
jButton1.setEnabledfalse; jTextField1.setEnabledfalse;
} } catch RemoteException ex {
setLabelKoneksiServer Disconected;
Logger.getLoggerServeruI.class.getName.logLevel.SEVERE, null, ex;
} }
Listing diatas akan membuat objek remote dari kelas serverPemiluImplements.java yang akan digunakan untuk mengaktifkan
server, jika server berhasil naik maka akan muncul pesan server aktif berikut alamat IP yang digunakan server untuk tersambung. jika server
tidak berhasil naik maka akan muncul pesan server disconected. 4.2.1.4
ServerPemiluImplements.java Pada saat tombol konek pada serverUi.java diklik maka kelas ini
akan dijalankan.
ServerPemiluImplementServeruI aThis throws RemoteException { super;
this.ui=aThis; }
String ipserv; Registry Server;
public boolean startString ip { boolean result= false;
try { Server = LocateRegistry.createRegistry1099;
Naming.rebind + IP + :1099PemiluUSD,
ServerPemiluImplement.this; System.out.printlnServer waiting.....;
ipserv=ip;
result=true; } catch java.net.MalformedURLException me {
result=false; ui.setLabelKoneksiServer Disconected;
System.out.printlnMalformed URL: + me.toString; } catch RemoteException re {
result=false; ui.setLabelKoneksiServer Disconected;
System.out.printlnRemote exception: + re.toString; }
return result; }
Listing program diatas untuk mengaktifkann server RMI pemilu sehingga dapat diakses client RMI pada IP yang telah diisikan di kelas
serverUi.java listing
program Server
= LocateRegistry.createRegistry1099; digunakan untuk mendaftarkan
keregistry bahwa port 1099 digunakan untuk server RMI pemilu BEMU .
Listing program Naming.rebind + IP + :1099PemiluUSD, ServerPemiluImplement.this; digunakan untuk membuat alamat koneksi
dimana IP adalah IP server yang terhubung ke client melalui jaringan, alamat ini berfungsi sebagai url oleh client yang akan berkomunikasi
dengan server. jika server gagal naik maka akan muncul pesan error server disconected dan result bernilai false, jika server berhasil naik maka
result akan bernilai true. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.2 Operator
4.2.2.1 Ceknim.java
Dihalaman utama operator terdapat cek pemilih dimana fungsi ini digunakan mencari dan mengecek pemilih yang akan
menggunakan hak suara.
private void jButton1ActionPerformedjava.awt.event.ActionEvent evt { remote.koneksetting.getipSErver;
if remote.CekdataPemilihjTextField1.getText { Pemilih = remote.getDataPemilihDarinimjTextField1.getText;
bilik = new BilikPemilih, Operator, Ceknim.this; bilik.setVisibletrue;
this.dispose; } else {
JOptionPane.showMessageDialogrootPane, Maaf Anda Tidak Terdaftar
Atau Hak pilih Anda Sudah Digunakan; }
}
Listing program
diatas digunakan
terdapat remote.koneksetting.getiserver; perintah ini digunakan untuk
merujuk method konek yang berada pada objek remoteuntuk membuat koneksi keserver pemilu.
4.2.2.2 RemoteServerUtama.java
public boolean konekString ip { boolean result = false;
String value = null; try {
System.out.printlnSecurity Manager loaded; String url = + IP + :1099PemiluUSD;
remoteObject = ServerEpemilu Naming.lookupurl; System.out.printlnGot remote object;
System.out.printlnres= + result; } catch NotBoundException ex {
new Setting.setVisibletrue;
Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVERE, null, ex;
} catch MalformedURLException ex { new Setting.setVisibletrue;
Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVERE, null, ex;
} catch RemoteException ex { new Setting.setVisibletrue;
Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVERE, null, ex;
} return result;
}
Listing diatas berada pada kelas remoteServerUtama yang bertugas untuk membuat koneksike serverPemillu jika koneksi sukses
maka return akan bernilai true, jika tidak akan bernilai false. setelah terkoneksi maka remote.cekdatapemilih bernilai true berarti pemilih
terdaftar dan belum menggunakan hak pilih maka halaman buka bilik suara akan terbuka. jika tidak maka akan muncul pesan maaf anda tidak
terdaftar atau hak pilih telah digunakan. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.2.3 Bilik.java
private void OkBilik1ActionPerformedjava.awt.event.ActionEvent evt {
remoteUtama.koneksetting.getipSErver; String jumlahKandidat = remoteUtama.GetjumlahKandidat;
if remoteUtama.cekwaktuMulai 0 { if remoteUtama.cekwaktuSelesai 0 {
remote.koneksetting.getArrayip[jComboBox1.getSelectedIndex]; if remote.CekBilikjumlahKandidat {
if remote.OpenUIPemilih, setting.getIDTPS, jumlahKandidat {
JOptionPane.showMessageDialognull, Bilik Berhasil DIbuka;
GuiCeknim.clear_field; GuiCeknim.setVisibletrue;
this.dispose; } else {
JOptionPane.showMessageDialognull, Bilik Gagal
Dibuka; this.dispose;
} } else {
JOptionPane.showMessageDialognull,
jComboBox1.getSelectedItem.toString + Sedang Digunakan; }
} else { JOptionPane.showMessageDialognull, Waktu Pemilihan
Sudah Selesai; this.dispose;
} } else {
JOptionPane.showMessageDialognull, Waktu Pemilihan
Belum Dimulai; this.dispose;
}
Listing diatas merupakan isi dari tombol ok pada halaman buka bilik yang berfungsi untuk mengecek bilik suara apakah sedang digunakan
atau tidak dan membuka bilik suara. jika sedang digunakan akan muncul pesan bilik sedang digunakan, jika gagal dibuka karena koneksi putus atau
hal lainnya maka akan muncul pesan bilik gagal dibuka, jika waktu PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
pemungutan suara telah selesai akan muncul pesan waktu pemilihan sudah selesai. jika berhasil dibuka maka akan muncul pesan bilik berhasil
dibuka.
4.2.3 Pemilih
4.2.3.1 SetupBilik.java
Saat aplikasi pemilih di run maka yang pertama kali dijalankan adalah kelas setupbilik ini merupakan UI yang berisi settingan pemilih.
private void jButton1ActionPerformedjava.awt.event.ActionEvent evt {
boolean Bilikserver = false; boolean Serversuara = false;
boolean Printer; SampleServerImplement serv = null;
Serversuara = new
remoteServerUtama.konekjTextField2.getText; Printer = new
cetakPrinter.CetakjComboBox1.getSelectedItem.toString, TEST PRINTER \n =========================\n SUKSES \n
==========================\n Printer Ini digunakan\n Untuk Mencetak Suara;
if Serversuara { jLabel4.setForegroundColor.BLACK;
if Printer { jLabel3.setForegroundColor.BLACK;
set = new Setup; set.setipBilikjTextField1.getText;
set.setipserrverUtamajTextField2.getText;
set.setNamaPRinterjComboBox1.getSelectedItem.toString; if new tools.ObyekTostreamset {
try { serv = new SampleServerImplementset;
Bilikserver = serv.startjTextField1.getText; } catch RemoteException ex {
Logger.getLoggerSetupBilik.class.getName.logLevel.SEVERE, null, ex; }
if Bilikserver { new PemilihAktifset,serv.setVisibletrue;
this.dispose; } else {
jLabel2.setForegroundColor.red; JOptionPane.showMessageDialogrootPane, ERROR: IP
Bilik Suara salah; }
} else { JOptionPane.showMessageDialogrootPane, ERROR :Tidak
Dapat Menyimpan Data; } } else {
jLabel3.setForegroundColor.red; JOptionPane.showMessageDialogrootPane, ERROR: Printer
Tidak Dapat Mencetak Data; } } else {
jLabel4.setForegroundColor.red; JOptionPane.showMessageDialogrootPane, ERROR: IP Server
Pemilu salah; }
Listing program diatas akan mengecek Printer, koneksi ke server utama, menaikkan server bilik yang akan diremote dari operator dan
menyimpan semua settingan. jika salah menginputkan IP bilik suara maka akan muncul pesan Error:ip bilik suara salah, jika data tidak dapat
tersimpan maka kan muncul pesan Error:tidak dapat menyimpan data jika semua sukses maka akan muncul pesan bilik aktif, jika semua sukses
maka printer akan mencetak test printer dan akan muncul pesan bilik suara aktif.
4.2.4 KPU
4.2.4.1 HalamanVote.java
Untuk menampilkan hasil vote maka kelas yang dijalankan pertama adalah HasilVote.java, saat dijalankan pertama kali akan
menjalankan konstruktor dengan listing program
HasilVote2panitia KPU { initComponents;
this.setLocationRelativeTothis; this.Pemilih = Pemilih;
this.KPU = KPU; remote.konek;
listKandidat = remote.GetDataKandidat; setFoto;
setlablNilai; }
pada listing diatas terdapat perintah listKandidat = remote.GetDataKandidat; yang akan mengget semua data
kandidat termasuk termasuk skor kandidat dari serverpemilu. setelah data didapet maka akan ditampilkan dengan perintah
setFoto;
untuk menampilkan foto kandidat dan
setlablNilai;
untuk menapilkan skor kandidat.
4.2.4.2 RemoteServerUtama.java
Kelas ini Merupakan kelas kontroleryang menghubungkan antara kelas UI dengan kelas ServerPemilu.java yang terhubung
dengan server pemilu. Pada saat menampilkan skor kandidat maka yang akan digunakan adalah listing program:
public ArrayListkandidat GetDataKandidat { ArrayListkandidat result = new ArrayListkandidat;
try { byte[] byte1 = remoteObject.GetDataKandidat;
try { result = ArrayListkandidat tools.toObjectbyte1;
} catch IOException ex { Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVE
RE, null, ex; } catch ClassNotFoundException ex {
Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVE RE, null, ex;
} } catch RemoteException ex {
Logger.getLoggerremoteServerUtama.class.getName.logLevel.SEVE RE, null, ex;
} return result;
}
Pada kelas
diatas terdapat
perintah
byte[] byte1
= remoteObject.GetDataKandidat;
perintah ini akan mengambil data kandidat beserta skor dari server melalui rmi, karena jaringan tidak
dapat mengirim data dalam satu blok objek maka objek dikirim dalam bentuk array byte. setelah itu array byte akan dikonversi
menjadi arraylist kandidat yang akan ditampilkan di UI halaman vote.
4.3 Black-box testing