• Tidak ada hasil yang ditemukan

Dalam bab ini berisi kesimpulan pembahasan dan saran-saran yang berguna bagi pembaca yang terkait dengan sistem informasi yang

ANALISA DAN PERANCANGAN SISTEM

3.2. Perancangan Database

4.1.4. Implementasi Sistem

4.1.4.1. Menu Mahasiswa 1.Registrasi

Pada saat mahasiswa melakukan registrasi account email,

mahasiswa mengisikan data-data kemuadian mahasiswa mendapatkan

username dan password baru. Data password didapat dari karakter dan

angka random, password awal yang diberi terdiri dari 8-10 karakter. Di

bawah ini merupakan listing membuat password secara random:

public static String randomstring(int lo, int hi) { int n = rand(lo, hi);

Random rand = new Random(36); int randNumber;

byte b[] = new byte[n]; for (int i = 0; i < n; i++) { randNumber = rand.nextInt(); if (randNumber < 5) {

b[i] = (byte) rand('0', '9'); } else {

b[i] = (byte) rand('a', 'z'); }

}

return new String(b, 0); }

private static int rand(int lo, int hi) {

java.util.Random rn = new java.util.Random(); int n = hi - lo + 1;

int i = rn.nextInt() % n; if (i < 0) {

i = -i; }

}

public static String randomstring() { return randomstring(8, 10); }

Penjelasan listing program di atas:

Kelas Random merupakan untuk membangkitkan bilangan dan

karakter bilangan acak. Pada method rand di atas membangkitkan bilangan

acak menurut waktu sehingga setiap kali dijalankan maka akan dihasilkan

bilangan acak yang berbeda.

Setelah sukses melakukan registrasi kemudian data account

email mahasiswa berupa username dan password tersebut di print dan

dikirim ke alternatif email juga ke email admin Bapsi. Di bawah ini

merupakan listing untuk mengirim email:

private String SMTP_HOST_NAME = "smtp.gmail.com";//server keluar private String SMTP_PORT = "465";

private String emailMsgTxt = "Test Message Contents"; private String emailSubjectTxt = "A test from gmail"; private String emailFromAddress = "[email protected]";

private String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; private String[] sendTo;

public static void main(String args[]) throws Exception { }

public void sendMessage(String recipients[], String subject, String message, String from) throws MessagingException { Security.addProvider(new

com.sun.net.ssl.internal.ssl.Provider()); boolean debug = true;

Properties props = new Properties();

props.put("mail.smtp.host", getSMTP_HOST_NAME()); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "true"); props.put("mail.smtp.port", getSMTP_PORT()); props.put("mail.smtp.socketFactory.port", getSMTP_PORT()); props.put("mail.smtp.socketFactory.class", getSSL_FACTORY()); props.put("mail.smtp.socketFactory.fallback", "false"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]", "sanata2009usd"); } }); session.setDebug(debug);

Message msg = new MimeMessage(session);

InternetAddress addressFrom = new InternetAddress(from); msg.setFrom(addressFrom);

InternetAddress[] addressTo = new

InternetAddress[recipients.length];

for (int i = 0; i < recipients.length; i++) {

addressTo[i] = new InternetAddress(recipients[i]); } msg.setRecipients(Message.RecipientType.TO, addressTo); msg.setSubject(subject); msg.setContent(message, "text/plain"); Transport.send(msg); }

public String getSMTP_HOST_NAME() { return SMTP_HOST_NAME;

}

public void setSMTP_HOST_NAME(String SMTP_HOST_NAME) { this.SMTP_HOST_NAME = SMTP_HOST_NAME;

}

public String getSMTP_PORT() { return SMTP_PORT;

}

public void setSMTP_PORT(String SMTP_PORT) { this.SMTP_PORT = SMTP_PORT;

}

public String getSSL_FACTORY() { return SSL_FACTORY;

}

public void setSSL_FACTORY(String SSL_FACTORY) { this.SSL_FACTORY = SSL_FACTORY;

}

public String getEmailMsgTxt() { return emailMsgTxt;

}

public void setEmailMsgTxt(String emailMsgTxt) { this.emailMsgTxt = emailMsgTxt;

}

public String getEmailSubjectTxt() { return emailSubjectTxt;

this.emailSubjectTxt = emailSubjectTxt; }

public String getEmailFromAddress() { return emailFromAddress;

}

public void setEmailFromAddress(String emailFromAddress) { this.emailFromAddress = emailFromAddress;

}

public String[] getSendTo() { return sendTo;

}

public void setSendTo(String[] sendTo) { this.sendTo = sendTo;

}

Pengiriman email menggunakan sumber email dari

[email protected]” maka yang digunakan adalah setting gmail. Dalam

mengirimkan email program mengeset server terlebih dahulu pada

SMTP_HOST_NAME, dan Port nya dismpan pada SMTP_PORT.

Di bawah ini merupakan listing untuk mengirim email dan

mencetak hasil registrasi email mahasiswa.

String message = "Username dan password anda untuk email USD" + "\nUsername : " + username + "\nPassword : " + pass; String[] to = {email2.getText(), "[email protected]"}; System.out.println(email2.getText()); String nimbuatquery = nim2.getText();

SendEmail send = new SendEmail();

send.setEmailFromAddress("[email protected]");

send.sendMessage(to, "Regristrasi Email USD", message, send.getEmailFromAddress());

String query = "SELECT Username,'" + pass + "' AS Password" + " FROM account_email" +

" WHERE nim = '" + nimbuatquery + "'"; System.out.println("query nya " + query); Connection koneksi = login.koneksi; Statement statement;

statement = koneksi.createStatement();

ResultSet resultSet = statement.executeQuery(query);

JOptionPane.showMessageDialog(this, "Proses Registrasi Sukses"); menu baru = new menu();

baru.setVisible(true);

JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);

System.out.println("Filling report...");

String print = JasperFillManager.fillReportToFile("report/ReportTest.jasper", new

HashMap(), resultSetDataSource);

JasperViewer.viewReport(print, false, false); System.out.println("Done!");

resultSet.close(); statement.close(); } catch (Exception ex) {

Logger.getLogger(registrasi2.class.getName()).log(Level.SEVERE, null, ex);

JOptionPane.showMessageDialog(this, "Proses Kirim Email Gagal, Silahkan Cek Kembali");

}

Penjelasan potongan listing di atas:

Listing di atas merupakan program untuk kirim email. Isi pesan

yang akan dikirim disimpan dalam variable message. Pesan dikirim ke

alternative email mahasiswa dan ke email admin yaitu ke

[email protected], dengan menggunakan alamat sumber

dari [email protected]. Kemudian proses mencetak hasil registrasi

dengan menggunakan jesperReport.

4.1.4.1.2. Ubah Password

Untuk mengubah password mahasiswa mengisikan data NIM,

password lama, password baru dan konfirmasi password baru. Dalam

membuat password baru dapat menggunakan kekuatan password. Berikut ini

public String CheckPasswordStrength(String passwd) {

int upper = 0, lower = 0, numbers = 0, special = 0, length = 0; int strength = 0, intScore = 0;

String strVerdict = "none", strLog = ""; Pattern p; Matcher m; if (passwd == null) { return "gagal"; } // PASSWORD LENGTH length = passwd.length(); if (length < 6) { intScore = (intScore + 5);

} else if (length >= 6 && length <= 8) // length between 5 and 7 {

intScore = (intScore + 6);

} else if (length > 8) // length between 8 and 15 { intScore = (intScore + 10); } // LETTERS p = Pattern.compile(".??[a-z]"); m = p.matcher(passwd);

while (m.find()) // [verified] at least one lower case letter { lower += 1; } if (lower > 0) { intScore = (intScore + 1); } // NUMBERS p = Pattern.compile(".??[0-9]"); m = p.matcher(passwd);

while (m.find()) // [verified] at least one number { numbers += 1; } if (numbers > 0) { intScore = (intScore + 1); if (numbers > 1) { intScore = (intScore + 1); if (numbers > 2) { intScore = (intScore + 1); } } } // COMBOS

if (lower > 0 && numbers > 0) // [verified] both letters and numbers { intScore = (intScore + 1); } if (intScore < 10) { strVerdict = "weak";

} else if (intScore >= 10 && intScore < 15) { strVerdict = "mediocre"; } else { strVerdict = "strong"; } System.out.println(strVerdict + " - " + intScore + "\n" + strLog);

// Does it meet the password policy? try {

int min = Integer.parseInt(PASSWORD_MIN_LENGTH); if (length < min) { return "gagal"; } } catch (Exception e) { } // undefined try {

int max = Integer.parseInt(PASSWORD_MAX_LENGTH); if (length > max) { return "gagal"; } } catch (Exception e) { } return strVerdict; }

Penjelasan potongan listing di atas:

Dalam pengecekan kekuatan password dipengaruhi oleh

beberapa faktor yaitu panjang password, karakter huruf, karakter angka dan

karakter yang sama.

4.1.4.1.3. Lupa Password

Apabila mahasiswa lupa password, maka akan diberi password

baru. Dengan cara mengisikan data jawaban dari pertanyaan rahasia yang

telah dipilih pada waktu registrasi. Berikut ini adalah potongan listing untuk

mengecek data jawaban mahasiswa:

String pertanyaan = lblPertanyaan.getText();

String sql = "select Jawaban from account_email where NIM like '" + nim + "'";

Statement stmt = sambung.createStatement(); ResultSet rs = stmt.executeQuery(sql); rs.first();

String jawaban = rs.getString("Jawaban"); System.out.print(jawaban);

stmt.close();

if (txtJawaban.getText().equalsIgnoreCase(jawaban)) { this.setVisible(false);

lupaPass3 baru = new lupaPass3(nim,email); baru.setVisible(true);

} else {

JOptionPane.showMessageDialog(rootPane, "jawaban anda salah"); }

4.1.4.2. Menu Admin

Dokumen terkait