From 9ad8c5760bde3de0429600a7be79c5ca795e4e39 Mon Sep 17 00:00:00 2001 From: Caner Date: Sun, 27 Nov 2022 15:51:49 +0100 Subject: [PATCH] Fix: code refactor & exception handling --- .../de/hs_mannheim/informatik/bank/ui/UI.java | 185 +++++++++++++++--- 1 file changed, 160 insertions(+), 25 deletions(-) diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java index 6b617fd..7ba3ae6 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/ui/UI.java @@ -426,6 +426,9 @@ public class UI { continue; } + } else { + System.out.println("Kontonummer existiert nicht!"); + break; } } catch (NumberFormatException nfe) { @@ -471,6 +474,9 @@ public class UI { continue; } + } else { + System.out.println("Kontonummer existiert nicht!"); + break; } } catch (NumberFormatException nfe) { @@ -529,52 +535,181 @@ public class UI { } private void überweisungBeauftragen() throws Exception { - System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: "); - int startkonto = Integer.parseInt(sc.nextLine()); - System.out.print("Bitte die Kontonummmer für das Zielkonto der Überweisung eingeben: "); - int zielkonto = Integer.parseInt(sc.nextLine()); + boolean running = true; + int startkonto = 0; + int zielkonto = 0; + double betrag = 0; + String verwendungszweck = ""; - System.out.print("Bitte den gewünschten Überweisungsbetrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); + while (running) { - System.out.print("Bitte den Verwendungszweck eingeben: "); - String verwendungszweck = sc.nextLine(); + System.out.print("Bitte geben Sie die Kontonummer des Ausgangskontos der Überweisung ein: "); + + try { + + startkonto = Integer.parseInt(sc.nextLine()); + + if(bs.getKonten().containsKey(startkonto)){ + + System.out.print("Bitte geben Sie die Kontonummer des Zielkontos der Überweisung ein: "); + + try { + + zielkonto = Integer.parseInt(sc.nextLine()); + + if(bs.getKonten().containsKey(zielkonto)){ + + System.out.print("Bitte geben Sie den gewünschten Überweisungsbetrag ein: "); + + try { + + betrag = Double.parseDouble(sc.nextLine()); + + } catch (Exception e) { + System.err.println("Betrag muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + System.out.print("Bitte geben Sie den Verwendungszweck ein: "); + verwendungszweck = sc.nextLine(); + + } else { + System.out.println("Zielkonto existiert nicht!"); + break; + } + + } catch (Exception e) { + System.err.println("Kontonummer muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + } else { + System.out.println("Startkonto existiert nicht!"); + break; + } + + } catch (Exception e) { + System.err.println("Kontonummer muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + running = false; + + } boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long) (betrag * 100), verwendungszweck); - System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); + } private void saldoAbfragen() { - System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: "); - int konto = Integer.parseInt(sc.nextLine()); - System.out.print("Bitte die Anzahl der Kontobewegungen für den Saldo eingeben: "); - int anzahl = Integer.parseInt(sc.nextLine()); + boolean running = true; + int kontonummer = 0; + int anzahl = 0; - long saldo = bs.saldoBestimmen(konto, anzahl); + while(running) { + + System.out.print("Geben Sie bitte die Kontonummer des gewünschten Kontos ein: "); + + try { + + kontonummer = Integer.parseInt(sc.nextLine()); + + if(bs.getKonten().containsKey(kontonummer)){ + + System.out.print("Bitte geben Sie die Anzahl der Kontobewegungen für den Saldo ein: "); + + try { + + anzahl = Integer.parseInt(sc.nextLine()); + + } catch (Exception e) { + System.err.println("die Anzahl muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + } else { + System.out.println("Kontonummer existiert nicht"); + break; + } + + } catch (Exception e) { + System.err.println("Kontonummer muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + running = false; + + } + + + long saldo = bs.saldoBestimmen(kontonummer, anzahl); System.out.printf("Der Saldo nach %d Kontobewegungen beträgt %.2f Euro.%n", anzahl, (saldo / 100d)); + } private void aktienKaufen() { - System.out.println("Aktien kaufen"); - System.out.println("Bitte geben Sie die Kontonummer ein: "); - int kontonummer = Integer.parseInt(sc.nextLine()); + boolean running = true; + int kontonummer = 0; + int anzahl = 0; + String aktienName = ""; - System.out.println("Folgende Aktien sind Verfügbar"); - System.out.println("1 -> Deutsche Bank AG (DBK.DE)\n2 -> Deere & Company (DCO.DE)"); - System.out.println("Bitte geben Sie den Namen in Klammern ein um den Preis zu sehen:"); - String aktienName = sc.nextLine(); + while (running) { - System.out.println("Preis der Aktie"); - System.out.println(bs.getAktienPreis(aktienName)); + System.out.println("Aktien kaufen"); + System.out.print("Bitte geben Sie die Kontonummer ein: "); - System.out.println("Bitte geben Sie die Anzahl der Aktien ein, die Sie kaufen möchten: "); - int anzahl = Integer.parseInt(sc.nextLine()); + try { + + kontonummer = Integer.parseInt(sc.nextLine()); + + if(bs.getKonten().containsKey(kontonummer)){ + + System.out.println("Folgende Aktien sind Verfügbar"); + System.out.println("1 -> Deutsche Bank AG (DBK.DE)\n2 -> Deere & Company (DCO.DE)"); + System.out.print("Bitte geben Sie den Namen in Klammern ein um den Preis zu sehen:"); + + aktienName = sc.nextLine(); + + System.out.println("Preis der Aktie"); + System.out.println(bs.getAktienPreis(aktienName)); + + System.out.print("Bitte geben Sie die Anzahld er Aktien ein, die sie kaufen möchten: "); + + try { + + anzahl = Integer.parseInt(sc.nextLine()); + + } catch (Exception e) { + System.err.println("Die Anzahl muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + } else { + System.out.println("Kontonummer existiert nicht!"); + break; + } + + } catch (Exception e) { + System.err.println("Kontonummer muss eine Zahl sein!"); + e.printStackTrace(); + break; + } + + running = false; + + } boolean erg = bs.aktienKauf(kontonummer, anzahl, aktienName); System.out.printf("Aktienkauf" + ((!erg)? " nicht" : "" ) + " erfolgreich. ");