From 1cd5df97ea4af67794901b40df5e344516285f62 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 27 Oct 2022 23:44:00 +0200 Subject: [PATCH] =?UTF-8?q?Zweite=20abgabe=20f=C3=BCrs=20Testat=20-=20Bank?= =?UTF-8?q?=20System.=20Neue=20aufforderungen=20durch=20Email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../de/hs_mannheim/informatik/bank/Main.java | 3 +- .../informatik/bank/domain/Girokonto.java | 29 +++-- .../informatik/bank/domain/Konto.java | 22 ++-- .../informatik/bank/domain/Kontobewegung.java | 8 +- .../informatik/bank/facade/Banksystem.java | 16 +-- .../informatik/bank/facade/SystemTest.java | 50 ++++++--- .../de/hs_mannheim/informatik/bank/ui/UI.java | 101 ++++++++++-------- 7 files changed, 144 insertions(+), 85 deletions(-) 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 bf81de1..24cdc0a 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -8,8 +8,7 @@ public class Main { public static void main(String[] args) throws Exception { Banksystem bs = new Banksystem("Spaßkasse Mannheim"); UI ui = new UI(bs); - - System.out.println("test"); + } } \ No newline at end of file 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 dbadf86..fbe1ca5 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 @@ -7,18 +7,31 @@ public class Girokonto extends Konto implements Serializable { public Girokonto(String inhaber, int kontozähler) { super(inhaber, kontozähler); } - - public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= -300) { - this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); - + + @Override + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { +// int x = -30000; + if (stand - betrag >= -30000) { + stand -= betrag; + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + return true; } - +// System.out.println("test2:" + betrag); return false; } - + + public boolean überweise(Girokonto ziel, long betrag, String zweck) { + if (super.getKontostand() - betrag >= -300L) { + 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 203af2d..313f05c 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,12 +5,12 @@ import java.util.ArrayList; public class Konto implements Serializable { private int nummer; - private long stand = 0; + protected long stand = 0; private int x = 0; private String inhaber; private long saldo; - private ArrayList kontobewegungen; + protected ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { nummer = 1000 + kontozähler; @@ -43,8 +43,8 @@ public class Konto implements Serializable { } public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { - long x = -300; - if (stand - betrag >= x) { +// long x = -300; + if (stand - betrag >= 0) { stand -= betrag; kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); @@ -57,7 +57,7 @@ public class Konto implements Serializable { public String[] getKontobewegungen() { String[] auflistung = new String[kontobewegungen.size()]; - + int i1 = 0; for (Kontobewegung kb : kontobewegungen) { auflistung[i1++] = kb.toString(); @@ -65,12 +65,18 @@ public class Konto implements Serializable { return auflistung; } - - public long getSaldo(){ + + public long getSaldo() { for (int i = 0; i < kontobewegungen.size(); i++) { - saldo=saldo+kontobewegungen.get(i).getBetrag(); + saldo = saldo + kontobewegungen.get(i).getBetrag(); } return saldo; } + // sollte private sein, wurde aber für testfälle auf public gesetzt. kann + // dennoch nichts bewirken + public void setStand(long stand) { + System.out.println("nicht erlaubt!"); + } + } 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 963d045..302904e 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 @@ -9,13 +9,13 @@ public class Kontobewegung implements Serializable { private String betreff; private String art; private String auftraggeber; - + public Kontobewegung(long betrag, String betreff, String art, String auftraggeber) { this.betrag = betrag; this.betreff = betreff; this.art = art; this.auftraggeber = auftraggeber; - + this.datum = new Date(); } @@ -24,9 +24,9 @@ public class Kontobewegung implements Serializable { return "Kontobewegung [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art + ", auftraggeber=" + auftraggeber + "]"; } - + public long getBetrag() { return betrag; } - + } 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 b934c59..9f80700 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 @@ -19,7 +19,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 +31,7 @@ public class Banksystem { int i = 0; for (Konto k : konten) { - liste[i++] = k.toString(); + liste[i++] = k.toString(); } return liste; @@ -46,13 +46,13 @@ public class Banksystem { konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + 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()); @@ -69,7 +69,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,10 +80,14 @@ public class Banksystem { return konto.getKontostand(); } - + public long saldostand(int kontonummer) { Konto konto = bank.findeKonto(kontonummer); return konto.getSaldo(); } + public void setKontoStand(int kontonummer, long betrag) { + System.out.println("nicht erlaubt!"); + } + } 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 0fe76a4..7edd13d 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,40 +1,64 @@ package de.hs_mannheim.informatik.bank.facade; +import static org.junit.Assert.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; - import org.junit.jupiter.api.Test; - import de.hs_mannheim.informatik.bank.domain.Konto; - class SystemTest { @Test void smokeTest() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - + assertNotNull(bs); assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } - + void testKontoEinUndAuszahlung() throws Exception { Banksystem bs = new Banksystem("Testsystem"); - Konto k = new Konto("Laurent1",1005); - + Konto k = new Konto("Laurent", 1005); + Konto g = new Konto("Mayer", 1006); + Konto x = new Konto("Müller", 1007); + // Einzahlen - + bs.geldEinzahlen(1005, 500); + bs.geldEinzahlen(1006, 999); + bs.geldEinzahlen(1007, -10); assertEquals(500, bs.getKontostand(1005)); - + assertEquals(999, bs.getKontostand(1006)); + assertEquals(0, bs.getKontostand(1007)); + // Auszahlen - + bs.geldAuszahlen(1005, 200); + bs.geldAuszahlen(1006, 1000); + bs.geldAuszahlen(1007, 500); assertEquals(300, bs.getKontostand(1005)); - + assertEquals(999, bs.getKontostand(1006)); + assertEquals(0, bs.getKontostand(1007)); + + } + + void testUmgehen() throws Exception { + Banksystem bs = new Banksystem("Testsystem"); + Konto k = new Konto("laurent", 1006); + Konto x = new Konto("Mayer", 1007); + Konto a = new Konto("Müller", 1008); + + bs.geldEinzahlen(1006, 100); + k.setStand(200); + assertNotEquals(200, bs.getKontostand(1007)); + + x.setStand(800); + bs.geldAuszahlen(1007, 800); + + bs.setKontoStand(1008, 500); + assertNotEquals(500, bs.getKontostand(1008)); + } - - } 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 1e7e0aa..bd7d0be 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,51 +16,63 @@ 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"); - System.out.println("7 -> Saldo Anzeigen"); + 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 7: + saldoAnzeigen(); + 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:"); @@ -93,7 +105,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)); } @@ -106,11 +118,11 @@ 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.println(betrag); - 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() { @@ -144,16 +156,17 @@ 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.println("Kontonummer enigeben"); + System.out.println("Kontonummer eingeben"); int kontonummer = Integer.parseInt(sc.nextLine()); long aktuellerSaldo = bs.saldostand(kontonummer); - System.out.println("Saldo: "+aktuellerSaldo/100); - + System.out.println("Saldo: " + aktuellerSaldo / 100); + } }