From 076845f3e44728e15dd10b3f4e986b5918f6940d Mon Sep 17 00:00:00 2001 From: WummerMIB Date: Sun, 6 Nov 2022 12:55:18 +0100 Subject: [PATCH] kauf aktien still buggy --- .../informatik/bank/domain/Aktien.java | 6 +-- .../informatik/bank/domain/Bank.java | 34 ++++++++------ .../informatik/bank/domain/Depot.java | 16 ++++++- .../informatik/bank/domain/Girokonto.java | 3 +- .../informatik/bank/facade/Banksystem.java | 21 +++++++++ .../de/hs_mannheim/informatik/bank/ui/UI.java | 45 ++++++++++++++++++- 6 files changed, 103 insertions(+), 22 deletions(-) diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Aktien.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Aktien.java index d111329..49ce2bc 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Aktien.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Aktien.java @@ -5,9 +5,9 @@ public class Aktien { private static int id = 0; private String name; private long kosten; - private String inhaber; + private Konto inhaber; - public Aktien(String name, long kosten, String inhaber) { + public Aktien(String name, long kosten, Konto inhaber) { super(); this.name = name; this.kosten = kosten; @@ -19,7 +19,7 @@ public class Aktien { return id; } - public void setInhaber(String inhaber) { + public void setInhaber(Konto inhaber) { this.inhaber = inhaber; } 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 f4053fa..61ada25 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 @@ -26,23 +26,14 @@ public class Bank implements Serializable { public void kaufeAktien(int kontonummer, int idAktien) { - Aktien ak1 = new Aktien("WertTest",10,"bob"); - Aktien ak2 = new Aktien("WertTest2",10,"otto"); - Girokonto gr = new Girokonto("Paul", 1020); - Girokonto gr2 = new Girokonto("Blubb", 1021); - gr.einzahlen(10000, name, name, name); - gr2.einzahlen(10000, name, name, name); - wertpapiere.put(ak1.getId(),ak1); - wertpapiere.put(ak2.getId(),ak2); - - Depot kd = (Depot) konten.get(kontonummer); + Konto kd = konten.get(kontonummer); Aktien ak = wertpapiere.get(idAktien); System.out.println(ak.toString()); if(kd instanceof Depot) { - kd.kaufeAktien(gr2, ak); - ak.setInhaber(kd.getInhaber()); + ((Depot)kd).kaufeAktien((Depot)kd, ak); + ak.setInhaber(kd); System.out.println(ak.toString()); - } + } } public int addKonto(String name, int auswahl , int id) { @@ -52,10 +43,14 @@ public class Bank implements Serializable { k = new Konto(name, ++kontozähler); Kunde ku = kunden.get(id); k.setKunde(ku);} - else { + else if(auswahl == 2) { k = new Girokonto(name, ++kontozähler); Kunde ku = kunden.get(id); k.setKunde(ku); + } else { + k = new Depot(name, ++kontozähler); + Kunde ku = kunden.get(id); + k.setKunde(ku); } konten.put(k.getKontonummer(), k); @@ -88,5 +83,16 @@ public class Bank implements Serializable { public Collection getKundenListe() { return kunden.values(); } + + public void aktieAnlegen(String aktienName, int kosten, int kontonummer) { + Aktien ak = new Aktien(aktienName,kosten,konten.get(kontonummer)); + wertpapiere.put(ak.getId(), ak); + } + + + + public Collection getAktienListe() { + return wertpapiere.values(); + } } 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 index 63f57a4..ed7248a 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java @@ -10,8 +10,8 @@ public class Depot extends Girokonto { super(inhaber, kontozähler); } - public boolean kaufeAktien(Girokonto g, Aktien ak) { - boolean erfolgreich = super.überweise(g, stand, getInhaber()); + public boolean kaufeAktien(Depot g, Aktien ak) { + boolean erfolgreich = überweise(g, stand, getInhaber()); if(erfolgreich) { wertpapiere.add(ak); return true; @@ -22,4 +22,16 @@ public class Depot extends Girokonto { public ArrayList getWertpapiere() { return wertpapiere; } + + + public boolean überweise(Depot ziel, long betrag, String zweck) { + if (super.getKontostand() - betrag >= dispo * (-1)) { + this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); + + return true; + } + + return false; + } } 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 d8f12a9..1efef4c 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 @@ -3,12 +3,13 @@ package de.hs_mannheim.informatik.bank.domain; import java.io.Serializable; public class Girokonto extends Konto implements Serializable { - private long dispo = 100000; + protected long dispo = 100000; public Girokonto(String inhaber, int kontozähler) { super(inhaber, kontozähler); } + public boolean überweise(Girokonto ziel, long betrag, String zweck) { if (super.getKontostand() - betrag >= dispo * (-1)) { this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); 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 fcc93d8..ec19754 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.io.InvalidClassException; import java.util.Collection; +import de.hs_mannheim.informatik.bank.domain.Aktien; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; @@ -117,4 +118,24 @@ public class Banksystem { public void kontoZuKunde(int kontonummer, int id) { bank.kontoZuKunde(kontonummer, id); } + + public void aktieAnlegen(String aktienName, int kosten, int kontonummer) { + bank.aktieAnlegen(aktienName, kosten, kontonummer); + } + + public String[] getAktienListe() { + Collection aktiens = bank.getAktienListe(); + String[] liste = new String[aktiens.size()]; + + int i = 0; + for (Aktien k : aktiens) { + liste[i++] = k.toString(); + } + + return liste; + } + + public void kaufeAktien(int kontonummer, int aktienId) { + bank.kaufeAktien(kontonummer,aktienId); + } } 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 d1a9f57..8ffd535 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 @@ -30,7 +30,10 @@ public class UI { System.out.println("8 -> Neuer Kunde"); System.out.println("9 -> Alle Kunden anzeigen"); System.out.println("10 -> Kunde zu Konto zuweisen"); - System.out.println("12 -> Beenden"); + System.out.println("11 -> Aktie anlegen"); + System.out.println("12 -> Alle Aktien anzeigen"); + System.out.println("13 -> Aktien kaufen"); + System.out.println("99 -> Beenden"); System.out.println(); System.out.print("> "); @@ -69,7 +72,16 @@ public class UI { case 10: kontoZuKunde(); break; + case 11: + aktienAnlegen(); + break; case 12: + aktienAnzeigen(); + break; + case 13: + aktienKaufen(); + break; + case 99: break mainloop; } @@ -83,6 +95,35 @@ public class UI { } // hauptmenü + private void aktienKaufen() { + System.out.println("Geben sie die Kontonummer ein"); + int kontonummer = returnUserInput(); + System.out.println("Geben sie die id der Aktie ein"); + int aktienId = returnUserInput(); + bs.kaufeAktien(kontonummer,aktienId); + } + + private void aktienAnzeigen() { + String[] aktien = bs.getAktienListe(); + if(aktien.length > 0) { + for(String s : aktien) { + System.out.println(s); + } + }else { + System.out.println("Bisher keine Aktien angelegt."); + } + } + + private void aktienAnlegen() { + System.out.println("Bitte geben sie den Namen der Aktie ein"); + String aktienName = sc.nextLine(); + System.out.println("Geben sie die Kosten ein"); + int kosten = returnUserInput(); + System.out.println("Welchem Konto gehört die Aktie Kontonummer eingeben"); + int kontonummer = returnUserInput(); + bs.aktieAnlegen(aktienName, kosten, kontonummer); + } + private void kontoZuKunde() { System.out.println("Geben sie die gewünschte Kontonummer ein"); int kontoNr = returnUserInput(); @@ -131,7 +172,7 @@ public class UI { 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), Girokonto (2) oder ein Depot (3) anlegen?"); int auswahl = returnUserInput(); System.out.println("Geben sie die Kundennummer ein(id)");