diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9bb88d3..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.DS_Store 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 27aeb58..62a1b31 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 @@ -7,6 +7,7 @@ import java.util.HashMap; public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); + private HashMap kunden = new HashMap<>(); private int kontozähler; public Bank(String name) { @@ -14,14 +15,18 @@ public class Bank implements Serializable { this.kontozähler = -1; } - public int addKonto(String name, int auswahl) { + public int addKonto(String name, int auswahl , int id) { Konto k; - if (auswahl == 1) + if (auswahl == 1) { k = new Konto(name, ++kontozähler); - else + Kunde ku = kunden.get(id); + k.setKunde(ku);} + else { k = new Girokonto(name, ++kontozähler); - + Kunde ku = kunden.get(id); + k.setKunde(ku); + } konten.put(k.getKontonummer(), k); return k.getKontonummer(); @@ -39,4 +44,20 @@ public class Bank implements Serializable { return konten.get(kontonummer); } + public void kundeZuKonto(int kontonummer) { + Konto k = konten.get(kontonummer); + Kunde ku = new Kunde("bob","der zweite",20,"Mannheim"); + k.setKunde(ku); + } + + public void kundeAnlegen(String vorname, String name, int alter, String wh) { + Kunde ku = new Kunde(vorname,name,alter,wh); + kunden.put(ku.getId(), ku); + } + + public void kontoZuKunde(int kontonummer, int id) { + Kunde ku = kunden.get(id); + Konto k = konten.get(kontonummer); + k.setKunde(ku); + } } 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 e787df5..f82fe69 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 @@ -7,7 +7,7 @@ public class Konto implements Serializable { private int nummer; protected long stand = 0; private String inhaber; - + protected Kunde kunde; protected ArrayList kontobewegungen; public Konto(String inhaber, int kontozähler) { @@ -72,5 +72,9 @@ public class Konto implements Serializable { return saldo; } + + public void setKunde(Kunde k) { + this.kunde = k; + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java new file mode 100644 index 0000000..0790443 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java @@ -0,0 +1,35 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.util.ArrayList; + +public class Kunde { + + private static int id = 0; + private String vorname; + private String name; + private int alter; + private String wohnort; + private ArrayList konten; + + public Kunde(String vorname, String name, int alter, String wohnort) { + this.vorname = vorname; + this.name = name; + this.alter = alter; + this.wohnort = wohnort; + this.id++; + } + + public void kundeHatKonte(Konto k) { + konten.add(k); + } + + public int getId() { + return this.id; + } + + @Override + public String toString() { + return "Vorname: " + this.vorname + " Name: " + this.name +" Alter: " + this.alter + " Wohnort: "+ this.wohnort; + } + +} 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 5ff5144..f996e7e 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,5 +1,6 @@ package de.hs_mannheim.informatik.bank.facade; +import java.io.InvalidClassException; import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; @@ -12,13 +13,17 @@ public class Banksystem { public Banksystem(String bankname) throws Exception { if (Persistenz.sindDatenGespeichert(bankname)) - this.bank = (Bank) Persistenz.ladeBankDaten(bankname); + try{ + this.bank = (Bank) Persistenz.ladeBankDaten(bankname); + }catch(InvalidClassException e) { + this.bank = new Bank(bankname); + } else this.bank = new Bank(bankname); } - public int kontoAnlegen(String name, int auswahl) throws Exception { - int kontonummer = bank.addKonto(name, auswahl); + public int kontoAnlegen(String name, int auswahl, int id) throws Exception { + int kontonummer = bank.addKonto(name, auswahl, id); Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -92,4 +97,8 @@ public class Banksystem { return konto.berechneSaldo(anzahl); } + public void kundeAnlegen(String vorname, String name, int alter, String wh) { + bank.kundeAnlegen( vorname, name, alter, wh); + } + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java index b063dce..e2a420d 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java @@ -33,7 +33,7 @@ class SystemTest { @Test @Order(2) void einzahlenTest() throws Exception { - int knr = bs.kontoAnlegen("Test1", 1); + int knr = bs.kontoAnlegen("Test1", 1,1); assertEquals(1000, bs.geldEinzahlen(knr, 1000)); @@ -46,8 +46,8 @@ class SystemTest { @Test @Order(3) void persistenzTest() throws Exception { - int knr = bs.kontoAnlegen("Test2", 2); - int knr2 = bs.kontoAnlegen("Test3", 2); + int knr = bs.kontoAnlegen("Test2", 2,1); + int knr2 = bs.kontoAnlegen("Test3", 2,1); bs.geldEinzahlen(knr, 1000); bs.geldAuszahlen(knr, 500); 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 348f904..ffa9c46 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 @@ -11,57 +11,83 @@ public class UI { 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 TEst"); - System.out.println("3 -> Geld einzahlen"); - System.out.println("4 -> Geld auszahlen"); - System.out.println("5 -> Kontoauszug drucken"); - System.out.println("6 -> Überweisung beauftragen"); - System.out.println("7 -> Saldo abfragen"); + 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 -> Geld einzahlen"); + System.out.println("4 -> Geld auszahlen"); + System.out.println("5 -> Kontoauszug drucken"); + System.out.println("6 -> Überweisung beauftragen"); + System.out.println("7 -> Saldo abfragen"); + System.out.println("8 -> Neuer Kunde"); + System.out.println("9 -> Beenden"); + System.out.println(); - System.out.println("9 -> Beenden"); - System.out.println(); + System.out.print("> "); + int input = returnUserInput(); + System.out.println(); - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); - System.out.println(); + try { + switch (input) { + case 1: + kontenAnzeigen(); + break; + case 2: + kontoAnlegen(); + break; + case 3: + geldEinzahlen(); + break; + case 4: + geldAuszahlen(); + break; + case 5: + kontoauszugDrucken(); + break; + case 6: + überweisungBeauftragen(); + break; + case 7: + saldoAbfragen(); + break; + case 8: + neuerKunde(); + break; + case 9: + break mainloop; + } - try { - switch(input) { - case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; - case 3: geldEinzahlen(); break; - case 4: geldAuszahlen(); break; - case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; - case 7: saldoAbfragen(); break; - case 9: break mainloop; - } - - } catch (Exception e) { - System.err.println(e.getLocalizedMessage()); - } - System.out.println(); + } catch (Exception e) { + System.err.println(e.getLocalizedMessage()); } + System.out.println(); + } System.out.println("Auf Wiedersehen!"); } // hauptmenü - private void kontenAnzeigen() { + private void neuerKunde() { + System.out.println("Bitte geben sie ihren Vornamen ein"); + String vorname = sc.nextLine(); + System.out.println("Bitte geben sie ihren Namen ein"); + String name = sc.nextLine(); + System.out.println("Bitte geben sie ihren Alter ein"); + int alter = returnUserInput(); + System.out.println("Bitte geben sie ihren Wohnort ein"); + String wh = sc.nextLine(); + bs.kundeAnlegen(vorname,name,alter,wh); + } + + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { System.out.println("Folgende Konten sind aktuell verfügbar:"); @@ -78,23 +104,26 @@ public class UI { String name = sc.nextLine(); System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); - int auswahl = Integer.parseInt(sc.nextLine()); + int auswahl = returnUserInput(); - int kontonummer = bs.kontoAnlegen(name, auswahl); + System.out.println("Geben sie die Kundennummer ein(id)"); + int Kundennummer = returnUserInput(); + + int kontonummer = bs.kontoAnlegen(name, auswahl , Kundennummer); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } private void geldEinzahlen() throws Exception { System.out.println("Geld einzahlen"); System.out.print("Bitte die gewünschte Kontonummer eingeben: "); - int kontonummer = Integer.parseInt(sc.nextLine()); + int kontonummer = returnUserInput(); // optional prüfen, ob Konto existiert System.out.print("Bitte den gewünschten Betrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); + double betrag = returnUserInputDouble();; - long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); + long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)(betrag * 100)); System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); } @@ -105,17 +134,16 @@ public class UI { int kontonummer = Integer.parseInt(sc.nextLine()); System.out.print("Bitte den gewünschten Betrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); + double betrag = returnUserInputDouble(); + boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)(betrag * 100)); - boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)betrag * 100); - - System.out.printf("Auszahlung" + ((!erfolgreich)? " nicht" : "" )+ " erfolgreich. "); - System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); + System.out.printf("Auszahlung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich. "); + System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); } private void kontoauszugDrucken() { System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); - int kontonummer = Integer.parseInt(sc.nextLine()); + int kontonummer = returnUserInput(); // in echt auf einem Drucker System.out.println("Auszug für Konto " + kontonummer); @@ -131,31 +159,54 @@ public class UI { private void überweisungBeauftragen() throws Exception { System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: "); - int startkonto = Integer.parseInt(sc.nextLine()); + int startkonto = returnUserInput(); System.out.print("Bitte die Kontonummmer für das Zielkonto der Überweisung eingeben: "); - int zielkonto = Integer.parseInt(sc.nextLine()); + int zielkonto = returnUserInput(); System.out.print("Bitte den gewünschten Überweisungsbetrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); + double betrag = returnUserInputDouble(); System.out.print("Bitte den Verwendungszweck eingeben: "); String verwendungszweck = sc.nextLine(); - boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); + boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long) (betrag * 100), verwendungszweck); - System.out.println("Überweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); + System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } - + private void saldoAbfragen() { System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: "); - int konto = Integer.parseInt(sc.nextLine()); + int konto = returnUserInput(); System.out.print("Bitte die Anzahl der Kontobewegungen für den Saldo eingeben: "); - int anzahl = Integer.parseInt(sc.nextLine()); - + int anzahl = returnUserInput(); + long saldo = bs.saldoBestimmen(konto, anzahl); - System.out.printf("Der Saldo nach %d Kontobewegungen beträgt %.2f Euro.%n", anzahl, (saldo/100d)); + System.out.printf("Der Saldo nach %d Kontobewegungen beträgt %.2f Euro.%n", anzahl, (saldo / 100d)); } + private int returnUserInput() { + int inp = 0; + try { + inp = Integer.parseInt(sc.nextLine()); + } catch (NumberFormatException e) { + System.err.println("!!!!!!!!!! Geben sie eine Zahl ein !!!!!!!!!!!"); + } catch(Exception e) { + System.err.println("Was machen sie Geben sie eine Zahl ein ich stehe hinter ihnen"); + } + return inp; + } + + private double returnUserInputDouble() { + double inp = 0; + try { + inp = Double.parseDouble(sc.nextLine()); + } catch (NumberFormatException e) { + System.err.println("Geben sie eine Zahl ein"); + } catch(Exception e) { + System.err.println("Was machen sie Geben sie eine Zahl ein"); + } + return inp; + } }