diff --git a/Bank-Beispiel/bank.ser b/Bank-Beispiel/bank.ser new file mode 100644 index 0000000..abe9e31 Binary files /dev/null and b/Bank-Beispiel/bank.ser differ diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java index b075558..16a794f 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -5,7 +5,7 @@ import de.hs_mannheim.informatik.bank.ui.UI; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws Exception { Banksystem bs = new Banksystem("Spaßkasse Mannheim"); UI ui = new UI(bs); } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java index c1e5650..04a3008 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java @@ -30,7 +30,7 @@ public class Bank implements Serializable { public void einzahlen(long betrag, int kontonummer) { if (konten.containsKey(kontonummer)) { - konten.get(kontonummer).einzahlen(betrag); + konten.get(kontonummer).einzahlen(betrag, "eingezahlt"); System.out.println("Betrag " + betrag + " auf Konto " + kontonummer + " eingezahlt"); System.out.println("Neuer Kontostand: " + konten.get(kontonummer).getKontostand()); } else @@ -39,7 +39,7 @@ public class Bank implements Serializable { public void auszahlen(long betrag, int kontonummer) { if (konten.containsKey(kontonummer)) { - konten.get(kontonummer).auszahlen(betrag); + konten.get(kontonummer).auszahlen(betrag, "ausgezahlt"); System.out.println("Betrag " + betrag + " auf Konto " + kontonummer + " eingezahlt"); } else System.out.println("Konto nicht vorhanden"); 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 7937363..233b108 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 @@ -4,10 +4,15 @@ public class Girokonto extends Konto { public Girokonto(String inhaber) { super(inhaber); - + } - public boolean überweisen(long betrag, Girokonto ziel) { - + public boolean überweisen(long betrag, Girokonto start, Girokonto ziel, String verwendungszweck) { + if (betrag >= start.getKontostand()) { + start.einzahlen(betrag, "gesendet an " + ziel.getKontonummer()); + ziel.einzahlen(betrag, "empfangen von " + start.getKontonummer()); + return true; + } else + return false; } } 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 8f6af77..0957421 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 @@ -1,8 +1,9 @@ package de.hs_mannheim.informatik.bank.domain; +import java.io.Serializable; import java.util.ArrayList; -public class Konto { +public class Konto implements Serializable { private static int kontozähler = 0; private int nummer; @@ -14,20 +15,28 @@ public class Konto { nummer = 1000 + kontozähler++; this.inhaber = inhaber; } + + public static void ladeKontoZähler(int kontoZähler) { + kontozähler = kontoZähler; + } public int getKontonummer() { return nummer; } - - public void einzahlen(long betrag) { - stand += betrag; - auszüge.add(new Kontobewegung(betrag, inhaber, "eingezahlt")); + + public static int getKontoZähler() { + return kontozähler; } - public void auszahlen(long betrag) { + public void einzahlen(long betrag, String verwendungszweck) { + stand += betrag; + auszüge.add(new Kontobewegung(betrag, inhaber, verwendungszweck)); + } + + public void auszahlen(long betrag, String verwendungszweck) { if (betrag <= stand) { stand -= betrag; - auszüge.add(new Kontobewegung(betrag, inhaber, "abgehoben")); + auszüge.add(new Kontobewegung(betrag, inhaber, verwendungszweck)); } else System.out.println("Kontostand nicht aureichend"); } 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 e7371d0..2a0c463 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 @@ -1,8 +1,9 @@ package de.hs_mannheim.informatik.bank.domain; +import java.io.Serializable; import java.time.LocalDateTime; -public class Kontobewegung { +public class Kontobewegung implements Serializable { private long betrag; private String inhaber; private LocalDateTime datum; 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 ffd79a5..5059f50 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 @@ -5,12 +5,17 @@ import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; +import de.mannheim.informatik.bank.perstance.Datenbank; public class Banksystem { private Bank bank; - public Banksystem(String bankname) { - this.bank = new Bank(bankname); + public Banksystem(String bankname) throws Exception { + if (Datenbank.sindDateGespeicher()) { + this.bank = (Bank) Datenbank.laden(); + Konto.ladeKontoZähler(Datenbank.ladeKontoZähler()); + } else + this.bank = new Bank(bankname); } public int kontoAnlegen(String name, int auswahl) { @@ -19,7 +24,7 @@ public class Banksystem { if (auswahl == 1) k = new Konto(name); else - k = new Girokonto(name); + k = new Girokonto(name); // Hier eigentlich Girokonto bank.addKonto(k); @@ -58,13 +63,19 @@ public class Banksystem { return bank.getName(); } - public boolean überweisen(int kontonummer, int empfänger, long betrag, String verwendungszweck) { - Konto start = bank.findeKonto(kontonummer); + public boolean überweisen(int sender, int empfänger, long betrag, String verwendungszweck) { + Konto start = bank.findeKonto(sender); Konto ziel = bank.findeKonto(empfänger); if(start instanceof Girokonto && ziel instanceof Girokonto) { - Girokonto.überweisen(betrag, ziel); + Girokonto.überweisen(betrag, (Girokonto)start, (Girokonto)ziel, verwendungszweck); } return false; } + + public void speichern() throws Exception { + Datenbank.speichern(bank); + Datenbank.speicherZähler(Konto.getKontoZähler()); + } + } 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 6e2798a..57e5f74 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 @@ -2,15 +2,18 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.Scanner; +import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.facade.Banksystem; +import de.mannheim.informatik.bank.perstance.Datenbank; public class UI { private Banksystem bs; Scanner sc = new Scanner(System.in); - public UI(Banksystem bs) { + public UI(Banksystem bs) throws Exception { this.bs = bs; hauptmenu(); + bs.speichern(); } private void hauptmenu() { @@ -110,7 +113,7 @@ public class UI { int kontonummer; long betrag; - try { + try { System.out.print("Kontonummer eingeben: "); kontonummer = Integer.parseInt(sc.nextLine()); System.out.print("Betrag eingeben: "); @@ -157,4 +160,4 @@ public class UI { System.out.println("Fehlerhafte Eingabe"); } } -} +} \ No newline at end of file diff --git a/Bank-Beispiel/src/de/mannheim/informatik/bank/perstance/Datenbank.java b/Bank-Beispiel/src/de/mannheim/informatik/bank/perstance/Datenbank.java index 86e1098..7d4c007 100644 --- a/Bank-Beispiel/src/de/mannheim/informatik/bank/perstance/Datenbank.java +++ b/Bank-Beispiel/src/de/mannheim/informatik/bank/perstance/Datenbank.java @@ -1,25 +1,45 @@ -//package de.mannheim.informatik.bank.perstance; -// -//import de.hs_mannheim.informatik.bank.domain.Bank; -// -//import java.io.*; -// -//public class Datenbank { -// File f = new File("Bank.ser"); -// -// -// public void speichern(Bank bank) throws FileNotFoundException, IOException { -// ObjectOutputStream fileOut; -// fileOut = new ObjectOutputStream(new FileOutputStream(f)); -// fileOut.writeObject(bank); -// } -// -// public void laden(Bank bank) throws FileNotFoundException, IOException { -// ObjectInputStream fileIn; -// fileIn = new ObjectInputStream(new FileInputStream(f)); -// -// -// -// -// } -//} +package de.mannheim.informatik.bank.perstance; + +import de.hs_mannheim.informatik.bank.domain.Bank; + +import java.io.*; + +public class Datenbank { + private static final String saveBank = "bank.ser"; + private static final String saveZähler = "zähler.ser"; + + public static boolean sindDateGespeicher() { + return new File(saveBank).exists(); + } + + public static void speichern(Bank bank) throws Exception { + ObjectOutputStream fileOut; + fileOut = new ObjectOutputStream(new FileOutputStream(saveBank)); + fileOut.writeObject(bank); + fileOut.close(); + } + + public static void speicherZähler(int kontoZähler) throws Exception { + ObjectOutputStream fileOut; + fileOut = new ObjectOutputStream(new FileOutputStream(saveZähler)); + fileOut.writeInt(kontoZähler); + fileOut.close(); + } + + public static Object laden() throws Exception { + ObjectInputStream fileIn; + fileIn = new ObjectInputStream(new FileInputStream(saveBank)); + Object bank = fileIn.readObject(); + fileIn.close(); + + return bank; + } + + public static int ladeKontoZähler() throws Exception { + ObjectInputStream fileIn; + fileIn = new ObjectInputStream(new FileInputStream(saveZähler)); + int kontoZähler = fileIn.readInt(); + fileIn.close(); + return kontoZähler; + } +} diff --git a/Bank-Beispiel/zähler.ser b/Bank-Beispiel/zähler.ser new file mode 100644 index 0000000..6725d0f Binary files /dev/null and b/Bank-Beispiel/zähler.ser differ