From 1c1d2309ec7c1935b6a54f92cf5680d64298ba9e Mon Sep 17 00:00:00 2001 From: Ruben Date: Tue, 22 Nov 2022 13:19:06 +0100 Subject: [PATCH] klonen --- .project | 11 ++++ .../de/hs_mannheim/informatik/bank/Main.java | 2 +- .../informatik/bank/domain/Bank.java | 40 ++++++++++--- .../informatik/bank/domain/Girokonto.java | 10 ++-- .../informatik/bank/domain/Konto.java | 6 +- .../informatik/bank/domain/KontoTest.java | 2 +- .../informatik/bank/domain/Kunde.java | 54 ++++++++++++++++++ .../informatik/bank/facade/Banksystem.java | 19 +++++-- .../informatik/bank/facade/SystemTest.java | 8 +-- .../de/hs_mannheim/informatik/bank/ui/UI.java | 56 ++++++++++++------- 10 files changed, 162 insertions(+), 46 deletions(-) create mode 100644 .project create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java diff --git a/.project b/.project new file mode 100644 index 0000000..947ac69 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + Bank-SystemNEU + + + + + + + + diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java index 16a794f..5bca47a 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -6,7 +6,7 @@ import de.hs_mannheim.informatik.bank.ui.UI; public class Main { public static void main(String[] args) throws Exception { - Banksystem bs = new Banksystem("Spaßkasse Mannheim"); + Banksystem bs = new Banksystem("Sparkasse Mannheim"); UI ui = new UI(bs); } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java index 27aeb58..ddc631b 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Bank.java @@ -7,23 +7,29 @@ import java.util.HashMap; public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); - private int kontozähler; + private int kontozaehler; + private HashMap kunden = new HashMap(); + private int kundenzaehler; public Bank(String name) { this.name = name; - this.kontozähler = -1; + this.kontozaehler = -1; } - public int addKonto(String name, int auswahl) { + public int addKonto(String name, int auswahl, int kundennummer) { Konto k; - + Kunde kunde = kunden.get(kundennummer); + if (auswahl == 1) - k = new Konto(name, ++kontozähler); + k = new Konto(name, ++kontozaehler); else - k = new Girokonto(name, ++kontozähler); + k = new Girokonto(name, ++kontozaehler); konten.put(k.getKontonummer(), k); + //Konto wird zum Kunden hinzugefügt + kunde.setKontenliste(k); + return k.getKontonummer(); } @@ -31,12 +37,30 @@ public class Bank implements Serializable { return name; } - public Collection getKontenliste() { + public Collection getKontenliste() { return konten.values(); } - + public Konto findeKonto(int kontonummer) { return konten.get(kontonummer); } + public Kunde findeKunde(int kundennummer) { + return kunden.get(kundennummer); + } + + public int addKunde(String name) { + Kunde kunde; + + kunde = new Kunde(name, ++kundenzaehler); + + kunden.put(kunde.getKundennummer(), kunde); + + return kunde.getKundennummer(); + } + + public Collection getKundenliste() { + return kunden.values(); + } + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java index d8f12a9..6a94735 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java @@ -5,14 +5,14 @@ import java.io.Serializable; public class Girokonto extends Konto implements Serializable { private long dispo = 100000; - public Girokonto(String inhaber, int kontozähler) { - super(inhaber, kontozähler); + public Girokonto(String inhaber, int kontozaehler) { + super(inhaber, kontozaehler); } - public boolean überweise(Girokonto ziel, long betrag, String zweck) { + public boolean ueberweise(Girokonto ziel, long betrag, String zweck) { if (super.getKontostand() - betrag >= dispo * (-1)) { - this.auszahlen(betrag, zweck, "Ãœberweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Ãœberweisungseingang", super.getInhaber()); + this.auszahlen(betrag, zweck, "Ueberweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "Ueberweisungseingang", super.getInhaber()); return true; } 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 e787df5..1fe3e99 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 @@ -10,8 +10,8 @@ public class Konto implements Serializable { protected ArrayList kontobewegungen; - public Konto(String inhaber, int kontozähler) { - nummer = 1000 + kontozähler; + public Konto(String inhaber, int kontozaehler) { + nummer = 1000 + kontozaehler; this.inhaber = inhaber; this.kontobewegungen = new ArrayList<>(); @@ -67,7 +67,7 @@ public class Konto implements Serializable { long saldo = 0; for (int i = 0; i < anzahl; i++) { - saldo += kontobewegungen.get(i).getBetrag() ; + saldo += kontobewegungen.get(i).getBetrag() ; //Betrag der i-ten Kontobew. } return saldo; diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java index e20060a..7f62426 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java @@ -48,7 +48,7 @@ class KontoTest { } @Test - void testKeineÃœberziehungFürSparkonten() { + void testKeineUeberziehungFuerSparkonten() { Konto k = new Konto("Müller", 0); k.einzahlen(100, "Test", "Einzahlung", "JUnit"); assertFalse(k.auszahlen(500, "Test", "Auszahlung", "JUnit")); diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java new file mode 100644 index 0000000..b40dc08 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java @@ -0,0 +1,54 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.Collection; +import java.util.HashMap; + +public class Kunde implements Serializable { + private String vorname; + private String name; + private int alter; + private String wohnort; + private int kundennummer; + + private HashMap kontenliste; + + + public Kunde(String name, int kundenzaehler) { + this.name = name; + this.kontenliste = new HashMap<>(); + kundennummer = 1000 + kundenzaehler; + } + + + + + //Getter + public String getVorname() { + return vorname; + } + + public String getName() { + return name; + } + + public int getAlter() { + return alter; + } + + public String getWohnort() { + return wohnort; + } + + public int getKundennummer() { + return kundennummer; + } + + public Collection getKontenliste() { + return kontenliste.values(); + } + + public void setKontenliste(Konto konto) { + kontenliste.put(konto.getKontonummer(), konto); + } +} 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 5ff5144..08a6781 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 @@ -5,6 +5,7 @@ import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; +import de.hs_mannheim.informatik.bank.domain.Kunde; import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; public class Banksystem { @@ -17,8 +18,12 @@ public class Banksystem { this.bank = new Bank(bankname); } - public int kontoAnlegen(String name, int auswahl) throws Exception { - int kontonummer = bank.addKonto(name, auswahl); + public int kontoAnlegen(String name, int auswahl, int kundennummer) throws Exception { + int kontonummer = bank.addKonto(name, auswahl, kundennummer); + + + //Wenn neuerKunde true, fuege Konto zum neuen Kunden hinzu + Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -66,12 +71,12 @@ public class Banksystem { return konto.getKontobewegungen(); } - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws Exception { + public boolean ueberweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws Exception { Konto start = bank.findeKonto(startkonto); Konto ziel = bank.findeKonto(zielkonto); if (start instanceof Girokonto && ziel instanceof Girokonto) { - boolean erfolg = ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); + boolean erfolg = ((Girokonto)start).ueberweise((Girokonto)ziel, betrag, verwendungszweck); Persistenz.speichereBankDaten(this.bank, bank.getName()); return erfolg; @@ -91,5 +96,11 @@ public class Banksystem { return konto.berechneSaldo(anzahl); } + + public int kundeAnlegen(String name) throws Exception { + int kundennummer = bank.addKunde(name); + + return kundennummer; + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java index b063dce..659f62b 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/SystemTest.java @@ -33,7 +33,7 @@ class SystemTest { @Test @Order(2) void einzahlenTest() throws Exception { - int knr = bs.kontoAnlegen("Test1", 1); + int knr = bs.kontoAnlegen("Test1", 1, 1000); assertEquals(1000, bs.geldEinzahlen(knr, 1000)); @@ -46,12 +46,12 @@ class SystemTest { @Test @Order(3) void persistenzTest() throws Exception { - int knr = bs.kontoAnlegen("Test2", 2); - int knr2 = bs.kontoAnlegen("Test3", 2); + int knr = bs.kontoAnlegen("Test2", 2, 1000); + int knr2 = bs.kontoAnlegen("Test3", 2, 1000); bs.geldEinzahlen(knr, 1000); bs.geldAuszahlen(knr, 500); - assertTrue(bs.überweisungBeauftragen(knr, knr2, 100, "Ãœberweisungstest.")); + assertTrue(bs.ueberweisungBeauftragen(knr, knr2, 100, "Ãœberweisungstest.")); assertEquals(400, bs.getKontostand(knr)); 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 3f10d79..bc778e9 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 @@ -10,23 +10,23 @@ public class UI { public UI(Banksystem bs) { this.bs = bs; - hauptmenü(); + hauptmenue(); } - private void hauptmenü() { + private void hauptmenue() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); mainloop: while (true) { System.out.println(); System.out.println("--------"); - System.out.println("Hauptmenü"); + System.out.println("Hauptmenue"); System.out.println("1 -> Konten anzeigen"); System.out.println("2 -> Konto anlegen"); System.out.println("3 -> Geld einzahlen"); System.out.println("4 -> Geld auszahlen"); System.out.println("5 -> Kontoauszug drucken"); - System.out.println("6 -> Ãœberweisung beauftragen"); + System.out.println("6 -> Ueberweisung beauftragen"); System.out.println("7 -> Saldo abfragen"); System.out.println("9 -> Beenden"); @@ -39,13 +39,11 @@ public class UI { try { switch(input) { case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; + case 2: kontoAnlegen(); break; case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; + case 6: ueberweisungBeauftragen(); break; case 7: saldoAbfragen(); break; case 9: break mainloop; } @@ -58,12 +56,13 @@ public class UI { System.out.println("Auf Wiedersehen!"); - } // hauptmenü + } // hauptmenue private void kontenAnzeigen() { + String[] konten = bs.getKontenliste(); if (konten.length > 0) { - System.out.println("Folgende Konten sind aktuell verfügbar:"); + System.out.println("Folgende Konten sind aktuell verfuegbar:"); for (String s : konten) { System.out.println(s); } @@ -75,14 +74,31 @@ public class UI { private void kontoAnlegen() throws Exception { System.out.println("Bitte den Namen des Kontoinhabers angeben: "); String name = sc.nextLine(); - - System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); + + System.out.println("Sind Sie ein neuer Kunde? (Ja/Nein)"); + String jaNein= sc.nextLine(); + + int kundennummer = 0; + + if(jaNein.equals("Ja")) { + kundennummer = bs.kundeAnlegen(name); + System.out.println("Herzlich Willkommen bei " + bs.getBankname() + "!"); + System.out.println("Ihre Kundennummer lautet: " + kundennummer + "\n"); + + } else if(jaNein.equals("Nein")) { + System.out.println("Bitte geben Sie Ihre Kundennummer ein:"); + kundennummer = Integer.parseInt(sc.nextLine()); + } + + System.out.println("Moechten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); int auswahl = Integer.parseInt(sc.nextLine()); - int kontonummer = bs.kontoAnlegen(name, auswahl); + + int kontonummer = bs.kontoAnlegen(name, auswahl, kundennummer); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } + private void geldEinzahlen() throws Exception { System.out.println("Geld einzahlen"); System.out.print("Bitte die gewünschte Kontonummer eingeben: "); @@ -90,7 +106,7 @@ public class UI { // optional prüfen, ob Konto existiert - System.out.print("Bitte den gewünschten Betrag eingeben: "); + System.out.print("Bitte den gewuenschten Betrag eingeben: "); double betrag = Double.parseDouble(sc.nextLine()); long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); @@ -100,7 +116,7 @@ public class UI { private void geldAuszahlen() throws Exception { System.out.println("Geld auszahlen"); - System.out.print("Bitte die gewünschte Kontonummer eingeben: "); + System.out.print("Bitte die gewuenschte Kontonummer eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); System.out.print("Bitte den gewünschten Betrag eingeben: "); @@ -113,7 +129,7 @@ public class UI { } private void kontoauszugDrucken() { - System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); + System.out.print("Bitte die gewuenschte Kontonummer für den Auszug eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); // in echt auf einem Drucker @@ -128,7 +144,7 @@ public class UI { System.out.println("Noch keine Kontobewegungen."); } - private void überweisungBeauftragen() throws Exception { + private void ueberweisungBeauftragen() throws Exception { System.out.print("Bitte die Kontonummer des Ausgangskontos der Ãœberweisung eingeben: "); int startkonto = Integer.parseInt(sc.nextLine()); @@ -141,16 +157,16 @@ public class UI { System.out.print("Bitte den Verwendungszweck eingeben: "); String verwendungszweck = sc.nextLine(); - boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); + boolean erfolgreich = bs.ueberweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); System.out.println("Ãœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } private void saldoAbfragen() { - System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: "); + System.out.print("Bitte die Kontonummer des gewuenschten Kontos eingeben: "); int konto = Integer.parseInt(sc.nextLine()); - System.out.print("Bitte die Anzahl der Kontobewegungen für den Saldo eingeben: "); + System.out.print("Bitte die Anzahl der Kontobewegungen fuer den Saldo eingeben: "); int anzahl = Integer.parseInt(sc.nextLine()); long saldo = bs.saldoBestimmen(konto, anzahl);