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 0b66d3d..59ddf3e 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,6 +1,8 @@ package de.hs_mannheim.informatik.bank.domain; +import java.util.ArrayList; import java.util.Collection; + import java.util.HashMap; public class Bank { @@ -18,9 +20,20 @@ public class Bank { public String getName() { return name; } - + public Collection getKontenliste() { - return konten.values(); + return konten.values();//Liste aus HashMaps } + public ArrayList EinzahlungenAuszahlungen(int knum, long betrag ){ + ArrayList bewegung= null; + if(knum != 0 && betrag !=0) { + bewegung=konten.get(knum).getZahlungen(); + bewegung.add(betrag); + return bewegung; + } + return null; + + } + } 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..efdb65a --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/BankTest.java @@ -0,0 +1,61 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +class TestBank { + private static Konto k1=null; + private static Konto k2=null; + private static Konto k3=null; + @BeforeAll + static void kontenErstellen() { + + try { + k1= new Konto("Rahel Strack"); + k2= new Konto("Micky Maus"); + k3= new Konto("Peter Lustig"); + }catch(Exception e) { + fail("account constructor doesn't work"); + } + } + @Test + void testConcstructor() { + Bank b1 =null; + try { + b1= new Bank("Sparkasse Heidelberg"); + }catch(Exception e) { + fail("bank constructor doens't work"); + } + assertEquals(b1.getName(),"Sparkasse Heidelberg"); + } + + @Test + void testAddKonto() { + Bank b1 =null; + try { + b1= new Bank("Sparkasse Heidelberg"); + }catch(Exception e) { + fail("bank constructor doens't work"); + } + b1.addKonto(k1); + assertTrue(b1.getKontenliste().contains(k1)); + } + + @Test + void testGetKontenliste() { + Bank b1 =null; + try { + b1= new Bank("Sparkasse Heidelberg"); + }catch(Exception e) { + fail("bank constructor doens't work"); + } + assertTrue(b1.getKontenliste().isEmpty()); + b1.addKonto(k2); + b1.addKonto(k3); + assertEquals(b1.getKontenliste().size(),2); + + } + +} 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 654d503..241be53 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,11 +1,14 @@ package de.hs_mannheim.informatik.bank.domain; +import java.util.ArrayList; + public class Konto { - private static int kontozähler = 0; + private static int kontozähler = 0; private int nummer; private long stand = 0; private String inhaber; + private ArrayList zahlungen= new ArrayList<>(); public Konto(String inhaber) { nummer = 1000 + kontozähler++; @@ -16,6 +19,27 @@ public class Konto { return nummer; } + public String getInhaber() {//hinzugefügt + return inhaber; + } + + public long getStand() { + return stand; + } + + public void setStand(long stand) { + + this.stand = stand; + } + + public ArrayList getZahlungen() { + return zahlungen; + } + + public static int getKontozähler() { //hinzugefügt + return kontozähler; + } + @Override public String toString() { return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; 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..0d4b51f --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontoTest.java @@ -0,0 +1,66 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +@TestMethodOrder(OrderAnnotation.class) +class TestKonto { + + @Test + @Order(1) + void testConstructor() { + Konto konto1=null; + try { + konto1=new Konto("Rahel Strack"); + }catch(Exception e) { + fail("konto construktor doesn't work"); + } + assertEquals(konto1.getInhaber(),"Rahel Strack"); + assertEquals(konto1.getKontonummer(),1000); + assertEquals(konto1.getStand(),0); + } + @Test + @Order(2) + void testKontozähler() { + Konto konto2 =null; + try { + konto2 = new Konto("Sherlock Holmes"); + + }catch(Exception e) { + fail("konto constructor doens't work"); + } + int kzaehler=Konto.getKontozähler(); + assertEquals(kzaehler,2); + } + @Test + @Order(3) + void testSetStand() { + Konto konto3 =null; + try { + konto3 = new Konto("Sherlock Holmes"); + + }catch(Exception e) { + fail("konto constructor doens't work"); + } + konto3.setStand(700); + assertEquals(konto3.getStand(),700); + + } + @Test + @Order(4) + void testToString() { + Konto konto4 =null; + try { + konto4 = new Konto("Sherlock Holmes"); + + }catch(Exception e) { + fail("konto constructor doens't work"); + } + assertEquals(konto4.toString(),"Konto [nummer=" + 1003 + ", inhaber=Sherlock Holmes]"); + } + + +} 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 new file mode 100644 index 0000000..cd1a06c --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Kontobewegung.java @@ -0,0 +1,39 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.util.Date; + +public class Kontobewegung { + private String auftraggeber=null; + private Date datum = null; + private Zahlungsart zahlungsart=null; + + public Kontobewegung(String auftraggeber, Zahlungsart zahlungsart) { + this.auftraggeber=auftraggeber; + this.datum=datum; + this.zahlungsart=zahlungsart; + } + + public String getAuftraggeber() { + return auftraggeber; + } + + public void setAuftraggeber(String auftraggeber) { + this.auftraggeber = auftraggeber; + } + + public Date getDatum() { + return datum; + } + + public void setDatum(Date datum) { + this.datum = datum; + } + + public Zahlungsart getZahlungsart() { + return zahlungsart; + } + + public void setZahlungsart(Zahlungsart zahlungsart) { + this.zahlungsart = zahlungsart; + } +} diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontobewegungTest.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontobewegungTest.java new file mode 100644 index 0000000..a08b996 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/KontobewegungTest.java @@ -0,0 +1,14 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class KontobewegungTest { + + @Test + void test() { + fail("Not yet implemented"); + } + +} diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Zahlungsart.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Zahlungsart.java new file mode 100644 index 0000000..022b1cb --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Zahlungsart.java @@ -0,0 +1,22 @@ +package de.hs_mannheim.informatik.bank.domain; + +public enum Zahlungsart { + EINZAHLUNG("einzahlung"), + AUSZAHLUNG("auszahlung"), + UEBERWEISUNG("Ueberweisung"); + + private String zArt; + + Zahlungsart (String zArt) + { + this.setzArt(zArt); + } + + public String getzArt() { + return zArt; + } + + public void setzArt(String zArt) { + this.zArt = zArt; + } +} 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 821c2a9..9113a93 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,37 +1,148 @@ package de.hs_mannheim.informatik.bank.facade; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Konto; public class Banksystem { private Bank bank; - + public Banksystem(String bankname) { this.bank = new Bank(bankname); } - - public int kontoAnlegen(String name) { - Konto k = new Konto(name); - bank.addKonto(k); - - return k.getKontonummer(); + + public Bank getBank() { + return bank; } - + + public int kontoAnlegen(String name) { + if (name != null) { + Konto k = new Konto(name); + bank.addKonto(k); + + return k.getKontonummer(); + } + return 0; + } + public String[] getKontenliste() { Collection konten = bank.getKontenliste(); - String[] liste = new String[konten.size()]; - - int i = 0; - for (Konto k : konten) { - liste[i++] = k.toString(); + if (!konten.isEmpty()) { + String[] liste = new String[/* bank.getKontenliste().size() */ konten.size()]; + + int i = 0; + for (Konto k : /* bank.getKontenliste() */konten) { + liste[i++] = k.toString(); + } + return liste; } - - return liste; + return null; } - + public String getBankname() { return bank.getName(); } + + public ArrayList kontoAuszug(int knum, long sum) { + ArrayList zahlungen = null; + if (knum != 0 && sum != 0) { + zahlungen = bank.EinzahlungenAuszahlungen(knum, sum); + if (zahlungen != null) { + for (Long zahlung : zahlungen) { + if (zahlung > 0) { + + } + } + } + } + return null; + } + + public String kontoAuszugToString(int knum) { + ArrayList zahlungen = null; + String back = ""; + if (knum != 0) { + zahlungen = bank.EinzahlungenAuszahlungen(knum, 0); + if (!zahlungen.isEmpty()) { + for (Long zahlung : zahlungen) { + if (zahlung > 0) { + back+=zahlung.toString(zahlung)+ "\n"; + } + }return back; + } + } + return null; + } + private String toString(long betrag) { + if (betrag >= 0) { + return "Auszahlung: " + betrag; + } + return "Einzahlung: " + betrag; + } + + // Geldbetrag einzahlen + public long betragEinzahlen(int knum, long amount) { + long sum = 0; + Collection liste = bank.getKontenliste(); + if (knum != 0 && amount != 0) { + for (Konto k : liste) { + if (k.getKontonummer() == knum) { + sum = k.getStand(); + sum += amount; + bank.EinzahlungenAuszahlungen(k.getKontonummer(), amount); + k.setStand(sum); + return k.getStand(); + } + } + } + return 0; + } + + // Betrag auszahlen + public long betragAuszahlen(int knum, long amount) { + long sum = 0; + Collection liste = bank.getKontenliste(); + if (knum != 0 && amount != 0) { + for (Konto k : liste) { + if (k.getKontonummer() == knum) { + sum = k.getStand(); + sum -= amount; + bank.EinzahlungenAuszahlungen(k.getKontonummer(), -amount); + k.setStand(sum); + return k.getStand(); + } + } + } + return 0; + } + + public long kontoStand(int knum) { + if (knum != 0 && bank.getKontenliste() != null) { + for (Konto k : bank.getKontenliste()) { + if (k.getKontonummer() == knum) { + return k.getStand(); + } + } + } + return 0; + } + +// private boolean isString(String s) +// { +// if (s == null || s.length()<=2) { +// return false; +// } +// +// for (int i = 0; i < s.length(); i++) +// { +// char c = s.charAt(i); +// if (!(c >= 'A' && c <= 'Z') && !(c >= 'a' && c <= 'z')) { +// return false; +// } +// } +// return true; +// } } 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..c1b5ef7 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java @@ -0,0 +1,119 @@ +package de.hs_mannheim.informatik.bank.facade; + +import static org.junit.Assert.assertArrayEquals; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; + +import de.hs_mannheim.informatik.bank.domain.Konto; +@TestMethodOrder(OrderAnnotation.class) +class TestBanksystem { + @Test + @Order(1) + void testConstructor() { + Banksystem bs1=null; + try { + bs1= new Banksystem("Sparkasse Heidelberg"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + assertEquals(bs1.getBankname(),"Sparkasse Heidelberg"); + } + @Test + @Order(2) + void testKontoAnlegen() { + Banksystem bs2=null; + try { + bs2= new Banksystem("Sparkasse Hamburg"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + assertTrue(bs2.getBank().getKontenliste().isEmpty()); + bs2.kontoAnlegen("Peter Pan"); + assertEquals(bs2.getKontenliste()[0].toString(),"Konto [nummer=" + 1007 + ", inhaber=Peter Pan]"); + } + @Test + @Order(3) + void testGetKontenliste() { + Banksystem bs3=null; + try { + bs3= new Banksystem("Sparkasse Berlin"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + assertEquals(bs3.getKontenliste(),null); + Konto k1 = null,k2=null,k3 = null; + try { + k1= new Konto("Rahel Strack"); + k2= new Konto("Micky Maus"); + k3= new Konto("Peter Lustig"); + + }catch(Exception e) { + fail("constructor doesn't work"); + } + String[] kl1= {k1.toString(),k2.toString(),k3.toString()}; + bs3.getBank().addKonto(k1); + bs3.getBank().addKonto(k2); + bs3.getBank().addKonto(k3); + assertEquals(bs3.getKontenliste().length,3); + assertArrayEquals(bs3.getKontenliste(),kl1); + + } + @Test + @Order(4) + void testBetragEinzahlen() { + Banksystem bs4=null; + try { + bs4= new Banksystem("Sparkasse Ludwigshafen"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + bs4.kontoAnlegen("Franz"); + assertEquals(bs4.betragEinzahlen(0, 0),0); + assertEquals(bs4.betragEinzahlen(1000, 0),0); + assertEquals(bs4.betragEinzahlen(0, 500),0); + assertEquals(bs4.betragEinzahlen(1011, 500),500); + } + @Test + @Order(5) + void testKontoStand() { + Banksystem bs5=null; + try { + bs5= new Banksystem("Sparkasse Bremen"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + bs5.kontoAnlegen("Sherlock"); + bs5.kontoAnlegen("Franz Kafka"); + assertEquals(bs5.kontoStand(1000),0); + assertEquals(bs5.kontoStand(0),0); + assertEquals(bs5.kontoStand(2000),0); + bs5.betragEinzahlen(1012, 700); + assertEquals(bs5.kontoStand(1012),700); + + } + @Test + @Order(6) + void testBetragAuszahlen() { + Banksystem bs6=null; + try { + bs6= new Banksystem("Sparkasse Ludwigshafen"); + }catch(Exception e) { + fail("banksystem constructor doesn't work"); + } + + bs6.kontoAnlegen("Adrian"); + + assertEquals(bs6.betragAuszahlen(0, 0),0); + assertEquals(bs6.betragAuszahlen(1000, 0),0); + assertEquals(bs6.betragAuszahlen(0, 500),0); + bs6.betragEinzahlen(1014, 700); + assertEquals(bs6.betragAuszahlen(1014, 500),200); + assertEquals(bs6.betragAuszahlen(1014, 500),-300); + } + +} 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 d6eb6e9..ab8be6c 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 @@ -6,46 +6,78 @@ import de.hs_mannheim.informatik.bank.facade.Banksystem; public class UI { private Banksystem bs; - Scanner sc = new Scanner(System.in); + private Scanner sc = new Scanner(System.in); public UI(Banksystem bs) { this.bs = bs; hauptmenü(); } + public Banksystem getBs() { + return bs; + } + private void hauptmenü() { System.out.println("Willkommen bei der " + bs.getBankname() + "!"); mainloop: - while (true) { - System.out.println(); - System.out.println("--------"); - System.out.println("Hauptmenü"); - System.out.println("1 -> Konten anzeigen"); - System.out.println("2 -> Konto anlegen"); - System.out.println("9 -> Beenden"); - System.out.println(); + while (true) { + System.out.println(); + System.out.println("--------"); + System.out.println("Hauptmenü"); + System.out.println("1 -> Konten anzeigen"); + System.out.println("2 -> Konto anlegen"); + System.out.println("3 -> Betrag einzahlen"); + System.out.println("4 -> Kontostand anzeigen"); + System.out.println("5 -> Betrag auszahlen"); + System.out.println("6 -> Kontoauszug ausgeben"); + System.out.println("9 -> Beenden"); + System.out.println(); - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); - System.out.println(); - - switch(input) { - case 1: kontenAnzeigen(); break; - case 2: kontoAnlegen(); break; - case 9: break mainloop; - } + System.out.print("> "); + int input = 0; + try { + input = Integer.parseInt(sc.nextLine()); + } catch (NumberFormatException e) { + System.out.println("Falsche Eingabe"); + continue; } + System.out.println(); + + switch (input) { + case 1: + kontenAnzeigen(); + break; + case 2: + kontoAnlegen(); + break; + case 3: + betragEinzahlen(); + break; + case 4: + kontoStand(); + break; + case 5: + betragAuszahlen(); + break; + case 6: + kontoAuszug(); + break; + case 9: + break mainloop; + } + } System.out.println("Auf Wiedersehen!"); - + sc.close(); } // hauptmenü - private void kontenAnzeigen() { - String[] konten = bs.getKontenliste(); - if (konten.length > 0) { + private void kontenAnzeigen() { + if (bs.getKontenliste() != null) { +// String[] konten = bs.getKontenliste(); +// if (konten.length > 0) { System.out.println("Folgende Konten sind aktuell verfügbar:"); - for (String s : konten) { + for (String s : bs.getKontenliste()) { System.out.println(s); } } else { @@ -55,10 +87,81 @@ public class UI { private void kontoAnlegen() { System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - String name = sc.nextLine(); - + String name = sc.nextLine();// bei Enter wird neue Kontonummer vergeben, aber kein neues Konto angelegt int kontonummer = bs.kontoAnlegen(name); System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); } + // Gesamtbetrag ausgeben + private void betragEinzahlen() { + System.out.println("Bitte die Kontonummer angeben:"); + int kontonummer = 0; + try { + kontonummer = Integer.parseInt(sc.nextLine()); // sinnvoller variable oben zu erstellen und dann in den + System.out.println("Bitte den einzuzahlenden Betrag eingeben:"); + long betrag = 0; + try { + betrag = Long.parseLong(sc.nextLine()); + long kstand = bs.betragEinzahlen(kontonummer, betrag); + if (kstand != 0) { + System.out.println("Der Kontostand des Kontos " + kontonummer + " ist: " + kstand+" €."); + } + } catch (NumberFormatException e) { + System.out.println("Inkorrekte Eingabe!"); + System.out.println("Es konnte kein Betrag eingezahlt werden."); + } + + } catch (NumberFormatException e) { + System.out.println("Inkorrekte Eingabe!"); + System.out.println("Es konnte kein Betrag eingezahlt werden."); + + } + + } + + private void betragAuszahlen() { + System.out.println("Bitte die Kontonummer angeben:"); + int kontonummer = 0; + try { + kontonummer = Integer.parseInt(sc.nextLine()); // sinnvoller variable oben zu erstellen und dann in den + System.out.println("Bitte den auszuzahlenden Betrag eingeben:"); + long betrag = 0; + try { + betrag = Long.parseLong(sc.nextLine()); + long kstand = bs.betragAuszahlen(kontonummer, betrag); + if (kstand != 0) { + System.out.println("Der Kontostand des Kontos " + kontonummer + " ist: " + kstand+" €."); + } + } catch (NumberFormatException e) { + System.out.println("Inkorrekte Eingabe!"); + System.out.println("Es konnte kein Betrag eingezahlt werden."); + } + + } catch (NumberFormatException e) { + System.out.println("Inkorrekte Eingabe!"); + System.out.println("Es konnte kein Betrag eingezahlt werden."); + + } + + } + + private void kontoStand() { + System.out.println("Bitte die Kontonummer angeben:"); + int kontonummer = 0; + try { + kontonummer = Integer.parseInt(sc.nextLine()); + } catch (NumberFormatException e) { + System.out.println("Inkorrekte Eingabe!"); + System.out.println("Es wurde kein Konto mit dieser Nummer gefunden."); + } + long kstand = bs.kontoStand(kontonummer); + if (kstand != 0) { + System.out.println("Der Kontostand des Kontos " + kontonummer + " beträgt: " + kstand); + } + + } + private void kontoAuszug() { + + } + } diff --git a/Bank-Beispiel/src/persistence/Datenspeicherung.java b/Bank-Beispiel/src/persistence/Datenspeicherung.java new file mode 100644 index 0000000..8bb0163 --- /dev/null +++ b/Bank-Beispiel/src/persistence/Datenspeicherung.java @@ -0,0 +1,5 @@ +package persistence; + +public class Datenspeicherung { + +} diff --git a/Bank-Beispiel/src/persistence/DatenspeicherungTest.java b/Bank-Beispiel/src/persistence/DatenspeicherungTest.java new file mode 100644 index 0000000..b0b7817 --- /dev/null +++ b/Bank-Beispiel/src/persistence/DatenspeicherungTest.java @@ -0,0 +1,14 @@ +package persistence; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class DatenspeicherungTest { + + @Test + void test() { + fail("Not yet implemented"); + } + +}