Unfertiges Ausleiheprozess

MedienAusleihen
obai 2024-11-11 18:38:36 +01:00
parent 9c65ba768f
commit ed1d66f3d1
17 changed files with 239 additions and 39 deletions

2
.gitignore vendored
View File

@ -179,3 +179,5 @@ fabric.properties
# Android studio 3.1+ serialized cache file # Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser .idea/caches/build_file_checksums.ser
/.classpath
/.project

View File

@ -17,3 +17,9 @@ Zum Ausleihen von Medien muss sich der Benutzer laut Anforderung vorher im Syste
Frage: Wie wird jedoch der Ausleihprozess gehandhabt, wenn der Benutzer die Medien direkt vor Ort in der Bibliothek ausleihen möchte? Frage: Wie wird jedoch der Ausleihprozess gehandhabt, wenn der Benutzer die Medien direkt vor Ort in der Bibliothek ausleihen möchte?
Ist eine Anmeldung im System dafür zwingend erforderlich, oder gibt es eine andere Möglichkeit für den Vor-Ort-Ausleihprozess? Ist eine Anmeldung im System dafür zwingend erforderlich, oder gibt es eine andere Möglichkeit für den Vor-Ort-Ausleihprozess?
Aspekt4:
gibt es in der Bib begrenzte Anzahl von der Mediums oder wie?
Aspekt5:
wie viel soll die Benutzer Gebühren bezahlen

View File

@ -1,5 +0,0 @@
package domain;
public class Ausleihe {
}

View File

@ -0,0 +1,33 @@
package domain;
import java.util.ArrayList;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.Medium.Medium;
public class AusleiheSystem {
private ArrayList<Medium> mediums;
private Benutzer benutzer;
public AusleiheSystem(ArrayList<Medium> mediums) {
this.mediums = mediums;
}
public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException {
this.benutzer = benutzer;
Medium mediumAusleihen = findMedium(eindutigenummer);
MediumZumAusleihen medium = new MediumZumAusleihen();
medium.getMedium(mediumAusleihen);
benutzer.getAusgeliehenenMedien().add(medium);
System.out.println(benutzer.getAusgeliehenenMedien().toString());
}
private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
return mediums.stream()
.filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung))
.findFirst()
.orElseThrow(() -> new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"));
}
}

View File

@ -2,6 +2,7 @@ package domain.Benutzer;
import java.util.ArrayList; import java.util.ArrayList;
import domain.MediumZumAusleihen;
import domain.Medium.Medium; import domain.Medium.Medium;
public abstract class Benutzer { public abstract class Benutzer {
@ -10,7 +11,7 @@ public abstract class Benutzer {
private String name; private String name;
private int alter; private int alter;
private boolean istStudent; private boolean istStudent;
private ArrayList<Medium> ausgeliehenenMedien; private ArrayList<MediumZumAusleihen> ausgeliehenenMedien;
private boolean angemeldet; private boolean angemeldet;
@ -56,15 +57,15 @@ public abstract class Benutzer {
this.istStudent = istStudent; this.istStudent = istStudent;
} }
public ArrayList<Medium> getAusgeliehenenMedien() { public ArrayList<MediumZumAusleihen> getAusgeliehenenMedien() {
return ausgeliehenenMedien; return ausgeliehenenMedien;
} }
public void addMedium(Medium medium) { public void ausleihen(MediumZumAusleihen medium) {
this.ausgeliehenenMedien.add(medium); this.ausgeliehenenMedien.add(medium);
} }
public void removeMedium(Medium medium) { public void removeMedium(MediumZumAusleihen medium) {
this.ausgeliehenenMedien.remove(medium); this.ausgeliehenenMedien.remove(medium);
} }

View File

@ -5,12 +5,20 @@ import java.util.stream.Stream;
import domain.Benutzer.*; import domain.Benutzer.*;
import domain.ExceptionsKlassen.*; import domain.ExceptionsKlassen.*;
import domain.Medium.Buch;
import domain.Medium.Medium;
public class BibSystem { public class BibSystem {
private ArrayList<Benutzer> alleBibBenutzer; private ArrayList<Benutzer> alleBibBenutzer;
private ArrayList<Medium> alleMediums;
private AusleiheSystem ausleiheSystem;
public BibSystem() { public BibSystem() {
this.alleBibBenutzer = new ArrayList<>(); this.alleBibBenutzer = new ArrayList<>();
this.alleMediums = new ArrayList<>();
this.ausleiheSystem = new AusleiheSystem(alleMediums);
mediumAufladen();
} }
public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
@ -32,19 +40,48 @@ public class BibSystem {
} }
public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException { public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException {
Benutzer tempUser = findBenutzer(kartennummer); Benutzer tempUser = findBenutzer(kartennummer);
if (tempUser == null)
throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden");
tempUser.setAngemeldet(true); tempUser.setAngemeldet(true);
return tempUser.isAngemeldet(); return tempUser.isAngemeldet();
} }
private Benutzer findBenutzer(int kartennummer) { public void mediumAusleihen(int kartennummer, String eindeutigeKennung) throws BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException {
Benutzer tempBenutzer = findBenutzer(kartennummer);
if (!checkIfUserImSystemAngemeldetIst(kartennummer))
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung);
}
private void mediumAufladen() {
alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,"Joshua Bloch"));
}
private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) {
return alleBibBenutzer.stream()
.anyMatch(user -> user.isAngemeldet());
}
private Benutzer findBenutzer(int kartennummer) throws BenutzerNichtGefundenException {
return alleBibBenutzer.stream() return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
.findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt. .findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
.orElse(null); .orElseThrow(() -> new BenutzerNichtGefundenException ("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden"));
} }
} }

View File

@ -0,0 +1,8 @@
package domain.ExceptionsKlassen;
public class BenutzerNichtAngemeldetException extends Exception {
public BenutzerNichtAngemeldetException(String error) {
super(error);
}
}

View File

@ -0,0 +1,8 @@
package domain.ExceptionsKlassen;
public class MediumNichtGefundenException extends Exception {
public MediumNichtGefundenException(String error) {
super(error);
}
}

View File

@ -0,0 +1,32 @@
package domain.JTests;
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.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
class AusleihenJTest {
private BibSystem bib;
@BeforeEach
void setUp() throws Exception {
this.bib = new BibSystem();
}
@Test
void test() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException {
bib.userRegistrieren("obai", "student", 15, "nein");
bib.userAnmdelden(1000);
bib.mediumAusleihen(1000,"B001" );
}
}

View File

@ -1,11 +1,10 @@
package domain.Medium; package domain.Medium;
import java.util.Date;
public class Brettspiel extends Medium { public class Brettspiel extends Medium {
public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
super(kennungNummer, title, erscheinungsjahr, autor); super(eindeutigeKennung, title, erscheinungsjahr, autor);
} }
} }

View File

@ -3,9 +3,16 @@ package domain.Medium;
import java.util.Date; import java.util.Date;
public class Buch extends Medium { public class Buch extends Medium {
public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) { private int anzahlVerlängerung;
super(kennungNummer, title, erscheinungsjahr, autor); public Buch(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
super(eindeutigeKennung, title, erscheinungsjahr, autor);
}
public int getAnzahlVerlängerung() {
return anzahlVerlängerung;
}
public void setAnzahlVerlängerung(int anzahlVerlängerung) {
this.anzahlVerlängerung = anzahlVerlängerung;
} }
} }

View File

@ -4,8 +4,8 @@ import java.util.Date;
public class Cd extends Medium { public class Cd extends Medium {
public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { public Cd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
super(kennungNummer, title, erscheinungsjahr, autor); super(eindeutigeKennung, title, erscheinungsjahr, autor);
} }
} }

View File

@ -1,11 +1,10 @@
package domain.Medium; package domain.Medium;
import java.util.Date;
public class Dvd extends Medium { public class Dvd extends Medium {
public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
super(kennungNummer, title, erscheinungsjahr, autor); super(eindeutigeKennung, title, erscheinungsjahr, autor);
} }
} }

View File

@ -4,25 +4,27 @@ import java.util.Date;
public abstract class Medium { public abstract class Medium {
private int KennungNummer; private String eindeutigeKennung;
private String title; private String title;
private Date erscheinungsjahr; private int erscheinungsjahr;
private String autor; private String autor;
private int anzahlWochen;
public Medium(int kennungNummer, String title, Date erscheinungsjahr, String autor) { public Medium(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
super(); super();
KennungNummer = kennungNummer; this.eindeutigeKennung = eindeutigeKennung;
this.title = title; this.title = title;
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
this.autor = autor; this.autor = autor;
this.anzahlWochen = 0;
} }
public int getKennungNummer() { public String getKennungNummer() {
return KennungNummer; return eindeutigeKennung;
} }
public void setKennungNummer(int kennungNummer) { public void setKennungNummer(String kennungNummer) {
KennungNummer = kennungNummer; eindeutigeKennung = kennungNummer;
} }
public String getTitle() { public String getTitle() {
@ -33,11 +35,11 @@ public abstract class Medium {
this.title = title; this.title = title;
} }
public Date getErscheinungsjahr() { public int getErscheinungsjahr() {
return erscheinungsjahr; return erscheinungsjahr;
} }
public void setErscheinungsjahr(Date erscheinungsjahr) { public void setErscheinungsjahr(int erscheinungsjahr) {
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
} }
@ -48,6 +50,23 @@ public abstract class Medium {
public void setAutor(String autor) { public void setAutor(String autor) {
this.autor = autor; this.autor = autor;
} }
public int getAnzahlWochen() {
return anzahlWochen;
}
public void setAnzahlWochen(int anzahlWochen) {
this.anzahlWochen = anzahlWochen;
}
@Override
public String toString() {
return "Medium [eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr="
+ erscheinungsjahr + ", autor=" + autor + ", anzahlWochen=" + anzahlWochen + "]";
}
} }

View File

@ -3,9 +3,17 @@ package domain.Medium;
import java.util.Date; import java.util.Date;
public class Videospiel extends Medium { public class Videospiel extends Medium {
public Videospiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { private int anzahlVerlängerung;
public Videospiel(String kennungNummer, String title, int erscheinungsjahr, String autor) {
super(kennungNummer, title, erscheinungsjahr, autor); super(kennungNummer, title, erscheinungsjahr, autor);
} }
public int getAnzahlVerlängerung() {
return anzahlVerlängerung;
}
public void setAnzahlVerlängerung(int anzahlVerlängerung) {
this.anzahlVerlängerung = anzahlVerlängerung;
}
} }

View File

@ -0,0 +1,45 @@
package domain;
import java.util.Date;
import domain.Medium.Medium;
public class MediumZumAusleihen {
private Date ausleihefrist;
private Medium medium;
public void getMedium(Medium medium) {
this.ausleihefrist = new Date();
this.medium = medium;
}
public Date getAusleihefrist() {
return ausleihefrist;
}
public void setAusleihefrist(Date ausleihefrist) {
this.ausleihefrist = ausleihefrist;
}
public Medium getMedium() {
return medium;
}
public void setMedium(Medium medium) {
this.medium = medium;
}
@Override
public String toString() {
return "MediumZumAusleihen [ausleihefrist=" + ausleihefrist + ", medium=" + medium.toString() + "]";
}
}

View File

@ -86,6 +86,7 @@ public class Tui {
istAdmin = eingabe.nextLine(); istAdmin = eingabe.nextLine();
try { try {
fassade.userRegistrieren(name, type, alter, istAdmin); fassade.userRegistrieren(name, type, alter, istAdmin);
registrierenProzess = false;
startBibProgramm(); startBibProgramm();
} catch (FalscheEingabeException e) { } catch (FalscheEingabeException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());