Compare commits
18 Commits
550012ea82
...
8c43b4c97d
Author | SHA1 | Date |
---|---|---|
Leon Maximilian Löhle | 8c43b4c97d | |
Leon Maximilian Löhle | 568dd0fd37 | |
Leon Maximilian Löhle | fbe2ac8d84 | |
Leon Maximilian Löhle | f587243209 | |
Leon Maximilian Löhle | 9a4e99d73c | |
Leon Maximilian Löhle | f29119eb09 | |
Leon Maximilian Löhle | cf66cc6bd2 | |
Leon Löhle | 54bc0bf9f8 | |
Leon Löhle | 17a7d60487 | |
Leon Löhle | 11cc18f1b3 | |
Leon Maximilian Löhle | 0e4b7f792e | |
Leon Maximilian Löhle | fd98a6d95e | |
Leon Maximilian Löhle | e4e69eb5cd | |
Leon Maximilian Löhle | 09eb5660ee | |
Leon Maximilian Löhle | 2e122475f0 | |
Leon Maximilian Löhle | 6449e104fb | |
Leon Löhle | 35b91d9af9 | |
Leon Löhle | 598147dce3 |
|
@ -0,0 +1,124 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,39 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class Admin extends User {
|
||||
|
||||
public Admin(String id, String name) {
|
||||
super(id, name);
|
||||
}
|
||||
|
||||
public void gebuehrenVerbuchen(Kunde kunde, double betrag) {
|
||||
if (kunde == null) {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
|
||||
Consumer<Double> verbuchen = b -> {
|
||||
if (b > kunde.getGebuehren()) {
|
||||
System.out.println("Zahlung von " + b + "€ ist höher als die offenen Gebühren (" + kunde.getGebuehren() + "€).");
|
||||
} else {
|
||||
kunde.gebuehrenErhoehen(-b); // Gebühren reduzieren
|
||||
System.out.println("Admin " + name + " hat eine Zahlung von " + b + "€ für Kunde '" + kunde.getName() + "' verbucht.");
|
||||
}
|
||||
};
|
||||
verbuchen.accept(betrag);
|
||||
}
|
||||
|
||||
public void ausgelieheneMedienAnzeigen(Kunde kunde) {
|
||||
if (kunde == null) {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("Ausgeliehene Medien von " + kunde.getName() + ":");
|
||||
kunde.getAusgelieheneMedien().forEach(medien ->
|
||||
System.out.println("- " + medien.getTitel() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")")
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,287 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Bibliotheksverwaltung {
|
||||
private Map<String, Medien> medienBestand;
|
||||
private Map<String, Kunde> kundenListe;
|
||||
private Map<String, Admin> adminListe;
|
||||
private User eingeloggterBenutzer;
|
||||
private LocalDate aktuellesDatum = LocalDate.now();
|
||||
|
||||
|
||||
public Bibliotheksverwaltung() {
|
||||
medienBestand = new HashMap<>();
|
||||
kundenListe = new HashMap<>();
|
||||
adminListe = new HashMap<>();
|
||||
}
|
||||
|
||||
/*
|
||||
* Getter Methoden
|
||||
*/
|
||||
public Map<String, Kunde> getKundenListe() {
|
||||
return kundenListe;
|
||||
}
|
||||
|
||||
public Map<String, Admin> getAdminListe() {
|
||||
return adminListe;
|
||||
}
|
||||
|
||||
public User getEingeloggterBenutzer() {
|
||||
return eingeloggterBenutzer;
|
||||
}
|
||||
|
||||
public LocalDate getAktuellesDatum() {
|
||||
return aktuellesDatum;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setter für Datumsmanipulation
|
||||
*
|
||||
* @param datum
|
||||
*/
|
||||
public void setAktuellesDatum(LocalDate datum) {
|
||||
this.aktuellesDatum = datum;
|
||||
System.out.println("Systemdatum auf " + aktuellesDatum + " gesetzt.");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Methode mit der man nach Medien suchen kann und angezeigt bekommt ob die Medien geführt werden, ob sie
|
||||
* verfügbar sind oder ob sie ausgeliehen sind sowohl als auch bis wann ausgeliehen
|
||||
*
|
||||
* @param titel
|
||||
* @return
|
||||
*/
|
||||
public List<String> sucheMedienNachTitel(String titel) {
|
||||
return medienBestand.values().stream()
|
||||
.filter(medien -> medien.getTitel().toLowerCase().contains(titel.toLowerCase()))
|
||||
.map(medien -> {
|
||||
String status = medien.verfuegbar()
|
||||
? "[Verfügbar]"
|
||||
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
|
||||
return medien.getDetails() + " " + status;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/*
|
||||
* Zeigt alle Medien die in der Bib geführt werden, ebenfalls mit der Info verfügbar oder ausgeliehen
|
||||
*/
|
||||
public void alleMedienAnzeigen() {
|
||||
if (medienBestand.isEmpty()) {
|
||||
System.out.println("Keine Medien im Bestand.");
|
||||
} else {
|
||||
System.out.println("Medienbestand:");
|
||||
medienBestand.values().forEach(medien -> {
|
||||
String status = medien.verfuegbar()
|
||||
? "[Verfügbar]"
|
||||
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
|
||||
System.out.println("- " + medien.getDetails() + " " + status);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Methode um ein Medium auszuleihen
|
||||
* Kunde muss dafür eingeloggt sein, Medium kann nicht mehrfach ausgeliehen werden
|
||||
*
|
||||
* @param medienId
|
||||
*/
|
||||
public void medienAusleihen(String medienId) {
|
||||
medienId = medienId.trim().toUpperCase(); // Normalisierung
|
||||
Medien medien = medienBestand.get(medienId);
|
||||
|
||||
if (medien == null) {
|
||||
System.out.println("Medium mit der ID " + medienId + " wurde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
if (!medien.verfuegbar()) {
|
||||
System.out.println("Das Medium ist bereits ausgeliehen.");
|
||||
return;
|
||||
}
|
||||
if (!(eingeloggterBenutzer instanceof Kunde)) {
|
||||
System.out.println("Nur Kunden können Medien ausleihen.");
|
||||
return;
|
||||
}
|
||||
Kunde kunde = (Kunde) eingeloggterBenutzer;
|
||||
kunde.medienAusleihen(medien);
|
||||
medien.setVerfuegbar(false);
|
||||
System.out.println("Medium erfolgreich ausgeliehen: " + medien.getTitel());
|
||||
}
|
||||
|
||||
/*
|
||||
* Kunde gibt sein ausgeliehens Medium zurück, wenn er überzogen hat
|
||||
* wird dem konto die Überziehungsgebühr addiert
|
||||
*
|
||||
* @param medienId
|
||||
* @param kundenId
|
||||
*/
|
||||
public void medienZurueckgeben(String medienId, String kundenId) {
|
||||
Medien medien = medienBestand.get(medienId);
|
||||
Kunde kunde = kundenListe.get(kundenId);
|
||||
|
||||
if (medien == null) {
|
||||
System.out.println("Medium nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
if (kunde == null) {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
if (kunde.getAusgelieheneMedien().contains(medien)) {
|
||||
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
|
||||
kunde.addGebuehren(gebuehren);
|
||||
kunde.medienZurueckgeben(medien);
|
||||
medien.setVerfuegbar(true);
|
||||
System.out.println("Medium erfolgreich zurückgegeben: " + medien.getTitel());
|
||||
if (gebuehren > 0) {
|
||||
System.out.println("Überziehungsgebühren: " + gebuehren + " € wurden dem Konto hinzugefügt.");
|
||||
}
|
||||
} else {
|
||||
System.out.println("Dieses Medium wurde nicht von diesem Kunden ausgeliehen.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*Wenn ein Kunde ein von Ihm ausgeliehenes Medium verlängern möchte und das Medium verlängert werden kann
|
||||
*wird das Medium um die erlaubte Zeit verlänegrt
|
||||
* @param medienId
|
||||
* @param kundenId
|
||||
*/
|
||||
public void medienVerlaengern(String medienId, String kundenId) {
|
||||
Medien medien = medienBestand.get(medienId);
|
||||
Kunde kunde = kundenListe.get(kundenId);
|
||||
|
||||
if (medien != null && kunde != null) {
|
||||
boolean erfolg = kunde.medienVerlaengern(medien);
|
||||
if (erfolg) {
|
||||
System.out.println("Medium erfolgreich verlängert: " + medien.getTitel());
|
||||
} else {
|
||||
System.out.println("Verlängerung nicht möglich: Maximale Anzahl erreicht oder Medium ist nicht verlängerbar.");
|
||||
}
|
||||
} else {
|
||||
System.out.println(medien == null ? "Medium nicht gefunden." : "Kunde nicht gefunden.");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Erlaubt es neue Medien hinzuzufügen mit ihrer Id und es wird überprüft ob die ID schon vorhanden ist
|
||||
* @param medien
|
||||
*/
|
||||
public void medienHinzufuegen(Medien medien) {
|
||||
String id = medien.getId().trim().toUpperCase(); // Normalisierung
|
||||
if (medienBestand.containsKey(id)) {
|
||||
System.out.println("Ein Medium mit dieser ID existiert bereits: " + id);
|
||||
return;
|
||||
}
|
||||
medienBestand.put(id, medien);
|
||||
System.out.println("Medium hinzugefügt: " + medien.getTitel() + " (ID: " + id + ")");
|
||||
}
|
||||
|
||||
/*
|
||||
* Erlaubt es einem registrierten Kunden sich einzuloggen, wenn der Kunde bereits eingeloggt ist,
|
||||
* wird eine Nachricht darüber zurückgegeben sowie auch wenn der Kunde noch nicht existiert
|
||||
* @param kundenId
|
||||
* @return
|
||||
*/
|
||||
public boolean loginKunde(String kundenId) {
|
||||
if (eingeloggterBenutzer != null) {
|
||||
System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName());
|
||||
return false;
|
||||
}
|
||||
Kunde kunde = kundenListe.get(kundenId);
|
||||
if (kunde != null) {
|
||||
eingeloggterBenutzer = kunde;
|
||||
System.out.println("Kunde eingeloggt: " + kunde.getName());
|
||||
return true;
|
||||
} else {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Erlaubt es einem Admin sich einzuloggen so wie es auch beim Kunden läuft
|
||||
* @param adminId
|
||||
* @return
|
||||
*/
|
||||
public boolean loginAdmin(String adminId) {
|
||||
if (eingeloggterBenutzer != null) {
|
||||
System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName());
|
||||
return false;
|
||||
}
|
||||
Admin admin = adminListe.get(adminId);
|
||||
if (admin != null) {
|
||||
eingeloggterBenutzer = admin;
|
||||
System.out.println("Admin eingeloggt: " + admin.getName());
|
||||
return true;
|
||||
} else {
|
||||
System.out.println("Admin nicht gefunden.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* loggt den Benutzer aus, sollte allerdings keiner eingeloggt sein wird eine Fehlermeldung ausgegeben
|
||||
*/
|
||||
public void logout() {
|
||||
if (eingeloggterBenutzer != null) {
|
||||
System.out.println("Benutzer " + eingeloggterBenutzer.getName() + " wurde ausgeloggt.");
|
||||
eingeloggterBenutzer = null;
|
||||
} else {
|
||||
System.out.println("Kein Benutzer ist eingeloggt.");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Erstellt einen neuen Kunden mit dem K oder S präfix sowie einer hochzählenden Nummer um erkenntlich zu machen
|
||||
* ob ein Student oder ein normaler Kunde vorhanden ist
|
||||
* @param name
|
||||
* @param istStudent
|
||||
* @return
|
||||
*/
|
||||
public Kunde registriereKunde(String name, boolean istStudent) {
|
||||
String prefix = istStudent ? "S" : "K";
|
||||
int maxId = kundenListe.keySet().stream()
|
||||
.filter(id -> id.startsWith(prefix))
|
||||
.map(id -> id.replaceAll("[^0-9]", ""))
|
||||
.mapToInt(Integer::parseInt)
|
||||
.max()
|
||||
.orElse(0);
|
||||
String neueId = prefix + (maxId + 1);
|
||||
Kunde neuerKunde = new Kunde(neueId, name, istStudent);
|
||||
kundenListe.put(neueId, neuerKunde);
|
||||
System.out.println("Neuer Kunde registriert: " + name + " (ID: " + neueId + ")");
|
||||
return neuerKunde;
|
||||
}
|
||||
|
||||
/*
|
||||
* Erlaubt es dem Kunden seine ausgeliehenen Medien anzusehen als auch ob überziehungskosten entstanden sind
|
||||
*/
|
||||
public void zeigeAusgelieheneMedien() {
|
||||
if (!(eingeloggterBenutzer instanceof Kunde)) {
|
||||
System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen.");
|
||||
return;
|
||||
}
|
||||
Kunde kunde = (Kunde) eingeloggterBenutzer;
|
||||
List<Medien> ausgelieheneMedien = kunde.getAusgelieheneMedien();
|
||||
if (ausgelieheneMedien.isEmpty()) {
|
||||
System.out.println("Es wurden keine Medien ausgeliehen.");
|
||||
} else {
|
||||
System.out.println("Ausgeliehene Medien:");
|
||||
ausgelieheneMedien.forEach(medien -> {
|
||||
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
|
||||
String status = medien.verfuegbar()
|
||||
? "[Verfügbar]"
|
||||
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + ", Gebühren: " + gebuehren + " €]";
|
||||
System.out.println("- " + medien.getDetails() + " " + status);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class Brettspiel extends Medien {
|
||||
private int spieleranzahl;
|
||||
private int spieldauer;
|
||||
|
||||
public Brettspiel(String titel, String id, int erscheinungsjahr, int spieleranzahl, int spieldauer) {
|
||||
super(titel, id, erscheinungsjahr);
|
||||
this.spieleranzahl = spieleranzahl;
|
||||
this.spieldauer = spieldauer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAusleihdauer() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxVerlaengerungen() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDetails() {
|
||||
return "Brettspiel: " + titel + " (" + erscheinungsjahr + "), Spieleranzahl: " + spieleranzahl + ", Spieldauer: " + spieldauer + " Minuten";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class Buch extends Medien {
|
||||
private String autor;
|
||||
private int seitenanzahl;
|
||||
|
||||
public Buch(String titel, String id, int erscheinungsjahr, String autor, int seitenanzahl) {
|
||||
super(titel, id, erscheinungsjahr);
|
||||
this.autor = autor;
|
||||
this.seitenanzahl = seitenanzahl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAusleihdauer() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxVerlaengerungen() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDetails() {
|
||||
return "Buch: " + titel + " von " + autor + " (" + erscheinungsjahr + "), " + seitenanzahl + " Seiten";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class CD extends Medien {
|
||||
private String kuenstler;
|
||||
private int tracks;
|
||||
|
||||
public CD(String titel, String id, int erscheinungsjahr, String kuenstler, int tracks) {
|
||||
super(titel, id, erscheinungsjahr);
|
||||
this.kuenstler = kuenstler;
|
||||
this.tracks = tracks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAusleihdauer() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxVerlaengerungen() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDetails() {
|
||||
return "CD: " + titel + " von " + kuenstler + " (" + erscheinungsjahr + "), " + tracks + " Tracks";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class DVD extends Medien {
|
||||
private String regisseur;
|
||||
private int spieldauer;
|
||||
|
||||
public DVD(String titel, String id, int erscheinungsjahr, String regisseur, int spieldauer) {
|
||||
super(titel, id, erscheinungsjahr);
|
||||
this.regisseur = regisseur;
|
||||
this.spieldauer = spieldauer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAusleihdauer() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxVerlaengerungen() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDetails() {
|
||||
return "DVD: " + titel + " von " + regisseur + " (" + erscheinungsjahr + "), Spieldauer: " + spieldauer + " Minuten";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class Kunde extends User {
|
||||
private boolean istStudent; // True, wenn Kunde ein Student ist
|
||||
private double gebuehren;
|
||||
; // Offene Gebühren
|
||||
|
||||
public Kunde(String id, String name, boolean istStudent) {
|
||||
super(id, name);
|
||||
this.istStudent = istStudent;
|
||||
this.gebuehren = 0.0;
|
||||
}
|
||||
|
||||
public boolean istStudent() {
|
||||
return istStudent;
|
||||
}
|
||||
|
||||
public double getGebuehren() {
|
||||
return gebuehren;
|
||||
}
|
||||
|
||||
public void addGebuehren(double betrag) {
|
||||
if (betrag > 0) {
|
||||
this.gebuehren += betrag;
|
||||
}
|
||||
}
|
||||
|
||||
public void gebuehrenErhoehen(double betrag) {
|
||||
this.gebuehren += betrag;
|
||||
}
|
||||
|
||||
public double berechneGesamtgebuehren(LocalDate aktuellesDatum) {
|
||||
return ausgelieheneMedien.stream()
|
||||
.mapToDouble(medien -> medien.berechneGebuehren(aktuellesDatum))
|
||||
.sum();
|
||||
}
|
||||
|
||||
public Medien sucheAusgeliehenesMedium(String medienId) {
|
||||
return ausgelieheneMedien.stream()
|
||||
.filter(medien -> medien.getId().equalsIgnoreCase(medienId))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public boolean medienVerlaengern(Medien medien) {
|
||||
Consumer<Medien> verlaengerung = m -> {
|
||||
if (ausgelieheneMedien.contains(m) && m.verlaengern()) { // Kein Argument übergeben
|
||||
System.out.println("Medium verlängert: " + m.getTitel());
|
||||
} else {
|
||||
System.out.println("Verlängerung nicht möglich.");
|
||||
}
|
||||
};
|
||||
verlaengerung.accept(medien);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Bibliotheksverwaltung verwaltung = new Bibliotheksverwaltung();
|
||||
/*
|
||||
Hart codierte Kunden und Admin
|
||||
*/
|
||||
Kunde kunde1 = new Kunde("S1", "Max Mustermann", true);
|
||||
Kunde kunde2 = new Kunde("K1", "Lisa Müller", false);
|
||||
verwaltung.getKundenListe().put(kunde1.getId(), kunde1);
|
||||
verwaltung.getKundenListe().put(kunde2.getId(), kunde2);
|
||||
|
||||
Admin admin = new Admin("A1", "Anna Schmidt");
|
||||
verwaltung.getAdminListe().put(admin.getId(), admin);
|
||||
|
||||
/*
|
||||
* Hart codierte Medien
|
||||
*/
|
||||
Medien buch1 = new Buch("Der Herr der Ringe", "B1", 1954, "J.R.R. Tolkien", 1200);
|
||||
Medien buch2 = new Buch("Game of Thrones 1: Der Winter naht", "B2", 1996, "George R.R. Martin", 576);
|
||||
Medien buch3 = new Buch("Harry Potter and the Prisoner of Azkaban", "B3", 2014, "J.K. Rowling", 480);
|
||||
Medien dvd1 = new DVD("Inception", "D1", 2010, "Christopher Nolan", 148);
|
||||
Medien dvd2 = new DVD("Batman 'The Dark Knight'", "D2", 2008, "Christopher Nolan", 152);
|
||||
Medien dvd3 = new DVD("Star Wars: Episode 3 'Die Rache der Sith'", "D3", 2005, "George Lucas", 140);
|
||||
Medien cd1 = new CD("Black Ice", "CD1", 2001, "ACDC", 15);
|
||||
Medien cd2 = new CD("From Zero", "CD2", 2024, "Linkin Park", 11);
|
||||
Medien cd3 = new CD("The War to end all Wars", "CD3", 2022, "Sabaton", 10);
|
||||
Medien br1 = new Brettspiel("Wizard", "BR1", 1984, 4, 50);
|
||||
Medien br2 = new Brettspiel("Mensch Ärgere dich nicht", "BR2", 1910, 6, 50);
|
||||
Medien br3 = new Brettspiel("Monopoly Star Wars Edition", "BR3", 2016, 4, 60);
|
||||
Medien vd1 = new Videospiel("Cyberpunk2077", "VD1", 2022, "PC/PS5/XBOX", "CD Projekt Red");
|
||||
Medien vd2 = new Videospiel("Landwirtschafts-Simulator 25", "VD2", 2024, "PC/PS5/XBOX", "Giants");
|
||||
Medien vd3 = new Videospiel("CFB25", "VD3", 2024, "PC/PS5/XBOX", "EA-Sports");
|
||||
|
||||
/*
|
||||
* Hinzufügen Methode der hart codierten Medien
|
||||
*/
|
||||
verwaltung.medienHinzufuegen(buch1);
|
||||
verwaltung.medienHinzufuegen(buch2);
|
||||
verwaltung.medienHinzufuegen(buch3);
|
||||
verwaltung.medienHinzufuegen(dvd1);
|
||||
verwaltung.medienHinzufuegen(dvd2);
|
||||
verwaltung.medienHinzufuegen(dvd3);
|
||||
verwaltung.medienHinzufuegen(cd1);
|
||||
verwaltung.medienHinzufuegen(cd2);
|
||||
verwaltung.medienHinzufuegen(cd3);
|
||||
verwaltung.medienHinzufuegen(br1);
|
||||
verwaltung.medienHinzufuegen(br2);
|
||||
verwaltung.medienHinzufuegen(br3);
|
||||
verwaltung.medienHinzufuegen(vd1);
|
||||
verwaltung.medienHinzufuegen(vd2);
|
||||
verwaltung.medienHinzufuegen(vd3);
|
||||
|
||||
// Starte UI
|
||||
UI tui = new UI(verwaltung);
|
||||
tui.start();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public abstract class Medien {
|
||||
protected String titel;
|
||||
protected String id;
|
||||
protected int erscheinungsjahr;
|
||||
protected boolean verfuegbar = true;
|
||||
protected LocalDate rueckgabedat;
|
||||
protected int verlaengerungen;
|
||||
|
||||
public Medien(String titel, String id, int erscheinungsjahr) {
|
||||
this.titel = titel;
|
||||
this.id = id;
|
||||
this.erscheinungsjahr = erscheinungsjahr;
|
||||
}
|
||||
|
||||
public String getTitel() {
|
||||
return titel;
|
||||
}
|
||||
|
||||
public void setTitel(String titel) {
|
||||
this.titel = titel;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public LocalDate getRueckgabedat() {
|
||||
return rueckgabedat;
|
||||
}
|
||||
|
||||
public boolean verfuegbar() {
|
||||
return verfuegbar;
|
||||
}
|
||||
|
||||
public int getErscheinungsjahr() {
|
||||
return erscheinungsjahr;
|
||||
}
|
||||
|
||||
public void setErscheinungsjahr(int er) {
|
||||
this.erscheinungsjahr = er;
|
||||
}
|
||||
|
||||
public void setVerfuegbar(boolean verfuegbar) {
|
||||
this.verfuegbar = verfuegbar;
|
||||
}
|
||||
|
||||
public abstract int getAusleihdauer();
|
||||
|
||||
public abstract int getMaxVerlaengerungen();
|
||||
|
||||
public void ausleihen() {
|
||||
if (verfuegbar) {
|
||||
verfuegbar = false;
|
||||
rueckgabedat = LocalDate.now().plusWeeks(getAusleihdauer());
|
||||
System.out.println("Ausgeliehen bis: " + rueckgabedat);
|
||||
} else {
|
||||
System.out.println("Nicht verfügbar.");
|
||||
}
|
||||
}
|
||||
|
||||
public int getVerlaengerungen() {
|
||||
return verlaengerungen;
|
||||
}
|
||||
|
||||
public boolean verlaengern() {
|
||||
if (getMaxVerlaengerungen() == 0) {
|
||||
System.out.println("Dieses Medium kann nicht verlängert werden.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (verlaengerungen < getMaxVerlaengerungen()) {
|
||||
verlaengerungen++;
|
||||
rueckgabedat = rueckgabedat.plusWeeks(getAusleihdauer());
|
||||
System.out.println("Das Medium wurde verlängert. Neues Rückgabedatum: " + rueckgabedat);
|
||||
return true;
|
||||
} else {
|
||||
System.out.println("Maximale Verlängerungsanzahl erreicht.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void zurueckgeben() {
|
||||
verfuegbar = true;
|
||||
rueckgabedat = null;
|
||||
}
|
||||
|
||||
public boolean istUeberzogen(LocalDate aktuellesDatum) {
|
||||
return rueckgabedat != null && rueckgabedat.isBefore(aktuellesDatum);
|
||||
}
|
||||
|
||||
public double berechneGebuehren(LocalDate aktuellesDatum) {
|
||||
if (rueckgabedat == null || !istUeberzogen(aktuellesDatum)) {
|
||||
return 0.0;
|
||||
}
|
||||
long ueberzogeneTage = java.time.temporal.ChronoUnit.DAYS.between(rueckgabedat, aktuellesDatum);
|
||||
return ueberzogeneTage * 0.50;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public abstract String getDetails();
|
||||
}
|
|
@ -0,0 +1,281 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class UI {
|
||||
private Bibliotheksverwaltung verwaltung;
|
||||
private Scanner scanner;
|
||||
|
||||
public UI(Bibliotheksverwaltung verwaltung) {
|
||||
this.verwaltung = verwaltung;
|
||||
this.scanner = new Scanner(System.in);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
String auswahl;
|
||||
do {
|
||||
zeigeMenue();
|
||||
auswahl = scanner.nextLine();
|
||||
verarbeiteAuswahl(auswahl);
|
||||
} while (!auswahl.equals("0"));
|
||||
System.out.println("Programm beendet.");
|
||||
}
|
||||
|
||||
private void zeigeMenue() {
|
||||
System.out.println("\n--- Bibliothekssystem ---");
|
||||
System.out.println("1. Anmelden (Kunde)");
|
||||
System.out.println("2. Anmelden (Admin)");
|
||||
System.out.println("3. Abmelden");
|
||||
System.out.println("4. Neuen Kunden registrieren");
|
||||
System.out.println("5. Medien durchsuchen");
|
||||
System.out.println("6. Medien anzeigen");
|
||||
System.out.println("7. Medien ausleihen");
|
||||
System.out.println("8. Medien zurückgeben");
|
||||
System.out.println("9. Medien verlängern");
|
||||
System.out.println("10. Gebühren anzeigen");
|
||||
System.out.println("11. Gebühren verbuchen (Admin)");
|
||||
System.out.println("12. Medien hinzufügen (Admin)");
|
||||
System.out.println("13. Meine ausgeliehenen Medien anzeigen");
|
||||
System.out.println("14. Datum einstellen");
|
||||
System.out.println("0. Beenden");
|
||||
System.out.print("Auswahl: ");
|
||||
}
|
||||
|
||||
private void verarbeiteAuswahl(String auswahl) {
|
||||
switch (auswahl) {
|
||||
case "1" -> loginKunde();
|
||||
case "2" -> loginAdmin();
|
||||
case "3" -> logout();
|
||||
case "4" -> kundeRegistrieren();
|
||||
case "5" -> medienDurchsuchen();
|
||||
case "6" -> alleMedienAnzeigen();
|
||||
case "7" -> medienAusleihen();
|
||||
case "8" -> medienZurueckgeben();
|
||||
case "9" -> medienVerlaengern();
|
||||
case "10" -> gebuehrenAnzeigen();
|
||||
case "11" -> gebuehrenVerbuchen();
|
||||
case "12" -> medienHinzufuegen();
|
||||
case "13" -> ausgeliehenenMedienAnzeigen();
|
||||
case "14" -> datumEinstellen();
|
||||
case "0" -> System.out.println("Beende das Programm...");
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Wartet auf die Eingabe der Kunden-Id, wenn diese existiert wird der User eingeloggt
|
||||
*/
|
||||
private void loginKunde() {
|
||||
System.out.print("Kunden-ID eingeben: ");
|
||||
String kundenId = scanner.nextLine();
|
||||
if (verwaltung.loginKunde(kundenId)) {
|
||||
System.out.println("Erfolgreich als Kunde angemeldet.");
|
||||
} else {
|
||||
System.out.println("Anmeldung fehlgeschlagen.");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Wartet auf die Eingaben der Admin-ID, einloggen erfolgt gleich wie beim Kunden
|
||||
*/
|
||||
private void loginAdmin() {
|
||||
System.out.print("Admin-ID eingeben: ");
|
||||
String adminId = scanner.nextLine();
|
||||
if (verwaltung.loginAdmin(adminId)) {
|
||||
System.out.println("Erfolgreich als Admin angemeldet.");
|
||||
} else {
|
||||
System.out.println("Anmeldung fehlgeschlagen.");
|
||||
}
|
||||
}
|
||||
|
||||
private void logout() {
|
||||
verwaltung.logout();
|
||||
}
|
||||
|
||||
/*
|
||||
* Fragt den neuen Kunden nach seinem Namen als auch, ob es ein Student ist
|
||||
* Wenn der Kunde ein Student ist, dann wird die Kunden-ID mit einem S sonst einem K beginnend
|
||||
*/
|
||||
private void kundeRegistrieren() {
|
||||
System.out.print("Name eingeben: ");
|
||||
String name = scanner.nextLine();
|
||||
System.out.print("Ist der Kunde ein Student? (ja/nein): ");
|
||||
String studentAntwort = scanner.nextLine().toLowerCase();
|
||||
boolean istStudent = studentAntwort.equals("ja");
|
||||
|
||||
Kunde neuerKunde = verwaltung.registriereKunde(name, istStudent);
|
||||
}
|
||||
|
||||
/*
|
||||
* Wartet auf die Einagbe des Kunden nach was gesucht werden soll
|
||||
* Nimmt dann den Suchbegriff und vergleicht den eingegebenen Begriff mit allem in Medien
|
||||
*/
|
||||
private void medienDurchsuchen() {
|
||||
System.out.print("Suchbegriff eingeben: ");
|
||||
String suchbegriff = scanner.nextLine();
|
||||
var ergebnisse = verwaltung.sucheMedienNachTitel(suchbegriff);
|
||||
|
||||
if (ergebnisse.isEmpty()) {
|
||||
System.out.println("Keine Medien gefunden.");
|
||||
} else {
|
||||
System.out.println("Suchergebnisse:");
|
||||
ergebnisse.forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void alleMedienAnzeigen() {
|
||||
verwaltung.alleMedienAnzeigen();
|
||||
}
|
||||
|
||||
private void medienAusleihen() {
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
||||
System.out.println("Bitte loggen Sie sich als Kunde ein, um Medien auszuleihen.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Medium-ID eingeben: ");
|
||||
String medienId = scanner.nextLine().trim();
|
||||
verwaltung.medienAusleihen(medienId);
|
||||
}
|
||||
|
||||
private void medienZurueckgeben() {
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
||||
System.out.println("Bitte loggen Sie sich als Kunde ein, um Medien zurückzugeben.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Medium-ID eingeben: ");
|
||||
String medienId = scanner.nextLine();
|
||||
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
|
||||
verwaltung.medienZurueckgeben(medienId, kunde.getId());
|
||||
}
|
||||
|
||||
private void medienVerlaengern() {
|
||||
System.out.print("Medium-ID eingeben: ");
|
||||
String medienId = scanner.nextLine();
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
||||
System.out.println("Nur Kunden können Medien verlängern.");
|
||||
return;
|
||||
}
|
||||
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
|
||||
Medien medien = kunde.sucheAusgeliehenesMedium(medienId); // Suche im Kundenbestand
|
||||
if (medien == null) {
|
||||
System.out.println("Medium wurde nicht gefunden oder gehört nicht zu diesem Kunden.");
|
||||
return;
|
||||
}
|
||||
if (!medien.verlaengern()) {
|
||||
System.out.println("Die Verlängerung war nicht erfolgreich.");
|
||||
}
|
||||
}
|
||||
|
||||
private void gebuehrenAnzeigen() {
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
||||
System.out.println("Nur eingeloggte Kunden können ihre Gebühren anzeigen.");
|
||||
return;
|
||||
}
|
||||
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
|
||||
System.out.println("Gesamtgebühren für " + kunde.getName() + ": " + kunde.getGebuehren() + " €");
|
||||
}
|
||||
|
||||
|
||||
private void gebuehrenVerbuchen() {
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) {
|
||||
System.out.println("Nur Admins können Gebühren verbuchen. Bitte als Admin einloggen.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Kunden-ID eingeben: ");
|
||||
String kundenId = scanner.nextLine();
|
||||
Kunde kunde = verwaltung.getKundenListe().get(kundenId);
|
||||
if (kunde == null) {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Betrag eingeben: ");
|
||||
try {
|
||||
double betrag = Double.parseDouble(scanner.nextLine());
|
||||
Admin admin = (Admin) verwaltung.getEingeloggterBenutzer();
|
||||
admin.gebuehrenVerbuchen(kunde, betrag);
|
||||
System.out.println("Gebühren erfolgreich verbucht.");
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Ungültige Eingabe. Bitte einen gültigen Betrag eingeben.");
|
||||
}
|
||||
}
|
||||
|
||||
private void medienHinzufuegen() {
|
||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) {
|
||||
System.out.println("Nur Admins können Medien hinzufügen. Bitte als Admin einloggen.");
|
||||
return;
|
||||
}
|
||||
System.out.print("Medienart (Buch, DVD, CD, Brettspiel, Videospiel) eingeben: ");
|
||||
String medienart = scanner.nextLine();
|
||||
System.out.print("ID eingeben: ");
|
||||
String id = scanner.nextLine();
|
||||
System.out.print("Titel eingeben: ");
|
||||
String titel = scanner.nextLine();
|
||||
System.out.print("Erscheinungsjahr eingeben: ");
|
||||
int jahr;
|
||||
try {
|
||||
jahr = Integer.parseInt(scanner.nextLine());
|
||||
Medien medien = null;
|
||||
switch (medienart.toLowerCase()) {
|
||||
case "buch":
|
||||
System.out.print("Autor eingeben: ");
|
||||
String autor = scanner.nextLine();
|
||||
System.out.print("Seitenanzahl eingeben: ");
|
||||
int seiten = Integer.parseInt(scanner.nextLine());
|
||||
medien = new Buch(id, titel, jahr, autor, seiten);
|
||||
break;
|
||||
case "dvd":
|
||||
System.out.print("Regisseur eingeben: ");
|
||||
String regisseur = scanner.nextLine();
|
||||
System.out.print("Spieldauer (Minuten) eingeben: ");
|
||||
int spieldauerDVD = Integer.parseInt(scanner.nextLine());
|
||||
medien = new DVD(id, titel, jahr, regisseur, spieldauerDVD);
|
||||
break;
|
||||
case "cd":
|
||||
System.out.print("Künstler eingeben: ");
|
||||
String kuenstler = scanner.nextLine();
|
||||
System.out.print("Anzahl der Tracks eingeben: ");
|
||||
int tracks = Integer.parseInt(scanner.nextLine());
|
||||
medien = new CD(id, titel, jahr, kuenstler, tracks);
|
||||
break;
|
||||
case "brettspiel":
|
||||
System.out.print("Spieleranzahl eingeben: ");
|
||||
int spieler = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Spieldauer (Minuten) eingeben: ");
|
||||
int spieldauerBrettspiel = Integer.parseInt(scanner.nextLine());
|
||||
medien = new Brettspiel(id, titel, jahr, spieler, spieldauerBrettspiel);
|
||||
break;
|
||||
case "videospiel":
|
||||
System.out.print("Plattform eingeben: ");
|
||||
String plattform = scanner.nextLine();
|
||||
System.out.print("Entwickler eingeben: ");
|
||||
String entwickler = scanner.nextLine();
|
||||
medien = new Videospiel(id, titel, jahr, plattform, entwickler);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Ungültige Medienart.");
|
||||
return;
|
||||
}
|
||||
verwaltung.medienHinzufuegen(medien);
|
||||
System.out.println("Medium erfolgreich hinzugefügt.");
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Ungültige Eingabe. Bitte eine Zahl eingeben.");
|
||||
}
|
||||
}
|
||||
|
||||
private void ausgeliehenenMedienAnzeigen() {
|
||||
verwaltung.zeigeAusgelieheneMedien();
|
||||
}
|
||||
|
||||
private void datumEinstellen() {
|
||||
System.out.print("Neues Datum eingeben (YYYY-MM-DD): ");
|
||||
String eingabe = scanner.nextLine();
|
||||
try {
|
||||
LocalDate neuesDatum = LocalDate.parse(eingabe);
|
||||
verwaltung.setAktuellesDatum(neuesDatum);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Ungültiges Datum. Bitte im Format YYYY-MM-DD eingeben.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package Bibliothek;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class User {
|
||||
protected String id;
|
||||
protected String name;
|
||||
protected List<Medien> ausgelieheneMedien;
|
||||
|
||||
public User(String id, String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.ausgelieheneMedien = new ArrayList<>();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public List<Medien> getAusgelieheneMedien() {
|
||||
return ausgelieheneMedien;
|
||||
}
|
||||
|
||||
public void medienAusleihen(Medien medien) {
|
||||
if (medien.verfuegbar()) {
|
||||
medien.ausleihen();
|
||||
ausgelieheneMedien.add(medien);
|
||||
System.out.println(name + " hat '" + medien.getTitel() + "' ausgeliehen.");
|
||||
} else {
|
||||
System.out.println("'" + medien.getTitel() + "' ist nicht verfügbar.");
|
||||
}
|
||||
}
|
||||
|
||||
public void medienZurueckgeben(Medien medien) {
|
||||
if (ausgelieheneMedien.contains(medien)) {
|
||||
medien.zurueckgeben();
|
||||
ausgelieheneMedien.remove(medien);
|
||||
System.out.println(name + " hat '" + medien.getTitel() + "' zurückgegeben.");
|
||||
} else {
|
||||
System.out.println("'" + medien.getTitel() + "' wurde nicht von " + name + " ausgeliehen.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Bibliothek;
|
||||
|
||||
public class Videospiel extends Medien {
|
||||
private String plattform;
|
||||
private String entwickler;
|
||||
|
||||
public Videospiel(String titel, String id, int erscheinungsjahr, String plattform, String entwickler) {
|
||||
super(titel, id, erscheinungsjahr);
|
||||
this.plattform = plattform;
|
||||
this.entwickler = entwickler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAusleihdauer() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxVerlaengerungen() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDetails() {
|
||||
return "Videospiel: " + titel + " (" + erscheinungsjahr + "), Plattform: " + plattform + ", Entwickler: " + entwickler;
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello world!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
1- Grundgerüst erstellen. Es soll Bücher sowie verschiedene Medien geben
|
||||
2- Man soll die Medien oder Bücker ausleihen können
|
||||
3- Man soll nach Ausleihbaren Sachen suchen können
|
||||
4- Wenn man etwas ausgeliehen hat soll man die Ausleihdauer verlängern können
|
||||
5- Wenn die Ausleihzeit beendet ist, soll man die entstandenen Kosten bezahlen
|
||||
6- Es soll eine vergünstigung für Schüler und Studenten geben
|
|
@ -0,0 +1,6 @@
|
|||
Wenn ein Kunde etwas länger behält und nicht verlängert und auch nie wieder kommt um zu bezahlen was passiert dann? Erhöht sich die Summe für den Verzug bis ins Unendliche oder sagt man ab einem gewissen punkt ist schluss?
|
||||
-->
|
||||
Kann der Kunde sein Konto löschen?
|
||||
-->
|
||||
Wie soll das mit dem Datum gehandelt werden, so wie beim Parkhaus oder gibt es diesmal eine andere Lösung (eingeschlossen mit enter heutiges Datum)?
|
||||
-->
|
|
@ -0,0 +1,3 @@
|
|||
Wenn ein Kunde etwas länger behält und nicht verlängert und auch nie wieder kommt um zu bezahlen was passiert dann? Erhöht sich die Summe für den Verzug bis ins Unendliche oder sagt man ab einem gewissen punkt ist schluss?
|
||||
Kann der Kunde sein Konto löschen?
|
||||
Wie soll das mit dem Datum gehandelt werden, so wie beim Parkhaus oder gibt es diesmal eine andere Lösung (eingeschlossen mit enter heutiges Datum)?
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
1- Grundgerüst erstellen. Es soll Bücher sowie verschiedene Medien geben
|
||||
2- Man soll die Medien oder Bücker ausleihen können
|
||||
3- Man soll nach Ausleihbaren Sachen suchen können
|
||||
4- Wenn man etwas ausgeliehen hat soll man die Ausleihdauer verlängern können
|
||||
5- Wenn die Ausleihzeit beendet ist, soll man die entstandenen Kosten bezahlen
|
||||
6- Es soll eine vergünstigung für Schüler und Studenten geben
|
|
@ -0,0 +1,6 @@
|
|||
Wenn ein Kunde etwas länger behält und nicht verlängert und auch nie wieder kommt um zu bezahlen was passiert dann? Erhöht sich die Summe für den Verzug bis ins Unendliche oder sagt man ab einem gewissen punkt ist schluss?
|
||||
-->
|
||||
Kann der Kunde sein Konto löschen?
|
||||
-->
|
||||
Wie soll das mit dem Datum gehandelt werden, so wie beim Parkhaus oder gibt es diesmal eine andere Lösung (eingeschlossen mit enter heutiges Datum)?
|
||||
-->
|
Loading…
Reference in New Issue