Halo freends ketemu lagi haha. Hari ini topiknya tentang JOptionPane , Membuat Sign Up , Sign In , Sign Out. Sayaaaang banget karena belum bisa ngonekin ke database jadi data usernya nggak bisa -_-
oke langsung aja , yuk mari ~
1. Buatlah satu class bernama Main.java
yang berisi main method.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Praktek1;
/**
*
* @author dhana aulia
*/
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
Main main = new Main();
UserData data = new UserData();
main.mainMenu(data, main);
}
public void mainMenu(UserData data, Main main) {
String[] menu = {"SIGN UP", "SIGN IN", "SIGN OUT"};
int pilihan = JOptionPane.showOptionDialog(null,
"Selamat Dataaaaaaaaaaaaang : ",
"Main menu",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE,
null, menu, null);
switch (pilihan) {
case 0:
data.signUp(data, main);
break;
case 1:
data.signIn(data, main);
break;
case 2:
System.exit(0);
break;
default:
JOptionPane.showMessageDialog(null, "Kalo Mau keluar klik sign out qaqa");
main.mainMenu(data, main);
break;
}
}
}
2. Kemudian buatlah satu class bernama UserData.java yang mana class inilah yang menangani penyimpanan data-data user dan menangani proses Sign Up, Sign In dan Sign Out.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Praktek1;
/**
*
* @author dhana aulia
*/
import javax.swing.JOptionPane;
import java.util.*;
public class UserData {
public ArrayList nameArray = new ArrayList();
public ArrayList genderArray = new ArrayList();
public ArrayList passArray = new ArrayList();
public ArrayList emailArray = new ArrayList();
public void signUp(UserData dataDup, Main mainDup) {
Object nameSuit[] = nameArray.toArray();
Object passSuit[] = passArray.toArray();
String nama = inpNama();
int i;
for (i = 0; i < nameArray.size(); i++) {
if (nameSuit[i].equals(nama)) {
JOptionPane.showMessageDialog(null, "Namanya sudah dipakai sama user lain nih , coba lagi qaqa");
signUp(dataDup, mainDup);
}
}
if (i == nameArray.size()) {
nameArray.add(nama);
}
String email = inpEmail();
genderArray.add(inpGender()); /* jenis kelamin*/
int a = 0;
while (a < 2) {
String pass = inpPassword();
if (!pass.matches(".{8,}")) {
JOptionPane.showMessageDialog(null, "Password dengan minimal 8 karakteer");
} else if (pass.matches(".{8,}")) {
passArray.add(pass); /* password*/
mainDup.mainMenu(dataDup, mainDup);
} else if (a == 2) {
a = 0;
}
}
emailArray.add(email);
}
public String inpNama() {
String nama = JOptionPane.showInputDialog("Silahkan masukkan nama anda : ");
try {
if (nama.isEmpty()) {
JOptionPane.showMessageDialog(null, "Nama nggak boleh kosooong");
inpNama();
} else if (!nama.matches("[a-z A-Z]+")) {
JOptionPane.showMessageDialog(null, "Nama hanya bisa mengandung huruf qaqa");
inpNama();
}
} catch (NullPointerException npe) {
JOptionPane.showMessageDialog(null, "Masukin namanya dulu doong");
inpNama();
}
return nama;
}
public String inpGender() {
String gender = "";
String[] opGender = {"LAKI-LAKI", "PEREMPUAN"};
int pilihan = JOptionPane.showOptionDialog(null,
"Silahkan pilih jenis kelamin",
"Gender",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE,
null, opGender, null);
switch (pilihan) {
case 0:
gender = "Mr";
break;
case 1:
gender = "Mrs";
break;
default:
JOptionPane.showMessageDialog(null, "Isi dulu dong jenis kelaminnya");
inpGender();
break;
}
return gender;
}
public String inpPassword() {
String password = JOptionPane.showInputDialog("Create your password !");
try {
if (password.isEmpty()) {
JOptionPane.showMessageDialog(null, "Passwaord nggak boleh kosong qaqa");
inpPassword();
}
} catch (NullPointerException npe) {
JOptionPane.showMessageDialog(null, "Maaf anda harus menentukan password anda");
inpPassword();
}
return password;
}
public String inpEmail() {
String email = JOptionPane.showInputDialog("Silahkan masukkan email anda");
try {
if (email.isEmpty()) {
JOptionPane.showMessageDialog(null, "Maaf email tidak boleh kosong");
inpEmail();
}
if (!email.matches("[a-zA-Z]+@[a-zA-Z]+[.][a-zA-Z]+")) {
JOptionPane.showMessageDialog(null, "Maaf format email salah");
inpEmail();
}
} catch (NullPointerException npe) {
JOptionPane.showMessageDialog(null, "Maaf anda harus memasukkan email anda");
inpEmail();
}
return email;
}
public void signIn(UserData dataDup, Main mainDup) {
KonversiBilangan konv = new KonversiBilangan();
Object nameSuit[] = nameArray.toArray();
Object passSuit[] = passArray.toArray();
Object genderSuit[] = genderArray.toArray();
String nama = inpNama();
String password = inpPassword();
String kesalahan = "";
String betul = "";
int i;
for (i = 0; i < nameArray.size(); i++) {
if (nameSuit[i].equals(nama) && passSuit[i].equals(password)) {
JOptionPane.showMessageDialog(null,
" Selamat dataang " + genderSuit[i] + " " + nameSuit[i] + "\nAnda memasuki program konversi bilangan");
konv.menuJOption(dataDup, mainDup, genderSuit[i].toString(), nameSuit[i].toString());
} else if (!nameSuit[i].equals(nama) && !passSuit[i].equals(password)) {
kesalahan = "nama dan password";
betul = "tidak ada";
} else if (!passSuit[i].equals(password) || !nameSuit[i].equals(nama)) {
kesalahan = "data";
betul = "salah";
}
}
if (i == nameArray.size()) {
JOptionPane.showMessageDialog(null, "Maaf " + kesalahan + " yang anda masukkan " + betul + "\ncoba lagi");
mainDup.mainMenu(dataDup, mainDup);
}
}
}
3. Kemudian buatlah class terakhir bernama KonversiBilangan.java. Nah kalo data cocok bisa masuk nih ke programnyaa
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Praktek1;
/**
*
* @author lock
*/
import javax.swing.JOptionPane;
public class KonversiBilangaan {
private static String des;
private String pilih;
private static int validDes;
private static long bilTerbilang;
static String[] angka = {"", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"};
static StringBuilder binerHasil = new StringBuilder();
static StringBuilder hexaHasil = new StringBuilder();
static StringBuilder oktalHasil = new StringBuilder();
public void setPilih(String pilih) {
this.pilih = pilih;
}
public void menuJOption(UserData data, Main main, String gender, String nama) {
KonversiBilangaan konv = new KonversiBilangaan();
String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI"};
while (true) {
int response = JOptionPane.showOptionDialog(
null, "Selamat Datang " + gender + " " + nama + "!!"
+ "\nPilih Konversi Bilangan dibawah ini?"// Pesan
, "Konversi Bilangan" // Judul di Tittlebar
, JOptionPane.YES_NO_OPTION // Tipe Option
, JOptionPane.PLAIN_MESSAGE // Tipe Pesan
, null, pilihan, null // Default button
);
switch (response) {
case 0:
konv.setPilih("Biner");
konv.outHasilBiner();
break;
case 1:
konv.setPilih("Hexadesimal");
konv.outHasilHexa();
break;
case 2:
konv.setPilih("Oktal");
konv.outHasilOktal();
break;
case 3:
konv.setPilih("Terbilang");
konv.outTerbilang();
break;
case 4:
konv.setPilih("Pecahan");
konv.hasilPecahan();
break;
case 5:
main.mainMenu(data, main);
break;
default:
JOptionPane.showMessageDialog(null, "Klik tombol keluar kalo mau keluaar --");
break;
}
}
}
public static void keBiner(int n) {
if (n > 1) {
keBiner(n / 2);
}
System.out.print(n % 2);
binerHasil.append(n % 2);
}
public void keHexa(int n) {//int n : parameter
char[] daftarHexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int sisaBagi = n % 16;
if (n > 0) {
keHexa((n - sisaBagi) / 16);
System.out.print(daftarHexa[n % 16]);
hexaHasil.append(daftarHexa[n % 16]);
}
}
public void keOktal(int n) {
int sisaBagi = n % 8;
if (n > 0) {
keOktal((n - sisaBagi) / 8);
System.out.print(n % 8);
oktalHasil.append(n % 8);
}
}
public void inputDesJOption(String pilih) {
des = JOptionPane.showInputDialog("Masukkan Bilangan Desimal konversi ke \n" + pilih + " :");
try {
if (des.isEmpty()) {
JOptionPane.showMessageDialog(null, "Bilangan Desimal tidak boleh kosong !!");
inputDesJOption(pilih);
}
} catch (NullPointerException npe) {
JOptionPane.showMessageDialog(null, "Maaf harus diisi !!");
inputDesJOption(pilih);
}
}
public void outHasilBiner() {
inputDesJOption(pilih);
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
// reset object binerHasil
binerHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Maaf '" + des + "' bukan bilangan \nMasukkan bilangan saja !!");
outHasilBiner();
}
}
public void outHasilHexa() {
inputDesJOption(pilih);
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
hexaHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Maaf '" + des + "' bukan bilangan \nMasukkan bilangan saja !!");
outHasilHexa();
}
}
public void outHasilOktal() {
inputDesJOption(pilih);
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : ");
keOktal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
oktalHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Maaf '" + des + "' bukan bilangan \nMasukkan bilangan saja !!");
outHasilOktal();
}
}
//Terbilang
private String sebut(int x) {
String bilang = "";
int y = x / 100;
if (y > 0) {
bilang = angka[y] + " Ratus ";
if (y == 1) {
bilang = "Seratus ";
}
x %= 100;
}
if (x < 12) {
bilang += angka[x];
} else {
y = x / 10;
x %= 10;
if (y == 1) {
bilang += angka[x] + " Belas";
} else {
bilang += angka[y] + " Puluh " + angka[x];
}
}
return bilang;
}
private String terbilang(long x) {
int y;
String bilang = "";
String[] satuan = {"", " Ribu ", " Juta ", " Milyar ", " Trilyun ", " Quadrilyun ", " Quintilyun "};
if (x > Math.pow(10, 20)) {
return "Bilangan terlalu besar";
}
for (int i = 6; i > 0; i--) {
y = (int) (x / Math.pow(10, i * 3));
if (y > 0) {
if (y == 1 && i == 1) {
bilang += " Seribu ";
} else {
bilang += sebut(y) + satuan[i];
}
}
x %= Math.pow(10, i * 3);
}
bilang += sebut((int) x);
return bilang;
}
public void outTerbilang() {
inputDesJOption(pilih);
try {
bilTerbilang = Long.parseLong(des);
JOptionPane.showMessageDialog(null, new KonversiBilangaan().terbilang(bilTerbilang), "Terbilang", JOptionPane.INFORMATION_MESSAGE);
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Maaf '" + des + "' bukan bilangan \nMasukkan bilangan saja !!");
outTerbilang();
}
}
public void hasilPecahan() {
inputDesJOption(pilih);
try {
long desimal = Long.parseLong(des);
long satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas, tigabelas;
//
satu = desimal / 100000;
desimal %= 100000;
dua = desimal / 50000;
desimal %= 50000;
tiga = desimal / 20000;
desimal %= 20000;
empat = desimal / 10000;
desimal %= 10000;
lima = desimal / 5000;
desimal %= 5000;
enam = desimal / 2000;
desimal %= 2000;
tujuh = desimal / 1000;
desimal %= 1000;
delapan = desimal / 500;
desimal %= 500;
sembilan = desimal / 200;
desimal %= 200;
sepuluh = desimal / 100;
desimal %= 100;
sebelas = desimal / 50;
desimal %= 50;
duabelas = desimal / 10;
desimal %= 10;
tigabelas = desimal / 1;
desimal %= 1;
JOptionPane.showMessageDialog(null, "Bilangan " + des + " dalam : "
+ "Jumlah seratus ribuan = " + satu
+ "\nJumlah lima puluh ribuan = " + dua
+ "\nJumlah dua puluh ribuan = " + tiga
+ "\nJumlah sepuluh ribuan = " + empat
+ "\nJumlah lima ribuan = " + lima
+ "\nJumlah dua ribuan = " + enam
+ "\nJumlah seribuan = " + tujuh
+ "\nJumlah lima ratusan = " + delapan
+ "\nJumlah dua ratusan = " + sembilan
+ "\nJumlah seratusan = " + sepuluh
+ "\nJumlah lima puluhan = " + sebelas
+ "\nJumlah lima satuan = " + duabelas
+ "\nJumlah satuan = " + tigabelas, "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Maaf '" + des + "' bukan bilangan \nMasukkan bilangan saja !!");
hasilPecahan();
}
}
}
Kalo di running gini hasilnya kawaaan
1. Ini tampilan awalnya , alay ya ? maap ._.
2.Ini inputin nama
3. Kalo dikosongin langsung di OK ini yang terjadii
4. Kalo langsung di pencet tanda silangnya atau di tekan tombol cancel maka
5. Kalo namanya mengandung unsur angka maka
6. Menginputkan Email
7. Kalo format emailnya salah maka
8. Pilih Jenis Kelamin
9. Menginputkan Password
10. Jika password kosong lalu di OK maka yang terjadi
11. Jika ditekan tombol (X) maka
12.Jika yang diinputkan paswordnya kurang dari delapan karakter maka
13. Kalo mau SIGN IN tapi data yang diinputkan tidak sesuai dengan data yang diinputkan saat SIGN UP maka
14. Kalo mau keluar maka
oke dari pada tambah mumet gaaaaes sekiaaan duluu , kalo ada perbaikan ntar diposting kok , makaseeeeh <3
No comments:
Post a Comment