From 2d4bee61bfc16dfb092595cede6bcebd247ebd0a Mon Sep 17 00:00:00 2001 From: Caner Date: Mon, 14 Nov 2022 23:34:50 +0100 Subject: [PATCH] =?UTF-8?q?New:=20Depot=20Klasse=20erstellt=20und=20UI=20d?= =?UTF-8?q?af=C3=BCr=20verbessert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../informatik/bank/domain/Bank.java | 17 +++- .../informatik/bank/domain/Depot.java | 50 +++++++++++ .../informatik/bank/domain/Girokonto.java | 3 +- .../informatik/bank/facade/Banksystem.java | 39 +++++--- .../bank/gui/KontoListingFrame.java | 90 +++++++++---------- .../hs_mannheim/informatik/bank/tui/TUI.java | 25 +++++- 6 files changed, 161 insertions(+), 63 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java 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 d0bb81e..aa5d05f 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 @@ -12,11 +12,16 @@ public class Bank implements Serializable { private HashMap kundenMap = new HashMap<>(); private int kontozähler; private int kundenzähler; + private String aktienName; + private int aktienPreis; + public Bank(String name) { this.name = name; this.kontozähler = -1; this.kundenzähler = -1; + this.aktienName = "BMW"; + this.aktienPreis = 20; } public int addKonto(Kunde kundenMap, int auswahl) { @@ -24,8 +29,11 @@ public class Bank implements Serializable { if (auswahl == 1) k = new Konto(kundenMap, ++kontozähler); - else + else if (auswahl == 2) k = new Girokonto(kundenMap, ++kontozähler); + else { + k = new Depot(kundenMap, ++kontozähler); + } konten.put(k.getKontonummer(), k); kundenMap.addKonto(k); @@ -88,5 +96,12 @@ public class Bank implements Serializable { return k.getKonten(); } + public String getAktienName() { + return this.aktienName; + } + + public int getAktienPreis() { + return aktienPreis; + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java new file mode 100644 index 0000000..40032a3 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java @@ -0,0 +1,50 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class Depot extends Konto{ + + + public Depot(Kunde kunde, int kontozähler) { + super(kunde, kontozähler); + } + + @Override + public String toString() { + return "Depot mit der Kontonummer " + super.getKontonummer() + " angelegt."; + } + + public boolean aktienKaufen(int anzahl){ + + if (super.getKontostand() >= anzahl * 20){ + long betrag = anzahl * 20; + super.auszahlen(betrag, "Aktien", "Aktienkauf", "super.getKunde().getName()"); + + return true; + } + + return false; + + } + + + public void fileReader(String filename){ + + try { + + Scanner scanner = new Scanner(new File(filename)); + while(scanner.hasNext()){ + System.out.println(scanner.nextLine()); + } + + } catch (FileNotFoundException e) { + System.err.println("Datei nicht gefunden"); + e.printStackTrace(); + } + + } + + +} diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java index 2cb2996..786278d 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java @@ -1,9 +1,8 @@ package de.hs_mannheim.informatik.bank.domain; -import java.io.Serializable; public class Girokonto extends Konto{ - private static final long serialVersionUID = 1L; + private long dispo = 100000; public Girokonto(Kunde kunde, int kontozähler) { 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 2d3495f..c54de3a 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 @@ -5,6 +5,7 @@ import java.util.Collection; import java.util.HashMap; 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; @@ -13,6 +14,7 @@ import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; public class Banksystem { private Bank bank; private Kunde currentKunde; + public Banksystem(String bankname) { if (Persistenz.sindDatenGespeichert(bankname)) @@ -37,17 +39,6 @@ public class Banksystem { return kontonummer; } - public String[] getKontenliste() { - Collection konten = bank.getKontenliste(); - String[] liste = new String[konten.size()]; - - int i = 0; - for (Konto k : konten) { - liste[i++] = k.toString(); - } - - return liste; - } public String getBankname() { return bank.getName(); @@ -126,6 +117,24 @@ public class Banksystem { return false; } + public boolean aktienKaufen(int kontonummer, int anzahl){ + + Konto konto = bank.findeKonto(kontonummer); + + if (konto instanceof Depot){ + + boolean erfolg = ((Depot) konto).aktienKaufen(anzahl); + + + return erfolg; + } + + return false; + } + + + + public long getKontostand(int kontonummer) { Konto konto = bank.findeKonto(kontonummer); @@ -174,4 +183,12 @@ public class Banksystem { return bank.getKundenzähler(); } + public String getAktienName(){ + return bank.getAktienName(); + } + + public int getAktienPreis(){ + return bank.getAktienPreis(); + } + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/gui/KontoListingFrame.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/gui/KontoListingFrame.java index 06bc318..7134caf 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/gui/KontoListingFrame.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/gui/KontoListingFrame.java @@ -1,65 +1,65 @@ -package de.hs_mannheim.informatik.bank.gui; +// package de.hs_mannheim.informatik.bank.gui; -//import java.awt.Container; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +// //import java.awt.Container; +// 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 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; +// import de.hs_mannheim.informatik.bank.facade.Banksystem; -public class KontoListingFrame extends JFrame implements ActionListener { +// public class KontoListingFrame extends JFrame implements ActionListener { - private static final long serialVersionUID = 1L; - private JTextField eingabe; - private JTextArea ausgabe; - private JButton ok; +// private static final long serialVersionUID = 1L; +// private JTextField eingabe; +// private JTextArea ausgabe; +// private JButton ok; - private Banksystem bs; +// private Banksystem bs; - public KontoListingFrame(Banksystem bs) { - this.bs = bs; +// public KontoListingFrame(Banksystem bs) { +// this.bs = bs; - this.setTitle(bs.getBankname()); - this.setSize(300, 300); - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); +// this.setTitle(bs.getBankname()); +// this.setSize(300, 300); +// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - eingabe = new JTextField(20); +// eingabe = new JTextField(20); - ausgabe = new JTextArea(5, 20); - ausgabe.setLineWrap(true); - ausgabe.setWrapStyleWord(true); +// ausgabe = new JTextArea(5, 20); +// ausgabe.setLineWrap(true); +// ausgabe.setWrapStyleWord(true); - // Die Ausgabe automatisch scrollbar machen, wenn Sie nicht - // mehr auf den Bildschirm passen sollte. - JScrollPane sp = new JScrollPane(ausgabe); +// // Die Ausgabe automatisch scrollbar machen, wenn Sie nicht +// // mehr auf den Bildschirm passen sollte. +// JScrollPane sp = new JScrollPane(ausgabe); - ok = new JButton("Kontenliste abrufen"); - ok.addActionListener(this); +// ok = new JButton("Kontenliste abrufen"); +// ok.addActionListener(this); - //Container cp = this.getContentPane(); - this.add(eingabe, "North"); - this.add(sp, "Center"); - this.add(ok, "South"); - } +// //Container cp = this.getContentPane(); +// this.add(eingabe, "North"); +// this.add(sp, "Center"); +// this.add(ok, "South"); +// } - @Override - public void actionPerformed(ActionEvent e) { - System.out.println("Kontenliste abrufen..."); +// @Override +// public void actionPerformed(ActionEvent e) { +// System.out.println("Kontenliste abrufen..."); - ausgabe.setText(""); - String[] konten = bs.getKontenliste(); +// ausgabe.setText(""); +// String[] konten = bs.getKontenliste(); - for (String konto : konten) { - ausgabe.append(konto + "\n"); - } +// for (String konto : konten) { +// ausgabe.append(konto + "\n"); +// } - } +// } -} +// } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java index 17f3a7d..d8d4fd6 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/tui/TUI.java @@ -30,9 +30,9 @@ public class TUI { System.out.println("6 -> Kontoauszug drucken"); System.out.println("7 -> Überweisung beauftragen"); System.out.println("8 -> Saldo abfragen"); - + System.out.println("9 -> Aktien kaufen"); - System.out.println("9 -> Beenden"); + System.out.println("10 -> Beenden"); System.out.println(); System.out.print("> "); @@ -68,8 +68,10 @@ public class TUI { case 8: saldoAbfragen(); break; - case 9: + aktienKaufen(); + break; + case 10: break mainloop; } @@ -83,6 +85,21 @@ public class TUI { } // hauptmenü + private void aktienKaufen() { + + System.out.println("Aktuell verfügbare Aktien: " + bs.getAktienName() + ", Preis pro Aktie: " + bs.getAktienPreis()); + System.out.println("Geben Sie die Anzahl der Aktien ein, die Sie kaufen möchten: "); + int anzahl = Integer.parseInt(sc.nextLine()); + + System.out.println("Geben Sie Ihre Kontonummer ein: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + boolean erfolgreich = bs.aktienKaufen(kontonummer, anzahl); + + System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); + + } + private void kontoAnlegen() throws IOException{ System.out.println("Bitte geben Sie Ihre Kunden ID ein: "); System.out.println("> "); @@ -91,7 +108,7 @@ public class TUI { if(bs.getCurrentKunde() != null){ - 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 Depot (3) anlegen?"); int auswahl = Integer.parseInt(sc.nextLine()); int kontonummer = bs.kontoAnlegen(bs.getCurrentKunde(), auswahl); System.out.println("Konto mit der Kontonummer " + kontonummer + " neu angelegt.");