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;
+ }
+
}