From 383d627558484879bee430e63ef4508583966c4d Mon Sep 17 00:00:00 2001 From: Marc Ziegler Date: Thu, 20 Oct 2022 14:28:51 +0200 Subject: [PATCH] =?UTF-8?q?hinzuf=C3=BCgen=20der=20Girokontoklasse=20und?= =?UTF-8?q?=20der=20=C3=9Cberwei=C3=9Fen=20Methode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bank-Beispiel/src/New FC.fcp | 34 ++++----- .../informatik/bank/domain/Bank.java | 35 +++++---- .../informatik/bank/domain/Datenbank.java | 23 +----- .../bank/domain/GiroKontenTests.java | 71 ++++++++++++++++++ .../informatik/bank/domain/Girokonto.java | 22 ++++++ .../informatik/bank/domain/Konto.java | 9 +-- .../informatik/bank/facade/Banksystem.java | 22 ++++-- .../bank/facade/BanksystemTest.java | 72 +++++++++---------- .../de/hs_mannheim/informatik/bank/ui/UI.java | 21 +++--- 9 files changed, 200 insertions(+), 109 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontenTests.java create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java diff --git a/Bank-Beispiel/src/New FC.fcp b/Bank-Beispiel/src/New FC.fcp index 2673356..403409a 100644 --- a/Bank-Beispiel/src/New FC.fcp +++ b/Bank-Beispiel/src/New FC.fcp @@ -921,7 +921,7 @@ - 810c924b577246088ff7a60dda51425b + 0a3c5d25617741b49364bce3f0477dba 5d0581b78aed4ee8b0bf6527c2681a23 4e970de88c214cf0b3635042b9e226fb @@ -988,7 +988,7 @@ 1 - c56a5392fdcb4cb99bde4b0b7aca7069 + d20223511e3946608b3e194faf04afdc 4e970de88c214cf0b3635042b9e226fb 1c6ab24e7855452dbfd83e71bee81fdf @@ -1055,7 +1055,7 @@ 1 - a5e37ca5b6574a1ba47d13b50483c249 + 7f19a4c81d424603bb6ffebd4ded84b8 1c6ab24e7855452dbfd83e71bee81fdf a32ed2170b0d45968a4723b3a4f7e540 @@ -1122,7 +1122,7 @@ 1 - 7a5dc86d6db2441cad85c4f6836ea3ff + 96fed068f6864da9b7d5f5efa7671109 607ea9ee4a994d45bafe757014698907 b49af04e608549c89ac919c9d3e57c01 @@ -1189,7 +1189,7 @@ 1 - edf473f522ab4420b4518d563f340bbf + 74108319092343229dde6ae748303cea a838e00032384ba2ab7988a1b0c7240e 6ef27b03d235471db3d6ff4e8d96a5f2 Daten der aktion @@ -1256,7 +1256,7 @@ 1 - e576b55981274419bf009ad25e69cbb1 + 1c87411297f44403b5374fe7d2264b2f 6ef27b03d235471db3d6ff4e8d96a5f2 37eedc119a2c4e998b2254b25f4e7f87 Abheben @@ -1323,7 +1323,7 @@ 1 - 80fab382ef394d209427522726f56358 + 1fcdc0d0e08244338a11ae5d57be124e 6ef27b03d235471db3d6ff4e8d96a5f2 37eedc119a2c4e998b2254b25f4e7f87 Ãœberweißung/einzug @@ -1390,7 +1390,7 @@ 1 - 89c35f7ec6da4cb2ab3aa0a140072ad2 + 3a1636a08d2d490b994c871997b5f8d2 37eedc119a2c4e998b2254b25f4e7f87 607ea9ee4a994d45bafe757014698907 @@ -1457,7 +1457,7 @@ 1 - 0453fd09b0fe487f9cf3269c33fe18b7 + 5f7f0240d3ce4fce8be8c96fa29e45c7 b49af04e608549c89ac919c9d3e57c01 1c6ab24e7855452dbfd83e71bee81fdf @@ -1524,7 +1524,7 @@ 1 - e75c504c385444ba85fb92fb362bdef3 + be56c327a428475d8ec0f08fe3762004 a32ed2170b0d45968a4723b3a4f7e540 a838e00032384ba2ab7988a1b0c7240e neue Aktivität festhalten @@ -1591,7 +1591,7 @@ 1 - 5b71a30b2b364ae7a464e252824f58f2 + 7c260adc1f304aebadd3f3d8b384f5e7 a32ed2170b0d45968a4723b3a4f7e540 8e72f22161d94eeea283c0df0c41e557 Kontoauszugdrucken @@ -1658,7 +1658,7 @@ 1 - b57dcdd387e84c869c1675485086ab9d + 77e1677a2813444a8af0d88937495525 ffe8f01d912b4433830bce278888e1ee 4fb53b4ee2304dc595ee36f22f68e83f @@ -1725,7 +1725,7 @@ 1 - 5ee5579d6b784c4ca65effaf481c812b + f562f66f576141e6b0777bd7e1772993 4fb53b4ee2304dc595ee36f22f68e83f 610af0ac1b64468eb7db7c08b4503a4d @@ -1788,7 +1788,7 @@ 1 - 4af87af85f6a49f18470d308b24f2ec0 + 3c5fc781aa6a4985998521d1cbe138c2 8e72f22161d94eeea283c0df0c41e557 d9ae231714074ef49b2560269b4e7405 keine neuen Einträge @@ -1855,7 +1855,7 @@ 1 - 7b14420f07884668ababa8d2a79f6f5c + 1b566d0dac84453aa0130fbc84ae8e65 8e72f22161d94eeea283c0df0c41e557 ffe8f01d912b4433830bce278888e1ee neue Einträge @@ -1922,7 +1922,7 @@ 1 - 79722d87c9ea4d79a58ceeaac9168f6f + 4b1046a6d0f64325b20d3bdd67227aed d9ae231714074ef49b2560269b4e7405 610af0ac1b64468eb7db7c08b4503a4d @@ -1989,7 +1989,7 @@ 1 - 9e30629330e948838c8768991174bfe7 + 694b03e66529458eaaf6132cdd369a8d 610af0ac1b64468eb7db7c08b4503a4d 1c6ab24e7855452dbfd83e71bee81fdf 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 4a3c732..454feba 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,11 +7,12 @@ import java.io.Serializable; public class Bank implements Serializable{ private String name; private HashMap konten = new HashMap<>(); + private HashMap Girokonten = new HashMap<>(); public Bank(String name) { this.name = name; } - + // instanceof Girokonto zum überprüfen der klassen zugehörigkeit public void addKonto(Konto k) { konten.put(k.getKontonummer(), k); } @@ -24,28 +25,36 @@ public class Bank implements Serializable{ return konten.values(); } - public long getKontostand(int Kontonummer) { - return konten.get(Kontonummer).getStand(); - + public long getKontostand(int Kontonummer) { + return konten.get(Kontonummer).getStand(); } - public long GeldEinzahlen(int Kontonummer,double Betrag) { - return konten.get(Kontonummer).Einzahlen(Betrag); + + public long GeldEinzahlen(int Kontonummer,double Betrag) { + return konten.get(Kontonummer).Einzahlen(Betrag); } public long Überweißen(int Kontonummer,double Betrag) { - return konten.get(Kontonummer).neueÜberweisung(Betrag, Kontonummer); + return Girokonten.get(Kontonummer).neueÜberweisung(Betrag, Kontonummer); } - public void kontoAuszugerstellen(int Kontonummer) { - konten.get(Kontonummer).kontoAuszugerstellen(); + + public void kontoAuszugerstellen(int Kontonummer) { + konten.get(Kontonummer).kontoAuszugerstellen(); } - public void kontoÜberweisen(int Empfänger,int inhaber, double Menge) { - if(konten.get(inhaber).neueÜberweisung(Menge, Empfänger)>=0) - konten.get(Empfänger).Einzahlen(Menge); + + public long kontoÜberweisen(int Empfänger,int inhaber, double Menge) { + + if(konten.get(inhaber) instanceof Girokonto) { + if(((Girokonto) konten.get(inhaber)).neueÜberweisung(Menge, Empfänger)>=0) + konten.get(Empfänger).Einzahlen(Menge); + return konten.get(inhaber).getStand(); + } + return -1; } public long abheben(int kontonummer,double Menge) { - return konten.get(kontonummer).abbuchen(Menge); + return konten.get(kontonummer).abbuchen(Menge); } + } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Datenbank.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Datenbank.java index 8604db0..ebb35d0 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Datenbank.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Datenbank.java @@ -13,13 +13,12 @@ import de.hs_mannheim.informatik.bank.facade.Banksystem; public class Datenbank { File fp=new File("object.ser"); - ObjectOutputStream file; public void Speichern(Bank bank) throws Exception{ - file=new ObjectOutputStream(new FileOutputStream(fp)); - file.writeObject(bank); + ObjectOutputStream file=new ObjectOutputStream(new FileOutputStream(fp)); + file.writeObject(bank); } public Bank Laden() throws Exception{ @@ -30,22 +29,4 @@ public class Datenbank { } return null; } -// public boolean fileExcists() { -// if(!fl.exists()) { -// try { -// boolean wurdeerstellt=fl.createNewFile(); -// if(wurdeerstellt) { -// return true; -// } -// else { -// return false; -// } -// }catch(IOException ex) { -// ex.printStackTrace(); -// return false; -// } -// -// } -// return true; -// } } diff --git a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontenTests.java b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontenTests.java new file mode 100644 index 0000000..5ca5f35 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontenTests.java @@ -0,0 +1,71 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +public class GiroKontenTests { + Bank bank; + Girokonto GK1=new Girokonto("Marc"); + Girokonto GK2=new Girokonto("Marc"); + Girokonto GK3=new Girokonto("Marc"); + int a=GK1.getKontonummer(); + int b =GK2.getKontonummer(); + int c=GK3.getKontonummer(); + + Konto k1=new Konto("Marc"); + Konto k2=new Konto("Marc"); + Konto k3=new Konto("Marc"); + int e=k1.getKontonummer(); + int f=k2.getKontonummer(); + int g=k3.getKontonummer(); + @Before + public void Setup() { + bank=new Bank("Bank"); + bank.addKonto(GK1); + bank.addKonto(GK2); + bank.addKonto(GK3); + bank.addKonto(k3); + bank.addKonto(k2); + bank.addKonto(k1); + } + @Test + public void Konto() { + + assertEquals(bank.GeldEinzahlen(e, 654),654L); + assertEquals(bank.GeldEinzahlen(f, 654),654L); + assertEquals(bank.GeldEinzahlen(g, 654),654L); + + } + @Test + public void Giro() { + + + assertEquals(bank.GeldEinzahlen(a, 654),654); + assertEquals(bank.GeldEinzahlen(b, 654),654); + assertEquals(bank.GeldEinzahlen(c, 654),654); + } + + @Test + public void abhebenTest() { + + bank.GeldEinzahlen(a, 22); + bank.GeldEinzahlen(c, 4444); + bank.GeldEinzahlen(e, 6666); + assertEquals(bank.abheben(a, 1111),22); + assertEquals(bank.abheben(c, 2222),2222); + assertEquals(bank.abheben(e, 3333),3333); + } + @Test + public void überweißenTesten() { + bank.GeldEinzahlen(a, 3333); + bank.GeldEinzahlen(c, 4444); + bank.GeldEinzahlen(e, 6666); + + assertEquals(bank.kontoÜberweisen(a,b,3333 ),bank.getKontostand(a)); + assertEquals(bank.kontoÜberweisen(c,e,3333 ),bank.getKontostand(c)); + assertEquals(bank.kontoÜberweisen(c,e,3333 ),-1); + assertEquals(bank.kontoÜberweisen(f,g,3333 ),bank.getKontostand(f)); + } +} 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 new file mode 100644 index 0000000..f8bcd7c --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/Girokonto.java @@ -0,0 +1,22 @@ +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; + +public class Girokonto extends Konto implements Serializable { + private int nummer; + private long stand = 0; + private String inhaber; + private Kontoauszug KA=new Kontoauszug(); + + public Girokonto(String inhaber) { + super(inhaber); + } + public long neueÜberweisung(double Menge,int Empfänger) { + if(Menge<=stand) { + KA.Hinzufügen(Menge, Empfänger); + return stand; + } + System.out.println("Nicht genug Geld vorhanden"); + return -1; + } +} 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 dbbb34b..88bc6d0 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 @@ -34,14 +34,7 @@ public class Konto implements Serializable{ public long getStand() { return this.stand; } - public long neueÜberweisung(double Menge,int Empfänger) { - if(Menge<=stand) { - KA.Hinzufügen(Menge, Empfänger); - return stand; - } - System.out.println("Nicht genug Geld vorhanden"); - return -1; - } + public void kontoAuszugerstellen() { KA.Auszug(); } 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 a688bf0..f317876 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 @@ -4,6 +4,7 @@ import java.util.Collection; import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.domain.Datenbank; +import de.hs_mannheim.informatik.bank.domain.Girokonto; import de.hs_mannheim.informatik.bank.domain.Konto; public class Banksystem { @@ -14,22 +15,30 @@ public class Banksystem { this.bank = new Bank(bankname); } - public int kontoAnlegen(String name) { - Konto k = new Konto(name); - bank.addKonto(k); - - return k.getKontonummer(); + public int kontoAnlegen(String name,boolean Giro) { + if(Giro) { + Girokonto gk = new Girokonto(name); + bank.addKonto(gk); + return gk.getKontonummer(); + } + else { + Konto k = new Konto(name); + bank.addKonto(k); + return k.getKontonummer(); + } + } + public String[] getKontenliste() { Collection konten = bank.getKontenliste(); + String[] liste = new String[konten.size()]; int i = 0; for (Konto k : konten) { liste[i++] = k.toString(); } - return liste; } @@ -42,6 +51,7 @@ public class Banksystem { public long getKontostand(int Kontonummer) { return bank.getKontostand(Kontonummer); } + public void kontoAuszugerstellen(int Kontonummer) { bank.kontoAuszugerstellen(Kontonummer); } 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 index c978bfb..4548a8f 100644 --- a/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/facade/BanksystemTest.java @@ -11,15 +11,15 @@ public class BanksystemTest { @Test public void Testcase1() { Banksystem bs=new Banksystem("Testbank"); - int kontonummer=bs.kontoAnlegen("Marc"); + int kontonummer=bs.kontoAnlegen("Marc",false); System.out.println(kontonummer); Assert.assertEquals("erster Testcase einzahlen des mindestWerts",bs.Einzahlen(kontonummer, 1L),1L); } @Test public void Testcase2() { Banksystem bs=new Banksystem("Testbank"); - bs.kontoAnlegen("Marc"); - int kontonummer=bs.kontoAnlegen("Marc1"); + bs.kontoAnlegen("Marc",false); + int kontonummer=bs.kontoAnlegen("Marc1",true); System.out.println(kontonummer); Assert.assertEquals("höchst Wert",bs.Einzahlen(kontonummer, 9999999999999999L),9999999999999999L); } @@ -27,9 +27,9 @@ public class BanksystemTest { @Test public void Testcase3() { Banksystem bs=new Banksystem("Testbank"); - bs.kontoAnlegen("Marc"); - bs.kontoAnlegen("Marc1"); - int kontonummer = bs.kontoAnlegen("Marc2"); + bs.kontoAnlegen("Marc",false); + bs.kontoAnlegen("Marc1",true); + int kontonummer = bs.kontoAnlegen("Marc2",false); System.out.println(kontonummer); Assert.assertEquals("Test zum nichtbeachten Zahlen kleiner 0",bs.Einzahlen(kontonummer, -1L),0L); } @@ -37,50 +37,50 @@ public class BanksystemTest { @Test public void Testcase4() { Banksystem bs=new Banksystem("Testbank"); - bs.kontoAnlegen("Marc"); - bs.kontoAnlegen("Marc1"); - bs.kontoAnlegen("Marc2"); - bs.kontoAnlegen("Marc3"); - bs.kontoAnlegen("Marc4"); + bs.kontoAnlegen("Marc",true); + bs.kontoAnlegen("Marc1",false); + bs.kontoAnlegen("Marc2",true); + bs.kontoAnlegen("Marc3",false); + bs.kontoAnlegen("Marc4",true); - bs.kontoAnlegen("Marc5"); - bs.kontoAnlegen("Marc6"); - bs.kontoAnlegen("Marc7"); - bs.kontoAnlegen("Marc8"); - int kontonummer=bs.kontoAnlegen("Marc9"); + bs.kontoAnlegen("Marc5",false); + bs.kontoAnlegen("Marc6",true); + bs.kontoAnlegen("Marc7",false); + bs.kontoAnlegen("Marc8",true); + int kontonummer=bs.kontoAnlegen("Marc9",false); System.out.println(kontonummer); Assert.assertEquals("Höchstwert der Kontonummer testen",bs.Einzahlen(kontonummer, 1L),1L); } @Test(expected = NullPointerException.class) public void Testcase5() { Banksystem bs=new Banksystem("Testbank"); - bs.kontoAnlegen("Marc"); - bs.kontoAnlegen("Marc1"); - bs.kontoAnlegen("Marc2"); - bs.kontoAnlegen("Marc3"); - bs.kontoAnlegen("Marc4"); + bs.kontoAnlegen("Marc",false); + bs.kontoAnlegen("Marc1",true); + bs.kontoAnlegen("Marc2",false); + bs.kontoAnlegen("Marc3",true); + bs.kontoAnlegen("Marc4",false); - bs.kontoAnlegen("Marc5"); - bs.kontoAnlegen("Marc6"); - bs.kontoAnlegen("Marc7"); - bs.kontoAnlegen("Marc8"); - bs.kontoAnlegen("Marc9"); + bs.kontoAnlegen("Marc5",true); + bs.kontoAnlegen("Marc6",false); + bs.kontoAnlegen("Marc7",true); + bs.kontoAnlegen("Marc8",false); + bs.kontoAnlegen("Marc9",true); Assert.assertEquals("Fehlermeldung bei zukleiner Kontonummer",bs.Einzahlen(999, 1L),1L); } @Test(expected = NullPointerException.class) public void Testcase6() { Banksystem bs=new Banksystem("Testbank"); - bs.kontoAnlegen("Marc"); - bs.kontoAnlegen("Marc1"); - bs.kontoAnlegen("Marc2"); - bs.kontoAnlegen("Marc3"); - bs.kontoAnlegen("Marc4"); + bs.kontoAnlegen("Marc",true); + bs.kontoAnlegen("Marc1",true); + bs.kontoAnlegen("Marc2",true); + bs.kontoAnlegen("Marc3",true); + bs.kontoAnlegen("Marc4",true); - bs.kontoAnlegen("Marc5"); - bs.kontoAnlegen("Marc6"); - bs.kontoAnlegen("Marc7"); - bs.kontoAnlegen("Marc8"); - bs.kontoAnlegen("Marc9"); + bs.kontoAnlegen("Marc5",false); + bs.kontoAnlegen("Marc6",false); + bs.kontoAnlegen("Marc7",false); + bs.kontoAnlegen("Marc8",false); + bs.kontoAnlegen("Marc9",false); Assert.assertEquals("Fehlermeldung bei zu großer Kontonummer",bs.Einzahlen(1100, 1L),1L); } 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 3640611..33a6d7e 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,6 +2,7 @@ package de.hs_mannheim.informatik.bank.ui; import java.util.Scanner; +import de.hs_mannheim.informatik.bank.domain.Bank; import de.hs_mannheim.informatik.bank.facade.Banksystem; public class UI { @@ -67,14 +68,19 @@ public class UI { } private void kontoAnlegen() { - System.out.println("Bitte den Namen des Kontoinhabers angeben: "); - String name = sc.nextLine(); + System.out.println("Soll das Konto ein Girokonto sein? Es macht das Überweißen zwischen Konten möglich: j/n"); + String eingabe=sc.nextLine(); + boolean Giro=eingabe.equals("j")||eingabe.equals("ja")||eingabe.equals("Ja")||eingabe.equals("J"); + System.out.println("Bitte den Namen des Kontoinhabers angeben: "); + String name = sc.nextLine(); - int kontonummer = bs.kontoAnlegen(name); - System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); - sc.nextLine(); + int kontonummer = bs.kontoAnlegen(name,Giro); + System.out.println("Konto mit der Nummer " + kontonummer + " neu angelegt."); + sc.nextLine(); } public void kontoEinzahlen() { + + System.out.println("Kontonummer: "); int Kontonummer=Integer.parseInt(sc.nextLine()); double Betrag=richtigerBetrag(); @@ -126,7 +132,7 @@ public class UI { double Betrag=richtigerBetrag(); - if(existiertKonto(KontonummerE)&&Betrag!=0&&existiertKonto(KontonummerA)) { + if(existiertKonto(KontonummerA)&&Betrag!=0&&existiertKonto(KontonummerE)) { bs.Überweisung(KontonummerE, KontonummerA, Betrag); } sc.nextLine(); @@ -150,8 +156,7 @@ public class UI { try { bs.getKontostand(Kontonummer); return true; - } - catch(Exception NullPointerException) { + }catch(Exception NullPointerException){ System.out.println("Konto mit der Nummer: "+Kontonummer+" existiert nicht"); return false; }