diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio
new file mode 100644
index 0000000..05606b7
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio
@@ -0,0 +1,401 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java b/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java
new file mode 100644
index 0000000..8dd7b33
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java
@@ -0,0 +1,5 @@
+package domain;
+
+public class Ausleihe {
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausweis.java b/Bibliotheksverwaltungssystem/src/domain/Ausweis.java
new file mode 100644
index 0000000..e8a6793
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Ausweis.java
@@ -0,0 +1,15 @@
+package domain;
+
+public class Ausweis {
+ private int kartenNummer;
+ private static int generiereNummer = 1000;
+
+ public Ausweis() {
+ this.kartenNummer = generiereNummer++;
+ }
+
+ public int getKartenNummer() {
+ return kartenNummer;
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java
new file mode 100644
index 0000000..8d5b5df
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java
@@ -0,0 +1,76 @@
+package domain.Benutzer;
+
+import java.util.ArrayList;
+import domain.Ausweis;
+import domain.Medium.Medium;
+
+public abstract class Benutzer {
+
+ private Ausweis bibAusweis;
+ private String name;
+ private int alter;
+ private boolean istStudent;
+ private ArrayList ausgeliehenenMedien;
+
+ public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
+ super();
+ this.bibAusweis = bibAusweis;
+ this.name = name;
+ this.alter = alter;
+ this.istStudent = istStudent;
+ this.ausgeliehenenMedien = new ArrayList<>();
+ }
+
+ public Ausweis getBibAusweis() {
+ return bibAusweis;
+ }
+
+ public void setBibAusweis(Ausweis bibAusweis) {
+ this.bibAusweis = bibAusweis;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAlter() {
+ return alter;
+ }
+
+ public void setAlter(int alter) {
+ this.alter = alter;
+ }
+
+ public boolean isIstStudent() {
+ return istStudent;
+ }
+
+ public void setIstStudent(boolean istStudent) {
+ this.istStudent = istStudent;
+ }
+
+ public ArrayList getAusgeliehenenMedien() {
+ return ausgeliehenenMedien;
+ }
+
+ public void addMedium(Medium medium) {
+ this.ausgeliehenenMedien.add(medium);
+ }
+
+ public void removeMedium(Medium medium) {
+ this.ausgeliehenenMedien.remove(medium);
+ }
+
+ @Override
+ public String toString() {
+ return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent="
+ + istStudent + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
+ }
+
+
+}
+
diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java
new file mode 100644
index 0000000..fe63cbe
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java
@@ -0,0 +1,11 @@
+package domain.Benutzer;
+
+import domain.Ausweis;
+
+public class Kunde extends Benutzer {
+
+ public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
+ super(bibAusweis, name, alter, istStudent);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java
new file mode 100644
index 0000000..e85605d
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java
@@ -0,0 +1,11 @@
+package domain.Benutzer;
+
+import domain.Ausweis;
+
+public class Mitarbeiter extends Benutzer {
+
+ public Mitarbeiter(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
+ super(bibAusweis, name, alter, istStudent);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java
new file mode 100644
index 0000000..a306ca6
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java
@@ -0,0 +1,30 @@
+package domain;
+
+import java.util.ArrayList;
+import domain.Benutzer.*;
+import domain.ExceptionsKlassen.*;
+
+public class BibSystem {
+ private ArrayList benutzer;
+
+ public BibSystem() {
+ this.benutzer = 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");
+
+ Benutzer benutzer;
+ Ausweis ausweis = new Ausweis();
+ boolean istStudentOderSchüler = (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))? true : false;
+
+ if (istAdmin.equalsIgnoreCase("nein"))
+ benutzer = new Mitarbeiter(ausweis,name,alter,istStudentOderSchüler);
+ else
+ benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler);
+
+ return benutzer.toString();
+
+ }
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java
new file mode 100644
index 0000000..6c0b3cc
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java
@@ -0,0 +1,8 @@
+package domain.ExceptionsKlassen;
+
+public class FalscheEingabeException extends Exception {
+
+ public FalscheEingabeException(String error){
+ super(error);
+ }
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java
deleted file mode 100644
index 3165998..0000000
--- a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package domain.ExceptionsKlassen;
-
-public class Test {
-
-}
diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java
new file mode 100644
index 0000000..c0dd213
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java
@@ -0,0 +1,33 @@
+package domain.JTests;
+
+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.Benutzer;
+import domain.Benutzer.Kunde;
+import domain.ExceptionsKlassen.FalscheEingabeException;
+
+class RegistrierenTest {
+ private BibSystem bib;
+
+ @BeforeEach
+ void erstelleObjekt() {
+ this.bib = new BibSystem();
+ }
+
+ @Test
+ void test() throws FalscheEingabeException {
+ String name = "obai";
+ String type = "schüler";
+ String istAdmin = "nein";
+ String test = bib.addUser(name, type, 15,istAdmin);
+
+ assertTrue(test.contains(name));
+ System.out.println(test);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java b/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java
deleted file mode 100644
index 77bb1dd..0000000
--- a/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package domain.JTests;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-import org.junit.jupiter.api.BeforeEach;
-
-class Test {
-
- @BeforeEach
- void setUp() throws Exception {
- }
-
- @org.junit.jupiter.api.Test
- void test() {
- fail("Not yet implemented");
- }
-
-}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java
new file mode 100644
index 0000000..7295ac4
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java
@@ -0,0 +1,11 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public class Brettspiel extends Medium {
+
+ public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super(kennungNummer, title, erscheinungsjahr, autor);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java
new file mode 100644
index 0000000..e1d4358
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java
@@ -0,0 +1,11 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public class Buch extends Medium {
+
+ public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super(kennungNummer, title, erscheinungsjahr, autor);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java
new file mode 100644
index 0000000..aa60e3e
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java
@@ -0,0 +1,11 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public class Cd extends Medium {
+
+ public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super(kennungNummer, title, erscheinungsjahr, autor);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java
new file mode 100644
index 0000000..dcad69d
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java
@@ -0,0 +1,11 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public class Dvd extends Medium {
+
+ public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super(kennungNummer, title, erscheinungsjahr, autor);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java
new file mode 100644
index 0000000..2cae1d2
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java
@@ -0,0 +1,53 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public abstract class Medium {
+
+ private int KennungNummer;
+ private String title;
+ private Date erscheinungsjahr;
+ private String autor;
+
+ public Medium(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super();
+ KennungNummer = kennungNummer;
+ this.title = title;
+ this.erscheinungsjahr = erscheinungsjahr;
+ this.autor = autor;
+ }
+
+ public int getKennungNummer() {
+ return KennungNummer;
+ }
+
+ public void setKennungNummer(int kennungNummer) {
+ KennungNummer = kennungNummer;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public Date getErscheinungsjahr() {
+ return erscheinungsjahr;
+ }
+
+ public void setErscheinungsjahr(Date erscheinungsjahr) {
+ this.erscheinungsjahr = erscheinungsjahr;
+ }
+
+ public String getAutor() {
+ return autor;
+ }
+
+ public void setAutor(String autor) {
+ this.autor = autor;
+ }
+
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java
new file mode 100644
index 0000000..95946e5
--- /dev/null
+++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java
@@ -0,0 +1,11 @@
+package domain.Medium;
+
+import java.util.Date;
+
+public class Videospiel extends Medium {
+
+ public Videospiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
+ super(kennungNummer, title, erscheinungsjahr, autor);
+ }
+
+}
diff --git a/Bibliotheksverwaltungssystem/src/domain/Test.java b/Bibliotheksverwaltungssystem/src/domain/Test.java
deleted file mode 100644
index f30e190..0000000
--- a/Bibliotheksverwaltungssystem/src/domain/Test.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package domain;
-
-public class Test {
-
-}
diff --git a/Bibliotheksverwaltungssystem/src/main/Main.java b/Bibliotheksverwaltungssystem/src/main/Main.java
index f3ec08e..6897873 100644
--- a/Bibliotheksverwaltungssystem/src/main/Main.java
+++ b/Bibliotheksverwaltungssystem/src/main/Main.java
@@ -1,10 +1,11 @@
package main;
+import tui.Tui;
+
public class Main {
public static void main(String[] args) {
- // TODO Auto-generated method stub
-
+ new Tui();
}
}
diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java
index f329806..e824aab 100644
--- a/Bibliotheksverwaltungssystem/src/tui/Tui.java
+++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java
@@ -1,5 +1,74 @@
package tui;
-public class Tui {
+import java.util.Scanner;
+import domain.BibSystem;
+import domain.ExceptionsKlassen.FalscheEingabeException;
+
+public class Tui {
+ private BibSystem fassade;
+ private Scanner eingabe = new Scanner(System.in);
+
+ public Tui() {
+ this.fassade = new BibSystem();
+ startBibProgramm();
+ }
+
+ private void startBibProgramm() {
+ String aktion;
+ System.out.println("<< Willkommen in der Bibliothek >>");
+
+ boolean programmIstAktiv = true;
+ while(programmIstAktiv) {
+ System.out.println("1.Registrieren");
+ System.out.println("2.Anmelden");
+ System.out.println("3.Medien Durchsuchen");
+ System.out.println("4.Ausleihen eines Gegenstandes");
+ System.out.println("5.Rückgabe eines Gegenstandes");
+ 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("Wählen Sie bitte eine Aktion aus: ");
+ System.out.print(">");
+ aktion = eingabe.nextLine();
+
+ switch(aktion) {
+ case "1":
+ registrierenProzess();
+ break;
+ }
+ }
+
+ }
+
+ private void registrierenProzess() {
+ boolean registrierenProzess = true;
+ String name;
+ int alter;
+ String type;
+ String istAdmin;
+
+ while (registrierenProzess) {
+ System.out.println("Name: ");
+ System.out.print(">");
+ name = eingabe.nextLine();
+ System.out.println("Alter: ");
+ System.out.print(">");
+ alter = eingabe.nextInt();
+ System.out.println("sind Sie Schüler oder Student: Ja/Nein");
+ System.out.print(">");
+ type = eingabe.nextLine();
+ System.out.println("Admin: Ja/Nein");
+ System.out.print(">");
+ istAdmin = eingabe.nextLine();
+ try {
+ fassade.addUser(name, type, alter, istAdmin);
+ startBibProgramm();
+ } catch (FalscheEingabeException e) {
+ System.out.println(e.getMessage());
+ continue;
+ }
+
+ }
+ }
}
diff --git a/Bibliotheksverwaltungssystem/vorgehen.txt b/Bibliotheksverwaltungssystem/vorgehen.txt
index e69de29..df71115 100644
--- a/Bibliotheksverwaltungssystem/vorgehen.txt
+++ b/Bibliotheksverwaltungssystem/vorgehen.txt
@@ -0,0 +1,11 @@
+Anforderungsanalyse:
+Für das Bibliotheksverwaltungssystem werde ich zunächst eine gründliche Analyse der Anforderungen durchführen.
+Hierbei werde ich festlegen, welche Funktionen und Ziele die Software erfüllen soll. Ein wesentlicher Aspekt ist auch,
+die unterschiedlichen Akteure zu identifizieren, die die Software verwenden werden, um ihre Bedürfnisse und Anforderungen zu berücksichtigen.
+
+Design und Datenstrukturentscheidung:
+In diesem Schritt plane und entwerfe ich die grundlegende Klassenstruktur.
+Dazu werde ich ermitteln, wie viele Klassen benötigt werden und welche Attribute und Methoden jede Klasse enthalten soll.
+ich werde auch die Beziehungen zwischen den Klassen definieren(z.b Vererbung, Assoziation, etc..)
+
+