diff --git a/Konten.ser b/Konten.ser index b418465..b23b3cb 100644 Binary files a/Konten.ser and b/Konten.ser differ diff --git a/src/de/hs_mannheim/informatik/bank/domain/Bank.java b/src/de/hs_mannheim/informatik/bank/domain/Bank.java index 0abd3a8..fc07c8d 100644 --- a/src/de/hs_mannheim/informatik/bank/domain/Bank.java +++ b/src/de/hs_mannheim/informatik/bank/domain/Bank.java @@ -18,13 +18,14 @@ import java.util.Map.Entry; import de.hs_mannheim.informatik.bank.facade.Banksystem; + public class Bank implements Serializable { /** * */ private static final long serialVersionUID = 1L; private Konto k; -// private Banksystem bsy; + private String amEndeDerAuzügeEifügen = ","; private String name; private HashMap konten = new HashMap<>(); @@ -44,47 +45,16 @@ public class Bank implements Serializable { 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) { k = getKonto(kontNumToGetKontoStand); return k.getStand(); } - public String geldAbhebenBank(int kontoNummer, long geldAbgehoben) { - k = getKonto(kontoNummer); - if (k.getStand() < geldAbgehoben) { - 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) { + public Konto getKonto(int Kontonummer) { k = konten.get(Kontonummer); 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; - } - } diff --git a/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java b/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java new file mode 100644 index 0000000..cc49d9c --- /dev/null +++ b/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java @@ -0,0 +1,9 @@ +package de.hs_mannheim.informatik.bank.domain; + +public class Girokonto extends Konto{ + + public Girokonto(String inhaber) { + super(inhaber); + } + +} diff --git a/src/de/hs_mannheim/informatik/bank/domain/Konto.java b/src/de/hs_mannheim/informatik/bank/domain/Konto.java index 950ad92..f3801bf 100644 --- a/src/de/hs_mannheim/informatik/bank/domain/Konto.java +++ b/src/de/hs_mannheim/informatik/bank/domain/Konto.java @@ -1,6 +1,12 @@ package de.hs_mannheim.informatik.bank.domain; 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 { @@ -11,24 +17,16 @@ public class Konto implements Serializable { private static int kontozähler = 0; + private int nummer; private long stand = 0; private String inhaber; - private String kontoAktivietetenString; - + private ArrayList kontobewegungen; public Konto(String inhaber) { nummer = 1000 + kontozähler++; this.inhaber = inhaber; getStand(); - kontoAktivietetenString = ""; - } - - public String getKontoAktivietetenString() { - return kontoAktivietetenString; - } - - public void setKontoAktivietetenString(String kontoAktivietetenString) { - this.kontoAktivietetenString = kontoAktivietetenString; + this.kontobewegungen = new ArrayList<>(); } public int getKontonummer() { @@ -42,12 +40,33 @@ public class Konto implements Serializable { public void setStand(long 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 public String toString() { return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", Kontostand=" + stand + "]"; } - - - } diff --git a/src/de/hs_mannheim/informatik/bank/domain/Kontobewegungen.java b/src/de/hs_mannheim/informatik/bank/domain/Kontobewegungen.java new file mode 100644 index 0000000..73535d9 --- /dev/null +++ b/src/de/hs_mannheim/informatik/bank/domain/Kontobewegungen.java @@ -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 + "]"; + } + + +} diff --git a/src/de/hs_mannheim/informatik/bank/facade/BankSystemTest.java b/src/de/hs_mannheim/informatik/bank/facade/BankSystemTest.java deleted file mode 100644 index 62a4b1b..0000000 --- a/src/de/hs_mannheim/informatik/bank/facade/BankSystemTest.java +++ /dev/null @@ -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); - } -} diff --git a/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java b/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java index 8bd83bb..deea1b6 100644 --- a/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java +++ b/src/de/hs_mannheim/informatik/bank/facade/Banksystem.java @@ -16,6 +16,7 @@ import persistence.Persistenc; public class Banksystem { private Bank bank; + private Konto konto; private Persistenc per = new Persistenc(); public Banksystem(String bankname) { this.bank = new Bank(bankname); @@ -45,8 +46,9 @@ public class Banksystem { } public long geldEinzahlen(int kontoNummer, long geldBetrag) { - long geldEinbezahlt = bank.geldWirdInDerBankAngelegt(kontoNummer,geldBetrag); - return geldEinbezahlt; + Konto konto = bank.getKonto(kontoNummer); + konto.geldEinzahlen(geldBetrag); + return konto.getStand(); } public long sucheNachKontoStand(int kontNumToGetKontoStand) { @@ -54,15 +56,12 @@ public class Banksystem { return aktuellerKontostand; } - public String geldAbheben(int kontoNummer, long geldAbheben) { - String geldAbgehoben = bank.geldAbhebenBank(kontoNummer, geldAbheben); - return geldAbgehoben; + public boolean geldAbheben(int kontoNummer, long geldAbheben) { + Konto konto = bank.getKonto(kontoNummer); + 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 { per.saveKontos(bank); @@ -72,6 +71,11 @@ public class Banksystem { public void loadKonten() throws Exception { bank = per.load(); } + + public String[] erstelleKontoAuszug(int kontoNummer) { + Konto konto = bank.getKonto(kontoNummer); + return konto.getKontoBewegungen(); + } } diff --git a/src/de/hs_mannheim/informatik/bank/ui/UI.java b/src/de/hs_mannheim/informatik/bank/ui/UI.java index 7f0b13b..1a85a26 100644 --- a/src/de/hs_mannheim/informatik/bank/ui/UI.java +++ b/src/de/hs_mannheim/informatik/bank/ui/UI.java @@ -42,7 +42,7 @@ public class UI { case 3: geldbetragEinzahlen(); break; case 4: kontoAbfragen(); break; case 5: geldAbheben(); break; - case 6: kontoauszügeAnsugeben(); break; + case 6: kontoAuszügeAnsgeben(); break; case 7: kontenLaden(); break; 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"); int kontoNummer = Integer.parseInt(sc.nextLine()); - String[] auszüge = bs.getKontoAuszüge(kontoNummer); - if (auszüge.length>0) { - for(String s : auszüge) { - System.out.println(s); - } - }else { - System.out.println("Es sind noch keine Aktivitäten vorhanden"); + String[] kontobewegungStrings= bs.erstelleKontoAuszug(kontoNummer); + for(String kbString : kontobewegungStrings) { + System.out.println(kbString); } } @@ -80,7 +76,7 @@ public class UI { int kontoNummer = Integer.parseInt(sc.nextLine()); System.out.println("Bitte geben sie denn Betrag ein denn sie abheben wollen"); long geldAbheben = Long.parseLong(sc.nextLine()); - String abgehobenString = bs.geldAbheben(kontoNummer,geldAbheben); + boolean abgehobenString = bs.geldAbheben(kontoNummer,geldAbheben); 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"); long geldBetrag = Long.parseLong(sc.nextLine()); 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() { diff --git a/src/persistence/Persistenc.java b/src/persistence/Persistenc.java index baa0683..a2d4379 100644 --- a/src/persistence/Persistenc.java +++ b/src/persistence/Persistenc.java @@ -13,7 +13,6 @@ public class Persistenc { public void saveKontos(Bank bank) throws Exception { - // File fileKonton = new File("Konten.txt"); FileOutputStream fOS; fOS = new FileOutputStream("Konten.ser"); ObjectOutputStream oos = new ObjectOutputStream(fOS); @@ -24,7 +23,6 @@ public class Persistenc { } public Bank load() throws Exception { - // File toRead = new File("Konten.ser"); FileInputStream fis = new FileInputStream("Konten.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Bank bank = (Bank) ois.readObject();