newest stand missing only girokonto

main
WummerMIB 2022-10-18 14:34:55 +02:00
parent 6e00075e9f
commit 8cb1191b25
9 changed files with 96 additions and 106 deletions

Binary file not shown.

View File

@ -18,13 +18,14 @@ import java.util.Map.Entry;
import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class Bank implements Serializable { public class Bank implements Serializable {
/** /**
* *
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Konto k; private Konto k;
// private Banksystem bsy; private String amEndeDerAuzügeEifügen = ",";
private String name; private String name;
private HashMap<Integer, Konto> konten = new HashMap<>(); private HashMap<Integer, Konto> konten = new HashMap<>();
@ -44,47 +45,16 @@ public class Bank implements Serializable {
return konten.values(); return konten.values();
} }
public long geldWirdInDerBankAngelegt(int kontoNummer, long geldBetrag) {
k = getKonto(kontoNummer);
k.setStand(k.getStand() + geldBetrag);
k.setKontoAktivietetenString(k.getKontoAktivietetenString() + getDatum() + " " + geldBetrag + ",");
return k.getStand();
}
public long kontoStandFinden(int kontNumToGetKontoStand) { public long kontoStandFinden(int kontNumToGetKontoStand) {
k = getKonto(kontNumToGetKontoStand); k = getKonto(kontNumToGetKontoStand);
return k.getStand(); return k.getStand();
} }
public String geldAbhebenBank(int kontoNummer, long geldAbgehoben) {
k = getKonto(kontoNummer);
if (k.getStand() < geldAbgehoben) { public Konto getKonto(int Kontonummer) {
return "Sie haben zu wenig Geld auf ihrem Konto";
}
k.setStand(k.getStand() - geldAbgehoben);
k.setKontoAktivietetenString(k.getKontoAktivietetenString() + getDatum() + " -" + geldAbgehoben + ",");
return "Sie haben" + geldAbgehoben + "Euro abgehoben";
}
private Konto getKonto(int Kontonummer) {
k = konten.get(Kontonummer); k = konten.get(Kontonummer);
return k; return k;
} }
private String getDatum() {
String pattern = "MM/dd/yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern);
Date nowDate = Calendar.getInstance().getTime();
String nowString = df.format(nowDate);
return nowString;
}
public String[] getAuszüge(int kontoNummer) {
k = getKonto(kontoNummer);
String[] auzügeStrings = k.getKontoAktivietetenString().split(",");
return auzügeStrings;
}
} }

View File

@ -0,0 +1,9 @@
package de.hs_mannheim.informatik.bank.domain;
public class Girokonto extends Konto{
public Girokonto(String inhaber) {
super(inhaber);
}
}

View File

@ -1,6 +1,12 @@
package de.hs_mannheim.informatik.bank.domain; package de.hs_mannheim.informatik.bank.domain;
import java.io.Serializable; import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
public class Konto implements Serializable { public class Konto implements Serializable {
@ -11,24 +17,16 @@ public class Konto implements Serializable {
private static int kontozähler = 0; private static int kontozähler = 0;
private int nummer; private int nummer;
private long stand = 0; private long stand = 0;
private String inhaber; private String inhaber;
private String kontoAktivietetenString; private ArrayList<Kontobewegungen> kontobewegungen;
public Konto(String inhaber) { public Konto(String inhaber) {
nummer = 1000 + kontozähler++; nummer = 1000 + kontozähler++;
this.inhaber = inhaber; this.inhaber = inhaber;
getStand(); getStand();
kontoAktivietetenString = ""; this.kontobewegungen = new ArrayList<>();
}
public String getKontoAktivietetenString() {
return kontoAktivietetenString;
}
public void setKontoAktivietetenString(String kontoAktivietetenString) {
this.kontoAktivietetenString = kontoAktivietetenString;
} }
public int getKontonummer() { public int getKontonummer() {
@ -43,11 +41,32 @@ public class Konto implements Serializable {
this.stand = stand; this.stand = stand;
} }
public void geldEinzahlen(long einzahlen) {
this.stand += einzahlen;
kontobewegungen.add(new Kontobewegungen(einzahlen, "Einzahlung am Schalter", "Einzahlung", inhaber));
}
public boolean geldAbheben(long auszahlen) {
if(this.stand < auszahlen) {
return false;
}
kontobewegungen.add(new Kontobewegungen(auszahlen, "Einzahlung am Schalter", "Auszahlen", inhaber));
this.stand = this.stand -auszahlen;
return true;
}
public String[] getKontoBewegungen() {
String[] auflisten = new String[kontobewegungen.size()];
int i = 0;
for(Kontobewegungen kb : kontobewegungen) {
auflisten[i++] = kb.toString();
}
return auflisten;
}
@Override @Override
public String toString() { public String toString() {
return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", Kontostand=" + stand + "]"; return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", Kontostand=" + stand + "]";
} }
} }

View File

@ -0,0 +1,31 @@
package de.hs_mannheim.informatik.bank.domain;
import java.util.Date;
import javax.management.loading.PrivateClassLoader;
public class Kontobewegungen {
private long betrag;
private Date datum;
private String betreff;
private String art;
private String auftragGeber;
public Kontobewegungen(long betrag, String betreff, String art, String auftragGeber) {
super();
this.betrag = betrag;
this.betreff = betreff;
this.art = art;
this.auftragGeber = auftragGeber;
this.datum = new Date();
}
@Override
public String toString() {
return "Kontobewegungen [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art
+ ", auftragGeber=" + auftragGeber + "]";
}
}

View File

@ -1,37 +0,0 @@
package de.hs_mannheim.informatik.bank.facade;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test;
import de.hs_mannheim.informatik.bank.domain.Bank;
import de.hs_mannheim.informatik.bank.domain.Konto;
public class BankSystemTest {
@Test
public void testGeldEinzahlen(){
Bank bs = new Bank("Sparkasse");
Konto k = new Konto("Bob");
Konto k1 = new Konto("John");
bs.addKonto(k);
bs.addKonto(k1);
long einzahlenTest = bs.geldWirdInDerBankAngelegt(1000, 200);
long k1EinzahlenTest = bs.geldWirdInDerBankAngelegt(1001, 100);
long testSumme = 200;
long testSummeZwei = 100;
assertEquals(einzahlenTest, testSumme);
assertEquals(k1EinzahlenTest, testSummeZwei);
}
@Test
public void testAbhebenZuWenigGeld() {
Bank bs = new Bank("Volksbank");
Konto k = new Konto("Müller");
bs.addKonto(k);
String test = "Sie haben zu wenig Geld auf ihrem Konto";
assertEquals(bs.geldAbhebenBank(1000, 300), test);
}
}

View File

@ -16,6 +16,7 @@ import persistence.Persistenc;
public class Banksystem { public class Banksystem {
private Bank bank; private Bank bank;
private Konto konto;
private Persistenc per = new Persistenc(); private Persistenc per = new Persistenc();
public Banksystem(String bankname) { public Banksystem(String bankname) {
this.bank = new Bank(bankname); this.bank = new Bank(bankname);
@ -45,8 +46,9 @@ public class Banksystem {
} }
public long geldEinzahlen(int kontoNummer, long geldBetrag) { public long geldEinzahlen(int kontoNummer, long geldBetrag) {
long geldEinbezahlt = bank.geldWirdInDerBankAngelegt(kontoNummer,geldBetrag); Konto konto = bank.getKonto(kontoNummer);
return geldEinbezahlt; konto.geldEinzahlen(geldBetrag);
return konto.getStand();
} }
public long sucheNachKontoStand(int kontNumToGetKontoStand) { public long sucheNachKontoStand(int kontNumToGetKontoStand) {
@ -54,15 +56,12 @@ public class Banksystem {
return aktuellerKontostand; return aktuellerKontostand;
} }
public String geldAbheben(int kontoNummer, long geldAbheben) { public boolean geldAbheben(int kontoNummer, long geldAbheben) {
String geldAbgehoben = bank.geldAbhebenBank(kontoNummer, geldAbheben); Konto konto = bank.getKonto(kontoNummer);
return geldAbgehoben; return konto.geldAbheben(geldAbheben);
} }
public String[] getKontoAuszüge(int kontoNummer) {
String[] auszügeStrings = bank.getAuszüge(kontoNummer);
return auszügeStrings;
}
public void saveKonten() throws Exception { public void saveKonten() throws Exception {
per.saveKontos(bank); per.saveKontos(bank);
@ -73,5 +72,10 @@ public class Banksystem {
bank = per.load(); bank = per.load();
} }
public String[] erstelleKontoAuszug(int kontoNummer) {
Konto konto = bank.getKonto(kontoNummer);
return konto.getKontoBewegungen();
}
} }

View File

@ -42,7 +42,7 @@ public class UI {
case 3: geldbetragEinzahlen(); break; case 3: geldbetragEinzahlen(); break;
case 4: kontoAbfragen(); break; case 4: kontoAbfragen(); break;
case 5: geldAbheben(); break; case 5: geldAbheben(); break;
case 6: kontoauszügeAnsugeben(); break; case 6: kontoAuszügeAnsgeben(); break;
case 7: kontenLaden(); break; case 7: kontenLaden(); break;
case 9: break mainloop; case 9: break mainloop;
} }
@ -62,16 +62,12 @@ public class UI {
} }
private void kontoauszügeAnsugeben() { private void kontoAuszügeAnsgeben() {
System.out.println("Geben Sie ihre Kontonummer ein"); System.out.println("Geben Sie ihre Kontonummer ein");
int kontoNummer = Integer.parseInt(sc.nextLine()); int kontoNummer = Integer.parseInt(sc.nextLine());
String[] auszüge = bs.getKontoAuszüge(kontoNummer); String[] kontobewegungStrings= bs.erstelleKontoAuszug(kontoNummer);
if (auszüge.length>0) { for(String kbString : kontobewegungStrings) {
for(String s : auszüge) { System.out.println(kbString);
System.out.println(s);
}
}else {
System.out.println("Es sind noch keine Aktivitäten vorhanden");
} }
} }
@ -80,7 +76,7 @@ public class UI {
int kontoNummer = Integer.parseInt(sc.nextLine()); int kontoNummer = Integer.parseInt(sc.nextLine());
System.out.println("Bitte geben sie denn Betrag ein denn sie abheben wollen"); System.out.println("Bitte geben sie denn Betrag ein denn sie abheben wollen");
long geldAbheben = Long.parseLong(sc.nextLine()); long geldAbheben = Long.parseLong(sc.nextLine());
String abgehobenString = bs.geldAbheben(kontoNummer,geldAbheben); boolean abgehobenString = bs.geldAbheben(kontoNummer,geldAbheben);
System.out.println(abgehobenString); System.out.println(abgehobenString);
} }
@ -97,7 +93,7 @@ public class UI {
System.out.println("Bitte geben sie denn Betrag ein denn sie einzahlen möschten"); System.out.println("Bitte geben sie denn Betrag ein denn sie einzahlen möschten");
long geldBetrag = Long.parseLong(sc.nextLine()); long geldBetrag = Long.parseLong(sc.nextLine());
long neuerGeldBetrag = bs.geldEinzahlen(kontoNummer,geldBetrag); long neuerGeldBetrag = bs.geldEinzahlen(kontoNummer,geldBetrag);
System.out.println("Ihr neuer Betrag ist: " + neuerGeldBetrag); System.out.println("Ihr neuer Betrag ist: " + (double)neuerGeldBetrag/100);
} }
private void kontenAnzeigen() { private void kontenAnzeigen() {

View File

@ -13,7 +13,6 @@ public class Persistenc {
public void saveKontos(Bank bank) throws Exception { public void saveKontos(Bank bank) throws Exception {
// File fileKonton = new File("Konten.txt");
FileOutputStream fOS; FileOutputStream fOS;
fOS = new FileOutputStream("Konten.ser"); fOS = new FileOutputStream("Konten.ser");
ObjectOutputStream oos = new ObjectOutputStream(fOS); ObjectOutputStream oos = new ObjectOutputStream(fOS);
@ -24,7 +23,6 @@ public class Persistenc {
} }
public Bank load() throws Exception { public Bank load() throws Exception {
// File toRead = new File("Konten.ser");
FileInputStream fis = new FileInputStream("Konten.ser"); FileInputStream fis = new FileInputStream("Konten.ser");
ObjectInputStream ois = new ObjectInputStream(fis); ObjectInputStream ois = new ObjectInputStream(fis);
Bank bank = (Bank) ois.readObject(); Bank bank = (Bank) ois.readObject();