Compare commits

...

3 Commits

Author SHA1 Message Date
Marc3308 189c5b29f3 Added Verlängerungs support 2024-11-19 12:51:25 +01:00
Marc3308 e2cd80c677 Added Schulden Support and everything else 2024-11-19 11:01:39 +01:00
Marc3308 21e30978ce Added Ausleih und bezahl support 2024-11-19 10:36:38 +01:00
13 changed files with 319 additions and 30 deletions

View File

@ -9,6 +9,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.time.DateTimeException; import java.time.DateTimeException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import static org.example.objekts.Bibiliotek.*; import static org.example.objekts.Bibiliotek.*;
@ -37,7 +38,6 @@ public class framecreater implements ActionListener {
} else { } else {
profilframe(); profilframe();
} }
}); });
panel.add(anemelden); panel.add(anemelden);
@ -61,48 +61,72 @@ public class framecreater implements ActionListener {
//suche feld //suche feld
JTextField Sucher=new JTextField(20); JTextField Sucher=new JTextField(20);
Sucher.setText(getSeartch()!=null ? getSeartch() : "");
Sucher.setBounds(100,10,300,25); Sucher.setBounds(100,10,300,25);
Sucher.addActionListener(e -> { Sucher.addActionListener(e -> {
//rerole frame.dispose();
setSeartch(Sucher.getText());
Startframe();
}); });
panel.add(Sucher); panel.add(Sucher);
//filter by writing
ArrayList<Medien> filterlist=new ArrayList<>();
if(Sucher.getText().equals("")){
filterlist=medienliste;
} else {
for(Medien m : medienliste)if(m.getTitel()!=null && m.getTitel().toLowerCase().startsWith(Sucher.getText().toLowerCase()))filterlist.add(m);
}
//create blocks for the inventory //create blocks for the inventory
final int[] counter = {0}; final int[] counter = {0};
medienliste.forEach(m -> { filterlist.forEach(m -> {
if(m.getClass().getName().substring(20).equals(getFilter())){ if(m.getClass().getName().substring(20).equals(getFilter())){
panel.add(createbutton(m,counter[0],frame)); panel.add(createbutton(m,counter[0],frame));
counter[0]++; counter[0]++;
} else if (getFilter().equals("Kein Filter")) { } else if (getFilter().equals("Kein Filter")) {
panel.add(createbutton(m,counter[0],frame)); panel.add(createbutton(m,counter[0],frame));
counter[0]++; counter[0]++;
} else if (getFilter().equals("Ausgeliehen") && m.getAusgeliehen()>0) { } else if (getFilter().equals("Ausgeliehen") && m.getAusgeliehen()>=0) {
panel.add(createbutton(m,counter[0],frame)); panel.add(createbutton(m,counter[0],frame));
counter[0]++; counter[0]++;
} else if (getFilter().equals("Verfügbar") && m.getAusgeliehen()<=0) { } else if (getFilter().equals("Verfügbar") && m.getAusgeliehen()<0) {
panel.add(createbutton(m,counter[0],frame)); panel.add(createbutton(m,counter[0],frame));
counter[0]++; counter[0]++;
} }
}); });
} }
public static JButton createbutton(Medien m, int counter, JFrame frame){ public static JButton createbutton(Medien m, int counter, JFrame frame){
JButton vorlage=new JButton("<html>"+m.getClass().getName().substring(20) JButton vorlage=new JButton("<html>"+m.getClass().getName().substring(20)
+"<br>"+m.getTitel() +"<br>"+(m.getAutor()==null ? "Unbekannt" : m.getAutor())
+"<br>"+m.getBeschreibung() +"<br>"+(m.getTitel()==null ? "Unbekannt" : m.getTitel())
+"<br>"+m.getVerofentlichung() +"<br>"+(m.getBeschreibung()==null ? "NoData" : m.getBeschreibung())
+"<br>"+(m.getAusgeliehen()!=0 ? "Ausgeliehen" : "Verfügbar") +"<br>"+(m.getVerofentlichung()<=0 ? "NoData" : m.getVerofentlichung())
+"<br>"+(m.getAusgeliehen()>=0 ? "Ausgeliehen" : "Verfügbar")
+"</html>"); +"</html>");
vorlage.setBounds(30+(80*(counter%8)),50+(100*(counter/10)),80,100 ); vorlage.setBounds(30+(80*(counter%8)),50+(100*(counter/10)),80,100 );
vorlage.addActionListener(e -> { vorlage.addActionListener(e -> {
frame.dispose(); frame.dispose();
Startframe(); onmedienclick(m);
});
return vorlage;
}
public static JButton createprofilebutton(Medien m, int counter, JFrame frame,kunden k){
JButton vorlage=new JButton("<html>"+m.getClass().getName().substring(20)
+"<br>"+(m.getAutor()==null ? "Unbekannt" : m.getAutor())
+"<br>"+(m.getTitel()==null ? "Unbekannt" : m.getTitel())
+"<br>"+(m.getBeschreibung()==null ? "NoData" : m.getBeschreibung())
+"<br>"+(m.getVerofentlichung()<=0 ? "NoData" : m.getVerofentlichung())
+"<br>"+((m.getAusleizeit()*7)-((int) ChronoUnit.DAYS.between(k.getAusgeliehen().get(m),getDatum())))+" Tage"
+"</html>");
vorlage.setBounds(10+(80*(counter%4)),100+(100*(counter/4)),80,100 );
vorlage.addActionListener(e -> {
frame.dispose();
onmedienclick(m);
}); });
return vorlage; return vorlage;
} }
public static void Zeitframe(){ public static void Zeitframe(){
System.out.println(Bibiliotek.getDatum().toString()); System.out.println(Bibiliotek.getDatum().toString());
@ -273,10 +297,18 @@ public class framecreater implements ActionListener {
panel.add(nummer); panel.add(nummer);
//text feld //text feld
JLabel schulden=new JLabel("Schulden: "+k.getSchulden()); JLabel schulden=new JLabel("Schulden: "+k.getSchulden()+"€");
schulden.setBounds( 10,30,200,25); schulden.setBounds( 10,30,200,25);
panel.add(schulden); panel.add(schulden);
//schuldenzuruck button
JButton schuldenzuruck=new JButton("Abezahlen");
schuldenzuruck.setBounds(170,30,80,25);
schuldenzuruck.addActionListener( e -> {
if(!schuldenabezahlen.contains(k))schuldenabezahlen.add(k);
});
if(k.getSchulden()>0.0)panel.add(schuldenzuruck);
//studentstatus feld //studentstatus feld
JLabel studentstatus=new JLabel("Student/Schühler: "+( k.isIstStudent()? "Ja" : "Nein")); JLabel studentstatus=new JLabel("Student/Schühler: "+( k.isIstStudent()? "Ja" : "Nein"));
studentstatus.setBounds(10,50,200,25); studentstatus.setBounds(10,50,200,25);
@ -292,6 +324,13 @@ public class framecreater implements ActionListener {
}); });
panel.add(succes); panel.add(succes);
//ausgeliehene sachen
final int[] i = {0};
k.getAusgeliehen().keySet().forEach(m -> {
panel.add(createprofilebutton(m,i[0],frame,k));
i[0]++;
});
//back button //back button
JButton back=new JButton("Zurück"); JButton back=new JButton("Zurück");
back.setBounds(10,725,80,25); back.setBounds(10,725,80,25);
@ -301,7 +340,7 @@ public class framecreater implements ActionListener {
}); });
panel.add(back); panel.add(back);
//back button //abmelden button
JButton abmelden=new JButton("Abmelden"); JButton abmelden=new JButton("Abmelden");
abmelden.setBounds(90,725,100,25); abmelden.setBounds(90,725,100,25);
abmelden.addActionListener(e -> { abmelden.addActionListener(e -> {
@ -310,6 +349,161 @@ public class framecreater implements ActionListener {
Startframe(); Startframe();
}); });
panel.add(abmelden); panel.add(abmelden);
//admin schulden erlass knopf
JButton admin=new JButton("Gebüren Verbuchen");
admin.setBounds(170,725,200,25);
admin.addActionListener(e -> {
frame.dispose();
adminclick();
});
if(getAngemeldeterbenuter()==0)panel.add(admin);
}
public static void onmedienclick(Medien m){
//frame
JFrame frame=new JFrame("Medien");
JPanel panel=new JPanel();
frame.setSize(300,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(panel);
panel.setLayout(null);
//text feld
JLabel autor=new JLabel("Autor: "+(m.getAutor()==null ? "Unbekannt" : m.getAutor()));
autor.setBounds(10,10,200,25);
panel.add(autor);
//text feld
JLabel titel=new JLabel("Titel: "+(m.getTitel()==null ? "Unbekannt" : m.getTitel()));
titel.setBounds( 10,30,200,25);
panel.add(titel);
//text feld
JLabel Beschreibung=new JLabel("Beschreibung: "+(m.getBeschreibung()==null ? "NoData" : m.getBeschreibung()));
Beschreibung.setBounds(10,50,200,25);
panel.add(Beschreibung);
//text feld
JLabel verofentlichung=new JLabel("Veröfentlichung: "+(m.getVerofentlichung()<=0 ? "NoData" : m.getVerofentlichung()));
verofentlichung.setBounds(10,70,200,25);
panel.add(verofentlichung);
//text feld
JLabel ausleihzeit=new JLabel("Ausleihzeit: "+m.getAusleizeit()+" Wochen");
ausleihzeit.setBounds(10,100,200,25);
panel.add(ausleihzeit);
//back button
JButton back=new JButton("Zurück");
back.setBounds(10,125,80,25);
back.addActionListener(e -> {
frame.dispose();
Startframe();
});
panel.add(back);
//ausleiehen button
JButton ausleiehen=new JButton("Ausleiehen");
ausleiehen.setBounds(90,125,100,25);
ausleiehen.addActionListener(e -> {
frame.dispose();
m.setAusgeliehen(getAngemeldeterbenuter());
kundenliste.get(getAngemeldeterbenuter()).getAusgeliehen().put(m,getDatum());
Startframe();
});
if(m.getAusgeliehen()<0 && getAngemeldeterbenuter()>=0)panel.add(ausleiehen);
if(m.getAusgeliehen()>=0 && m.getAusgeliehen()==getAngemeldeterbenuter()){
//zuruckgeben button
JButton zuruckgeben=new JButton("Zurückgeben");
zuruckgeben.setBounds(90,125,100,25);
zuruckgeben.addActionListener(e -> {
frame.dispose();
m.setAusgeliehen(-1);
schuldenberechnung(m,kundenliste.get(getAngemeldeterbenuter()));
kundenliste.get(getAngemeldeterbenuter()).getAusgeliehen().remove(m);
profilframe();
});
panel.add(zuruckgeben);
//Verlängern button
JButton Verlängern=new JButton("Verlängern");
Verlängern.setBounds(150,100,100,25);
Verlängern.addActionListener(e -> {
//set max verlängerungen
int verlangerung = m.getAusleizeit();
if(m.getClass().getName().substring(20).equals("Buch") && verlangerung<(4*4))verlangerung+=4;
if(m.getClass().getName().substring(20).equals("Viedeospiel") && verlangerung==4)verlangerung*=2;
frame.dispose();
m.setAusleizeit(verlangerung);
onmedienclick(m);
});
if(m.getClass().getName().substring(20).equals("Buch"))panel.add(Verlängern);
if(m.getClass().getName().substring(20).equals("Viedeospiel"))panel.add(Verlängern);
}
}
public static void adminclick(){
//frame
JFrame frame=new JFrame("Gebüren Verbuchen");
JPanel panel=new JPanel();
frame.setSize(300,100+(schuldenabezahlen.size()*30));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(panel);
panel.setLayout(null);
schuldenabezahlen.forEach(k -> {
//info feld
JLabel kunde=new JLabel("Nr: "+k.getnummer()+" Schulden: "+k.getSchulden()+"€");
kunde.setBounds(10,schuldenabezahlen.indexOf(k)*25,200,25);
panel.add(kunde);
//admin schulden erlass knopf
JButton admin=new JButton("Bezahlt");
admin.setBounds(200,schuldenabezahlen.indexOf(k)*25,80,25);
admin.addActionListener(e -> {
frame.dispose();
k.setSchulden(0.0);
schuldenabezahlen.remove(k);
adminclick();
});
panel.add(admin);
});
//back
JButton back=new JButton("Zurück");
back.setBounds(10,schuldenabezahlen.size()*25,80,25);
back.addActionListener(e -> {
frame.dispose();
profilframe();
});
panel.add(back);
}
public static void schuldenberechnung(Medien m, kunden k){
LocalDate datenow=getDatum();
LocalDate datethen=k.getAusgeliehen().get(m);
//set max verlängerungen
int verlangerung = m.getAusleizeit()*7;
//wochen berechnen
int weeksapart = ((int) ChronoUnit.DAYS.between(datethen,datenow));
if(weeksapart>verlangerung){
weeksapart-=verlangerung;
int schulden=0;
if(weeksapart<7){
schulden=weeksapart;
} else {
weeksapart-=7;
schulden=weeksapart*2;
}
if(k.isIstStudent())schulden/=2;
k.setSchulden(k.getSchulden()+schulden);
}
} }
@Override @Override

View File

@ -8,11 +8,14 @@ public class Bibiliotek {
//create lists to track shit //create lists to track shit
public static ArrayList<Medien> medienliste=new ArrayList<>(); public static ArrayList<Medien> medienliste=new ArrayList<>();
public static ArrayList<kunden> kundenliste=new ArrayList<>(); public static ArrayList<kunden> kundenliste=new ArrayList<>();
public static ArrayList<kunden> schuldenabezahlen=new ArrayList<>();
private static int Angemeldeterbenuter; private static int Angemeldeterbenuter;
private static String Filter; private static String Filter;
private static String Seartch;
// Global system date, initialized to the current date // Global system date, initialized to the current date
private static LocalDate datum = LocalDate.now(); private static LocalDate datum = LocalDate.now();
@ -43,9 +46,17 @@ public class Bibiliotek {
Filter = filter; Filter = filter;
} }
public static String getSeartch() {
return Seartch;
}
public static void setSeartch(String seartch) {
Seartch = seartch;
}
public static void addshit(){ public static void addshit(){
medienliste.add(new Buch("Schmi","","",1)); medienliste.add(new Buch("Schmi","Schmitt","",1));
medienliste.add(new DVD("Schmi2","","s",1)); medienliste.add(new DVD("Schmi2","SH","s",1));
medienliste.add(new Buch("Schmi3","","s",1)); medienliste.add(new Buch("Schmi3","","s",1));
medienliste.add(new Buch("Schmi4","","",1)); medienliste.add(new Buch("Schmi4","","",1));
medienliste.add(new Buch("Schmi5","","",1)); medienliste.add(new Buch("Schmi5","","",1));
@ -64,6 +75,6 @@ public class Bibiliotek {
medienliste.add(new Buch("Schmi6","","as",1)); medienliste.add(new Buch("Schmi6","","as",1));
medienliste.add(new Buch("Schmi6","","as",1)); medienliste.add(new Buch("Schmi6","","as",1));
medienliste.add(new Buch("Schmi6","","as",1)); medienliste.add(new Buch("Schmi6","","as",1));
medienliste.add(new Buch("Schmi6","","as",1)); medienliste.add(new Buch(null,null,null,0));
} }
} }

View File

@ -8,6 +8,7 @@ public abstract class Medien {
private int nummer; private int nummer;
private int verofentlichung; private int verofentlichung;
private int ausleizeit;
private int ausgeliehen; private int ausgeliehen;
abstract public String getAutor(); abstract public String getAutor();
@ -16,7 +17,15 @@ public abstract class Medien {
abstract public int getNummer(); abstract public int getNummer();
abstract public int getVerofentlichung(); abstract public int getVerofentlichung();
abstract public int getAusgeliehen(); abstract public int getAusgeliehen();
abstract public int getAusleizeit();
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
public void setAusleizeit(int ausleizeit) {
this.ausleizeit = ausleizeit;
}
} }
class Buch extends Medien{ class Buch extends Medien{
@ -27,6 +36,7 @@ class Buch extends Medien{
private int verofentlichung; private int verofentlichung;
private int nummber; private int nummber;
private int ausgeliehen; private int ausgeliehen;
private int ausleizeit;
public Buch(String autor, String titel, String beschreibung, int verofentlichung){ public Buch(String autor, String titel, String beschreibung, int verofentlichung){
@ -35,7 +45,13 @@ class Buch extends Medien{
this.beschreibung=beschreibung; this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung; this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0; this.ausgeliehen=-1;
this.ausleizeit=4;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
} }
@Override @Override
@ -67,6 +83,15 @@ class Buch extends Medien{
public int getAusgeliehen() { public int getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@Override
public int getAusleizeit() {
return ausleizeit;
}
@Override
public void setAusleizeit(int ausleizeit) {
this.ausleizeit = ausleizeit;
}
} }
class DVD extends Medien{ class DVD extends Medien{
@ -84,7 +109,17 @@ class DVD extends Medien{
this.beschreibung=beschreibung; this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung; this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0; this.ausgeliehen=-1;
}
@Override
public void setAusleizeit(int ausleizeit) {
super.setAusleizeit(ausleizeit);
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
} }
@Override @Override
@ -116,6 +151,11 @@ class DVD extends Medien{
public int getAusgeliehen() { public int getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@Override
public int getAusleizeit() {
return 1;
}
} }
class CD extends Medien{ class CD extends Medien{
@ -133,7 +173,17 @@ class CD extends Medien{
this.beschreibung=beschreibung; this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung; this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0; this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
public void setAusleizeit(int ausleizeit) {
super.setAusleizeit(ausleizeit);
} }
@Override @Override
@ -165,6 +215,11 @@ class CD extends Medien{
public int getAusgeliehen() { public int getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@Override
public int getAusleizeit() {
return 2;
}
} }
class Brettspiel extends Medien{ class Brettspiel extends Medien{
@ -182,7 +237,17 @@ class Brettspiel extends Medien{
this.beschreibung=beschreibung; this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung; this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0; this.ausgeliehen=-1;
}
@Override
public void setAusleizeit(int ausleizeit) {
super.setAusleizeit(ausleizeit);
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
} }
@Override @Override
@ -214,6 +279,11 @@ class Brettspiel extends Medien{
public int getAusgeliehen() { public int getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@Override
public int getAusleizeit() {
return 2;
}
} }
class Viedeospiel extends Medien{ class Viedeospiel extends Medien{
@ -224,6 +294,7 @@ class Viedeospiel extends Medien{
private int verofentlichung; private int verofentlichung;
private int nummber; private int nummber;
private int ausgeliehen; private int ausgeliehen;
private int ausleizeit;
public Viedeospiel(String autor, String titel, String beschreibung, int verofentlichung){ public Viedeospiel(String autor, String titel, String beschreibung, int verofentlichung){
@ -232,7 +303,19 @@ class Viedeospiel extends Medien{
this.beschreibung=beschreibung; this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung; this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0; this.ausgeliehen=-1;
this.ausleizeit=4;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
public void setAusleizeit(int ausleizeit) {
this.ausleizeit = ausleizeit;
} }
@Override @Override
@ -264,4 +347,9 @@ class Viedeospiel extends Medien{
public int getAusgeliehen() { public int getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@Override
public int getAusleizeit() {
return ausleizeit;
}
} }

View File

@ -1,6 +1,6 @@
package org.example.objekts; package org.example.objekts;
import java.util.Date; import java.time.LocalDate;
import java.util.HashMap; import java.util.HashMap;
public class kunden { public class kunden {
@ -8,7 +8,7 @@ public class kunden {
private int nummer; private int nummer;
private boolean istStudent; private boolean istStudent;
private double schulden; private double schulden;
private HashMap<Medien, Date> ausgeliehen; public HashMap<Medien, LocalDate> ausgeliehen;
public kunden(boolean istStudent, int nummer) { public kunden(boolean istStudent, int nummer) {
this.istStudent = istStudent; this.istStudent = istStudent;
@ -25,7 +25,7 @@ public class kunden {
return nummer; return nummer;
} }
public HashMap<Medien, Date> getAusgeliehen() { public HashMap<Medien, LocalDate> getAusgeliehen() {
return ausgeliehen; return ausgeliehen;
} }
@ -37,10 +37,6 @@ public class kunden {
this.schulden = schulden; this.schulden = schulden;
} }
public void setAusgeliehen(HashMap<Medien, Date> ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
public void setIstStudent(boolean istStudent) { public void setIstStudent(boolean istStudent) {
this.istStudent = istStudent; this.istStudent = istStudent;
} }