Witam, proszę o sprawdzenie i konstruktywną krytykę mojego kodu. Program ma być prostą symulacją banku. Mają się na niego składać dwa podstawowe bloki: tworzenie konta (w końcowej fazie pisania) i operacje wykonywane na koncie (metody są już zadeklarowane - chciałbym się ograniczyć do kilku podstawowych). W planach mam modyfikację ustawienia pinu, tak żeby wpisywane liczby były niewidoczne. Nie potrafię sobie poradzić z wywołaniem metody generującej numer konta (nrK cannot be resolve to a variable). Z góry przepraszam jeśli poniższy kod jest zbyt długi.
public class Konto {
private String imie;
private String nazwisko;
private double stanKonta;
private String login;
private String haslo;
private String pin;
private String numerKonta;
//konstruktor bezparametrowy tworzy konto
public Konto(){
this.imie = "";
this.nazwisko = "";
this.stanKonta = 0.0;
this.login = "";
this.haslo = "";
this.pin = "";
this.numerKonta = null;
}
//konstruktor tworzy konto
public Konto(String imie, String nazwisko, double stanKonta, String login, String haslo, String pin){
this.imie = imie;
this.nazwisko = nazwisko;
this.stanKonta = stanKonta;
this.login = login;
this.haslo = haslo;
this.pin = pin;
this.numerKonta = "09 2490 1044 0000 3200 9400 7370";
}
///////////////////////////////////////////////////////
// metody:
//ustaw imię
public void setImie(String imie1){
imie = imie1;
}
//pokaż imię
public String getImie(){
return imie;
}
///////////////////////////////////////////////////////
//ustaw nazwisko
public void setNazwisko(String nazwisko1){
nazwisko = nazwisko1;
}
//pokaż nazwisko
public String getNazwisko(){
return nazwisko;
}
///////////////////////////////////////////////////////
//ustaw login
public void setLogin(String login1){
login = login1;
}
//pokaż login
public String getLogin(){
return login;
}
///////////////////////////////////////////////////////
//ustaw hasło
public void setHaslo(String haslo1){
haslo = haslo1;
}
//pokaż haslo
public String getHaslo(){
return haslo;
}
///////////////////////////////////////////////////////
//ustaw PIN
public void setPIN(String pin1){
pin = pin1;
}
//pokaż PIN
public String getPIN(){
return pin;
}
///////////////////////////////////////////////////////
//przydzielanie nuberu konta (losowy)
public void setNumerKonta(String nrK){
String nr = "";
String czworki = "";
String para = "";
int c = (int) Math.round(Math.random()*99 );
if(c<10){
para = "0" + c;
}else{
para = c + "";
}
for(int i = 0; i < 6; i++){
int a = (int) Math.round(Math.random()*9999 );
if(a <= 999 && a > 99){
czworki = " "+a;
}else if(a <= 99 && a > 9){
czworki = " "+a;
}else if(a <= 9 && a >= 0){
czworki = " "+a;
}
nr +=" " + czworki;
}
nrK = para + nr;
numerKonta = nrK;
}
///////////////////////////////////////////////////////
//pokaż nr konta
public String getnrK(){
return numerKonta;
}
///////////////////////////////////////////////////////
//sprawdzenie stanu konta
public double getStanKonta(){
return stanKonta;
}
///////////////////////////////////////////////////////
//wpłata:
public void wplata(double w){
stanKonta += w;
}
//wypłata:
public void wyplata(double w){
stanKonta -= w;
}
}
klasa testująca:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
String decyzja = "";
String czyTak = "";
while(decyzja.isEmpty() || !"yn".contains(decyzja)){
czyTak = JOptionPane.showInputDialog("Witaj w naszym banku! Czy jesteś już naszym klientem? \n Jeśli tak - wpisz: y \n Jeśli nie - wpisz: n");
decyzja = new Scanner(czyTak).next();
}
if(decyzja.equals("n") ){
decyzja = "";
czyTak = "";
while(decyzja.isEmpty() || !"yn".contains(decyzja)){
czyTak = JOptionPane.showInputDialog("Czy chcesz się zarejestrować w naszym banku i stworzyć konto? \n Jeśli tak - wpisz: y \n Jeśli nie - wpisz: n");
decyzja = new Scanner(czyTak).next();
}
if(decyzja.equals("n")){
JOptionPane.showMessageDialog(null, "Do widzenia");
System.exit(0);
}
//tworzenie nowego konta
else{
Konto nowe = new Konto();
while(nowe.getImie().equals("") ){
nowe.setImie(JOptionPane.showInputDialog("Rejestracja \nPodaj imię: ") );
}
while(nowe.getNazwisko().equals("") ){
nowe.setNazwisko(JOptionPane.showInputDialog("Rejestracja \nPodaj nazwisko: ") );
}
while(nowe.getLogin().equals("") ){
nowe.setLogin(JOptionPane.showInputDialog("Rejestracja \nPodaj login: ") );
}
String potwierdz ="default";
while( !(nowe.getHaslo().equals(potwierdz)) ){
nowe.setHaslo(JOptionPane.showInputDialog("Podaj hasło: ") );
potwierdz = JOptionPane.showInputDialog("Potwierdź hasło: ");
if( !(nowe.getHaslo().equals(potwierdz) ) ){
JOptionPane.showMessageDialog(null, "Błąd! Hasło niepotwierdzone!");
}
}
potwierdz ="default";
while( !(nowe.getPIN().equals(potwierdz)) || !( (Integer.valueOf(nowe.getPIN()) > 0) && (Integer.valueOf(nowe.getPIN()) < 10000) ) ){
nowe.setPIN(JOptionPane.showInputDialog("Podaj PIN (4 cyfry): "));
if(Integer.valueOf(nowe.getPIN()) > 10000){
JOptionPane.showMessageDialog(null, "Błąd! PIN zbyt długi!"); continue;
}else if(Integer.valueOf(nowe.getPIN()) < 1000){
JOptionPane.showMessageDialog(null, "Błąd! PIN zbyt krótki!"); continue;
}
potwierdz = JOptionPane.showInputDialog("Potwierdź PIN: ");
if( !(nowe.getPIN().equals(potwierdz) ) ){
JOptionPane.showMessageDialog(null, "Błąd! PIN niepotwierdzony!");
}
}
//przydzielenie numeru konta wygenerowanego losowo
nowe.setNumerKonta(nrK);
//spr
System.out.println(nowe.getImie() + "\n" +nowe.getNazwisko() + "\n" + nowe.getLogin() + "\n" + nowe.getHaslo() + "\n" + nowe.getPIN() + "\n" + nowe.getnrK() );
}
}
}
}