commit to save progress

dateFeature
Berat Kocak 2024-11-10 12:51:49 +01:00
parent 8f36814b94
commit d7d4ca8318
3 changed files with 292 additions and 20 deletions

View File

@ -1,6 +1,10 @@
package domainBib; package domainBib;
import java.awt.Component; import java.awt.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.JLabel; import javax.swing.JLabel;
@ -14,13 +18,14 @@ public class Bibliothek {
static ArrayList<Videospiel> videospielListe = new ArrayList<>(); static ArrayList<Videospiel> videospielListe = new ArrayList<>();
static ArrayList<Kunde> kundenListe = new ArrayList<>(); static ArrayList<Kunde> kundenListe = new ArrayList<>();
static ArrayList<Medium> katalog = new ArrayList<>(); static ArrayList<Medium> katalog = new ArrayList<>();
//static ArrayList<Medium> zurzeitAusgeliehen = new ArrayList<>();
public static void makeEntries() { public static void makeEntries() {
Buch b1 = new Buch("Buch1", 2000, "Autor1", "01.01.2020", 10001); Buch b1 = new Buch("Buch1", 2000, "Autor1", 10001);
Buch b2 = new Buch("Buch2", 2000, "Autor2", "01.01.2020", 10002); Buch b2 = new Buch("Buch2", 2000, "Autor2",10002);
Buch b3 = new Buch("Buch3", 2000, "Autor3", "01.01.2020", 10003); Buch b3 = new Buch("Buch3", 2000, "Autor3", 10003);
Buch b4 = new Buch("Buch4", 2000, "Autor4", "01.01.2020", 10004); Buch b4 = new Buch("Buch4", 2000, "Autor4", 10004);
Buch b5 = new Buch("Buch5", 2000, "Autor5", "01.01.2020", 10005); Buch b5 = new Buch("Buch5", 2000, "Autor5", 10005);
bücherListe.add(b1); bücherListe.add(b1);
bücherListe.add(b2); bücherListe.add(b2);
bücherListe.add(b3); bücherListe.add(b3);
@ -214,7 +219,7 @@ public class Bibliothek {
return jlabelList; return jlabelList;
} }
public static void ausleihe(int kennnummer, Kunde k) { public static void ausleihe(int kennnummer, String datum, Kunde k) {
for(Medium m: katalog) { for(Medium m: katalog) {
if(m.getKennnummer() == kennnummer) { if(m.getKennnummer() == kennnummer) {
String text = m.getClass().toString(); String text = m.getClass().toString();
@ -223,26 +228,31 @@ public class Bibliothek {
switch (substring) { switch (substring) {
case "Buch": case "Buch":
Buch b = (Buch) m; Buch b = (Buch) m;
b.setAusleihDatum(datum);
bücherListe.remove(b); bücherListe.remove(b);
k.addToList(b); k.addToList(b);
break; break;
case "DVD": case "DVD":
DVD d = (DVD) m; DVD d = (DVD) m;
d.setAusleihDatum(datum);
dvdListe.remove(d); dvdListe.remove(d);
k.addToList(d); k.addToList(d);
break; break;
case "CD": case "CD":
CD c = (CD) m; CD c = (CD) m;
c.setAusleihDatum(datum);
cdListe.remove(c); cdListe.remove(c);
k.addToList(c); k.addToList(c);
break; break;
case "Brettspiel": case "Brettspiel":
Brettspiel bs = (Brettspiel) m; Brettspiel bs = (Brettspiel) m;
bs.setAusleihDatum(datum);
brettspielListe.remove(bs); brettspielListe.remove(bs);
k.addToList(bs); k.addToList(bs);
break; break;
case "Videospiel": case "Videospiel":
Videospiel vs = (Videospiel) m; Videospiel vs = (Videospiel) m;
vs.setAusleihDatum(datum);
videospielListe.remove(vs); videospielListe.remove(vs);
k.addToList(vs); k.addToList(vs);
break; break;
@ -254,7 +264,7 @@ public class Bibliothek {
} }
} }
public static void rückgabe(int kennnummer, Kunde k) { public static void rückgabe(int kennnummer, String rückgabeDatum, Kunde k) {
for(Medium m: katalog) { for(Medium m: katalog) {
if(m.getKennnummer() == kennnummer) { if(m.getKennnummer() == kennnummer) {
String text = m.getClass().toString(); String text = m.getClass().toString();
@ -263,28 +273,48 @@ public class Bibliothek {
switch (substring) { switch (substring) {
case "Buch": case "Buch":
Buch b = (Buch) m; 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);} else {
bücherListe.add(b); bücherListe.add(b);
k.removeFromList(m); k.removeFromList(m);
}
break; break;
case "DVD": case "DVD":
DVD d = (DVD) m; 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);} else {
dvdListe.add(d); dvdListe.add(d);
k.removeFromList(m); k.removeFromList(m);
}
break; break;
case "CD": case "CD":
CD c = (CD) m; 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);} else {
cdListe.add(c); cdListe.add(c);
k.removeFromList(m); k.removeFromList(m);
}
break; break;
case "Brettspiel": case "Brettspiel":
Brettspiel bs = (Brettspiel) m; 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);} else {
brettspielListe.add(bs); brettspielListe.add(bs);
k.removeFromList(m); k.removeFromList(m);
}
break; break;
case "Videospiel": case "Videospiel":
Videospiel vs = (Videospiel) m; 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);} else {
videospielListe.add(vs); videospielListe.add(vs);
k.removeFromList(m); k.removeFromList(m);
}
break; break;
default: default:
break; break;
@ -294,6 +324,133 @@ public class Bibliothek {
} }
} }
private static double berechneGebühren(Buch b, int kennnummer, String rückgabeDatum) {
String ausleihDatum = b.getAusleihDatum();
double tageAusgeliehen = findDifference(ausleihDatum, rückgabeDatum);
double kosten = 0;
if(tageAusgeliehen <= 28) {
return kosten = 0;
}
int dayCounter = 0;
while(tageAusgeliehen >= 29) {
if(dayCounter >=8) {
kosten += 2;
dayCounter++;
tageAusgeliehen--;
}else if (dayCounter <= 7){
kosten += 1;
dayCounter++;
tageAusgeliehen--;
}
}
return kosten;
}
private static double berechneGebühren(DVD d, int kennnummer, String rückgabeDatum) {
String ausleihDatum = d.getAusleihDatum();
double tageAusgeliehen = findDifference(ausleihDatum, rückgabeDatum);
double kosten = 0;
if(tageAusgeliehen <= 7) {
return kosten = 0;
}
int dayCounter = 0;
while(tageAusgeliehen >= 8) {
if(dayCounter >=8) {
kosten += 2;
dayCounter++;
tageAusgeliehen--;
}else if (dayCounter <= 7){
kosten += 1;
dayCounter++;
tageAusgeliehen--;
}
}
return kosten;
}
private static double berechneGebühren(CD c, int kennnummer, String rückgabeDatum) {
String ausleihDatum = c.getAusleihDatum();
double tageAusgeliehen = findDifference(ausleihDatum, rückgabeDatum);
double kosten = 0;
if(tageAusgeliehen <= 14) {
return kosten = 0;
}
int dayCounter = 0;
while(tageAusgeliehen >= 15) {
if(dayCounter >=8) {
kosten += 2;
dayCounter++;
tageAusgeliehen--;
}else if (dayCounter <= 7){
kosten += 1;
dayCounter++;
tageAusgeliehen--;
}
}
return kosten;
}
private static double berechneGebühren(Brettspiel bs, int kennnummer, String rückgabeDatum) {
String ausleihDatum = bs.getAusleihDatum();
double tageAusgeliehen = findDifference(ausleihDatum, rückgabeDatum);
double kosten = 0;
if(tageAusgeliehen <= 14) {
return kosten = 0;
}
int dayCounter = 0;
while(tageAusgeliehen >= 15) {
if(dayCounter >=8) {
kosten += 2;
dayCounter++;
tageAusgeliehen--;
}else if (dayCounter <= 7){
kosten += 1;
dayCounter++;
tageAusgeliehen--;
}
}
return kosten;
}
private static double berechneGebühren(Videospiel vs, int kennnummer, String rückgabeDatum) {
String ausleihDatum = vs.getAusleihDatum();
double tageAusgeliehen = findDifference(ausleihDatum, rückgabeDatum);
double kosten = 0;
if(tageAusgeliehen <= 28) {
return kosten = 0;
}
int dayCounter = 0;
while(tageAusgeliehen >= 29) {
if(dayCounter >=8) {
kosten += 2;
dayCounter++;
tageAusgeliehen--;
}else if (dayCounter <= 7){
kosten += 1;
dayCounter++;
tageAusgeliehen--;
}
}
return kosten;
}
public static boolean zahlungRegistrieren(int zahlung, double kosten) {
if(kosten - zahlung <= 0) {
return true;
} else {
return false;
}
}
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(differenzInTagen);
return 0;
}
public static int bücherLänge() { public static int bücherLänge() {
return bücherListe.size(); return bücherListe.size();
} }

View File

@ -6,6 +6,8 @@ abstract class Medium {
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String autor; private String autor;
private String ausleihDatum;
abstract public String getTitel(); abstract public String getTitel();
abstract public int getJahr(); abstract public int getJahr();
@ -24,8 +26,9 @@ class Buch extends Medium{
private String autor; private String autor;
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String ausleihDatum;
public Buch(String titel, int erscheinungsjahr, String autor, String fälligkeitsDatum, int kennnummer) { public Buch(String titel, int erscheinungsjahr, String autor, int kennnummer) {
this.titel = titel; this.titel = titel;
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
this.autor = autor; this.autor = autor;
@ -45,6 +48,14 @@ class Buch extends Medium{
return autor; return autor;
} }
public void setFälligkeitsDatum(String datum) {
this.fälligkeitsDatum = datum;
}
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public String getDatum() { public String getDatum() {
return fälligkeitsDatum; return fälligkeitsDatum;
} }
@ -52,6 +63,14 @@ class Buch extends Medium{
public int getKennnummer() { public int getKennnummer() {
return kennnummer; return kennnummer;
} }
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihDatum() {
return ausleihDatum;
}
} }
class DVD extends Medium{ class DVD extends Medium{
@ -60,6 +79,7 @@ class DVD extends Medium{
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String autor; private String autor;
private String ausleihDatum;
public DVD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) { public DVD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel; this.titel = titel;
@ -88,6 +108,20 @@ class DVD extends Medium{
public int getKennnummer() { public int getKennnummer() {
return kennnummer; return kennnummer;
} }
public void setFälligkeitsDatum(String datum) {
this.fälligkeitsDatum = datum;
}
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihDatum() {
return ausleihDatum;
}
} }
class CD extends Medium{ class CD extends Medium{
@ -96,6 +130,7 @@ class CD extends Medium{
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String autor; private String autor;
private String ausleihDatum;
public CD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) { public CD(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel; this.titel = titel;
@ -123,6 +158,20 @@ class CD extends Medium{
public int getKennnummer() { public int getKennnummer() {
return kennnummer; return kennnummer;
} }
public void setFälligkeitsDatum(String datum) {
this.fälligkeitsDatum = datum;
}
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihDatum() {
return ausleihDatum;
}
} }
class Brettspiel extends Medium{ class Brettspiel extends Medium{
@ -131,6 +180,7 @@ class Brettspiel extends Medium{
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String autor; private String autor;
private String ausleihDatum;
public Brettspiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) { public Brettspiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel; this.titel = titel;
@ -159,6 +209,20 @@ class Brettspiel extends Medium{
public int getKennnummer() { public int getKennnummer() {
return kennnummer; return kennnummer;
} }
public void setFälligkeitsDatum(String datum) {
this.fälligkeitsDatum = datum;
}
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihDatum() {
return ausleihDatum;
}
} }
class Videospiel extends Medium{ class Videospiel extends Medium{
@ -167,6 +231,7 @@ class Videospiel extends Medium{
private String fälligkeitsDatum; private String fälligkeitsDatum;
private int kennnummer; private int kennnummer;
private String autor; private String autor;
private String ausleihDatum;
public Videospiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) { public Videospiel(String titel, int erscheinungsjahr, String fälligkeitsDatum, int kennnummer) {
this.titel = titel; this.titel = titel;
@ -195,4 +260,18 @@ class Videospiel extends Medium{
public int getKennnummer() { public int getKennnummer() {
return kennnummer; return kennnummer;
} }
public void setFälligkeitsDatum(String datum) {
this.fälligkeitsDatum = datum;
}
public String getFälligkeitsDatum() {
return this.fälligkeitsDatum;
}
public void setAusleihDatum(String datum) {
this.ausleihDatum = datum;
}
public String getAusleihDatum() {
return ausleihDatum;
}
} }

View File

@ -1,5 +1,7 @@
package guiBib; package guiBib;
import domainBib.*; import domainBib.*;
import java.time.LocalDateTime;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@ -120,17 +122,24 @@ public class BibliothekGUI extends JFrame implements ActionListener{
private static void ausleihenMenü(Kunde k) { private static void ausleihenMenü(Kunde k) {
JPanel ausleihMenü = new JPanel(new BorderLayout()); JPanel ausleihMenü = new JPanel(new BorderLayout());
JPanel inputMenu = new JPanel(new GridLayout(4, 1, 10, 10));
JLabel text1 = new JLabel("Zu ausleihende Kennnummer des Mediums eingeben:"); JLabel text1 = new JLabel("Zu ausleihende Kennnummer des Mediums eingeben:");
JTextField inputField = new JTextField(20); JTextField inputField1 = new JTextField(20);
ausleihMenü.add(text1, BorderLayout.NORTH); JLabel text2 = new JLabel("Datum eingeben:");
ausleihMenü.add(inputField, BorderLayout.CENTER); JTextField inputField2 = new JTextField(20);
inputMenu.add(text1);
inputMenu.add(inputField1);
inputMenu.add(text2);
inputMenu.add(inputField2);
ausleihMenü.add(inputMenu, BorderLayout.CENTER);
JPanel buttonGrid = new JPanel(new GridLayout(2, 1, 10,10)); JPanel buttonGrid = new JPanel(new GridLayout(2, 1, 10,10));
JButton b1 = new JButton("Abbrechen"); JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel")); b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
JButton b2 = new JButton("OK"); JButton b2 = new JButton("OK");
b2.addActionListener(e -> { b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField.getText()); int kennnummer = Integer.parseInt(inputField1.getText());
Bibliothek.ausleihe(kennnummer, k); String ausleihDatum = inputField2.getText().toString();
Bibliothek.ausleihe(kennnummer, ausleihDatum, k);
cl.show(mainPanel, "mediumPanel"); cl.show(mainPanel, "mediumPanel");
}); });
buttonGrid.add(b1); buttonGrid.add(b1);
@ -142,17 +151,24 @@ public class BibliothekGUI extends JFrame implements ActionListener{
private static void rückgabeMenü(Kunde k) { private static void rückgabeMenü(Kunde k) {
JPanel rückgabeMenü = new JPanel(new BorderLayout()); 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:"); JLabel text1 = new JLabel("Kennnummer des Mediums zur Rückgabe eingeben:");
JTextField inputField = new JTextField(20); JTextField inputField1 = new JTextField(20);
rückgabeMenü.add(text1, BorderLayout.NORTH); JLabel text2 = new JLabel("Datum eingeben:");
rückgabeMenü.add(inputField, BorderLayout.CENTER); JTextField inputField2 = new JTextField(20);
inputMenu.add(text1);
inputMenu.add(inputField1);
inputMenu.add(text2);
inputMenu.add(inputField2);
rückgabeMenü.add(inputMenu, BorderLayout.CENTER);;
JPanel buttonGrid = new JPanel(new GridLayout(2, 1, 10,10)); JPanel buttonGrid = new JPanel(new GridLayout(2, 1, 10,10));
JButton b1 = new JButton("Abbrechen"); JButton b1 = new JButton("Abbrechen");
b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel")); b1.addActionListener(e -> cl.show(mainPanel, "mediumPanel"));
JButton b2 = new JButton("OK"); JButton b2 = new JButton("OK");
b2.addActionListener(e -> { b2.addActionListener(e -> {
int kennnummer = Integer.parseInt(inputField.getText()); int kennnummer = Integer.parseInt(inputField1.getText());
Bibliothek.rückgabe(kennnummer, k); String rückgabeDatum = inputField2.getText().toString();
Bibliothek.rückgabe(kennnummer, rückgabeDatum, k);
myBooks(k); myBooks(k);
}); });
buttonGrid.add(b1); buttonGrid.add(b1);
@ -254,4 +270,24 @@ public class BibliothekGUI extends JFrame implements ActionListener{
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
} }
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);
JTextField inputField1 = new JTextField(20);
zahlungPanel.add(inputField1, BorderLayout.CENTER);
JButton b1 = new JButton("OK");
zahlungPanel.add(b1, BorderLayout.NORTH);
b1.addActionListener(e -> {
int zahlung = Integer.parseInt(inputField1.getText());
boolean zahlungErfolgreich = Bibliothek.zahlungRegistrieren(zahlung, kosten);
if(zahlungErfolgreich == true) {
} else {
}
});
}
} }