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;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
import de.hs_mannheim.informatik.bank.tui.TUI;
import de.hs_mannheim.informatik.bank.ui.UI;
public class Main {
@ -10,7 +9,7 @@ public class Main {
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.util.Scanner;
@ -6,11 +6,11 @@ import java.util.Scanner;
import de.hs_mannheim.informatik.bank.domain.Kontoart;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class TUI {
public class UI {
private Banksystem bs;
Scanner sc = new Scanner(System.in);
public TUI(Banksystem bs) {
public UI(Banksystem bs) {
this.bs = bs;
hauptmenü();
}
@ -70,39 +70,73 @@ public class TUI {
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();
System.out.println("Nachname: ");
System.out.print("Nachname: ");
String nachname = sc.nextLine();
System.out.println("Alter:");
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("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(){
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
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{
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
@ -113,34 +147,49 @@ public class TUI {
for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
}
System.out.println("> ");
System.out.print("> ");
int auswahl = Integer.parseInt(sc.nextLine());
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 {
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() {
try {
String[] konten = bs.getKontenlisteForKunde();
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) {
System.out.println(s);
}
} 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(){
try {
String[] aktien = bs.getAktienliste();
if (aktien.length > 0) {
@ -152,6 +201,13 @@ public class TUI {
System.out.println("Bisher keine Aktien gekauft.");
}
} catch (Exception e) {
System.err.println("Aktien konnten nicht laden!");
e.printStackTrace();
}
}
@ -347,11 +403,11 @@ public class TUI {
int kontonummer = 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 {
@ -359,31 +415,30 @@ public class TUI {
if(bs.getKonten().containsKey(kontonummer)){
System.out.println("Bitte geben Sie den Betrag ein: ");
System.out.print("Bitte geben Sie den Betrag ein: ");
try {
betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Kommazahl sein, Eingabe bitte wiederholen");
System.err.println("Betrag muss eine Zahl sein!");
continue;
}
}
} catch (NumberFormatException nfe) {
System.err.println("Kontonummer muss eine Zahl sein, Eingabe bitte wiederholen");
System.err.println("Kontonummer muss eine Zahl sein!");
continue;
}
ok = true;
running = false;
} while (!ok);
}
long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100);
System.out.printf("Einzalung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand) / 100.0);
System.out.printf("Einzahlung erfolgreich, Ihr neuer Kontostand beträgt: %.2f€", (neuerKontostand) / 100.0);
}
@ -392,64 +447,87 @@ public class TUI {
int kontonummer = 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 {
kontonummer = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(kontonummer)){
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 {
betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Kommazahl sein, Eingabe bitte wiederholen");
System.err.println("Betrag muss eine Zahl sein!");
continue;
}
}
} catch (NumberFormatException nfe) {
System.err.println("Bitte geben Sie Zahlen ein");
System.err.println("Kontonummer muss eine Zahl sein!");
continue;
}
ok = true;
running = false;
} while (!ok);
}
boolean erfolg = bs.geldAuszahlen(kontonummer, (long) betrag * 100);
long neuerKontostand = bs.getKontostand(kontonummer) / 100;
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() {
boolean running = true;
while(running){
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);
}
else
System.out.println("Noch keine Kontobewegungen.");
running = false;
} 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 {
System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: ");
int startkonto = Integer.parseInt(sc.nextLine());