Fix: code refactoring & exception handling (ui)

main
Caner 2022-11-27 03:36:32 +01:00
parent 7584bf5e51
commit b9a0a014a1
2 changed files with 176 additions and 99 deletions

View File

@ -1,8 +1,7 @@
package de.hs_mannheim.informatik.bank; package de.hs_mannheim.informatik.bank;
import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.facade.Banksystem;
import de.hs_mannheim.informatik.bank.ui.UI;
import de.hs_mannheim.informatik.bank.tui.TUI;
public class Main { public class Main {
@ -10,7 +9,7 @@ public class Main {
Banksystem bs = new Banksystem("Spaßkasse Mannheim"); Banksystem bs = new Banksystem("Spaßkasse Mannheim");
TUI tui = new TUI(bs); UI tui = new UI(bs);
} }

View File

@ -1,4 +1,4 @@
package de.hs_mannheim.informatik.bank.tui; package de.hs_mannheim.informatik.bank.ui;
import java.io.IOException; import java.io.IOException;
import java.util.Scanner; import java.util.Scanner;
@ -6,11 +6,11 @@ import java.util.Scanner;
import de.hs_mannheim.informatik.bank.domain.Kontoart; import de.hs_mannheim.informatik.bank.domain.Kontoart;
import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class TUI { public class UI {
private Banksystem bs; private Banksystem bs;
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
public TUI(Banksystem bs) { public UI(Banksystem bs) {
this.bs = bs; this.bs = bs;
hauptmenü(); hauptmenü();
} }
@ -70,86 +70,142 @@ public class TUI {
private void kundeRegistrieren(){ private void kundeRegistrieren(){
System.out.println("Bitte die folgenden Daten eingeben: ");
System.out.println("Vorname: "); boolean running = true;
String vorname = sc.nextLine();
System.out.println("Nachname: "); while(running){
String nachname = sc.nextLine();
System.out.println("Alter:"); System.out.println("Bitte geben Sie die folgenden Daten ein: ");
int alter = Integer.parseInt(sc.nextLine()); System.out.print("Vorname: ");
try { String vorname = sc.nextLine();
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter)); System.out.print("Nachname: ");
} catch (Exception e) { String nachname = sc.nextLine();
e.printStackTrace(); System.out.print("Alter:");
int alter = Integer.parseInt(sc.nextLine());
try {
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter));
} catch (Exception e) {
System.err.println("Kundenkonto konnte nicht erstellt werden!");
e.printStackTrace();
break;
}
System.out.println("Ihr Kundenkonto mit der ID [" + bs.getKundenID() + "] wurde erstellt.");
running = false;
} }
System.out.println("Kunde mit der ID " + bs.getKundenID() + " wurde erstellt.");
} }
private void login(){ private void login(){
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){ boolean running = true;
System.out.println("Login erfolgreich!");
} else { while(running){
System.err.println("Kunde nicht gefunden!");
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Login erfolgreich!");
running = false;
} else {
System.err.println("Kunde nicht gefunden!");
break;
}
} catch (Exception e) {
System.err.println("Login fehlgeschlagen!");
e.printStackTrace();
running = false;
} }
} }
}
private void kontoAnlegen() throws IOException{ private void kontoAnlegen() throws IOException{
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){ boolean running = true;
System.out.println("Welche Art von Konto möchten Sie anlegen?"); while(running){
Kontoart[] kontoarten = Kontoart.values();
for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
}
System.out.println("> ");
int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]); try {
System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt.");
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Welche Art von Konto möchten Sie anlegen?");
Kontoart[] kontoarten = Kontoart.values();
for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
}
System.out.print("> ");
int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]);
System.out.println("Ihr ausgewähltes Konto mit der " + kontonummer + " neu angelegt.");
running = false;
} else {
System.err.println("Kunde nicht gefunden!");
break;
}
} catch (Exception e) {
System.err.println("Konto konnte nicht angelegt werden!");
e.printStackTrace();
running = false;
}
} else {
System.err.println("Kunde nicht gefunden!");
}
} }
}
private void kontenAnzeigen() { private void kontenAnzeigen() {
String[] konten = bs.getKontenlisteForKunde();
if (konten.length > 0) {
System.out.println("Folgende Konten sind aktuell verfügbar:");
for (String s : konten) {
System.out.println(s);
}
} else {
System.out.println("Bisher keine Konten angelegt.");
}
}
try {
String[] konten = bs.getKontenlisteForKunde();
if (konten.length > 0) {
System.out.println("Sie haben aktuell folgende Konten zur Verfügung:");
for (String s : konten) {
System.out.println(s);
}
} else {
System.out.println("Sie haben bisher keine Konten angelegt");
}
} catch (Exception e) {
System.err.println("Konten konnten nicht laden!");
e.printStackTrace();
}
}
private void aktienAnzeigen(){ private void aktienAnzeigen(){
String[] aktien = bs.getAktienliste(); try {
if (aktien.length > 0) { String[] aktien = bs.getAktienliste();
System.out.println("Sie haben folgende Aktien im Besitz: ");
for (String s : aktien) { if (aktien.length > 0) {
System.out.println(s); System.out.println("Sie haben folgende Aktien im Besitz: ");
for (String s : aktien) {
System.out.println(s);
}
} else {
System.out.println("Bisher keine Aktien gekauft.");
} }
} else {
System.out.println("Bisher keine Aktien gekauft."); } catch (Exception e) {
System.err.println("Aktien konnten nicht laden!");
e.printStackTrace();
} }
} }
@ -347,43 +403,42 @@ public class TUI {
int kontonummer = 0; int kontonummer = 0;
double betrag = 0; double betrag = 0;
boolean ok = false; boolean running = true;
do { while(running) {
System.out.println("Bitte geben Sie ihre Kontonummer ein: "); System.out.print("Bitte geben Sie ihre Kontonummer ein: ");
try { try {
kontonummer = Integer.parseInt(sc.nextLine()); kontonummer = Integer.parseInt(sc.nextLine());
if (bs.getKonten().containsKey(kontonummer)) { if(bs.getKonten().containsKey(kontonummer)){
System.out.println("Bitte geben Sie den Betrag ein: "); System.out.print("Bitte geben Sie den Betrag ein: ");
try { try {
betrag = Double.parseDouble(sc.nextLine()); betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Kommazahl sein, Eingabe bitte wiederholen"); System.err.println("Betrag muss eine Zahl sein!");
continue; continue;
} }
} }
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
System.err.println("Kontonummer muss eine Zahl sein, Eingabe bitte wiederholen"); System.err.println("Kontonummer muss eine Zahl sein!");
continue; continue;
} }
ok = true; running = false;
} while (!ok); }
long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100); long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100);
System.out.printf("Einzahlung erfolgreich, Ihr neuer Kontostand beträgt: %.2f€", (neuerKontostand) / 100.0);
System.out.printf("Einzalung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand) / 100.0);
} }
@ -392,63 +447,86 @@ public class TUI {
int kontonummer = 0; int kontonummer = 0;
double betrag = 0; double betrag = 0;
boolean ok = false; boolean running = true;
do { while(running){
System.out.println("Bitte geben Sie ihre Kontonummer ein: "); System.out.print("Bitte geben Sie ihre Kontonummer ein: ");
try { try {
kontonummer = Integer.parseInt(sc.nextLine()); kontonummer = Integer.parseInt(sc.nextLine());
if (bs.getKonten().containsKey(kontonummer)) { if(bs.getKonten().containsKey(kontonummer)){
System.out.println("Ihr aktueller Kontostand beträgt " + bs.getKontostand(kontonummer) / 100 + "€"); System.out.println("Ihr aktueller Kontostand beträgt " + bs.getKontostand(kontonummer) / 100 + "€");
System.out.println("Bitte geben Sie den Betrag ein: "); System.out.print("Bitte geben Sie den Betrag zum abheben ein: ");
try { try {
betrag = Double.parseDouble(sc.nextLine()); betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Kommazahl sein, Eingabe bitte wiederholen"); System.err.println("Betrag muss eine Zahl sein!");
continue; continue;
} }
} }
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
System.err.println("Bitte geben Sie Zahlen ein"); System.err.println("Kontonummer muss eine Zahl sein!");
continue; continue;
} }
ok = true; running = false;
} while (!ok); }
boolean erfolg = bs.geldAuszahlen(kontonummer, (long)betrag * 100); boolean erfolg = bs.geldAuszahlen(kontonummer, (long) betrag * 100);
long neuerKontostand = bs.getKontostand(kontonummer) / 100; long neuerKontostand = bs.getKontostand(kontonummer) / 100;
System.out.printf("Auszahlung" + ((!erfolg)? " nicht" : "" ) + " erfolgreich. "); System.out.printf("Auszahlung" + ((!erfolg)? " nicht" : "" ) + " erfolgreich. ");
System.out.println("Neuer Kontostand = " + neuerKontostand + "€"); System.out.println("Ihr neuer Kontostand beträgt: " + neuerKontostand + "€");
} }
private void kontoauszugDrucken() { private void kontoauszugDrucken() {
System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: ");
int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Auszug für Konto " + kontonummer); boolean running = true;
String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer);
if (kontobewegungen.length > 0) while(running){
for (String kb : kontobewegungen) {
System.out.println(kb); try {
System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: ");
int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Auszug für Konto " + kontonummer);
String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer);
try {
if (kontobewegungen.length > 0)
for (String kb : kontobewegungen) {
System.out.println(kb);
}
running = false;
} catch (Exception e) {
System.out.println("Keine Kontobewegungen vorhanden");
running = false;
}
} catch (Exception e) {
System.err.println("Kontoauszug fehlgeschlagen!");
e.printStackTrace();
break;
} }
else
System.out.println("Noch keine Kontobewegungen.");
}
}
}
private void überweisungBeauftragen() throws Exception { private void überweisungBeauftragen() throws Exception {
System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: "); System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: ");