Added Ausleih und bezahl support
parent
0eadf43183
commit
21e30978ce
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue