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 16a794f..6838ed7 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,14 @@ package de.hs_mannheim.informatik.bank; +import de.hs_mannheim.informatik.bank.domain.Aktien; 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) throws Exception { + //hier die Firmen + 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 e2b3a93..dd001c4 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 @@ -9,6 +9,7 @@ public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); private HashMap kunden = new HashMap<>(); + private HashMap depots = new HashMap<>(); private int kontozähler; private int kundenzähler; @@ -19,16 +20,37 @@ public class Bank implements Serializable { public int addKonto(Kunde kunde, int auswahl) { Konto k; + Depot d; - if (auswahl == 1) + switch (auswahl) { + case 1: + k = new Konto(++kontozähler, kunde); + konten.put(k.getKontonummer(), k); + kunde.addKonto(k); + return k.getKontonummer(); + //break; + case 2: + k = new Girokonto(++kontozähler, kunde); + konten.put(k.getKontonummer(), k); + kunde.addKonto(k); + return k.getKontonummer(); + //break; + case 3: + d = new Depot(++kontozähler, kunde); + depots.put(d.getKontonummer(), d); + kunde.addDepot(d); + return d.getKontonummer(); + //break; + } + /*if (auswahl == 1) k = new Konto(++kontozähler, kunde); else - k = new Girokonto(++kontozähler, kunde); + k = new Girokonto(++kontozähler, kunde);*/ - konten.put(k.getKontonummer(), k); - kunde.addKonto(k); + /*konten.put(k.getKontonummer(), k); + kunde.addKonto(k);*/ - return k.getKontonummer(); + return -1; } public String getName() { @@ -41,6 +63,9 @@ public class Bank implements Serializable { public Collection getKundenliste() { return kunden.values(); } + public Collection getDepotliste(){ + return depots.values(); + } public Konto findeKonto(int kontonummer) { @@ -62,4 +87,9 @@ public class Bank implements Serializable { return kunden.get(kundennummer); } + public Depot findeDepot(int kontonummer) { + return depots.get(kontonummer); + } + + } 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 7a63408..d0c9473 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 @@ -13,7 +13,7 @@ public class Konto implements Serializable { public Konto(int kontozähler, Kunde kunde) { nummer = 1000 + kontozähler; - + this.kunde = kunde; this.kontobewegungen = new ArrayList<>(); @@ -27,7 +27,7 @@ public class Konto implements Serializable { public String toString() { return "Konto [nummer=" + nummer + ", kunde=" + kunde.toString() + "]"; } - + public Kunde getKunde() { return kunde; } @@ -58,6 +58,21 @@ public class Konto implements Serializable { return false; } + /* + * public boolean auszahlen(long betrag, String zweck, String art, String + * auftraggeber) { try { long checkStand = stand - betrag; boolean kleinerNull = + * (checkStand <= 0); + * + * if (kleinerNull == false) { kontobewegungen.add(new Kontobewegung(betrag * + * -1, zweck, art, auftraggeber)); } + * + * } catch (Exception e) { System.out.println("nope"); + * + * return false; + * + * } return true; } + */ + public String[] getKontobewegungen() { String[] auflistung = new String[kontobewegungen.size()]; @@ -71,11 +86,11 @@ public class Konto implements Serializable { public long berechneSaldo(int anzahl) { long saldo = 0; - + for (int i = 0; i < anzahl; i++) { - saldo += kontobewegungen.get(i).getBetrag() ; + saldo += kontobewegungen.get(i).getBetrag(); } - + return saldo; } 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 066a716..19917a2 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 @@ -3,6 +3,7 @@ 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.Depot; import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; import de.hs_mannheim.informatik.bank.domain.Kunde; @@ -20,7 +21,11 @@ public class Banksystem { public int kontoAnlegen(Kunde kunde, int auswahl) throws Exception { int kontonummer = bank.addKonto(kunde, auswahl); - + //if (kontonummer == -1) { + // throw new Exception("Ungültige Auswahl"); + + //} + Persistenz.speichereBankDaten(this.bank, bank.getName()); return kontonummer; @@ -32,18 +37,30 @@ public class Banksystem { int i = 0; for (Konto k : konten) { - liste[i++] = k.toString(); + liste[i++] = k.toString(); } return liste; } + public String[] getKundenliste() { Collection kunden = bank.getKundenliste(); String[] liste = new String[kunden.size()]; int i = 0; for (Kunde k : kunden) { - liste[i++] = k.toString(); + liste[i++] = k.toString(); + } + + return liste; + } + public String[] getDepotliste() { + Collection depots = bank.getDepotliste(); + String[] liste = new String[depots.size()]; + + int i = 0; + for (Depot d : depots) { + liste[i++] = d.toString(); } return liste; @@ -58,17 +75,17 @@ public class Banksystem { konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return konto.getKontostand(); } public boolean geldAuszahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); - + boolean erg = konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); - + Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return erg; } @@ -78,14 +95,15 @@ public class Banksystem { return konto.getKontobewegungen(); } - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws Exception { + public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) + throws Exception { Konto start = bank.findeKonto(startkonto); Konto ziel = bank.findeKonto(zielkonto); if (start instanceof Girokonto && ziel instanceof Girokonto) { - boolean erfolg = ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); + boolean erfolg = ((Girokonto) start).überweise((Girokonto) ziel, betrag, verwendungszweck); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return erfolg; } @@ -100,20 +118,54 @@ public class Banksystem { public long saldoBestimmen(int kontonummer, int anzahl) { Konto konto = bank.findeKonto(kontonummer); - + return konto.berechneSaldo(anzahl); } public int kundeAnlegen(String vorname, String nachname, String wohnort, int alter) { - int kundennummer = bank.addKunde(vorname,nachname,wohnort,alter); + int kundennummer = bank.addKunde(vorname, nachname, wohnort, alter); return kundennummer; - + } public Kunde findeKunde(int kundennummer) { Kunde k = bank.findeKunde(kundennummer); return k; + + } + + public boolean aktienKaufen(int kontonummer, int auswahl, int anzahl) { + Depot depot = bank.findeDepot(kontonummer); + boolean erfolgreich = depot.aktienKaufen(auswahl,anzahl); + + return erfolgreich; } + public long geldEinzahlenDepot(int kontonummer, long betrag) { + Depot depot = bank.findeDepot(kontonummer); + depot.geldEinzahlen(betrag); + return depot.getKontostand(); + } + + public boolean geldAuszahlenDepot(int kontonummer, long betrag) { + Depot depot = bank.findeDepot(kontonummer); + boolean erfolgreich = depot.geldAuszahlen(betrag); + + return erfolgreich; + } + + public String[] aktienAnzeigen(int kontonummer) { + Depot depot = bank.findeDepot(kontonummer); + String [] aktien = depot.getAktien(); + + return aktien; + + } + + public boolean aktienVerkaufen(int kontonummer, int auswahl, int anzahl) { + Depot depot = bank.findeDepot(kontonummer); + return depot.aktienVerkaufen(auswahl, anzahl); + } + } 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 644ae00..182d45d 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 @@ -22,14 +22,19 @@ public class UI { 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 -> Kunde anlegen"); - System.out.println("9 -> Beenden"); + System.out.println("2 -> Konto oder Depot anlegen"); + System.out.println("3 -> Geld einzahlen (Giro- oder Sparkonto)"); + System.out.println("4 -> Geld auszahlen (Giro- oder Sparkonto)"); + System.out.println("5 -> Geld auf ein Depot einzahlen "); + System.out.println("6 -> Geld von einem Depot auszahlen"); + System.out.println("7 -> Kontoauszug drucken"); + System.out.println("8 -> Überweisung beauftragen"); + System.out.println("9 -> Saldo abfragen"); + System.out.println("10 -> Aktien kaufen"); + System.out.println("11 -> Aktien verkaufen"); + System.out.println("12 -> Aktien von einem Depot anzeigen"); + System.out.println("13 -> Kunde anlegen"); + System.out.println("14 -> Beenden"); System.out.println(); System.out.print("> "); @@ -51,18 +56,33 @@ public class UI { geldAuszahlen(); break; case 5: - kontoauszugDrucken(); + geldEinzahlennDepot(); break; case 6: - überweisungBeauftragen(); + geldAuszahlenDepot(); break; case 7: - saldoAbfragen(); + kontoauszugDrucken(); break; case 8: - kundeAnlegen(); + überweisungBeauftragen(); break; case 9: + saldoAbfragen(); + break; + case 10: + aktienKaufen(); + break; + case 11: + aktienVerkaufen(); + break; + case 12: + aktienAnzeigen(); + break; + case 13: + kundeAnlegen(); + break; + case 14: break mainloop; } @@ -86,6 +106,15 @@ public class UI { } else { System.out.println("Bisher keine Konten angelegt."); } + String[] depots = bs.getDepotliste(); + if (depots.length > 0) { + System.out.println("Folgende Depots sind aktuell verfügbar:"); + for (String s : depots) { + System.out.println(s); + } + } else { + System.out.println("Bisher keine Depots angelegt."); + } } private void kontoAnlegen() throws Exception { @@ -95,10 +124,10 @@ public class UI { kundeAnlegen(); } - //System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - //String name = sc.nextLine(); + // System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + // String name = sc.nextLine(); - System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); + System.out.println("Möchten Sie ein Sparkonto (1), ein Girokonto (2) oder ein Wertpapier-Depot (3) anlegen?"); int auswahl = Integer.parseInt(sc.nextLine()); System.out.println("Bitte geben Sie eine Kundennummer ein: "); int kundennummer = Integer.parseInt(sc.nextLine()); @@ -200,4 +229,91 @@ public class UI { } + private void aktienKaufen() { + System.out.println("Für welches Depot wollen Sie Aktien kaufen? Bitte Kontonummer angeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + System.out.println( + "Für welche Firma wollen Sie Aktien ewerben? Zur Auswahl stehen (1) John Deere, (2) Hochschule Mannheim oder (3) Bundeswehr. "); + int auswahl = Integer.parseInt(sc.nextLine()); + System.out.println("Wie viele Aktien wollen Sie kaufen? "); + int anzahl = Integer.parseInt(sc.nextLine()); + + boolean erfolgreich = bs.aktienKaufen(kontonummer, auswahl, anzahl); + if (erfolgreich == true) + System.out.println("Aktienkauf war erfolgreich. "); + else + System.out.println("Aktienkauf war nicht erfolgreich. "); + + } + + private void geldEinzahlennDepot() { + System.out.println("Bitte Kontonummer vom Depot eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + System.out.println("Wie viel möchten Sie einzahlen? "); + long betrag = Long.parseLong(sc.nextLine()); + + long neuerStand = bs.geldEinzahlenDepot(kontonummer, betrag); + System.out.println("Der neue Stand auf dem Depot beträgt: " + neuerStand); + + } + + private void geldAuszahlenDepot() { + System.out.println("Bitte Kontonummer vom Depot eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + System.out.println("Wie viel möchten Sie auszahlen? "); + long betrag = Long.parseLong(sc.nextLine()); + + boolean erfolgreich = bs.geldAuszahlenDepot(kontonummer, betrag); + + } + + private void aktienVerkaufen() { + System.out.println("Von welchem Depot wollen Sie Aktien verkaufen? Bitte Kontonummer eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + System.out.println("Folgende Aktien sind auf dem Konto: "); + String[] aktien = bs.aktienAnzeigen(kontonummer); + + for (int i = 0; i <= aktien.length - 1; i++) { + System.out.print(aktien[i] + " "); + } + + System.out.println( + "Welche Aktien wollen Sie verkaufen? Zur Auswahl stehen (1) John Deere, (2) Hochschule Mannheim oder (3) Bundeswehr."); + int auswahl = Integer.parseInt(sc.nextLine()); + + System.out.println("Wie viele wollen Sie verkaufen? "); + int anzahl = Integer.parseInt(sc.nextLine()); + boolean erfolgreich = bs.aktienVerkaufen(kontonummer, auswahl, anzahl); + if (erfolgreich == true) { + System.out.println("Der Verkauf war erfolgreich. "); + } else { + System.out.println("Der Verkauf war leider nicht erfolgreich. "); + } + + } + + private void aktienAnzeigen() { + System.out.println("Von welchem Depot möchten Sie die Aktien sehen? Bitte Kontonummer angeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + String[] aktien = bs.aktienAnzeigen(kontonummer); + int johnDeereCounter = 0; + int hsmaCounter = 0; + int bundeswehrCounter = 0; + + for (int i = 0; i <= aktien.length - 1; i++) { + if (aktien[i].equals("JohnDeere")) { + johnDeereCounter++; + } else if (aktien[i].equals("HSMA")) { + hsmaCounter++; + } else if (aktien[i].equals("Bundeswehr")) { + bundeswehrCounter++; + } + } + System.out.println("JohnDeere = " + johnDeereCounter); + System.out.println("HSMA = " + hsmaCounter); + System.out.println("Bundeswehr = " + bundeswehrCounter); + + } + }