Fix: code refactoring & exception

handling im bs
main
Caner 2022-11-24 14:40:09 +01:00
parent 563dd22766
commit 44aacddf3e
8 changed files with 206 additions and 182 deletions

View File

@ -7,6 +7,7 @@ import de.hs_mannheim.informatik.bank.tui.TUI;
public class Main { public class Main {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Banksystem bs = new Banksystem("Spaßkasse Mannheim"); Banksystem bs = new Banksystem("Spaßkasse Mannheim");
TUI tui = new TUI(bs); TUI tui = new TUI(bs);

View File

@ -6,13 +6,17 @@ import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
public class Bank implements Serializable { public class Bank implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String name; private String name;
private HashMap<Integer, Konto> konten = new HashMap<>();
private HashMap<Integer, Kunde> kundenMap = new HashMap<>();
private int kontozähler; private int kontozähler;
private int kundenzähler; private int kundenzähler;
private HashMap<Integer, Konto> konten = new HashMap<>();
private HashMap<Integer, Kunde> kundenMap = new HashMap<>();
public Bank(String name) { public Bank(String name) {
this.name = name; this.name = name;
@ -41,6 +45,10 @@ public class Bank implements Serializable {
kundenMap.put(++kundenzähler, new Kunde(name, surname, age)); kundenMap.put(++kundenzähler, new Kunde(name, surname, age));
} }
public Konto findeKonto(int kontonummer) {
return konten.get(kontonummer);
}
public String getName() { public String getName() {
return name; return name;
} }
@ -49,10 +57,6 @@ public class Bank implements Serializable {
return konten.values(); return konten.values();
} }
public Konto findeKonto(int kontonummer) {
return konten.get(kontonummer);
}
public HashMap<Integer, Konto> getKonten() { public HashMap<Integer, Konto> getKonten() {
return this.konten; return this.konten;
} }

View File

@ -12,11 +12,6 @@ public class Depot extends Konto{
super(kunde, kontozähler); super(kunde, kontozähler);
} }
@Override
public String toString() {
return "Depot mit der Kontonummer " + super.getKontonummer() + " angelegt.";
}
public boolean aktienAuszahlung(int auswahl, String aktienName){ public boolean aktienAuszahlung(int auswahl, String aktienName){
if (stand - (auswahl * Aktie.getAktienkurs(aktienName)) >= 0) { if (stand - (auswahl * Aktie.getAktienkurs(aktienName)) >= 0) {
@ -36,5 +31,9 @@ public class Depot extends Konto{
aktienMap.put(anzahl, aktienName); aktienMap.put(anzahl, aktienName);
} }
@Override
public String toString() {
return "Depot-" + super.toString();
}
} }

View File

@ -4,9 +4,11 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
public class Konto implements Serializable { public class Konto implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private int nummer;
protected long stand = 0; protected long stand = 0;
private int nummer;
private Kunde kunde; private Kunde kunde;
protected ArrayList<Kontobewegung> kontobewegungen; protected ArrayList<Kontobewegung> kontobewegungen;
@ -14,27 +16,9 @@ public class Konto implements Serializable {
public Konto(Kunde kunde, int kontozähler) { public Konto(Kunde kunde, int kontozähler) {
nummer = 1000 + kontozähler; nummer = 1000 + kontozähler;
this.kunde = kunde; this.kunde = kunde;
this.kontobewegungen = new ArrayList<>(); this.kontobewegungen = new ArrayList<>();
} }
public int getKontonummer() {
return nummer;
}
@Override
public String toString() {
return "Konto [nummer=" + nummer + ", Kunde=" + kunde + "]";
}
public Kunde getKunde() {
return kunde;
}
public long getKontostand() {
return stand;
}
public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { public void einzahlen(long betrag, String zweck, String art, String auftraggeber) {
stand += betrag; stand += betrag;
@ -82,4 +66,22 @@ public class Konto implements Serializable {
} }
public int getKontonummer() {
return nummer;
}
@Override
public String toString() {
return "Konto [nummer=" + nummer + ", Kunde=" + kunde + "]";
}
public Kunde getKunde() {
return kunde;
}
public long getKontostand() {
return stand;
}
} }

View File

@ -4,7 +4,9 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
public class Kontobewegung implements Serializable { public class Kontobewegung implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private long betrag; private long betrag;
private Date datum; private Date datum;
private String betreff; private String betreff;

View File

@ -9,8 +9,8 @@ public class Kunde implements Serializable{
private String name; private String name;
private String surname; private String surname;
private int age; private int age;
private ArrayList<Konto> konten;
private ArrayList<Konto> konten;
public Kunde(String name, String surname, int age) { public Kunde(String name, String surname, int age) {
@ -21,14 +21,15 @@ public class Kunde implements Serializable{
} }
public void addKonto(Konto konto) {
this.konten.add(konto);
}
@Override @Override
public String toString() { public String toString() {
return "[Name: " + name + ", Nachname: " + surname + ", Alter: " + age + "]"; return "[Name: " + name + ", Nachname: " + surname + ", Alter: " + age + "]";
} }
public String getName() { public String getName() {
return this.name; return this.name;
} }
@ -61,8 +62,4 @@ public class Kunde implements Serializable{
this.konten = konten; this.konten = konten;
} }
public void addKonto(Konto konto) {
this.konten.add(konto);
}
} }

View File

@ -32,17 +32,30 @@ public class Banksystem {
this.bank = new Bank(bankname); this.bank = new Bank(bankname);
} }
public int kontoAnlegen(Kunde kunde, Kontoart kontoart) throws IOException { public Kunde addNewKunde(String name, String surname, int age){
int kontonummer = bank.addKonto(kunde, kontoart);
bank.addNewKunde(name, surname, age);
try {
Persistenz.speichereBankDaten(this.bank, bank.getName()); Persistenz.speichereBankDaten(this.bank, bank.getName());
} catch (IOException e) {
return kontonummer; e.printStackTrace();
} }
return bank.getKundenMap().get(bank.getKundenMap().size() - 1);
public String getBankname() { }
return bank.getName();
public int kontoAnlegen(Kunde kunde, Kontoart kontoart){
int kontonummer = bank.addKonto(kunde, kontoart);
try {
Persistenz.speichereBankDaten(this.bank, bank.getName());
} catch (IOException e) {
e.printStackTrace();
}
return kontonummer;
} }
public String[] getKontenlisteForKunde(){ public String[] getKontenlisteForKunde(){
@ -59,8 +72,6 @@ public class Banksystem {
} }
public long geldEinzahlen(int kontonummer, long betrag) throws IOException { public long geldEinzahlen(int kontonummer, long betrag) throws IOException {
Konto konto = bank.findeKonto(kontonummer); Konto konto = bank.findeKonto(kontonummer);
konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getKunde().getName()); konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getKunde().getName());
@ -91,27 +102,6 @@ public class Banksystem {
return erg; return erg;
} }
public String[] erstelleKontoauszug(int kontonummer) {
Konto konto = bank.findeKonto(kontonummer);
return konto.getKontobewegungen();
}
public Kontoart checkKontoart(int kontonummer){
Konto konto = bank.findeKonto(kontonummer);
if(konto instanceof Girokonto){
return Kontoart.Girokonto;
}
else if(konto instanceof Depot){
return Kontoart.Depot;
}
else{
return Kontoart.Sparkonto;
}
}
public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck)
throws IOException { throws IOException {
Konto start = bank.findeKonto(startkonto); Konto start = bank.findeKonto(startkonto);
@ -133,11 +123,10 @@ public class Banksystem {
return false; return false;
} }
public String[] erstelleKontoauszug(int kontonummer) {
public long getKontostand(int kontonummer) {
Konto konto = bank.findeKonto(kontonummer); Konto konto = bank.findeKonto(kontonummer);
return konto.getKontostand(); return konto.getKontobewegungen();
} }
public long saldoBestimmen(int kontonummer, int anzahl) { public long saldoBestimmen(int kontonummer, int anzahl) {
@ -146,16 +135,55 @@ public class Banksystem {
return konto.berechneSaldo(anzahl); return konto.berechneSaldo(anzahl);
} }
public HashMap<Integer, Konto> getKonten() { public boolean aktienKauf(int kontonummer, int anzahl, String aktienName){
return bank.getKonten();
Konto konto = bank.findeKonto(kontonummer);
if(konto instanceof Depot){
boolean erg = ((Depot) konto).aktienAuszahlung(anzahl, aktienName);
try {
Persistenz.speichereBankDaten(this.bank, bank.getName());
} catch (IOException e) {
e.printStackTrace();
} }
public Kunde addNewKunde(String name, String surname, int age) throws IOException { return erg;
}
bank.addNewKunde(name, surname, age);
Persistenz.speichereBankDaten(this.bank, bank.getName());
return bank.getKundenMap().get(bank.getKundenMap().size() - 1);
return false;
}
public Kontoart checkKontoart(int kontonummer){
Konto konto = bank.findeKonto(kontonummer);
if(konto instanceof Girokonto){
return Kontoart.Girokonto;
}
else if(konto instanceof Depot){
return Kontoart.Depot;
}
else{
return Kontoart.Sparkonto;
}
}
public String getBankname() {
return bank.getName();
}
public long getKontostand(int kontonummer) {
Konto konto = bank.findeKonto(kontonummer);
return konto.getKontostand();
}
public HashMap<Integer, Konto> getKonten() {
return bank.getKonten();
} }
public Bank getBank() { public Bank getBank() {
@ -187,23 +215,4 @@ public class Banksystem {
return bank.getAktienPreis(aktienName); return bank.getAktienPreis(aktienName);
} }
public boolean aktienKauf(int kontonummer, int anzahl, String aktienName){
Konto konto = bank.findeKonto(kontonummer);
if(konto instanceof Depot){
boolean erg = ((Depot) konto).aktienAuszahlung(anzahl, aktienName);
return erg;
}
return false;
}
} }

View File

@ -65,7 +65,78 @@ public class TUI {
System.out.println("Auf Wiedersehen!"); System.out.println("Auf Wiedersehen!");
} // hauptmenü } // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ
private void kundeRegistrieren(){
System.out.println("Bitte die folgenden Daten eingeben: ");
System.out.println("Vorname: ");
String vorname = sc.nextLine();
System.out.println("Nachname: ");
String nachname = sc.nextLine();
System.out.println("Alter:");
int alter = Integer.parseInt(sc.nextLine());
try {
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter));
} catch (Exception e) {
e.printStackTrace();
}
}
private void login(){
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Login erfolgreich!");
} else {
System.err.println("Kunde nicht gefunden!");
}
}
private void kontoAnlegen() throws IOException{
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Welche Art von Konto möchten Sie anlegen?");
Kontoart[] kontoarten = Kontoart.values();
for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
}
System.out.println("> ");
int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]);
System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt.");
} else {
System.err.println("Kunde nicht gefunden!");
}
}
private void kontenAnzeigen() {
String[] konten = bs.getKontenlisteForKunde();
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 kontoAuswählen(){ private void kontoAuswählen(){
@ -251,93 +322,6 @@ public class TUI {
} }
private void aktienKaufen() {
System.out.println("Aktien kaufen");
System.out.println("Bitte geben Sie die Kontonummer ein: ");
int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Folgende Aktien sind Verfügbar");
System.out.println("1 -> Deutsche Bank AG (DBK.DE)\n2 -> Deere & Company (DCO.DE)");
System.out.println("Bitte geben Sie den Namen in Klammern ein um den Preis zu sehen:");
String aktienName = sc.nextLine();
System.out.println("Preis der Aktie");
System.out.println(bs.getAktienPreis(aktienName));
System.out.println("Bitte geben Sie die Anzahl der Aktien ein, die Sie kaufen möchten: ");
int anzahl = Integer.parseInt(sc.nextLine());
boolean erg = bs.aktienKauf(kontonummer, anzahl, aktienName);
System.out.printf("Aktienkauf" + ((!erg)? " nicht" : "" ) + " erfolgreich. ");
}
private void kontoAnlegen() throws IOException{
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Welche Art von Konto möchten Sie anlegen?");
Kontoart[] kontoarten = Kontoart.values();
for (int i = 0; i < kontoarten.length; i++) {
System.out.println(" " + kontoarten[i] + " " + "(" + (i+1) + ")");
}
System.out.println("> ");
int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]);
System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt.");
} else {
System.err.println("Kunde nicht gefunden!");
}
}
private void login(){
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.println("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Login erfolgreich!");
} else {
System.err.println("Kunde nicht gefunden!");
}
}
private void kundeRegistrieren(){
System.out.println("Bitte die folgenden Daten eingeben: ");
System.out.println("Vorname: ");
String vorname = sc.nextLine();
System.out.println("Nachname: ");
String nachname = sc.nextLine();
System.out.println("Alter:");
int alter = Integer.parseInt(sc.nextLine());
try {
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter));
} catch (Exception e) {
e.printStackTrace();
}
}
private void kontenAnzeigen() {
String[] konten = bs.getKontenlisteForKunde();
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 geldEinzahlen() throws Exception { private void geldEinzahlen() throws Exception {
int kontonummer = 0; int kontonummer = 0;
@ -382,6 +366,7 @@ public class TUI {
} }
private void geldAuszahlen() throws Exception { private void geldAuszahlen() throws Exception {
int kontonummer = 0; int kontonummer = 0;
@ -427,6 +412,7 @@ public class TUI {
} }
private void kontoauszugDrucken() { private void kontoauszugDrucken() {
System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: ");
int kontonummer = Integer.parseInt(sc.nextLine()); int kontonummer = Integer.parseInt(sc.nextLine());
@ -442,6 +428,7 @@ public class TUI {
System.out.println("Noch keine Kontobewegungen."); System.out.println("Noch keine Kontobewegungen.");
} }
private void überweisungBeauftragen() throws Exception { private void überweisungBeauftragen() throws Exception {
System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: "); System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: ");
int startkonto = Integer.parseInt(sc.nextLine()); int startkonto = Integer.parseInt(sc.nextLine());
@ -460,6 +447,7 @@ public class TUI {
System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt.");
} }
private void saldoAbfragen() { private void saldoAbfragen() {
System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: "); System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: ");
int konto = Integer.parseInt(sc.nextLine()); int konto = Integer.parseInt(sc.nextLine());
@ -471,4 +459,26 @@ public class TUI {
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 void aktienKaufen() {
System.out.println("Aktien kaufen");
System.out.println("Bitte geben Sie die Kontonummer ein: ");
int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Folgende Aktien sind Verfügbar");
System.out.println("1 -> Deutsche Bank AG (DBK.DE)\n2 -> Deere & Company (DCO.DE)");
System.out.println("Bitte geben Sie den Namen in Klammern ein um den Preis zu sehen:");
String aktienName = sc.nextLine();
System.out.println("Preis der Aktie");
System.out.println(bs.getAktienPreis(aktienName));
System.out.println("Bitte geben Sie die Anzahl der Aktien ein, die Sie kaufen möchten: ");
int anzahl = Integer.parseInt(sc.nextLine());
boolean erg = bs.aktienKauf(kontonummer, anzahl, aktienName);
System.out.printf("Aktienkauf" + ((!erg)? " nicht" : "" ) + " erfolgreich. ");
}
} }