From b9a0a014a12ba17f8bebc18147102b0780666809 Mon Sep 17 00:00:00 2001 From: Caner Date: Sun, 27 Nov 2022 03:36:32 +0100 Subject: [PATCH] Fix: code refactoring & exception handling (ui) --- .../de/hs_mannheim/informatik/bank/Main.java | 5 +- .../bank/{tui/TUI.java => ui/UI.java} | 270 +++++++++++------- 2 files changed, 176 insertions(+), 99 deletions(-) rename Bank-Beispiel/src/de/hs_mannheim/informatik/bank/{tui/TUI.java => ui/UI.java} (64%) diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java index 7cf8b4a..dc4dcf5 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -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); } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java similarity index 64% rename from Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java rename to Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java index 063aed8..6b617fd 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java @@ -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,86 +70,142 @@ public class TUI { private void kundeRegistrieren(){ - System.out.println("Bitte die folgenden Daten eingeben: "); - System.out.println("Vorname: "); - String vorname = sc.nextLine(); - System.out.println("Nachname: "); - String nachname = sc.nextLine(); - System.out.println("Alter:"); - int alter = Integer.parseInt(sc.nextLine()); - try { - bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter)); - } catch (Exception e) { - e.printStackTrace(); + + 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.print("Nachname: "); + String nachname = sc.nextLine(); + 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(){ - 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){ - System.out.println("Login erfolgreich!"); - } else { - System.err.println("Kunde nicht gefunden!"); + boolean running = true; + + while(running){ + + 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{ - 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?"); - 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()); + while(running){ - int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]); - System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt."); + 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("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() { - 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(){ - String[] aktien = bs.getAktienliste(); + try { - if (aktien.length > 0) { - System.out.println("Sie haben folgende Aktien im Besitz: "); - for (String s : aktien) { - System.out.println(s); + String[] aktien = bs.getAktienliste(); + + if (aktien.length > 0) { + 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; 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)) { + 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,63 +447,86 @@ 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)) { + 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.println("Ihr aktueller Kontostand beträgt " + bs.getKontostand(kontonummer) / 100 + "€"); + 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; - } while (!ok); - - boolean erfolg = bs.geldAuszahlen(kontonummer, (long)betrag * 100); + running = false; + + } + + 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() { - 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); + boolean running = true; - if (kontobewegungen.length > 0) - for (String kb : kontobewegungen) { - System.out.println(kb); + 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); + } + 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 { System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: ");