Girokonto dazu

main
robinschumann 2022-10-21 10:40:02 +02:00
parent f0220cd16f
commit fe19b7a082
4 changed files with 168 additions and 35 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>Bank-Beispiel</name> <name>Bank-Beispiel_Robin</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View File

@ -1,27 +1,26 @@
package de.hs_mannheim.informatik.bank.domain; package de.hs_mannheim.informatik.bank.domain;
import java.util.ArrayList;
public class Konto { public class Konto {
private static int kontozähler = 0; private static int kontozähler = 0;
private int nummer; private int nummer;
private long stand = 0; private long stand = 0;
private String inhaber; private String inhaber;
private ArrayList<Kontobewegung> kontobewegung;
public Konto(String inhaber) { public Konto(String inhaber) {
nummer = 1000 + kontozähler++; nummer = 1000 + kontozähler++;
this.inhaber = inhaber; this.inhaber = inhaber;
this.kontobewegung = new ArrayList<>();
} }
public int getKontonummer() { public int getKontonummer() {
return nummer; return nummer;
} }
public void setStand(long einzahlung) { public void setStand(long einzahlung) {
this.stand = einzahlung; this.stand = einzahlung;
} }
@ -34,9 +33,38 @@ public class Konto {
public long getStand() { public long getStand() {
return stand; return stand;
} }
public String getInhaber() { public String getInhaber() {
return inhaber; 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;
}
} }

View File

@ -1,25 +1,33 @@
package de.hs_mannheim.informatik.bank.facade; package de.hs_mannheim.informatik.bank.facade;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Bank;
import de.hs_mannheim.informatik.bank.domain.Konto; import de.hs_mannheim.informatik.bank.domain.Konto;
import de.hs_mannheim.informatik.bank.domain.Girokonto;
public class Banksystem { public class Banksystem {
private Bank bank; private Bank bank;
ArrayList<String> kontoauszug = new ArrayList<>(); // ArrayList<String> kontoauszug = new ArrayList<>();
public Banksystem(String bankname) { public Banksystem(String bankname) {
this.bank = new Bank(bankname); this.bank = new Bank(bankname);
} }
public int kontoAnlegen(String name) { public int sparkontoAnlegen(String name) {
Konto k = new Konto(name); Konto k = new Konto(name);
bank.addKonto(k); bank.addKonto(k);
return k.getKontonummer(); return k.getKontonummer();
} }
public int girokontoAnlegen(String name) {
Girokonto k = new Girokonto (name);
bank.addKonto(k);
return k.getKontonummer();
}
public String[] getKontenliste() { public String[] getKontenliste() {
Collection<Konto> konten = bank.getKontenliste(); Collection<Konto> konten = bank.getKontenliste();
@ -39,11 +47,24 @@ public class Banksystem {
public long geldEinzahlen(int kontonummer, long einzahlen) { public long geldEinzahlen(int kontonummer, long einzahlen) {
Konto konto = bank.getKonto(kontonummer); Konto konto = bank.getKonto(kontonummer);
long alterStand = konto.getStand(); String Inhaber = konto.getInhaber();
long neuerStand = alterStand + einzahlen; konto.einzahlen(einzahlen, "Einzahlung", "Einzahlung am Schalter", Inhaber);
konto.setStand(neuerStand);
return neuerStand;
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) { public boolean prüfeKonto(int kontonummer) {
@ -60,13 +81,15 @@ public class Banksystem {
return konto.getStand(); return konto.getStand();
} }
public void kontoauszugErstellen(int kontonummer) { public String[] kontoauszugErstellen(int kontonummer) {
for (int i = 0; i < kontoauszug.size(); i++) { Konto konto = bank.getKonto(kontonummer);
System.out.println(kontoauszug.get(i)); return konto.getKontoBewegungen();
} }
}
/*
public void kontobewegung(long einzahlen) { public void kontobewegung(long einzahlen) {
if (einzahlen < 0) { if (einzahlen < 0) {
String Auszahlung = einzahlen + "" + " (Auszahlung)"; String Auszahlung = einzahlen + "" + " (Auszahlung)";
@ -78,6 +101,7 @@ public class Banksystem {
} }
} }
*/
public String getKontoinhaber(int kontonummer) { public String getKontoinhaber(int kontonummer) {
Konto k = bank.getKonto(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;
}
} }

View File

@ -23,8 +23,10 @@ public class UI {
System.out.println("1 -> Konten anzeigen"); System.out.println("1 -> Konten anzeigen");
System.out.println("2 -> Konto anlegen"); System.out.println("2 -> Konto anlegen");
System.out.println("3 -> Einzahlen auf ein Konto"); System.out.println("3 -> Einzahlen auf ein Konto");
System.out.println("4 -> Kontostand anzeigen"); System.out.println("4 -> Auszahlen von einem Konto");
System.out.println("5 -> Kontoauszug erstellen"); 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("9 -> Beenden");
System.out.println(); System.out.println();
@ -43,10 +45,17 @@ public class UI {
kontoEinzahlen(); kontoEinzahlen();
break; break;
case 4: case 4:
kontostandAnzeigen(); kontoAuszahlen();
break; break;
case 5: case 5:
kontostandAnzeigen();
break;
case 6:
kontoauszugErstellen(); kontoauszugErstellen();
break;
case 7:
überweisenKonto();
break;
case 9: case 9:
break mainloop; break mainloop;
} }
@ -56,6 +65,34 @@ public class UI {
} // hauptmenü } // 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() { private void kontenAnzeigen() {
String[] konten = bs.getKontenliste(); String[] konten = bs.getKontenliste();
if (konten.length > 0) { if (konten.length > 0) {
@ -69,11 +106,27 @@ public class UI {
} }
private void kontoAnlegen() { private void kontoAnlegen() {
int kontonummer;
System.out.println("Bitte den Namen des Kontoinhabers angeben: "); System.out.println("Bitte den Namen des Kontoinhabers angeben: ");
String name = sc.nextLine(); String name = sc.nextLine();
int kontonummer = bs.kontoAnlegen(name); System.out.println("Was für ein Konto möchten Sie anlegen? (1) für Sparkonto (2) für Girokonto");
System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); 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() { private void kontoEinzahlen() {
@ -89,14 +142,34 @@ public class UI {
System.out.println("Wie viel möchten Sie einzahlen?"); System.out.println("Wie viel möchten Sie einzahlen?");
long einzahlen = Long.parseLong(sc.nextLine()); long einzahlen = Long.parseLong(sc.nextLine());
long kontostand = bs.geldEinzahlen(kontonummer, einzahlen); long neuerKontostand = bs.geldEinzahlen(kontonummer, einzahlen);
System.out.println("Der Kontostand beträgt: " + kontostand); System.out.println("Der Kontostand beträgt: " + neuerKontostand);
bs.kontobewegung(einzahlen); // bs.kontobewegung(einzahlen);
} else { } else {
kontoEinzahlen(); 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() { private void kontostandAnzeigen() {
System.out.println("Welcher Kontostand soll angezeigt werden? "); System.out.println("Welcher Kontostand soll angezeigt werden? ");
int kontonummer = Integer.parseInt(sc.nextLine()); int kontonummer = Integer.parseInt(sc.nextLine());
@ -114,15 +187,14 @@ public class UI {
private void kontoauszugErstellen() { private void kontoauszugErstellen() {
System.out.println("Von welchem Konto soll ein Kontoauszug erstellt werden? "); System.out.println("Von welchem Konto soll ein Kontoauszug erstellt werden? ");
int kontonummer = Integer.parseInt(sc.nextLine()); int kontonummer = Integer.parseInt(sc.nextLine());
// Prüfung ob Konto existiert // Prüfung ob Konto existiert
boolean existiert = bs.prüfeKonto(kontonummer); boolean existiert = bs.prüfeKonto(kontonummer);
if (existiert == true) { if (existiert == true) {
String Inhaber = bs.getKontoinhaber(kontonummer); String[] Kontoauszug = bs.kontoauszugErstellen(kontonummer);
System.out.println("Kontoauszug für das Konto: " + kontonummer + ". Der Inhaber des Kontos ist: " + Inhaber); for (String kb : Kontoauszug) {
System.out.println("----------"); System.out.println(kb);
bs.kontoauszugErstellen(kontonummer); }
System.out.println("----------");
} else { } else {
kontoauszugErstellen(); kontoauszugErstellen();
} }