alles eingefügt

Nico Piehl 2022-10-15 17:47:51 +02:00
parent ba349af6c3
commit d4c17f9e65
8 changed files with 250 additions and 10 deletions

View File

@ -14,4 +14,15 @@
<natures> <natures>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
</natures> </natures>
<filteredResources>
<filter>
<id>1665504364588</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription> </projectDescription>

View File

@ -1,12 +1,16 @@
package de.hs_mannheim.informatik.bank; package de.hs_mannheim.informatik.bank;
import java.io.Serializable;
import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.facade.Banksystem;
import de.hs_mannheim.informatik.bank.ui.UI; import de.hs_mannheim.informatik.bank.ui.UI;
public class Main { public class Main implements Serializable {
public static void main(String[] args) { public static void main(String[] args) {
Banksystem bs = new Banksystem("Spaßkasse Mannheim"); Banksystem bs = new Banksystem("Spaßkasse Mannheim");
@SuppressWarnings("unused")
UI ui = new UI(bs); UI ui = new UI(bs);
} }

View File

@ -1,9 +1,10 @@
package de.hs_mannheim.informatik.bank.domain; package de.hs_mannheim.informatik.bank.domain;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
public class Bank { public class Bank implements Serializable {
private String name; private String name;
private HashMap<Integer, Konto> konten = new HashMap<>(); private HashMap<Integer, Konto> konten = new HashMap<>();
@ -23,4 +24,8 @@ public class Bank {
return konten.values(); return konten.values();
} }
public Konto getKonto(int nummer) {
return konten.get(nummer);
}
} }

View File

@ -1,11 +1,24 @@
package de.hs_mannheim.informatik.bank.domain; package de.hs_mannheim.informatik.bank.domain;
public class Konto { import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
public class Konto implements Serializable {
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<String> kontoauszug = new ArrayList<String>();
Date date = Calendar.getInstance().getTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String datum = dateFormat.format(date);
public Konto(String inhaber) { public Konto(String inhaber) {
nummer = 1000 + kontozähler++; nummer = 1000 + kontozähler++;
@ -16,9 +29,41 @@ public class Konto {
return nummer; return nummer;
} }
public long getKontostand() {
return stand;
}
public void setEinzahlung(long wert) {
stand += wert;
kontoauszugAdd(wert);
}
public void setAuszahlung(long wert) {
stand -= wert;
kontoauszugAdd(wert * -1);
}
public void kontoauszugAdd(long wert) {
String wertNeu = Long.toString(wert);
if(wert >= 0) {
wertNeu = "+" + wert;
}
kontoauszug.add(wertNeu);
kontoauszug.add(datum);
kontoauszug.add(this.inhaber); //noch umändern zum "richtigen" Auftraggeber
}
public int kontoauszugLänge() {
return kontoauszug.size();
}
public String kontoauszugInhalt(int zähler) {
return kontoauszug.get(zähler);
}
@Override @Override
public String toString() { public String toString() {
return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + ", stand=" + stand + "]";
} }
} }

View File

@ -1,11 +1,12 @@
package de.hs_mannheim.informatik.bank.facade; package de.hs_mannheim.informatik.bank.facade;
import java.io.Serializable;
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;
public class Banksystem { public class Banksystem implements Serializable {
private Bank bank; private Bank bank;
public Banksystem(String bankname) { public Banksystem(String bankname) {
@ -34,4 +35,56 @@ public class Banksystem {
public String getBankname() { public String getBankname() {
return bank.getName(); return bank.getName();
} }
// public Konto getKonto(int nummer) {
// Collection<Konto> konten = bank.getKontenliste();
// for(Konto k : konten){
// if(k.getKontonummer() == nummer) return k;
// }
// return null;
// }
public boolean existiertKonto(int nummer) {
Konto k = bank.getKonto(nummer);
if(k != null) {
return true;
}
return false;
}
public long kontostandAnzeigen(int nummer) {
Konto k = bank.getKonto(nummer);
long kontostand = k.getKontostand();
return kontostand;
}
public long geldEinzahlen(int nummer, long geld) {
Konto k = bank.getKonto(nummer);
k.setEinzahlung(geld);
long kontostand = k.getKontostand();
return kontostand;
}
public boolean geldAuszahlen(int nummer, long geld) {
Konto k = bank.getKonto(nummer);
// long betrag = k.getKontostand() - geld;
// if(betrag < -5000) {
// return false;
// }
k.setAuszahlung(geld);
return true;
}
public String[] kontoauszugAnzeigen(int nummer) {
Konto k = bank.getKonto(nummer);
String[] kontoauszugListe = new String[k.kontoauszugLänge()];
for(int i = 0; i < k.kontoauszugLänge(); i++) {
kontoauszugListe[i] = k.kontoauszugInhalt(i);
}
return kontoauszugListe;
}
} }

View File

@ -0,0 +1,37 @@
package de.hs_mannheim.informatik.bank.persistence;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectStreams {
public static void main(String[] args) throws Exception {
// Daten speichern
String s = "Die Antwort auf alles.";
Integer i = 42;
int[] arr = {0,8, 15};
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser"));
oos.writeObject(s);
oos.writeObject(i);
oos.writeByte(21);
oos.writeObject(arr);
oos.close();
// ... und wieder einlesen
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser"));
System.out.println((String)ois.readObject());
System.out.println((Integer)ois.readObject());
System.out.println(ois.readByte());
System.out.println( ((int[])ois.readObject())[1] );
ois.close();
}
}

View File

@ -1,10 +1,11 @@
package de.hs_mannheim.informatik.bank.ui; package de.hs_mannheim.informatik.bank.ui;
import java.io.Serializable;
import java.util.Scanner; import java.util.Scanner;
import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.facade.Banksystem;
public class UI { public class UI implements Serializable {
private Banksystem bs; private Banksystem bs;
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
@ -23,6 +24,10 @@ public class UI {
System.out.println("Hauptmenü"); System.out.println("Hauptmenü");
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 -> Geld einzahlen");
System.out.println("4 -> Geld auszahlen");
System.out.println("5 -> Kontostand anzeigen");
System.out.println("6 -> Kontoauszug anzeigen");
System.out.println("9 -> Beenden"); System.out.println("9 -> Beenden");
System.out.println(); System.out.println();
@ -33,6 +38,10 @@ public class UI {
switch(input) { switch(input) {
case 1: kontenAnzeigen(); break; case 1: kontenAnzeigen(); break;
case 2: kontoAnlegen(); break; case 2: kontoAnlegen(); break;
case 3: geldEinzahlen(); break;
case 4: geldAuszahlen(); break;
case 5: kontostandAnzeigen(); break;
case 6: kontoauszugAnzeigen(); break;
case 9: break mainloop; case 9: break mainloop;
} }
} }
@ -54,11 +63,90 @@ public class UI {
} }
private void kontoAnlegen() { private void kontoAnlegen() {
System.out.println("Bitte den Namen des Kontoinhabers angeben: "); System.out.print("Bitte den Namen des Kontoinhabers angeben: ");
String name = sc.nextLine(); String name = sc.nextLine();
int kontonummer = bs.kontoAnlegen(name); int kontonummer = bs.kontoAnlegen(name);
System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt.");
} }
private void geldEinzahlen() {
System.out.print("Bitte geben Sie die Kontonummer ein: ");
int nummer = Integer.parseInt(sc.nextLine());
boolean kontoExistiert = bs.existiertKonto(nummer);
if(kontoExistiert == false) {
System.out.println("Dieses Konto existiert nicht.");
return;
}
System.out.print("Bitte geben Sie jetzt den Geldbetrag ein: ");
long geld = Long.parseLong(sc.nextLine());
long kontostand = bs.geldEinzahlen(nummer, geld);
System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand);
}
private void kontostandAnzeigen() {
System.out.print("Bitte geben Sie die Kontonummer ein: ");
int nummer = Integer.parseInt(sc.nextLine());
boolean kontoExistiert = bs.existiertKonto(nummer);
if(kontoExistiert == false) {
System.out.println("Dieses Konto existiert nicht.");
return;
}
long kontostand = bs.kontostandAnzeigen(nummer);
System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand);
}
private void geldAuszahlen() {
System.out.print("Bitte geben Sie die Kontonummer ein: ");
int nummer = Integer.parseInt(sc.nextLine());
boolean kontoExistiert = bs.existiertKonto(nummer);
if(kontoExistiert == false) {
System.out.println("Dieses Konto existiert nicht.");
return;
}
long kontostand = bs.kontostandAnzeigen(nummer);
System.out.println("Ihr aktueller Kontostand beträgt: " + kontostand + "\n");
System.out.print("Bitte geben Sie jetzt den auszuzahlenden Geldbetrag ein: ");
long geld = Long.parseLong(sc.nextLine());
boolean auszahlenMöglich = bs.geldAuszahlen(nummer, geld);
if(auszahlenMöglich == false) {
System.out.println("So viel Geld haben Sie nicht auf Ihrem Konto. Vorgang abgebrochen.");
return;
}
long kontostandNeu = bs.kontostandAnzeigen(nummer);
System.out.println("Ihr aktueller Kontostand beträgt: " + kontostandNeu);
System.out.println("Ihr ausgezahltes Geld beträgt: " + geld);
}
private void kontoauszugAnzeigen() {
System.out.print("Bitte geben Sie die Kontonummer ein: ");
int nummer = Integer.parseInt(sc.nextLine());
boolean kontoExistiert = bs.existiertKonto(nummer);
if(kontoExistiert == false) {
System.out.println("Dieses Konto existiert nicht.");
return;
}
String[] kontenauszugInhalt = bs.kontoauszugAnzeigen(nummer);
if (kontenauszugInhalt.length > 0) {
System.out.println("Folgende Kontoauszüge sind aktuell verfügbar: \n");
int j = 1;
for(int i = 0; i < kontenauszugInhalt.length; i++) {
System.out.print("Auszug " + j + ": " + kontenauszugInhalt[i]);
i++;
System.out.print(" vom " + kontenauszugInhalt[i]);
i++;
System.out.println(" von " + kontenauszugInhalt[i]);
j++;
}
} else {
System.out.println("Für dieses Konto gibt es noch keine Kontoauszüge.");
}
}
} }

View File

@ -1,3 +0,0 @@
# Bank-System
Beispielsystem für PR2 im WS22/23.