New: removed ui & added gui

gui
Caner 2022-11-28 14:26:04 +01:00
parent 9ad8c5760b
commit 50e4fd4aaf
5 changed files with 138 additions and 721 deletions

View File

@ -1,7 +1,8 @@
package de.hs_mannheim.informatik.bank;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
import de.hs_mannheim.informatik.bank.ui.UI;
import de.hs_mannheim.informatik.bank.gui.KontoAnlegenFrame;
import de.hs_mannheim.informatik.bank.gui.KontoListingFrame;
public class Main {
@ -9,7 +10,11 @@ public class Main {
Banksystem bs = new Banksystem("Spaßkasse Mannheim");
UI ui = new UI(bs);
KontoAnlegenFrame kaf = new KontoAnlegenFrame(bs);
kaf.setVisible(true);
KontoListingFrame klf = new KontoListingFrame(bs);
klf.setVisible(true);
}

View File

@ -46,7 +46,7 @@ public class Banksystem {
}
public int kontoAnlegen(Kunde kunde, Kontoart kontoart){
public int kontoAnlegen(Kunde kunde, Kontoart kontoart) {
int kontonummer = bank.addKonto(kunde, kontoart);
try {

View File

@ -0,0 +1,70 @@
package de.hs_mannheim.informatik.bank.gui;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import de.hs_mannheim.informatik.bank.domain.Kontoart;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class KontoAnlegenFrame extends JFrame implements ActionListener {
private JTextField eingabe;
private JTextArea ausgabe;
private JButton ok;
private Banksystem bs;
public KontoAnlegenFrame(Banksystem bs) {
this.bs = bs;
this.setTitle(bs.getBankname());
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
eingabe = new JTextField(20);
ausgabe = new JTextArea(10, 20);
ausgabe.setLineWrap(true);
ausgabe.setWrapStyleWord(true);
JScrollPane sp = new JScrollPane(ausgabe);
ok = new JButton("Konto anlegen");
ok.addActionListener(this);
this.add(eingabe, "North");
this.add(sp, "Center");
this.add(ok, "South");
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Konto anlegen...");
try {
int knr = bs.kontoAnlegen(bs.getCurrentKunde(), Kontoart.Sparkonto);
this.ausgabe.append("Neus Konto angelegt: " + knr + "\n");
} catch (Exception e1) {
e1.printStackTrace();
}
}
}

View File

@ -0,0 +1,60 @@
package de.hs_mannheim.informatik.bank.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class KontoListingFrame extends JFrame implements ActionListener{
private JTextField eingabe;
private JTextArea ausgabe;
private JButton ok;
private Banksystem bs;
public KontoListingFrame(Banksystem bs) {
this.bs = bs;
this.setTitle(bs.getBankname());
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
eingabe = new JTextField(20);
ausgabe = new JTextArea(5, 20);
ausgabe.setLineWrap(true);
ausgabe.setWrapStyleWord(true);
JScrollPane sp = new JScrollPane(ausgabe);
ok = new JButton("Kontenliste abrufen");
ok.addActionListener(this);
this.add(eingabe, "North");
this.add(sp, "Center");
this.add(ok, "South");
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Kontenliste abrufen...");
ausgabe.setText("");
String[] konten = bs.getKontenlisteForKunde();
for (String konto : konten) {
ausgabe.append(konto + "\n");
}
}
}

View File

@ -1,718 +0,0 @@
package de.hs_mannheim.informatik.bank.ui;
import java.io.IOException;
import java.util.Scanner;
import de.hs_mannheim.informatik.bank.domain.Kontoart;
import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class UI {
private Banksystem bs;
Scanner sc = new Scanner(System.in);
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("0 -> Kundenkonto erstellen");
System.out.println("1 -> Login");
System.out.println("2 -> Konto anlegen");
System.out.println("3 -> Konten anzeigen");
System.out.println("4 -> Konto auswählen");
System.out.println("5 -> Beenden");
System.out.println();
System.out.print("> ");
int input = Integer.parseInt(sc.nextLine());
System.out.println();
try {
switch (input) {
case 0:
kundeRegistrieren();
break;
case 1:
login();
break;
case 2:
kontoAnlegen();
break;
case 3:
kontenAnzeigen();
break;
case 4:
kontoAuswählen();
break;
case 5:
break mainloop;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
System.out.println();
}
System.out.println("Auf Wiedersehen!");
} // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ // HAUPTMENÜ
private void kundeRegistrieren(){
boolean running = true;
while(running){
System.out.println("Bitte geben Sie die folgenden Daten ein: ");
System.out.print("Vorname: ");
String vorname = sc.nextLine();
System.out.print("Nachname: ");
String nachname = sc.nextLine();
System.out.print("Alter:");
int alter = Integer.parseInt(sc.nextLine());
try {
bs.setCurrentKunde(bs.addNewKunde(vorname, nachname, alter));
} catch (Exception e) {
System.err.println("Kundenkonto konnte nicht erstellt werden!");
e.printStackTrace();
break;
}
System.out.println("Ihr Kundenkonto mit der ID [" + bs.getKundenID() + "] wurde erstellt.");
running = false;
}
}
private void login(){
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.print("> ");
int kundenID = Integer.parseInt(sc.nextLine());
bs.setCurrentKunde(bs.getKunde(kundenID));
if(bs.getCurrentKunde() != null){
System.out.println("Login erfolgreich!");
running = false;
} else {
System.err.println("Kunde nicht gefunden!");
break;
}
} catch (Exception e) {
System.err.println("Login fehlgeschlagen!");
e.printStackTrace();
running = false;
}
}
}
private void kontoAnlegen() throws IOException{
boolean running = true;
while(running){
try {
System.out.println("Bitte geben Sie Ihre Kunden ID ein: ");
System.out.print("> ");
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.print("> ");
int auswahl = Integer.parseInt(sc.nextLine());
int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(),kontoarten[auswahl-1]);
System.out.println("Ihr ausgewähltes Konto mit der " + kontonummer + " neu angelegt.");
running = false;
} else {
System.err.println("Kunde nicht gefunden!");
break;
}
} catch (Exception e) {
System.err.println("Konto konnte nicht angelegt werden!");
e.printStackTrace();
running = false;
}
}
}
private void kontenAnzeigen() {
try {
String[] konten = bs.getKontenlisteForKunde();
if (konten.length > 0) {
System.out.println("Sie haben aktuell folgende Konten zur Verfügung:");
for (String s : konten) {
System.out.println(s);
}
} else {
System.out.println("Sie haben bisher keine Konten angelegt");
}
} catch (Exception e) {
System.err.println("Konten konnten nicht laden!");
e.printStackTrace();
}
}
private void aktienAnzeigen(){
try {
String[] aktien = bs.getAktienliste();
if (aktien.length > 0) {
System.out.println("Sie haben folgende Aktien im Besitz: ");
for (String s : aktien) {
System.out.println(s);
}
} else {
System.out.println("Bisher keine Aktien gekauft.");
}
} catch (Exception e) {
System.err.println("Aktien konnten nicht laden!");
e.printStackTrace();
}
}
private void kontoAuswählen(){
boolean running = true;
kontenAnzeigen();
System.out.println("Bitte geben Sie die Kontonummer ihres Kontos ein mit dem Sie weiterarbeiten wollen");
int kontonummer = Integer.parseInt(sc.nextLine());
if(bs.checkKontoart(kontonummer).equals(Kontoart.Sparkonto)){
if(bs.getKonten().containsKey(kontonummer)){
while(running){
System.out.println("--------");
System.out.println("Kontomenü");
System.out.println("0 -> Geld einzahlen");
System.out.println("1 -> Geld auszahlen");
System.out.println("2 -> Kontoauszug drucken");
System.out.println("3 -> Saldo abfragen");
System.out.println("4 -> Zurück zum Hauptmenü");
System.out.print("> ");
int input = Integer.parseInt(sc.nextLine());
System.out.println();
try {
switch (input) {
case 0:
geldEinzahlen();
break;
case 1:
geldAuszahlen();
break;
case 2:
kontoauszugDrucken();
break;
case 3:
saldoAbfragen();
break;
case 4:
running = false;
break;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
System.out.println();
}
} else {
System.out.println("Kontonummer nicht gefunden");
}
}
else if (bs.checkKontoart(kontonummer).equals(Kontoart.Girokonto)){
if(bs.getKonten().containsKey(kontonummer)){
while(running) {
System.out.println("--------");
System.out.println("Kontomenü");
System.out.println("0 -> Geld einzahlen");
System.out.println("1 -> Geld auszahlen");
System.out.println("2 -> Kontoauszug drucken");
System.out.println("3 -> Überweisung beauftragen");
System.out.println("4 -> Saldo abfragen");
System.out.println("5 -> Zurück zum Hauptmenü");
System.out.println();
System.out.print("> ");
int input = Integer.parseInt(sc.nextLine());
System.out.println();
try {
switch (input) {
case 0:
geldEinzahlen();
break;
case 1:
geldAuszahlen();
break;
case 2:
kontoauszugDrucken();
break;
case 3:
überweisungBeauftragen();
break;
case 4:
saldoAbfragen();
break;
case 5:
running = false;
break;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
System.out.println();
}
} else {
System.out.println("Kontonummer nicht gefunden");
}
}
else if (bs.checkKontoart(kontonummer).equals(Kontoart.Depot)){
if(bs.getKonten().containsKey(kontonummer)){
while(running) {
System.out.println("--------");
System.out.println("Kontomenü");
System.out.println("0 -> Geld einzahlen");
System.out.println("1 -> Geld auszahlen");
System.out.println("2 -> Kontoauszug drucken");
System.out.println("3 -> Überweisung beauftragen");
System.out.println("4 -> Saldo abfragen");
System.out.println("5 -> Aktien kaufen");
System.out.println("6 -> Aktien anzeigen");
System.out.println("7 -> Zurück zum Hauptmenü");
System.out.println();
System.out.print("> ");
int input = Integer.parseInt(sc.nextLine());
System.out.println();
try {
switch (input) {
case 0:
geldEinzahlen();
break;
case 1:
geldAuszahlen();
break;
case 2:
kontoauszugDrucken();
break;
case 3:
überweisungBeauftragen();
break;
case 4:
saldoAbfragen();
break;
case 5:
aktienKaufen();
break;
case 6:
aktienAnzeigen();
break;
case 7:
running = false;
break;
}
} catch (Exception e) {
System.err.println(e.getLocalizedMessage());
}
System.out.println();
}
} else {
System.out.println("Kontonummer nicht gefunden");
}
} else {
System.out.println("Kontonummer nicht gefunden");
}
}
private void geldEinzahlen() throws Exception {
int kontonummer = 0;
double betrag = 0;
boolean running = true;
while(running) {
System.out.print("Bitte geben Sie ihre Kontonummer ein: ");
try {
kontonummer = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(kontonummer)){
System.out.print("Bitte geben Sie den Betrag ein: ");
try {
betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Zahl sein!");
continue;
}
} else {
System.out.println("Kontonummer existiert nicht!");
break;
}
} catch (NumberFormatException nfe) {
System.err.println("Kontonummer muss eine Zahl sein!");
continue;
}
running = false;
}
long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100);
System.out.printf("Einzahlung erfolgreich, Ihr neuer Kontostand beträgt: %.2f€", (neuerKontostand) / 100.0);
}
private void geldAuszahlen() throws Exception {
int kontonummer = 0;
double betrag = 0;
boolean running = true;
while(running){
System.out.print("Bitte geben Sie ihre Kontonummer ein: ");
try {
kontonummer = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(kontonummer)){
System.out.println("Ihr aktueller Kontostand beträgt " + bs.getKontostand(kontonummer) / 100 + "€");
System.out.print("Bitte geben Sie den Betrag zum abheben ein: ");
try {
betrag = Double.parseDouble(sc.nextLine());
} catch (NumberFormatException nfe) {
System.err.println("Betrag muss eine Zahl sein!");
continue;
}
} else {
System.out.println("Kontonummer existiert nicht!");
break;
}
} catch (NumberFormatException nfe) {
System.err.println("Kontonummer muss eine Zahl sein!");
continue;
}
running = false;
}
boolean erfolg = bs.geldAuszahlen(kontonummer, (long) betrag * 100);
long neuerKontostand = bs.getKontostand(kontonummer) / 100;
System.out.printf("Auszahlung" + ((!erfolg)? " nicht" : "" ) + " erfolgreich. ");
System.out.println("Ihr neuer Kontostand beträgt: " + neuerKontostand + "€");
}
private void kontoauszugDrucken() {
boolean running = true;
while(running){
try {
System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: ");
int kontonummer = Integer.parseInt(sc.nextLine());
System.out.println("Auszug für Konto " + kontonummer);
String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer);
try {
if (kontobewegungen.length > 0)
for (String kb : kontobewegungen) {
System.out.println(kb);
}
running = false;
} catch (Exception e) {
System.out.println("Keine Kontobewegungen vorhanden");
running = false;
}
} catch (Exception e) {
System.err.println("Kontoauszug fehlgeschlagen!");
e.printStackTrace();
break;
}
}
}
private void überweisungBeauftragen() throws Exception {
boolean running = true;
int startkonto = 0;
int zielkonto = 0;
double betrag = 0;
String verwendungszweck = "";
while (running) {
System.out.print("Bitte geben Sie die Kontonummer des Ausgangskontos der Überweisung ein: ");
try {
startkonto = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(startkonto)){
System.out.print("Bitte geben Sie die Kontonummer des Zielkontos der Überweisung ein: ");
try {
zielkonto = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(zielkonto)){
System.out.print("Bitte geben Sie den gewünschten Überweisungsbetrag ein: ");
try {
betrag = Double.parseDouble(sc.nextLine());
} catch (Exception e) {
System.err.println("Betrag muss eine Zahl sein!");
e.printStackTrace();
break;
}
System.out.print("Bitte geben Sie den Verwendungszweck ein: ");
verwendungszweck = sc.nextLine();
} else {
System.out.println("Zielkonto existiert nicht!");
break;
}
} catch (Exception e) {
System.err.println("Kontonummer muss eine Zahl sein!");
e.printStackTrace();
break;
}
} else {
System.out.println("Startkonto existiert nicht!");
break;
}
} catch (Exception e) {
System.err.println("Kontonummer muss eine Zahl sein!");
e.printStackTrace();
break;
}
running = false;
}
boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long) (betrag * 100), verwendungszweck);
System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt.");
}
private void saldoAbfragen() {
boolean running = true;
int kontonummer = 0;
int anzahl = 0;
while(running) {
System.out.print("Geben Sie bitte die Kontonummer des gewünschten Kontos ein: ");
try {
kontonummer = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(kontonummer)){
System.out.print("Bitte geben Sie die Anzahl der Kontobewegungen für den Saldo ein: ");
try {
anzahl = Integer.parseInt(sc.nextLine());
} catch (Exception e) {
System.err.println("die Anzahl muss eine Zahl sein!");
e.printStackTrace();
break;
}
} else {
System.out.println("Kontonummer existiert nicht");
break;
}
} catch (Exception e) {
System.err.println("Kontonummer muss eine Zahl sein!");
e.printStackTrace();
break;
}
running = false;
}
long saldo = bs.saldoBestimmen(kontonummer, anzahl);
System.out.printf("Der Saldo nach %d Kontobewegungen beträgt %.2f Euro.%n", anzahl, (saldo / 100d));
}
private void aktienKaufen() {
boolean running = true;
int kontonummer = 0;
int anzahl = 0;
String aktienName = "";
while (running) {
System.out.println("Aktien kaufen");
System.out.print("Bitte geben Sie die Kontonummer ein: ");
try {
kontonummer = Integer.parseInt(sc.nextLine());
if(bs.getKonten().containsKey(kontonummer)){
System.out.println("Folgende Aktien sind Verfügbar");
System.out.println("1 -> Deutsche Bank AG (DBK.DE)\n2 -> Deere & Company (DCO.DE)");
System.out.print("Bitte geben Sie den Namen in Klammern ein um den Preis zu sehen:");
aktienName = sc.nextLine();
System.out.println("Preis der Aktie");
System.out.println(bs.getAktienPreis(aktienName));
System.out.print("Bitte geben Sie die Anzahld er Aktien ein, die sie kaufen möchten: ");
try {
anzahl = Integer.parseInt(sc.nextLine());
} catch (Exception e) {
System.err.println("Die Anzahl muss eine Zahl sein!");
e.printStackTrace();
break;
}
} else {
System.out.println("Kontonummer existiert nicht!");
break;
}
} catch (Exception e) {
System.err.println("Kontonummer muss eine Zahl sein!");
e.printStackTrace();
break;
}
running = false;
}
boolean erg = bs.aktienKauf(kontonummer, anzahl, aktienName);
System.out.printf("Aktienkauf" + ((!erg)? " nicht" : "" ) + " erfolgreich. ");
}
}