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 baa33d0..ac6ed89 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 @@ -3,38 +3,54 @@ package de.hs_mannheim.informatik.bank.domain; import java.io.Serializable; public class Girokonto extends Konto implements Serializable { - private long dispo = -5000; + private long dispo = -500000; public Girokonto(String inhaber, int kontozähler) { super(inhaber, kontozähler); - } - + public boolean giroAuszahlen(long betrag, String zweck, String art, String auftraggeber) { long alterStand = getKontostand(); if (alterStand - betrag >= dispo) { - long neuerStand = alterStand-betrag; + long neuerStand = alterStand - betrag; setKontostand(neuerStand); - - kontobewegung(betrag,zweck,art,auftraggeber); + + + kontobewegung(betrag, zweck, art, auftraggeber); return true; } return false; } + + /*public long dispoBerechnen(long einkommen) { + this.dispo = 0; + long gewährterDispo = einkommen / 4; + return gewährterDispo; + + }*/ + + public long getDispo() { + return dispo; + } + + public void setDispo(long dispo) { + this.dispo = dispo; + } + public boolean überweise(Girokonto ziel, long betrag, String zweck) { if (super.getKontostand() - betrag >= dispo) { this.giroAuszahlen(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 30032db..9bb722b 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 @@ -71,20 +71,14 @@ 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/facade/Banksystem.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java index a3d4e1a..a5c46ff 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 @@ -45,6 +45,7 @@ public class Banksystem { public long geldEinzahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); + zähleKontobewegung(); Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -60,12 +61,18 @@ public class Banksystem { boolean funktioniert = ((Girokonto) konto).giroAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + if (funktioniert == true) { + zähleKontobewegung(); + + } return funktioniert; } boolean funktioniert = konto.sparkontoAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + if (funktioniert == true) { + zähleKontobewegung(); + } Persistenz.speichereBankDaten(this.bank, bank.getName()); return funktioniert; @@ -100,11 +107,27 @@ 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; + /*public long dispoBerechnen(int kontonummer, long einkommen) throws Exception { + Konto konto = bank.findeKonto(kontonummer); + if (konto instanceof Girokonto) { + long gewährterDispo = ((Girokonto) konto).dispoBerechnen(einkommen); + Persistenz.speichereBankDaten(this.bank, bank.getName()); + return gewährterDispo; + } else { + long keinDispo = 0; + return keinDispo; + } }*/ + public void zähleKontobewegung() { + counter++; + + } + + public boolean printeNachBewegungen() { + if (counter % 5 == 0) { + return true; + } + return false; + } } 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 232af07..ca90dc5 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,6 +1,8 @@ package de.hs_mannheim.informatik.bank.facade; +import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Konto; +import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -16,175 +18,134 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; 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 bsGeldEinzahlenTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - - //Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl Sparkonto + + // Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl + // Sparkonto int testKontonummer1 = bs.kontoAnlegen("Robin", 1); int testKontonummer2 = bs.kontoAnlegen("Kai", 1); - - + bs.geldEinzahlen(testKontonummer1, 500); bs.geldEinzahlen(testKontonummer2, 1000); - - //Überprüfen, ob das Einzahlen funktioniert + + // Überprüfen, ob das Einzahlen funktioniert assertEquals(500, bs.getKontostand(testKontonummer1)); assertEquals(1000, bs.getKontostand(testKontonummer2)); - - + } - + @Test void bsGeldAuszahlenTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - - //Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl Sparkonto + + // Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl + // Sparkonto int testKontonummer1 = bs.kontoAnlegen("Robin", 1); int testKontonummer2 = bs.kontoAnlegen("Kai", 1); - + bs.geldEinzahlen(testKontonummer1, 500); bs.geldEinzahlen(testKontonummer2, 1000); - - //Überprüfen, ob das Einzahlen funktioniert + + // Überprüfen, ob das Einzahlen funktioniert assertEquals(500, bs.getKontostand(testKontonummer1)); assertEquals(1000, bs.getKontostand(testKontonummer2)); - + bs.geldAuszahlen(testKontonummer1, 250); bs.geldAuszahlen(testKontonummer2, 750); - + assertEquals(250, bs.getKontostand(testKontonummer1)); assertEquals(250, bs.getKontostand(testKontonummer2)); - - - + } - + @Test void bsGeldAuszahlenBisDispoTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - - //Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl Girokonto + + // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl + // Girokonto int testKontonummer1 = bs.kontoAnlegen("Robin", 2); int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - + bs.geldEinzahlen(testKontonummer1, 500); bs.geldEinzahlen(testKontonummer2, 1000); - assertEquals(500, bs.getKontostand(testKontonummer1)); - //assertEquals(1000, bs.getKontostand(testKontonummer2)); - + // assertEquals(1000, bs.getKontostand(testKontonummer2)); + bs.geldAuszahlen(testKontonummer1, 5499); assertEquals(-4999, bs.getKontostand(testKontonummer1)); bs.geldAuszahlen(testKontonummer1, 1); assertEquals(-5000, bs.getKontostand(testKontonummer1)); bs.geldAuszahlen(testKontonummer1, 1); assertNotEquals(-5001, bs.getKontostand(testKontonummer1)); - //System.out.println(bs.getKontostand(testKontonummer1)); - + } - + @Test void bsÜberweisenTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - - //Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl Girokonto + + // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl + // Girokonto int testKontonummer1 = bs.kontoAnlegen("Robin", 2); int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - + bs.geldEinzahlen(testKontonummer1, 500); bs.geldEinzahlen(testKontonummer2, 1000); - + 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)); - assertFalse(bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 1, "Testüberweisung")); - } -/* + @Test - void geldEinzahlenTest() { - // Konto anlegen mit Kontonummer 1000 - Konto testKonto1 = new Konto("Robin", 0); + void persistenzTest() throws Exception{ + Banksystem bs = new Banksystem("TestPersistenz"); - // Konto anlegen mit Kontonummer 1001 - Konto testKonto2 = new Konto("Kai", 1); + // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl + // Girokonto + int testKontonummer1 = bs.kontoAnlegen("Robin", 2); + int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - // Überprüfen der Konten - assertEquals(1000, testKonto1.getKontonummer()); - assertEquals("Robin", testKonto1.getInhaber()); + String name = "TestPersistenz"; - assertEquals(1001, testKonto2.getKontonummer()); - assertEquals("Kai", testKonto2.getInhaber()); + assertTrue(Persistenz.sindDatenGespeichert(name)); - // Zum testen der Einzahlung muss erstmal auf jedes Konto was eingezahlt werden - testKonto1.einzahlen(500, "Testeinzahlung", "Einzahlung auf das Konto", "Robin"); - testKonto2.einzahlen(1000, "Testeinzahlung", "Einzahlung auf das Konto", "Kai"); - - assertEquals(500, testKonto1.getKontostand()); - assertEquals(1000, testKonto2.getKontostand()); + File file = new File("TestPersistenz-bank-data.ser"); + assertTrue(file.exists()); + if (file.exists() == true) { + file.delete(); + } } - @Test - void geldAuszahlenTest() { - // Konto anlegen mit Kontonummer 1000, Auswahl 1 für Sparkonto - Konto testKonto1 = new Konto("Robin", 0); - - // Konto anlegen mit Kontonummer 1001, Auswahl 1 für Sparkonto - Konto testKonto2 = new Konto("Kai", 1); - - // Überprüfen der Konten - assertEquals(1000, testKonto1.getKontonummer()); - assertEquals("Robin", testKonto1.getInhaber()); - - assertEquals(1001, testKonto2.getKontonummer()); - assertEquals("Kai", testKonto2.getInhaber()); - - // Um die Auszahlung zu prüfen muss erst eingezahlt werden - // Zum testen der Einzahlung muss erstmal auf jedes Konto was eingezahlt werden - testKonto1.einzahlen(500, "Testeinzahlung", "Einzahlung auf das Konto", "Robin"); - testKonto2.einzahlen(1000, "Testeinzahlung", "Einzahlung auf das Konto", "Kai"); - - // Gleiches Spiel um die Auszahlung zu testen; erst auszahlen und dann prüfen ob - // jetzt die Differenz auf dem Konto ist - testKonto1.auszahlen(250, "Testauszahlung", "Auszahlen vom Konto", "Robin"); - testKonto2.auszahlen(750, "Testauszahlung", "Auszahlen vom Konto", "Robin"); - - assertEquals(250, testKonto1.getKontostand()); - assertEquals(250, testKonto2.getKontostand()); - - }*/ - @AfterEach public void stDeleteFile() { String Banksystemname = "Testsystem-bank-data.ser"; - //boolean loeschen = false; + // boolean loeschen = false; File file = new File(Banksystemname); if (file.exists()) { 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 b849569..4d27294 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 @@ -27,6 +27,7 @@ public class UI { System.out.println("4 -> Geld auszahlen"); System.out.println("5 -> Kontoauszug drucken"); System.out.println("6 -> Überweisung beauftragen"); + // System.out.println("7 -> Disporahmen festlegen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -55,6 +56,9 @@ public class UI { case 6: überweisungBeauftragen(); break; + /* + * case 7: disporahmenFestlegen(); break; + */ case 9: break mainloop; } @@ -69,6 +73,22 @@ public class UI { } // hauptmenü + /* + * private void disporahmenFestlegen() throws Exception { System.out. + * println("Für welches Girokonto soll ein Disporahmen eingerichtet werden?"); + * int kontonummer = Integer.parseInt(sc.nextLine()); + * + * System.out. + * println("Wie hoch ist Ihr Jahreseinkommen? (Dispo beträgt 1/4 des Jahresnettoeinkommen)" + * ); long einkommen = Long.parseLong(sc.nextLine()); + * + * long gewährterDispo = bs.dispoBerechnen(kontonummer, einkommen); + * System.out.println("Ihr gewährter Dispokredit beträgt: " + gewährterDispo + + * "€"); + * + * } + */ + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { @@ -93,6 +113,7 @@ public class UI { } private void geldEinzahlen() throws Exception { + // boolean print = false; System.out.println("Geld einzahlen"); System.out.print("Bitte die gewünschte Kontonummer eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); @@ -103,15 +124,14 @@ public class UI { double betrag = Double.parseDouble(sc.nextLine()); long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100); - // long saldo = bs.berechneSaldo(kontonummer, (long) betrag * 100); - counter++; - if (counter % 5 == 0) { + + if (bs.printeNachBewegungen() == true) { + System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); } System.out.printf("Einzahlung erfolgreich."); - // System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", - // (neuerKontostand / 100.0)); + } private void geldAuszahlen() throws Exception { @@ -124,12 +144,9 @@ public class UI { boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long) betrag * 100); - 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) + "€"); - } + if (bs.printeNachBewegungen() == true) { + + System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); } System.out.printf("Auszahlung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich. "); @@ -170,6 +187,10 @@ public class UI { String verwendungszweck = sc.nextLine(); boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long) (betrag * 100), verwendungszweck); + if (bs.printeNachBewegungen() == true) { + System.out.println("Zwischensaldo Startkonto: " + (bs.getKontostand(startkonto) / 100.0) + "€"); + System.out.println("Zwischensaldo Zielkonto: " + (bs.getKontostand(zielkonto) / 100.0) + "€"); + } System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); }