From d4c17f9e65fc428c8cc6b4a5c1ef556f263f79f4 Mon Sep 17 00:00:00 2001 From: 2211320 <2211320@stud.hs-mannheim.de> Date: Sat, 15 Oct 2022 17:47:51 +0200 Subject: [PATCH] =?UTF-8?q?alles=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bank-Beispiel/.project | 11 +++ .../de/hs_mannheim/informatik/bank/Main.java | 6 +- .../informatik/bank/domain/Bank.java | 7 +- .../informatik/bank/domain/Konto.java | 49 +++++++++- .../informatik/bank/facade/Banksystem.java | 55 ++++++++++- .../bank/persistence/ObjectStreams.java | 37 ++++++++ .../de/hs_mannheim/informatik/bank/ui/UI.java | 92 ++++++++++++++++++- README.md | 3 - 8 files changed, 250 insertions(+), 10 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/persistence/ObjectStreams.java delete mode 100644 README.md diff --git a/Bank-Beispiel/.project b/Bank-Beispiel/.project index 49c2c92..caa1143 100644 --- a/Bank-Beispiel/.project +++ b/Bank-Beispiel/.project @@ -14,4 +14,15 @@ org.eclipse.jdt.core.javanature + + + 1665504364588 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + 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..04d51d7 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -1,12 +1,16 @@ package de.hs_mannheim.informatik.bank; +import java.io.Serializable; + import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.ui.UI; -public class Main { +public class Main implements Serializable { public static void main(String[] args) { + Banksystem bs = new Banksystem("Spaßkasse Mannheim"); + @SuppressWarnings("unused") 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..dfb98ea 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 @@ -1,9 +1,10 @@ package de.hs_mannheim.informatik.bank.domain; +import java.io.Serializable; import java.util.Collection; import java.util.HashMap; -public class Bank { +public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); @@ -22,5 +23,9 @@ public class Bank { public Collection getKontenliste() { return konten.values(); } + + public Konto getKonto(int nummer) { + return konten.get(nummer); + } } 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..b1e26e9 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,11 +1,24 @@ package de.hs_mannheim.informatik.bank.domain; -public class Konto { +import java.io.Serializable; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; + +public class Konto implements Serializable { private static int kontozähler = 0; private int nummer; private long stand = 0; private String inhaber; + private ArrayList kontoauszug = new ArrayList(); + + Date date = Calendar.getInstance().getTime(); + DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); + String datum = dateFormat.format(date); + public Konto(String inhaber) { nummer = 1000 + kontozähler++; @@ -16,9 +29,41 @@ public class Konto { return nummer; } + public long getKontostand() { + return stand; + } + + public void setEinzahlung(long wert) { + stand += wert; + kontoauszugAdd(wert); + } + + public void setAuszahlung(long wert) { + stand -= wert; + kontoauszugAdd(wert * -1); + } + + public void kontoauszugAdd(long wert) { + String wertNeu = Long.toString(wert); + if(wert >= 0) { + wertNeu = "+" + wert; + } + kontoauszug.add(wertNeu); + kontoauszug.add(datum); + kontoauszug.add(this.inhaber); //noch umändern zum "richtigen" Auftraggeber + } + + public int kontoauszugLänge() { + return kontoauszug.size(); + } + + public String kontoauszugInhalt(int zähler) { + return kontoauszug.get(zähler); + } + @Override public String toString() { - return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; + 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..98a8366 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,11 +1,12 @@ package de.hs_mannheim.informatik.bank.facade; +import java.io.Serializable; import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Konto; -public class Banksystem { +public class Banksystem implements Serializable { private Bank bank; public Banksystem(String bankname) { @@ -34,4 +35,56 @@ public class Banksystem { public String getBankname() { return bank.getName(); } + + // public Konto getKonto(int nummer) { + // Collection konten = bank.getKontenliste(); + + // for(Konto k : konten){ + // if(k.getKontonummer() == nummer) return k; + // } + + // return null; + // } + + public boolean existiertKonto(int nummer) { + Konto k = bank.getKonto(nummer); + + if(k != null) { + return true; + } + return false; + } + + public long kontostandAnzeigen(int nummer) { + Konto k = bank.getKonto(nummer); + long kontostand = k.getKontostand(); + return kontostand; + } + + public long geldEinzahlen(int nummer, long geld) { + Konto k = bank.getKonto(nummer); + k.setEinzahlung(geld); + long kontostand = k.getKontostand(); + return kontostand; + } + + public boolean geldAuszahlen(int nummer, long geld) { + Konto k = bank.getKonto(nummer); + // long betrag = k.getKontostand() - geld; + // if(betrag < -5000) { + // return false; + // } + k.setAuszahlung(geld); + return true; + } + + public String[] kontoauszugAnzeigen(int nummer) { + Konto k = bank.getKonto(nummer); + String[] kontoauszugListe = new String[k.kontoauszugLänge()]; + + for(int i = 0; i < k.kontoauszugLänge(); i++) { + kontoauszugListe[i] = k.kontoauszugInhalt(i); + } + return kontoauszugListe; + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/persistence/ObjectStreams.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/persistence/ObjectStreams.java new file mode 100644 index 0000000..f8b348f --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/persistence/ObjectStreams.java @@ -0,0 +1,37 @@ +package de.hs_mannheim.informatik.bank.persistence; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +public class ObjectStreams { + + public static void main(String[] args) throws Exception { + // Daten speichern + String s = "Die Antwort auf alles."; + Integer i = 42; + int[] arr = {0,8, 15}; + + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser")); + + oos.writeObject(s); + oos.writeObject(i); + oos.writeByte(21); + oos.writeObject(arr); + + oos.close(); + + // ... und wieder einlesen + ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser")); + + System.out.println((String)ois.readObject()); + System.out.println((Integer)ois.readObject()); + System.out.println(ois.readByte()); + System.out.println( ((int[])ois.readObject())[1] ); + + ois.close(); + + } + +} \ No newline at end of file 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..c01f6e8 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,10 +1,11 @@ package de.hs_mannheim.informatik.bank.ui; +import java.io.Serializable; import java.util.Scanner; import de.hs_mannheim.informatik.bank.facade.Banksystem; -public class UI { +public class UI implements Serializable { private Banksystem bs; Scanner sc = new Scanner(System.in); @@ -23,6 +24,10 @@ public class UI { System.out.println("Hauptmenü"); System.out.println("1 -> Konten anzeigen"); System.out.println("2 -> Konto anlegen"); + System.out.println("3 -> Geld einzahlen"); + System.out.println("4 -> Geld auszahlen"); + System.out.println("5 -> Kontostand anzeigen"); + System.out.println("6 -> Kontoauszug anzeigen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -33,6 +38,10 @@ public class UI { switch(input) { case 1: kontenAnzeigen(); break; case 2: kontoAnlegen(); break; + case 3: geldEinzahlen(); break; + case 4: geldAuszahlen(); break; + case 5: kontostandAnzeigen(); break; + case 6: kontoauszugAnzeigen(); break; case 9: break mainloop; } } @@ -54,11 +63,90 @@ public class UI { } private void kontoAnlegen() { - System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + System.out.print("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."); } + private void geldEinzahlen() { + System.out.print("Bitte geben Sie die Kontonummer ein: "); + int nummer = Integer.parseInt(sc.nextLine()); + + boolean kontoExistiert = bs.existiertKonto(nummer); + if(kontoExistiert == false) { + System.out.println("Dieses Konto existiert nicht."); + return; + } + System.out.print("Bitte geben Sie jetzt den Geldbetrag ein: "); + long geld = Long.parseLong(sc.nextLine()); + long kontostand = bs.geldEinzahlen(nummer, geld); + System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand); + } + + private void kontostandAnzeigen() { + System.out.print("Bitte geben Sie die Kontonummer ein: "); + int nummer = Integer.parseInt(sc.nextLine()); + + boolean kontoExistiert = bs.existiertKonto(nummer); + if(kontoExistiert == false) { + System.out.println("Dieses Konto existiert nicht."); + return; + } + long kontostand = bs.kontostandAnzeigen(nummer); + System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand); + } + + private void geldAuszahlen() { + System.out.print("Bitte geben Sie die Kontonummer ein: "); + int nummer = Integer.parseInt(sc.nextLine()); + + boolean kontoExistiert = bs.existiertKonto(nummer); + if(kontoExistiert == false) { + System.out.println("Dieses Konto existiert nicht."); + return; + } + long kontostand = bs.kontostandAnzeigen(nummer); + System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand + "\n"); + System.out.print("Bitte geben Sie jetzt den auszuzahlenden Geldbetrag ein: "); + long geld = Long.parseLong(sc.nextLine()); + + boolean auszahlenMöglich = bs.geldAuszahlen(nummer, geld); + if(auszahlenMöglich == false) { + System.out.println("So viel Geld haben Sie nicht auf Ihrem Konto. Vorgang abgebrochen."); + return; + } + long kontostandNeu = bs.kontostandAnzeigen(nummer); + System.out.println("Ihr aktueller Kontostand beträgt: " + kontostandNeu); + System.out.println("Ihr ausgezahltes Geld beträgt: " + geld); + } + + private void kontoauszugAnzeigen() { + System.out.print("Bitte geben Sie die Kontonummer ein: "); + int nummer = Integer.parseInt(sc.nextLine()); + + boolean kontoExistiert = bs.existiertKonto(nummer); + if(kontoExistiert == false) { + System.out.println("Dieses Konto existiert nicht."); + return; + } + + String[] kontenauszugInhalt = bs.kontoauszugAnzeigen(nummer); + if (kontenauszugInhalt.length > 0) { + System.out.println("Folgende Kontoauszüge sind aktuell verfügbar: \n"); + int j = 1; + for(int i = 0; i < kontenauszugInhalt.length; i++) { + System.out.print("Auszug " + j + ": " + kontenauszugInhalt[i]); + i++; + System.out.print(" vom " + kontenauszugInhalt[i]); + i++; + System.out.println(" von " + kontenauszugInhalt[i]); + j++; + } + } else { + System.out.println("Für dieses Konto gibt es noch keine Kontoauszüge."); + } + } + } diff --git a/README.md b/README.md deleted file mode 100644 index 2003d0a..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Bank-System - -Beispielsystem für PR2 im WS22/23. \ No newline at end of file