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..0e8b948 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 @@ -8,8 +8,8 @@ public class Girokonto extends Konto implements Serializable { super(inhaber, kontozähler); } - public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= 0) { + public boolean überweise(Girokonto ziel, long betrag, String zweck) { + if (super.getKontostand() - betrag >= -100000) { this.auszahlen(betrag, zweck, "Ãœberweisungsausgang", super.getInhaber()); ziel.einzahlen(betrag, zweck, "Ãœberweisungseingang", super.getInhaber()); @@ -19,6 +19,18 @@ public class Girokonto extends Konto implements Serializable { return false; } + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + if (this.getKontostand() - betrag >= 100000) { + 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/Konto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java index 31220e1..7783bf9 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; @@ -33,6 +33,16 @@ public class Konto implements Serializable { public long getKontostand() { return stand; } + + public long berechneSaldo(int anzahlKontobewegungen) { + long saldo = 0; + + for(int k = 0; k < anzahlKontobewegungen; k++) { + saldo += kontobewegungen.get(k).getBetrag(); + } + + return saldo; + } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { stand += betrag; @@ -62,5 +72,5 @@ public class Konto implements Serializable { return auflistung; } - + } 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..da06b2a 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 @@ -22,14 +22,14 @@ class KontoTest { assertEquals("Mayer", k2.getInhaber()); assertNotEquals(k.getKontonummer(), k2.getKontonummer()); - k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); - assertEquals(100, k2.getKontostand()); + k.einzahlen(100, "Test", "Einzahlung", "JUnit"); + assertEquals(100, k.getKontostand()); - assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); - assertEquals(50, k2.getKontostand()); + assertTrue(k.auszahlen(50, "Test", "Auszahlung", "JUnit")); + assertEquals(50, k.getKontostand()); assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); - assertEquals(50, k2.getKontostand()); + assertEquals(0, k2.getKontostand()); } } 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..c63c538 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,9 @@ 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..a172998 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 @@ -64,12 +64,12 @@ public class Banksystem { return konto.getKontobewegungen(); } - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) { + public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) { Konto start = bank.findeKonto(startkonto); Konto ziel = bank.findeKonto(zielkonto); if (start instanceof Girokonto && ziel instanceof Girokonto) { - return ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); + return ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); } return false; @@ -81,4 +81,9 @@ public class Banksystem { return konto.getKontostand(); } + public long saldoAuszug(int kontonummer, int kontobewegungen) { + Konto konto = bank.findeKonto(kontonummer); + return konto.berechneSaldo(kontobewegungen); + } + } 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..da473e7 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,10 +3,13 @@ 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.Test; -class SystemTest { +import de.hs_mannheim.informatik.bank.domain.Bank; +class SystemTest { @Test void smokeTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); @@ -15,5 +18,34 @@ class SystemTest { assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } - + + void EinAuszahlenTest() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + int kontonummer1 = bs.kontoAnlegen("TestKonto", 1); + int kontonummer2 = bs.kontoAnlegen("TestGirokonto",2); + + assertEquals(500, bs.geldEinzahlen(kontonummer1, 500)); + assertEquals(1000, bs.geldEinzahlen(kontonummer1, 500)); + assertEquals(1500, bs.geldEinzahlen(kontonummer1, 500)); + + assertEquals(500, bs.geldEinzahlen(kontonummer2, 500)); + assertEquals(1000, bs.geldEinzahlen(kontonummer2, 500)); + assertEquals(1500, bs.geldEinzahlen(kontonummer2, 500)); + + assertEquals(1000, bs.geldAuszahlen(kontonummer1, 500)); + assertEquals(500, bs.geldAuszahlen(kontonummer1, 500)); + assertEquals(0, bs.geldAuszahlen(kontonummer1, 500)); + + assertEquals(1000, bs.geldAuszahlen(kontonummer2, 500)); + assertEquals(500, bs.geldAuszahlen(kontonummer2, 500)); + assertEquals(0, bs.geldAuszahlen(kontonummer2, 500)); + } + + + void cleanup() throws Exception { + File file = new File("C:\\Users\\kaimu\\git\\Bank-System-PUE2\\Bank-Beispiel\\Testsysten-bank-data.ser"); + 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..9b81a48 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 @@ -10,10 +10,10 @@ public class UI { public UI(Banksystem bs) { this.bs = bs; - hauptmenü(); + hauptmenü(); } - private void hauptmenü() { + private void hauptmenü() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); mainloop: @@ -26,8 +26,8 @@ public class UI { System.out.println("3 -> Geld einzahlen"); System.out.println("4 -> Geld auszahlen"); System.out.println("5 -> Kontoauszug drucken"); - System.out.println("6 -> Ãœberweisung beauftragen"); - + System.out.println("6 -> Überweisung beauftragen"); + System.out.println("7 -> Saldo anzeigen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -44,7 +44,8 @@ public class UI { case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; + case 6: überweisungBeauftragen(); break; + case 7: saldo(); break; case 9: break mainloop; } @@ -128,7 +129,7 @@ public class UI { System.out.println("Noch keine Kontobewegungen."); } - private void überweisungBeauftragen() { + private void überweisungBeauftragen() { System.out.print("Bitte die Kontonummer des Ausgangskontos der Ãœberweisung eingeben: "); int startkonto = Integer.parseInt(sc.nextLine()); @@ -141,9 +142,19 @@ public class UI { System.out.print("Bitte den Verwendungszweck eingeben: "); String verwendungszweck = sc.nextLine(); - boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); + boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); System.out.println("Ãœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } + + private void saldo() { + System.out.println("Bitte geben sie ihre Kontonummer ein: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + System.out.println("Geben sie die gewünschte Anzahl der Kontobewegungen ein"); + int kontobewegungen = Integer.parseInt(sc.nextLine()); + + + System.out.println("Ihr Saldo nach den ersten " + kontobewegungen + " Kontobewegungen beträgt:" + bs.saldoAuszug(kontonummer, kontobewegungen)); + } }