From 48f76495393bf07331c833fc8528b0cb2c18bee4 Mon Sep 17 00:00:00 2001 From: Study Date: Tue, 25 Oct 2022 14:35:42 +0200 Subject: [PATCH] Letzter Test --- .../Spaßkasse Mannheim-bank-data.ser | Bin 1233 -> 859 bytes .../de/hs_mannheim/informatik/bank/Main.java | 2 +- .../informatik/bank/domain/Girokonto.java | 29 +++-- .../informatik/bank/domain/Konto.java | 26 ++--- .../informatik/bank/domain/KontoTest.java | 13 +++ .../informatik/bank/domain/Kontobewegung.java | 5 +- .../informatik/bank/facade/Banksystem.java | 16 ++- .../informatik/bank/facade/SystemTest.java | 15 +++ .../de/hs_mannheim/informatik/bank/ui/UI.java | 101 +++++++++++------- 9 files changed, 140 insertions(+), 67 deletions(-) diff --git a/Bank-Beispiel/Spaßkasse Mannheim-bank-data.ser b/Bank-Beispiel/Spaßkasse Mannheim-bank-data.ser index e9ba20a89d51d92a7be438046c3ecbc9f6b1e726..becc8458854feea42cb9b76886db6f457263bb1d 100644 GIT binary patch delta 166 zcmcb}d7EuQ4K~#?2P3sKrzP2 z0Zir`iXX$DrNlm&KDnPMcCtN--ef6e6;-}JLX{O2|H0tKhl&yg;oySA!}GHfi;Ghg Md=vBXGEy^h0kPvbzW@LL delta 446 zcmcc3c9C;J4$ znZ*V9@x`UNxvBB#nML`NH!=E&GXR0Q00RT_3lIy$E@5DEN}bHlWW>%^&H@x+o9w}4 z&Y>TwF<((!6w# z3~vd87(zrLF;^itIU_NrB((^vQM8= super.getDispoGiro()) { - this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); - + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + + if (super.stand - betrag >= dispo_summe_giro) { + super.stand -= betrag; + super.kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); return true; } - + return false; } - + + public boolean überweise(Girokonto ziel, long betrag, String zweck) { + if (super.getKontostand() - betrag >= dispo_summe_giro) { + this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); + + 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 32913cf..5785780 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,11 +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; - public final long dispo_summe_giro = -(100 * 100); - private ArrayList kontobewegungen; + protected ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; @@ -27,6 +26,14 @@ public class Konto implements Serializable { return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + " Stand=" + stand / 100 + "]"; } + public long getSaldo(int bewegung) { + int summe = 0; + for (int i = 0; i <= bewegung - 1; i++) { + summe += kontobewegungen.get(i).getBetrag(); + } + + return summe; + } public String getInhaber() { return inhaber; } @@ -42,16 +49,13 @@ public class Konto implements Serializable { } public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { - if ((this instanceof Girokonto) && stand - betrag >= getDispoGiro()) { - stand -= betrag; - kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); - return true; - } - else if(stand - betrag >= 0) { + + if (stand - betrag >= 0) { stand -= betrag; kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); return true; } + return false; } @@ -65,9 +69,5 @@ public class Konto implements Serializable { return auflistung; } - - public long getDispoGiro() { - return dispo_summe_giro; - } } 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 0a8c22c..fd038b3 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 @@ -48,4 +48,17 @@ class KontoTest { } + @Test + void saldoTest() { + Konto giro = new Konto("Ausgang", 0); + + //Überweisung + giro.einzahlen(1000, "", "", ""); + giro.auszahlen(180, "", "", ""); + assertEquals(820, giro.getSaldo(2)); + assertEquals(1000, giro.getSaldo(1)); + + + } + } 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..912d271 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 @@ -15,9 +15,12 @@ public class Kontobewegung implements Serializable { this.betreff = betreff; this.art = art; this.auftraggeber = auftraggeber; - this.datum = new Date(); } + + public long getBetrag() { + return betrag; + } @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 5a8a791..e82f517 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 @@ -1,10 +1,12 @@ package de.hs_mannheim.informatik.bank.facade; +import java.util.ArrayList; import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; +import de.hs_mannheim.informatik.bank.domain.Kontobewegung; import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; public class Banksystem { @@ -19,7 +21,7 @@ public class Banksystem { public int kontoAnlegen(String name, int auswahl) throws Exception { int kontonummer = bank.addKonto(name, auswahl); - + Persistenz.speichereBankDaten(this.bank, bank.getName()); return kontonummer; @@ -31,7 +33,7 @@ public class Banksystem { int i = 0; for (Konto k : konten) { - liste[i++] = k.toString(); + liste[i++] = k.toString(); } return liste; @@ -46,7 +48,7 @@ public class Banksystem { konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return konto.getKontostand(); } @@ -68,7 +70,7 @@ public class Banksystem { 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; @@ -80,4 +82,10 @@ public class Banksystem { return konto.getKontostand(); } + public long getSaldo(int kontonummer, int bewegung) { + + long summe = bank.findeKonto(kontonummer).getSaldo(bewegung); + return summe; + } + } 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 415fff6..efd4c06 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 @@ -7,6 +7,9 @@ import java.io.File; import org.junit.jupiter.api.Test; +import de.hs_mannheim.informatik.bank.domain.Bank; +import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; + class SystemTest { @Test @@ -40,4 +43,16 @@ class SystemTest { File x = new File(bs.getBankname() + "-bank-data.ser"); assertTrue(x.delete()); } + + @Test + void persitenzTest() throws Exception { + Bank n = new Bank("Unit"); + Banksystem bs = new Banksystem("UnitBank"); + File x = new File(bs.getBankname() + "-bank-data.ser"); + bs.kontoAnlegen("TestKonto", 1); + bs.geldEinzahlen(1000, 200l); + Persistenz.speichereBankDaten(n,"n"); + assertTrue(Persistenz.sindDatenGespeichert("n")); + assertTrue(x.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..a5daa38 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 @@ -16,49 +16,61 @@ 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("7 -> Saldo anzeigen"); + 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 7: + saldoAnzeigen(); 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:"); @@ -91,7 +103,7 @@ 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); System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); } @@ -104,10 +116,10 @@ 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)); + System.out.printf("Auszahlung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich. "); + System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); } private void kontoauszugDrucken() { @@ -141,9 +153,18 @@ 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."); } + private void saldoAnzeigen() { + System.out.print("Bitte die gewünschte Kontonummer eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + System.out.print("Bitte den gewünschten Kontobewegungen eingeben: "); + int bewegung = Integer.parseInt(sc.nextLine()); + + System.out.println("Saldo bis " + bewegung + ": " + bs.getSaldo(kontonummer, bewegung)/100 + " Euro"); + } }