From e077b8b9d5455451515c27ea5f808984fd4c86aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alperen=20K=C3=BCr=C3=BCc=C3=BC?= Date: Wed, 26 Oct 2022 12:11:08 +0200 Subject: [PATCH] Commit --- .project | 11 ++++ Bank-Beispiel/.classpath | 4 +- .../informatik/bank/domain/Bank.java | 10 ++-- .../informatik/bank/domain/Girokonto.java | 36 ++++++++---- .../informatik/bank/domain/GirokontoTest.java | 45 +++++++++++++++ .../informatik/bank/domain/Konto.java | 30 ++++++++-- .../informatik/bank/domain/KontoTest.java | 6 +- .../informatik/bank/domain/Kontobewegung.java | 7 ++- .../informatik/bank/facade/Banksystem.java | 22 ++++++-- .../informatik/bank/facade/SystemTest.java | 52 ++++++++++++++++++ .../bank/infrastructure/Persistenz.java | 1 + .../de/hs_mannheim/informatik/bank/ui/UI.java | 55 ++++++++++++++----- 12 files changed, 235 insertions(+), 44 deletions(-) create mode 100644 .project create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java diff --git a/.project b/.project new file mode 100644 index 0000000..a04e690 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + Bank-System-Testat + + + + + + + + diff --git a/Bank-Beispiel/.classpath b/Bank-Beispiel/.classpath index 257ce1d..539dba0 100644 --- a/Bank-Beispiel/.classpath +++ b/Bank-Beispiel/.classpath @@ -1,11 +1,11 @@ - + + - 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..80bbef0 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; + private 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) { + public int addKonto(String name, int auswahl, long dispo) { 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, dispo); 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..a9abf96 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 @@ -4,21 +4,37 @@ import java.io.Serializable; public class Girokonto extends Konto implements Serializable { - public Girokonto(String inhaber, int kontozähler) { - super(inhaber, kontozähler); + long dispo = -500; + + public Girokonto(String inhaber, int kontozähler, long dispo) { + super(inhaber, kontozähler); + this.dispo = dispo; } - - 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()); - + + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + + if (stand - betrag >= dispo * 100) { + stand -= betrag; + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + return true; } - + return false; } - + + public boolean uberweise(Girokonto ziel, long betrag, String zweck, long dispo ) { + if (super.getKontostand() - betrag >= dispo) { + 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/GirokontoTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java new file mode 100644 index 0000000..e60e297 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java @@ -0,0 +1,45 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class GirokontoTest { + + @Test + void DispositionsKreditTest()throws Exception{ + + + Girokonto gk = new Girokonto("alp", 0, -500); + + gk.einzahlen(200, "test", "test2", "alperen"); + gk.auszahlen(300, "egal", "egal2", "egal3"); + + assertEquals(-100, gk.getKontostand()); + + + + + + + } + + @Test + void DispositionsKreditTest2() throws Exception{ + + Girokonto gk = new Girokonto("alperen", 0, -500); + Girokonto gk2 = new Girokonto("samet",1, -500); + + gk.einzahlen(400, "test", "test2", "test3"); + + gk.uberweise(gk2, 500, "test4", -500); + + assertEquals(-100, gk.getKontostand()); + + + } + + + + +} 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..a49fba5 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,13 +5,13 @@ 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; + public Konto(String inhaber, int kontozahler) { + nummer = 1000 + kontozahler; this.inhaber = inhaber; this.kontobewegungen = new ArrayList<>(); @@ -35,15 +35,19 @@ public class Konto implements Serializable { } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { + stand += betrag; + kontobewegungen.add(new Kontobewegung(betrag, zweck, art, auftraggeber)); } - public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + public boolean auszahlen (long betrag, String zweck, String art, String auftraggeber) { + if (stand - betrag >= 0) { stand -= betrag; - + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); return true; @@ -63,4 +67,18 @@ public class Konto implements Serializable { return auflistung; } + public void saldoBerechnen(int n) { + + long saldo = 0; + + for(int i= 0; i<=n; i++) { + + saldo+= kontobewegungen.get(i).getBetrag(); + + System.out.println(saldo); + } + + } + + } 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..07a1bc1 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 @@ -8,15 +8,15 @@ class KontoTest { @Test void testKontoBasics() { - Konto k = new Konto("Müller", 0); - assertEquals("Müller", k.getInhaber()); + Konto k = new Konto("Müller", 0); + assertEquals("Müller", k.getInhaber()); assertEquals(1000, k.getKontonummer()); assertEquals(0, k.getKontostand()); } @Test void testKontoEinUndAuszahlung() { - Konto k = new Konto("Müller", 0); + Konto k = new Konto("Müller", 0); Konto k2 = new Konto("Mayer", 1); assertEquals("Mayer", k2.getInhaber()); 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..22f5c70 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,10 +18,15 @@ public class Kontobewegung implements Serializable { this.datum = new Date(); } + + + long getBetrag() { + return betrag; + } @Override public String toString() { - return "Kontobewegung [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art + return "Kontobewegung [betrag=" + betrag /100 + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art + ", auftraggeber=" + auftraggeber + "]"; } 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..79e51f5 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 @@ -7,6 +7,7 @@ import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; + public class Banksystem { private Bank bank; @@ -17,8 +18,8 @@ public class Banksystem { this.bank = new Bank(bankname); } - public int kontoAnlegen(String name, int auswahl) throws Exception { - int kontonummer = bank.addKonto(name, auswahl); + public int kontoAnlegen(String name, int auswahl, long dispo) throws Exception { + int kontonummer = bank.addKonto(name, auswahl, dispo); Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -44,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()); + Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -63,13 +65,15 @@ public class Banksystem { return konto.getKontobewegungen(); } + - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) { + + public boolean uberweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck, long dispo) { 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).uberweise((Girokonto)ziel, betrag, verwendungszweck, dispo); } return false; @@ -81,4 +85,14 @@ public class Banksystem { return konto.getKontostand(); } + public void getSaldo(int kontonummer, int n) { + + Konto kontoAusgeben = bank.findeKonto(kontonummer); + + kontoAusgeben.saldoBerechnen(n); + + + + } + } 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..c3f83d6 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 @@ -15,5 +15,57 @@ class SystemTest { assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } + + + @Test + void geldEinzahlenTest() throws Exception{ + + Banksystem bs = new Banksystem("Geld Einzahlen Test"); + + bs.kontoAnlegen("alp", 1, 0); + + bs.geldEinzahlen(1000, 250); + assertEquals(250,bs.getKontostand(1000) ); + + } + + + @Test + void geldAuszahlenTest() throws Exception{ + + Banksystem bs = new Banksystem("Geld Auszahlen Test2"); + + bs.kontoAnlegen("sam",1, 0); + + bs.geldEinzahlen(1000, 500); + bs.geldAuszahlen(1000, 200); + + assertEquals(300, bs.getKontostand(1000)); + + + + + } + + @Test + void SaldoTest()throws Exception { + + Banksystem bs = new Banksystem("Test für saldo"); + + bs.kontoAnlegen("sam",1, 0); + + bs.geldEinzahlen(1000, 200); + bs.geldEinzahlen(1000, 100); + bs.geldEinzahlen(1000, 150); + bs.geldEinzahlen(1000, 250); + + //assertEquals(700, bs.getSaldo(1000, 3)); + + + + + + } + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java index 5d08e48..05d2919 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/infrastructure/Persistenz.java @@ -6,6 +6,7 @@ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; + public class Persistenz { private static final String BANK_DATEI = "-bank-data.ser"; 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..45a47a5 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 @@ -2,6 +2,7 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.Scanner; + import de.hs_mannheim.informatik.bank.facade.Banksystem; public class UI { @@ -10,10 +11,10 @@ public class UI { public UI(Banksystem bs) { this.bs = bs; - hauptmenü(); + hauptmenu(); } - private void hauptmenü() { + private void hauptmenu() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); mainloop: @@ -26,7 +27,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 ausgeben"); System.out.println("9 -> Beenden"); System.out.println(); @@ -38,13 +40,12 @@ public class UI { try { switch(input) { case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; + case 2: kontoAnlegen();break; case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; + case 6: uberweisungBeauftragen(); break; + case 7: saldoAusgeben(); break; case 9: break mainloop; } @@ -58,6 +59,21 @@ public class UI { } // hauptmenü + private void saldoAusgeben() { + + System.out.println("geben sie ihre Kontonummer ein:"); + int i= Integer.parseInt(sc.nextLine()); + + System.out.println("Bitte geben sie die menge an die nach der Saldo ausgegeben werden soll:"); + int n= Integer.parseInt(sc.nextLine()); + + bs.getSaldo(i / 100, n/ 100); + + + + + } + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { @@ -74,11 +90,24 @@ public class UI { System.out.println("Bitte den Namen des Kontoinhabers angeben: "); String name = sc.nextLine(); - System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); + System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); int auswahl = Integer.parseInt(sc.nextLine()); + + if(auswahl == 1) { + - int kontonummer = bs.kontoAnlegen(name, auswahl); + int kontonummer = bs.kontoAnlegen(name, auswahl, 0 ); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + + }else if (auswahl == 2) { + + int kontonummer = bs.kontoAnlegen(name, auswahl, -500 ); + System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt und einem Dispo von -500"); + + } + + + } private void geldEinzahlen() throws Exception { @@ -91,7 +120,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,7 +133,7 @@ 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)); @@ -128,7 +157,7 @@ public class UI { System.out.println("Noch keine Kontobewegungen."); } - private void überweisungBeauftragen() { + private void uberweisungBeauftragen() { System.out.print("Bitte die Kontonummer des Ausgangskontos der Ãœberweisung eingeben: "); int startkonto = Integer.parseInt(sc.nextLine()); @@ -141,7 +170,7 @@ 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.uberweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck, -500); System.out.println("Ãœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); }