From 626a1cefcc6cdc87e7fdaf4b626b1739957900d4 Mon Sep 17 00:00:00 2001 From: Peter Gapon Date: Mon, 24 Oct 2022 21:22:09 +0200 Subject: [PATCH] Kontobewegungen als Textdokument abspeicherbar --- Bank-Beispiel/object.ser | Bin 366 -> 334 bytes .../informatik/bank/domain/Girokonto.java | 2 +- .../informatik/bank/facade/Banksystem.java | 12 ++-- .../bank/facade/BanksystemTest.java | 53 +++++++++++++----- .../de/hs_mannheim/informatik/bank/ui/UI.java | 21 ++++++- .../persistence/PersistenzSerialisiert.java | 15 ++++- 6 files changed, 80 insertions(+), 23 deletions(-) diff --git a/Bank-Beispiel/object.ser b/Bank-Beispiel/object.ser index 70c52894c85c48076176bb8f2c256b8fbf285c81..61b5d9ad3cc9958928c1c7793103825d7f327804 100644 GIT binary patch delta 151 zcmaFIbdG6)5jSHw3j+fKV{s9K{zO|fQTNQE{OtU^l6=Rcb%yhNr`t0zFjP#m(&PTO z^YEMtla}0JVql$EY~;=lR+N-lo|;~om!6te!XWCCl~|UjUs{rxqwiQ$lvwGLSzKc6 p!@!yYq*DtS>KIrn3K$reUjVHGgAxX&^vMQ{;=EuU*cl8J6#%TJEK~ph delta 244 zcmX@d^p0tQ5jS%=3j+fKb8!)a_C#AX0q^|0l6;^52rx1+uuR-&RL`1|SzMA@!XWCC zl~|UjUs{rxqwiQ$lvwEl6t}J@0BU~$(ZP^X!oZYXT3pCb2QdL`IAaNeflFdZX|9z* zaAJvqe{zX}p{atQxs{=zm9d3_vukjOf{}rdk%CidNl{|Dm4cyxK?T?hCZN$Ty`W|@ d0L?B!n9Tq-n*pKl6+#_rdMOaVodHu?0RVhqH2?qr 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 1af8dfd..fc73dcb 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 @@ -10,7 +10,7 @@ public class Girokonto extends Konto implements Serializable { super(inhaber); } - public boolean überweise(Girokonto ziel, long betrag, String zweck) throws BankException { + public boolean überweiseGirokonto(Girokonto ziel, long betrag, String zweck) throws BankException { if (super.getStand() - betrag >= 0) { this.auszahlenKonto(betrag, zweck, "Überweisungsausgang", super.getInhaber()); ziel.einzahlenKonto(betrag, zweck, "Überweisungseingang", super.getInhaber()); 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 c9d4a31..6a68f97 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 @@ -17,13 +17,15 @@ public class Banksystem { this.bank = new Bank(bankname); } - public int kontoAnlegen(String name, int auswahl) { + public int kontoAnlegen(String name, int auswahl) throws BankException { Konto k; if (auswahl == 1) { k = new Konto(name); - } else { + } else if(auswahl == 2){ k = new Girokonto(name); + } else { + throw new BankException("Konto nicht angelegt"); } bank.addKonto(k); @@ -54,6 +56,8 @@ public class Banksystem { } public void einzahlenBanksystem(int kNummer, long betrag) throws BankException { +// Konto konto = getKontoBanksystem(kNummer); +// konto.einzahlenKonto(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); bank.getKonten().get(kNummer).einzahlenKonto(betrag, "Einzahlung am Schalter", "Einzahlung", bank.getKonten().get(kNummer).getInhaber()); } @@ -99,12 +103,12 @@ public class Banksystem { return konto.getKontobewgungen(); } - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws BankException { + public boolean überweisungBeauftragenBanksystem(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws BankException { Konto start = getKontoBanksystem(startkonto); Konto ziel = getKontoBanksystem(zielkonto); if (start instanceof Girokonto && ziel instanceof Girokonto) { - return ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); + return ((Girokonto)start).überweiseGirokonto((Girokonto)ziel, betrag, verwendungszweck); } return false; diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java index b939eed..7b192a1 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java @@ -6,6 +6,7 @@ import org.junit.Before; import org.junit.jupiter.api.Test; import de.hs_mannheim.informatik.bank.domain.Konto; +import exception.BankException; class BanksystemTest { @@ -23,24 +24,31 @@ class BanksystemTest { } @Test - public void kontoAnlegenTest() { + public void kontoAnlegenTest() throws BankException { bs = new Banksystem("Bank"); - assertEquals(1002, bs.kontoAnlegen("Anna")); - assertNotEquals(1000, bs.kontoAnlegen("Paul")); - assertEquals(1004, bs.kontoAnlegen("Max")); + assertEquals(1003, bs.kontoAnlegen("Anna", 1)); + assertNotEquals(1000, bs.kontoAnlegen("Paul", 1)); + assertEquals(1005, bs.kontoAnlegen("Max", 1)); } +// @Test (expected = RuntimeException.class) +// public void kontoAnlegenTest2() { +// bs = new Banksystem("Bank"); +// +// bs.kontoAnlegen("Anna", 3); +// } + @Test - public void getKontenlisteTest() { + public void getKontenlisteTest() throws BankException { bs = new Banksystem("Bank"); - bs.kontoAnlegen("Anna"); - bs.kontoAnlegen("Paul"); + bs.kontoAnlegen("Anna", 1); + bs.kontoAnlegen("Paul", 1); String[] arr = bs.getKontenliste(); - assertEquals("Konto [nummer=1000, inhaber=Anna, stand=0]", arr[0]); + assertEquals("Konto [nummer=1001, inhaber=Anna, stand=0]", arr[0]); } @@ -52,14 +60,33 @@ class BanksystemTest { } @Test - public void einzahlenTest() { + public void einzahlenTest() throws BankException { bs = new Banksystem("Bank"); - bs.kontoAnlegen("Anna"); - bs.einzahlenBanksystem(1005, 100); - + bs.kontoAnlegen("Anna", 1); + bs.einzahlenBanksystem(1006, 100); + System.out.println("Test"); String[] arr = bs.getKontenliste(); - assertEquals("Konto [nummer=1005, inhaber=Anna, stand=100]", arr[0]); + assertEquals("Konto [nummer=1006, inhaber=Anna, stand=100]", arr[0]); + } + + @Test + public void erstelleKontoauszugTest() throws BankException { + bs = new Banksystem("Bank"); + + bs.kontoAnlegen("Katrin", 1); + bs.einzahlenBanksystem(1000, 100); + String[] test = bs.erstelleKontoauszug(1000); + + for (int i = 0; i < test.length; i++) { + System.out.println(test[i]); + } + assertEquals(1, test.length); + assertEquals("Kontobewegung [betrag=100, date=Sun", test[0].substring(0, 35)); + assertTrue(test[0].contains("betrag=100")); + assertTrue(test[0].contains("betreff=Einzahlung")); + assertTrue(test[0].contains("art=Einzahlung")); + assertTrue(test[0].contains("auftraggeber=Katrin")); } } 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 57a30ad..a44b5f8 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 @@ -34,11 +34,18 @@ public class UI { System.out.println("8 -> Konten laden"); System.out.println("9 -> Kontoauszug drucken"); System.out.println("10 -> Überweisung beauftragen"); + System.out.println("11 -> Überweisung als Textdatei speichern"); System.out.println("99 -> Beenden"); System.out.println(); System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); + int input = 0; + try { + input = Integer.parseInt(sc.nextLine()); + } catch (NumberFormatException e) { +// e.printStackTrace(); + System.err.print("Nur Zahlen eingeben:"); + } System.out.println(); switch(input) { @@ -52,6 +59,7 @@ public class UI { case 8: bs.kontenLaden(); break; case 9: kontoauszugDrucken(); break; case 10:überweisungBeauftragen(); break; + case 11:kontoauszugSpeichernTxt(); break; case 99: break mainloop; } } @@ -87,7 +95,7 @@ public class UI { } - private void kontoAnlegen() throws IOException { + private void kontoAnlegen() throws BankException { System.out.println("Bitte den Namen des Kontoinhabers angeben: "); String name = sc.nextLine(); @@ -201,9 +209,16 @@ public class UI { String verwendungszweck = sc.nextLine(); // boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); - boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag), verwendungszweck); + boolean erfolgreich = bs.überweisungBeauftragenBanksystem(startkonto, zielkonto, (long)(betrag), verwendungszweck); System.out.println("Überweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } + + private void kontoauszugSpeichernTxt() throws IOException { + System.out.print("Bitte die Kontonummer eingeben die gespeichert werden soll: "); + int kNummer = Integer.parseInt(sc.nextLine()); + + PersistenzSerialisiert.schreibeDatei(bs.erstelleKontoauszug(kNummer)); + } } diff --git a/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java b/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java index 53a8c73..8a8a822 100644 --- a/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java +++ b/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java @@ -1,13 +1,13 @@ package persistence; +import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; -import java.util.List; - import de.hs_mannheim.informatik.bank.domain.Konto; public class PersistenzSerialisiert { @@ -34,4 +34,15 @@ public class PersistenzSerialisiert { return liste; } + public static void schreibeDatei(String[] kontobewegung) throws IOException { + + FileWriter writer = new FileWriter(new File("C:\\Users\\Lenovo\\Desktop\\Kontobewegung.txt")); + + for (int i = 0; i < kontobewegung.length; i++) { + writer.write(kontobewegung[i] + "\n"); + } + + writer.close(); + } + } \ No newline at end of file