From 9c65ba768f5c2d238626c5d89317c46b5b4e5a70 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Sun, 10 Nov 2024 22:09:50 +0100 Subject: [PATCH] AnmeldungProzess implementieren und dann testen --- .../ki-ChatGPT/prompt1.txt | 29 ++++++++++++++ .../src/domain/{ => Benutzer}/Ausweis.java | 2 +- .../src/domain/Benutzer/Benutzer.java | 15 ++++++- .../src/domain/Benutzer/Kunde.java | 2 - .../src/domain/Benutzer/Mitarbeiter.java | 2 - .../src/domain/BibSystem.java | 30 +++++++++++--- .../BenutzerNichtGefundenException.java | 9 +++++ .../src/domain/JTests/AnmeldenJTest.java | 39 +++++++++++++++++++ .../src/domain/JTests/RegistrierenTest.java | 4 +- Bibliotheksverwaltungssystem/src/tui/Tui.java | 26 ++++++++++++- 10 files changed, 143 insertions(+), 15 deletions(-) rename Bibliotheksverwaltungssystem/src/domain/{ => Benutzer}/Ausweis.java (89%) create mode 100644 Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtGefundenException.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java diff --git a/Bibliotheksverwaltungssystem/ki-ChatGPT/prompt1.txt b/Bibliotheksverwaltungssystem/ki-ChatGPT/prompt1.txt index e69de29..7dfd01a 100644 --- a/Bibliotheksverwaltungssystem/ki-ChatGPT/prompt1.txt +++ b/Bibliotheksverwaltungssystem/ki-ChatGPT/prompt1.txt @@ -0,0 +1,29 @@ +private Benutzer findBenutzer(int kartennummer) { + alleBibBenutzer.stream() + .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) + + } + +} + +wie kann ich hier Benutzer mit Stream zurückgeben? + +Antwort: +Um in der Methode findBenutzer den Benutzer mit der angegebenen Kartennummer zurückzugeben, + kannst du den stream()-Ansatz verwenden und das Ergebnis filtern. + Schließlich kannst du mit findFirst() das erste (und in diesem Fall das einzige) Element des Streams + abrufen, das die Bedingung erfüllt. Wenn kein Benutzer mit dieser Kartennummer vorhanden ist, könnte findFirst() ein Optional-Objekt ohne Wert zurückgeben. + +Hier ist die angepasste Methode: +private Benutzer findBenutzer(int kartennummer) { + return alleBibBenutzer.stream() + .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) + .findFirst() + .orElse(null); // Gibt null zurück, falls kein Benutzer mit der Kartennummer gefunden wurde +} + +Erklärung der Anpassung +stream(): Wandelt die ArrayList in einen Stream um. +filter(...): Filtert den Stream nach Benutzern, deren Kartennummer mit der gesuchten übereinstimmt. +findFirst(): Nimmt das erste Element des Streams, das die Filterbedingung erfüllt. +orElse(null): Gibt null zurück, falls kein Benutzer gefunden wurde. \ No newline at end of file diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausweis.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java similarity index 89% rename from Bibliotheksverwaltungssystem/src/domain/Ausweis.java rename to Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java index e8a6793..06c4ee7 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Ausweis.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Ausweis.java @@ -1,4 +1,4 @@ -package domain; +package domain.Benutzer; public class Ausweis { private int kartenNummer; diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 8d5b5df..916cd5b 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -1,7 +1,7 @@ package domain.Benutzer; import java.util.ArrayList; -import domain.Ausweis; + import domain.Medium.Medium; public abstract class Benutzer { @@ -11,6 +11,8 @@ public abstract class Benutzer { private int alter; private boolean istStudent; private ArrayList ausgeliehenenMedien; + private boolean angemeldet; + public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) { super(); @@ -19,6 +21,7 @@ public abstract class Benutzer { this.alter = alter; this.istStudent = istStudent; this.ausgeliehenenMedien = new ArrayList<>(); + this.angemeldet = false; } public Ausweis getBibAusweis() { @@ -64,11 +67,19 @@ public abstract class Benutzer { public void removeMedium(Medium medium) { this.ausgeliehenenMedien.remove(medium); } + + public boolean isAngemeldet() { + return angemeldet; + } + + public void setAngemeldet(boolean angemeldet) { + this.angemeldet = angemeldet; + } @Override public String toString() { return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent=" - + istStudent + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; + + istStudent + ", ist im System Online = " + angemeldet + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java index fe63cbe..adab651 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java @@ -1,7 +1,5 @@ package domain.Benutzer; -import domain.Ausweis; - public class Kunde extends Benutzer { public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) { diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java index e85605d..afb687b 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java @@ -1,7 +1,5 @@ package domain.Benutzer; -import domain.Ausweis; - public class Mitarbeiter extends Benutzer { public Mitarbeiter(Ausweis bibAusweis, String name, int alter, boolean istStudent) { diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java index a306ca6..a58758f 100644 --- a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java @@ -1,19 +1,21 @@ package domain; import java.util.ArrayList; +import java.util.stream.Stream; + import domain.Benutzer.*; import domain.ExceptionsKlassen.*; public class BibSystem { - private ArrayList benutzer; + private ArrayList alleBibBenutzer; public BibSystem() { - this.benutzer = new ArrayList<>(); + this.alleBibBenutzer = new ArrayList<>(); } - public String addUser(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { - if (name.isEmpty() && type.isEmpty() && alter == 0 && istAdmin.isEmpty() ) - throw new FalscheEingabeException("Geben Sie alle Fielder ein"); + public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { + if (name.isEmpty() || type.isEmpty() || alter <= 0 || istAdmin.isEmpty()) + throw new FalscheEingabeException("Geben Sie alle Felder korrekt ein"); Benutzer benutzer; Ausweis ausweis = new Ausweis(); @@ -24,7 +26,25 @@ public class BibSystem { else benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler); + alleBibBenutzer.add(benutzer); return benutzer.toString(); } + + public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException { + Benutzer tempUser = findBenutzer(kartennummer); + if (tempUser == null) + throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden"); + + tempUser.setAngemeldet(true); + return tempUser.isAngemeldet(); + } + + private Benutzer findBenutzer(int kartennummer) { + return alleBibBenutzer.stream() + .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) + .findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt. + .orElse(null); + } + } diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtGefundenException.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtGefundenException.java new file mode 100644 index 0000000..00d9657 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtGefundenException.java @@ -0,0 +1,9 @@ +package domain.ExceptionsKlassen; + +public class BenutzerNichtGefundenException extends Exception { + + public BenutzerNichtGefundenException(String error) { + super(error); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java new file mode 100644 index 0000000..804d4c1 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/AnmeldenJTest.java @@ -0,0 +1,39 @@ +package domain.JTests; + +import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.BibSystem; +import domain.ExceptionsKlassen.BenutzerNichtGefundenException; +import domain.ExceptionsKlassen.FalscheEingabeException; + +class AnmeldenJTest { + + private BibSystem bib; + + @BeforeEach + void setUp() throws Exception { + this.bib = new BibSystem(); + } + + @Test + void testUSerIstNichtAngemeldet() { + // Status => True + assertThrows(BenutzerNichtGefundenException.class, () -> bib.userAnmdelden(1110)); + + } + + @Test + void testUSerIstAngemeldet() throws FalscheEingabeException, BenutzerNichtGefundenException { + + // Status => True + bib.userRegistrieren("obai", "student", 16, "nein"); + int kartennummer = 1000; + assertTrue(bib.userAnmdelden(kartennummer)); + + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java index c0dd213..4ebc464 100644 --- a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java @@ -5,8 +5,8 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import domain.Ausweis; import domain.BibSystem; +import domain.Benutzer.Ausweis; import domain.Benutzer.Benutzer; import domain.Benutzer.Kunde; import domain.ExceptionsKlassen.FalscheEingabeException; @@ -24,7 +24,7 @@ class RegistrierenTest { String name = "obai"; String type = "schüler"; String istAdmin = "nein"; - String test = bib.addUser(name, type, 15,istAdmin); + String test = bib.userRegistrieren(name, type, 15,istAdmin); assertTrue(test.contains(name)); System.out.println(test); diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index e824aab..f68548e 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -3,6 +3,7 @@ package tui; import java.util.Scanner; import domain.BibSystem; +import domain.ExceptionsKlassen.BenutzerNichtGefundenException; import domain.ExceptionsKlassen.FalscheEingabeException; public class Tui { @@ -36,11 +37,33 @@ public class Tui { case "1": registrierenProzess(); break; + + case "2": + anmeldenProzess(); + break; } } } + + private void anmeldenProzess() { + int kartennummer; + System.out.println("Geben Sie bitte die Kartennummer Ihres Bibliotheksausweises an: "); + System.out.print(">"); + kartennummer = eingabe.nextInt(); + + try { + if (fassade.userAnmdelden(kartennummer)) + System.out.println("Sie sind nun im System Angemeldet"); + } catch (BenutzerNichtGefundenException e) { + System.out.println(e.getMessage()); + } + startBibProgramm(); + } + + + private void registrierenProzess() { boolean registrierenProzess = true; String name; @@ -62,7 +85,7 @@ public class Tui { System.out.print(">"); istAdmin = eingabe.nextLine(); try { - fassade.addUser(name, type, alter, istAdmin); + fassade.userRegistrieren(name, type, alter, istAdmin); startBibProgramm(); } catch (FalscheEingabeException e) { System.out.println(e.getMessage()); @@ -70,5 +93,6 @@ public class Tui { } } + } }