Code-Verbesserung

main
obai 2024-11-18 19:00:14 +01:00
parent 194a7df9e0
commit 7858e0c1ce
10 changed files with 170 additions and 51 deletions

View File

@ -38,7 +38,8 @@ public class AusleiheSystem {
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) { public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
Ausleihe ausgelieheneMedium = ausleihe.stream() Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() .filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
.findFirst()
.orElse(null); .orElse(null);
ArrayList<String> ausgeliehenMedien = new ArrayList<>(); ArrayList<String> ausgeliehenMedien = new ArrayList<>();

View File

@ -2,12 +2,14 @@ package domain.AusleiheSystem;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList; import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.fassade.BibSystem; import domain.fassade.BibSystem;
class MedienRückgabeTest { class MedienRückgabeTest {
@ -25,9 +27,13 @@ class MedienRückgabeTest {
bib.userAnmelden("K1001"); bib.userAnmelden("K1001");
bib.mediumAusleihen("K1001", "B001"); bib.mediumAusleihen("K1001", "B001");
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-03"); Benutzer bibUser = bib.findeBenutzer("K1001");
assertEquals(2.0,gebühren); double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-09");
assertEquals(9.0,gebühren);
assertTrue(bib.adminAnmelden("A1000"));
assertTrue(bib.getgbührenBenutzer("K1001") == 9.0);
bib.gebührenVerbuchen("K1001");
assertTrue (bibUser.getGebühren() == 0.0);
} }

View File

@ -0,0 +1,14 @@
package domain.Benutzer;
public class Erwachsener extends Benutzer {
public Erwachsener(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super(bibAusweis, name, alter, istStudent);
}
@Override
public double getJahresgebühren() {
return 50.0;
}
}

View File

@ -9,7 +9,7 @@ public class Mitarbeiter extends Benutzer {
@Override @Override
public double getJahresgebühren() { public double getJahresgebühren() {
return 50.0; return 0.0;
} }
public void gebührVerbuchen(Benutzer benutzer) { public void gebührVerbuchen(Benutzer benutzer) {

View File

@ -1,10 +1,8 @@
package domain.Benutzer; package domain.Benutzer;
import java.time.LocalDate; public class Studenten extends Benutzer {
public class Kunde extends Benutzer { public Studenten(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super(bibAusweis, name, alter, istStudent); super(bibAusweis, name, alter, istStudent);
} }

View File

@ -6,21 +6,31 @@ import domain.ExceptionsKlassen.FalscheEingabeException;
public class Registieren { public class Registieren {
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
Benutzer benutzer; Benutzer benutzer;
Ausweis ausweis; Ausweis ausweis;
if (!name.isEmpty() && (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student")) && istAdmin.equalsIgnoreCase("nein")) { if (!name.isEmpty()) {
ausweis = new Ausweis("K"); boolean admin = (istAdmin.equalsIgnoreCase("Ja"))? true : false;
benutzer = new Kunde(ausweis,name,alter,false); if ((type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))) {
} ausweis = new Ausweis("K");
else if (!name.isEmpty() && type.equalsIgnoreCase("mitarbeiter") && istAdmin.equalsIgnoreCase("ja")) { benutzer = new Studenten(ausweis,name,alter,admin);
ausweis = new Ausweis("A"); }
benutzer = new Mitarbeiter(ausweis,name,alter,true); else if (type.equalsIgnoreCase("erwachsener")) {
ausweis = new Ausweis("K");
benutzer = new Erwachsener(ausweis,name,alter,admin);
}
else if (type.equalsIgnoreCase("Mitarbeiter")) {
ausweis = new Ausweis("A");
benutzer = new Erwachsener(ausweis,name,alter,admin);
}
else
throw new FalscheEingabeException("Falsche Eingabe");
} }
else else
throw new FalscheEingabeException("Falsche Eingabe"); throw new FalscheEingabeException("Falsche Eingabe");
return benutzer; return benutzer;
} }
} }

View File

@ -3,15 +3,14 @@ package domain.UserRegistieren;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import domain.Benutzer.Ausweis;
import domain.Benutzer.Benutzer; import domain.Benutzer.Benutzer;
import domain.Benutzer.Kunde; import domain.Benutzer.Erwachsener;
import domain.Benutzer.Mitarbeiter; import domain.Benutzer.Mitarbeiter;
import domain.Benutzer.Studenten;
import domain.ExceptionsKlassen.FalscheEingabeException; import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.Medium.Buch;
import domain.Medium.Mediumverwalter;
import domain.fassade.BibSystem; import domain.fassade.BibSystem;
class RegistrierenTest { class RegistrierenTest {
@ -26,13 +25,18 @@ class RegistrierenTest {
void testKunde() throws FalscheEingabeException { void testKunde() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein"); Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
// True, da Kunde ist // True ist
assertTrue(benutzer instanceof Kunde); assertTrue(benutzer instanceof Studenten);
String bibKartenNummer = "K1000"; String bibKartenNummer = "K1000";
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)); assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
Benutzer erwachsener = Registieren.userRegistrieren("obai", "erwachsener", 15, "nein");
// True
assertTrue(erwachsener instanceof Erwachsener);
} }
@Test @Disabled
void testMitarbeiter() throws FalscheEingabeException { void testMitarbeiter() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja"); Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");

View File

@ -21,7 +21,7 @@ public class BibSystem {
this.medien = new HashMap<>(); this.medien = new HashMap<>();
this.ausleiheSystem = new AusleiheSystem(medien); this.ausleiheSystem = new AusleiheSystem(medien);
this.ausleihe = new ArrayList<>(); this.ausleihe = new ArrayList<>();
bibAdmin = new Mitarbeiter(new Ausweis("A"),"XY Müller",20,false); this.bibAdmin = new Mitarbeiter(new Ausweis("A"),"Xy Müller",20,false);
mediumsAufladen(); mediumsAufladen();
} }
@ -68,15 +68,6 @@ public class BibSystem {
return treffer; return treffer;
} }
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException{
Benutzer bibUser = findeBenutzer(bibKartennummer);
ArrayList<String> treffer = new ArrayList<>();
for (Ausleihe ausleihe:bibUser.getAusgeliehenenMedien())
treffer.add(ausleihe.toString());
return treffer;
}
/* /*
* Aufgaben des Leihsystems: * Aufgaben des Leihsystems:
@ -107,15 +98,34 @@ public class BibSystem {
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung); return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
} }
// gebühren Bezahlen // Admin meldet sich an
public boolean gebührenBezahlen(double betrag, String bibKartennummer) throws BenutzerNichtGefundenException { public boolean adminAnmelden(String bibKartennummerAdmin){
this.bibAdmin.anmelden();
return this.bibAdmin.isAngemeldet();
}
// aktuelle Gebühren der Benutzer
public double getgbührenBenutzer(String bibKartennummer) throws BenutzerNichtGefundenException {
Benutzer benutzer = findeBenutzer(bibKartennummer); Benutzer benutzer = findeBenutzer(bibKartennummer);
double userBetrag = benutzer.getGebühren(); return benutzer.getGebühren();
if (betrag == userBetrag ) { }
((Mitarbeiter)bibAdmin).gebührVerbuchen(benutzer);
return true; // akteulle ausgelihene Mediums der Benutzer
} public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException {
return false; Benutzer bibUser = findeBenutzer(bibKartennummer);
ArrayList<String> treffer = new ArrayList<>();
for (Ausleihe ausleihe : bibUser.getAusgeliehenenMedien())
treffer.add(ausleihe.toString());
return treffer;
}
public double gebührenVerbuchen(String bibKartennummer) throws BenutzerNichtGefundenException {
Benutzer bibUser = findeBenutzer(bibKartennummer);
((Mitarbeiter)this.bibAdmin).gebührVerbuchen(bibUser);
return bibUser.getGebühren();
} }
// Mediums Rückgabe // Mediums Rückgabe
@ -123,6 +133,7 @@ public class BibSystem {
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung); return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
} }
// Simuliere Datum
public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException { public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum); return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum);
} }
@ -193,10 +204,12 @@ public class BibSystem {
} }
private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) { private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) {
return alleBibBenutzer.stream().anyMatch(user -> user.isAngemeldet()); return alleBibBenutzer.stream()
.filter(b -> b.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer))
.anyMatch(user -> user.isAngemeldet());
} }
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException { public Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
return alleBibBenutzer.stream() return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst() .filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
.orElseThrow(() -> new BenutzerNichtGefundenException( .orElseThrow(() -> new BenutzerNichtGefundenException(

View File

@ -6,6 +6,7 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException; import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException; import domain.ExceptionsKlassen.FalscheEingabeException;
@ -22,10 +23,15 @@ class GebührenTest {
void testGebühren() throws Exception { void testGebühren() throws Exception {
fassade.userRegistrieren("obai", "schüler", 15, "nein"); fassade.userRegistrieren("obai", "schüler", 15, "nein");
fassade.userAnmelden("K1001"); fassade.userAnmelden("K1001");
Benutzer user = fassade.findeBenutzer("K1001");
double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16"); double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16");
assertEquals(50.0, gebühren); assertEquals(50.0, gebühren);
assertTrue (user.getGebühren() == gebühren);
assertTrue(fassade.adminAnmelden("A1000"));
assertTrue(fassade.getgbührenBenutzer("K1001") == 50.0);
fassade.gebührenVerbuchen("K1001");
assertTrue (user.getGebühren() == 0.0);
} }
} }

View File

@ -59,6 +59,9 @@ public class Tui {
case "8": case "8":
verbucheGebührenProzess(); verbucheGebührenProzess();
break; break;
case "9":
datumÄndern();
break;
case "0": case "0":
programmIstAktiv = false; programmIstAktiv = false;
System.out.println("Programm beendet."); System.out.println("Programm beendet.");
@ -82,6 +85,7 @@ public class Tui {
System.out.println("6. Ausgeliehene Gegenstände anzeigen"); System.out.println("6. Ausgeliehene Gegenstände anzeigen");
System.out.println("7. Leihfrist verlängern"); System.out.println("7. Leihfrist verlängern");
System.out.println("8. Gebühren verbuchen (Admin)"); System.out.println("8. Gebühren verbuchen (Admin)");
System.out.println("9. Datum ändern");
System.out.println("0. Programm beenden"); System.out.println("0. Programm beenden");
} }
@ -223,17 +227,80 @@ public class Tui {
private void verbucheGebührenProzess() { private void verbucheGebührenProzess() {
System.out.println("<< Gebühren verbuchen >>"); System.out.println("<< Gebühren verbuchen >>");
System.out.print("BibKartennummer des Nutzers: "); System.out.print("BibKartennummer des Admins: ");
String bibKartennummer = eingabe.nextLine(); String bibKartennummer = eingabe.nextLine();
System.out.println("Geben Sie bitte den Betrag: ");
double betrag = eingabe.nextInt();
try { try {
if (fassade.gebührenBezahlen(betrag,bibKartennummer)) if (fassade.adminAnmelden(bibKartennummer)) {
System.out.println("Gebühren erfolgreich verbucht."); System.out.println("Erfolgreich Angemeldt");
System.out.println("Welche Aktion: ");
System.out.println("1.Betrag verbuchen");
System.out.println("2.ausgeliehene Mediums anzeigen");
System.out.println("3.aktuelles Betrag anzeigen");
System.out.print(">");
String auswahl = eingabe.nextLine();
String userID = eingabe.nextLine();
switch (auswahl) {
case "1":
System.out.println(fassade.gebührenVerbuchen(userID));
break;
case "2":
ArrayList<String> treffer = fassade.ausgeliehenGegenstände(userID);
treffer.forEach(System.out::println);
break;
case "3":
System.out.println(fassade.getgbührenBenutzer(userID));
break;
default:
System.out.println("Falsche Eingabe");
}
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Fehler: " + e.getMessage()); System.out.println("Fehler: " + e.getMessage());
} }
} }
// Aktion 9
private void datumÄndern() {
System.out.println("1.Jahresgebühren");
System.out.println("2.Ausleihefristen");
String auswahl = eingabe.nextLine();
switch (auswahl) {
case "1":
try {
System.out.println("Bibkartennummer:");
String bibkartennummer = eingabe.nextLine();
System.out.println("Datum: ");
String datum = eingabe.nextLine();
fassade.jahresGebührenBerechnen(bibkartennummer, datum);
} catch (BenutzerNichtGefundenException e) {
e.printStackTrace();
}
break;
case "2":
try {
System.out.println("Bibkartennummer:");
String bibkartennummer = eingabe.nextLine();
System.out.println("AusleihBeginn: ");
String ausleihbeginn = eingabe.nextLine();
System.out.println("AusleihEnde: ");
String ausleihEnde = eingabe.nextLine();
System.out.println("Datum vom heute: ");
String heutigesDatum = eingabe.nextLine();
System.out.println("Medium ID: ");
String mediumID = eingabe.nextLine();
fassade.datumÄndern(mediumID, ausleihEnde, ausleihEnde, heutigesDatum);
} catch (MediumNichtGefundenException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}
} }