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,39 +70,73 @@ public class TUI {
private void kundeRegistrieren(){ private void kundeRegistrieren(){
System.out.println("Bitte die folgenden Daten eingeben: ");
System.out.println("Vorname: "); boolean running = true;
while(running){
System.out.println("Bitte geben Sie die folgenden Daten ein: ");
System.out.print("Vorname: ");
String vorname = sc.nextLine(); String vorname = sc.nextLine();
System.out.println("Nachname: "); System.out.print("Nachname: ");
String nachname = sc.nextLine(); String nachname = sc.nextLine();
System.out.println("Alter:"); System.out.print("Alter:");
int alter = Integer.parseInt(sc.nextLine()); int alter = Integer.parseInt(sc.nextLine());
try { try {
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter)); bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter));
} catch (Exception e) { } catch (Exception e) {
System.err.println("Kundenkonto konnte nicht erstellt werden!");
e.printStackTrace(); e.printStackTrace();
break;
} }
System.out.println("Kunde mit der ID " + bs.getKundenID() + " wurde erstellt."); System.out.println("Ihr Kundenkonto mit der ID [" + bs.getKundenID() + "] wurde erstellt.");
running = false;
}
} }
private void login(){ private void login(){
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: "); System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> "); System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine()); int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID)); bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){ if(bs.getCurrentKunde() != null){
System.out.println("Login erfolgreich!"); System.out.println("Login erfolgreich!");
running = false;
} else { } else {
System.err.println("Kunde nicht gefunden!"); 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{
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: "); System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> "); System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine()); int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID)); bs.setCurrentKunde(bs.getKunde(kundenID));
@ -113,34 +147,49 @@ public class TUI {
for (int i = 0; i < kontoarten.length; i++) { for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")"); System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
} }
System.out.println("> "); System.out.print("> ");
int auswahl = Integer.parseInt(sc.nextLine()); int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]); int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]);
System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt."); System.out.println("Ihr ausgewähltes Konto mit der " + kontonummer + " neu angelegt.");
running = false;
} else { } else {
System.err.println("Kunde nicht gefunden!"); System.err.println("Kunde nicht gefunden!");
} break;
} }
} catch (Exception e) {
System.err.println("Konto konnte nicht angelegt werden!");
e.printStackTrace();
running = false;
}
}
}
private void kontenAnzeigen() { private void kontenAnzeigen() {
try {
String[] konten = bs.getKontenlisteForKunde(); String[] konten = bs.getKontenlisteForKunde();
if (konten.length > 0) { if (konten.length > 0) {
System.out.println("Folgende Konten sind aktuell verfügbar:"); System.out.println("Sie haben aktuell folgende Konten zur Verfügung:");
for (String s : konten) { for (String s : konten) {
System.out.println(s); System.out.println(s);
} }
} else { } else {
System.out.println("Bisher keine Konten angelegt."); 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(){
try {
String[] aktien = bs.getAktienliste(); String[] aktien = bs.getAktienliste();
if (aktien.length > 0) { if (aktien.length > 0) {
@ -152,6 +201,13 @@ public class TUI {
System.out.println("Bisher keine Aktien gekauft."); 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,64 +447,87 @@ 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() {
boolean running = true;
while(running){
try {
System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: ");
int kontonummer = Integer.parseInt(sc.nextLine()); int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Auszug für Konto " + kontonummer); System.out.println("Auszug für Konto " + kontonummer);
String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer); String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer);
try {
if (kontobewegungen.length > 0) if (kontobewegungen.length > 0)
for (String kb : kontobewegungen) { for (String kb : kontobewegungen) {
System.out.println(kb); System.out.println(kb);
} }
else running = false;
System.out.println("Noch keine Kontobewegungen.");
} catch (Exception e) {
System.out.println("Keine Kontobewegungen vorhanden");
running = false;
} }
} catch (Exception e) {
System.err.println("Kontoauszug fehlgeschlagen!");
e.printStackTrace();
break;
}
}
}
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: ");
int startkonto = Integer.parseInt(sc.nextLine()); int startkonto = Integer.parseInt(sc.nextLine());