From 0cf79339538585ed6452d478fbf6d447eefb31aa Mon Sep 17 00:00:00 2001 From: informatikperson <62358979+informatikperson@users.noreply.github.com> Date: Tue, 8 Nov 2022 12:43:04 +0100 Subject: [PATCH] Einbua Kunde und Kundenliste --- .../informatik/bank/domain/Bank.java | 14 ++++- .../informatik/bank/domain/Depot.java | 12 ++++ .../informatik/bank/domain/Girokonto.java | 6 +- .../informatik/bank/domain/GirokontoTest.java | 2 +- .../informatik/bank/domain/Konto.java | 10 ++-- .../informatik/bank/domain/KontoTest.java | 14 ++--- .../informatik/bank/domain/Kunde.java | 33 ++++++++++ .../informatik/bank/facade/Banksystem.java | 29 +++++++-- .../informatik/bank/facade/SystemTest.java | 11 ++-- .../de/hs_mannheim/informatik/bank/ui/UI.java | 60 +++++++++++++++---- 10 files changed, 152 insertions(+), 39 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java 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..e78cf17 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,22 +7,26 @@ import java.util.HashMap; public class Bank implements Serializable { private String name; private HashMap konten = new HashMap<>(); + private HashMap kunden = new HashMap<>(); + private int kontozähler; + public Bank(String name) { this.name = name; this.kontozähler = -1; } - public int addKonto(String name, int auswahl) { + public int addKonto(String vorname, String nachname, int alter, String wohnort, int auswahl) { Konto k; if (auswahl == 1) - k = new Konto(name, ++kontozähler); + k = new Konto(vorname, nachname, alter, wohnort, auswahl, ++kontozähler); else - k = new Girokonto(name, ++kontozähler); + k = new Girokonto(vorname, nachname, alter, wohnort, auswahl, ++kontozähler); konten.put(k.getKontonummer(), k); + kunden.put(k.getKontonummer(), (vorname + " "+ nachname)); return k.getKontonummer(); } @@ -38,5 +42,9 @@ public class Bank implements Serializable { public Konto findeKonto(int kontonummer) { return konten.get(kontonummer); } + + public Collection getKundenliste() { + return kunden.values(); + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java new file mode 100644 index 0000000..f4c78a5 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Depot.java @@ -0,0 +1,12 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; + +public class Depot extends Konto implements Serializable { + + public Depot(String vorname, String nachname, int alter, String wohnort, int auswahl, int kontozähler) { + super(vorname, nachname, alter, wohnort, auswahl, kontozähler); + // TODO Auto-generated constructor stub + } + +} 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..ef4eec8 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,11 +5,11 @@ 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 vorname , String nachname, int alter, String wohnort, int auswahl, int kontozähler) { + super(vorname, nachname, alter, wohnort, auswahl, kontozähler); } - public boolean überweise(Girokonto ziel, long betrag, String zweck) { + public boolean überweise(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()); diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java index 5490892..c80f2a6 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GirokontoTest.java @@ -10,7 +10,7 @@ class GirokontoTest { @Test void testÃœberziehung() { - Konto k = new Girokonto("Müller", 0); + Konto k = new Girokonto("Müller", null, 0, null, 0, 0); k.einzahlen(10000, "Test", "Einzahlung", "JUnit"); assertTrue(k.auszahlen(20000, "Test", "Einzahlung", "JUnit")); 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..6364a30 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 @@ -7,14 +7,16 @@ public class Konto implements Serializable { private int nummer; protected long stand = 0; private String inhaber; + private Kunde ku; protected ArrayList kontobewegungen; - public Konto(String inhaber, int kontozähler) { - nummer = 1000 + kontozähler; - this.inhaber = inhaber; - + public Konto(String vorname, String nachname, int alter, String wohnort, int auswahl, int kontozähler) { + nummer = 1000 + kontozähler; + this.inhaber = vorname+" "+nachname; this.kontobewegungen = new ArrayList<>(); + this.ku = new Kunde(vorname, nachname, alter, wohnort, nummer); + } public int getKontonummer() { 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..354cf32 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 @@ -8,7 +8,7 @@ class KontoTest { @Test void testKontoBasics() { - Konto k = new Konto("Müller", 0); + Konto k = new Konto("Müller", null, 0, null, 0, 0); assertEquals("Müller", k.getInhaber()); assertEquals(1000, k.getKontonummer()); assertEquals(0, k.getKontostand()); @@ -16,12 +16,12 @@ class KontoTest { @Test void testKontoEinUndAuszahlungUndSaldo() { - Konto k = new Konto("Müller", 0); - Konto k2 = new Konto("Mayer", 1); + Konto k = new Konto("Müller", null, 0, null, 0, 0); + Konto k2 = new Konto("Mayer", null, 1, null, 0, 0); testKontoEinUndAuszahlungUndSaldo(k, k2); - k = new Girokonto("Müller", 0); - k2 = new Girokonto("Mayer", 1); + k = new Girokonto("Müller", null, 0, null, 0, 0); + k2 = new Girokonto("Mayer", null, 1, null, 0, 0); testKontoEinUndAuszahlungUndSaldo(k, k2); } @@ -48,8 +48,8 @@ class KontoTest { } @Test - void testKeineÃœberziehungFürSparkonten() { - Konto k = new Konto("Müller", 0); + void testKeineÜberziehungFürSparkonten() { + Konto k = new Konto("Müller", null, 0, null, 0, 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..a4fe700 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kunde.java @@ -0,0 +1,33 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Kunde implements Serializable { + private final String vorname; + private String nachname; + private int alter; + private String wohnort; + + private int kontonummer; + + public Kunde(String vorname, String nachname, int alter, String wohnort, int kontonummer) { + this.vorname = vorname; + this.nachname = nachname; + this.alter = alter; + this.wohnort = wohnort; + this.kontonummer = kontonummer; + + } + public String getFullName(String vorname, String nachname) { + return null; + } + + @Override + public String toString() { + return "Konto2 testlauf kunden " + kontonummer + " " + vorname +" "+ nachname + " "+ wohnort+ " ]"; + + } + + +} 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..bc4a687 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 @@ -17,8 +17,8 @@ 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 vorname, String nachname, int alter, String wohnort, int auswahl) throws Exception { + int kontonummer = bank.addKonto(vorname, nachname, alter, wohnort, auswahl); Persistenz.speichereBankDaten(this.bank, bank.getName()); @@ -66,12 +66,12 @@ public class Banksystem { return konto.getKontobewegungen(); } - public boolean überweisungBeauftragen(int startkonto, int zielkonto, long betrag, String verwendungszweck) throws Exception { + public boolean überweisungBeauftragen(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).überweise((Girokonto)ziel, betrag, verwendungszweck); Persistenz.speichereBankDaten(this.bank, bank.getName()); return erfolg; @@ -92,4 +92,25 @@ public class Banksystem { return konto.berechneSaldo(anzahl); } + public String[] getKundenliste() { + Collection kunden = bank.getKundenliste(); + String[] liste = new String[kunden.size()]; + + int i = 0; + for (String k : kunden) { + liste[i++] = k.toString(); + } + return liste; + } + + public int kontoFinden(String name) { + Collection kontenliste = bank.getKontenliste(); + for (Konto k : kontenliste) { + if(k.getInhaber().contains(name)) { + return k.getKontonummer(); + } + }return 0; + + } + } 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..4ee047c 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,8 @@ class SystemTest { @Test @Order(2) void einzahlenTest() throws Exception { - int knr = bs.kontoAnlegen("Test1", 1); + int knr = 0; + knr = bs.kontoAnlegen("Test1", null, 1, null, knr); assertEquals(1000, bs.geldEinzahlen(knr, 1000)); @@ -46,12 +47,14 @@ class SystemTest { @Test @Order(3) void persistenzTest() throws Exception { - int knr = bs.kontoAnlegen("Test2", 2); - int knr2 = bs.kontoAnlegen("Test3", 2); + int knr = 0; + int knr2 = 0; + knr = bs.kontoAnlegen("Test2", null, 2, null, knr); + knr2 = bs.kontoAnlegen("Test3", null, 2, null, knr2); bs.geldEinzahlen(knr, 1000); bs.geldAuszahlen(knr, 500); - assertTrue(bs.überweisungBeauftragen(knr, knr2, 100, "Ãœberweisungstest.")); + assertTrue(bs.überweisungBeauftragen(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..a43ca0f 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,10 +10,10 @@ public class UI { public UI(Banksystem bs) { this.bs = bs; - hauptmenü(); + hauptmenü(); } - private void hauptmenü() { + private void hauptmenü() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); mainloop: @@ -28,6 +28,7 @@ public class UI { System.out.println("5 -> Kontoauszug drucken"); System.out.println("6 -> Ãœberweisung beauftragen"); System.out.println("7 -> Saldo abfragen"); + System.out.println("8 -> Kundenstamm anzeigen "); System.out.println("9 -> Beenden"); System.out.println(); @@ -45,8 +46,9 @@ public class UI { case 3: geldEinzahlen(); break; case 4: geldAuszahlen(); break; case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; + case 6: überweisungBeauftragen(); break; case 7: saldoAbfragen(); break; + case 8: kundenStammAnzeigen(); break; case 9: break mainloop; } @@ -60,6 +62,19 @@ public class UI { } // hauptmenü + private void kundenStammAnzeigen() { + String[] kunden = bs.getKundenliste(); + if (kunden.length > 0) { + System.out.println("Folgende Konten sind aktuell verfügbar:"); + for (String s : kunden) { + System.out.println(s); + } + } else { + System.out.println("Bisher keine Konten angelegt."); + } + + } + private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { @@ -73,21 +88,39 @@ public class UI { } private void kontoAnlegen() throws Exception { - System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - String name = sc.nextLine(); + System.out.println("Bitte den Vornamen des Kontoinhabers angeben: "); + String vorname = sc.nextLine(); + + System.out.println("Bitte den Nachnamen des Kontoinhabers angeben: "); + String nachname = sc.nextLine(); + + System.out.println("Bitte das Alter des Kontoinhabers angeben: "); + int alter = Integer.parseInt(sc.nextLine()); + + System.out.println("Bitte den Wohnort des Kontoinhabers angeben: "); + String wohnort = sc.nextLine(); - System.out.println("Möchten Sie ein Sparkonto (1) oder ein Girokonto (2) anlegen?"); + System.out.println("Möchten 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(vorname, nachname, alter, wohnort, auswahl); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } private void geldEinzahlen() throws Exception { + int kontonummer = 0; System.out.println("Geld einzahlen"); - System.out.print("Bitte die gewünschte Kontonummer eingeben: "); - int kontonummer = Integer.parseInt(sc.nextLine()); - + System.out.println("Wie einzahlen? 1-> Kontonummer; 2-> Vorname Nachname"); + System.out.print(">"); + int input = Integer.parseInt(sc.nextLine()); + System.out.println(); + switch(input) { + case 1: System.out.print("Bitte die gewünschte Kontonummer eingeben: "); + kontonummer = Integer.parseInt(sc.nextLine());break; + case 2: System.out.print("Bitte die Namen eingeben: "); + String name = sc.nextLine(); + kontonummer = bs.kontoFinden(name); + } // optional prüfen, ob Konto existiert System.out.print("Bitte den gewünschten Betrag eingeben: "); @@ -95,7 +128,8 @@ public class UI { long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); - System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); + System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); + } private void geldAuszahlen() throws Exception { @@ -128,7 +162,7 @@ public class UI { System.out.println("Noch keine Kontobewegungen."); } - private void überweisungBeauftragen() throws Exception { + private void überweisungBeauftragen() throws Exception { System.out.print("Bitte die Kontonummer des Ausgangskontos der Ãœberweisung eingeben: "); int startkonto = Integer.parseInt(sc.nextLine()); @@ -141,7 +175,7 @@ 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.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); System.out.println("Ãœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); }