diff --git a/Bank-Beispiel/.project b/Bank-Beispiel/.project index 49c2c92..68c0541 100644 --- a/Bank-Beispiel/.project +++ b/Bank-Beispiel/.project @@ -1,6 +1,6 @@ - Bank-Beispiel + Bank-Beispiel_Testat 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..e2b3a93 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 @@ -1,28 +1,32 @@ package de.hs_mannheim.informatik.bank.domain; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; 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; + private int kundenzähler; public Bank(String name) { this.name = name; this.kontozähler = -1; } - public int addKonto(String name, int auswahl) { + public int addKonto(Kunde kunde, int auswahl) { Konto k; if (auswahl == 1) - k = new Konto(name, ++kontozähler); + k = new Konto(++kontozähler, kunde); else - k = new Girokonto(name, ++kontozähler); + k = new Girokonto(++kontozähler, kunde); konten.put(k.getKontonummer(), k); + kunde.addKonto(k); return k.getKontonummer(); } @@ -34,9 +38,28 @@ public class Bank implements Serializable { public Collection getKontenliste() { return konten.values(); } + public Collection getKundenliste() { + return kunden.values(); + } + public Konto findeKonto(int kontonummer) { return konten.get(kontonummer); } + public int getKundenzähler() { + return kundenzähler; + } + + public int addKunde(String vorname, String nachname, String wohnort, int alter) { + Kunde k = new Kunde(vorname, nachname,wohnort,alter,++kundenzähler); + kunden.put(k.getKundennummer(), k); + return k.getKundennummer(); + + } + + public Kunde findeKunde(int kundennummer) { + return kunden.get(kundennummer); + + } } 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 ac6ed89..46e8b5a 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 @@ -3,21 +3,16 @@ package de.hs_mannheim.informatik.bank.domain; import java.io.Serializable; public class Girokonto extends Konto implements Serializable { - private long dispo = -500000; - - public Girokonto(String inhaber, int kontozähler) { - super(inhaber, kontozähler); + private long dispo = 100000; + public Girokonto(int kontozähler, Kunde kunde) { + super(kontozähler, kunde); } - public boolean giroAuszahlen(long betrag, String zweck, String art, String auftraggeber) { - long alterStand = getKontostand(); - if (alterStand - betrag >= dispo) { - long neuerStand = alterStand - betrag; - setKontostand(neuerStand); - - - kontobewegung(betrag, zweck, art, auftraggeber); + 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()); return true; } @@ -25,25 +20,12 @@ public class Girokonto extends Konto implements Serializable { return false; } - /*public long dispoBerechnen(long einkommen) { - this.dispo = 0; - long gewährterDispo = einkommen / 4; - return gewährterDispo; + @Override + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + if (stand - betrag >= dispo * (-1)) { + stand -= betrag; - }*/ - - public long getDispo() { - return dispo; - } - - public void setDispo(long dispo) { - this.dispo = dispo; - } - - public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= dispo) { - this.giroAuszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); 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 89ac8c2..7a63408 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 @@ -5,15 +5,16 @@ import java.util.ArrayList; public class Konto implements Serializable { private int nummer; - private long stand = 0; + protected long stand = 0; private String inhaber; + private Kunde kunde; - private ArrayList kontobewegungen; - + protected ArrayList kontobewegungen; - public Konto(String inhaber, int kontozähler) { + public Konto(int kontozähler, Kunde kunde) { nummer = 1000 + kontozähler; - this.inhaber = inhaber; + + this.kunde = kunde; this.kontobewegungen = new ArrayList<>(); } @@ -24,7 +25,11 @@ public class Konto implements Serializable { @Override public String toString() { - return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; + return "Konto [nummer=" + nummer + ", kunde=" + kunde.toString() + "]"; + } + + public Kunde getKunde() { + return kunde; } public String getInhaber() { @@ -34,9 +39,6 @@ public class Konto implements Serializable { public long getKontostand() { return stand; } - public void setKontostand(long stand) { - this.stand = stand; - } public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { stand += betrag; @@ -44,7 +46,7 @@ public class Konto implements Serializable { kontobewegungen.add(new Kontobewegung(betrag, zweck, art, auftraggeber)); } - public boolean sparkontoAuszahlen(long betrag, String zweck, String art, String auftraggeber) { + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { if (stand - betrag >= 0) { stand -= betrag; @@ -56,11 +58,6 @@ public class Konto implements Serializable { return false; } - public void kontobewegung(long betrag, String zweck, String art, String auftraggeber) { - - kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); - } - public String[] getKontobewegungen() { String[] auflistung = new String[kontobewegungen.size()]; @@ -71,14 +68,15 @@ public class Konto implements Serializable { return auflistung; } + + public long berechneSaldo(int anzahl) { + long saldo = 0; + + for (int i = 0; i < anzahl; i++) { + saldo += kontobewegungen.get(i).getBetrag() ; + } + + return saldo; + } + } - /* - * public long saldo(long betrag, int counter) { long aktuellerStand = stand; - * for (int i = counter; i<=saldo.length-1; i++) { saldo[i] = betrag; - * aktuellerStand += betrag; } return aktuellerStand; } - */ - - - - - 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 955a2e8..e20060a 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 @@ -15,21 +15,46 @@ class KontoTest { } @Test - void testKontoEinUndAuszahlung() { + void testKontoEinUndAuszahlungUndSaldo() { Konto k = new Konto("Müller", 0); Konto k2 = new Konto("Mayer", 1); + testKontoEinUndAuszahlungUndSaldo(k, k2); + k = new Girokonto("Müller", 0); + k2 = new Girokonto("Mayer", 1); + testKontoEinUndAuszahlungUndSaldo(k, k2); + } + + private void testKontoEinUndAuszahlungUndSaldo(Konto k, Konto k2) { assertEquals("Mayer", k2.getInhaber()); assertNotEquals(k.getKontonummer(), k2.getKontonummer()); k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); assertEquals(100, k2.getKontostand()); - assertTrue(k2.sparkontoAuszahlen(50, "Test", "Auszahlung", "JUnit")); + assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); assertEquals(50, k2.getKontostand()); - assertFalse(k2.sparkontoAuszahlen(500, "Test", "Auszahlung", "JUnit")); - assertEquals(50, k2.getKontostand()); + assertTrue(k2.auszahlen(50, "Test", "Auszahlung", "JUnit")); + assertEquals(0, k2.getKontostand()); + + k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); + k2.einzahlen(100, "Test", "Einzahlung", "JUnit"); + k2.einzahlen(1, "Test", "Einzahlung", "JUnit"); + + assertEquals(100, k2.berechneSaldo(1)); + assertEquals(100, k2.berechneSaldo(4)); + assertEquals(k2.getKontostand(), k2.berechneSaldo(6)); + } + + @Test + void testKeineÜberziehungFürSparkonten() { + Konto k = new Konto("Müller", 0); + k.einzahlen(100, "Test", "Einzahlung", "JUnit"); + assertFalse(k.auszahlen(500, "Test", "Auszahlung", "JUnit")); + + k.auszahlen(50, "Test", "Auszahlung", "JUnit"); + assertFalse(k.auszahlen(100, "Test", "Auszahlung", "JUnit")); } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java index 1439349..22f1401 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java @@ -19,6 +19,9 @@ public class Kontobewegung implements Serializable { this.datum = new Date(); } + public long getBetrag() { + return betrag; + } @Override public String toString() { 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 4af9abe..066a716 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,11 +5,11 @@ 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 { private Bank bank; - private static int counter = 0; public Banksystem(String bankname) throws Exception { if (Persistenz.sindDatenGespeichert(bankname)) @@ -18,9 +18,9 @@ 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(Kunde kunde, int auswahl) throws Exception { + int kontonummer = bank.addKonto(kunde, auswahl); + Persistenz.speichereBankDaten(this.bank, bank.getName()); return kontonummer; @@ -32,7 +32,18 @@ public class Banksystem { int i = 0; for (Konto k : konten) { - liste[i++] = k.toString(); + liste[i++] = k.toString(); + } + + return liste; + } + public String[] getKundenliste() { + Collection kunden = bank.getKundenliste(); + String[] liste = new String[kunden.size()]; + + int i = 0; + for (Kunde k : kunden) { + liste[i++] = k.toString(); } return liste; @@ -45,37 +56,20 @@ public class Banksystem { public long geldEinzahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); konto.einzahlen(betrag, "Einzahlung am Schalter", "Einzahlung", konto.getInhaber()); - zähleKontobewegung(); Persistenz.speichereBankDaten(this.bank, bank.getName()); - + return konto.getKontostand(); } - // hier war ein Fehler drin, es wurde zuerst gespeichert und dann ausgezahlt, - // ich speichere den boolean jetzt zwischen, führe die Methode aus und gebe den - // boolean dann zurück public boolean geldAuszahlen(int kontonummer, long betrag) throws Exception { Konto konto = bank.findeKonto(kontonummer); - if (konto instanceof Girokonto) { - boolean funktioniert = ((Girokonto) konto).giroAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", - konto.getInhaber()); - Persistenz.speichereBankDaten(this.bank, bank.getName()); - if (funktioniert == true) { - zähleKontobewegung(); - - } - return funktioniert; - } - boolean funktioniert = konto.sparkontoAuszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", - konto.getInhaber()); - if (funktioniert == true) { - zähleKontobewegung(); - - } + + boolean erg = konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); + Persistenz.speichereBankDaten(this.bank, bank.getName()); - - return funktioniert; + + return erg; } public String[] erstelleKontoauszug(int kontonummer) { @@ -84,19 +78,15 @@ public class Banksystem { return konto.getKontobewegungen(); } - // hier das gleiche Problem wie in "geldAuszahlen" -> boolean zwischenspeichern - // und dann speichern - 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 funktioniert = ((Girokonto) start).überweise((Girokonto) ziel, betrag, verwendungszweck); - zähleKontobewegung(); + boolean erfolg = ((Girokonto)start).überweise((Girokonto)ziel, betrag, verwendungszweck); Persistenz.speichereBankDaten(this.bank, bank.getName()); - return funktioniert; - + + return erfolg; } return false; @@ -108,27 +98,22 @@ public class Banksystem { return konto.getKontostand(); } - /*public long dispoBerechnen(int kontonummer, long einkommen) throws Exception { + public long saldoBestimmen(int kontonummer, int anzahl) { Konto konto = bank.findeKonto(kontonummer); - if (konto instanceof Girokonto) { - long gewährterDispo = ((Girokonto) konto).dispoBerechnen(einkommen); - Persistenz.speichereBankDaten(this.bank, bank.getName()); - return gewährterDispo; - } else { - long keinDispo = 0; - return keinDispo; - } - }*/ - - public void zähleKontobewegung() { - counter++; - + + return konto.berechneSaldo(anzahl); } - public boolean printeNachBewegungen() { - if (counter % 5 == 0) { - return true; - } - return false; + public int kundeAnlegen(String vorname, String nachname, String wohnort, int alter) { + int kundennummer = bank.addKunde(vorname,nachname,wohnort,alter); + return kundennummer; + } + + public Kunde findeKunde(int kundennummer) { + Kunde k = bank.findeKunde(kundennummer); + return k; + + } + } 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 6e81709..b063dce 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 @@ -1,153 +1,70 @@ package de.hs_mannheim.informatik.bank.facade; -import de.hs_mannheim.informatik.bank.domain.Bank; -import de.hs_mannheim.informatik.bank.domain.Konto; -import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; -import java.nio.file.Files; -import org.junit.After; -import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +@TestMethodOrder(OrderAnnotation.class) class SystemTest { + private static Banksystem bs; + + @BeforeAll + static void initBanksystem() throws Exception { + bs = new Banksystem("Testsystem"); + } @Test - void smokeTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - + @Order(1) + void smokeTest() { assertNotNull(bs); assertEquals(0, bs.getKontenliste().length); assertEquals("Testsystem", bs.getBankname()); - } - + @Test - void bsGeldEinzahlenTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - - // Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl - // Sparkonto - int testKontonummer1 = bs.kontoAnlegen("Robin", 1); - int testKontonummer2 = bs.kontoAnlegen("Kai", 1); - - bs.geldEinzahlen(testKontonummer1, 500); - bs.geldEinzahlen(testKontonummer2, 1000); - - // Überprüfen, ob das Einzahlen funktioniert - assertEquals(500, bs.getKontostand(testKontonummer1)); - assertEquals(1000, bs.getKontostand(testKontonummer2)); - - } - - @Test - void bsGeldAuszahlenTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - - // Erstmal Konten anlegen bevor diese getestet werden können; 1 für Auswahl - // Sparkonto - int testKontonummer1 = bs.kontoAnlegen("Robin", 1); - int testKontonummer2 = bs.kontoAnlegen("Kai", 1); - - bs.geldEinzahlen(testKontonummer1, 500); - bs.geldEinzahlen(testKontonummer2, 1000); - - // Überprüfen, ob das Einzahlen funktioniert - assertEquals(500, bs.getKontostand(testKontonummer1)); - assertEquals(1000, bs.getKontostand(testKontonummer2)); - - bs.geldAuszahlen(testKontonummer1, 250); - bs.geldAuszahlen(testKontonummer2, 750); - - assertEquals(250, bs.getKontostand(testKontonummer1)); - assertEquals(250, bs.getKontostand(testKontonummer2)); - - } - - @Test - void bsGeldAuszahlenBisDispoTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - - // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl - // Girokonto - int testKontonummer1 = bs.kontoAnlegen("Robin", 2); - int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - - bs.geldEinzahlen(testKontonummer1, 500); - bs.geldEinzahlen(testKontonummer2, 1000); - - assertEquals(500, bs.getKontostand(testKontonummer1)); - // assertEquals(1000, bs.getKontostand(testKontonummer2)); - - bs.geldAuszahlen(testKontonummer1, 5499); - assertEquals(-4999, bs.getKontostand(testKontonummer1)); - bs.geldAuszahlen(testKontonummer1, 1); - assertEquals(-5000, bs.getKontostand(testKontonummer1)); - bs.geldAuszahlen(testKontonummer1, 1); - assertEquals(-5001, bs.getKontostand(testKontonummer1)); + @Order(2) + void einzahlenTest() throws Exception { + int knr = bs.kontoAnlegen("Test1", 1); - + assertEquals(1000, bs.geldEinzahlen(knr, 1000)); + + bs.geldEinzahlen(knr, 1); + assertEquals(1001, bs.getKontostand(knr)); + + assertEquals(1001, bs.geldEinzahlen(knr, 0)); } - + @Test - void bsÜberweisenTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - - // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl - // Girokonto - int testKontonummer1 = bs.kontoAnlegen("Robin", 2); - int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - - bs.geldEinzahlen(testKontonummer1, 500); - bs.geldEinzahlen(testKontonummer2, 1000); - - assertTrue(bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 500, "Testüberweisung")); - assertEquals(0, bs.getKontostand(testKontonummer1)); - assertEquals(1500, bs.getKontostand(testKontonummer2)); - bs.überweisungBeauftragen(testKontonummer1, testKontonummer2, 5000, "Testüberweisung"); - assertEquals(-5000, bs.getKontostand(testKontonummer1)); - assertEquals(6500, bs.getKontostand(testKontonummer2)); + @Order(3) + void persistenzTest() throws Exception { + int knr = bs.kontoAnlegen("Test2", 2); + int knr2 = bs.kontoAnlegen("Test3", 2); + bs.geldEinzahlen(knr, 1000); + bs.geldAuszahlen(knr, 500); + assertTrue(bs.überweisungBeauftragen(knr, knr2, 100, "Überweisungstest.")); + + assertEquals(400, bs.getKontostand(knr)); + + bs = null; + + Banksystem bs2 = new Banksystem("Testsystem"); + assertEquals(400, bs2.getKontostand(knr)); + } + + @AfterAll + static void cleanup() { + File file = new File("/Users/oliver/git/Bank-System/Bank-Beispiel/Testsystem-bank-data.ser"); + file.delete(); } - @Test - void persistenzTest() throws Exception{ - Banksystem bs = new Banksystem("TestPersistenz"); - - // Erstmal Konten anlegen bevor diese getestet werden können; 2 für Auswahl - // Girokonto - int testKontonummer1 = bs.kontoAnlegen("Robin", 2); - int testKontonummer2 = bs.kontoAnlegen("Kai", 2); - - - - String name = "TestPersistenz"; - - assertTrue(Persistenz.sindDatenGespeichert(name)); - - File file = new File("TestPersistenz-bank-data.ser"); - assertTrue(file.exists()); - if (file.exists() == true) { - file.delete(); - } - - } - - @AfterEach - public void stDeleteFile() { - String Banksystemname = "Testsystem-bank-data.ser"; - // boolean loeschen = false; - File file = new File(Banksystemname); - if (file.exists()) { - file.delete(); - } - - } } 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 9ec22cc..644ae00 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 @@ -2,12 +2,12 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.Scanner; +import de.hs_mannheim.informatik.bank.domain.Kunde; import de.hs_mannheim.informatik.bank.facade.Banksystem; public class UI { private Banksystem bs; Scanner sc = new Scanner(System.in); - public UI(Banksystem bs) { this.bs = bs; @@ -27,8 +27,8 @@ public class UI { System.out.println("4 -> Geld auszahlen"); System.out.println("5 -> Kontoauszug drucken"); System.out.println("6 -> Überweisung beauftragen"); - // System.out.println("7 -> Disporahmen festlegen"); - + System.out.println("7 -> Saldo abfragen"); + System.out.println("8 -> Kunde anlegen"); System.out.println("9 -> Beenden"); System.out.println(); @@ -56,9 +56,12 @@ public class UI { case 6: überweisungBeauftragen(); break; - /* - * case 7: disporahmenFestlegen(); break; - */ + case 7: + saldoAbfragen(); + break; + case 8: + kundeAnlegen(); + break; case 9: break mainloop; } @@ -73,22 +76,6 @@ public class UI { } // hauptmenü - /* - * private void disporahmenFestlegen() throws Exception { System.out. - * println("Für welches Girokonto soll ein Disporahmen eingerichtet werden?"); - * int kontonummer = Integer.parseInt(sc.nextLine()); - * - * System.out. - * println("Wie hoch ist Ihr Jahreseinkommen? (Dispo beträgt 1/4 des Jahresnettoeinkommen)" - * ); long einkommen = Long.parseLong(sc.nextLine()); - * - * long gewährterDispo = bs.dispoBerechnen(kontonummer, einkommen); - * System.out.println("Ihr gewährter Dispokredit beträgt: " + gewährterDispo + - * "€"); - * - * } - */ - private void kontenAnzeigen() { String[] konten = bs.getKontenliste(); if (konten.length > 0) { @@ -102,18 +89,30 @@ public class UI { } private void kontoAnlegen() throws Exception { - System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - String name = sc.nextLine(); + String[] kunden = bs.getKundenliste(); + if (kunden.length == 0) { + System.out.println("Es gibt noch keine Kunden, bitte Kunde anlegen."); + kundeAnlegen(); + } + + //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?"); int auswahl = Integer.parseInt(sc.nextLine()); - - int kontonummer = bs.kontoAnlegen(name, auswahl); - System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + System.out.println("Bitte geben Sie eine Kundennummer ein: "); + int kundennummer = Integer.parseInt(sc.nextLine()); + Kunde k = bs.findeKunde(kundennummer); + if (k == null) { + System.out.println("Kunde existiert nicht, bitte neu versuchen."); + kontoAnlegen(); + } else { + int kontonummer = bs.kontoAnlegen(k, auswahl); + System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + } } private void geldEinzahlen() throws Exception { - // boolean print = false; System.out.println("Geld einzahlen"); System.out.print("Bitte die gewünschte Kontonummer eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); @@ -125,13 +124,7 @@ public class UI { long neuerKontostand = bs.geldEinzahlen(kontonummer, (long) betrag * 100); - if (bs.printeNachBewegungen() == true) { - - System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); - } - - System.out.printf("Einzahlung erfolgreich."); - + System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); } private void geldAuszahlen() throws Exception { @@ -144,23 +137,14 @@ public class UI { boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long) betrag * 100); - if (bs.printeNachBewegungen() == true) { - - System.out.println("Zwischensaldo: " + (bs.getKontostand(kontonummer) / 100.0) + "€"); - } - System.out.printf("Auszahlung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich. "); - - // System.out.printf("Neuer Kontostand = %.2f Euro.", - // (bs.getKontostand(kontonummer) / 100.0)); + System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); } private void kontoauszugDrucken() { System.out.print("Bitte die gewünschte Kontonummer für den Auszug eingeben: "); int kontonummer = Integer.parseInt(sc.nextLine()); - System.out.println(); - // in echt auf einem Drucker System.out.println("Auszug für Konto " + kontonummer); String[] kontobewegungen = bs.erstelleKontoauszug(kontonummer); @@ -187,12 +171,33 @@ public class UI { String verwendungszweck = sc.nextLine(); boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long) (betrag * 100), verwendungszweck); - if (bs.printeNachBewegungen() == true) { - System.out.println("Zwischensaldo Startkonto: " + (bs.getKontostand(startkonto) / 100.0) + "€"); - System.out.println("Zwischensaldo Zielkonto: " + (bs.getKontostand(zielkonto) / 100.0) + "€"); - } System.out.println("Überweisung" + ((!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); } + private void saldoAbfragen() { + System.out.print("Bitte die Kontonummer des gewünschten Kontos eingeben: "); + int konto = Integer.parseInt(sc.nextLine()); + + System.out.print("Bitte die Anzahl der Kontobewegungen für den Saldo eingeben: "); + int anzahl = Integer.parseInt(sc.nextLine()); + + long saldo = bs.saldoBestimmen(konto, anzahl); + System.out.printf("Der Saldo nach %d Kontobewegungen beträgt %.2f Euro.%n", anzahl, (saldo / 100d)); + } + + private void kundeAnlegen() { + System.out.println("Vorname"); + String vorname = sc.nextLine(); + System.out.println("Nachname"); + String nachname = sc.nextLine(); + System.out.println("Wohnort"); + String wohnort = sc.nextLine(); + System.out.println("Alter"); + int alter = Integer.parseInt(sc.nextLine()); + int kundennummer = bs.kundeAnlegen(vorname, nachname, wohnort, alter); + System.out.println("Der Kunde wurde angelegt mit der KN: " + kundennummer); + + } + }