From fe19b7a082154c20b5df650660708ecc7f1f91aa Mon Sep 17 00:00:00 2001 From: robinschumann Date: Fri, 21 Oct 2022 10:40:02 +0200 Subject: [PATCH] Girokonto dazu --- Bank-Beispiel/.project | 2 +- .../informatik/bank/domain/Konto.java | 46 ++++++-- .../informatik/bank/facade/Banksystem.java | 55 ++++++++-- .../de/hs_mannheim/informatik/bank/ui/UI.java | 100 +++++++++++++++--- 4 files changed, 168 insertions(+), 35 deletions(-) diff --git a/Bank-Beispiel/.project b/Bank-Beispiel/.project index 49c2c92..99200ff 100644 --- a/Bank-Beispiel/.project +++ b/Bank-Beispiel/.project @@ -1,6 +1,6 @@ - Bank-Beispiel + Bank-Beispiel_Robin diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java index bf376db..d10ecfc 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Konto.java @@ -1,27 +1,26 @@ package de.hs_mannheim.informatik.bank.domain; - +import java.util.ArrayList; public class Konto { private static int kontozähler = 0; - + private int nummer; private long stand = 0; private String inhaber; - - - + private ArrayList kontobewegung; public Konto(String inhaber) { nummer = 1000 + kontozähler++; this.inhaber = inhaber; + this.kontobewegung = new ArrayList<>(); } - + public int getKontonummer() { return nummer; } - + public void setStand(long einzahlung) { this.stand = einzahlung; } @@ -34,9 +33,38 @@ public class Konto { public long getStand() { return stand; } - + public String getInhaber() { return inhaber; } - + + public void einzahlen(long einzahlen, String betreff, String art, String auftraggeber) { + stand += einzahlen; + + kontobewegung.add(new Kontobewegung(einzahlen, betreff, art, auftraggeber)); + + } + + public boolean auszahlen(long auszahlen, String betreff, String art, String auftraggeber) { + if ((stand - auszahlen) >= 0) { + stand -= auszahlen; + kontobewegung.add(new Kontobewegung(auszahlen, betreff, art, auftraggeber)); + + return true; + + } + return false; + + } + + public String[] getKontoBewegungen() { + String[] bewegungen = new String[kontobewegung.size()]; + int i = 0; + for (Kontobewegung kb : kontobewegung) { + bewegungen[i++] = kb.toString(); + } + + return bewegungen; + } + } 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 22977b7..35f92c4 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 @@ -1,25 +1,33 @@ package de.hs_mannheim.informatik.bank.facade; -import java.util.ArrayList; + import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Konto; +import de.hs_mannheim.informatik.bank.domain.Girokonto; public class Banksystem { private Bank bank; - ArrayList kontoauszug = new ArrayList<>(); + // ArrayList kontoauszug = new ArrayList<>(); public Banksystem(String bankname) { this.bank = new Bank(bankname); } - public int kontoAnlegen(String name) { + public int sparkontoAnlegen(String name) { Konto k = new Konto(name); bank.addKonto(k); return k.getKontonummer(); } + + public int girokontoAnlegen(String name) { + Girokonto k = new Girokonto (name); + bank.addKonto(k); + + return k.getKontonummer(); + } public String[] getKontenliste() { Collection konten = bank.getKontenliste(); @@ -39,11 +47,24 @@ public class Banksystem { public long geldEinzahlen(int kontonummer, long einzahlen) { Konto konto = bank.getKonto(kontonummer); - long alterStand = konto.getStand(); - long neuerStand = alterStand + einzahlen; - konto.setStand(neuerStand); - return neuerStand; + String Inhaber = konto.getInhaber(); + konto.einzahlen(einzahlen, "Einzahlung", "Einzahlung am Schalter", Inhaber); + return konto.getStand(); + + } + + public long geldAuszahlen(int kontonummer, long auszahlen) { + Konto konto = bank.getKonto(kontonummer); + String Inhaber = konto.getInhaber(); + boolean funktioniert = konto.auszahlen(auszahlen, "Auszahlung", "Auszahlung am Schalter", Inhaber); + + if (funktioniert == false) { + System.out.println("Das geht nicht, Konto ist nicht ausreichend gedeckt. "); + //geldAuszahlen(kontonummer,auszahlen); + } + + return konto.getStand(); } public boolean prüfeKonto(int kontonummer) { @@ -60,13 +81,15 @@ public class Banksystem { return konto.getStand(); } - public void kontoauszugErstellen(int kontonummer) { - for (int i = 0; i < kontoauszug.size(); i++) { - System.out.println(kontoauszug.get(i)); + public String[] kontoauszugErstellen(int kontonummer) { + Konto konto = bank.getKonto(kontonummer); + return konto.getKontoBewegungen(); + } - } + + /* public void kontobewegung(long einzahlen) { if (einzahlen < 0) { String Auszahlung = einzahlen + "" + " (Auszahlung)"; @@ -78,6 +101,7 @@ public class Banksystem { } } + */ public String getKontoinhaber(int kontonummer) { Konto k = bank.getKonto(kontonummer); @@ -86,5 +110,14 @@ public class Banksystem { } + public boolean überweisen(int kontonummer, int zielkontonummer, long betrag, String Verwendungszweck) { + Konto start = bank.getKonto(kontonummer); + Konto ziel = bank.getKonto(zielkontonummer); + + if (start instanceof Girokonto && ziel instanceof Girokonto) { + return ((Girokonto)start).überweisung((Girokonto)ziel, betrag, Verwendungszweck); + } + return false; + } } 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 c009717..22556b4 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 @@ -23,8 +23,10 @@ public class UI { System.out.println("1 -> Konten anzeigen"); System.out.println("2 -> Konto anlegen"); System.out.println("3 -> Einzahlen auf ein Konto"); - System.out.println("4 -> Kontostand anzeigen"); - System.out.println("5 -> Kontoauszug erstellen"); + System.out.println("4 -> Auszahlen von einem Konto"); + System.out.println("5 -> Kontostand anzeigen"); + System.out.println("6 -> Kontoauszug erstellen"); + System.out.println("7 -> Überweisung tätigen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -43,10 +45,17 @@ public class UI { kontoEinzahlen(); break; case 4: - kontostandAnzeigen(); + kontoAuszahlen(); break; case 5: + kontostandAnzeigen(); + break; + case 6: kontoauszugErstellen(); + break; + case 7: + überweisenKonto(); + break; case 9: break mainloop; } @@ -56,6 +65,34 @@ public class UI { } // hauptmenü + private void überweisenKonto() { + System.out.println("Von welchem Konto möchten Sie überweisen?"); + int kontonummer = Integer.parseInt(sc.nextLine()); + + System.out.println("Welches ist das Zielkonto?"); + int zielkontonummer = Integer.parseInt(sc.nextLine()); + + System.out.println("Wie viel möchten Sie überweisen?"); + long betrag = Long.parseLong(sc.nextLine()); + + System.out.println("Bitte geben Sie einen Verwendungszweck an: "); + String Verwendungszweck = sc.nextLine(); + + boolean konto1 = bs.prüfeKonto(kontonummer); + boolean konto2 = bs.prüfeKonto(zielkontonummer); + + if (konto1 == true && konto2 == true) { + boolean erfolgreich = bs.überweisen(kontonummer, zielkontonummer, betrag, Verwendungszweck); + if (erfolgreich == true) { + System.out.println("Die Überweisung war erfolgreich. "); + } else { + System.out.println("Die Überweisung hat nicht funktioniert. (Konto nicht gedeckt? "); + } + + } + + } + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { @@ -69,11 +106,27 @@ public class UI { } private void kontoAnlegen() { + int kontonummer; System.out.println("Bitte den Namen des Kontoinhabers angeben: "); String name = sc.nextLine(); - int kontonummer = bs.kontoAnlegen(name); - System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + System.out.println("Was für ein Konto möchten Sie anlegen? (1) für Sparkonto (2) für Girokonto"); + int eingabe = Integer.parseInt(sc.nextLine()); + switch (eingabe) { + + case 1: + kontonummer = bs.sparkontoAnlegen(name); + System.out.println("Sparkonto mit der Nummer " + kontonummer + " neu angelegt."); + break; + case 2: + kontonummer = bs.girokontoAnlegen(name); + System.out.println("Sparkonto mit der Nummer " + kontonummer + " neu angelegt."); + break; + + } + + // int kontonummer = bs.kontoAnlegen(name); + // System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } private void kontoEinzahlen() { @@ -89,14 +142,34 @@ public class UI { System.out.println("Wie viel möchten Sie einzahlen?"); long einzahlen = Long.parseLong(sc.nextLine()); - long kontostand = bs.geldEinzahlen(kontonummer, einzahlen); - System.out.println("Der Kontostand beträgt: " + kontostand); - bs.kontobewegung(einzahlen); + long neuerKontostand = bs.geldEinzahlen(kontonummer, einzahlen); + System.out.println("Der Kontostand beträgt: " + neuerKontostand); + // bs.kontobewegung(einzahlen); } else { kontoEinzahlen(); } } + private void kontoAuszahlen() { + System.out.println("Aus welchem Konto wollen Sie auszahlen?"); + int kontonummer = Integer.parseInt(sc.nextLine()); + + // Prüfung ob Konto existiert + boolean existiert = bs.prüfeKonto(kontonummer); + if (existiert == true) { + + System.out.println("Wie viel möchten Sie abheben?"); + long auszahlen = Long.parseLong(sc.nextLine()); + + long neuerKontostand = bs.geldAuszahlen(kontonummer, auszahlen); + System.out.println("Der Kontostand beträgt: " + neuerKontostand); + // bs.kontobewegung(auszahlen); + } else { + kontoAuszahlen(); + } + + } + private void kontostandAnzeigen() { System.out.println("Welcher Kontostand soll angezeigt werden? "); int kontonummer = Integer.parseInt(sc.nextLine()); @@ -114,15 +187,14 @@ public class UI { private void kontoauszugErstellen() { System.out.println("Von welchem Konto soll ein Kontoauszug erstellt werden? "); int kontonummer = Integer.parseInt(sc.nextLine()); - + // Prüfung ob Konto existiert boolean existiert = bs.prüfeKonto(kontonummer); if (existiert == true) { - String Inhaber = bs.getKontoinhaber(kontonummer); - System.out.println("Kontoauszug für das Konto: " + kontonummer + ". Der Inhaber des Kontos ist: " + Inhaber); - System.out.println("----------"); - bs.kontoauszugErstellen(kontonummer); - System.out.println("----------"); + String[] Kontoauszug = bs.kontoauszugErstellen(kontonummer); + for (String kb : Kontoauszug) { + System.out.println(kb); + } } else { kontoauszugErstellen(); }