From 24146dd9943ef0df247f628f24eba4987e448897 Mon Sep 17 00:00:00 2001
From: "s.liewke" <2110737@stud.hs-mannheim.de>
Date: Mon, 10 Oct 2022 22:10:50 +0200
Subject: [PATCH] Ein-Auszahlung / Kontostand / Kontoauszug
---
Bank-Beispiel/.classpath | 7 +-
.../informatik/bank/JUnitBank.java | 39 +++++++
.../de/hs_mannheim/informatik/bank/Main.java | 2 +-
.../informatik/bank/domain/Bank.java | 30 ++++-
.../informatik/bank/domain/Konto.java | 46 +++++++-
.../informatik/bank/domain/Vorgang.java | 18 +++
.../informatik/bank/facade/Banksystem.java | 44 +++++--
.../de/hs_mannheim/informatik/bank/ui/UI.java | 107 +++++++++++++++---
8 files changed, 256 insertions(+), 37 deletions(-)
create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/JUnitBank.java
create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Vorgang.java
diff --git a/Bank-Beispiel/.classpath b/Bank-Beispiel/.classpath
index 57bca72..e4ab729 100644
--- a/Bank-Beispiel/.classpath
+++ b/Bank-Beispiel/.classpath
@@ -1,10 +1,15 @@
+
-
+
+
+
+
+
diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/JUnitBank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/JUnitBank.java
new file mode 100644
index 0000000..da53c6f
--- /dev/null
+++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/JUnitBank.java
@@ -0,0 +1,39 @@
+package de.hs_mannheim.informatik.bank;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+import de.hs_mannheim.informatik.bank.domain.Konto;
+import de.hs_mannheim.informatik.bank.facade.Banksystem;
+
+class JUnitBank {
+
+ @Test
+ public void einzahlenBanksystem() {
+ Banksystem bs = new Banksystem("hallo");
+ bs.kontoAnlegen("typ");
+ assertEquals(0L, bs.getKontostand(1000));
+ bs.einzahlen(1000, 20);
+ assertEquals(20L, bs.getKontostand(1000));
+ }
+
+ @Test
+ public void einzahlenKonto() {
+ Konto konto = new Konto("Stefan");
+ assertEquals(0, konto.getKontostand());
+ konto.einzahlen(20);
+ assertEquals(20, konto.getKontostand());
+ }
+
+ @Test
+ public void auszahlenKonto() {
+ Konto konto = new Konto("Stefan");
+ konto.einzahlen(20);
+ assertEquals(20L, konto.getKontostand());
+ konto.auszahlen(20);
+ assertEquals(0L, konto.getKontostand());
+
+ }
+
+}
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 b075558..3a4e96e 100644
--- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java
+++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java
@@ -1,5 +1,4 @@
package de.hs_mannheim.informatik.bank;
-
import de.hs_mannheim.informatik.bank.facade.Banksystem;
import de.hs_mannheim.informatik.bank.ui.UI;
@@ -8,6 +7,7 @@ public class Main {
public static void main(String[] args) {
Banksystem bs = new Banksystem("Spaßkasse Mannheim");
UI ui = new UI(bs);
+
}
}
\ No newline at end of file
diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java
index 0b66d3d..f18632b 100644
--- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java
+++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java
@@ -6,21 +6,41 @@ import java.util.HashMap;
public class Bank {
private String name;
private HashMap konten = new HashMap<>();
-
+
public Bank(String name) {
this.name = name;
}
-
+
public void addKonto(Konto k) {
konten.put(k.getKontonummer(), k);
}
-
+
public String getName() {
return name;
}
-
+
public Collection getKontenliste() {
return konten.values();
}
-
+
+ public HashMap getKonten() {
+ return konten;
+ }
+
+ public void einzahlen(Integer nummer, long einzahlung) {
+ konten.get(nummer).einzahlen(einzahlung);
+ }
+
+ public void auszahlen(Integer nummer, long auszahlung) {
+ konten.get(nummer).auszahlen(auszahlung);
+ }
+
+ public void addVorgang(Integer nummer, String auftraggeber, long einAuszahlung) {
+ konten.get(nummer).addVorgang(auftraggeber, einAuszahlung);
+ }
+
+ public String getKontoAuszug(Integer nummer) {
+ return konten.get(nummer).kontoauszugToString();
+ }
+
}
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 654d503..027182c 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,24 +1,62 @@
package de.hs_mannheim.informatik.bank.domain;
+import java.util.LinkedList;
+import java.util.List;
+
public class Konto {
private static int kontozähler = 0;
-
+
private int nummer;
private long stand = 0;
private String inhaber;
+ private List kontoauszug = new LinkedList<>();
public Konto(String inhaber) {
nummer = 1000 + kontozähler++;
this.inhaber = inhaber;
+ kontoauszug.add(new Vorgang(inhaber, stand));
}
-
+
public int getKontonummer() {
return nummer;
}
@Override
public String toString() {
- return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]";
+ return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", kontostand=" + stand + "]";
+ }
+
+ public void einzahlen(long einzahlung) {
+ this.stand = stand + einzahlung;
+
+ }
+
+ public long getKontostand() {
+ return stand;
+ }
+
+ public void auszahlen(long auszahlung) {
+ this.stand = stand - auszahlung;
+ }
+
+ public String getInhaber() {
+ return inhaber;
+ }
+
+ public void addVorgang(String auftraggeber, long einAusZahlung) {
+ kontoauszug.add(new Vorgang(auftraggeber, einAusZahlung));
+ }
+
+ public String kontoauszugToString() {
+ String kontoauszugString;
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i <= kontoauszug.size() - 1; i++) {
+ sb.append(kontoauszug.get(i).datum + " ");
+ sb.append(kontoauszug.get(i).auftraggeber + " ");
+ sb.append(kontoauszug.get(i).kontoBewegung + " " + "\n").toString();
+ }
+ sb.append("Aktueller Kontostand: " + stand).toString();
+ kontoauszugString = sb.toString();
+ return kontoauszugString;
}
-
}
diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Vorgang.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Vorgang.java
new file mode 100644
index 0000000..b45407b
--- /dev/null
+++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Vorgang.java
@@ -0,0 +1,18 @@
+package de.hs_mannheim.informatik.bank.domain;
+
+import java.time.LocalDate;
+
+public class Vorgang {
+
+ public String datum;
+ public String auftraggeber;
+ public long kontoBewegung;
+ public long stand;
+
+ public Vorgang(String auftraggeber, long kontobewegung) {
+ this.auftraggeber = auftraggeber;
+ this.kontoBewegung = kontobewegung;
+ this.datum = LocalDate.now().toString();
+ }
+
+}
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 821c2a9..0c565b7 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
@@ -7,31 +7,59 @@ import de.hs_mannheim.informatik.bank.domain.Konto;
public class Banksystem {
private Bank bank;
-
+
public Banksystem(String bankname) {
this.bank = new Bank(bankname);
}
-
+
public int kontoAnlegen(String name) {
Konto k = new Konto(name);
bank.addKonto(k);
-
+
return k.getKontonummer();
}
-
+
public String[] getKontenliste() {
Collection konten = bank.getKontenliste();
String[] liste = new String[konten.size()];
-
+
int i = 0;
for (Konto k : konten) {
- liste[i++] = k.toString();
+ liste[i++] = k.toString();
}
-
+
return liste;
}
-
+
public String getBankname() {
return bank.getName();
}
+
+ public long getKontostand(Integer nummer) {
+ return getKonto(nummer).getKontostand();
+ }
+
+ public Konto getKonto(Integer nummer) {
+ return bank.getKonten().get(nummer);
+ }
+
+ public void einzahlen(Integer nummer, long einzahlung) {
+ bank.einzahlen(nummer, einzahlung);
+ addVorgang(nummer, getKonto(nummer).getInhaber(), einzahlung);
+
+ }
+
+ public void auszahlung(Integer nummer, long auszahlung) {
+ getKonto(nummer).auszahlen(auszahlung);
+ addVorgang(nummer, getKonto(nummer).getInhaber(), auszahlung);
+
+ }
+
+ public void addVorgang(Integer nummer, String auftraggeber, long einAusZahlung) {
+ getKonto(nummer).addVorgang(auftraggeber, einAusZahlung);
+ }
+
+ public String getKontoauszug(Integer nummer) {
+ return bank.getKontoAuszug(nummer);
+ }
}
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 d6eb6e9..55add67 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,5 +1,6 @@
package de.hs_mannheim.informatik.bank.ui;
+import java.time.LocalDate;
import java.util.Scanner;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
@@ -16,32 +17,52 @@ public class UI {
private void hauptmenü() {
System.out.println("Willkommen bei der " + bs.getBankname() + "!");
- mainloop:
- while (true) {
- System.out.println();
- System.out.println("--------");
- System.out.println("Hauptmenü");
- System.out.println("1 -> Konten anzeigen");
- System.out.println("2 -> Konto anlegen");
- System.out.println("9 -> Beenden");
- System.out.println();
+ mainloop: while (true) {
+ System.out.println();
+ System.out.println("--------");
+ System.out.println("Hauptmenü");
+ System.out.println("1 -> Konten anzeigen");
+ System.out.println("2 -> Konto anlegen");
+ System.out.println("3 -> Kontostand erhöhen");
+ System.out.println("4 -> Kontostand eines einzelnen anzeigen");
+ System.out.println("5 -> Auszahlung");
+ System.out.println("6 -> Kontoauszug");
+ System.out.println("9 -> Beenden");
+ System.out.println();
- System.out.print("> ");
- int input = Integer.parseInt(sc.nextLine());
- System.out.println();
+ System.out.print("> ");
+ int input = Integer.parseInt(sc.nextLine());
+ System.out.println();
- switch(input) {
- case 1: kontenAnzeigen(); break;
- case 2: kontoAnlegen(); break;
- case 9: break mainloop;
- }
+ switch (input) {
+ case 1:
+ kontenAnzeigen();
+ break;
+ case 2:
+ kontoAnlegen();
+ break;
+ case 3:
+ einzahlen();
+ break;
+ case 4:
+ getKontostand();
+ break;
+ case 5:
+ auszahlen();
+ break;
+ case 6:
+ getKontoauszug();
+ break;
+ case 9:
+ break mainloop;
}
+ }
System.out.println("Auf Wiedersehen!");
} // hauptmenü
- private void kontenAnzeigen() {
+ private void kontenAnzeigen() {
String[] konten = bs.getKontenliste();
if (konten.length > 0) {
System.out.println("Folgende Konten sind aktuell verfügbar:");
@@ -61,4 +82,54 @@ public class UI {
System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt.");
}
+ private void einzahlen() {
+ if (bs.getKontenliste().length == 0) {
+ return;
+ }
+
+ System.out.println("Bitte die Kontonummer eingeben:");
+
+ Integer nummer = Integer.valueOf(sc.nextLine());
+
+ System.out.println("Bitte den Betrag der Einzahlung eingeben:");
+ long einzahlung = Long.parseLong(sc.nextLine());
+
+ bs.einzahlen(nummer, einzahlung);
+
+ }
+
+ private void getKontostand() {
+
+ System.out.println("Bitte geben Sie die Kontonummer ein:");
+ Integer nummer = Integer.valueOf(sc.nextLine());
+
+ System.out.println("Der Kontostand mit Nummer: " + nummer + " ist " + bs.getKontostand(nummer));
+ }
+
+ private void auszahlen() {
+ if (bs.getKontenliste().length == 0) {
+ return;
+ }
+ System.out.println("Bitte Kontonummer eingeben: ");
+ Integer nummer = Integer.valueOf(sc.nextLine());
+
+ System.out.println("Bitte den Betrag der Auszahlung eingeben: ");
+ long auszahlung = Long.parseLong(sc.nextLine());
+
+ bs.auszahlung(nummer, auszahlung);
+
+ System.out.println("Der neue Kontostand des Kontos: " + nummer + " ist " + bs.getKontostand(nummer));
+ System.out.println("Ausgezahlt wurden: " + auszahlung);
+ }
+
+ private void getKontoauszug() {
+ if (bs.getKontenliste().length == 0) {
+ return;
+ }
+ System.out.println("Bitte Kontonummer eingeben: ");
+ Integer nummer = Integer.valueOf(sc.nextLine());
+ System.out.println("Kontoauszug von: " + bs.getKonto(nummer).getInhaber() + " " + LocalDate.now());
+ System.out.println(bs.getKontoauszug(nummer));
+ }
+
}