Kontobewegungen als Textdokument abspeicherbar

main
Peter Gapon 2022-10-24 21:22:09 +02:00
parent e39c9bd8ae
commit 626a1cefcc
6 changed files with 80 additions and 23 deletions

Binary file not shown.

View File

@ -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());

View File

@ -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;

View File

@ -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"));
}
}

View File

@ -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));
}
}

View File

@ -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();
}
}