Compare commits

..

20 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
Berat Kocak 8b1904c138 added verlängerung as feature 2024-11-11 00:12:11 +01:00
Berat Kocak 560dca7110 added register new user feature 2024-11-10 19:06:24 +01:00
Berat Kocak db2ee4f093 added method to view library catalogue without logging in 2024-11-10 18:43:44 +01:00
15 changed files with 1062 additions and 244 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

@ -75,18 +75,24 @@ public class Bibliothek {
videospielListe.add(v4);
videospielListe.add(v5);
//Benutzer bn1 = new Mitarbeiter(1);
Kunde bn2 = new Kunde(true, 2);
Kunde bn3 = new Kunde(true, 3);
Kunde bn4 = new Kunde(false, 4);
Kunde bn5 = new Kunde(false, 5);
kundenListe.add(bn2);
kundenListe.add(bn3);
kundenListe.add(bn4);
kundenListe.add(bn5);
Kunde k1 = new Kunde(true, 1);
Kunde k2 = new Kunde(true, 2);
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);
kundenListe.add(k4);
kundenListe.add(k5);
for(Buch b: bücherListe) {
katalog.add(b);
katalog.add(b);
}
for(DVD d: dvdListe) {
katalog.add(d);
@ -99,7 +105,7 @@ public class Bibliothek {
}
for(Videospiel vs: videospielListe) {
katalog.add(vs);
}
}
}
public static Kunde validateLogin(int login) {
@ -206,14 +212,16 @@ public class Bibliothek {
+ ", Autor: " + m.getAutor()
+ ", Jahr: " + m.getJahr()
+ ", Kennnummer: " + m.getKennnummer()
+ ", ausgeliehen am: " + m.getAusleihdatum());
+ ", ausgeliehen am: " + m.getAusleihdatum()
+ ", Verlängerungen: " + m.getVerlängerungen());
jlabelList.add(med);
}
if(m.getAutor() == null) {
JLabel med = new JLabel("Titel: " + m.getTitel()
+ ", Jahr: " + m.getJahr()
+ ", Kennnummer: " +m.getKennnummer()
+ ", ausgeliehen am: " + m.getAusleihdatum());
+ ", ausgeliehen am: " + m.getAusleihdatum()
+ ", Verlängerungen: " + m.getVerlängerungen());
jlabelList.add(med);
}
}
@ -229,31 +237,31 @@ public class Bibliothek {
switch (substring) {
case "Buch":
Buch b = (Buch) m;
b.setAusleihDatum(datum);
b.setAusleihdatum(datum);
bücherListe.remove(b);
k.addToList(b);
break;
case "DVD":
DVD d = (DVD) m;
d.setAusleihDatum(datum);
d.setAusleihdatum(datum);
dvdListe.remove(d);
k.addToList(d);
break;
case "CD":
CD c = (CD) m;
c.setAusleihDatum(datum);
c.setAusleihdatum(datum);
cdListe.remove(c);
k.addToList(c);
break;
case "Brettspiel":
Brettspiel bs = (Brettspiel) m;
bs.setAusleihDatum(datum);
bs.setAusleihdatum(datum);
brettspielListe.remove(bs);
k.addToList(bs);
break;
case "Videospiel":
Videospiel vs = (Videospiel) m;
vs.setAusleihDatum(datum);
vs.setAusleihdatum(datum);
videospielListe.remove(vs);
k.addToList(vs);
break;
@ -276,60 +284,71 @@ 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);
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);
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.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);
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.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);
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.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);
BibliothekGUI.noMoneyOwed();
}
break;
default:
@ -359,7 +378,6 @@ public class Bibliothek {
tageAusgeliehen--;
}
}
System.out.println("Kosten: " + kosten);
return kosten;
}
@ -450,6 +468,7 @@ public class Bibliothek {
}
return kosten;
}
public static boolean zahlungRegistrieren(int zahlung, double kosten) {
boolean isTrue = false;
if(kosten - zahlung <= 0) {
@ -460,14 +479,10 @@ public class Bibliothek {
return isTrue;
}
private static double findDifference(String ausleihDatum, String rückgabeDatum) {
LocalDate ausgeliehenTag = LocalDate.parse(ausleihDatum, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
LocalDate rückgabeTag = LocalDate.parse(rückgabeDatum, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
double differenzInTagen = ChronoUnit.DAYS.between(ausgeliehenTag, rückgabeTag);
System.out.println(ausgeliehenTag);
System.out.println(rückgabeTag);
System.out.println("Tage: " + differenzInTagen);
return differenzInTagen;
}
@ -511,6 +526,216 @@ public class Bibliothek {
return jlabelList;
}
public static int getNewKennnummer() {
int newKennnummer = 0;
for(Kunde k: kundenListe) {
int nummer = k.getKennnummer();
if(nummer > newKennnummer) {
newKennnummer = nummer;
}
}
newKennnummer += 1;
return newKennnummer;
}
public static void addCustomer(Kunde k) {
kundenListe.add(k);
}
public static boolean verlängerungMöglich(int kennnummer, Kunde k) {
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);
return true;
} else {
return false;
}
}
}
return false;
}
private static void datumVerlängern(Medium m, Kunde k) {
String text = m.getClass().toString();
int lastDotIndex = text.lastIndexOf(".");
String substring = text.substring(lastDotIndex + 1);
String ausleihDatum = m.getAusleihdatum();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
LocalDate ausgeliehenTag = LocalDate.parse(ausleihDatum, formatter);
LocalDate neuerTag = ausgeliehenTag.plusDays(28);
String neuesAusleihDatum = neuerTag.format(formatter);
m.setAusleihdatum(neuesAusleihDatum);
}
public static void changeOwedMenu2(String kennnummerStr, int amount) {
int kennnummer = Integer.parseInt(kennnummerStr);
for(Kunde k: kundenListe) {
if(k.getKennnummer() == kennnummer) {
k.setSchulden(amount);
}
}
}
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

@ -7,12 +7,16 @@ abstract class Medium {
private int kennnummer;
private String autor;
private String ausleihDatum;
private int verlängerungen;
abstract public String getTitel();
abstract public int getJahr();
abstract public String getAusleihdatum();
abstract public void setAusleihdatum(String a);
abstract public int getKennnummer();
abstract public int getVerlängerungen();
abstract public void setVerlängerung();
public String getAutor(){
return null;
}
@ -25,6 +29,7 @@ class Buch extends Medium{
private String fälligkeitsDatum;
private int kennnummer;
private String ausleihDatum;
private int verlängerungen;
public Buch(String titel, int erscheinungsjahr, String autor, int kennnummer) {
this.titel = titel;
@ -32,12 +37,18 @@ class Buch extends Medium{
this.autor = autor;
this.fälligkeitsDatum = fälligkeitsDatum;
this.kennnummer = kennnummer;
this.verlängerungen = 3;
}
public String getTitel() {
return titel;
}
public int getVerlängerungen() {
return verlängerungen;
}
public int getJahr() {
return erscheinungsjahr;
}
@ -58,13 +69,17 @@ class Buch extends Medium{
return kennnummer;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihdatum() {
return ausleihDatum;
}
public void setVerlängerung() {
verlängerungen--;
}
public void setAusleihdatum(String datum) {
this.ausleihDatum = datum;
}
}
class DVD extends Medium{
@ -74,6 +89,7 @@ class DVD extends Medium{
private int kennnummer;
private String autor;
private String ausleihDatum;
private int verlängerungen;
public DVD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel;
@ -81,6 +97,7 @@ class DVD extends Medium{
this.fälligkeitsDatum = fälligkeitsDatum;
this.kennnummer = kennnummer;
this.autor = null;
this.verlängerungen = 0;
}
public String getTitel() {
@ -91,6 +108,18 @@ class DVD extends Medium{
return erscheinungsjahr;
}
public int getVerlängerungen() {
return verlängerungen;
}
public void setAusleihdatum(String datum) {
this.ausleihDatum = datum;
}
public void setVerlängerung() {
verlängerungen =- 1;
}
public String getAutor() {
return null;
}
@ -109,9 +138,6 @@ class DVD extends Medium{
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihdatum() {
return ausleihDatum;
@ -125,6 +151,7 @@ class CD extends Medium{
private int kennnummer;
private String autor;
private String ausleihDatum;
private int verlängerungen;
public CD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel;
@ -132,6 +159,14 @@ class CD extends Medium{
this.fälligkeitsDatum = fälligkeitsDatum;
this.kennnummer = kennnummer;
this.autor = null;
this.verlängerungen = 0;
}
public void setVerlängerung() {
verlängerungen =- 1;
}
public void setAusleihdatum(String datum) {
this.ausleihDatum = datum;
}
public String getTitel() {
@ -144,6 +179,9 @@ class CD extends Medium{
public String getAutor() {
return null;
}
public int getVerlängerungen() {
return verlängerungen;
}
public String getDatum() {
return fälligkeitsDatum;
@ -159,9 +197,6 @@ class CD extends Medium{
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihdatum() {
return ausleihDatum;
@ -175,6 +210,7 @@ class Brettspiel extends Medium{
private int kennnummer;
private String autor;
private String ausleihDatum;
private int verlängerungen;
public Brettspiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel;
@ -182,11 +218,15 @@ class Brettspiel extends Medium{
this.fälligkeitsDatum = fälligkeitsDatum;
this.kennnummer = kennnummer;
this.autor = null;
this.verlängerungen = 0;
}
public String getTitel() {
return titel;
}
public void setVerlängerung() {
verlängerungen =- 1;
}
public int getJahr() {
return erscheinungsjahr;
@ -199,7 +239,9 @@ class Brettspiel extends Medium{
public String getDatum() {
return fälligkeitsDatum;
}
public int getVerlängerungen() {
return verlängerungen;
}
public int getKennnummer() {
return kennnummer;
}
@ -210,7 +252,7 @@ class Brettspiel extends Medium{
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
public void setAusleihdatum(String datum) {
this.ausleihDatum = datum;
}
@ -226,6 +268,7 @@ class Videospiel extends Medium{
private int kennnummer;
private String autor;
private String ausleihDatum;
private int verlängerungen;
public Videospiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel;
@ -233,15 +276,25 @@ class Videospiel extends Medium{
this.fälligkeitsDatum = fälligkeitsDatum;
this.kennnummer = kennnummer;
this.autor = null;
this.verlängerungen = 1;
}
public void setAusleihdatum(String datum) {
this.ausleihDatum = datum;
}
public String getTitel() {
return titel;
}
public void setVerlängerung() {
verlängerungen =- 1;
}
public int getJahr() {
return erscheinungsjahr;
}
public int getVerlängerungen() {
return verlängerungen;
}
public String getAutor() {
return null;
@ -261,9 +314,6 @@ class Videospiel extends Medium{
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihdatum() {
return ausleihDatum;

View File

@ -13,16 +13,53 @@ 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);
loginPanel.add(field1, BorderLayout.CENTER);
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(datumArray[0]);});
JPanel buttonGrid = new JPanel(new GridLayout(1,2,10,10));
buttonGrid.add(b0);
buttonGrid.add(b3);
loginGrid.add(buttonGrid, BorderLayout.SOUTH);
JPanel bp = new JPanel(new GridLayout(1,2,10,10));
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> dispose());
@ -35,19 +72,174 @@ 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);
loginPanel.add(bp, BorderLayout.SOUTH);
add(mainPanel);
setVisible(true);
setSize(600, 600);
setSize(1200, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainPanel.add(loginPanel, "loginPanel");
cl.show(mainPanel, "loginPanel");
}
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));
JButton b2 = new JButton("DVDs");
b2.addActionListener(e -> dvdMenu(k));
JButton b3 = new JButton("CDs");
b3.addActionListener(e -> cdMenu(k));
JButton b4 = new JButton("Brettspiele");
b4.addActionListener(e -> bsMenu(k));
JButton b5 = new JButton("Videospiele");
b5.addActionListener(e -> vsMenu(k));
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();
JPanel registerPanel = new JPanel(new GridLayout(3,1,10,10));
JLabel text0 = new JLabel("Ihre Kennnummmer wird " + newKennnummer + " sein.");
JLabel text1 = new JLabel("Die Mitgliedsgebühren betragen 10€ jährlich, für Studenten 5€.");
JCheckBox studentOrNot = new JCheckBox("Sind Sie Student? Falls ja bitte anklicken.");
registerPanel.add(text0);
registerPanel.add(text1);
registerPanel.add(studentOrNot);
registerMenu.add(registerPanel, BorderLayout.CENTER);
final boolean[] isStudent = {false};
studentOrNot.addActionListener(e -> isStudent[0] = studentOrNot.isSelected());
JPanel bg = new JPanel(new GridLayout(1,2,10,10));
JButton b2 = new JButton("OK");
b2.addActionListener(e -> {
Kunde k = new Kunde(isStudent[0], newKennnummer);
if(isStudent[0] == true) {
int amount = 5;
k.setSchulden(amount);
} else {
int amount = 10;
k.setSchulden(amount);
}
Bibliothek.addCustomer(k);
cl.show(mainPanel, "loginPanel");
});
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "loginPanel"));
bg.add(b1);
bg.add(b2);
registerMenu.add(bg, BorderLayout.SOUTH);
mainPanel.add(registerMenu, "registerMenu");
cl.show(mainPanel, "registerMenu");
}
private static void openAdmin() {
JPanel adminPanel = new JPanel(new BorderLayout());
JPanel adminGrid = new JPanel(new GridLayout(2, 1, 10, 10));
@ -82,145 +274,317 @@ public class BibliothekGUI extends JFrame implements ActionListener{
}
private static void changeOwedMenu() {
}
private static void openMainMenu(Kunde k) {
JPanel mediumPanel = new JPanel(new GridLayout(11, 1, 10, 10));
JLabel text1 = new JLabel("Ihre Kennnnummer: " + k.getKennnummer());
mediumPanel.add(text1);
JButton b1 = new JButton("Bücher");
b1.addActionListener(e -> bookMenu());
JButton b2 = new JButton("DVDs");
b2.addActionListener(e -> dvdMenu());
JButton b3 = new JButton("CDs");
b3.addActionListener(e -> cdMenu());
JButton b4 = new JButton("Brettspiele");
b4.addActionListener(e -> bsMenu());
JButton b5 = new JButton("Videospiele");
b5.addActionListener(e -> vsMenu());
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("Meine Schulden abbezahlen");
b9.addActionListener(e -> schuldenBegleichen(k));
JButton b10 = new JButton("Ausloggen");
b10.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);
mainPanel.add(mediumPanel, "mediumPanel");
cl.show(mainPanel, "mediumPanel");
}
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.");
JPanel changeOwedMenu = new JPanel(new BorderLayout());
int i = Bibliothek.getUserListLength();
JPanel userListPanel = new JPanel(new GridLayout(i+5, 2, 10, 10));
JLabel text1 = new JLabel("Alle Nutzer:");
changeOwedMenu.add(text1, BorderLayout.NORTH);
ArrayList<JLabel> jlabelList = Bibliothek.nutzerAuflisten();
for(JLabel j: jlabelList) {
userListPanel.add(j);
}
JLabel text0 = new JLabel("Geben Sie die Kennnumer des Nutzers ein: ");
userListPanel.add(text0);
JTextField inputField1 = new JTextField(20);
userListPanel.add(inputField1);
JLabel text2 = new JLabel("Geben Sie die Menge ein:");
userListPanel.add(text2);
JTextField inputField2 = new JTextField(20);
userListPanel.add(inputField2);
changeOwedMenu.add(userListPanel,BorderLayout.CENTER);
JPanel bg = new JPanel(new GridLayout(1,2,10,10));
JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "adminMenu"));
JButton b2 = new JButton("OK");
b2.addActionListener(e -> {
String kennnummer = inputField1.getText().toString();
String amountStr = inputField2.getText().toString();
int amount = Integer.parseInt(amountStr);
if(kennnummer == "") {
cl.show(mainPanel, "adminMenu");
} else {
Bibliothek.changeOwedMenu2(kennnummer, amount);
cl.show(mainPanel, "adminMenu");
}
});
bg.add(b1);
bg.add(b2);
changeOwedMenu.add(bg, BorderLayout.SOUTH);
mainPanel.add(changeOwedMenu, "changeOwed");
cl.show(mainPanel, "changeOwed");
}
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");
b2.addActionListener(e -> dvdMenu(k));
JButton b3 = new JButton("CDs");
b3.addActionListener(e -> cdMenu(k));
JButton b4 = new JButton("Brettspiele");
b4.addActionListener(e -> bsMenu(k));
JButton b5 = new JButton("Videospiele");
b5.addActionListener(e -> vsMenu(k));
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 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);
int i = k.ausgelieheneMedienLänge();
JPanel info = new JPanel(new GridLayout(i+2, 1, 10, 10));
JLabel text1 = new JLabel("Ihre Ausgeliehene Medien:");
verlängerungPanel.add(text0, BorderLayout.NORTH);
ArrayList<JLabel> jlabelList = Bibliothek.ausgelieheneListe(k);
info.add(text1);
for(JLabel j: jlabelList) {
info.add(j, BorderLayout.CENTER);
}
info.add(inputField);
verlängerungPanel.add(info, BorderLayout.CENTER);
JPanel bg = new JPanel(new GridLayout(1,2,10,10));
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;
System.out.println("neue Schulden: "+ newSchulden);
k.setSchulden(newSchulden);
if(i>0) {
int kennnummer = Integer.parseInt(inputField.getText());
boolean verlängerungMöglich = Bibliothek.verlängerungMöglich(kennnummer, k);
if(verlängerungMöglich == true){
verlängerung1();
} else {
verlängerung2();
}
} else {
cl.show(mainPanel, "mediumPanel");
}
});
JButton b2 = new JButton("Abbrechen");
b2.addActionListener(e -> {
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");
});
bg.add(b2);
bg.add(b1);
if(i == 0) {
verlängerungPanel.remove(inputField);
}
mainPanel.add(schuldenMenü, "Schulden");
cl.show(mainPanel, "Schulden");
verlängerungPanel.add(bg, BorderLayout.SOUTH);
mainPanel.add(verlängerungPanel, "Verlängerung0");
cl.show(mainPanel, "Verlängerung0");
}
private static void ausleihenMenü(Kunde k) {
private static void verlängerung1() {
JPanel v1 = new JPanel(new BorderLayout());
JLabel text1 = new JLabel("Verlängerung erfolgreich.");
v1.add(text1, BorderLayout.CENTER);
JButton b = new JButton("OK");
b.addActionListener(e -> {
cl.show(mainPanel, "mediumPanel");
mainPanel.remove(v1);
mainPanel.revalidate();
mainPanel.repaint();
});
v1.add(b, BorderLayout.SOUTH);
mainPanel.add(v1, "Verlängerung1");
cl.show(mainPanel, "Verlängerung1");
}
private static void verlängerung2() {
JPanel v2 = new JPanel(new BorderLayout());
JLabel text1 = new JLabel("Verlängerung fehlgeschlagen.");
v2.add(text1, BorderLayout.CENTER);
JButton b = new JButton("OK");
b.addActionListener(e -> {
cl.show(mainPanel, "mediumPanel");
mainPanel.remove(v2);
mainPanel.revalidate();
mainPanel.repaint();
// mainPanel.remove(v2);
});
v2.add(b, BorderLayout.SOUTH);
mainPanel.add(v2, "Verlängerung2");
cl.show(mainPanel, "Verlängerung2");
}
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();
System.out.println(ausleihDatum);
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();
System.out.println(rückgabeDatum);
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");
}
private static void bookMenu() {
private static void bookMenu(Kunde k) {
int i = Bibliothek.bücherLänge();
JPanel buchMenü = new JPanel(new GridLayout(i+2, 2, 10, 10));
JLabel text0 = new JLabel("Ausleihe für 4 Wochen, bis zu 3 Mal verlängerbar.");
@ -230,13 +594,18 @@ public class BibliothekGUI extends JFrame implements ActionListener{
buchMenü.add(j);
}
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
b1.addActionListener(e -> {
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "suchenMenu");}
});
buchMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(buchMenü, "Bücher");
cl.show(mainPanel, "Bücher");
}
private static void dvdMenu() {
private static void dvdMenu(Kunde k) {
int i = Bibliothek.dvdLänge();
JPanel dvdMenü = new JPanel(new GridLayout(i+2, 2, 10, 10));
JLabel text0 = new JLabel("Ausleihe für 1 Woche, keine Verlängerung.");
@ -246,13 +615,18 @@ public class BibliothekGUI extends JFrame implements ActionListener{
dvdMenü.add(j);
}
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
b1.addActionListener(e -> {
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "suchenMenu");}
});
dvdMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(dvdMenü, "DVDs");
cl.show(mainPanel, "DVDs");
}
private static void cdMenu() {
private static void cdMenu(Kunde k) {
int i = Bibliothek.cdLänge();
JPanel cdMenü = new JPanel(new GridLayout(i+2, 2, 10, 10));
JLabel text0 = new JLabel("Ausleihe für 2 Wochen, keine Verlängerung.");
@ -262,13 +636,17 @@ public class BibliothekGUI extends JFrame implements ActionListener{
cdMenü.add(j);
}
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
cdMenü.add(b1, BorderLayout.SOUTH);
b1.addActionListener(e -> {
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "suchenMenu");}
}); cdMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(cdMenü, "CDs");
cl.show(mainPanel, "CDs");
}
private static void bsMenu() {
private static void bsMenu(Kunde k) {
int i = Bibliothek.bsLänge();
JPanel bsMenü = new JPanel(new GridLayout(i+2, 2, 10, 10));
JLabel text0 = new JLabel("Ausleihe für 2 Wochen, keine Verlängerung.");
@ -278,13 +656,17 @@ public class BibliothekGUI extends JFrame implements ActionListener{
bsMenü.add(j);
}
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
bsMenü.add(b1, BorderLayout.SOUTH);
b1.addActionListener(e -> {
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "suchenMenu");}
}); bsMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(bsMenü, "Brettspiele");
cl.show(mainPanel, "Brettspiele");
}
private static void vsMenu() {
private static void vsMenu(Kunde k) {
int i = Bibliothek.vsLänge();
JPanel vsMenü = new JPanel(new GridLayout(i+2, 2, 10, 10));
JLabel text0 = new JLabel("Ausleihe für 4 Wochen, einmalige Verlängerung möglich.");
@ -294,8 +676,12 @@ public class BibliothekGUI extends JFrame implements ActionListener{
vsMenü.add(j);
}
JButton b1 = new JButton("OK");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
vsMenü.add(b1, BorderLayout.SOUTH);
b1.addActionListener(e -> {
if(k == null) {
cl.show(mainPanel, "browsePanel");
} else {
cl.show(mainPanel, "suchenMenu");}
}); vsMenü.add(b1, BorderLayout.SOUTH);
mainPanel.add(vsMenü, "Videospiele");
cl.show(mainPanel, "Videospiele");
}
@ -324,49 +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);
System.out.println("eingezahlt: " + zahlung);
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