1
0
Fork 0

Compare commits

..

3 Commits
main ... main

Author SHA1 Message Date
Oliver Hummel e10a3ca82a Auszahlen und Girokonto hinzugefügt. 2024-01-16 14:19:31 +01:00
Oliver Hummel 9d4a7aca59 Erweiterung mit Geheimnisprinzip 2024-01-16 13:29:33 +01:00
Oliver Hummel 353797a7a2 Einfache Persistenz hinzugefügt. 2023-12-19 17:06:45 +01:00
4 changed files with 75 additions and 92 deletions

View File

@ -1,5 +1,11 @@
package bank; package bank;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
@ -17,6 +23,8 @@ public class Bank implements Serializable {
kontenliste.add(bk); kontenliste.add(bk);
// Speichern Methode 2: geänderte Daten speichern // Speichern Methode 2: geänderte Daten speichern
saveBankData(); // bzw. der Einfachheit halber: alle Daten ;-)
return bk.getKontonummer(); return bk.getKontonummer();
} }
@ -24,6 +32,19 @@ public class Bank implements Serializable {
return this.name; return this.name;
} }
// public ArrayList<Bankkonto> getKontenliste() {
public String[] getKontendaten() {
// kontendaten ist ein sog. DTO = Data Transfer Object
String[] kontendaten = new String[kontenliste.size()];
for (int i = 0; i < kontenliste.size(); i++) {
kontendaten[i] = kontenliste.get(i).toString();
}
return kontendaten;
}
public boolean geldEinzahlen(int kontonummer, double betrag) { public boolean geldEinzahlen(int kontonummer, double betrag) {
Bankkonto bk = kontoFinden(kontonummer); Bankkonto bk = kontoFinden(kontonummer);
@ -40,44 +61,34 @@ public class Bank implements Serializable {
if (bk.getKontonummer() == kontonummer) if (bk.getKontonummer() == kontonummer)
return bk; return bk;
} }
return null; return null;
} }
//public ArrayList<Bankkonto> getKontenListe() { // Die folgenden Persistenz-Methoden würde man in der Praxis in eine eigene
public String[] getKontenListe() { // Klasse auslagern.
//kontendaten ist ein sog. DTO = Data Transfer Object private void saveBankData() {
String kontendaten[] = new String[kontenliste.size()]; ObjectOutputStream oos;
try {
for (int i = 0; i < kontendaten.length; i++) { oos = new ObjectOutputStream(new FileOutputStream("BankData.ser"));
kontendaten[i] = kontenliste.get(i).toString(); oos.writeObject(this);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
return kontendaten; public static Bank loadBankData() {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("BankData.ser"));
return (Bank) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
System.err.println("Keine Daten gespeichert, initialisiere alle Daten neu.");
} }
public String getBetrag(int kontonummer) { return new Bank("Spaßkasse");
Bankkonto bk = kontoFinden(kontonummer);
if (bk != null) {
return ""+bk.getKontostand();
}
return "Fehler bei Kontonummer eingabe";
} }
@Override
public String toString() {
return "Bank{" +
"name='" + name + '\'' +
", kontenliste=" + kontenliste +
'}';
}
public boolean geldAuszahlen(int kontonummer, double betrag) {
Bankkonto bk = kontoFinden(kontonummer);
if (bk != null) {
return bk.geldAuszahlen(betrag);
}
return false;
}
} }

View File

@ -3,10 +3,12 @@ package bank;
import java.util.Scanner; import java.util.Scanner;
public class BankUI { public class BankUI {
private static Bank bank = new Bank("Spaßkasse"); private static Bank bank;
private static Scanner kb = new Scanner(System.in); private static Scanner kb = new Scanner(System.in);
public static void main(String[] args) { public static void main(String[] args) {
bank = new Bank("Spaßkasse"); //Bank.loadBankData();
willkommen(); willkommen();
hauptmenü(); hauptmenü();
} }
@ -22,10 +24,7 @@ public class BankUI {
System.out.println("Aufgabe auswählen:"); System.out.println("Aufgabe auswählen:");
System.out.println("1) Konto anlegen"); System.out.println("1) Konto anlegen");
System.out.println("2) Geld einzahlen"); System.out.println("2) Geld einzahlen");
System.out.println("3. Geld aiszahlen"); System.out.println("3) Kontenliste anzeigen");
System.out.println("4. Konto Betrag anzeigen");
System.out.println("-");
System.out.println("8. Konten Liste anzeigen");
System.out.println("9) Programm beenden"); System.out.println("9) Programm beenden");
System.out.print("Eingabe > "); System.out.print("Eingabe > ");
@ -35,9 +34,7 @@ public class BankUI {
switch (eingabe) { switch (eingabe) {
case 1 -> kontoAnlegenScreen(); case 1 -> kontoAnlegenScreen();
case 2 -> geldEinzahlenScreen(); case 2 -> geldEinzahlenScreen();
case 3 -> geldAuszahlenScreen(); case 3 -> kontenlisteAnzeigenScreen();
case 4 -> kontoBetraganzeigen();
case 8 -> kontenListeanzeigen();
case 9 -> aufWiedersehenScreen(); case 9 -> aufWiedersehenScreen();
} }
@ -45,32 +42,6 @@ public class BankUI {
} while(true); } while(true);
} }
private static void kontoBetraganzeigen() {
System.out.print("Bitte Kontonummer eingeben: ");
int kontonummer = kb.nextInt();
System.out.println("Sie haben "+bank.getBetrag(kontonummer)+"€ auf Ihrem Konto");
}
private static void geldAuszahlenScreen() {
System.out.print("Bitte Kontonummer eingeben: ");
int kontonummer = kb.nextInt();
System.out.print("Bitte Betrag eingeben: ");
double betrag = kb.nextDouble();
boolean erg = bank.geldAuszahlen(kontonummer, betrag);
System.out.println("Geld auszahlen " + (erg?"": "nicht ") + "erfolgreich.");
}
private static void kontenListeanzeigen() {
System.out.println("Hier sind die Konten: ");
for (String b:bank.getKontenListe()) {
System.out.println(b);
}
}
private static void kontoAnlegenScreen() { private static void kontoAnlegenScreen() {
System.out.print("Bitte Name des künftigen Inhabers angeben: "); System.out.print("Bitte Name des künftigen Inhabers angeben: ");
String inhaber = kb.next(); String inhaber = kb.next();
@ -90,6 +61,14 @@ public class BankUI {
System.out.println("Geld einzahlen " + (erg?"": "nicht ") + "erfolgreich."); System.out.println("Geld einzahlen " + (erg?"": "nicht ") + "erfolgreich.");
} }
private static void kontenlisteAnzeigenScreen() {
System.out.println("Hier sind die Konten:");
for (String ke : bank.getKontendaten()) {
System.out.println(ke.toString());
}
}
private static void aufWiedersehenScreen() { private static void aufWiedersehenScreen() {
System.out.println("Danke für Ihren Besuch und auf baldiges Wiedersehen!"); System.out.println("Danke für Ihren Besuch und auf baldiges Wiedersehen!");
System.exit(0); System.exit(0);

View File

@ -12,13 +12,12 @@ public class Bankkonto implements Serializable {
private double kontostand; private double kontostand;
private static int kontozähler = 0; private static int kontozähler = 0;
private static int kontostartzaehler = (int) (Math.random()*1000);
public Bankkonto(String name) { public Bankkonto(String name) {
this.name = name; this.name = name;
this.kontostand = 0; this.kontostand = 0;
this.kontonummer = kontostartzaehler + kontozähler++; this.kontonummer = 100000 + kontozähler++;
} }
// sog. Getter-Methoden // sog. Getter-Methoden
@ -37,14 +36,12 @@ public class Bankkonto implements Serializable {
return kontostand; return kontostand;
} }
// TODO
// Geld soll nur ausgezahlt werden, wenn das Konto
// auch gedeckt ist
public boolean geldAuszahlen(double betrag) { public boolean geldAuszahlen(double betrag) {
if (kontostand >= betrag) { if (kontostand - betrag >= 0) {
kontostand -= betrag; kontostand -= betrag;
return true; return true;
} }
return false; return false;
} }
@ -60,10 +57,7 @@ public class Bankkonto implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "Bankkonto{" + return "Bankkonto [name=" + name + ", kontonummer=" + kontonummer + "]";
"name='" + name + '\'' +
", kontonummer=" + kontonummer +
", kontostand=" + kontostand +
'}';
} }
} }

View File

@ -1,13 +1,12 @@
package bank; package bank;
public class Girokonto extends Bankkonto{ public class Girokonto extends Bankkonto {
public Girokonto(String name) { public Girokonto(String name) {
super(name); super(name);
} }
public boolean überweisen(Bankkonto zielkonto, double betrag){ public boolean überweisen(Bankkonto zielkonto, double betrag) {
if (this.geldAuszahlen(betrag)) { if (this.geldAuszahlen(betrag)) {
zielkonto.geldEinzahlen(betrag); zielkonto.geldEinzahlen(betrag);
return true; return true;