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..02767c4 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 @@ -9,16 +9,17 @@ public class Girokonto extends Konto implements Serializable { } 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()); - + saldo(-betrag); return true; } return false; } + @Override public String toString() { return "Giro-" + super.toString(); 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..cd75ddb 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 @@ -6,6 +6,7 @@ import java.util.ArrayList; public class Konto implements Serializable { private int nummer; private long stand = 0; + private long saldo = 0; private String inhaber; private ArrayList kontobewegungen; @@ -13,7 +14,7 @@ public class Konto implements Serializable { public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; this.inhaber = inhaber; - + this.kontobewegungen = new ArrayList<>(); } @@ -33,11 +34,16 @@ public class Konto implements Serializable { public long getKontostand() { return stand; } + + public void setKontostand(long betrag) { + stand -= betrag; + } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { stand += betrag; kontobewegungen.add(new Kontobewegung(betrag, zweck, art, auftraggeber)); + saldo(betrag); } public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { @@ -45,7 +51,19 @@ public class Konto implements Serializable { stand -= betrag; kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + saldo(-betrag); + return true; + } + return false; + } + + public boolean auszahlenDispo(long betrag, String zweck, String art, String auftraggeber) { + if (stand - betrag >= (-50000)) { + stand -= betrag; + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + saldo(-betrag); return true; } @@ -62,5 +80,13 @@ public class Konto implements Serializable { return auflistung; } + + public long saldo(long betrag) { + this.saldo += betrag; + if (kontobewegungen.size()%2 == 0) { + System.out.println("Ihr aktueller Saldo beträgt " + this.saldo/100 + " Euro."); + } + return this.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..0c8330e 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,18 @@ class KontoTest { assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); assertEquals(50, k2.getKontostand()); } + + @Test + void testSaldo() { + + Konto k = new Konto("Mayer", 0); + + k.einzahlen(100, "Test", "Einzahlung", "JUnit"); + assertEquals(100, k.saldo(0)); + + assertTrue(k.auszahlen(50, "Test", "Auszahlung", "JUnit")); + assertEquals(50, k.saldo(0)); + + } } 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..b0c1b43 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 @@ -55,7 +55,11 @@ public class Banksystem { Persistenz.speichereBankDaten(this.bank, bank.getName()); + if(konto instanceof Girokonto) { + return konto.auszahlenDispo(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + } else { return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + } } public String[] erstelleKontoauszug(int kontonummer) { @@ -80,5 +84,6 @@ public class Banksystem { return konto.getKontostand(); } + } 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..692a7ab 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,6 +3,9 @@ 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.File; + +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; class SystemTest { @@ -10,10 +13,82 @@ class SystemTest { @Test void smokeTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - + assertNotNull(bs); assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } +// @Test +// void persistänzTesten() { +// String datei = "C:\\Users\\max3r\\git\\Bank-System-Testat\\Bank-Beispiel\\Testsystem-bank-data.ser"; +// File f = new File(datei); +// f.exists(); +// } + + @Test + void einzahlungSparkontoTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + + bs.kontoAnlegen("TestSparkonto", 1); + bs.geldEinzahlen(1000, 500); + assertEquals(500, bs.getKontostand(1000)); + bs.geldEinzahlen(1000, 1500); + assertEquals(2000, bs.getKontostand(1000)); + } + + @Test + void einzahlungGirokontoTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + + bs.kontoAnlegen("TestGirokonto", 2); + bs.geldEinzahlen(1000, 500); + assertEquals(500, bs.getKontostand(1000)); + bs.geldEinzahlen(1000, 1500); + assertEquals(2000, bs.getKontostand(1000)); + + } + + @Test + void auszahlungSparkontoTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + + bs.kontoAnlegen("TestSparkonto", 1); + bs.geldAuszahlen(1000, 500); + assertEquals(0, bs.getKontostand(1000)); + bs.geldAuszahlen(1000, 1500); + assertEquals(0, bs.getKontostand(1000)); + } + + @Test + void auszahlungGirokontoTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + + bs.kontoAnlegen("TestGirokonto", 2); + bs.geldAuszahlen(1000, 500); + assertEquals(-500, bs.getKontostand(1000)); + bs.geldAuszahlen(1000, 1500); + assertEquals(-2000, bs.getKontostand(1000)); + + } + + @Test + void saldoTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + + bs.kontoAnlegen("TestGirokonto", 2); + bs.geldAuszahlen(1000, 500); + assertEquals(-500, bs.getKontostand(1000)); + bs.geldAuszahlen(1000, 1500); + assertEquals(-2000, bs.getKontostand(1000)); + + } + + @AfterEach + void löschen() { + String datei = "C:\\Users\\max3r\\git\\Bank-System-Testat\\Bank-Beispiel\\Testsystem-bank-data.ser"; + File f = new File(datei); + f.delete(); + } + }