robinschumann 2022-11-16 21:42:53 +01:00
parent 10515feb82
commit a31708f08a
5 changed files with 254 additions and 38 deletions

View File

@ -1,11 +1,14 @@
package de.hs_mannheim.informatik.bank; 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.facade.Banksystem;
import de.hs_mannheim.informatik.bank.ui.UI; import de.hs_mannheim.informatik.bank.ui.UI;
public class Main { public class Main {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
//hier die Firmen
Banksystem bs = new Banksystem("Spaßkasse Mannheim"); Banksystem bs = new Banksystem("Spaßkasse Mannheim");
UI ui = new UI(bs); UI ui = new UI(bs);
} }

View File

@ -9,6 +9,7 @@ public class Bank implements Serializable {
private String name; private String name;
private HashMap<Integer, Konto> konten = new HashMap<>(); private HashMap<Integer, Konto> konten = new HashMap<>();
private HashMap<Integer, Kunde> kunden = new HashMap<>(); private HashMap<Integer, Kunde> kunden = new HashMap<>();
private HashMap<Integer, Depot> depots = new HashMap<>();
private int kontozähler; private int kontozähler;
private int kundenzähler; private int kundenzähler;
@ -19,16 +20,37 @@ public class Bank implements Serializable {
public int addKonto(Kunde kunde, int auswahl) { public int addKonto(Kunde kunde, int auswahl) {
Konto k; Konto k;
Depot d;
if (auswahl == 1) switch (auswahl) {
case 1:
k = new Konto(++kontozähler, kunde); k = new Konto(++kontozähler, kunde);
else
k = new Girokonto(++kontozähler, kunde);
konten.put(k.getKontonummer(), k); konten.put(k.getKontonummer(), k);
kunde.addKonto(k); kunde.addKonto(k);
return k.getKontonummer(); 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);*/
/*konten.put(k.getKontonummer(), k);
kunde.addKonto(k);*/
return -1;
} }
public String getName() { public String getName() {
@ -41,6 +63,9 @@ public class Bank implements Serializable {
public Collection<Kunde> getKundenliste() { public Collection<Kunde> getKundenliste() {
return kunden.values(); return kunden.values();
} }
public Collection<Depot> getDepotliste(){
return depots.values();
}
public Konto findeKonto(int kontonummer) { public Konto findeKonto(int kontonummer) {
@ -62,4 +87,9 @@ public class Bank implements Serializable {
return kunden.get(kundennummer); return kunden.get(kundennummer);
} }
public Depot findeDepot(int kontonummer) {
return depots.get(kontonummer);
}
} }

View File

@ -58,6 +58,21 @@ public class Konto implements Serializable {
return false; 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() { public String[] getKontobewegungen() {
String[] auflistung = new String[kontobewegungen.size()]; String[] auflistung = new String[kontobewegungen.size()];
@ -73,7 +88,7 @@ public class Konto implements Serializable {
long saldo = 0; long saldo = 0;
for (int i = 0; i < anzahl; i++) { for (int i = 0; i < anzahl; i++) {
saldo += kontobewegungen.get(i).getBetrag() ; saldo += kontobewegungen.get(i).getBetrag();
} }
return saldo; return saldo;

View File

@ -3,6 +3,7 @@ package de.hs_mannheim.informatik.bank.facade;
import java.util.Collection; import java.util.Collection;
import de.hs_mannheim.informatik.bank.domain.Bank; 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.Girokonto;
import de.hs_mannheim.informatik.bank.domain.Konto; import de.hs_mannheim.informatik.bank.domain.Konto;
import de.hs_mannheim.informatik.bank.domain.Kunde; import de.hs_mannheim.informatik.bank.domain.Kunde;
@ -20,6 +21,10 @@ public class Banksystem {
public int kontoAnlegen(Kunde kunde, int auswahl) throws Exception { public int kontoAnlegen(Kunde kunde, int auswahl) throws Exception {
int kontonummer = bank.addKonto(kunde, auswahl); int kontonummer = bank.addKonto(kunde, auswahl);
//if (kontonummer == -1) {
// throw new Exception("Ungültige Auswahl");
//}
Persistenz.speichereBankDaten(this.bank, bank.getName()); Persistenz.speichereBankDaten(this.bank, bank.getName());
@ -37,6 +42,7 @@ public class Banksystem {
return liste; return liste;
} }
public String[] getKundenliste() { public String[] getKundenliste() {
Collection<Kunde> kunden = bank.getKundenliste(); Collection<Kunde> kunden = bank.getKundenliste();
String[] liste = new String[kunden.size()]; String[] liste = new String[kunden.size()];
@ -48,6 +54,17 @@ public class Banksystem {
return liste; return liste;
} }
public String[] getDepotliste() {
Collection<Depot> depots = bank.getDepotliste();
String[] liste = new String[depots.size()];
int i = 0;
for (Depot d : depots) {
liste[i++] = d.toString();
}
return liste;
}
public String getBankname() { public String getBankname() {
return bank.getName(); return bank.getName();
@ -78,12 +95,13 @@ public class Banksystem {
return konto.getKontobewegungen(); 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 start = bank.findeKonto(startkonto);
Konto ziel = bank.findeKonto(zielkonto); Konto ziel = bank.findeKonto(zielkonto);
if (start instanceof Girokonto && ziel instanceof Girokonto) { 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()); Persistenz.speichereBankDaten(this.bank, bank.getName());
return erfolg; return erfolg;
@ -105,7 +123,7 @@ public class Banksystem {
} }
public int kundeAnlegen(String vorname, String nachname, String wohnort, int alter) { 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; return kundennummer;
} }
@ -116,4 +134,38 @@ public class Banksystem {
} }
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);
}
} }

View File

@ -22,14 +22,19 @@ public class UI {
System.out.println("--------"); System.out.println("--------");
System.out.println("Hauptmenü"); System.out.println("Hauptmenü");
System.out.println("1 -> Konten anzeigen"); System.out.println("1 -> Konten anzeigen");
System.out.println("2 -> Konto anlegen"); System.out.println("2 -> Konto oder Depot anlegen");
System.out.println("3 -> Geld einzahlen"); System.out.println("3 -> Geld einzahlen (Giro- oder Sparkonto)");
System.out.println("4 -> Geld auszahlen"); System.out.println("4 -> Geld auszahlen (Giro- oder Sparkonto)");
System.out.println("5 -> Kontoauszug drucken"); System.out.println("5 -> Geld auf ein Depot einzahlen ");
System.out.println("6 -> Überweisung beauftragen"); System.out.println("6 -> Geld von einem Depot auszahlen");
System.out.println("7 -> Saldo abfragen"); System.out.println("7 -> Kontoauszug drucken");
System.out.println("8 -> Kunde anlegen"); System.out.println("8 -> Überweisung beauftragen");
System.out.println("9 -> Beenden"); 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.println();
System.out.print("> "); System.out.print("> ");
@ -51,18 +56,33 @@ public class UI {
geldAuszahlen(); geldAuszahlen();
break; break;
case 5: case 5:
kontoauszugDrucken(); geldEinzahlennDepot();
break; break;
case 6: case 6:
überweisungBeauftragen(); geldAuszahlenDepot();
break; break;
case 7: case 7:
saldoAbfragen(); kontoauszugDrucken();
break; break;
case 8: case 8:
kundeAnlegen(); überweisungBeauftragen();
break; break;
case 9: case 9:
saldoAbfragen();
break;
case 10:
aktienKaufen();
break;
case 11:
aktienVerkaufen();
break;
case 12:
aktienAnzeigen();
break;
case 13:
kundeAnlegen();
break;
case 14:
break mainloop; break mainloop;
} }
@ -86,6 +106,15 @@ public class UI {
} else { } else {
System.out.println("Bisher keine Konten angelegt."); 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 { private void kontoAnlegen() throws Exception {
@ -95,10 +124,10 @@ public class UI {
kundeAnlegen(); kundeAnlegen();
} }
//System.out.println("Bitte den Namen des Kontoinhabers angeben: "); // System.out.println("Bitte den Namen des Kontoinhabers angeben: ");
//String name = sc.nextLine(); // 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()); int auswahl = Integer.parseInt(sc.nextLine());
System.out.println("Bitte geben Sie eine Kundennummer ein: "); System.out.println("Bitte geben Sie eine Kundennummer ein: ");
int kundennummer = Integer.parseInt(sc.nextLine()); 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);
}
} }