diff --git a/Bank-Beispiel/.classpath b/Bank-Beispiel/.classpath index 57bca72..257ce1d 100644 --- a/Bank-Beispiel/.classpath +++ b/Bank-Beispiel/.classpath @@ -6,5 +6,6 @@ + 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 dd783b9..34e3a42 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/Main.java @@ -2,10 +2,10 @@ package de.hs_mannheim.informatik.bank; import de.hs_mannheim.informatik.bank.facade.Banksystem; import de.hs_mannheim.informatik.bank.ui.UI; + public class Main { public static void main(String[] args) { 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 87c4b6e..7dfc6a7 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 @@ -2,23 +2,27 @@ package de.hs_mannheim.informatik.bank.domain; import java.util.Collection; import java.util.HashMap; + public class Bank { private String name; private HashMap konten = new HashMap<>(); - -public Bank(String name){ - this.name = name; -} -public String getName() { - return name; -} -public void addKonto(Konto k) { - konten.put(k.getKontonummer(), k); -} -public Collection getKontenliste(){ - return konten.values(); + + public Bank(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void addKonto(Konto k) { + konten.put(k.getKontonummer(), k); } + + public Collection getKontenliste() { + return konten.values(); + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/BankTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/BankTest.java new file mode 100644 index 0000000..85a584b --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/BankTest.java @@ -0,0 +1,17 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import de.hs_mannheim.informatik.bank.facade.Banksystem; + +class BankTest { + + @Test + void test() { + Bank bank = new Bank("Sparkasse Mannheim"); + assertEquals("Sparkasse Mannheim", bank.getName()); + } + +} 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 92c2eab..891dd58 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 @@ -1,29 +1,69 @@ package de.hs_mannheim.informatik.bank.domain; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; + public class Konto { private static int kontozähler; private int nummer; private String inhaber; - private long stand=0; + private long stand = 0; + private long betrag; + int zahl; + int counter = 0; + public ArrayList beträge = new ArrayList(1000); + public ArrayList datumsEinträge = new ArrayList(1000); + + public Konto(String inhaber) { + nummer = 1000 + kontozähler++; + this.inhaber = inhaber; + } -public Konto(String inhaber) { - nummer = 1000 + kontozähler++; - this.inhaber = inhaber; + public String getInhaber() { + return inhaber; + } + + public int getKontonummer() { + return nummer; + } + + public long zeigeStand() { + return this.stand; + } + + public void zahleEinBetrag(long betrag) { + this.stand = this.stand + betrag; + this.betrag = betrag; + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); + datumsEinträge.add(dateFormat.format(LocalDateTime.now())); + + beträge.add(betrag); + } -} + public int hochzählen() { + return counter = counter + zahl++; + } -public int getKontonummer() { - return nummer; -} -public String toString() { - return "Kontonummer " + nummer + ", Inhaber " + inhaber + ", Kontostand " + stand + " Euro"; -} + public ArrayList getDatum() { + return datumsEinträge; + } -public long zeigeStand() { - return stand; -} -public void zahleEinBetrag(long betrag) { - this.stand = this.stand + betrag; -} + public String zahleAus(long auszahlung) { + if (this.stand == 0) { + return "Sie haben aktuell kein Geld auf dem Konto"; + } + if (this.stand >= auszahlung) { + long neuerStand = this.stand = this.stand - auszahlung; + return "Sie haben " + auszahlung + " Euro abgehoben. Sie haben noch ein Guthaben von " + neuerStand + " Euro"; + } else { + return "Sie haben nur ein Guthaben von " + this.stand; + } + } + + public String toString() { + return " Inhaber: " + inhaber + " Kontonummer: " + nummer + " Kontostand: " + stand + " Euro"; + + } } 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 new file mode 100644 index 0000000..ad80098 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java @@ -0,0 +1,33 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class KontoTest { + + @Test + void testKonto() { + Konto k = new Konto("Müller"); + assertEquals("Müller", k.getInhaber()); + assertEquals(1000, k.getKontonummer()); + k.zahleEinBetrag(1500); + assertEquals(1500, k.zeigeStand()); + k.zahleAus(500); + assertEquals(1000, k.zeigeStand()); + assertEquals(" Inhaber: Müller Kontonummer: 1000 Kontostand: 1000 Euro", k.toString()); + + + Konto k2 = new Konto("Mayer"); + assertEquals("Mayer", k2.getInhaber()); + k2.zahleEinBetrag(2000); + assertEquals(1001, k2.getKontonummer()); + assertEquals(2000, k2.zeigeStand()); + k2.zahleAus(700); + assertEquals(1300, k2.zeigeStand()); + assertEquals(" Inhaber: Mayer Kontonummer: 1001 Kontostand: 1300 Euro", k2.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 8d2e485..4067661 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 @@ -1,23 +1,38 @@ package de.hs_mannheim.informatik.bank.facade; - import java.util.Collection; - import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Konto; public class Banksystem { private Bank bank; private Konto selKonto; + int newCounter; public Banksystem(String bankname) { this.bank = new Bank(bankname); + } + public String auszahlen(long auszahlung) { + if (selKonto != null) { + return selKonto.zahleAus(auszahlung); + } else + return "Fehlerhafter Zustand"; + } + + public void auszug() { + System.out.println("Kontoauszug: "); + System.out.println(); + System.out.println(selKonto.toString()); + System.out.println(); + for (int i = 0; i < selKonto.beträge.size(); i++) { + System.out.println(" " +selKonto.datumsEinträge.get(i) + " -------> Einzahlung: " + selKonto.beträge.get(i)); + System.out.println(); + } } public int kontoAnlegen(String name) { Konto k = new Konto(name); - bank.addKonto(k); return k.getKontonummer(); } @@ -28,17 +43,22 @@ public class Banksystem { if (kn == k.getKontonummer()) { this.selKonto = k; } - }return selKonto != null; - + } + return selKonto != null; } public void zahleEin(long betrag) { if (selKonto != null) { selKonto.zahleEinBetrag(betrag); - System.out.println("Sie haben " +betrag+ " eingezahlt."); - }else {System.out.println("Fehlerhafter Zustand");} - + selKonto.getDatum(); + newCounter = selKonto.hochzählen(); + System.out.println("Sie haben " + betrag + " Euro eingezahlt."); + } else { + System.out.println("Fehlerhafter Zustand"); + } + } + public String[] getKontenliste() { Collection konten = bank.getKontenliste(); String[] liste = new String[konten.size()]; @@ -52,7 +72,8 @@ public class Banksystem { public String getBankname() { return bank.getName(); } -public void stand() { - System.out.println("Der Kontostand beträgt: " + selKonto.zeigeStand()); -} + + public void stand() { + System.out.println("Der Kontostand beträgt: " + selKonto.zeigeStand() + " Euro"); + } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java new file mode 100644 index 0000000..b1ea941 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java @@ -0,0 +1,19 @@ +package de.hs_mannheim.informatik.bank.facade; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import de.hs_mannheim.informatik.bank.domain.Bank; +import de.hs_mannheim.informatik.bank.domain.Konto; + +class BanksystemTest { + private Konto selKonto; + @Test + void test() { +Banksystem bs = new Banksystem("Sparkasse Mannheim"); + +assertEquals(selKonto.zahleAus(1000), bs.auszahlen(1000)); + } + +} 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 33c820b..6bdb96b 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 @@ -3,6 +3,7 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.Scanner; import de.hs_mannheim.informatik.bank.facade.Banksystem; + public class UI { private Banksystem bs; private boolean kontoSelektiert; @@ -21,7 +22,7 @@ public class UI { System.out.println("Willkommen bei der " + bs.getBankname()); reset(); mainloop: while (true) { - + if (!kontoSelektiert) { System.out.println("Hauptmenü"); System.out.println("1 -> Konto anzeigen"); @@ -30,7 +31,10 @@ public class UI { } else { System.out.println("4 -> Geld einzahlen"); System.out.println("5 -> Kontostand"); - System.out.println("6 -> Hauptmenü"); + System.out.println("6 -> Geld auszahlen"); + System.out.println("7 -> Kontoauszug"); + System.out.println("8 -> Hauptmenü"); + } System.out.println("9 -> beenden"); @@ -50,10 +54,17 @@ public class UI { case 4: einzahlen(); break; - case 5 : kontoStand(); break; - case 6: - hauptmenü(); + case 5: + kontoStand(); break; + case 6: + zahleAus(); + break; + case 7: + kontoAuszug(); + break; + case 8: + hauptmenü(); case 9: break mainloop; @@ -62,25 +73,33 @@ public class UI { } + private void kontoAuszug() { + bs.auszug(); + + } + + private void zahleAus() { + System.out.println("Welchen Betrag möchten Sie abheben?"); + long auszahlung = Long.parseLong(sc.nextLine()); + System.out.println(bs.auszahlen(auszahlung)); + } + private void kontoStand() { bs.stand(); - } private void einzahlen() { System.out.println("Wieviel wollen Sie einzahlen?"); long euro = Long.parseLong(sc.nextLine()); bs.zahleEin(euro); - } private void kontoAuswählen() { - - kontenAnzeigen(); + kontenAnzeigen(); + System.out.println(); System.out.println("Wählen Sie die Kontonummer aus"); int auswahl = Integer.parseInt(sc.nextLine()); kontoSelektiert = bs.kontoAuswählen(auswahl); - } private void kontoAnlegen() { @@ -89,14 +108,16 @@ public class UI { int neuesKonto = bs.kontoAnlegen(inhaber); System.out.println("Konto mit der Kontonummer " + neuesKonto + " wurde angelegt."); - } private void kontenAnzeigen() { + String[] konten = bs.getKontenliste(); if (konten.length > 0) { + System.out.println("Folgende Konten sind angelegt: "); + System.out.println(); for (String s : konten) { System.out.println(s); } @@ -104,5 +125,4 @@ public class UI { System.out.println("Aktuell sind keine Konten angelegt."); } } - }