added verlängerung as feature

verlängerungFeature
Berat Kocak 2024-11-11 00:12:11 +01:00
parent 560dca7110
commit 8b1904c138
3 changed files with 268 additions and 49 deletions

View File

@ -75,15 +75,16 @@ 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);
kundenListe.add(k1);
kundenListe.add(k2);
kundenListe.add(k3);
kundenListe.add(k4);
kundenListe.add(k5);
for(Buch b: bücherListe) {
katalog.add(b);
@ -206,14 +207,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 +232,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;
@ -282,6 +285,7 @@ public class Bibliothek {
} else {
bücherListe.add(b);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "DVD":
@ -294,6 +298,7 @@ public class Bibliothek {
} else {
dvdListe.add(d);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "CD":
@ -306,6 +311,7 @@ public class Bibliothek {
} else {
cdListe.add(c);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "Brettspiel":
@ -318,6 +324,7 @@ public class Bibliothek {
} else {
brettspielListe.add(bs);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
case "Videospiel":
@ -330,6 +337,7 @@ public class Bibliothek {
} else {
videospielListe.add(vs);
k.removeFromList(m);
BibliothekGUI.noMoneyOwed();
}
break;
default:
@ -359,7 +367,6 @@ public class Bibliothek {
tageAusgeliehen--;
}
}
System.out.println("Kosten: " + kosten);
return kosten;
}
@ -450,6 +457,7 @@ public class Bibliothek {
}
return kosten;
}
public static boolean zahlungRegistrieren(int zahlung, double kosten) {
boolean isTrue = false;
if(kosten - zahlung <= 0) {
@ -460,14 +468,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;
}
@ -526,6 +530,44 @@ public class Bibliothek {
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);
}
}
}
}

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;
}
@ -57,14 +68,18 @@ class Buch extends Medium{
public int getKennnummer() {
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

@ -54,7 +54,7 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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");
@ -88,16 +88,27 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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.");
registerMenu.add(text0, BorderLayout.NORTH);
registerMenu.add(studentOrNot, BorderLayout.CENTER);
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");
});
@ -144,11 +155,48 @@ public class BibliothekGUI extends JFrame implements ActionListener{
}
private static void changeOwedMenu() {
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 openMainMenu(Kunde k) {
JPanel mediumPanel = new JPanel(new GridLayout(11, 1, 10, 10));
JPanel mediumPanel = new JPanel(new GridLayout(12, 1, 10, 10));
JLabel text1 = new JLabel("Ihre Kennnnummer: " + k.getKennnummer());
mediumPanel.add(text1);
JButton b1 = new JButton("Bücher");
@ -167,10 +215,12 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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"));
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);
@ -181,11 +231,88 @@ public class BibliothekGUI extends JFrame implements ActionListener{
mediumPanel.add(b8);
mediumPanel.add(b9);
mediumPanel.add(b10);
mediumPanel.add(b11);
mainPanel.add(mediumPanel, "mediumPanel");
cl.show(mainPanel, "mediumPanel");
}
private static void verlängern(Kunde k) {
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");
b1.addActionListener(e -> {
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");
});
bg.add(b2);
bg.add(b1);
if(i == 0) {
verlängerungPanel.remove(inputField);
}
verlängerungPanel.add(bg, BorderLayout.SOUTH);
mainPanel.add(verlängerungPanel, "Verlängerung0");
cl.show(mainPanel, "Verlängerung0");
}
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 schuldenBegleichen(Kunde k) {
JPanel schuldenMenü = new JPanel(new BorderLayout());
double schulden = k.getSchulden();
@ -204,7 +331,6 @@ public class BibliothekGUI extends JFrame implements ActionListener{
b1.addActionListener(e -> {
int einzahlung = Integer.parseInt(inputField1.getText());
double newSchulden = schulden - einzahlung;
System.out.println("neue Schulden: "+ newSchulden);
k.setSchulden(newSchulden);
cl.show(mainPanel, "mediumPanel");
});
@ -242,7 +368,6 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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");
});
@ -272,7 +397,6 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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);
@ -428,7 +552,6 @@ public class BibliothekGUI extends JFrame implements ActionListener{
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:");
@ -452,5 +575,9 @@ public class BibliothekGUI extends JFrame implements ActionListener{
});
}
public static void noMoneyOwed() {
cl.show(mainPanel, "mediumPanel");
}
}