Compare commits

..

17 Commits

Author SHA1 Message Date
Berat Kocak 75f4b13683 PR2Bib/src/domainBib/Kunde.java aktualisiert 2024-11-18 14:15:20 +01:00
Berat Kocak 0056bdea79 PR2Bib/src/domainBib/Benutzer.java gelöscht 2024-11-18 14:15:11 +01:00
Berat Kocak 1c6d96fe39 PR2Bib/src/guiBib/BibliothekGUI.java aktualisiert 2024-11-18 14:15:03 +01:00
Berat Kocak b11b2ae858 PR2Bib/src/guiBib/BibliothekGUI.java aktualisiert 2024-11-18 10:27:14 +01:00
Berat Kocak aca14d1590 fixed search filter 2024-11-18 10:25:47 +01:00
Berat Kocak 764af71698 added ki prompts and answers to code 2024-11-18 09:05:33 +01:00
Berat Kocak 1f2d4b206e merge conflict 2024-11-17 21:15:38 +01:00
Berat Kocak 50e138bc1f Merge branch 'main' of https://gitty.informatik.hs-mannheim.de/3010293/PR2Bibliothek 2024-11-17 21:14:31 +01:00
Berat Kocak 874397badc deleted sysout statements used for testing 2024-11-17 21:10:43 +01:00
Berat Kocak 3dc5790cb7 commit on laptop test 2024-11-14 21:57:25 +01:00
Berat Kocak 12c332d77e added filter function for media browse 2024-11-14 19:04:48 +01:00
Berat Kocak af5961609d added search function jlabel output to include kennnummer of medium 2024-11-14 17:55:53 +01:00
Berat Kocak 5165365c17 Merge remote-tracking branch 'origin/main' into main 2024-11-14 17:52:21 +01:00
Berat Kocak 462242c4e4 changed how program handles dates and added search tab 2024-11-14 17:48:28 +01:00
Berat Kocak 1bc6e0fe7b fragen.txt aktualisiert 2024-11-12 16:48:42 +01:00
Berat Kocak eb3530f793 fragen.txt mit Antworten aus der Laborstunde vom 12.11.24 ergänzt 2024-11-12 16:46:58 +01:00
Berat Kocak 514303cad9 added fragen and vorgehen to git repo 2024-11-11 21:29:03 +01:00
14 changed files with 702 additions and 203 deletions

2
PR2Bib/.gitignore vendored 100644
View File

@ -0,0 +1,2 @@
/.project
/.classpath

View File

@ -1,8 +0,0 @@
public class Test {
public static void main(String[] args) {
System.out.println("XYZ");
}
}

View File

@ -1,6 +0,0 @@
public class Test1 {
public static void main(String[] args) {
System.out.println("ABA");
}
}

View File

@ -1,25 +0,0 @@
package domainBib;
import java.util.ArrayList;
public abstract class Benutzer {
private int kennnummer;
abstract public int getKennnummer();
abstract public boolean istStudent();
}
class Mitarbeiter extends Benutzer {
private int kennnummer;
public Mitarbeiter(int kennnummer) {
this.kennnummer = kennnummer;
}
public int getKennnummer() {
return kennnummer;
}
public boolean istStudent() {
return false;
}
}

View File

@ -80,6 +80,11 @@ public class Bibliothek {
Kunde k3 = new Kunde(false, 3);
Kunde k4 = new Kunde(false, 4);
Kunde k5 = new Kunde(false, 5);
k1.addSchulden(5);
k2.addSchulden(5);
k3.addSchulden(10);
k4.addSchulden(10);
k5.addSchulden(10);
kundenListe.add(k1);
kundenListe.add(k2);
kundenListe.add(k3);
@ -87,7 +92,7 @@ public class Bibliothek {
kundenListe.add(k5);
for(Buch b: bücherListe) {
katalog.add(b);
katalog.add(b);
}
for(DVD d: dvdListe) {
katalog.add(d);
@ -100,7 +105,7 @@ public class Bibliothek {
}
for(Videospiel vs: videospielListe) {
katalog.add(vs);
}
}
}
public static Kunde validateLogin(int login) {
@ -279,22 +284,25 @@ public class Bibliothek {
Buch b = (Buch) m;
double kostenBuch = berechneGebühren(b, kennnummer, rückgabeDatum);
String titelBuch = b.getTitel();
if(kostenBuch>0) {BibliothekGUI.zahlungsFenster(kostenBuch, titelBuch, kennnummer, k);
bücherListe.add(b);
k.removeFromList(m);
} else {
bücherListe.add(b);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
if(kostenBuch > 0) {
k.removeFromList(m);
BibliothekGUI.zahlungsFenster(kostenBuch, titelBuch, kennnummer, k);
k.addSchulden(kostenBuch);
bücherListe.add(b);
} else if(kostenBuch == 0){
bücherListe.add(b);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "DVD":
DVD d = (DVD) m;
double kostenDVD = berechneGebühren(d, kennnummer, rückgabeDatum);
String titelDVD = d.getTitel();
if(kostenDVD>0) {BibliothekGUI.zahlungsFenster(kostenDVD, titelDVD, kennnummer, k);
dvdListe.add(d);
k.removeFromList(m);
if(kostenDVD>0) {BibliothekGUI.zahlungsFenster(kostenDVD, titelDVD, kennnummer, k);
k.addSchulden(kostenDVD);
dvdListe.add(d);
} else {
dvdListe.add(d);
k.removeFromList(m);
@ -305,9 +313,10 @@ public class Bibliothek {
CD c = (CD) m;
double kostenCD = berechneGebühren(c, kennnummer, rückgabeDatum);
String titelCD = c.getTitel();
if(kostenCD>0) {BibliothekGUI.zahlungsFenster(kostenCD, titelCD, kennnummer, k);
cdListe.add(c);
k.removeFromList(m);
if(kostenCD>0) {BibliothekGUI.zahlungsFenster(kostenCD, titelCD, kennnummer, k);
k.addSchulden(kostenCD);
cdListe.add(c);
} else {
cdListe.add(c);
k.removeFromList(m);
@ -318,9 +327,10 @@ public class Bibliothek {
Brettspiel bs = (Brettspiel) m;
double kostenBS = berechneGebühren(bs, kennnummer, rückgabeDatum);
String titelBS = bs.getTitel();
if(kostenBS>0) {BibliothekGUI.zahlungsFenster(kostenBS, titelBS, kennnummer, k);
brettspielListe.add(bs);
k.removeFromList(m);
if(kostenBS>0) {BibliothekGUI.zahlungsFenster(kostenBS, titelBS, kennnummer, k);
k.addSchulden(kostenBS);
brettspielListe.add(bs);
} else {
brettspielListe.add(bs);
k.removeFromList(m);
@ -331,9 +341,10 @@ public class Bibliothek {
Videospiel vs = (Videospiel) m;
double kostenVS = berechneGebühren(vs, kennnummer, rückgabeDatum);
String titelVS = vs.getTitel();
if(kostenVS>0) {BibliothekGUI.zahlungsFenster(kostenVS, titelVS, kennnummer, k);
videospielListe.add(vs);
k.removeFromList(m);
if(kostenVS>0) {BibliothekGUI.zahlungsFenster(kostenVS, titelVS, kennnummer, k);
k.addSchulden(kostenVS);
videospielListe.add(vs);
} else {
videospielListe.add(vs);
k.removeFromList(m);
@ -535,6 +546,7 @@ public class Bibliothek {
ArrayList<Medium> ausgeliehenListe = k.returnAusgelieheneMedien();
for(Medium m: ausgeliehenListe) {
if(m.getKennnummer() == kennnummer) {
if(m.getVerlängerungen() > 0) {
m.setVerlängerung();
datumVerlängern(m, k);
@ -568,6 +580,161 @@ public class Bibliothek {
}
}
public static Kunde findKunde(int kennnummer) {
for(Kunde k: kundenListe) {
ArrayList<Medium> ausgelieheneMedienVonKunde = k.returnAusgelieheneMedien();
for(Medium m: ausgelieheneMedienVonKunde) {
if(m.getKennnummer() == kennnummer) {
return k;
}
}
}
return null;
}
public static void rückgabe2(int kennnummer, String rückgabeDatum, Kunde k) {
for(Medium m: katalog) {
if(m.getKennnummer() == kennnummer) {
String text = m.getClass().toString();
int lastDotIndex = text.lastIndexOf(".");
String substring = text.substring(lastDotIndex + 1);
switch (substring) {
case "Buch":
Buch b = (Buch) m;
double kostenBuch = berechneGebühren(b, kennnummer, rückgabeDatum);
String titelBuch = b.getTitel();
if(kostenBuch > 0) {
BibliothekGUI.zahlungsFenster2(kostenBuch, titelBuch, kennnummer, k);
k.addSchulden(kostenBuch);
bücherListe.add(b);
k.removeFromList(m);
} else if(kostenBuch == 0){
bücherListe.add(b);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "DVD":
DVD d = (DVD) m;
double kostenDVD = berechneGebühren(d, kennnummer, rückgabeDatum);
String titelDVD = d.getTitel();
if(kostenDVD>0) {BibliothekGUI.zahlungsFenster2(kostenDVD, titelDVD, kennnummer, k);
k.addSchulden(kostenDVD);
dvdListe.add(d);
k.removeFromList(m);
} else {
dvdListe.add(d);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "CD":
CD c = (CD) m;
double kostenCD = berechneGebühren(c, kennnummer, rückgabeDatum);
String titelCD = c.getTitel();
if(kostenCD>0) {BibliothekGUI.zahlungsFenster2(kostenCD, titelCD, kennnummer, k);
k.addSchulden(kostenCD);
cdListe.add(c);
k.removeFromList(m);
} else {
cdListe.add(c);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "Brettspiel":
Brettspiel bs = (Brettspiel) m;
double kostenBS = berechneGebühren(bs, kennnummer, rückgabeDatum);
String titelBS = bs.getTitel();
if(kostenBS>0) {BibliothekGUI.zahlungsFenster2(kostenBS, titelBS, kennnummer, k);
k.addSchulden(kostenBS);
brettspielListe.add(bs);
k.removeFromList(m);
} else {
brettspielListe.add(bs);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "Videospiel":
Videospiel vs = (Videospiel) m;
double kostenVS = berechneGebühren(vs, kennnummer, rückgabeDatum);
String titelVS = vs.getTitel();
if(kostenVS>0) {BibliothekGUI.zahlungsFenster2(kostenVS, titelVS, kennnummer, k);
k.addSchulden(kostenVS);
videospielListe.add(vs);
k.removeFromList(m);
} else {
videospielListe.add(vs);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
default:
break;
}
}
}
}
public static ArrayList<JLabel> findMatchesFiltered(String searchTerm) {
ArrayList<JLabel> matches = new ArrayList<>();
for(Buch b: bücherListe) {
String titel = b.getTitel();
String autor = b.getAutor();
if(autor.contains(searchTerm) || titel.contains(searchTerm)) {
JLabel j = new JLabel("Buch namens: " + titel + " von " + b.getAutor() + " mit der Kennnummer: " + b.getKennnummer());
matches.add(j);
}
}
for(CD c: cdListe) {
String titel = c.getTitel();
if(titel.contains(searchTerm)) {
JLabel j = new JLabel("CD namens: " + titel + " mit der Kennnummer: " + c.getKennnummer());
matches.add(j);
}
}
for(DVD d: dvdListe) {
String titel = d.getTitel();
if(titel.contains(searchTerm)) {
JLabel j = new JLabel("DVD namens: " + titel + " mit der Kennnummer: " + d.getKennnummer());
matches.add(j);
}
}
for(Brettspiel bp: brettspielListe) {
String titel = bp.getTitel();
if(titel.contains(searchTerm)) {
JLabel j = new JLabel("Brettspiel namens: " + titel + " mit der Kennnummer: " + bp.getKennnummer());
matches.add(j);
}
}
for(Videospiel vs: videospielListe) {
String titel = vs.getTitel();
if(titel.contains(searchTerm)) {
JLabel j = new JLabel("Videospiel namens: " + titel + " mit der Kennnnummer: " + vs.getKennnummer());
matches.add(j);
}
}
return matches;
}
public static ArrayList<JLabel> findMatchesUnfiltered(String searchTerm) {
ArrayList<JLabel> matches = new ArrayList<>();
for(Medium m: katalog) {
String titel = m.getTitel();
if(titel.contains(searchTerm)) {
String text = m.getClass().toString();
int lastDotIndex = text.lastIndexOf(".");
String substring = text.substring(lastDotIndex + 1);
int kennnummer = m.getKennnummer();
JLabel j = new JLabel(substring + " namens: " + titel + " mit der Kennnummer: " + kennnummer);
matches.add(j);
}
}
return matches;
}
}

View File

@ -2,7 +2,7 @@ package domainBib;
import java.util.ArrayList;
public class Kunde extends Benutzer {
public class Kunde {
private int kennnummer;
private boolean istStudent;
private double schulden;

View File

@ -13,24 +13,49 @@ public class BibliothekGUI extends JFrame implements ActionListener{
private static JPanel mainPanel = new JPanel(cl);
public static void main(String[] args) {
SwingUtilities.invokeLater(BibliothekGUI::new);
new BibliothekGUI();
}
public BibliothekGUI() {
Bibliothek.makeEntries();
JPanel dateGrid = new JPanel(new GridLayout(1,4,10,10));
JLabel dateEntry = new JLabel("Datum eingeben: ");
String[] datumArray = {""};
JTextField dateInput = new JTextField(20);
JButton dateButton = new JButton("OK");
dateGrid.add(dateEntry);
dateGrid.add(dateInput);
dateGrid.add(dateButton);
JPanel loginPanel = new JPanel(new BorderLayout());
JLabel text1 = new JLabel("Login mit Kennnummer:");
loginPanel.add(text1, BorderLayout.NORTH);
dateButton.addActionListener(e -> {
if(datumArray[0] != "") {
dateGrid.remove(dateGrid.getComponentCount() -1);
String newDate1 = dateInput.getText().toString();
datumArray[0] = newDate1;
JLabel dateState1 = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState1);
dateGrid.revalidate();
} else {
String newDate = dateInput.getText().toString();
datumArray[0] = newDate;
JLabel dateState = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState);
dateGrid.revalidate();
}
});
loginPanel.add(dateGrid, BorderLayout.NORTH);
JLabel text1 = new JLabel("Login mit Kennnummer: ");
JPanel loginGrid = new JPanel(new BorderLayout());
loginGrid.add(text1, BorderLayout.NORTH);
JTextField field1 = new JTextField(20);
loginGrid.add(field1);
loginPanel.add(loginGrid, BorderLayout.CENTER);
JButton b0 = new JButton("Registrieren");
b0.addActionListener(e -> { nutzerAnlegen();});
JButton b3 = new JButton("Ohne Anmeldung fortfahren");
b3.addActionListener(e -> {
browseMedia();
});
b3.addActionListener(e -> {browseMedia(datumArray[0]);});
JPanel buttonGrid = new JPanel(new GridLayout(1,2,10,10));
buttonGrid.add(b0);
buttonGrid.add(b3);
@ -47,7 +72,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
String text = k.getClass().toString();
int lastDotIndex = text.lastIndexOf(".");
String substring = text.substring(lastDotIndex + 1);
if(substring.equals("Kunde")) {openMainMenu(k);}
if(substring.equals("Kunde")) {openMainMenu(k, datumArray[0]);}
}});
bp.add(b1);
bp.add(b2);
@ -60,8 +85,53 @@ public class BibliothekGUI extends JFrame implements ActionListener{
cl.show(mainPanel, "loginPanel");
}
private void browseMedia() {
JPanel browsePanel = new JPanel(new GridLayout(6, 1, 10, 10));
private static void openMainMenu(Kunde k, String datum) {
JPanel mediumPanel = new JPanel(new GridLayout(7, 1, 10, 10));
JPanel dateGrid = new JPanel(new GridLayout(1,4,10,10));
JLabel dateEntry = new JLabel("Datum eingeben: ");
String[] datumArray = {datum};
JTextField dateInput = new JTextField(20);
JButton dateButton = new JButton("OK");
dateGrid.add(dateEntry);
dateGrid.add(dateInput);
dateGrid.add(dateButton);
JLabel dateState1 = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState1);
dateButton.addActionListener(e -> {
String newDate = dateInput.getText().toString();
datumArray[0] = newDate;
JLabel dateState = new JLabel("Datum: " + datumArray[0]);
dateGrid.remove(dateState1);
dateGrid.add(dateState);
dateGrid.revalidate();
});
mediumPanel.add(dateGrid, BorderLayout.NORTH);
JButton b0 = new JButton("Medien durchsuchen");
b0.addActionListener(e -> { medienDurchsuchenMenu(k);});
JButton b1 = new JButton("Ausleihe");
b1.addActionListener(e -> ausleihenMenü(k, datumArray[0]));
JButton b2 = new JButton("Rückgabe");
b2.addActionListener(e -> rückgabeMenü(k, datumArray[0]));
JButton b3 = new JButton("Meine Ausgeliehenen Medien");
b3.addActionListener(e -> myBooks(k));
JButton b4 = new JButton("Verlängern");
b4.addActionListener(e -> verlängern(k, datumArray[0]));
JButton b5= new JButton("Ausloggen");
b5.addActionListener(e -> cl.show(mainPanel, "loginPanel"));
mediumPanel.add(b0);
mediumPanel.add(b1);
mediumPanel.add(b2);
mediumPanel.add(b3);
mediumPanel.add(b4);
mediumPanel.add(b5);
mainPanel.add(mediumPanel, "mediumPanel");
cl.show(mainPanel, "mediumPanel");
}
private void browseMedia(String datum) {
JPanel browsePanel = new JPanel(new GridLayout(7, 1, 10, 10));
JButton b1 = new JButton("Bücher");
Kunde k = null;
b1.addActionListener(e -> bookMenu(k));
@ -73,18 +143,67 @@ public class BibliothekGUI extends JFrame implements ActionListener{
b4.addActionListener(e -> bsMenu(k));
JButton b5 = new JButton("Videospiele");
b5.addActionListener(e -> vsMenu(k));
JButton b6 = new JButton("OK");
b6.addActionListener(e -> cl.show(mainPanel, "loginPanel"));
JButton b6 = new JButton("Rückgabe");
b6.addActionListener(e -> { rückgabeOhneUserID(datum);});
JButton b7 = new JButton("Zurück");
b7.addActionListener(e -> cl.show(mainPanel, "loginPanel"));
browsePanel.add(b1);
browsePanel.add(b2);
browsePanel.add(b3);
browsePanel.add(b4);
browsePanel.add(b5);
browsePanel.add(b6);
browsePanel.add(b7);
mainPanel.add(browsePanel, "browsePanel");
cl.show(mainPanel, "browsePanel");
}
private void rückgabeOhneUserID(String datum) {
JPanel rückgabeOhneIdMenü = new JPanel(new BorderLayout());
//NORTH
JPanel dateGrid = new JPanel(new GridLayout(1,4,10,10));
JLabel dateEntry = new JLabel("Datum eingeben: ");
String[] datumArray = {datum};
JTextField dateInput = new JTextField(20);
JButton dateButton = new JButton("OK");
dateGrid.add(dateEntry);
dateGrid.add(dateInput);
dateGrid.add(dateButton);
JLabel dateState1 = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState1);
dateButton.addActionListener(e -> {
String newDate = dateInput.getText().toString();
datumArray[0] = newDate;
JLabel dateState = new JLabel("Datum: " + datumArray[0]);
dateGrid.remove(dateState1);
dateGrid.add(dateState);
dateGrid.revalidate();
});
rückgabeOhneIdMenü.add(dateGrid, BorderLayout.NORTH);
//CENTER
JPanel inputMenu = new JPanel(new GridLayout(2, 1, 10, 10));
JLabel text1 = new JLabel("Zu ausleihende Kennnummer des Mediums eingeben:");
JTextField inputField1 = new JTextField(20);
inputMenu.add(text1);
inputMenu.add(inputField1);
rückgabeOhneIdMenü.add(inputMenu, BorderLayout.CENTER);
//SOUTH
JPanel buttonGrid = new JPanel(new GridLayout(1, 2, 10,10));
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
JButton b2 = new JButton("OK");
buttonGrid.add(b1);
buttonGrid.add(b2);
rückgabeOhneIdMenü.add(buttonGrid, BorderLayout.SOUTH);
b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField1.getText());
Kunde k = Bibliothek.findKunde(kennnummer);
Bibliothek.rückgabe2(kennnummer, datumArray[0], k);
});
mainPanel.add(rückgabeOhneIdMenü, "Rückgabe1");
cl.show(mainPanel, "Rückgabe1");
}
private void nutzerAnlegen() {
JPanel registerMenu = new JPanel(new BorderLayout());
int newKennnummer = Bibliothek.getNewKennnummer();
@ -195,10 +314,10 @@ public class BibliothekGUI extends JFrame implements ActionListener{
cl.show(mainPanel, "changeOwed");
}
private static void openMainMenu(Kunde k) {
JPanel mediumPanel = new JPanel(new GridLayout(12, 1, 10, 10));
JLabel text1 = new JLabel("Ihre Kennnnummer: " + k.getKennnummer());
mediumPanel.add(text1);
private static void medienDurchsuchenMenu(Kunde k) {
JPanel suchenPanel = new JPanel(new GridLayout(7,1,10,10));
JButton b0 = new JButton("Stichwortsuche");
b0.addActionListener(e -> searchMenu(k));
JButton b1 = new JButton("Bücher");
b1.addActionListener(e -> bookMenu(k));
JButton b2 = new JButton("DVDs");
@ -209,34 +328,93 @@ public class BibliothekGUI extends JFrame implements ActionListener{
b4.addActionListener(e -> bsMenu(k));
JButton b5 = new JButton("Videospiele");
b5.addActionListener(e -> vsMenu(k));
JButton b6 = new JButton("Ausleihe");
b6.addActionListener(e -> ausleihenMenü(k));
JButton b7 = new JButton("Rückgabe");
b7.addActionListener(e -> rückgabeMenü(k));
JButton b8 = new JButton("Meine Ausgeliehenen Medien");
b8.addActionListener(e -> myBooks(k));
JButton b9 = new JButton("Verlängern");
b9.addActionListener(e -> verlängern(k));
JButton b10 = new JButton("Meine Schulden abbezahlen");
b10.addActionListener(e -> schuldenBegleichen(k));
JButton b11 = new JButton("Ausloggen");
b11.addActionListener(e -> cl.show(mainPanel, "loginPanel"));
mediumPanel.add(b1);
mediumPanel.add(b2);
mediumPanel.add(b3);
mediumPanel.add(b4);
mediumPanel.add(b5);
mediumPanel.add(b6);
mediumPanel.add(b7);
mediumPanel.add(b8);
mediumPanel.add(b9);
mediumPanel.add(b10);
mediumPanel.add(b11);
mainPanel.add(mediumPanel, "mediumPanel");
cl.show(mainPanel, "mediumPanel");
JButton b6 = new JButton("Zurück");
b6.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
suchenPanel.add(b0);
suchenPanel.add(b1);
suchenPanel.add(b2);
suchenPanel.add(b3);
suchenPanel.add(b4);
suchenPanel.add(b5);
suchenPanel.add(b6);
mainPanel.add(suchenPanel, "suchenMenu");
cl.show(mainPanel, "suchenMenu");
}
private static void verlängern(Kunde k) {
private static void searchMenu(Kunde k) {
JPanel mainSearch = new JPanel(new BorderLayout());
//NORTH: Search bar
JPanel enterSearch = new JPanel(new GridLayout(1,3,10,10));
JLabel text0 = new JLabel("Geben Sie einen Suchbegriff ein:");
JTextField enterSearchTerm = new JTextField(20);
//Hilfe von ChatGPT, da ich nicht wusste wie ich eine Checkbox hinzufüge und abhöre, ob
//sie gedrückt ist oder nicht box0.isSelected();)
JCheckBox box0 = new JCheckBox("Nur ausleihbare Medien anzeigen");
enterSearch.add(text0);
enterSearch.add(enterSearchTerm);
enterSearch.add(box0);
mainSearch.add(enterSearch, BorderLayout.NORTH);
//CENTER: Matched media
mainSearch.revalidate();
int[] doThis = {0};
box0.addActionListener(e -> {
if(box0.isSelected() == true) {
String searchTerm = enterSearchTerm.getText().toString();
ArrayList<JLabel> matchedMedia = Bibliothek.findMatchesFiltered(searchTerm);
int i = matchedMedia.size();
if(i == 0) {
JLabel text1 = new JLabel("Nichts passendes zu dem Suchbegriff " + searchTerm + " gefunden.");
mainSearch.revalidate();
mainSearch.add(text1, BorderLayout.CENTER);
mainSearch.revalidate();
System.out.println("UNFIL");
} else if (i > 0){
JPanel ergebnisPanel = new JPanel(new GridLayout(i, 1, 10,10));
for(JLabel j: matchedMedia) {
ergebnisPanel.add(j);
}
mainSearch.revalidate();
mainSearch.add(ergebnisPanel, BorderLayout.CENTER);
mainSearch.revalidate();
}
mainSearch.revalidate();
doThis[0] = 0;
}
else if(box0.isSelected() == false){
String searchTerm = enterSearchTerm.getText().toString();
ArrayList<JLabel> matchedMedia = Bibliothek.findMatchesUnfiltered(searchTerm);
int i = matchedMedia.size();
if(i == 0) {
JLabel text1 = new JLabel("Nichts passendes zu dem Suchbegriff " + searchTerm + " gefunden.");
mainSearch.revalidate();
mainSearch.add(text1, BorderLayout.CENTER);
mainSearch.revalidate();
System.out.println("FIL");
} else if (i > 0){
JPanel ergebnisPanel = new JPanel(new GridLayout(i, 1, 10,10));
for(JLabel j: matchedMedia) {
ergebnisPanel.add(j);
}
mainSearch.revalidate();
mainSearch.add(ergebnisPanel, BorderLayout.CENTER);
mainSearch.revalidate();
}
mainSearch.revalidate();
doThis[0] = 0;
}
});
mainSearch.revalidate();
//SOUTH: OK Button to return
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "suchenMenu"));
mainSearch.add(b1, BorderLayout.SOUTH);
mainPanel.add(mainSearch, "Stichwort");
cl.show(mainPanel, "Stichwort");
}
private static void verlängern(Kunde k, String datumArray) {
JPanel verlängerungPanel = new JPanel(new BorderLayout());
JLabel text0 = new JLabel("Geben Sie die Kennnumer des Mediums ein, dessen Rückgabezeit sie verlängern möchten.");
JTextField inputField = new JTextField(20);
@ -313,95 +491,95 @@ public class BibliothekGUI extends JFrame implements ActionListener{
cl.show(mainPanel, "Verlängerung2");
}
private static void schuldenBegleichen(Kunde k) {
JPanel schuldenMenü = new JPanel(new BorderLayout());
double schulden = k.getSchulden();
if(schulden > 0) {
JLabel text0 = new JLabel("Sie haben " + schulden + "€ Schulden. Geben Sie unten ein, wie viel Sie zahlen möchten.");
JTextField inputField1 = new JTextField(20);
JButton b1 = new JButton("OK");
schuldenMenü.add(text0, BorderLayout.NORTH);
schuldenMenü.add(inputField1, BorderLayout.CENTER);
JPanel buttonGrid = new JPanel(new GridLayout(1,2,10,10));
JButton b2 = new JButton("Abbrechen");
b2.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
buttonGrid.add(b2);
buttonGrid.add(b1);
schuldenMenü.add(buttonGrid, BorderLayout.SOUTH);
b1.addActionListener(e -> {
int einzahlung = Integer.parseInt(inputField1.getText());
double newSchulden = schulden - einzahlung;
k.setSchulden(newSchulden);
cl.show(mainPanel, "mediumPanel");
});
} else if(schulden <= 0){
JLabel text0 = new JLabel("Sie haben keine Schulden.");
JLabel text1 = new JLabel("Ihr Guthaben beträgt " + schulden*(-1) + "€.");
JButton b1 = new JButton("OK");
schuldenMenü.add(text0, BorderLayout.NORTH);
schuldenMenü.add(text1, BorderLayout.CENTER);
schuldenMenü.add(b1, BorderLayout.SOUTH);
b1.addActionListener(e -> {
cl.show(mainPanel, "mediumPanel");
});
}
mainPanel.add(schuldenMenü, "Schulden");
cl.show(mainPanel, "Schulden");
}
private static void ausleihenMenü(Kunde k) {
private static void ausleihenMenü(Kunde k, String datum) {
JPanel ausleihMenü = new JPanel(new BorderLayout());
JPanel inputMenu = new JPanel(new GridLayout(4, 1, 10, 10));
//NORTH
JPanel dateGrid = new JPanel(new GridLayout(1,4,10,10));
JLabel dateEntry = new JLabel("Datum eingeben: ");
String[] datumArray = {datum};
JTextField dateInput = new JTextField(20);
JButton dateButton = new JButton("OK");
dateGrid.add(dateEntry);
dateGrid.add(dateInput);
dateGrid.add(dateButton);
JLabel dateState1 = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState1);
dateButton.addActionListener(e -> {
String newDate = dateInput.getText().toString();
datumArray[0] = newDate;
JLabel dateState = new JLabel("Datum: " + datumArray[0]);
dateGrid.remove(dateState1);
dateGrid.add(dateState);
dateGrid.revalidate();
});
ausleihMenü.add(dateGrid, BorderLayout.NORTH);
//CENTER
JPanel inputMenu = new JPanel(new GridLayout(2, 1, 10, 10));
JLabel text1 = new JLabel("Zu ausleihende Kennnummer des Mediums eingeben:");
JTextField inputField1 = new JTextField(20);
JLabel text2 = new JLabel("Datum eingeben:");
JTextField inputField2 = new JTextField(20);
inputMenu.add(text1);
inputMenu.add(inputField1);
inputMenu.add(text2);
inputMenu.add(inputField2);
ausleihMenü.add(inputMenu, BorderLayout.CENTER);
//SOUTH
JPanel buttonGrid = new JPanel(new GridLayout(1, 2, 10,10));
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
JButton b2 = new JButton("OK");
b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField1.getText());
String ausleihDatum = inputField2.getText().toString();
Bibliothek.ausleihe(kennnummer, ausleihDatum, k);
cl.show(mainPanel, "mediumPanel");
});
buttonGrid.add(b1);
buttonGrid.add(b2);
ausleihMenü.add(buttonGrid, BorderLayout.SOUTH);
b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField1.getText());
Bibliothek.ausleihe(kennnummer, datumArray[0], k);
cl.show(mainPanel, "mediumPanel");
});
mainPanel.add(ausleihMenü, "Ausleihen");
cl.show(mainPanel, "Ausleihen");
}
private static void rückgabeMenü(Kunde k) {
private static void rückgabeMenü(Kunde k, String datum) {
JPanel rückgabeMenü = new JPanel(new BorderLayout());
JPanel inputMenu = new JPanel(new GridLayout(4,1,10,10));
JLabel text1 = new JLabel("Kennnummer des Mediums zur Rückgabe eingeben:");
//NORTH
JPanel dateGrid = new JPanel(new GridLayout(1,4,10,10));
JLabel dateEntry = new JLabel("Datum eingeben: ");
String[] datumArray = {datum};
JTextField dateInput = new JTextField(20);
JButton dateButton = new JButton("OK");
dateGrid.add(dateEntry);
dateGrid.add(dateInput);
dateGrid.add(dateButton);
JLabel dateState1 = new JLabel("Datum: " + datumArray[0]);
dateGrid.add(dateState1);
dateButton.addActionListener(e -> {
String newDate = dateInput.getText().toString();
datumArray[0] = newDate;
JLabel dateState = new JLabel("Datum: " + datumArray[0]);
dateGrid.remove(dateState1);
dateGrid.add(dateState);
dateGrid.revalidate();
});
rückgabeMenü.add(dateGrid, BorderLayout.NORTH);
//CENTER
JPanel inputMenu = new JPanel(new GridLayout(2, 1, 10, 10));
JLabel text1 = new JLabel("Zu ausleihende Kennnummer des Mediums eingeben:");
JTextField inputField1 = new JTextField(20);
JLabel text2 = new JLabel("Datum eingeben:");
JTextField inputField2 = new JTextField(20);
inputMenu.add(text1);
inputMenu.add(inputField1);
inputMenu.add(text2);
inputMenu.add(inputField2);
rückgabeMenü.add(inputMenu, BorderLayout.CENTER);;
rückgabeMenü.add(inputMenu, BorderLayout.CENTER);
//SOUTH
JPanel buttonGrid = new JPanel(new GridLayout(1, 2, 10,10));
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
JButton b2 = new JButton("OK");
b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField1.getText());
String rückgabeDatum = inputField2.getText().toString();
Bibliothek.rückgabe(kennnummer, rückgabeDatum, k);
});
buttonGrid.add(b1);
buttonGrid.add(b2);
rückgabeMenü.add(buttonGrid, BorderLayout.SOUTH);
b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField1.getText());
Bibliothek.rückgabe(kennnummer, datumArray[0], k);
});
mainPanel.add(rückgabeMenü, "Rückgabe");
cl.show(mainPanel, "Rückgabe");
}
@ -420,7 +598,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "mediumPanel");}
cl.show(mainPanel, "suchenMenu");}
});
buchMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(buchMenü, "Bücher");
@ -441,7 +619,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "mediumPanel");}
cl.show(mainPanel, "suchenMenu");}
});
dvdMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(dvdMenü, "DVDs");
@ -462,7 +640,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "mediumPanel");}
cl.show(mainPanel, "suchenMenu");}
}); cdMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(cdMenü, "CDs");
cl.show(mainPanel, "CDs");
@ -482,7 +660,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "mediumPanel");}
cl.show(mainPanel, "suchenMenu");}
}); bsMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(bsMenü, "Brettspiele");
cl.show(mainPanel, "Brettspiele");
@ -502,7 +680,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "mediumPanel");}
cl.show(mainPanel, "suchenMenu");}
}); vsMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(vsMenü, "Videospiele");
cl.show(mainPanel, "Videospiele");
@ -532,52 +710,37 @@ public class BibliothekGUI extends JFrame implements ActionListener{
public static void zahlungsFenster(double kosten, String titel, int kennnummer, Kunde k) {
JPanel zahlungPanel = new JPanel(new BorderLayout());
JLabel text1 = new JLabel("Sie schulden für das Buch " + titel + " mit der Kennnummer " + kennnummer + " " + kosten + "€.");
zahlungPanel.add(text1, BorderLayout.NORTH);
JPanel zahlungPanelMitte = new JPanel(new GridLayout(2,1,10,10));
JLabel text3 = new JLabel("Geben Sie ein wieviel sie zahlen:");
zahlungPanelMitte.add(text3);
JTextField inputField1 = new JTextField(20);
zahlungPanelMitte.add(inputField1);
zahlungPanel.add(zahlungPanelMitte, BorderLayout.CENTER);
//CENTER
JLabel text1 = new JLabel("Sie schulden für das Buch " + titel + " mit der Kennnummer " + kennnummer + " " + kosten + "€. Bitte zahlen Sie die Gebühren an der Kasse.");
zahlungPanel.add(text1, BorderLayout.CENTER);
//SOUTH
JButton b1 = new JButton("OK");
zahlungPanel.add(b1, BorderLayout.SOUTH);
mainPanel.add(zahlungPanel,"Zahlung1");
cl.show(mainPanel, "Zahlung1");
b1.addActionListener(e -> {
String paymentString = inputField1.getText().toString();
zahlungStatus(paymentString, kosten, k);
myBooks(k);
});
mainPanel.add(zahlungPanel,"Zahlung");
cl.show(mainPanel, "Zahlung");
}
private static void zahlungStatus(String zahlungStr, double kosten, Kunde k) {
int zahlung = Integer.parseInt(zahlungStr);
boolean zahlungErfolgreich = Bibliothek.zahlungRegistrieren(zahlung, kosten);
JPanel zahlungStatusPanel = new JPanel(new BorderLayout());
JLabel text2 = new JLabel("Zahlungsstatus:");
zahlungStatusPanel.add(text2, BorderLayout.NORTH);
JButton b2 = new JButton("OK");
zahlungStatusPanel.add(b2, BorderLayout.SOUTH);
if(zahlungErfolgreich == true) {
JLabel text4 = new JLabel("Zahlung war erfolgreich!");
zahlungStatusPanel.add(text4, BorderLayout.CENTER);
k.setSchulden(kosten - zahlung);
} else {
k.setSchulden(kosten - zahlung);
double schulden = k.getSchulden();
JLabel text4 = new JLabel("Zahlung fehlgeschlagen! Ihnen wurden " + schulden + "€ Schulden zugeschrieben.");
zahlungStatusPanel.add(text4, BorderLayout.CENTER);
}
mainPanel.add(zahlungStatusPanel, "Zahlung2");
cl.show(mainPanel, "Zahlung2");
b2.addActionListener(e -> {
cl.show(mainPanel, "mediumPanel");
});
}
public static void noMoneyOwed() {
cl.show(mainPanel, "mediumPanel");
}
public static void zahlungsFenster2(double kosten, String titel, int kennnummer, Kunde k) {
JPanel zahlungPanel = new JPanel(new BorderLayout());
//CENTER
JLabel text1 = new JLabel("Sie schulden für das Buch " + titel + " mit der Kennnummer " + kennnummer + " " + kosten + "€. Bitte zahlen Sie die Gebühren an der Kasse.");
zahlungPanel.add(text1, BorderLayout.CENTER);
//SOUTH
JButton b1 = new JButton("OK");
zahlungPanel.add(b1, BorderLayout.SOUTH);
b1.addActionListener(e -> {
cl.show(mainPanel, "browsePanel");
});
mainPanel.add(zahlungPanel,"Zahlung2");
cl.show(mainPanel, "Zahlung2");
}
}

1
PR2Bibliothekk 160000

@ -0,0 +1 @@
Subproject commit 46975a289a6313a2d2a9346ca60a34a1f97e92df

50
fragen.txt 100644
View File

@ -0,0 +1,50 @@
Antworten:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
°°°°Preisermäßigung für Studenten bei Preisen:
Schüler 50% Rabatt bei Jahresrabatt, nicht bei Überzug der Ausleihdauer
°°°°Zahlungsvalidierung: zahlPanel nach Rückgabe wegmachen, schulden werden aufaddiert, admin loggt sich ein um zu clearen
Außerdem: "Meine Schulden abbezahlen" wegmachen
°°°°Bei Rückgabe: keine Anmeldung notwendig, sondern nur ID des Mediums eingeben.
°°°°Bei Verlängerung: Nur als angemeldeter Nutzer
°°°°Kann es ein Buch mehrmals geben?
Ja, jedes mal aber eine eigene ID mit eigener Buch-Instanz
°°°°Bei Rückgabe ohne Anmeldung:
Zugriff auf meine ausgeliehenen Medien nach der Rückgabe soll nicht möglich sein
(Als Übung trotzdem hinzufügen, neue myBooks methode schreiben, die ohne Anmeldung funktioniert)
°°°°Bei Ausleihen: Zur Liste von ALLEN ausgeliehen Medien (von Allen Kunden) hinzufpgen, soll für Admin ersichtlich sein. Auch: Nutzer-ID sehen.
--> Neue Ausleihe Klasse mit Parameter Medium-ID, Kunde-ID, Datum, Verlängerungen
--> Neue Ausleihe zum Zeitpunkt der Ausleihe erstellen mit Medium-ID, Kunde-ID, Datum, Verlängerungen
--> Bei Verlängerungen auch in der Ausleihe Klasse verändern
--> ODER: Zu jedem Medium eine neue Variable USER-ID, sodass das Buch weiss bei wem es ist
--> Maybe boolean(istAusgeliehen) für alle Medien
°°°°(Bücher, CD, DVD, Brettspiel, Videospiel) Panel für Nutzer:
Auch ausgeliehene Instanzen anzeigen, zeigen bis wann es ausgeliehen ist (mit Verlänerungen)
°°°°Uhrzeit als Systemuhrzeit umsetzen:
"Um die Jahresgebühren und Ausleihfristen zu simulieren, soll es über das UI möglich sein, das Datum,
mit dem das System arbeiten soll, zu ändern."
-->Nicht
°°°°Verlängerung nach Rückgabedatum:
--> Nicht möglich!
°°°°Neue Bücher über UI:
--> Nicht notwendig!
°°°°Stichwortsuche:
Nutzer gibt "des Lebens ein"
Ausgabe: "XYZ des Lebens, Buch, Kennnummer abc1"
"Spiel des Lebens, Brettspiiel, Kennnummer abc2"
...
°°°°Filter in der Medienliste:
Alles war da ist, alles was ausgeliehen ist bis[Datum], nach Medienart filtern etc.

58
ki-chatgpt/ki1.txt 100644
View File

@ -0,0 +1,58 @@
prompt:
habe einen error in eclipse, nämlioch git rejected - non fast forward
antwort:
Der Fehler "Git rejected - non-fast-forward" bedeutet, dass dein lokales Repository versucht, Änderungen zu pushen, die mit dem aktuellen Stand des Remote-Branches nicht kompatibel sind. Dies passiert häufig, wenn der Remote-Branch Änderungen enthält, die du lokal nicht hast. Git erlaubt standardmäßig keine "non-fast-forward"-Pushes, um zu verhindern, dass Änderungen überschrieben werden.
Schritte zur Behebung
Pull die neuesten Änderungen aus dem Remote-Branch:
php
Code kopieren
git pull origin <branch-name>
Dies zieht die neuesten Änderungen vom Remote-Repository in dein lokales Repository.
Behebe mögliche Merge-Konflikte: Falls es Konflikte gibt, zeigt Git an, welche Dateien betroffen sind. Bearbeite diese Dateien, löse die Konflikte, und führe dann einen Commit aus:
sql
Code kopieren
git add <konflikt-dateien>
git commit -m "Konflikte gelöst"
Push die Änderungen erneut: Nachdem du den lokalen Branch mit dem Remote-Branch synchronisiert hast, kannst du erneut pushen:
perl
Code kopieren
git push origin <branch-name>
Alternativen und zusätzliche Optionen
Force Push (nur verwenden, wenn du sicher bist, dass du den Remote-Branch überschreiben möchtest):
css
Code kopieren
git push --force origin <branch-name>
⚠️ Achtung: Ein Force Push kann Änderungen anderer Entwickler überschreiben und sollte mit Vorsicht verwendet werden.
Rebase verwenden (für eine sauberere Historie): Wenn du deine Änderungen vor die aktuellen Remote-Änderungen setzen möchtest:
php
Code kopieren
git fetch origin
git rebase origin/<branch-name>
Danach kannst du die Änderungen pushen:
perl
Code kopieren
git push origin <branch-name>
In Eclipse:
Falls du Git über Eclipse nutzt, kannst du folgendes tun:
Pull durchführen:
Klicke mit der rechten Maustaste auf dein Projekt.
Wähle Team > Pull.
Konflikte lösen:
Falls Konflikte auftreten, werden diese in der "Git Staging"-Ansicht angezeigt. Bearbeite die Konflikte und committe die Änderungen.
Push erneut versuchen:
Gehe zu Team > Push to Upstream.
Falls es immer noch Probleme gibt, überprüfe, ob du die korrekten Branches verwendest.

20
ki-chatgpt/ki2.txt 100644
View File

@ -0,0 +1,20 @@
prompt:
wie kann ich in localdate in java 28 tage hinzufügen
antwort:
In Java kannst du zur LocalDate-Klasse 28 Tage hinzufügen, indem du die Methode .plusDays(28) verwendest. Hier ist ein Beispiel:
java
Code kopieren
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate heutigesDatum = LocalDate.now();
LocalDate neuesDatum = heutigesDatum.plusDays(28);
System.out.println("Heutiges Datum: " + heutigesDatum);
System.out.println("Datum in 28 Tagen: " + neuesDatum);
}
}
In diesem Beispiel wird das heutige Datum um 28 Tage verschoben, und das Ergebnis wird in neuesDatum gespeichert.

14
ki-chatgpt/ki3.txt 100644
View File

@ -0,0 +1,14 @@
prompt:
how to get the last part of the string fjwaifa.fwwafaw.buch
antwort:
To get the last part of the string "fjwaifa.fwwafaw.buch" in many programming languages, you can split the string by the dot (".") and access the last element.
java
Code kopieren
String string = "fjwaifa.fwwafaw.buch";
String[] parts = string.split("\\.");
String lastPart = parts[parts.length - 1];
System.out.println(lastPart); // Output: buch
The code splits the string into parts at each "." and retrieves the last element, which is "buch".

45
ki-chatgpt/ki4.txt 100644
View File

@ -0,0 +1,45 @@
prompt:
how can i add a checkbox to java swing
antwort:
In Java Swing, you can add a checkbox using the JCheckBox class. Heres a basic example:
java
Code kopieren
import javax.swing.*;
import java.awt.event.*;
public class CheckboxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Checkbox Example");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
// Create a checkbox
JCheckBox checkbox = new JCheckBox("Accept Terms and Conditions");
checkbox.setBounds(50, 50, 200, 30);
// Add an action listener to respond to checkbox state changes
checkbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkbox.isSelected()) {
System.out.println("Checkbox selected");
} else {
System.out.println("Checkbox deselected");
}
}
});
// Add checkbox to the frame
frame.add(checkbox);
frame.setVisible(true);
}
}
Explanation:
JCheckBox Creation: JCheckBox checkbox = new JCheckBox("Label") creates a checkbox with a label.
Positioning: checkbox.setBounds(x, y, width, height) positions the checkbox in the frame.
Action Listener: To respond to state changes, we add an ActionListener which checks if the checkbox is selected using checkbox.isSelected().
Add to Frame: The checkbox is added to the frame using frame.add(checkbox).
This code opens a simple window with a checkbox, and selecting or deselecting it prints a message to the console.

18
vorgehen.txt 100644
View File

@ -0,0 +1,18 @@
-Trennung in domain und gui Package
-abstrakte Methode Medium anlegen
-Unterklassen Buch, CD etc. anlegen die von Medium erben
-Kunde-Klasse anlegen
-ArrayLists für Medien und Nutzer anlegen
-Nutzer im Code anlegen
-login Panel in GUI anlegen
-Methode für den login in main Klasse schreiben
-Feature einbauen, das alle Medien auflistet
-Feature einbauen, das Ausleihe und Rückgabe ermöglicht
-Feature zum Sehen der ausgeliehenen Medien hinzufügen
-Ausleihe und Rückgabe um Datumseingabe erweitern, Gebühren berechnen feature hinzufügen
-Admin fenster hinzufügen
-Registrierung neuer Nutzer als Feature hinzufügen
-Verlängerung von Medien ermöglichen
-Liste aller Nutzer als Admin feature hinzufügen
-Gebühren von Nutzern überschreiben als Admin feature hinzufügen
-JUnit Tests schreiben