From 0b7c978a1fe5ec53d059d731f4633bee8922e743 Mon Sep 17 00:00:00 2001 From: KDippold <2023962@stud.hs-mannheim.de> Date: Fri, 28 Oct 2022 14:38:53 +0200 Subject: [PATCH] Richtige Implementierung von Saldo und Dispokredit --- .../informatik/bank/domain/Girokonto.java | 19 ++---- .../informatik/bank/domain/GirokontoTest.java | 54 +++++++++++++++++ .../informatik/bank/domain/Konto.java | 6 +- .../informatik/bank/domain/KontoTest.java | 59 ++++++++----------- .../informatik/bank/domain/Kontobewegung.java | 10 +++- .../informatik/bank/facade/SystemTest.java | 7 +-- .../de/hs_mannheim/informatik/bank/ui/UI.java | 13 ++++ 7 files changed, 111 insertions(+), 57 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java 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 755fcad..66ef227 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 @@ -11,18 +11,12 @@ public class Girokonto extends Konto implements Serializable { } public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= 0) { + if (stand + dispo - betrag >= 0) { this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); return true; - } else if (super.getKontostand() + dispo - betrag >= 0) { - dispo = dispo - betrag + super.getKontostand(); - this.auszahlen(super.getKontostand(), zweck, "Überweisungsausgang", super.getInhaber()); // wenn dispo - // verwendet - // wird ist - // kontostand 0 - ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); + } return false; @@ -30,16 +24,13 @@ public class Girokonto extends Konto implements Serializable { @Override public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { - if (stand - betrag >= 0) { + if (stand + dispo - betrag >= 0) { stand = stand - betrag; - getKontobw().add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); return true; - } else if (stand + dispo - betrag >= 0) { - dispo = dispo - betrag + super.getKontostand(); - stand = 0; - getKontobw().add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + } return false; 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..f81cfce --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java @@ -0,0 +1,54 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.Test; + +class GirokontoTest { + + @Test + void überweiseTest() { + Girokonto k = new Girokonto("Müller", 0); + Girokonto k2 = new Girokonto("Mayer", 1); + + k.einzahlen(100, "Test", "Einzahlung", "JUnit"); + k.überweise(k2, 50, "Test"); + + assertEquals(50, k.stand); + assertEquals(50, k2.stand); + } + + @Test + void überweiseTestDispo() { + Girokonto k = new Girokonto("Müller", 0); + Girokonto k2 = new Girokonto("Mayer", 1); + + k.einzahlen(10, "Test", "Einzahlung", "JUnit"); + k.überweise(k2, 510, "Test"); + + assertEquals(-500, k.stand); + assertEquals(510, k2.stand); + + k.überweise(k2, 501, "JUnit"); // wird nicht überwiesen da dispo nur bis 1000 geht + assertEquals(-500, k.stand); + assertEquals(510, k2.stand); + + } + + @Test + void auszahlenTest() { + Girokonto k = new Girokonto("Müller", 0); + + k.einzahlen(10, "Test", "Einzahlung", "JUnit"); + k.auszahlen(5, "Test", "Auszahlung", "JUnit"); + assertEquals(5, k.stand); + + k.auszahlen(15, "Test", "Auszahlung", "JUnit"); + assertEquals(-10, k.stand); + + k.auszahlen(991, "Überzug", "Auszahlung", "JUnit"); + assertEquals(-10, k.stand); + + } + +} 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 3191cb6..60f5403 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 @@ -8,7 +8,7 @@ public class Konto implements Serializable { protected long stand = 0; private String inhaber; - private ArrayList kontobewegungen; + protected ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; @@ -70,11 +70,13 @@ public class Konto implements Serializable { public String[] getSaldo() { String[] saldo = new String[11]; + long saldobetrag = 0; for (int i = 10; i > 0; i--) { saldo[i - 1] = kontobewegungen.get(kontobewegungen.size() - i).toString(); + saldobetrag = saldobetrag + kontobewegungen.get(kontobewegungen.size() - i).getBetrag(); } - saldo[10] = "Kontostand: " + stand; + saldo[10] = "Saldo: " + saldobetrag; 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 888341e..d951e58 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 @@ -1,6 +1,10 @@ package de.hs_mannheim.informatik.bank.domain; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; @@ -32,43 +36,30 @@ class KontoTest { assertEquals(50, k2.getKontostand()); } - @Test - void dispoTest() { - Girokonto k = new Girokonto("Müller", 0); - Girokonto k2 = new Girokonto("Mayer", 0); - - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.überweise(k2, 200, "Test"); - assertEquals(900, k.getDispo()); - assertEquals(0, k.getKontostand()); - assertEquals(200, k2.getKontostand()); - - } - @Test void saldoTest() { - Girokonto k = new Girokonto("Müller", 0); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); - k.einzahlen(100, "Test", "Einzahlung", "JUnit"); + Konto k = new Konto("Müller", 0); + k.einzahlen(1, "Test", "Einzahlung", "JUnit"); + k.einzahlen(2, "Test", "Einzahlung", "JUnit"); + k.einzahlen(3, "Test", "Einzahlung", "JUnit"); + k.einzahlen(4, "Test", "Einzahlung", "JUnit"); + k.einzahlen(5, "Test", "Einzahlung", "JUnit"); + k.einzahlen(6, "Test", "Einzahlung", "JUnit"); + k.einzahlen(7, "Test", "Einzahlung", "JUnit"); + k.einzahlen(8, "Test", "Einzahlung", "JUnit"); + k.einzahlen(9, "Test", "Einzahlung", "JUnit"); + k.einzahlen(10, "Test", "Einzahlung", "JUnit"); + k.auszahlen(11, "Test", "Einzahlung", "JUnit"); + k.einzahlen(12, "Test", "Einzahlung", "JUnit"); + k.einzahlen(13, "Test", "Einzahlung", "JUnit"); + k.einzahlen(14, "Test", "Einzahlung", "JUnit"); + k.einzahlen(15, "Test", "Einzahlung", "JUnit"); + k.einzahlen(16, "Test", "Einzahlung", "JUnit"); + k.einzahlen(17, "Test", "Einzahlung", "JUnit"); + k.einzahlen(18, "Test", "Einzahlung", "JUnit"); assertNotNull(k.getSaldo()); String[] saldo = k.getSaldo(); - assertEquals("Kontostand: 1800", saldo[10]); + assertEquals("Saldo: 113", saldo[10]); } } 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..302904e 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 @@ -9,13 +9,13 @@ public class Kontobewegung implements Serializable { private String betreff; private String art; private String auftraggeber; - + public Kontobewegung(long betrag, String betreff, String art, String auftraggeber) { this.betrag = betrag; this.betreff = betreff; this.art = art; this.auftraggeber = auftraggeber; - + this.datum = new Date(); } @@ -24,5 +24,9 @@ public class Kontobewegung implements Serializable { return "Kontobewegung [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art + ", auftraggeber=" + auftraggeber + "]"; } - + + public long getBetrag() { + return betrag; + } + } 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 9159a37..4c44602 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 @@ -3,13 +3,12 @@ package de.hs_mannheim.informatik.bank.facade; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import java.io.*; - -import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; -import de.hs_mannheim.informatik.bank.ui.*; +import java.io.File; import org.junit.jupiter.api.Test; +import de.hs_mannheim.informatik.bank.ui.UI; + class SystemTest { @Test 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 151b8c2..14c05fc 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 @@ -26,6 +26,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 ausgeben"); System.out.println("9 -> Beenden"); System.out.println(); @@ -54,6 +55,8 @@ public class UI { case 6: überweisungBeauftragen(); break; + case 7: + case 9: break mainloop; } @@ -180,4 +183,14 @@ public class UI { return bs.printSaldo(kontonummer); } + private void SaldoAusgeben() { + System.out.print("Bitte die gewünschte Kontonummer für das Saldo eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + for (String s : printSaldo(kontonummer)) { + System.out.println(s); + } + + } + }