From 3f1081078f0d3257f3f4ad3a628441135c22f2ff Mon Sep 17 00:00:00 2001 From: Eline Date: Tue, 25 Oct 2022 14:21:44 +0200 Subject: [PATCH] saldo --- .../informatik/bank/domain/Girokonto.java | 3 +- .../informatik/bank/domain/Konto.java | 23 ++++++++-- .../informatik/bank/domain/KontoTest.java | 26 ++++++++--- .../informatik/bank/domain/Kontobewegung.java | 4 ++ .../informatik/bank/facade/Banksystem.java | 7 +++ .../informatik/bank/facade/SystemTest.java | 45 ++++++++++++++++++- .../de/hs_mannheim/informatik/bank/ui/UI.java | 11 +++++ 7 files changed, 107 insertions(+), 12 deletions(-) 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..d22a161 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 @@ -9,7 +9,8 @@ public class Girokonto extends Konto implements Serializable { } public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= 0) { + //Dispo auf -5000 gesetzt + if (super.getKontostand() - betrag >= -500000000) { this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); 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..c3df745 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 @@ -7,7 +7,7 @@ public class Konto implements Serializable { private int nummer; private long stand = 0; private String inhaber; - + private long saldo = 0; private ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { @@ -33,7 +33,9 @@ public class Konto implements Serializable { public long getKontostand() { return stand; } - + public long getSaldo() { + return saldo; + } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { stand += betrag; @@ -41,14 +43,22 @@ public class Konto implements Serializable { } public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { - if (stand - betrag >= 0) { + + if(this instanceof Girokonto && stand - betrag >= (500000000 *-1) ) { stand -= betrag; kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); return true; } + else if (stand - betrag >= 0) { + stand -= betrag; + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + + return true; + }//prüfen ob girokonto hat, Dispo liegt bei -5000 + else return false; } @@ -63,4 +73,11 @@ public class Konto implements Serializable { return auflistung; } + public long setSaldo() { + for (int i = 0; i < kontobewegungen.size(); i++) { + saldo +=kontobewegungen.get(i).getBetrag(); + } + return 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..625c77c 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 @@ -17,19 +17,31 @@ class KontoTest { @Test void testKontoEinUndAuszahlung() { Konto k = new Konto("Müller", 0); - Konto k2 = new Konto("Mayer", 1); + Konto k2 = new Konto("Beck", 1); - assertEquals("Mayer", k2.getInhaber()); + assertEquals("Beck", k2.getInhaber()); assertNotEquals(k.getKontonummer(), k2.getKontonummer()); - - k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); + //(betrag, zweck, art, auftraggeber) + k2.einzahlen(100, "TestZahlung", "Einzahlung", "Beck"); assertEquals(100, k2.getKontostand()); - assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); + assertTrue(k2.auszahlen(50, "Testauszahlung", "Auszahlung", "Beck")); assertEquals(50, k2.getKontostand()); - assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); + assertFalse(k2.auszahlen(500, "Testeinzahlung", "Auszahlung", "Beck")); assertEquals(50, k2.getKontostand()); +// //DispoTest +// long gueltigDispo = -500000000; //sollten auf 5000 euro gesetzt sein +// k2.auszahlen(gueltigDispo, "Dispo", "Auszahlung", "Beck"); +// assertEquals(gueltigDispo, k2.getKontostand()); + + //SaldoTest + assertEquals(0,k2.getSaldo()); //von private ist saldo auf null + assertEquals(50,k2.setSaldo()); //saldo muss alle +beträge und -beträge zsm. zählen + + + } - + + } 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..ffafe71 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 @@ -24,5 +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 5d72301..6788eda 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 @@ -81,4 +81,11 @@ public class Banksystem { return konto.getKontostand(); } + public long saldostand(int kontonummer) { + Konto konto = bank.findeKonto(kontonummer); + + return konto.setSaldo(); + + } + } 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..1e2467e 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 @@ -3,8 +3,12 @@ package de.hs_mannheim.informatik.bank.facade; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.*; + import org.junit.jupiter.api.Test; +import de.hs_mannheim.informatik.bank.domain.Konto; + class SystemTest { @Test @@ -15,5 +19,44 @@ class SystemTest { assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); } + @Test + void testgeldEinzahlen() { + Konto k = new Konto("Müller", 0); + + long gueltigMin = 0; + k.einzahlen(gueltigMin,"Test", "Einzahlung", "JUnit"); + assertEquals(gueltigMin,k.getKontostand()); + + long gueltigMax = Long.MAX_VALUE; + k.einzahlen(gueltigMax, "Test", "Einzahlung", "JUnit"); + assertEquals(gueltigMax, k.getKontostand()); + + long ungueltigMin = -1; + k.einzahlen(ungueltigMin, "Test", "Einzahlung", "JUnit"); + assertNotEquals(ungueltigMin, k.getKontostand()); + //System.out.println(k1.getKontostand()); + + + long ungueltigMax = Long.MAX_VALUE+1; + System.out.println(ungueltigMax); + k.einzahlen(gueltigMax,"Test", "Einzahlung", "JUnit"); + assertNotEquals(ungueltigMax, k.getKontostand()); + + + } +// @Test +// void testgeldAuszahlen() throws Exception { +// Konto k2 = new Konto("Beck",2); +// Banksystem bs = new Banksystem("Spaßkasse"); +// bs.geldAuszahlen(1000, -4000); +// assertEquals(1000,-4000,bs.geldAuszahlen(1000, -4000)); +// long gueltigMin = -50000000; +// k2.auszahlen(gueltigMin,"Test", "Einzahlung", "Beck"); +// assertEquals(gueltigMin, k2.getKontostand()); +// +// } + + + } + -} 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..03581e2 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 -> Saldo anzeigen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -45,6 +46,7 @@ public class UI { case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; case 6: überweisungBeauftragen(); break; + case 7: saldo();break; case 9: break mainloop; } @@ -58,6 +60,15 @@ public class UI { } // hauptmenü + private void saldo() { + System.out.println("Kontonummer angeben"); + int kontonummer = Integer.parseInt(sc.nextLine()); + + long aktuellersaldo= bs.saldostand(kontonummer); + + System.out.println("Ihr Saldo beträgt: "+ aktuellersaldo); + } + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) {