From c310951904ab73edd9722b1b250c6bf0689a8e56 Mon Sep 17 00:00:00 2001 From: GSBS Date: Tue, 25 Oct 2022 14:31:48 +0200 Subject: [PATCH] ttt --- .../informatik/bank/domain/Bank.java | 84 ++--- .../informatik/bank/domain/GiroKontoTest.java | 65 ++++ .../informatik/bank/domain/Girokonto.java | 112 +++++-- .../informatik/bank/domain/Konto.java | 142 ++++---- .../informatik/bank/domain/KontoTest.java | 15 + .../informatik/bank/domain/Kontobewegung.java | 60 ++-- .../informatik/bank/facade/Banksystem.java | 11 + .../informatik/bank/facade/SystemTest.java | 157 +++++++-- .../de/hs_mannheim/informatik/bank/ui/UI.java | 309 +++++++++--------- 9 files changed, 624 insertions(+), 331 deletions(-) create mode 100644 Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontoTest.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..80c4221 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,42 +1,42 @@ -package de.hs_mannheim.informatik.bank.domain; - -import java.io.Serializable; -import java.util.Collection; -import java.util.HashMap; - -public class Bank implements Serializable { - private String name; - private HashMap konten = new HashMap<>(); - private int kontozähler; - - public Bank(String name) { - this.name = name; - this.kontozähler = -1; - } - - public int addKonto(String name, int auswahl) { - Konto k; - - if (auswahl == 1) - k = new Konto(name, ++kontozähler); - else - k = new Girokonto(name, ++kontozähler); - - konten.put(k.getKontonummer(), k); - - return k.getKontonummer(); - } - - public String getName() { - return name; - } - - public Collection getKontenliste() { - return konten.values(); - } - - public Konto findeKonto(int kontonummer) { - return konten.get(kontonummer); - } - -} +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.Collection; +import java.util.HashMap; + +public class Bank implements Serializable { + private String name; + private HashMap konten = new HashMap<>(); + private int kontozähler; + + public Bank(String name) { + this.name = name; + this.kontozähler = -1; + } + + public int addKonto(String name, int auswahl) { + Konto k; + + if (auswahl == 1) + k = new Konto(name, ++kontozähler); + else + k = new Girokonto(name, ++kontozähler); + + konten.put(k.getKontonummer(), k); + + return k.getKontonummer(); + } + + public String getName() { + return name; + } + + public Collection getKontenliste() { + return konten.values(); + } + + public Konto findeKonto(int kontonummer) { + return konten.get(kontonummer); + } + +} 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 new file mode 100644 index 0000000..5b1dab5 --- /dev/null +++ b/Bank-Beispiel/src/de/hs_mannheim/informatik/bank/domain/GiroKontoTest.java @@ -0,0 +1,65 @@ +package de.hs_mannheim.informatik.bank.domain; + +import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class GiroKontoTest { + + @Test + void Auszahlungssystemtest() { + + Girokonto k1 = new Girokonto("Lionel", 1); + Girokonto k2 = new Girokonto("Mbappe", 2); + Girokonto k3 = new Girokonto("Neuer", 3); + Girokonto k4 = new Girokonto("TerStegen", 4); + + k1.einzahlen(100, "Test", "Moneyy", "YourBoss"); + k1.auszahlen(1005, "Test", "Moneyy", "YourBoss"); + + assertEquals(95,k1.getDispositionskredit()); + assertEquals(0,k1.getKontostand()); + + k2.einzahlen(0, "Test", "Moneyy", "YourBoss"); + k2.auszahlen(500, "Test", "Moneyy", "YourBoss"); + assertEquals(500,k2.getDispositionskredit()); + assertEquals(0,k2.getKontostand()); + + k3.einzahlen(0, "Test", "Moneyy", "YourBoss"); + k3.auszahlen(1000, "Test", "Moneyy", "YourBoss"); + assertEquals(0,k3.getDispositionskredit()); + assertEquals(0,k3.getKontostand()); + + k4.einzahlen(0, "Test", "Moneyy", "YourBoss"); + k4.auszahlen(1001, "Test", "Moneyy", "YourBoss"); + assertEquals(1000,k4.getDispositionskredit()); + assertEquals(0,k4.getKontostand()); + + } + @Test + void überweisssystemtest() { + Girokonto k1 = new Girokonto("Lionel", 1); + Girokonto k2 = new Girokonto("Mbappe", 2); + Girokonto k3 = new Girokonto("Neuer", 3); + Girokonto k4 = new Girokonto("TerStegen", 4); + + k1.überweise(k2,200, "Test"); + assertEquals(800,k1.getDispositionskredit()); + assertEquals(0,k1.getKontostand()); + + assertEquals(1000,k2.getDispositionskredit()); + assertEquals(200,k2.getKontostand()); + + + k3.überweise(k4,5001, "Test"); + assertEquals(1000,k4.getDispositionskredit()); + assertEquals(0,k4.getKontostand()); + + assertEquals(1000,k3.getDispositionskredit()); + assertEquals(0,k3.getKontostand()); + + } + + +} 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 d9b1d77..d180e8d 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 @@ -1,27 +1,85 @@ -package de.hs_mannheim.informatik.bank.domain; - -import java.io.Serializable; - -public class Girokonto extends Konto implements Serializable { - - public Girokonto(String inhaber, int kontozähler) { - super(inhaber, kontozähler); - } - - public boolean überweise(Girokonto ziel, long betrag, String zweck) { - if (super.getKontostand() - betrag >= 0) { - this.auszahlen(betrag, zweck, "Überweisungsausgang", super.getInhaber()); - ziel.einzahlen(betrag, zweck, "Überweisungseingang", super.getInhaber()); - - return true; - } - - return false; - } - - @Override - public String toString() { - return "Giro-" + super.toString(); - } - -} +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; + +public class Girokonto extends Konto implements Serializable { + private long Dispositionskredit = 1000; + private final long DispositionskreditGrenze = Dispositionskredit; + + + public Girokonto(String inhaber, int kontozنhler) { + super(inhaber, kontozنhler); + } + //Wir überschreiben die Methode auszahlen + public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { + if(super.getKontostand() - betrag >= 0 ) + { + super.auszahlen(betrag, zweck, art, auftraggeber); + + return true; + } + else if(betrag <= this.Dispositionskredit+super.getKontostand()) + { + long DispoBetrag = betrag-super.getKontostand(); + super.auszahlen(super.getKontostand(), "Kein Geld", "Diskpostionsauszahlung", auftraggeber); + this.Dispositionskredit -= DispoBetrag; + return true; + } + + return false; + } + public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { + long DispoBetrag = betrag - (DispositionskreditGrenze-Dispositionskredit); + if(Dispositionskredit != 5000) + { + + if(betrag >= DispositionskreditGrenze-Dispositionskredit) + { + + this.Dispositionskredit = DispositionskreditGrenze; + super.einzahlen(DispoBetrag, zweck, art, auftraggeber); + + } + else + { + this.Dispositionskredit += betrag; + super.einzahlen(0, "Dispostitionseinzahlung", "Kredit", auftraggeber); + + } + } + else + { + super.einzahlen(betrag, zweck, art, auftraggeber); + } + } + + + + + public long getDispositionskredit() { + return Dispositionskredit; + } + public boolean überweise(Girokonto ziel, long betrag, String zweck) { + if (super.getKontostand() - betrag >= 0) { + this.auszahlen(betrag, zweck, "ـberweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "ـberweisungseingang", super.getInhaber()); + + return true; + } + else if(betrag <= this.Dispositionskredit+super.getKontostand()) + { + this.auszahlen(betrag, zweck, "ـberweisungsausgang", super.getInhaber()); + ziel.einzahlen(betrag, zweck, "ـberweisungseingang", super.getInhaber()); + + return true; + } + + return false; + } + + @Override + public String toString() { + return "Giro-" + super.toString(); + } + +} \ No newline at end of file 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 31220e1..a9fd43a 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,66 +1,76 @@ -package de.hs_mannheim.informatik.bank.domain; - -import java.io.Serializable; -import java.util.ArrayList; - -public class Konto implements Serializable { - private int nummer; - private long stand = 0; - private String inhaber; - - private ArrayList kontobewegungen; - - public Konto(String inhaber, int kontozähler) { - nummer = 1000 + kontozähler; - this.inhaber = inhaber; - - this.kontobewegungen = new ArrayList<>(); - } - - public int getKontonummer() { - return nummer; - } - - @Override - public String toString() { - return "Konto [nummer=" + nummer + ", inhaber=" + inhaber + "]"; - } - - public String getInhaber() { - return inhaber; - } - - public long getKontostand() { - return stand; - } - - public void einzahlen(long betrag, String zweck, String art, String auftraggeber) { - stand += betrag; - - kontobewegungen.add(new Kontobewegung(betrag, zweck, art, auftraggeber)); - } - - public boolean auszahlen(long betrag, String zweck, String art, String auftraggeber) { - if (stand - betrag >= 0) { - stand -= betrag; - - kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); - - return true; - } - - return false; - } - - public String[] getKontobewegungen() { - String[] auflistung = new String[kontobewegungen.size()]; - - int i = 0; - for (Kontobewegung kb : kontobewegungen) { - auflistung[i++] = kb.toString(); - } - - return auflistung; - } - -} +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.ArrayList; + +public class Konto implements Serializable { + private int nummer; + private long stand = 0; + private String inhaber; + + private ArrayList kontobewegungen; + + public Konto(String inhaber, int kontozähler) { + nummer = 1000 + kontozähler; + this.inhaber = inhaber; + + this.kontobewegungen = new ArrayList<>(); + } + public long saldo() { + int length = kontobewegungen.size(); + long summe = 0; + for(int i = length-3;i= 0) { + stand -= betrag; + + kontobewegungen.add(new Kontobewegung(betrag * -1, zweck, art, auftraggeber)); + + return true; + } + + return false; + } + + public String[] getKontobewegungen() { + String[] auflistung = new String[kontobewegungen.size()]; + + int i = 0; + for (Kontobewegung kb : kontobewegungen) { + auflistung[i++] = kb.toString(); + } + + return auflistung; + } + +} 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 04e96ae..b6960f1 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 @@ -31,5 +31,20 @@ class KontoTest { assertFalse(k2.auszahlen(500, "Test", "Auszahlung", "JUnit")); assertEquals(50, k2.getKontostand()); } + + void saldoTest() { + Konto acc = new Konto ("GG", 1); + + acc.einzahlen(200, "T", "Bla", "Bla"); + acc.einzahlen(300, "T", "Bla", "Bla"); + acc.einzahlen(250, "T", "Bla", "Bla"); + acc.einzahlen(100, "T", "Bla", "Bla"); + + acc.einzahlen(550, "T", "Bla", "Bla"); + acc.einzahlen(250, "T", "Bla", "Bla"); + + assertEquals(800, acc.saldo()); + + } } 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 d6b15dd..40bb5c0 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 @@ -1,28 +1,32 @@ -package de.hs_mannheim.informatik.bank.domain; - -import java.io.Serializable; -import java.util.Date; - -public class Kontobewegung implements Serializable { - private long betrag; - private Date datum; - private String betreff; - private String art; - private String auftraggeber; - - public Kontobewegung(long betrag, String betreff, String art, String auftraggeber) { - this.betrag = betrag; - this.betreff = betreff; - this.art = art; - this.auftraggeber = auftraggeber; - - this.datum = new Date(); - } - - @Override - public String toString() { - return "Kontobewegung [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art - + ", auftraggeber=" + auftraggeber + "]"; - } - -} +package de.hs_mannheim.informatik.bank.domain; + +import java.io.Serializable; +import java.util.Date; + +public class Kontobewegung implements Serializable { + private long betrag; + private Date datum; + private String betreff; + private String art; + private String auftraggeber; + + public Kontobewegung(long betrag, String betreff, String art, String auftraggeber) { + this.betrag = betrag; + this.betreff = betreff; + this.art = art; + this.auftraggeber = auftraggeber; + + this.datum = new Date(); + } + public long getBetrag() + { + return this.betrag; + } + + @Override + public String toString() { + return "Kontobewegung [betrag=" + betrag + ", datum=" + datum + ", betreff=" + betreff + ", art=" + art + + ", auftraggeber=" + auftraggeber + "]"; + } + +} 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 5d72301..8c45ba0 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 @@ -57,6 +57,16 @@ public class Banksystem { return konto.auszahlen(betrag, "Auszahlung am Schalter", "Auszahlung", konto.getInhaber()); } + + public long saldoAusgabe(int kontonummer) { + Konto konto = bank.findeKonto(kontonummer); + if (konto.getKontobewegungen().length >= 2) { + return konto.saldo(); + } + else { + return 0; + } + } public String[] erstelleKontoauszug(int kontonummer) { Konto konto = bank.findeKonto(kontonummer); @@ -80,5 +90,6 @@ public class Banksystem { return konto.getKontostand(); } + } 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 0ce5674..678239b 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,19 +1,138 @@ -package de.hs_mannheim.informatik.bank.facade; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import org.junit.jupiter.api.Test; - -class SystemTest { - - @Test - void smokeTest() throws Exception { - Banksystem bs = new Banksystem("Testsystem"); - - assertNotNull(bs); - assertEquals(0, bs.getKontenliste().length); - assertEquals("Testsystem", bs.getBankname()); - } - -} +package de.hs_mannheim.informatik.bank.facade; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.File; + +import org.junit.jupiter.api.Test; + +import de.hs_mannheim.informatik.bank.infrastructure.Persistenz; + +class SystemTest { + + @Test + void smokeTest() throws Exception { + String bankname = "Testsystem"; + File f = new File(bankname + "-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + Banksystem bs = new Banksystem(bankname); + assertNotNull(bs); + assertEquals(0, bs.getKontenliste().length); + assertEquals("Testsystem", bs.getBankname()); + + } + + + @Test + void KontoEinzahlenTest() throws Exception { + + String bankname = "Testsystem"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) { + f.delete(); + } + + Banksystem bs = new Banksystem(bankname); + + bs.kontoAnlegen("Eren", 1); + bs.kontoAnlegen("Rayner", 1); + bs.kontoAnlegen("Armin", 1); + bs.kontoAnlegen("Mekasa", 1); + bs.kontoAnlegen("Anny", 1); + + bs.geldEinzahlen(1000, 150); + + bs.geldEinzahlen(1001, 0); + + bs.geldEinzahlen(1002, -100); + bs.geldEinzahlen(1002, 300); + + bs.geldEinzahlen(1003, Integer.MAX_VALUE); + + bs.geldEinzahlen(1004, Integer.MAX_VALUE); + bs.geldEinzahlen(1004, Integer.MIN_VALUE); + bs.geldEinzahlen(1004, 10); + + assertEquals(150,bs.getKontostand(1000)); + assertEquals(0,bs.getKontostand(1001)); + assertEquals(200,bs.getKontostand(1002)); + assertEquals(Integer.MAX_VALUE,bs.getKontostand(1003)); + assertEquals(Integer.MAX_VALUE - Integer.MIN_VALUE + 10, bs.getKontostand(1004)); + assertEquals("Testsystem", bs.getBankname()); + } + + @Test + void GiroKontoEinzahlenTest() throws Exception { + + String bankname = "Testsystem"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + + Banksystem bs = new Banksystem(bankname); + + bs.kontoAnlegen("Messi", 0); //Hier hat das Programm ein GiroKonto erstellt + bs.kontoAnlegen("Neymar", 21212121); + bs.kontoAnlegen("Lewandowski", -23); + bs.kontoAnlegen("Dembele", 2); + + bs.geldEinzahlen(1000, 100); + + bs.geldEinzahlen(1001, 0); + + bs.geldEinzahlen(1002, -400); + bs.geldEinzahlen(1002, 500); + + bs.geldEinzahlen(1003, Integer.MAX_VALUE); + + assertEquals(100, bs.getKontostand(1000)); + assertEquals(0, bs.getKontostand(1001)); + assertEquals(100, bs.getKontostand(1002)); + assertEquals(Integer.MAX_VALUE, bs.getKontostand(1003)); + assertEquals("Testsystem", bs.getBankname()); + } + + @Test + void AuszahlenTest() throws Exception { + String bankname = "Testsystem"; + File f = new File(bankname+"-bank-data.ser"); + if(f.exists()) + { + f.delete(); + } + + Banksystem bs = new Banksystem(bankname); + + bs.kontoAnlegen("Ryan", 1); + bs.kontoAnlegen("Ronalds", 1); + bs.kontoAnlegen("Dead", 1); + bs.kontoAnlegen("Pool", 1); + bs.kontoAnlegen("itmeee", 1); + + bs.geldEinzahlen(1000, 100); + bs.geldAuszahlen(1000, 101); + + bs.geldEinzahlen(1001, 100); + bs.geldAuszahlen(1001, 100); + + bs.geldAuszahlen(1002, 0); + + bs.geldAuszahlen(1003, 20); + + bs.geldEinzahlen(1004, Integer.MIN_VALUE); + + assertEquals(100,bs.getKontostand(1000)); + assertEquals(0,bs.getKontostand(1001)); + assertEquals(0,bs.getKontostand(1002)); + assertEquals(0,bs.getKontostand(1003)); + assertEquals(Integer.MAX_VALUE + 1, bs.getKontostand(1004)); + assertEquals("Testsystem", bs.getBankname()); + } + +} 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 001e321..dcf285a 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 @@ -1,149 +1,160 @@ -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; - Scanner sc = new Scanner(System.in); - - public UI(Banksystem bs) { - this.bs = bs; - hauptmenü(); - } - - 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("3 -> Geld einzahlen"); - System.out.println("4 -> Geld auszahlen"); - System.out.println("5 -> Kontoauszug drucken"); - System.out.println("6 -> Überweisung beauftragen"); - - System.out.println("9 -> Beenden"); - System.out.println(); - - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); - System.out.println(); - - try { - switch(input) { - case 1: kontenAnzeigen(); break; - case 2: - kontoAnlegen(); - break; - case 3: geldEinzahlen(); break; - case 4: geldAuszahlen(); break; - case 5: kontoauszugDrucken(); break; - case 6: überweisungBeauftragen(); break; - case 9: break mainloop; - } - - } catch (Exception e) { - System.err.println(e.getLocalizedMessage()); - } - System.out.println(); - } - - System.out.println("Auf Wiedersehen!"); - - } // hauptmenü - - private void kontenAnzeigen() { - String[] konten = bs.getKontenliste(); - if (konten.length > 0) { - System.out.println("Folgende Konten sind aktuell verfügbar:"); - for (String s : konten) { - System.out.println(s); - } - } else { - System.out.println("Bisher keine Konten angelegt."); - } - } - - private void kontoAnlegen() throws Exception { - 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."); - } - - private void geldEinzahlen() throws Exception { - System.out.println("Geld einzahlen"); - System.out.print("Bitte die gewünschte Kontonummer eingeben: "); - int kontonummer = Integer.parseInt(sc.nextLine()); - - // optional prüfen, ob Konto existiert - - System.out.print("Bitte den gewünschten Betrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); - - long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); - - System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); - } - - private void geldAuszahlen() throws Exception { - System.out.println("Geld auszahlen"); - System.out.print("Bitte die gewünschte Kontonummer eingeben: "); - int kontonummer = Integer.parseInt(sc.nextLine()); - - System.out.print("Bitte den gewünschten Betrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); - - boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)betrag * 100); - - System.out.printf("Auszahlung" + ((!erfolgreich)? " nicht" : "" )+ " erfolgreich. "); - 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); - - if (kontobewegungen.length > 0) - for (String kb : kontobewegungen) { - System.out.println(kb); - } - else - System.out.println("Noch keine Kontobewegungen."); - } - - private void überweisungBeauftragen() { - System.out.print("Bitte die Kontonummer des Ausgangskontos der Überweisung eingeben: "); - int startkonto = Integer.parseInt(sc.nextLine()); - - System.out.print("Bitte die Kontonummmer für das Zielkonto der Überweisung eingeben: "); - int zielkonto = Integer.parseInt(sc.nextLine()); - - System.out.print("Bitte den gewünschten Überweisungsbetrag eingeben: "); - double betrag = Double.parseDouble(sc.nextLine()); - - System.out.print("Bitte den Verwendungszweck eingeben: "); - String verwendungszweck = sc.nextLine(); - - boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); - - System.out.println("Überweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgeführt."); - } - -} +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; + Scanner sc = new Scanner(System.in); + + public UI(Banksystem bs) { + this.bs = bs; + hauptmenü(); + } + + 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("3 -> Geld einzahlen"); + System.out.println("4 -> Geld auszahlen"); + System.out.println("5 -> Kontoauszug drucken"); + System.out.println("6 -> أœberweisung beauftragen"); + + System.out.println("9 -> Beenden"); + System.out.println(); + + System.out.print("> "); + int input = Integer.parseInt(sc.nextLine()); + System.out.println(); + + try { + switch(input) { + case 1: kontenAnzeigen(); break; + case 2: + kontoAnlegen(); + break; + case 3: geldEinzahlen(); break; + case 4: geldAuszahlen(); break; + case 5: kontoauszugDrucken(); break; + case 6: überweisungBeauftragen(); break; + case 9: break mainloop; + } + + } catch (Exception e) { + System.err.println(e.getLocalizedMessage()); + } + System.out.println(); + } + + System.out.println("Auf Wiedersehen!"); + + } // hauptmenأ¼ + + private void kontenAnzeigen() { + String[] konten = bs.getKontenliste(); + if (konten.length > 0) { + System.out.println("Folgende Konten sind aktuell verfأ¼gbar:"); + for (String s : konten) { + System.out.println(s); + } + } else { + System.out.println("Bisher keine Konten angelegt."); + } + } + + private void kontoAnlegen() throws Exception { + 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."); + } + + private void geldEinzahlen() throws Exception { + System.out.println("Geld einzahlen"); + System.out.print("Bitte die gewأ¼nschte Kontonummer eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + + // optional prأ¼fen, ob Konto existiert + + System.out.print("Bitte den gewأ¼nschten Betrag eingeben: "); + double betrag = Double.parseDouble(sc.nextLine()); + + long neuerKontostand = bs.geldEinzahlen(kontonummer, (long)betrag * 100); + + System.out.printf("Einzahlung erfolgreich, neuer Kontostand = %.2f Euro", (neuerKontostand / 100.0)); + if(bs.saldoAusgabe(kontonummer) != 0) + { + System.out.println(); + System.out.println("Saldo" + bs.saldoAusgabe(kontonummer)/100); + } + + } + + private void geldAuszahlen() throws Exception { + System.out.println("Geld auszahlen"); + System.out.print("Bitte die gewأ¼nschte Kontonummer eingeben: "); + int kontonummer = Integer.parseInt(sc.nextLine()); + System.out.print("Bitte den gewأ¼nschten Betrag eingeben: "); + double betrag = Double.parseDouble(sc.nextLine()); + + boolean erfolgreich = bs.geldAuszahlen(kontonummer, (long)betrag * 100); + + System.out.printf("Auszahlung" + ((!erfolgreich)? " nicht" : "" )+ " erfolgreich. "); + System.out.printf("Neuer Kontostand = %.2f Euro.", (bs.getKontostand(kontonummer) / 100.0)); + if(bs.saldoAusgabe(kontonummer) != 0) + { + System.out.println(); + System.out.println("Saldo" + bs.saldoAusgabe(kontonummer)/100); + } + + } + + 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); + + if (kontobewegungen.length > 0) + for (String kb : kontobewegungen) { + System.out.println(kb); + } + else + System.out.println("Noch keine Kontobewegungen."); + } + + private void überweisungBeauftragen() { + System.out.print("Bitte die Kontonummer des Ausgangskontos der أœberweisung eingeben: "); + int startkonto = Integer.parseInt(sc.nextLine()); + + System.out.print("Bitte die Kontonummmer fأ¼r das Zielkonto der أœberweisung eingeben: "); + int zielkonto = Integer.parseInt(sc.nextLine()); + + System.out.print("Bitte den gewأ¼nschten أœberweisungsbetrag eingeben: "); + double betrag = Double.parseDouble(sc.nextLine()); + + System.out.print("Bitte den Verwendungszweck eingeben: "); + String verwendungszweck = sc.nextLine(); + + boolean erfolgreich = bs.überweisungBeauftragen(startkonto, zielkonto, (long)(betrag * 100), verwendungszweck); + + System.out.println("أœberweisung" + ( (!erfolgreich) ? " nicht" : "") + " erfolgreich ausgefأ¼hrt."); + } + +}