diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java index 16a794f..2c1f5f7 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -6,7 +6,7 @@ import de.hs_mannheim.informatik.bank.ui.UI; public class Main { public static void main(String[] args) throws Exception { - Banksystem bs = new Banksystem("Spaßkasse Mannheim"); + Banksystem bs = new Banksystem("Spaßkasse Mannheim"); UI ui = new UI(bs); } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java index 27aeb58..0dbb532 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java @@ -7,20 +7,20 @@ import java.util.HashMap; public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); - private int kontozähler; + public static int kontozähler; public Bank(String name) { this.name = name; - this.kontozähler = -1; + this.kontozähler = -1; } public int addKonto(String name, int auswahl) { Konto k; if (auswahl == 1) - k = new Konto(name, ++kontozähler); + k = new Konto(name, ++kontozähler); else - k = new Girokonto(name, ++kontozähler); + k = new Girokonto(name, ++kontozähler); konten.put(k.getKontonummer(), k); 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..ed363a8 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 @@ -1,27 +1,70 @@ + package de.hs_mannheim.informatik.bank.domain; import java.io.Serializable; public class Girokonto extends Konto implements Serializable { - - public Girokonto(String inhaber, int kontozähler) { - super(inhaber, kontozähler); + private long Dispositionskredit = 5000; + private final long DispositionskreditGrenze = Dispositionskredit; + public Girokonto(String inhaber, int kontozähler) { + super(inhaber, kontozähler); } - - public boolean überweise(Girokonto ziel, long betrag, String zweck) { + //Wir überschreiben die Methode auszahlen + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + if(super.getKontostand() - betrag >= 0 ) + { + super.auszahlen(betrag, zweck, art, auftraggeber); + return true; + } + else if(betrag <= this.Dispositionskredit+super.getKontostand()) + { + long DispoBetrag = betrag-super.getKontostand(); + super.auszahlen(super.getKontostand(), "Kein Geld", "Diskpostionsauszahlung", auftraggeber); + this.Dispositionskredit -= DispoBetrag; + return true; + } + + return false; + } + public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { + long DispoBetrag = betrag - (DispositionskreditGrenze-Dispositionskredit); + if(Dispositionskredit != 5000) + { + if(betrag >= DispositionskreditGrenze-Dispositionskredit) + { + this.Dispositionskredit = DispositionskreditGrenze; + super.einzahlen(DispoBetrag, zweck, art, auftraggeber); + }else + { + this.Dispositionskredit += betrag; + super.einzahlen(0, "Dispostitionseinzahlung", "Kredit", auftraggeber); + } + }else{ + super.einzahlen(betrag, zweck, art, auftraggeber); + } + } + public long getDispositionskredit() { + return Dispositionskredit; + } + public boolean überweise(Girokonto ziel, long betrag, String zweck) { if (super.getKontostand() - betrag >= 0) { - this.auszahlen(betrag, zweck, "Ãœberweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Ãœberweisungseingang", super.getInhaber()); + this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); return true; } + else if(betrag <= this.Dispositionskredit+super.getKontostand()) + { + 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(); } -} +} \ No newline at end of file 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..c873e51 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 @@ -10,12 +10,22 @@ public class Konto implements Serializable { private ArrayList kontobewegungen; - public Konto(String inhaber, int kontozähler) { - nummer = 1000 + kontozähler; + public Konto(String inhaber, int kontozähler) { + nummer = 1000 + kontozähler; this.inhaber = inhaber; this.kontobewegungen = new ArrayList<>(); } + public long saldoAnzeige() { + int length = kontobewegungen.size(); + long summe = 0; + for(int i = length-3;i= 5) + { + konto.saldoAnzeige(); + } return konto.getKontostand(); } public boolean geldAuszahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); - Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); } + public long SaldoAusgeben(int kontonummer) + { + Konto konto = bank.findeKonto(kontonummer); + if(konto.getKontobewegungen().length >= 5) { + return konto.saldoAnzeige(); + }else { + return 0; + } + } public String[] erstelleKontoauszug(int kontonummer) { Konto konto = bank.findeKonto(kontonummer); @@ -64,12 +76,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 +93,4 @@ public class Banksystem { return konto.getKontostand(); } -} +} \ No newline at end of file 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..641adc9 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,19 +1,86 @@ + 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; +import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; class SystemTest { @Test void smokeTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - + String bankname = "Testsystem"; + File f = new File(bankname + "-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + Banksystem bs = new Banksystem(bankname); assertNotNull(bs); assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); + + } + @Test + void EinzahlungsGiroTest() throws Exception { + String bankname = "filename"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + Banksystem bs = new Banksystem(bankname); + bs.kontoAnlegen("eren", 2); + bs.kontoAnlegen("falko", 10); + + bs.geldEinzahlen(1000, 10); + bs.geldEinzahlen(1001, 0); + + assertEquals(10,bs.getKontostand(1000)); + assertEquals(0,bs.getKontostand(1001)); + } + @Test + void EinzahlenKontoTest() throws Exception { + String bankname = "filename"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + Banksystem bs = new Banksystem(bankname); + bs.kontoAnlegen("zero", 1); + bs.kontoAnlegen("falko", 1); + + bs.geldEinzahlen(1000, 10); + bs.geldEinzahlen(1001, 0); + + assertEquals(10,bs.getKontostand(1000)); + assertEquals(0,bs.getKontostand(1001)); + } + @Test + void AuszahlungsTest() throws Exception { + String bankname = "filename"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + Banksystem bs = new Banksystem(bankname); + bs.kontoAnlegen("jean", 1); + bs.kontoAnlegen("eren", 1); + bs.geldEinzahlen(1000, 100); + bs.geldAuszahlen(1000, 101); + bs.geldEinzahlen(1001, 100); + bs.geldAuszahlen(1001, 100); + + + assertEquals(100,bs.getKontostand(1000)); + assertEquals(0,bs.getKontostand(1001)); + } } + + \ No newline at end of file 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..6c126d1 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,23 +10,23 @@ 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: while (true) { System.out.println(); System.out.println("--------"); - System.out.println("Hauptmenü"); + 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("6 -> Überweisung beauftragen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -44,7 +44,7 @@ public class UI { case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; + case 6: überweisungBeauftragen(); break; case 9: break mainloop; } @@ -86,9 +86,9 @@ public class UI { System.out.print("Bitte die gewünschte Kontonummer eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); - // optional prüfen, ob Konto existiert + // optional prüfen, ob Konto existiert - System.out.print("Bitte den gewünschten Betrag eingeben: "); + System.out.print("Bitte den gewünschten Betrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); @@ -98,10 +98,10 @@ public class UI { private void geldAuszahlen() throws Exception { System.out.println("Geld auszahlen"); - System.out.print("Bitte die gewünschte Kontonummer eingeben: "); + System.out.print("Bitte die gewünschte Kontonummer eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); - System.out.print("Bitte den gewünschten Betrag eingeben: "); + System.out.print("Bitte den gewünschten Betrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)betrag * 100); @@ -111,13 +111,13 @@ public class UI { } private void kontoauszugDrucken() { - System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); + System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); System.out.println(); // in echt auf einem Drucker - System.out.println("Auszug für Konto " + kontonummer); + System.out.println("Auszug für Konto " + kontonummer); String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer); if (kontobewegungen.length > 0) @@ -128,22 +128,22 @@ 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()); - System.out.print("Bitte die Kontonummmer für das Zielkonto der Ãœberweisung eingeben: "); + System.out.print("Bitte die Kontonummmer für das Zielkonto der Überweisung eingeben: "); int zielkonto = Integer.parseInt(sc.nextLine()); - System.out.print("Bitte den gewünschten Ãœberweisungsbetrag eingeben: "); + System.out.print("Bitte den gewünschten Überweisungsbetrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); 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."); } - + }