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 68807df..baa33d0 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 @@ -12,10 +12,12 @@ public class Girokonto extends Konto implements Serializable { } public boolean giroAuszahlen(long betrag, String zweck, String art, String auftraggeber) { - if (stand - betrag >= dispo) { - stand -= betrag; + long alterStand = getKontostand(); + if (alterStand - betrag >= dispo) { + long neuerStand = alterStand-betrag; + setKontostand(neuerStand); - kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + kontobewegung(betrag,zweck,art,auftraggeber); return true; } 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 4799b81..30032db 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,11 @@ import java.util.ArrayList; public class Konto implements Serializable { private int nummer; - protected long stand = 0; + private long stand = 0; private String inhaber; - protected ArrayList kontobewegungen; + private ArrayList kontobewegungen; + private long[] saldo = new long[5]; public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; @@ -33,6 +34,9 @@ public class Konto implements Serializable { public long getKontostand() { return stand; } + public void setKontostand(long stand) { + this.stand = stand; + } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { stand += betrag; @@ -52,6 +56,10 @@ public class Konto implements Serializable { return false; } + public void kontobewegung(long betrag, String zweck, String art, String auftraggeber) { + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + } public String[] getKontobewegungen() { String[] auflistung = new String[kontobewegungen.size()]; @@ -63,5 +71,20 @@ public class Konto implements Serializable { return auflistung; } + /* + * public long saldo(long betrag, int counter) { long aktuellerStand = stand; + * for (int i = counter; i<=saldo.length-1; i++) { saldo[i] = betrag; + * aktuellerStand += betrag; } return aktuellerStand; } + */ -} + public long berechneSaldo(long betrag) { + if (betrag <= 0) { + long neuerStand = stand + betrag; + return neuerStand; + } else { + long neuerStand = stand + betrag; + return neuerStand; + + } + } +} \ No newline at end of file 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..1439349 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 @@ -18,6 +18,7 @@ public class Kontobewegung implements Serializable { this.datum = new Date(); } + @Override public String toString() { 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 7b8547f..a3d4e1a 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 @@ -9,6 +9,7 @@ import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; public class Banksystem { private Bank bank; + static int counter = 0; public Banksystem(String bankname) throws Exception { if (Persistenz.sindDatenGespeichert(bankname)) @@ -55,11 +56,15 @@ public class Banksystem { // boolean dann zurück public boolean geldAuszahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); - if(konto instanceof Girokonto) { - boolean funktioniert = ((Girokonto) konto).giroAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + if (konto instanceof Girokonto) { + boolean funktioniert = ((Girokonto) konto).giroAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", + konto.getInhaber()); + Persistenz.speichereBankDaten(this.bank, bank.getName()); + return funktioniert; } - boolean funktioniert = konto.sparkontoAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + boolean funktioniert = konto.sparkontoAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", + konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -72,8 +77,10 @@ public class Banksystem { return konto.getKontobewegungen(); } - //hier das gleiche Problem wie in "geldAuszahlen" -> boolean zwischenspeichern und dann speichern - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws Exception { + // hier das gleiche Problem wie in "geldAuszahlen" -> boolean zwischenspeichern + // und dann speichern + public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) + throws Exception { Konto start = bank.findeKonto(startkonto); Konto ziel = bank.findeKonto(zielkonto); @@ -81,7 +88,7 @@ public class Banksystem { boolean funktioniert = ((Girokonto) start).überweise((Girokonto) ziel, betrag, verwendungszweck); Persistenz.speichereBankDaten(this.bank, bank.getName()); return funktioniert; - + } return false; @@ -93,4 +100,11 @@ public class Banksystem { return konto.getKontostand(); } + /*public long berechneSaldo(int Kontonummer, long betrag) { + Konto konto = bank.findeKonto(Kontonummer); + long neuerSaldo = konto.berechneSaldo(betrag); + + return neuerSaldo; + }*/ + } 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 3983fcf..232af07 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 @@ -2,7 +2,9 @@ package de.hs_mannheim.informatik.bank.facade; import de.hs_mannheim.informatik.bank.domain.Konto; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -110,16 +112,14 @@ class SystemTest { bs.geldEinzahlen(testKontonummer1, 500); bs.geldEinzahlen(testKontonummer2, 1000); - bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 500, "Testüberweisung"); + assertTrue(bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 500, "Testüberweisung")); assertEquals(0, bs.getKontostand(testKontonummer1)); assertEquals(1500, bs.getKontostand(testKontonummer2)); bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 5000, "Testüberweisung"); assertEquals(-5000, bs.getKontostand(testKontonummer1)); assertEquals(6500, bs.getKontostand(testKontonummer2)); - //System.out.println(bs.getKontostand(testKontonummer2) + "//"+bs.getKontostand(testKontonummer1)); - bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 1, "Testüberweisung"); - assertNotEquals(5001, bs.getKontostand(testKontonummer1)); - assertNotEquals(6501, bs.getKontostand(testKontonummer2)); + assertFalse(bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 1, "Testüberweisung")); + } /* 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 187bca6..b849569 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 @@ -7,6 +7,7 @@ import de.hs_mannheim.informatik.bank.facade.Banksystem; public class UI { private Banksystem bs; Scanner sc = new Scanner(System.in); + static int counter = 0; public UI(Banksystem bs) { this.bs = bs; @@ -16,49 +17,59 @@ public class UI { private void hauptmenü() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); - mainloop: - while (true) { - System.out.println(); - System.out.println("--------"); - System.out.println("Hauptmenü"); - System.out.println("1 -> Konten anzeigen"); - System.out.println("2 -> Konto anlegen"); - System.out.println("3 -> Geld einzahlen"); - System.out.println("4 -> Geld auszahlen"); - System.out.println("5 -> Kontoauszug drucken"); - System.out.println("6 -> Überweisung beauftragen"); + mainloop: while (true) { + System.out.println(); + System.out.println("--------"); + System.out.println("Hauptmenü"); + System.out.println("1 -> Konten anzeigen"); + System.out.println("2 -> Konto anlegen"); + 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("9 -> Beenden"); - System.out.println(); + System.out.println("9 -> Beenden"); + System.out.println(); - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); - System.out.println(); + System.out.print("> "); + int input = Integer.parseInt(sc.nextLine()); + System.out.println(); - try { - switch(input) { - case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; - case 3: geldEinzahlen(); break; - case 4: geldAuszahlen(); break; - case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; - case 9: break mainloop; - } + try { + switch (input) { + case 1: + kontenAnzeigen(); + break; + case 2: + kontoAnlegen(); + break; + case 3: + geldEinzahlen(); + break; + case 4: + geldAuszahlen(); + break; + case 5: + kontoauszugDrucken(); + break; + case 6: + überweisungBeauftragen(); + break; + case 9: + break mainloop; + } - } catch (Exception e) { - System.err.println(e.getLocalizedMessage()); - } - System.out.println(); + } catch (Exception e) { + System.err.println(e.getLocalizedMessage()); } + System.out.println(); + } System.out.println("Auf Wiedersehen!"); } // hauptmenü - private void kontenAnzeigen() { + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { System.out.println("Folgende Konten sind aktuell verfügbar:"); @@ -76,7 +87,6 @@ public class UI { System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); int auswahl = Integer.parseInt(sc.nextLine()); - int kontonummer = bs.kontoAnlegen(name, auswahl); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); @@ -92,9 +102,16 @@ public class UI { System.out.print("Bitte den gewünschten Betrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); - long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); + long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100); + // long saldo = bs.berechneSaldo(kontonummer, (long) betrag * 100); + counter++; + if (counter % 5 == 0) { + System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); + } - System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); + System.out.printf("Einzahlung erfolgreich."); + // System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", + // (neuerKontostand / 100.0)); } private void geldAuszahlen() throws Exception { @@ -105,10 +122,20 @@ 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); + 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)); + if (erfolgreich == true) { + // long saldo = bs.berechneSaldo(kontonummer, (long) -betrag * 100); + counter++; + if (counter % 5 == 0) { + System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); + } + } + + System.out.printf("Auszahlung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich. "); + + // System.out.printf("Neuer Kontostand = %.2f Euro.", + // (bs.getKontostand(kontonummer) / 100.0)); } private void kontoauszugDrucken() { @@ -142,9 +169,9 @@ 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."); + System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } }