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 4a7ee10..86591e8 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 @@ -6,10 +6,13 @@ public class Girokonto extends Konto implements Serializable { public Girokonto(String inhaber, int kontozähler) { super(inhaber, kontozähler); + } + private long dispoKredit = -50000; + public boolean Überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= 0) { + if (super.getKontostand() - betrag >= -50000) { this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); 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..a3bcab9 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 @@ -52,6 +52,18 @@ public class Konto implements Serializable { return false; } + public boolean giroAuszahlen(long betrag, String zweck, String art, String auftraggeber) { + if (stand - betrag >= -50000) { + stand -= betrag; + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + + return true; + } + + return false; + } + public String[] getKontobewegungen() { String[] auflistung = new String[kontobewegungen.size()]; @@ -63,4 +75,8 @@ public class Konto implements Serializable { return auflistung; } + public long berechneSaldo(long betrag) { + long neuerStand = stand + betrag; + return neuerStand; + } } 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 81c8323..ec3babe 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 @@ -18,6 +18,7 @@ class KontoTest { void testKontoEinUndAuszahlung() { Konto k = new Konto("Müller", 0); Konto k2 = new Konto("Mayer", 1); + Konto k3 = new Konto("Sappel", 0); assertEquals("Mayer", k2.getInhaber()); assertNotEquals(k.getKontonummer(), k2.getKontonummer()); @@ -28,8 +29,15 @@ class KontoTest { assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); assertEquals(50, k2.getKontostand()); - assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); - assertEquals(50, k2.getKontostand()); - } + k3.einzahlen(400, "Test", "Auszahlung", "JUnit"); + assertEquals(400, k3.getKontostand()); + + assertTrue(k3.auszahlen(500, "Test", "Test", "JUnit")); + assertEquals(-100, k3.getKontostand()); + + assertFalse(k3.auszahlen(500, "Test", "Test", "JUnit")); + + + } } 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..f83f36d 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,5 @@ public class Kontobewegung implements Serializable { + ", auftraggeber=" + auftraggeber + "]"; } + } 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 cc25881..dc6e989 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 @@ -54,9 +54,12 @@ public class Banksystem { Konto konto = bank.findeKonto(kontonummer); Persistenz.speichereBankDaten(this.bank, bank.getName()); - - return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); - } + if (konto instanceof Girokonto) { + return konto.giroAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + } + else + return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + } public String[] erstelleKontoauszug(int kontonummer) { Konto konto = bank.findeKonto(kontonummer); @@ -81,4 +84,10 @@ public class Banksystem { return konto.getKontostand(); } + public long saldo(int kontonummer, double betrag) { + + Konto konto = bank.findeKonto(kontonummer); + long saldo = konto.berechneSaldo(betrag); + return saldo; + } } 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..48dea69 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,10 +1,15 @@ package de.hs_mannheim.informatik.bank.facade; 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; +import de.hs_mannheim.informatik.bank.domain.Konto; + class SystemTest { @Test @@ -15,5 +20,40 @@ class SystemTest { assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } + @Test + void EinAuszahlen () { + + Konto k = new Konto("Paulus", 0); + Konto k2 = new Konto("Mayer", 1); + + assertEquals("Mayer", k2.getInhaber()); + assertNotEquals(k.getKontonummer(), k2.getKontonummer()); + + k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); + assertEquals(100, k2.getKontostand()); + + assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); + assertEquals(50, k2.getKontostand()); + assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); + assertEquals(50, k2.getKontostand()); + + k.einzahlen(400, "Test", "Einzahlung", "JUnit"); + assertEquals(400, k.getKontostand()); + + assertTrue(k.auszahlen(800, "Test", "Auszahlung", "JUnit")); + assertEquals(-100, k.getKontostand()); + } + + @Test + + void persistenzTest() throws Exception { + + Banksystem bs = new Banksystem ("Testdatei"); + + + + } + + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java index 5d08e48..a7f331e 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java @@ -11,6 +11,7 @@ public class Persistenz { public static boolean sindDatenGespeichert(String name) { return new File(name + BANK_DATEI).exists(); + } public static void speichereBankDaten(Object bank, String name) throws Exception { 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 a5f4a7f..897254f 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 @@ -38,9 +38,7 @@ 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; @@ -94,6 +92,10 @@ public class UI { long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); + + if(bs.saldo()%6 == 0) { + System.out.println("Der Kontostand nach 6 Kontobewegungen beträgt: " + neuerKontostand); + } } private void geldAuszahlen() throws Exception { @@ -103,11 +105,14 @@ public class UI { System.out.print("Bitte den gewünschten Betrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); - boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)betrag * 100); System.out.printf("Auszahlung" + ((!erfolgreich)? " nicht" : "" )+ " erfolgreich. "); - System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); + System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); + + if(bs.saldo()%6 == 0) { + System.out.println("Der Kontostand nach 6 Kontobewegungen beträgt: " + bs.getKontostand(kontonummer)); + } } private void kontoauszugDrucken() { @@ -144,6 +149,10 @@ public class UI { boolean erfolgreich = bs.ÜberweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); System.out.println("Ãœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); + + if(bs.saldo(startkonto,betrag)%6 == 0) { + System.out.println("Der Kontostand nach 6 Kontobewegungen beträgt: " + bs.getKontostand(startkonto)); + } } }