From 994337343d3dbf6bc5c112b6622bde21a656d3d7 Mon Sep 17 00:00:00 2001 From: Peter Gapon Date: Thu, 13 Oct 2022 20:36:16 +0200 Subject: [PATCH] =?UTF-8?q?=C3=9Cbung=202=20Speichern/Laden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../de/hs_mannheim/informatik/bank/Main.java | 4 +- .../informatik/bank/domain/Bank.java | 16 ++ .../informatik/bank/domain/Konto.java | 89 ++++++-- .../informatik/bank/facade/Banksystem.java | 100 +++++--- .../de/hs_mannheim/informatik/bank/ui/UI.java | 216 ++++++++++++------ .../persistence/PersistenzSerialisiert.java | 34 +++ 6 files changed, 333 insertions(+), 126 deletions(-) create mode 100644 Bank-Beispiel/src/persistence/PersistenzSerialisiert.java 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..f940072 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -1,11 +1,13 @@ package de.hs_mannheim.informatik.bank; +import java.io.IOException; + import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.ui.UI; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException, ClassNotFoundException { 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 0b66d3d..c0ef53c 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 @@ -19,8 +19,24 @@ public class Bank { return name; } + public Konto getKonto(int kNummer) { + return konten.get(kNummer); + } + public Collection getKontenliste() { return konten.values(); } + public void einzahlenBank(int kNummer, long betrag) { + konten.get(kNummer).einzahlenKonto(betrag); + } + + public void auszahlenBank(int kNummer, long betrag) { + konten.get(kNummer).auszahlenKonto(betrag); + } + + public HashMap getKonten() { + return konten; + } + } 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 654d503..c47abff 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,24 +1,65 @@ -package de.hs_mannheim.informatik.bank.domain; - -public class Konto { - private static int kontozähler = 0; - - private int nummer; - private long stand = 0; - private String inhaber; - - public Konto(String inhaber) { - nummer = 1000 + kontozähler++; - this.inhaber = inhaber; - } - - public int getKontonummer() { - return nummer; - } - - @Override - public String toString() { - return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; - } - -} +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; + +public class Konto implements Serializable{ + private static final long serialVersionUID = 1L; + + private static int kontozähler = 0; + + private int nummer; + private long stand = 0; + private String inhaber; + private ArrayList liste = new ArrayList<>(); + + public Konto(String inhaber) { + nummer = 1000 + kontozähler++; + this.inhaber = inhaber; + } + + public int getKontonummer() { + return nummer; + } + + public long getStand() { + return stand; + } + + public String getInhaber() { + return inhaber; + } + + public void einzahlenKonto(long betrag) { + this.stand = stand + betrag; + } + + public void auszahlenKonto(long betrag) { + this.stand = stand - betrag; + } + + public void kontoauszugErzeugenKonto(long betrag) { + + if (betrag > 0) { + Date date = new Date(); + this.liste.add("Datum: " + date + " Betrag: " + betrag); + } else { + Date date = new Date(); + this.liste.add("Datum: " + date + " Betrag: " + betrag); + } + + } + + public void kontoauszugAnzeigenKonto() { + for (String string : this.liste) { + System.out.println(string); + } + } + + @Override + public String toString() { + return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", stand=" + stand + "]"; + } + +} 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 821c2a9..69ddfd5 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 @@ -1,37 +1,63 @@ -package de.hs_mannheim.informatik.bank.facade; - -import java.util.Collection; - -import de.hs_mannheim.informatik.bank.domain.Bank; -import de.hs_mannheim.informatik.bank.domain.Konto; - -public class Banksystem { - private Bank bank; - - public Banksystem(String bankname) { - this.bank = new Bank(bankname); - } - - public int kontoAnlegen(String name) { - Konto k = new Konto(name); - bank.addKonto(k); - - return k.getKontonummer(); - } - - public String[] getKontenliste() { - Collection konten = bank.getKontenliste(); - String[] liste = new String[konten.size()]; - - int i = 0; - for (Konto k : konten) { - liste[i++] = k.toString(); - } - - return liste; - } - - public String getBankname() { - return bank.getName(); - } -} +package de.hs_mannheim.informatik.bank.facade; + +import java.io.IOException; +import java.util.Collection; + +import de.hs_mannheim.informatik.bank.domain.Bank; +import de.hs_mannheim.informatik.bank.domain.Konto; +import persistence.PersistenzSerialisiert; + +public class Banksystem { + private Bank bank; + + public Banksystem(String bankname) { + this.bank = new Bank(bankname); + } + + public int kontoAnlegen(String name) { + Konto k = new Konto(name); + bank.addKonto(k); + + return k.getKontonummer(); + } + + public String[] getKontenliste() { + Collection konten = bank.getKontenliste(); + String[] liste = new String[konten.size()]; + + int i = 0; + for (Konto k : konten) { + liste[i++] = k.toString(); + } + + return liste; + } + + public String getBankname() { + return bank.getName(); + } + + public Konto getKontoBanksystem(int kNummer) { + return bank.getKonten().get(kNummer); + } + + public void einzahlenBanksystem(int kNummer, long betrag) { + bank.getKonten().get(kNummer).einzahlenKonto(betrag); + } + + public void auszahlenBanksystem(int kNummer, long betrag) { + bank.getKonten().get(kNummer).auszahlenKonto(betrag); + } + + public void kontoauszugErzeugenBanksystem(int kNummer, long betrag) { + bank.getKonten().get(kNummer).kontoauszugErzeugenKonto(betrag); + } + + public void kontoauszugAnzeigenBanksystem(int kNummer) { + bank.getKonten().get(kNummer).kontoauszugAnzeigenKonto(); + } + + public void kontenLaden() throws ClassNotFoundException, IOException { + bank.addKonto(PersistenzSerialisiert.objectLesen()); + } +} 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 d6eb6e9..f9573ad 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 @@ -1,64 +1,152 @@ -package de.hs_mannheim.informatik.bank.ui; - -import java.util.Scanner; - -import de.hs_mannheim.informatik.bank.facade.Banksystem; - -public class UI { - private Banksystem bs; - Scanner sc = new Scanner(System.in); - - public UI(Banksystem bs) { - this.bs = bs; - hauptmenü(); - } - - private void hauptmenü() { - System.out.println("Willkommen bei der " + bs.getBankname() + "!"); - - mainloop: - while (true) { - System.out.println(); - System.out.println("--------"); - System.out.println("Hauptmenü"); - System.out.println("1 -> Konten anzeigen"); - System.out.println("2 -> Konto anlegen"); - System.out.println("9 -> Beenden"); - System.out.println(); - - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); - System.out.println(); - - switch(input) { - case 1: kontenAnzeigen(); break; - case 2: kontoAnlegen(); break; - case 9: break mainloop; - } - } - - System.out.println("Auf Wiedersehen!"); - - } // hauptmenü - - private void kontenAnzeigen() { - String[] konten = bs.getKontenliste(); - if (konten.length > 0) { - System.out.println("Folgende Konten sind aktuell verfügbar:"); - for (String s : konten) { - System.out.println(s); - } - } else { - System.out.println("Bisher keine Konten angelegt."); - } - } - - private void kontoAnlegen() { - System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - String name = sc.nextLine(); - - int kontonummer = bs.kontoAnlegen(name); - System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); - } - -} +package de.hs_mannheim.informatik.bank.ui; + +import java.io.IOException; +import java.util.Scanner; + +import de.hs_mannheim.informatik.bank.facade.Banksystem; +import persistence.PersistenzSerialisiert; + +public class UI { + private Banksystem bs; + Scanner sc = new Scanner(System.in); + + public UI(Banksystem bs) throws IOException, ClassNotFoundException { + this.bs = bs; + hauptmenü(); + } + + private void hauptmenü() throws IOException, ClassNotFoundException { + System.out.println("Willkommen bei der " + bs.getBankname() + "!"); + bs.kontenLaden(); + + mainloop: + while (true) { + System.out.println(); + System.out.println("--------"); + System.out.println("Hauptmenü"); + System.out.println("1 -> Konten anzeigen"); + System.out.println("2 -> Konto anlegen"); + System.out.println("3 -> Konto einzahlen"); + System.out.println("4 -> Konto auszahlen"); + System.out.println("5 -> Konto anzeigen"); + System.out.println("6 -> Kontoauszug anzeigen"); + System.out.println("9 -> Beenden"); + System.out.println(); + + System.out.print("> "); + int input = Integer.parseInt(sc.nextLine()); + System.out.println(); + + switch(input) { + case 1: kontenAnzeigen(); break; + case 2: kontoAnlegen(); break; + case 3: einzahlen(); break; + case 4: auszahlen(); break; + case 5: kontoAnzeigen(); break; + case 6: kontoauszugAnzeigen(); break; + case 9: break mainloop; + } + } + + System.out.println("Auf Wiedersehen!"); + + } // hauptmenü + + private void kontenAnzeigen() { + String[] konten = bs.getKontenliste(); + if (konten.length > 0) { + System.out.println("Folgende Konten sind aktuell verfügbar:"); + for (String s : konten) { + System.out.println(s); + } + } else { + System.out.println("Bisher keine Konten angelegt."); + } + } + + private void kontoAnzeigen() { + String[] konten = bs.getKontenliste(); + System.out.println("Bitte die Kontonummer des Kontoinhabers angeben: "); + String kName = sc.nextLine(); + + + for (int i = 0; i < konten.length; i++) { + if (konten[i].contains(kName)) { + System.out.println(konten[i]); + break; + } + } + + } + + private void kontoAnlegen() throws IOException { + System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + String name = sc.nextLine(); + + int kontonummer = bs.kontoAnlegen(name); + System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + PersistenzSerialisiert.objectSpeichern(bs.getKontoBanksystem(kontonummer)); + } + + private void einzahlen() { + System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + String kName = sc.nextLine(); + String [] konten = bs.getKontenliste(); + + int temp = 0; + for (int i = 0; i < konten.length; i++) { + if (konten[i].contains(kName)) { + temp = Integer.parseInt(konten[i].substring(14, 18)); + break; + } else { + System.out.println("Konto nicht vorhanden"); + System.out.println("Korrigieren Sie Ihre Eingabe"); + return; + } + } + + System.out.println("Bitte den gewünschten Betrag eingeben:"); + + long betrag = Long.parseLong(sc.nextLine()); + + bs.einzahlenBanksystem(temp, betrag); + bs.kontoauszugErzeugenBanksystem(temp, betrag); + System.out.println(bs.getKontoBanksystem(temp)); + + } + + private void auszahlen() { + System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + String kName = sc.nextLine(); + String [] konten = bs.getKontenliste(); + + int temp = 0; + for (int i = 0; i < konten.length; i++) { + if (konten[i].contains(kName)) { + temp = Integer.parseInt(konten[i].substring(14, 18)); + break; + } else { + System.out.println("Konto nicht vorhanden"); + System.out.println("Korrigieren Sie Ihre Eingabe"); + return; + } + } + + System.out.println("Bitte den gewünschten Betrag eingeben:"); + + long betrag = Long.parseLong(sc.nextLine()); + + bs.auszahlenBanksystem(temp, betrag); + bs.kontoauszugErzeugenBanksystem(temp, -betrag); + + kontenAnzeigen(); + } + + private void kontoauszugAnzeigen() { + System.out.println("Bitte die Kontonummer des Kontoinhabers angeben: "); + int temp = Integer.parseInt(sc.nextLine()); + System.out.println("Auftraggeber: " + bs.getKontoBanksystem(temp).getInhaber()); + bs.kontoauszugAnzeigenBanksystem(temp); + } + +} diff --git a/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java b/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java new file mode 100644 index 0000000..1794bfb --- /dev/null +++ b/Bank-Beispiel/src/persistence/PersistenzSerialisiert.java @@ -0,0 +1,34 @@ +package persistence; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +import de.hs_mannheim.informatik.bank.domain.Konto; + +public class PersistenzSerialisiert { + + public static void main(String[] args) throws Exception { + + } + + public static void objectSpeichern(Object o) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser")); + + oos.writeObject(o); + oos.close(); + } + + + + public static Konto objectLesen() throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser")); + Konto k = (Konto) ois.readObject(); + + ois.close(); + return k; + } + +} \ No newline at end of file