Initial Commit

experimental
Oliver Hummel 2023-12-19 13:57:55 +01:00
parent 9806fbd7b2
commit 1b18901fb2
3 changed files with 166 additions and 0 deletions

View File

@ -0,0 +1,46 @@
package bank;
import java.util.ArrayList;
public class Bank {
private String name;
private ArrayList<Bankkonto> kontenliste;
public Bank(String name) {
this.kontenliste = new ArrayList<>();
this.name = name;
}
public int kontoAnlegen(String inhaber) {
Bankkonto bk = new Bankkonto(inhaber);
kontenliste.add(bk);
// Speichern Methode 2: geänderte Daten speichern
return bk.getKontonummer();
}
public String getName() {
return this.name;
}
public boolean geldEinzahlen(int kontonummer, double betrag) {
Bankkonto bk = kontoFinden(kontonummer);
if (bk != null) {
bk.geldEinzahlen(betrag);
return true;
}
return false;
}
private Bankkonto kontoFinden(int kontonummer) {
for (Bankkonto bk : kontenliste) {
if (bk.getKontonummer() == kontonummer)
return bk;
}
return null;
}
}

View File

@ -0,0 +1,65 @@
package bank;
import java.util.Scanner;
public class BankUI {
private static Bank bank = new Bank("Spaßkasse");
private static Scanner kb = new Scanner(System.in);
public static void main(String[] args) {
willkommen();
hauptmenü();
}
public static void willkommen() {
System.out.println("Willkommen bei der " + bank.getName() + "!");
System.out.println();
}
private static void hauptmenü() {
do {
System.out.println("Aufgabe auswählen:");
System.out.println("1) Konto anlegen");
System.out.println("2) Geld einzahlen");
System.out.println("9) Programm beenden");
System.out.print("Eingabe > ");
int eingabe = kb.nextInt();
switch (eingabe) {
case 1 -> kontoAnlegenScreen();
case 2 -> geldEinzahlenScreen();
case 9 -> aufWiedersehenScreen();
}
System.out.println();
} while(true);
}
private static void kontoAnlegenScreen() {
System.out.print("Bitte Name des künftigen Inhabers angeben: ");
String inhaber = kb.next();
int kontonummer = bank.kontoAnlegen(inhaber);
System.out.println("Konto mit der Nummer " + kontonummer + " angelegt.");
}
private static void geldEinzahlenScreen() {
System.out.print("Bitte Kontonummer eingeben: ");
int kontonummer = kb.nextInt();
System.out.print("Bitte Betrag eingeben: ");
double betrag = kb.nextDouble();
boolean erg = bank.geldEinzahlen(kontonummer, betrag);
System.out.println("Geld einzahlen " + (erg?"": "nicht ") + "erfolgreich.");
}
private static void aufWiedersehenScreen() {
System.out.println("Danke für Ihren Besuch und auf Wiedersehen!");
System.exit(0);
}
}

View File

@ -0,0 +1,55 @@
package bank;
import java.util.ArrayList;
public class Bankkonto {
// sog. Geheimnisprinzip, Attribute bleiben
// privat, Zugriff erfolgt nur über Methoden
private String name;
private int kontonummer;
private double kontostand;
private static int kontozähler = 0;
public Bankkonto(String name) {
this.name = name;
this.kontostand = 0;
this.kontonummer = 100000 + kontozähler++;
}
// sog. Getter-Methoden
public double getKontostand() {
return this.kontostand;
}
public int getKontonummer() {
return this.kontonummer;
}
public double geldEinzahlen(double betrag) {
kontostand += betrag;
// Speichern Methode 1: Objekt speichern -> heute nicht gängig
return kontostand;
}
// TODO
// Geld soll nur ausgezahlt werden, wenn das Konto
// auch gedeckt ist
public double geldAuszahlen(double betrag) {
return -1;
}
// TODO
// Alle Ein- und Auszahlungen sollen mit einem
// Timestamp und dem jeweiligen Kontostand aufgelistet werden.
// Timestamp über: new Date().toString();
// Perspektivisch würden wir hier besser eine eigene
// Klasse Kontobewegungen statt String verwenden
public ArrayList<String> getKontobewegungen() {
return null;
}
}