Ausleihe Prozess fertig implementiert

MedienAusleihen
3009594 2024-11-14 12:21:39 +01:00
parent 8ada9aa90d
commit 42eee93eac
11 changed files with 78 additions and 64 deletions

View File

@ -11,12 +11,14 @@ public class Ausleihe {
private SimpleDateFormat simpleFormatter;
private Date ausleiheBeginn, ausleiheEnde;
private Mediumverwalter medium;
private int verlängerungen;
public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) {
this.medium = medium;
this.ausleiheBeginn = ausleiheBeginn;
this.ausleiheEnde = ausleiheEnde;
this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
this.verlängerungen = 0;
}
public Date getAusleiheBeginn() {
@ -41,6 +43,6 @@ public class Ausleihe {
@Override
public String toString() {
return "Ausgeliehene Mediums= "+ medium.toStringOhneAnzahl() + " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde);
return "Ausgeliehene Mediums= "+ medium.toStringOhneAnzahl() + " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde) + " ,verlängerungen= " + verlängerungen;
}
}

View File

@ -24,14 +24,16 @@ public class AusleiheSystem {
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
mediumAusleihen.setIstAusgeliehen(true);
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
this.ausleiheBeginn = new Date();
this.calendar = Calendar.getInstance();
calendar.setTime(ausleiheBeginn);
calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getWocheAnzahlZumAusleihen());
calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getLeihdauer());
this.ausleiheEnde = calendar.getTime();
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde);
benutzer.ausleihen(neueAusleihe);
return neueAusleihe;
}

View File

@ -1,6 +1,9 @@
package domain.Benutzer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import domain.AusleiheSystem.Ausleihe;
import domain.Medium.Medium;
@ -14,7 +17,8 @@ public abstract class Benutzer {
private ArrayList<Ausleihe> ausgeliehenenMedien;
private boolean angemeldet;
private double gebühren;
private Date anmeldebeginn,anmeldeEnde;
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super();
@ -24,6 +28,8 @@ public abstract class Benutzer {
this.istStudent = istStudent;
this.ausgeliehenenMedien = new ArrayList<>();
this.angemeldet = false;
this.gebühren = 0;
this.anmeldebeginn = new Date();
}
public Ausweis getBibAusweis() {
@ -86,11 +92,31 @@ public abstract class Benutzer {
public void setGebühren(double gebühren) {
this.gebühren = gebühren;
}
public Date getAnmeldebeginn() {
return anmeldebeginn;
}
public void setAnmeldebeginn(String anmeldebeginn) throws ParseException {
this.anmeldebeginn = formatter.parse(anmeldebeginn);
}
public Date getAnmeldeEnde() {
return anmeldeEnde;
}
public void setAnmeldeEnde(String anmeldeEnde) throws ParseException {
this.anmeldeEnde= formatter.parse(anmeldeEnde);
}
public abstract double getJahresgebühr();
@Override
public String toString() {
return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent="
+ istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
+ istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren +"Anmeldet seit= " + formatter.format(anmeldeEnde) + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
}

View File

@ -6,4 +6,9 @@ public class Kunde extends Benutzer {
super(bibAusweis, name, alter, istStudent);
}
@Override
public double getJahresgebühr() {
return 25.0;
}
}

View File

@ -6,4 +6,12 @@ public class Mitarbeiter extends Benutzer {
super(bibAusweis, name, alter, istStudent);
}
@Override
public double getJahresgebühr() {
return 50.0;
}
public void gebührVerbuchen(Benutzer benutzer) {
benutzer.setGebühren(getGebühren() * 0);
}
}

View File

@ -1,4 +1,4 @@
package domain.MedienDurchsuchen;
package domain.Bibliothekskatalog;
import static org.junit.jupiter.api.Assertions.*;

View File

@ -1,4 +1,4 @@
package domain.MedienDurchsuchen;
package domain.Bibliothekskatalog;
import java.util.*;
import java.util.stream.Collectors;

View File

@ -4,15 +4,15 @@ public class Mediumverwalter {
private boolean verlängerbar;
private int anzahl;
private int wocheAnzahlZumAusleihen;
private int leihdauer;
private Medium medium;
private boolean istAusgeliehen;
public Mediumverwalter(boolean verlängerbar, int anzahl, int wocheAnzahlZumAusleihen, Medium medium) {
public Mediumverwalter(boolean verlängerbar, int anzahl, int leihdauer, Medium medium) {
super();
this.verlängerbar = verlängerbar;
this.anzahl = anzahl;
this.wocheAnzahlZumAusleihen = wocheAnzahlZumAusleihen;
this.leihdauer = leihdauer;
this.medium = medium;
}
@ -29,8 +29,8 @@ public class Mediumverwalter {
this.anzahl = anzahl;
}
public int getWocheAnzahlZumAusleihen() {
return wocheAnzahlZumAusleihen;
public int getLeihdauer(){
return leihdauer;
}
public Medium getMedium() {
@ -48,8 +48,8 @@ public class Mediumverwalter {
@Override
public String toString() {
return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", wocheAnzahlZumAusleihen="
+ wocheAnzahlZumAusleihen ;
return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", Leihdauer="
+ leihdauer ;
}

View File

@ -1,6 +1,9 @@
package domain.fassade;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
@ -11,8 +14,8 @@ import java.util.stream.Stream;
import domain.AusleiheSystem.Ausleihe;
import domain.AusleiheSystem.AusleiheSystem;
import domain.Benutzer.*;
import domain.Bibliothekskatalog.Mediensuchen;
import domain.ExceptionsKlassen.*;
import domain.MedienDurchsuchen.Mediensuchen;
import domain.Medium.Brettspiel;
import domain.Medium.Buch;
import domain.Medium.Medium;
@ -25,12 +28,15 @@ public class BibSystem {
private HashMap<String,Mediumverwalter> medien;
private ArrayList<Ausleihe> ausleihe;
private AusleiheSystem ausleiheSystem;
private Date heutigesDatum;
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
public BibSystem() {
this.alleBibBenutzer = new ArrayList<>();
this.medien = new HashMap<>();
this.ausleiheSystem = new AusleiheSystem(medien);
this.heutigesDatum = new Date();
mediumsAufladen();
}
@ -85,11 +91,14 @@ public class BibSystem {
ausleihe.add(neueAusleihe);
}
public Date getHeutigesDatum() {
return heutigesDatum;
}
public void setHeutigesDatum(String heutigesDatum) throws ParseException {
this.heutigesDatum = formatter.parse(heutigesDatum);
}
// Temporäre Test Methode
private void mediumsAufladen() {
Mediumverwalter buch = new Mediumverwalter(true, 10, 4, new Buch("Effektives Java Programmieren", 2018, "Joshua Bloch"));

View File

@ -1,43 +0,0 @@
package domain.fassade;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.UserRegistieren.Registieren;
class MediumDurchsuchenTest {
BibSystem fassade;
@BeforeEach
void setUp() throws Exception {
fassade = new BibSystem();
}
@Disabled
void testMediumsuchen() throws FalscheEingabeException, BenutzerNichtGefundenException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
fassade.userRegistrieren("obai", "student", 15, "nein");
assertTrue(fassade.userAnmdelden("K1000"));
ArrayList<String> treffer = (ArrayList<String>) fassade.mediumDurchsuchen("Effektives Java Programmieren", "B001");
treffer.forEach(System.out::println);
}
@Test
void testMediumNichtGefunden() throws FalscheEingabeException, BenutzerNichtGefundenException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
fassade.userRegistrieren("obai", "student", 15, "nein");
assertTrue(fassade.userAnmdelden("K1000"));
assertThrows(MediumNichtGefundenException.class, () -> fassade.mediumDurchsuchen("C++ Programmieren", "B001"));
}
}

View File

@ -31,7 +31,7 @@ public class Tui {
System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen");
System.out.println("7.Verlängern der Leihfrist");
System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)");
System.out.println("9.Abmlden");
System.out.println("9.Gebühren berechnen");
System.out.println("Wählen Sie bitte eine Aktion aus: ");
System.out.print(">");
aktion = eingabe.nextLine();
@ -69,6 +69,11 @@ public class Tui {
System.out.println("Geben Sie bitte die eindutige Kennung des Mediums");
System.out.print(">");
eindutigeKennung = eingabe.nextLine();
System.out.println("Geben Sie bitte den Datum ein");
System.out.println("Geben Sie bitte die Ausleihebeginn");
try {
fassade.mediumAusleihen(kartennummer, eindutigeKennung);