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