From 824a1a7a46781ee84f3ce9af3482f3efff8174f0 Mon Sep 17 00:00:00 2001 From: cedri Date: Tue, 25 Oct 2022 14:09:39 +0200 Subject: [PATCH] Aktueller Stand nach dem Testat 2 vom 25.10.2022 --- .../informatik/bank/domain/Girokonto.java | 13 ++++++++ .../informatik/bank/domain/GirokontoTest.java | 29 ++++++++++++++++++ .../informatik/bank/domain/Konto.java | 16 ++++++++-- .../informatik/bank/domain/KontoTest.java | 20 ++++++++++++ .../informatik/bank/domain/Kontobewegung.java | 4 +++ .../informatik/bank/facade/Banksystem.java | 13 +++++++- .../informatik/bank/facade/SystemTest.java | 27 ++++++++++++++++ .../de/hs_mannheim/informatik/bank/ui/UI.java | 27 ++++++++++++++-- Spaßkasse Mannheim-bank-data.ser | Bin 0 -> 998 bytes 9 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java create mode 100644 Spaßkasse Mannheim-bank-data.ser diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java index d9b1d77..36955a5 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java @@ -19,6 +19,19 @@ public class Girokonto extends Konto implements Serializable { return false; } + // Dispositionskredit mit Grenze von -5000€ + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + if (super.stand - betrag >= -500000) { + super.stand -= betrag; + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + + return true; + } + + return false; + } + @Override public String toString() { return "Giro-" + super.toString(); diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java new file mode 100644 index 0000000..6179b7f --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java @@ -0,0 +1,29 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +public class GirokontoTest { + + @Test + void testDispokredit() { + Konto k = new Girokonto("Müller", 0); + assertEquals("Müller", k.getInhaber()); + assertEquals(1000, k.getKontonummer()); + assertEquals(0, k.getKontostand()); + + //200 auszahlen + assertEquals(true, k.auszahlen(20000, "Test", "Auszahlung", "Müller")); + assertEquals(-20000, k.getKontostand()); + + //4800 auszahlen + assertEquals(true, k.auszahlen(480000, "Test", "Auszahlung", "Müller")); + assertEquals(-500000, k.getKontostand()); + + //weitere 200 auszahlen (liegt dann über der Dispogrenze) + assertEquals(false, k.auszahlen(20000, "Test", "Auszahlung", "Müller")); + assertEquals(-500000, k.getKontostand()); + } + +} 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 31220e1..ac71145 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 @@ -5,10 +5,10 @@ import java.util.ArrayList; public class Konto implements Serializable { private int nummer; - private long stand = 0; + protected long stand = 0; private String inhaber; - private ArrayList kontobewegungen; + protected ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; @@ -62,5 +62,17 @@ public class Konto implements Serializable { return auflistung; } + + public int getAnzahlKontobewegungen() { + return kontobewegungen.size(); + } + + public long getSaldo(int zahl) { + long saldo = 0; + for (int i = 0; i < zahl; i++) { + saldo = saldo + kontobewegungen.get(i).getBetrag(); + } + return saldo; + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java index 04e96ae..f0bc5f9 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java @@ -31,5 +31,25 @@ class KontoTest { assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); assertEquals(50, k2.getKontostand()); } + + @Test + void testSaldo() { + Konto k = new Girokonto("Müller", 0); + + //100 einzahlen + k.einzahlen(10000, null, null, null); + //200 einzahlen + k.einzahlen(20000, null, null, null); + //300 einzahlen + k.einzahlen(30000, null, null, null); + //5000 auszahlen + k.auszahlen(500000, null, null, null); + + assertEquals(4, k.getAnzahlKontobewegungen()); + assertEquals(10000, k.getSaldo(1)); + assertEquals(30000, k.getSaldo(2)); + assertEquals(60000, k.getSaldo(3)); + assertEquals(-440000, k.getSaldo(4)); + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java index d6b15dd..963d045 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java @@ -25,4 +25,8 @@ public class Kontobewegung implements Serializable { + ", auftraggeber=" + auftraggeber + "]"; } + public long getBetrag() { + return betrag; + } + } 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 5d72301..79db171 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 @@ -52,10 +52,11 @@ public class Banksystem { public boolean geldAuszahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); + boolean erfolgreich = konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); - return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + return erfolgreich; } public String[] erstelleKontoauszug(int kontonummer) { @@ -80,5 +81,15 @@ public class Banksystem { return konto.getKontostand(); } + + public int getAnzahlKontobewegungen(int kontonummer) { + Konto konto = bank.findeKonto(kontonummer); + return konto.getAnzahlKontobewegungen(); + } + + public long berechneSaldo(int kontonummer, int zahl) { + Konto konto = bank.findeKonto(kontonummer); + return konto.getSaldo(zahl); + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java index 0ce5674..e18ffc4 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java @@ -1,8 +1,12 @@ package de.hs_mannheim.informatik.bank.facade; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import java.io.File; + +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; class SystemTest { @@ -11,9 +15,32 @@ class SystemTest { void smokeTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); + File file = new File("C:\\Users\\cedri\\git\\Bank-System-Fork\\Testsystem-bank-data.ser"); + assertNotNull(bs); assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); + + int kontonummer1 = bs.kontoAnlegen("Person1", 1); + int kontonummer2 = bs.kontoAnlegen("Person2", 2); + int kontonummer3 = bs.kontoAnlegen("Person3", 2); + + assertEquals(1000, bs.geldEinzahlen(kontonummer1, 1000)); + assertNotEquals(1000, bs.geldEinzahlen(kontonummer2, 4000)); + assertEquals(200, bs.geldEinzahlen(kontonummer3, 200)); + + assertEquals(true, bs.geldAuszahlen(kontonummer1, 600)); + assertEquals(400, bs.getKontostand(kontonummer1)); + assertEquals(false, bs.geldAuszahlen(kontonummer1, 1000)); + assertEquals(400, bs.getKontostand(kontonummer1)); + assertEquals(true, bs.geldAuszahlen(kontonummer2, 4000)); + assertEquals(0, bs.getKontostand(kontonummer2)); + assertEquals(true, bs.geldAuszahlen(kontonummer3, 500)); + assertEquals(-300, bs.getKontostand(kontonummer3)); + assertEquals(true, bs.geldAuszahlen(kontonummer3, 100)); + assertEquals(-400, bs.getKontostand(kontonummer3)); + + file.delete(); } } 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 001e321..24f7167 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 @@ -27,6 +27,7 @@ public class UI { System.out.println("4 -> Geld auszahlen"); System.out.println("5 -> Kontoauszug drucken"); System.out.println("6 -> Überweisung beauftragen"); + System.out.println("7 -> Saldo bis zu einer bestimmten Transaktion berechnen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -38,13 +39,12 @@ public class UI { try { switch(input) { case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; + case 2: kontoAnlegen(); break; case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; case 6: überweisungBeauftragen(); break; + case 7: SaldoBisBerechnen(); break; case 9: break mainloop; } @@ -145,5 +145,26 @@ public class UI { System.out.println("Überweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } + + private void SaldoBisBerechnen() { + System.out.print("Bitte die gewünschte Kontonummer eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + int anzahlKontobewegungen = bs.getAnzahlKontobewegungen(kontonummer); + + System.out.println(); + System.out.println("Sie haben bisher " + anzahlKontobewegungen + ". Kontobewgungen"); + System.out.print("Bitte geben Sie daher eine Zahl zwischen 1 und " + anzahlKontobewegungen +" ein: "); + System.out.println(); + int zahl = Integer.parseInt(sc.nextLine()); + + if (zahl <= anzahlKontobewegungen && zahl > 0) { + long saldo = bs.berechneSaldo(kontonummer, zahl); + System.out.println("Ihr Saldo zwischen der 1. und der " + zahl + ". Kontobewegung beträgt: " + ((double)(saldo/100)) + "€"); + } else { + System.out.println("Leider haben Sie eine 0, eine negative Zahl oder eine höhere Zahl als Ihren gesamten Kontobewegungen eingegeben"); + } + + } } diff --git a/Spaßkasse Mannheim-bank-data.ser b/Spaßkasse Mannheim-bank-data.ser new file mode 100644 index 0000000000000000000000000000000000000000..e7d94c10a17b7f11f88137efd2a2f97d275bf063 GIT binary patch literal 998 zcmb7DJ#5oJ6n?Su10|Hu&`KR5g%u=cU_t5t<)1gHJjEw<|4NnS`}$SGdvetV&wM z45%r+AKv5rIAgf1+dhvRRyTh~qxOPB`XVuyT@!`n`lrt{JXRnz1?ei`3{4$WWIV1Vi$Ps(nxtP}M&d}l9z#+F z^1$Vg+f(EvuM#~X~$gravM*2HNbc>amg$^f76f)SaUh-HAoy7DU zA5~@Nn+a literal 0 HcmV?d00001