Added Ausleih und bezahl support

bezahlsystem
Marc3308 2024-11-19 10:36:38 +01:00
parent 0eadf43183
commit 21e30978ce
13 changed files with 226 additions and 29 deletions

View File

@ -9,6 +9,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.DateTimeException;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import static org.example.objekts.Bibiliotek.*;
@ -37,7 +38,6 @@ public class framecreater implements ActionListener {
} else {
profilframe();
}
});
panel.add(anemelden);
@ -61,48 +61,72 @@ public class framecreater implements ActionListener {
//suche feld
JTextField Sucher=new JTextField(20);
Sucher.setText(getSeartch()!=null ? getSeartch() : "");
Sucher.setBounds(100,10,300,25);
Sucher.addActionListener(e -> {
//rerole
frame.dispose();
setSeartch(Sucher.getText());
Startframe();
});
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
final int[] counter = {0};
medienliste.forEach(m -> {
filterlist.forEach(m -> {
if(m.getClass().getName().substring(20).equals(getFilter())){
panel.add(createbutton(m,counter[0],frame));
counter[0]++;
} else if (getFilter().equals("Kein Filter")) {
panel.add(createbutton(m,counter[0],frame));
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));
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));
counter[0]++;
}
});
}
public static JButton createbutton(Medien m, int counter, JFrame frame){
JButton vorlage=new JButton("<html>"+m.getClass().getName().substring(20)
+"<br>"+m.getTitel()
+"<br>"+m.getBeschreibung()
+"<br>"+m.getVerofentlichung()
+"<br>"+(m.getAusgeliehen()!=0 ? "Ausgeliehen" : "Verfügbar")
+"<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.getAusgeliehen()>=0 ? "Ausgeliehen" : "Verfügbar")
+"</html>");
vorlage.setBounds(30+(80*(counter%8)),50+(100*(counter/10)),80,100 );
vorlage.addActionListener(e -> {
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>"+k.getAusgeliehen().get(m).toString()
+"</html>");
vorlage.setBounds(10+(80*(counter%4)),100+(100*(counter/4)),80,100 );
vorlage.addActionListener(e -> {
frame.dispose();
profilframe();
});
return vorlage;
}
public static void Zeitframe(){
System.out.println(Bibiliotek.getDatum().toString());
@ -277,6 +301,15 @@ public class framecreater implements ActionListener {
schulden.setBounds( 10,30,200,25);
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);
profilframe();
});
panel.add(schuldenzuruck);
//studentstatus feld
JLabel studentstatus=new JLabel("Student/Schühler: "+( k.isIstStudent()? "Ja" : "Nein"));
studentstatus.setBounds(10,50,200,25);
@ -292,6 +325,13 @@ public class framecreater implements ActionListener {
});
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
JButton back=new JButton("Zurück");
back.setBounds(10,725,80,25);
@ -301,7 +341,7 @@ public class framecreater implements ActionListener {
});
panel.add(back);
//back button
//abmelden button
JButton abmelden=new JButton("Abmelden");
abmelden.setBounds(90,725,100,25);
abmelden.addActionListener(e -> {
@ -312,6 +352,100 @@ public class framecreater implements ActionListener {
panel.add(abmelden);
}
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();
});
//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);
Startframe();
});
if(m.getAusgeliehen()<0 && getAngemeldeterbenuter()>=0)panel.add(ausleiehen);
if(m.getAusgeliehen()>=0 && m.getAusgeliehen()==getAngemeldeterbenuter())panel.add(zuruckgeben);
}
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();
if(m.getClass().getName().substring(20).equals("Buch"))verlangerung*=4;
if(m.getClass().getName().substring(20).equals("Viedeospiel"))verlangerung*=2;
//wochen berechnen
int weeksapart = ((int) ChronoUnit.DAYS.between(datethen,datenow))/7;
if(weeksapart>verlangerung){
weeksapart-=verlangerung;
weeksapart*=7;
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
public void actionPerformed(ActionEvent e) {

View File

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

View File

@ -8,6 +8,7 @@ public abstract class Medien {
private int nummer;
private int verofentlichung;
private int ausleizeit;
private int ausgeliehen;
abstract public String getAutor();
@ -16,6 +17,11 @@ public abstract class Medien {
abstract public int getNummer();
abstract public int getVerofentlichung();
abstract public int getAusgeliehen();
abstract public int getAusleizeit();
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
}
@ -35,7 +41,12 @@ class Buch extends Medien{
this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0;
this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
@ -67,6 +78,11 @@ class Buch extends Medien{
public int getAusgeliehen() {
return ausgeliehen;
}
@Override
public int getAusleizeit() {
return 4;
}
}
class DVD extends Medien{
@ -84,7 +100,12 @@ class DVD extends Medien{
this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0;
this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
@ -116,6 +137,11 @@ class DVD extends Medien{
public int getAusgeliehen() {
return ausgeliehen;
}
@Override
public int getAusleizeit() {
return 1;
}
}
class CD extends Medien{
@ -133,7 +159,12 @@ class CD extends Medien{
this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0;
this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
@ -165,6 +196,11 @@ class CD extends Medien{
public int getAusgeliehen() {
return ausgeliehen;
}
@Override
public int getAusleizeit() {
return 2;
}
}
class Brettspiel extends Medien{
@ -182,7 +218,12 @@ class Brettspiel extends Medien{
this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0;
this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
@ -214,6 +255,11 @@ class Brettspiel extends Medien{
public int getAusgeliehen() {
return ausgeliehen;
}
@Override
public int getAusleizeit() {
return 2;
}
}
class Viedeospiel extends Medien{
@ -232,7 +278,12 @@ class Viedeospiel extends Medien{
this.beschreibung=beschreibung;
this.verofentlichung=verofentlichung;
this.nummber=Bibiliotek.medienliste.size()+1; //test it
this.ausgeliehen=0;
this.ausgeliehen=-1;
}
@Override
public void setAusgeliehen(int ausgeliehen) {
this.ausgeliehen = ausgeliehen;
}
@Override
@ -264,4 +315,9 @@ class Viedeospiel extends Medien{
public int getAusgeliehen() {
return ausgeliehen;
}
@Override
public int getAusleizeit() {
return 4;
}
}

View File

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