From 60cc1b67aae64f281649ac41da272877dbc53a9d Mon Sep 17 00:00:00 2001 From: zlohbierdcul <82916072+zlohbierdcul@users.noreply.github.com> Date: Thu, 13 Oct 2022 17:18:30 +0200 Subject: [PATCH] added Kontoauszug feature. --- .idea/.gitignore | 3 + .idea/Bank-System-Fork.iml | 9 ++ .idea/libraries/junit_jupiter.xml | 17 ++++ .idea/misc.xml | 4 + .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 ++ .../informatik/bank/domain/Konto.java | 12 ++- .../informatik/bank/facade/Banksystem.java | 52 ++++++++++- .../de/hs_mannheim/informatik/bank/ui/UI.java | 86 ++++++++++++++----- 9 files changed, 175 insertions(+), 22 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/Bank-System-Fork.iml create mode 100644 .idea/libraries/junit_jupiter.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Bank-System-Fork.iml b/.idea/Bank-System-Fork.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/Bank-System-Fork.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/junit_jupiter.xml b/.idea/libraries/junit_jupiter.xml new file mode 100644 index 0000000..87f4b8f --- /dev/null +++ b/.idea/libraries/junit_jupiter.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..c1c2a99 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2ac3e65 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java index 71d5d73..db383c4 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java @@ -1,8 +1,10 @@ package de.hs_mannheim.informatik.bank.domain; +import java.util.ArrayList; + public class Konto { private static int kontozähler = 0; - + private ArrayList kontoauszug = new ArrayList<>(); private int nummer; private long stand = 0; private String inhaber; @@ -24,6 +26,14 @@ public class Konto { this.stand += value; } + public void remGuthaben(int value) { this.stand -= value; } + + public void addKontoBewegung(String kontoBewegung) { + kontoauszug.add(kontoBewegung); + } + public ArrayList getKontoauszug() { + return this.kontoauszug; + } @Override public String toString() { return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java index 41a5760..b5abd5c 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java @@ -1,5 +1,8 @@ package de.hs_mannheim.informatik.bank.facade; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; @@ -44,9 +47,56 @@ public class Banksystem { return konto; } } - System.out.println("Die angegebene Kontonummer existiert nicht, bitte versuchen Sie es erneut!"); + return null; } + public String[] getKontoauszug(Konto konto) { + ArrayList kontoauszug = konto.getKontoauszug(); + String[] auszugArray = new String[kontoauszug.size()]; + int i = 0; + for (String auszug : kontoauszug) { + auszugArray[i] = auszug; + i++; + } + return auszugArray; + } + + public void addGuthaben(Konto konto, int value) { + konto.addGuthaben(value); + String bew = createKontoBewegung(konto, value, "+"); + konto.addKontoBewegung(bew); + } + + + public long getGuthaben(Konto konto) { + return konto.getGuthaben(); + } + + public String createKontoBewegung(Konto konto, int value, String direction) { + String kontoBewegung = ""; + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"); + String date = dtf.format(LocalDateTime.now()); + + if (direction.equals("+")) { + kontoBewegung = date + " | " + konto.toString() + " | +" + value + "€"; + } else { + kontoBewegung = date + " | " + konto.toString() + " | -" + value + "€"; + } + + return kontoBewegung; + } + + public boolean geldAbheben(Konto konto, int value) { + if (value <= konto.getGuthaben()) { + konto.remGuthaben(value); + String bew = createKontoBewegung(konto, value, "-"); + konto.addKontoBewegung(bew); + } else { + return false; + } + return true; + } } 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 ec90768..be64acb 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 @@ -1,6 +1,7 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Scanner; @@ -20,7 +21,7 @@ public class UI { private void hauptmenü() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); - mainloop: + mainloop: while (true) { System.out.println(); System.out.println("--------"); @@ -28,7 +29,9 @@ public class UI { System.out.println("1 -> Konten anzeigen"); System.out.println("2 -> Konto anlegen"); System.out.println("3 -> Geld einzahlen"); - System.out.println("4 -> Guthaben ausgeben"); + System.out.println("4 -> Geld auszahlen"); + System.out.println("5 -> Guthaben ausgeben"); + System.out.println("6 -> Kontoauszug ausgeben"); System.out.println("9 -> Beenden"); System.out.println(); @@ -46,7 +49,9 @@ public class UI { case 1 -> kontenAnzeigen(); case 2 -> kontoAnlegen(); case 3 -> kontoAufladen(); - case 4 -> guthabenAusgeben(); + case 4 -> geldAuszahlen(); + case 5 -> guthabenAusgeben(); + case 6 -> kontoauszug(); case 9 -> { break mainloop; } @@ -61,32 +66,53 @@ public class UI { Konto konto = selectKonto(); System.out.println("\nIhr aktuelles Guthaben ist: "); - System.out.print(konto.getGuthaben()); + System.out.print(bs.getGuthaben(konto)); System.out.println("€"); } + private void geldAuszahlen() { + Konto konto = selectKonto(); + + System.out.println("Wieviel Euro möchten Sie abheben?"); + + int input = getInt(); + + Boolean auszahlung = bs.geldAbheben(konto, input); + + if (!auszahlung) { + System.out.println("Ihr Guthaben reicht für diese Auszahlung nicht mehr aus!"); + System.out.println("Ihr Kontostand ist aktuell " + bs.getGuthaben(konto) + "€ und Sie wollten " + input + "€ auszahlen lassen!"); + } else { + System.out.println("Sie haben sich erfolgreich " + input + "€ ausgezahlt!"); + } + + } + private void kontoAufladen() { Konto konto = selectKonto(); - System.out.println("Wieviel möchten sie aufladen? (nur ganze Beträge)!"); - System.out.print("> "); + if (konto != null) { + System.out.println("Wieviel möchten sie aufladen? (nur ganze Beträge)!"); + System.out.print("> "); - int input = 0; + int input = 0; - try { - input = Integer.parseInt(sc.nextLine()); - } catch (Exception e) { - System.out.println("Bitte geben Sie einen gültigen Betrag ein!"); - kontoAufladen(); + try { + input = Integer.parseInt(sc.nextLine()); + } catch (Exception e) { + System.out.println("Bitte geben Sie einen gültigen Betrag ein!"); + kontoAufladen(); + } + + if (input != 0) { + bs.addGuthaben(konto, input); + System.out.println("\n" + input + "€ wurden aufgeladen!"); + System.out.println("Ihr aktueller Kontostand beträgt " + konto.getGuthaben() + "€"); + System.out.println("Drücken Sie ENTER um zum Hauptmenu zurück zu kehren!"); + sc.nextLine(); + } } - if (input != 0) { - konto.addGuthaben(input); - System.out.println("\n" + input + "€ wurden aufgeladen!"); - System.out.println("Ihr aktueller Kontostand beträgt " + konto.getGuthaben() + "€"); - System.out.println("Drücken Sie ENTER um zum Hauptmenu zurück zu kehren!"); - sc.nextLine(); - } } private Konto selectKonto() { @@ -106,7 +132,7 @@ public class UI { Konto konto = bs.getKonto(input); if (konto == null) { - selectKonto(); + System.out.println("Die angegebene Kontonummer existiert nicht!"); } return konto; @@ -126,6 +152,15 @@ public class UI { } } + public void kontoauszug() { + Konto konto = selectKonto(); + + String[] kontoauszug = bs.getKontoauszug(konto); + for (String k : kontoauszug) { + System.out.println(k); + } + } + private void kontoAnlegen() { System.out.println("Bitte den Namen des Kontoinhabers angeben: "); String name = sc.nextLine(); @@ -134,4 +169,15 @@ public class UI { System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } + private int getInt() { + int input = 0; + try { + input = Integer.parseInt(sc.nextLine()); + } catch (Exception e) { + System.out.println("Bitte geben Sie einen gültigen Betrag ein!"); + kontoAufladen(); + } + return input; + } + }