1885 lines
78 KiB
Java
1885 lines
78 KiB
Java
import javax.swing.*;
|
|
import javax.swing.border.TitledBorder;
|
|
import javax.swing.event.ListSelectionEvent;
|
|
import javax.swing.event.ListSelectionListener;
|
|
import javax.swing.table.DefaultTableModel;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.io.*;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
public class Warenwirtschaftssystem {
|
|
private JFrame frame;
|
|
private JPanel mainPanel;
|
|
private JMenuBar menuBar;
|
|
private JMenu menuDatei, menuVerwaltung, menuBerichte, menuProduktion, menuFinanzen, menuCRM, menuHR, menuIntegration, menuHilfe;
|
|
private JMenuItem menuItemExit, menuItemLogout, menuItemKunden, menuItemProdukte, menuItemBestellungen, menuItemLieferanten, menuItemBestandsbericht, menuItemExportBericht, menuItemHilfe;
|
|
private DefaultListModel<Product> productListModel;
|
|
private DefaultListModel<Supplier> supplierListModel;
|
|
private DefaultListModel<Order> orderListModel;
|
|
private DefaultListModel<Customer> customerListModel;
|
|
private DefaultListModel<Employee> employeeListModel;
|
|
private JList<Product> productList;
|
|
private JList<Supplier> supplierList;
|
|
private JList<Order> orderList;
|
|
private JList<Customer> customerList;
|
|
private JList<Employee> employeeList;
|
|
private List<Product> products;
|
|
private List<Supplier> suppliers;
|
|
private List<Order> orders;
|
|
private List<Customer> customers;
|
|
private List<Employee> employees;
|
|
private int productIdCounter = 1;
|
|
private int supplierIdCounter = 1;
|
|
private int orderIdCounter = 1;
|
|
private int customerIdCounter = 1;
|
|
private int employeeIdCounter = 1;
|
|
private User currentUser;
|
|
private List<User> users;
|
|
|
|
public Warenwirtschaftssystem() {
|
|
initializeUsers();
|
|
showLoginDialog();
|
|
initializeMainComponents();
|
|
loadData();
|
|
checkStockLevels();
|
|
}
|
|
|
|
private void initializeUsers() {
|
|
users = loadUsers();
|
|
if (users.isEmpty()) {
|
|
users.add(new User(1, "admin", "admin123", "Administrator"));
|
|
users.add(new User(2, "manager", "manager123", "Manager"));
|
|
users.add(new User(3, "user", "user123", "User"));
|
|
saveUsers(users);
|
|
}
|
|
}
|
|
|
|
private void showLoginDialog() {
|
|
JPanel loginPanel = new JPanel(new GridLayout(4, 2, 10, 10));
|
|
loginPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Login", TitledBorder.CENTER, TitledBorder.TOP));
|
|
|
|
JTextField usernameField = new JTextField();
|
|
JPasswordField passwordField = new JPasswordField();
|
|
JButton createUserButton = new JButton("Neuen Benutzer erstellen");
|
|
|
|
loginPanel.add(new JLabel("Benutzername:"));
|
|
loginPanel.add(usernameField);
|
|
loginPanel.add(new JLabel("Passwort:"));
|
|
loginPanel.add(passwordField);
|
|
loginPanel.add(createUserButton);
|
|
|
|
createUserButton.addActionListener(e -> showCreateUserDialog());
|
|
|
|
int option = JOptionPane.showConfirmDialog(frame, loginPanel, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
|
if (option == JOptionPane.OK_OPTION) {
|
|
String username = usernameField.getText();
|
|
String password = new String(passwordField.getPassword());
|
|
|
|
Optional<User> userOptional = users.stream().filter(user -> user.getUsername().equals(username) && user.getPassword().equals(password)).findFirst();
|
|
|
|
if (userOptional.isPresent()) {
|
|
currentUser = userOptional.get();
|
|
JOptionPane.showMessageDialog(frame, "Login erfolgreich", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
|
|
} else {
|
|
JOptionPane.showMessageDialog(frame, "Ungültige Anmeldeinformationen", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
showLoginDialog();
|
|
}
|
|
} else {
|
|
System.exit(0);
|
|
}
|
|
}
|
|
|
|
private void showCreateUserDialog() {
|
|
JPanel createUserPanel = new JPanel(new GridLayout(4, 2, 10, 10));
|
|
createUserPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Neuen Benutzer erstellen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
|
|
JTextField usernameField = new JTextField();
|
|
JPasswordField passwordField = new JPasswordField();
|
|
String[] roles = {"Administrator", "Manager", "User"};
|
|
JComboBox<String> roleComboBox = new JComboBox<>(roles);
|
|
|
|
createUserPanel.add(new JLabel("Benutzername:"));
|
|
createUserPanel.add(usernameField);
|
|
createUserPanel.add(new JLabel("Passwort:"));
|
|
createUserPanel.add(passwordField);
|
|
createUserPanel.add(new JLabel("Rolle:"));
|
|
createUserPanel.add(roleComboBox);
|
|
|
|
int option = JOptionPane.showConfirmDialog(frame, createUserPanel, "Neuen Benutzer erstellen", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
|
if (option == JOptionPane.OK_OPTION) {
|
|
String username = usernameField.getText();
|
|
String password = new String(passwordField.getPassword());
|
|
String role = (String) roleComboBox.getSelectedItem();
|
|
|
|
if (!username.isEmpty() && !password.isEmpty() && role != null) {
|
|
users.add(new User(users.size() + 1, username, password, role));
|
|
saveUsers(users);
|
|
JOptionPane.showMessageDialog(frame, "Benutzer erfolgreich erstellt", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
|
|
} else {
|
|
JOptionPane.showMessageDialog(frame, "Bitte alle Felder ausfüllen", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
showCreateUserDialog();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void initializeMainComponents() {
|
|
frame = new JFrame("Warenwirtschaftssystem");
|
|
frame.setSize(1200, 800);
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
mainPanel = new JPanel();
|
|
mainPanel.setLayout(new BorderLayout());
|
|
mainPanel.setBackground(Color.decode("#F5F5F5"));
|
|
|
|
// Menüleiste erstellen
|
|
menuBar = new JMenuBar();
|
|
|
|
menuDatei = new JMenu("Datei");
|
|
menuVerwaltung = new JMenu("Verwaltung");
|
|
menuBerichte = new JMenu("Berichte");
|
|
menuProduktion = new JMenu("Produktion");
|
|
menuFinanzen = new JMenu("Finanzen");
|
|
menuCRM = new JMenu("CRM");
|
|
menuHR = new JMenu("HR");
|
|
menuIntegration = new JMenu("Integration");
|
|
menuHilfe = new JMenu("Hilfe");
|
|
|
|
menuItemExit = new JMenuItem("Beenden");
|
|
menuItemLogout = new JMenuItem("Logout");
|
|
menuItemKunden = new JMenuItem("Kundenverwaltung");
|
|
menuItemProdukte = new JMenuItem("Produktverwaltung");
|
|
menuItemBestellungen = new JMenuItem("Bestellverwaltung");
|
|
menuItemLieferanten = new JMenuItem("Lieferantenverwaltung");
|
|
menuItemBestandsbericht = new JMenuItem("Bestandsbericht");
|
|
menuItemExportBericht = new JMenuItem("Bericht exportieren");
|
|
menuItemHilfe = new JMenuItem("Hilfe");
|
|
|
|
menuItemExit.addActionListener(event -> System.exit(0));
|
|
menuItemLogout.addActionListener(event -> {
|
|
currentUser = null;
|
|
showLoginDialog();
|
|
});
|
|
|
|
// Menüstruktur aufbauen
|
|
menuDatei.add(menuItemLogout);
|
|
menuDatei.add(menuItemExit);
|
|
menuVerwaltung.add(menuItemKunden);
|
|
menuVerwaltung.add(menuItemProdukte);
|
|
menuVerwaltung.add(menuItemBestellungen);
|
|
menuVerwaltung.add(menuItemLieferanten);
|
|
menuBerichte.add(menuItemBestandsbericht);
|
|
menuBerichte.add(menuItemExportBericht);
|
|
menuHilfe.add(menuItemHilfe);
|
|
|
|
menuBar.add(menuDatei);
|
|
menuBar.add(menuVerwaltung);
|
|
menuBar.add(menuBerichte);
|
|
menuBar.add(menuProduktion);
|
|
menuBar.add(menuFinanzen);
|
|
menuBar.add(menuCRM);
|
|
menuBar.add(menuHR);
|
|
menuBar.add(menuIntegration);
|
|
menuBar.add(menuHilfe);
|
|
|
|
frame.setJMenuBar(menuBar);
|
|
|
|
// Hauptfenster
|
|
JLabel welcomeLabel = new JLabel("Willkommen im Warenwirtschaftssystem", JLabel.CENTER);
|
|
welcomeLabel.setFont(new Font("Arial", Font.BOLD, 24));
|
|
welcomeLabel.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(welcomeLabel, BorderLayout.CENTER);
|
|
|
|
frame.add(mainPanel);
|
|
frame.setVisible(true);
|
|
|
|
// Event-Handler für Menüelemente
|
|
menuItemKunden.addActionListener(e -> openKundenverwaltung());
|
|
menuItemProdukte.addActionListener(e -> openProduktverwaltung());
|
|
menuItemBestellungen.addActionListener(e -> openBestellverwaltung());
|
|
menuItemLieferanten.addActionListener(e -> openLieferantenverwaltung());
|
|
menuItemBestandsbericht.addActionListener(e -> openBestandsbericht());
|
|
menuItemExportBericht.addActionListener(e -> exportBericht());
|
|
//menuItemHilfe.addActionListener(e -> showHelp());
|
|
|
|
// Weitere Menüpunkte
|
|
JMenuItem menuItemProduktionsplanung = new JMenuItem("Produktionsplanung");
|
|
JMenuItem menuItemStuecklisten = new JMenuItem("Stücklisten");
|
|
JMenuItem menuItemProduktionssteuerung = new JMenuItem("Produktionssteuerung");
|
|
JMenuItem menuItemQualitaetskontrolle = new JMenuItem("Qualitätskontrolle");
|
|
JMenuItem menuItemProduktionskosten = new JMenuItem("Produktionskosten");
|
|
|
|
menuProduktion.add(menuItemProduktionsplanung);
|
|
menuProduktion.add(menuItemStuecklisten);
|
|
menuProduktion.add(menuItemProduktionssteuerung);
|
|
menuProduktion.add(menuItemQualitaetskontrolle);
|
|
menuProduktion.add(menuItemProduktionskosten);
|
|
|
|
JMenuItem menuItemBuchhaltung = new JMenuItem("Buchhaltung");
|
|
JMenuItem menuItemRechnungswesen = new JMenuItem("Rechnungswesen");
|
|
JMenuItem menuItemKostenrechnung = new JMenuItem("Kostenrechnung");
|
|
JMenuItem menuItemBudgetierung = new JMenuItem("Budgetierung");
|
|
JMenuItem menuItemFinanzberichte = new JMenuItem("Finanzberichte");
|
|
|
|
menuFinanzen.add(menuItemBuchhaltung);
|
|
menuFinanzen.add(menuItemRechnungswesen);
|
|
menuFinanzen.add(menuItemKostenrechnung);
|
|
menuFinanzen.add(menuItemBudgetierung);
|
|
menuFinanzen.add(menuItemFinanzberichte);
|
|
|
|
JMenuItem menuItemKontaktmanagement = new JMenuItem("Kontaktmanagement");
|
|
JMenuItem menuItemVertriebschancen = new JMenuItem("Vertriebschancen");
|
|
JMenuItem menuItemMarketingkampagnen = new JMenuItem("Marketingkampagnen");
|
|
JMenuItem menuItemKundendienst = new JMenuItem("Kundendienst");
|
|
JMenuItem menuItemKundenzufriedenheit = new JMenuItem("Kundenzufriedenheit");
|
|
|
|
menuCRM.add(menuItemKontaktmanagement);
|
|
menuCRM.add(menuItemVertriebschancen);
|
|
menuCRM.add(menuItemMarketingkampagnen);
|
|
menuCRM.add(menuItemKundendienst);
|
|
menuCRM.add(menuItemKundenzufriedenheit);
|
|
|
|
JMenuItem menuItemPersonalverwaltung = new JMenuItem("Personalverwaltung");
|
|
JMenuItem menuItemRekrutierung = new JMenuItem("Rekrutierung");
|
|
JMenuItem menuItemMitarbeiterentwicklung = new JMenuItem("Mitarbeiterentwicklung");
|
|
JMenuItem menuItemZeitmanagement = new JMenuItem("Zeitmanagement");
|
|
JMenuItem menuItemLeistungsbewertung = new JMenuItem("Leistungsbewertung");
|
|
JMenuItem menuItemGehaltsabrechnung = new JMenuItem("Gehaltsabrechnung");
|
|
|
|
menuHR.add(menuItemPersonalverwaltung);
|
|
menuHR.add(menuItemRekrutierung);
|
|
menuHR.add(menuItemMitarbeiterentwicklung);
|
|
menuHR.add(menuItemZeitmanagement);
|
|
menuHR.add(menuItemLeistungsbewertung);
|
|
menuHR.add(menuItemGehaltsabrechnung);
|
|
|
|
JMenuItem menuItemSystemintegration = new JMenuItem("Systemintegration");
|
|
JMenuItem menuItemDatenschnittstellen = new JMenuItem("Datenschnittstellen");
|
|
JMenuItem menuItemEchtzeitDaten = new JMenuItem("Echtzeit-Daten");
|
|
JMenuItem menuItemCloudServices = new JMenuItem("Cloud-Services");
|
|
JMenuItem menuItemEDI = new JMenuItem("EDI");
|
|
|
|
menuIntegration.add(menuItemSystemintegration);
|
|
menuIntegration.add(menuItemDatenschnittstellen);
|
|
menuIntegration.add(menuItemEchtzeitDaten);
|
|
menuIntegration.add(menuItemCloudServices);
|
|
menuIntegration.add(menuItemEDI);
|
|
|
|
menuItemProduktionsplanung.addActionListener(e -> openProduktionsplanung());
|
|
menuItemStuecklisten.addActionListener(e -> openStuecklisten());
|
|
menuItemProduktionssteuerung.addActionListener(e -> openProduktionssteuerung());
|
|
menuItemQualitaetskontrolle.addActionListener(e -> openQualitaetskontrolle());
|
|
menuItemProduktionskosten.addActionListener(e -> openProduktionskosten());
|
|
|
|
menuItemBuchhaltung.addActionListener(e -> openBuchhaltung());
|
|
menuItemRechnungswesen.addActionListener(e -> openRechnungswesen());
|
|
menuItemKostenrechnung.addActionListener(e -> openKostenrechnung());
|
|
menuItemBudgetierung.addActionListener(e -> openBudgetierung());
|
|
menuItemFinanzberichte.addActionListener(e -> openFinanzberichte());
|
|
|
|
menuItemKontaktmanagement.addActionListener(e -> openKontaktmanagement());
|
|
menuItemVertriebschancen.addActionListener(e -> openVertriebschancen());
|
|
menuItemMarketingkampagnen.addActionListener(e -> openMarketingkampagnen());
|
|
menuItemKundendienst.addActionListener(e -> openKundendienst());
|
|
menuItemKundenzufriedenheit.addActionListener(e -> openKundenzufriedenheit());
|
|
|
|
menuItemPersonalverwaltung.addActionListener(e -> openPersonalverwaltung());
|
|
menuItemRekrutierung.addActionListener(e -> openRekrutierung());
|
|
menuItemMitarbeiterentwicklung.addActionListener(e -> openMitarbeiterentwicklung());
|
|
menuItemZeitmanagement.addActionListener(e -> openZeitmanagement());
|
|
menuItemLeistungsbewertung.addActionListener(e -> openLeistungsbewertung());
|
|
menuItemGehaltsabrechnung.addActionListener(e -> openGehaltsabrechnung());
|
|
|
|
//menuItemSystemintegration.addActionListener(e -> openSystemintegration());
|
|
menuItemDatenschnittstellen.addActionListener(e -> openDatenschnittstellen());
|
|
//menuItemEchtzeitDaten.addActionListener(e -> openEchtzeitDaten());
|
|
//menuItemCloudServices.addActionListener(e -> openCloudServices());
|
|
//menuItemEDI.addActionListener(e -> openEDI());
|
|
}
|
|
|
|
private void loadData() {
|
|
products = loadProducts();
|
|
suppliers = loadSuppliers();
|
|
orders = loadOrders();
|
|
customers = loadCustomers();
|
|
employees = loadEmployees();
|
|
|
|
if (!products.isEmpty()) {
|
|
productIdCounter = products.stream().mapToInt(Product::getId).max().orElse(0) + 1;
|
|
}
|
|
if (!suppliers.isEmpty()) {
|
|
supplierIdCounter = suppliers.stream().mapToInt(Supplier::getId).max().orElse(0) + 1;
|
|
}
|
|
if (!orders.isEmpty()) {
|
|
orderIdCounter = orders.stream().mapToInt(Order::getId).max().orElse(0) + 1;
|
|
}
|
|
if (!customers.isEmpty()) {
|
|
customerIdCounter = customers.stream().mapToInt(Customer::getId).max().orElse(0) + 1;
|
|
}
|
|
if (!employees.isEmpty()) {
|
|
employeeIdCounter = employees.stream().mapToInt(Employee::getId).max().orElse(0) + 1;
|
|
}
|
|
}
|
|
|
|
private void checkStockLevels() {
|
|
for (Product product : products) {
|
|
if (product.getAvailableStock() < product.getMinimumStock()) {
|
|
JOptionPane.showMessageDialog(frame, "Warnung: Der Mindestbestand für " + product.getProductName() + " wurde unterschritten!", "Mindestbestand Warnung", JOptionPane.WARNING_MESSAGE);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void openKundenverwaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Kundenverwaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Kunden
|
|
customerListModel = new DefaultListModel<>();
|
|
customerList = new JList<>(customerListModel);
|
|
customerList.setCellRenderer(new CustomerCellRenderer());
|
|
customerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
JScrollPane scrollPane = new JScrollPane(customerList);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Panel zum Hinzufügen neuer Kunden
|
|
JPanel inputPanel = new JPanel(new GridLayout(6, 2, 10, 10));
|
|
inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Kunde hinzufügen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
inputPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
inputPanel.add(new JLabel("Name:"));
|
|
JTextField nameField = new JTextField();
|
|
inputPanel.add(nameField);
|
|
|
|
inputPanel.add(new JLabel("Adresse:"));
|
|
JTextField addressField = new JTextField();
|
|
inputPanel.add(addressField);
|
|
|
|
inputPanel.add(new JLabel("Kontaktinformationen:"));
|
|
JTextField contactField = new JTextField();
|
|
inputPanel.add(contactField);
|
|
|
|
inputPanel.add(new JLabel("Kundensegment:"));
|
|
JTextField segmentField = new JTextField();
|
|
inputPanel.add(segmentField);
|
|
|
|
JButton addButton = new JButton("Hinzufügen");
|
|
addButton.setBackground(Color.decode("#2C3E50"));
|
|
addButton.setForeground(Color.WHITE);
|
|
JButton deleteButton = new JButton("Löschen");
|
|
deleteButton.setBackground(Color.decode("#E74C3C"));
|
|
deleteButton.setForeground(Color.WHITE);
|
|
inputPanel.add(addButton);
|
|
inputPanel.add(deleteButton);
|
|
|
|
mainPanel.add(inputPanel, BorderLayout.SOUTH);
|
|
|
|
addButton.addActionListener(e -> {
|
|
String name = nameField.getText();
|
|
String address = addressField.getText();
|
|
String contact = contactField.getText();
|
|
String segment = segmentField.getText();
|
|
|
|
if (name.isEmpty() || address.isEmpty() || contact.isEmpty() || segment.isEmpty()) {
|
|
JOptionPane.showMessageDialog(frame, "Bitte alle Felder ausfüllen", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
return;
|
|
}
|
|
|
|
Customer customer = new Customer(customerIdCounter++, name, address, contact, segment);
|
|
customers.add(customer);
|
|
saveCustomers(customers);
|
|
|
|
customerListModel.addElement(customer);
|
|
|
|
// Felder leeren
|
|
nameField.setText("");
|
|
addressField.setText("");
|
|
contactField.setText("");
|
|
segmentField.setText("");
|
|
});
|
|
|
|
deleteButton.addActionListener(e -> {
|
|
Customer selectedCustomer = customerList.getSelectedValue();
|
|
if (selectedCustomer != null) {
|
|
customers.removeIf(c -> c.getId() == selectedCustomer.getId());
|
|
saveCustomers(customers);
|
|
customerListModel.removeElement(selectedCustomer);
|
|
}
|
|
});
|
|
|
|
customerList.addListSelectionListener(e -> {
|
|
Customer selectedCustomer = customerList.getSelectedValue();
|
|
if (selectedCustomer != null) {
|
|
showCustomerDetails(selectedCustomer);
|
|
}
|
|
});
|
|
|
|
updateCustomerList();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showCustomerDetails(Customer customer) {
|
|
JPanel customerDetailsPanel = new JPanel(new GridLayout(5, 2, 10, 10));
|
|
customerDetailsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Kundendetails", TitledBorder.CENTER, TitledBorder.TOP));
|
|
customerDetailsPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
customerDetailsPanel.add(new JLabel("Name:"));
|
|
customerDetailsPanel.add(new JLabel(customer.getName()));
|
|
|
|
customerDetailsPanel.add(new JLabel("Adresse:"));
|
|
customerDetailsPanel.add(new JLabel(customer.getAddress()));
|
|
|
|
customerDetailsPanel.add(new JLabel("Kontaktinformationen:"));
|
|
customerDetailsPanel.add(new JLabel(customer.getContact()));
|
|
|
|
customerDetailsPanel.add(new JLabel("Kundensegment:"));
|
|
customerDetailsPanel.add(new JLabel(customer.getSegment()));
|
|
|
|
JButton backButton = new JButton("Zurück");
|
|
backButton.setBackground(Color.decode("#2C3E50"));
|
|
backButton.setForeground(Color.WHITE);
|
|
customerDetailsPanel.add(backButton);
|
|
|
|
backButton.addActionListener(e -> openKundenverwaltung());
|
|
|
|
mainPanel.removeAll();
|
|
mainPanel.add(customerDetailsPanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openProduktverwaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Produktverwaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Produkte
|
|
productListModel = new DefaultListModel<>();
|
|
productList = new JList<>(productListModel);
|
|
productList.setCellRenderer(new ProductCellRenderer());
|
|
productList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
JScrollPane scrollPane = new JScrollPane(productList);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Panel zum Hinzufügen neuer Produkte
|
|
JPanel inputPanel = new JPanel(new GridLayout(12, 2, 10, 10));
|
|
inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Produkt hinzufügen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
inputPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
inputPanel.add(new JLabel("Artikelnummer:"));
|
|
JTextField itemNumberField = new JTextField();
|
|
inputPanel.add(itemNumberField);
|
|
|
|
inputPanel.add(new JLabel("Produktname:"));
|
|
JTextField productNameField = new JTextField();
|
|
inputPanel.add(productNameField);
|
|
|
|
inputPanel.add(new JLabel("Beschreibung:"));
|
|
JTextField descriptionField = new JTextField();
|
|
inputPanel.add(descriptionField);
|
|
|
|
inputPanel.add(new JLabel("Kategorie:"));
|
|
JTextField categoryField = new JTextField();
|
|
inputPanel.add(categoryField);
|
|
|
|
inputPanel.add(new JLabel("Verfügbarer Bestand:"));
|
|
JTextField availableStockField = new JTextField();
|
|
inputPanel.add(availableStockField);
|
|
|
|
inputPanel.add(new JLabel("Mindestbestand:"));
|
|
JTextField minimumStockField = new JTextField();
|
|
inputPanel.add(minimumStockField);
|
|
|
|
inputPanel.add(new JLabel("Lagerort:"));
|
|
JTextField storageLocationField = new JTextField();
|
|
inputPanel.add(storageLocationField);
|
|
|
|
inputPanel.add(new JLabel("Einkaufspreis:"));
|
|
JTextField purchasePriceField = new JTextField();
|
|
inputPanel.add(purchasePriceField);
|
|
|
|
inputPanel.add(new JLabel("Verkaufspreis:"));
|
|
JTextField sellingPriceField = new JTextField();
|
|
inputPanel.add(sellingPriceField);
|
|
|
|
inputPanel.add(new JLabel("Hauptlieferant:"));
|
|
JTextField mainSupplierField = new JTextField();
|
|
inputPanel.add(mainSupplierField);
|
|
|
|
inputPanel.add(new JLabel("Bildpfad:"));
|
|
JTextField imagePathField = new JTextField();
|
|
inputPanel.add(imagePathField);
|
|
|
|
JButton addButton = new JButton("Hinzufügen");
|
|
addButton.setBackground(Color.decode("#2C3E50"));
|
|
addButton.setForeground(Color.WHITE);
|
|
JButton deleteButton = new JButton("Löschen");
|
|
deleteButton.setBackground(Color.decode("#E74C3C"));
|
|
deleteButton.setForeground(Color.WHITE);
|
|
inputPanel.add(addButton);
|
|
inputPanel.add(deleteButton);
|
|
|
|
mainPanel.add(inputPanel, BorderLayout.SOUTH);
|
|
|
|
addButton.addActionListener(e -> {
|
|
try {
|
|
String itemNumber = itemNumberField.getText();
|
|
String productName = productNameField.getText();
|
|
String description = descriptionField.getText();
|
|
String category = categoryField.getText();
|
|
int availableStock = Integer.parseInt(availableStockField.getText());
|
|
int minimumStock = Integer.parseInt(minimumStockField.getText());
|
|
String storageLocation = storageLocationField.getText();
|
|
double purchasePrice = Double.parseDouble(purchasePriceField.getText());
|
|
double sellingPrice = Double.parseDouble(sellingPriceField.getText());
|
|
String mainSupplier = mainSupplierField.getText();
|
|
String imagePath = imagePathField.getText();
|
|
|
|
Product product = new Product(productIdCounter++, itemNumber, productName, description, category, availableStock, minimumStock, storageLocation, purchasePrice, sellingPrice, mainSupplier, imagePath);
|
|
products.add(product);
|
|
saveProducts(products);
|
|
|
|
productListModel.addElement(product);
|
|
|
|
// Felder leeren
|
|
itemNumberField.setText("");
|
|
productNameField.setText("");
|
|
descriptionField.setText("");
|
|
categoryField.setText("");
|
|
availableStockField.setText("");
|
|
minimumStockField.setText("");
|
|
storageLocationField.setText("");
|
|
purchasePriceField.setText("");
|
|
sellingPriceField.setText("");
|
|
mainSupplierField.setText("");
|
|
imagePathField.setText("");
|
|
} catch (NumberFormatException ex) {
|
|
JOptionPane.showMessageDialog(frame, "Bitte gültige Werte eingeben", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
}
|
|
});
|
|
|
|
deleteButton.addActionListener(e -> {
|
|
Product selectedProduct = productList.getSelectedValue();
|
|
if (selectedProduct != null) {
|
|
products.removeIf(p -> p.getId() == selectedProduct.getId());
|
|
saveProducts(products);
|
|
productListModel.removeElement(selectedProduct);
|
|
}
|
|
});
|
|
|
|
productList.addListSelectionListener(e -> {
|
|
Product selectedProduct = productList.getSelectedValue();
|
|
if (selectedProduct != null) {
|
|
showProductDetails(selectedProduct);
|
|
}
|
|
});
|
|
|
|
updateProductList();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showProductDetails(Product product) {
|
|
JPanel productDetailsPanel = new JPanel(new GridLayout(12, 2, 10, 10));
|
|
productDetailsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Produktdetails", TitledBorder.CENTER, TitledBorder.TOP));
|
|
productDetailsPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
productDetailsPanel.add(new JLabel("Artikelnummer:"));
|
|
productDetailsPanel.add(new JLabel(product.getItemNumber()));
|
|
|
|
productDetailsPanel.add(new JLabel("Produktname:"));
|
|
productDetailsPanel.add(new JLabel(product.getProductName()));
|
|
|
|
productDetailsPanel.add(new JLabel("Beschreibung:"));
|
|
productDetailsPanel.add(new JLabel(product.getDescription()));
|
|
|
|
productDetailsPanel.add(new JLabel("Kategorie:"));
|
|
productDetailsPanel.add(new JLabel(product.getCategory()));
|
|
|
|
productDetailsPanel.add(new JLabel("Verfügbarer Bestand:"));
|
|
productDetailsPanel.add(new JLabel(String.valueOf(product.getAvailableStock())));
|
|
|
|
productDetailsPanel.add(new JLabel("Mindestbestand:"));
|
|
productDetailsPanel.add(new JLabel(String.valueOf(product.getMinimumStock())));
|
|
|
|
productDetailsPanel.add(new JLabel("Lagerort:"));
|
|
productDetailsPanel.add(new JLabel(product.getStorageLocation()));
|
|
|
|
productDetailsPanel.add(new JLabel("Einkaufspreis:"));
|
|
productDetailsPanel.add(new JLabel(String.valueOf(product.getPurchasePrice())));
|
|
|
|
productDetailsPanel.add(new JLabel("Verkaufspreis:"));
|
|
productDetailsPanel.add(new JLabel(String.valueOf(product.getSellingPrice())));
|
|
|
|
productDetailsPanel.add(new JLabel("Hauptlieferant:"));
|
|
productDetailsPanel.add(new JLabel(product.getMainSupplier()));
|
|
|
|
productDetailsPanel.add(new JLabel("Bild:"));
|
|
if (!product.getImagePath().isEmpty()) {
|
|
ImageIcon productImage = new ImageIcon(product.getImagePath());
|
|
JLabel imageLabel = new JLabel(productImage);
|
|
imageLabel.setPreferredSize(new Dimension(100, 100));
|
|
imageLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
|
productDetailsPanel.add(imageLabel);
|
|
} else {
|
|
productDetailsPanel.add(new JLabel("Kein Bild verfügbar"));
|
|
}
|
|
|
|
JButton backButton = new JButton("Zurück");
|
|
backButton.setBackground(Color.decode("#2C3E50"));
|
|
backButton.setForeground(Color.WHITE);
|
|
productDetailsPanel.add(backButton);
|
|
|
|
backButton.addActionListener(e -> openProduktverwaltung());
|
|
|
|
mainPanel.removeAll();
|
|
mainPanel.add(productDetailsPanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openBestellverwaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Bestellverwaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Bestellungen
|
|
orderListModel = new DefaultListModel<>();
|
|
orderList = new JList<>(orderListModel);
|
|
orderList.setCellRenderer(new OrderCellRenderer());
|
|
orderList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
JScrollPane scrollPane = new JScrollPane(orderList);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Panel zum Hinzufügen neuer Bestellungen
|
|
JPanel inputPanel = new JPanel(new GridLayout(7, 2, 10, 10));
|
|
inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Bestellung hinzufügen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
inputPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
inputPanel.add(new JLabel("Produkt:"));
|
|
JTextField productField = new JTextField();
|
|
inputPanel.add(productField);
|
|
|
|
inputPanel.add(new JLabel("Menge:"));
|
|
JTextField quantityField = new JTextField();
|
|
inputPanel.add(quantityField);
|
|
|
|
inputPanel.add(new JLabel("Datum:"));
|
|
JTextField dateField = new JTextField();
|
|
inputPanel.add(dateField);
|
|
|
|
inputPanel.add(new JLabel("Lieferdatum:"));
|
|
JTextField deliveryDateField = new JTextField();
|
|
inputPanel.add(deliveryDateField);
|
|
|
|
inputPanel.add(new JLabel("Status:"));
|
|
String[] statuses = {"Bestellt", "Versendet", "Geliefert"};
|
|
JComboBox<String> statusComboBox = new JComboBox<>(statuses);
|
|
inputPanel.add(statusComboBox);
|
|
|
|
JButton addButton = new JButton("Hinzufügen");
|
|
addButton.setBackground(Color.decode("#2C3E50"));
|
|
addButton.setForeground(Color.WHITE);
|
|
JButton deleteButton = new JButton("Löschen");
|
|
deleteButton.setBackground(Color.decode("#E74C3C"));
|
|
deleteButton.setForeground(Color.WHITE);
|
|
inputPanel.add(addButton);
|
|
inputPanel.add(deleteButton);
|
|
|
|
mainPanel.add(inputPanel, BorderLayout.SOUTH);
|
|
|
|
addButton.addActionListener(e -> {
|
|
try {
|
|
String product = productField.getText();
|
|
int quantity = Integer.parseInt(quantityField.getText());
|
|
String date = dateField.getText();
|
|
String deliveryDate = deliveryDateField.getText();
|
|
String status = (String) statusComboBox.getSelectedItem();
|
|
|
|
Order order = new Order(orderIdCounter++, product, quantity, date, deliveryDate, status);
|
|
orders.add(order);
|
|
saveOrders(orders);
|
|
|
|
orderListModel.addElement(order);
|
|
|
|
// Felder leeren
|
|
productField.setText("");
|
|
quantityField.setText("");
|
|
dateField.setText("");
|
|
deliveryDateField.setText("");
|
|
} catch (NumberFormatException ex) {
|
|
JOptionPane.showMessageDialog(frame, "Bitte gültige Werte eingeben", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
}
|
|
});
|
|
|
|
deleteButton.addActionListener(e -> {
|
|
Order selectedOrder = orderList.getSelectedValue();
|
|
if (selectedOrder != null) {
|
|
orders.removeIf(o -> o.getId() == selectedOrder.getId());
|
|
saveOrders(orders);
|
|
orderListModel.removeElement(selectedOrder);
|
|
}
|
|
});
|
|
|
|
orderList.addListSelectionListener(e -> {
|
|
Order selectedOrder = orderList.getSelectedValue();
|
|
if (selectedOrder != null) {
|
|
showOrderDetails(selectedOrder);
|
|
}
|
|
});
|
|
|
|
updateOrderList();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showOrderDetails(Order order) {
|
|
JPanel orderDetailsPanel = new JPanel(new GridLayout(6, 2, 10, 10));
|
|
orderDetailsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Bestelldetails", TitledBorder.CENTER, TitledBorder.TOP));
|
|
orderDetailsPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
orderDetailsPanel.add(new JLabel("Bestellnummer:"));
|
|
orderDetailsPanel.add(new JLabel(String.valueOf(order.getId())));
|
|
|
|
orderDetailsPanel.add(new JLabel("Produkt:"));
|
|
orderDetailsPanel.add(new JLabel(order.getProduct()));
|
|
|
|
orderDetailsPanel.add(new JLabel("Menge:"));
|
|
orderDetailsPanel.add(new JLabel(String.valueOf(order.getQuantity())));
|
|
|
|
orderDetailsPanel.add(new JLabel("Datum:"));
|
|
orderDetailsPanel.add(new JLabel(order.getDate()));
|
|
|
|
orderDetailsPanel.add(new JLabel("Lieferdatum:"));
|
|
orderDetailsPanel.add(new JLabel(order.getDeliveryDate()));
|
|
|
|
orderDetailsPanel.add(new JLabel("Status:"));
|
|
JLabel statusLabel = new JLabel(order.getStatus());
|
|
switch (order.getStatus()) {
|
|
case "Bestellt":
|
|
statusLabel.setForeground(Color.RED);
|
|
break;
|
|
case "Versendet":
|
|
statusLabel.setForeground(Color.YELLOW);
|
|
break;
|
|
case "Geliefert":
|
|
statusLabel.setForeground(Color.GREEN);
|
|
break;
|
|
}
|
|
orderDetailsPanel.add(statusLabel);
|
|
|
|
JButton backButton = new JButton("Zurück");
|
|
backButton.setBackground(Color.decode("#2C3E50"));
|
|
backButton.setForeground(Color.WHITE);
|
|
orderDetailsPanel.add(backButton);
|
|
|
|
backButton.addActionListener(e -> openBestellverwaltung());
|
|
|
|
mainPanel.removeAll();
|
|
mainPanel.add(orderDetailsPanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openLieferantenverwaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Lieferantenverwaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Lieferanten
|
|
supplierListModel = new DefaultListModel<>();
|
|
supplierList = new JList<>(supplierListModel);
|
|
supplierList.setCellRenderer(new SupplierCellRenderer());
|
|
supplierList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
JScrollPane scrollPane = new JScrollPane(supplierList);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Panel zum Hinzufügen neuer Lieferanten
|
|
JPanel inputPanel = new JPanel(new GridLayout(7, 2, 10, 10));
|
|
inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Lieferant hinzufügen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
inputPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
inputPanel.add(new JLabel("Name:"));
|
|
JTextField nameField = new JTextField();
|
|
inputPanel.add(nameField);
|
|
|
|
inputPanel.add(new JLabel("Adresse:"));
|
|
JTextField addressField = new JTextField();
|
|
inputPanel.add(addressField);
|
|
|
|
inputPanel.add(new JLabel("Kontaktinformationen:"));
|
|
JTextField contactField = new JTextField();
|
|
inputPanel.add(contactField);
|
|
|
|
inputPanel.add(new JLabel("Vertragsdetails:"));
|
|
JTextField contractDetailsField = new JTextField();
|
|
inputPanel.add(contractDetailsField);
|
|
|
|
inputPanel.add(new JLabel("Bestellhistorie:"));
|
|
JTextField orderHistoryField = new JTextField();
|
|
inputPanel.add(orderHistoryField);
|
|
|
|
inputPanel.add(new JLabel("Qualitätsbewertung:"));
|
|
JTextField qualityRatingField = new JTextField();
|
|
inputPanel.add(qualityRatingField);
|
|
|
|
JButton addButton = new JButton("Hinzufügen");
|
|
addButton.setBackground(Color.decode("#2C3E50"));
|
|
addButton.setForeground(Color.WHITE);
|
|
JButton deleteButton = new JButton("Löschen");
|
|
deleteButton.setBackground(Color.decode("#E74C3C"));
|
|
deleteButton.setForeground(Color.WHITE);
|
|
inputPanel.add(addButton);
|
|
inputPanel.add(deleteButton);
|
|
|
|
mainPanel.add(inputPanel, BorderLayout.SOUTH);
|
|
|
|
addButton.addActionListener(e -> {
|
|
String name = nameField.getText();
|
|
String address = addressField.getText();
|
|
String contact = contactField.getText();
|
|
String contractDetails = contractDetailsField.getText();
|
|
String orderHistory = orderHistoryField.getText();
|
|
String qualityRating = qualityRatingField.getText();
|
|
|
|
if (name.isEmpty() || address.isEmpty() || contact.isEmpty() || contractDetails.isEmpty() || orderHistory.isEmpty() || qualityRating.isEmpty()) {
|
|
JOptionPane.showMessageDialog(frame, "Bitte alle Felder ausfüllen", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
return;
|
|
}
|
|
|
|
Supplier supplier = new Supplier(supplierIdCounter++, name, address, contact, contractDetails, orderHistory, qualityRating);
|
|
suppliers.add(supplier);
|
|
saveSuppliers(suppliers);
|
|
|
|
supplierListModel.addElement(supplier);
|
|
|
|
// Felder leeren
|
|
nameField.setText("");
|
|
addressField.setText("");
|
|
contactField.setText("");
|
|
contractDetailsField.setText("");
|
|
orderHistoryField.setText("");
|
|
qualityRatingField.setText("");
|
|
});
|
|
|
|
deleteButton.addActionListener(e -> {
|
|
Supplier selectedSupplier = supplierList.getSelectedValue();
|
|
if (selectedSupplier != null) {
|
|
suppliers.removeIf(s -> s.getId() == selectedSupplier.getId());
|
|
saveSuppliers(suppliers);
|
|
supplierListModel.removeElement(selectedSupplier);
|
|
}
|
|
});
|
|
|
|
supplierList.addListSelectionListener(e -> {
|
|
Supplier selectedSupplier = supplierList.getSelectedValue();
|
|
if (selectedSupplier != null) {
|
|
showSupplierDetails(selectedSupplier);
|
|
}
|
|
});
|
|
|
|
updateSupplierList();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showSupplierDetails(Supplier supplier) {
|
|
JPanel supplierDetailsPanel = new JPanel(new GridLayout(7, 2, 10, 10));
|
|
supplierDetailsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Lieferantendetails", TitledBorder.CENTER, TitledBorder.TOP));
|
|
supplierDetailsPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Lieferantennummer:"));
|
|
supplierDetailsPanel.add(new JLabel(String.valueOf(supplier.getId())));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Name:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getName()));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Adresse:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getAddress()));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Kontaktinformationen:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getContact()));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Vertragsdetails:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getContractDetails()));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Bestellhistorie:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getOrderHistory()));
|
|
|
|
supplierDetailsPanel.add(new JLabel("Qualitätsbewertung:"));
|
|
supplierDetailsPanel.add(new JLabel(supplier.getQualityRating()));
|
|
|
|
JButton backButton = new JButton("Zurück");
|
|
backButton.setBackground(Color.decode("#2C3E50"));
|
|
backButton.setForeground(Color.WHITE);
|
|
supplierDetailsPanel.add(backButton);
|
|
|
|
backButton.addActionListener(e -> openLieferantenverwaltung());
|
|
|
|
mainPanel.removeAll();
|
|
mainPanel.add(supplierDetailsPanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openBestandsbericht() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Bestandsbericht", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Tabelle zur Anzeige der Bestände
|
|
String[] columns = {"Artikelnummer", "Produktname", "Verfügbarer Bestand", "Mindestbestand", "Lagerwert"};
|
|
DefaultTableModel inventoryTableModel = new DefaultTableModel(columns, 0);
|
|
JTable table = new JTable(inventoryTableModel);
|
|
JScrollPane scrollPane = new JScrollPane(table);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
for (Product product : products) {
|
|
Object[] row = {product.getItemNumber(), product.getProductName(), product.getAvailableStock(), product.getMinimumStock(), product.getAvailableStock() * product.getSellingPrice()};
|
|
inventoryTableModel.addRow(row);
|
|
}
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void exportBericht() {
|
|
JFileChooser fileChooser = new JFileChooser();
|
|
fileChooser.setDialogTitle("Bericht exportieren");
|
|
int userSelection = fileChooser.showSaveDialog(frame);
|
|
|
|
if (userSelection == JFileChooser.APPROVE_OPTION) {
|
|
File fileToSave = fileChooser.getSelectedFile();
|
|
|
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileToSave))) {
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
for (Product product : products) {
|
|
sb.append(product.getItemNumber()).append(",");
|
|
sb.append(product.getProductName()).append(",");
|
|
sb.append(product.getAvailableStock()).append(",");
|
|
sb.append(product.getMinimumStock()).append(",");
|
|
sb.append(product.getAvailableStock() * product.getSellingPrice()).append("\n");
|
|
}
|
|
|
|
writer.write(sb.toString());
|
|
JOptionPane.showMessageDialog(frame, "Bericht erfolgreich exportiert", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
|
|
} catch (IOException e) {
|
|
JOptionPane.showMessageDialog(frame, "Fehler beim Exportieren des Berichts", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void openProduktionsplanung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Produktionsplanung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JPanel panel = new JPanel(new GridLayout(5, 2, 10, 10));
|
|
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Produktionsplanung", TitledBorder.CENTER, TitledBorder.TOP));
|
|
panel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
panel.add(new JLabel("Plan erstellen"));
|
|
JButton createPlanButton = new JButton("Plan erstellen");
|
|
panel.add(createPlanButton);
|
|
|
|
panel.add(new JLabel("Stückliste verwalten"));
|
|
JButton manageBOMButton = new JButton("Stückliste anzeigen");
|
|
panel.add(manageBOMButton);
|
|
|
|
panel.add(new JLabel("Produktionssteuerung"));
|
|
JButton productionControlButton = new JButton("Steuerung anzeigen");
|
|
panel.add(productionControlButton);
|
|
|
|
panel.add(new JLabel("Qualitätskontrolle"));
|
|
JButton qualityControlButton = new JButton("Kontrolle anzeigen");
|
|
panel.add(qualityControlButton);
|
|
|
|
panel.add(new JLabel("Produktionskosten"));
|
|
JButton productionCostsButton = new JButton("Kosten anzeigen");
|
|
panel.add(productionCostsButton);
|
|
|
|
createPlanButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Produktionsplan erstellt", "Erfolg", JOptionPane.INFORMATION_MESSAGE));
|
|
manageBOMButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Stückliste verwaltet", "Erfolg", JOptionPane.INFORMATION_MESSAGE));
|
|
productionControlButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Produktionssteuerung angezeigt", "Erfolg", JOptionPane.INFORMATION_MESSAGE));
|
|
qualityControlButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Qualitätskontrolle durchgeführt", "Erfolg", JOptionPane.INFORMATION_MESSAGE));
|
|
productionCostsButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Produktionskosten berechnet", "Erfolg", JOptionPane.INFORMATION_MESSAGE));
|
|
|
|
mainPanel.add(panel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openStuecklisten() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Stücklisten", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Verwaltung von Stücklisten
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openProduktionssteuerung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Produktionssteuerung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Produktionssteuerung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openQualitaetskontrolle() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Qualitätskontrolle", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Qualitätskontrolle
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openProduktionskosten() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Produktionskosten", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Produktionskosten
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openBuchhaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Buchhaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Buchhaltung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openRechnungswesen() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Rechnungswesen", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zum Rechnungswesen
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openKostenrechnung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Kostenrechnung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Kostenrechnung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openBudgetierung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Budgetierung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität zur Budgetierung
|
|
// Beispiel für ein Diagramm (Dummy-Daten)
|
|
JPanel panel = new JPanel(new BorderLayout());
|
|
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Budgetierung", TitledBorder.CENTER, TitledBorder.TOP));
|
|
panel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
String[] columnNames = {"Kategorie", "Geplant", "Aktuell"};
|
|
Object[][] data = {
|
|
{"Marketing", 10000, 8000},
|
|
{"Forschung & Entwicklung", 15000, 12000},
|
|
{"Produktion", 20000, 18000}
|
|
};
|
|
|
|
JTable table = new JTable(data, columnNames);
|
|
JScrollPane scrollPane = new JScrollPane(table);
|
|
panel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
mainPanel.add(panel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openFinanzberichte() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Finanzberichte", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Finanzberichte
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openKontaktmanagement() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Kontaktmanagement", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Kontaktmanagement
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openVertriebschancen() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Vertriebschancen", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Vertriebschancen
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openMarketingkampagnen() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Marketingkampagnen", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Marketingkampagnen
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openKundendienst() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Kundendienst", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Kundendienst
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openKundenzufriedenheit() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Kundenzufriedenheit", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Kundenzufriedenheit
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openPersonalverwaltung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Personalverwaltung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Mitarbeiter
|
|
employeeListModel = new DefaultListModel<>();
|
|
employeeList = new JList<>(employeeListModel);
|
|
employeeList.setCellRenderer(new EmployeeCellRenderer());
|
|
employeeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
|
JScrollPane scrollPane = new JScrollPane(employeeList);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Panel zum Hinzufügen neuer Mitarbeiter
|
|
JPanel inputPanel = new JPanel(new GridLayout(6, 2, 10, 10));
|
|
inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Mitarbeiter hinzufügen", TitledBorder.CENTER, TitledBorder.TOP));
|
|
inputPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
inputPanel.add(new JLabel("Name:"));
|
|
JTextField nameField = new JTextField();
|
|
inputPanel.add(nameField);
|
|
|
|
inputPanel.add(new JLabel("Position:"));
|
|
JTextField positionField = new JTextField();
|
|
inputPanel.add(positionField);
|
|
|
|
inputPanel.add(new JLabel("Abteilung:"));
|
|
JTextField departmentField = new JTextField();
|
|
inputPanel.add(departmentField);
|
|
|
|
inputPanel.add(new JLabel("Gehalt:"));
|
|
JTextField salaryField = new JTextField();
|
|
inputPanel.add(salaryField);
|
|
|
|
JButton addButton = new JButton("Hinzufügen");
|
|
addButton.setBackground(Color.decode("#2C3E50"));
|
|
addButton.setForeground(Color.WHITE);
|
|
JButton deleteButton = new JButton("Löschen");
|
|
deleteButton.setBackground(Color.decode("#E74C3C"));
|
|
deleteButton.setForeground(Color.WHITE);
|
|
inputPanel.add(addButton);
|
|
inputPanel.add(deleteButton);
|
|
|
|
mainPanel.add(inputPanel, BorderLayout.SOUTH);
|
|
|
|
addButton.addActionListener(e -> {
|
|
String name = nameField.getText();
|
|
String position = positionField.getText();
|
|
String department = departmentField.getText();
|
|
double salary = Double.parseDouble(salaryField.getText());
|
|
|
|
if (name.isEmpty() || position.isEmpty() || department.isEmpty() || salaryField.getText().isEmpty()) {
|
|
JOptionPane.showMessageDialog(frame, "Bitte alle Felder ausfüllen", "Fehler", JOptionPane.ERROR_MESSAGE);
|
|
return;
|
|
}
|
|
|
|
Employee employee = new Employee(employeeIdCounter++, name, position, department, salary);
|
|
employees.add(employee);
|
|
saveEmployees(employees);
|
|
|
|
employeeListModel.addElement(employee);
|
|
|
|
// Felder leeren
|
|
nameField.setText("");
|
|
positionField.setText("");
|
|
departmentField.setText("");
|
|
salaryField.setText("");
|
|
});
|
|
|
|
deleteButton.addActionListener(e -> {
|
|
Employee selectedEmployee = employeeList.getSelectedValue();
|
|
if (selectedEmployee != null) {
|
|
employees.removeIf(emp -> emp.getId() == selectedEmployee.getId());
|
|
saveEmployees(employees);
|
|
employeeListModel.removeElement(selectedEmployee);
|
|
}
|
|
});
|
|
|
|
employeeList.addListSelectionListener(e -> {
|
|
Employee selectedEmployee = employeeList.getSelectedValue();
|
|
if (selectedEmployee != null) {
|
|
showEmployeeDetails(selectedEmployee);
|
|
}
|
|
});
|
|
|
|
updateEmployeeList();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showEmployeeDetails(Employee employee) {
|
|
JPanel employeeDetailsPanel = new JPanel(new GridLayout(5, 2, 10, 10));
|
|
employeeDetailsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Mitarbeiterdetails", TitledBorder.CENTER, TitledBorder.TOP));
|
|
employeeDetailsPanel.setBackground(Color.decode("#ECF0F1"));
|
|
|
|
employeeDetailsPanel.add(new JLabel("Name:"));
|
|
employeeDetailsPanel.add(new JLabel(employee.getName()));
|
|
|
|
employeeDetailsPanel.add(new JLabel("Position:"));
|
|
employeeDetailsPanel.add(new JLabel(employee.getPosition()));
|
|
|
|
employeeDetailsPanel.add(new JLabel("Abteilung:"));
|
|
employeeDetailsPanel.add(new JLabel(employee.getDepartment()));
|
|
|
|
employeeDetailsPanel.add(new JLabel("Gehalt:"));
|
|
employeeDetailsPanel.add(new JLabel(String.valueOf(employee.getSalary())));
|
|
|
|
JButton backButton = new JButton("Zurück");
|
|
backButton.setBackground(Color.decode("#2C3E50"));
|
|
backButton.setForeground(Color.WHITE);
|
|
employeeDetailsPanel.add(backButton);
|
|
|
|
backButton.addActionListener(e -> openPersonalverwaltung());
|
|
|
|
mainPanel.removeAll();
|
|
mainPanel.add(employeeDetailsPanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openRekrutierung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Rekrutierung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Rekrutierung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openMitarbeiterentwicklung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Mitarbeiterentwicklung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Mitarbeiterentwicklung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openZeitmanagement() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Zeitmanagement", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Zeitmanagement
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openLeistungsbewertung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Leistungsbewertung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Implementiere hier die Funktionalität für Leistungsbewertung
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openGehaltsabrechnung() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Gehaltsabrechnung", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
// Liste zur Anzeige der Gehälter
|
|
String[] columns = {"Mitarbeiter", "Gehalt"};
|
|
DefaultTableModel salaryTableModel = new DefaultTableModel(columns, 0);
|
|
JTable table = new JTable(salaryTableModel);
|
|
JScrollPane scrollPane = new JScrollPane(table);
|
|
mainPanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
for (Employee employee : employees) {
|
|
Object[] row = {employee.getName(), employee.getSalary()};
|
|
salaryTableModel.addRow(row);
|
|
}
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void updateCustomerList() {
|
|
customerListModel.removeAllElements();
|
|
for (Customer customer : customers) {
|
|
customerListModel.addElement(customer);
|
|
}
|
|
}
|
|
|
|
private void updateProductList() {
|
|
productListModel.removeAllElements();
|
|
for (Product product : products) {
|
|
productListModel.addElement(product);
|
|
}
|
|
}
|
|
|
|
private void updateSupplierList() {
|
|
supplierListModel.removeAllElements();
|
|
for (Supplier supplier : suppliers) {
|
|
supplierListModel.addElement(supplier);
|
|
}
|
|
}
|
|
|
|
private void updateOrderList() {
|
|
orderListModel.removeAllElements();
|
|
for (Order order : orders) {
|
|
orderListModel.addElement(order);
|
|
}
|
|
}
|
|
|
|
private void updateEmployeeList() {
|
|
employeeListModel.removeAllElements();
|
|
for (Employee employee : employees) {
|
|
employeeListModel.addElement(employee);
|
|
}
|
|
}
|
|
|
|
private List<Product> loadProducts() {
|
|
List<Product> productList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("products.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String itemNumber = data[1];
|
|
String productName = data[2];
|
|
String description = data[3];
|
|
String category = data[4];
|
|
int availableStock = Integer.parseInt(data[5]);
|
|
int minimumStock = Integer.parseInt(data[6]);
|
|
String storageLocation = data[7];
|
|
double purchasePrice = Double.parseDouble(data[8]);
|
|
double sellingPrice = Double.parseDouble(data[9]);
|
|
String mainSupplier = data[10];
|
|
String imagePath = data[11];
|
|
productList.add(new Product(id, itemNumber, productName, description, category, availableStock, minimumStock, storageLocation, purchasePrice, sellingPrice, mainSupplier, imagePath));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return productList;
|
|
}
|
|
|
|
private List<Supplier> loadSuppliers() {
|
|
List<Supplier> supplierList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("suppliers.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String name = data[1];
|
|
String address = data[2];
|
|
String contact = data[3];
|
|
String contractDetails = data[4];
|
|
String orderHistory = data[5];
|
|
String qualityRating = data[6];
|
|
supplierList.add(new Supplier(id, name, address, contact, contractDetails, orderHistory, qualityRating));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return supplierList;
|
|
}
|
|
|
|
private List<Order> loadOrders() {
|
|
List<Order> orderList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("orders.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String product = data[1];
|
|
int quantity = Integer.parseInt(data[2]);
|
|
String date = data[3];
|
|
String deliveryDate = data[4];
|
|
String status = data[5];
|
|
orderList.add(new Order(id, product, quantity, date, deliveryDate, status));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return orderList;
|
|
}
|
|
|
|
private List<Customer> loadCustomers() {
|
|
List<Customer> customerList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("customers.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String name = data[1];
|
|
String address = data[2];
|
|
String contact = data[3];
|
|
String segment = data[4];
|
|
customerList.add(new Customer(id, name, address, contact, segment));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return customerList;
|
|
}
|
|
|
|
private List<Employee> loadEmployees() {
|
|
List<Employee> employeeList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("employees.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String name = data[1];
|
|
String position = data[2];
|
|
String department = data[3];
|
|
double salary = Double.parseDouble(data[4]);
|
|
employeeList.add(new Employee(id, name, position, department, salary));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return employeeList;
|
|
}
|
|
|
|
private List<User> loadUsers() {
|
|
List<User> userList = new ArrayList<>();
|
|
try (BufferedReader br = new BufferedReader(new FileReader("users.txt"))) {
|
|
String line;
|
|
while ((line = br.readLine()) != null) {
|
|
String[] data = line.split(",");
|
|
int id = Integer.parseInt(data[0]);
|
|
String username = data[1];
|
|
String password = data[2];
|
|
String role = data[3];
|
|
userList.add(new User(id, username, password, role));
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return userList;
|
|
}
|
|
|
|
private void saveProducts(List<Product> products) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("products.txt"))) {
|
|
for (Product product : products) {
|
|
bw.write(product.getId() + "," + product.getItemNumber() + "," + product.getProductName() + "," + product.getDescription() + "," + product.getCategory() + "," + product.getAvailableStock() + "," + product.getMinimumStock() + "," + product.getStorageLocation() + "," + product.getPurchasePrice() + "," + product.getSellingPrice() + "," + product.getMainSupplier() + "," + product.getImagePath());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void saveSuppliers(List<Supplier> suppliers) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("suppliers.txt"))) {
|
|
for (Supplier supplier : suppliers) {
|
|
bw.write(supplier.getId() + "," + supplier.getName() + "," + supplier.getAddress() + "," + supplier.getContact() + "," + supplier.getContractDetails() + "," + supplier.getOrderHistory() + "," + supplier.getQualityRating());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void saveOrders(List<Order> orders) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("orders.txt"))) {
|
|
for (Order order : orders) {
|
|
bw.write(order.getId() + "," + order.getProduct() + "," + order.getQuantity() + "," + order.getDate() + "," + order.getDeliveryDate() + "," + order.getStatus());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void saveCustomers(List<Customer> customers) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("customers.txt"))) {
|
|
for (Customer customer : customers) {
|
|
bw.write(customer.getId() + "," + customer.getName() + "," + customer.getAddress() + "," + customer.getContact() + "," + customer.getSegment());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void saveEmployees(List<Employee> employees) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("employees.txt"))) {
|
|
for (Employee employee : employees) {
|
|
bw.write(employee.getId() + "," + employee.getName() + "," + employee.getPosition() + "," + employee.getDepartment() + "," + employee.getSalary());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void saveUsers(List<User> users) {
|
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter("users.txt"))) {
|
|
for (User user : users) {
|
|
bw.write(user.getId() + "," + user.getUsername() + "," + user.getPassword() + "," + user.getRole());
|
|
bw.newLine();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
private void openDatenschnittstellen() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Datenschnittstellen", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JPanel dataInterfacePanel = new JPanel(new BorderLayout());
|
|
DefaultTableModel interfaceModel = new DefaultTableModel(new Object[]{"Schnittstellen-ID", "Typ", "Status"}, 0);
|
|
JTable interfaceTable = new JTable(interfaceModel);
|
|
JScrollPane scrollPane = new JScrollPane(interfaceTable);
|
|
dataInterfacePanel.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
// Beispiel: Fügen Sie hier Datenschnittstellen hinzu
|
|
interfaceModel.addRow(new Object[]{1, "API", "Aktiv"});
|
|
interfaceModel.addRow(new Object[]{2, "FTP", "Inaktiv"});
|
|
|
|
mainPanel.add(dataInterfacePanel, BorderLayout.CENTER);
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void showHelp() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Hilfe", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JTextArea textArea = new JTextArea("Kontaktinformationen:\n\n" +
|
|
"Support: support@example.com\n" +
|
|
"Telefon: +49 123 456 789\n" +
|
|
"Adresse: Beispielstraße 1, 12345 Beispielstadt\n\n" +
|
|
"Dies ist das Warenwirtschaftssystem. Verwenden Sie die Menüs, um verschiedene Verwaltungsfunktionen auszuführen. " +
|
|
"Unter 'Produktverwaltung' können Sie Produkte hinzufügen, bearbeiten und löschen. " +
|
|
"Unter 'Bestandsbericht' können Sie den aktuellen Lagerbestand einsehen und feststellen, welche Produkte nachbestellt werden müssen.");
|
|
textArea.setWrapStyleWord(true);
|
|
textArea.setLineWrap(true);
|
|
textArea.setEditable(false);
|
|
textArea.setFont(new Font("Arial", Font.PLAIN, 18));
|
|
mainPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openSystemintegration() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Systemintegration", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JTextArea textArea = new JTextArea("Hier können Sie die Systemintegration verwalten.\n\n" +
|
|
"Optionen:\n" +
|
|
"1. Datenbankintegration\n" +
|
|
"2. API-Integration\n" +
|
|
"3. Externe Systeme einbinden");
|
|
textArea.setWrapStyleWord(true);
|
|
textArea.setLineWrap(true);
|
|
textArea.setEditable(false);
|
|
textArea.setFont(new Font("Arial", Font.PLAIN, 18));
|
|
mainPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openEchtzeitDaten() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Echtzeit-Daten", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JTextArea textArea = new JTextArea("Hier können Sie Echtzeit-Daten einsehen und verwalten.\n\n" +
|
|
"Optionen:\n" +
|
|
"1. Echtzeit-Berichte\n" +
|
|
"2. Live-Dashboard\n" +
|
|
"3. Datenvisualisierung");
|
|
textArea.setWrapStyleWord(true);
|
|
textArea.setLineWrap(true);
|
|
textArea.setEditable(false);
|
|
textArea.setFont(new Font("Arial", Font.PLAIN, 18));
|
|
mainPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openCloudServices() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("Cloud-Services", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JTextArea textArea = new JTextArea("Hier können Sie Cloud-Services verwalten.\n\n" +
|
|
"Optionen:\n" +
|
|
"1. Cloud-Speicher\n" +
|
|
"2. Cloud-Computing\n" +
|
|
"3. Cloud-Sicherheit");
|
|
textArea.setWrapStyleWord(true);
|
|
textArea.setLineWrap(true);
|
|
textArea.setEditable(false);
|
|
textArea.setFont(new Font("Arial", Font.PLAIN, 18));
|
|
mainPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
private void openEDI() {
|
|
mainPanel.removeAll();
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
|
|
JLabel label = new JLabel("EDI", JLabel.CENTER);
|
|
label.setFont(new Font("Arial", Font.BOLD, 20));
|
|
label.setForeground(Color.decode("#2C3E50"));
|
|
mainPanel.add(label, BorderLayout.NORTH);
|
|
|
|
JTextArea textArea = new JTextArea("Hier können Sie EDI (Electronic Data Interchange) verwalten.\n\n" +
|
|
"Optionen:\n" +
|
|
"1. EDI-Verbindungen\n" +
|
|
"2. EDI-Nachrichten\n" +
|
|
"3. EDI-Protokolle");
|
|
textArea.setWrapStyleWord(true);
|
|
textArea.setLineWrap(true);
|
|
textArea.setEditable(false);
|
|
textArea.setFont(new Font("Arial", Font.PLAIN, 18));
|
|
mainPanel.add(new JScrollPane(textArea), BorderLayout.CENTER);
|
|
|
|
mainPanel.repaint();
|
|
mainPanel.revalidate();
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
SwingUtilities.invokeLater(Warenwirtschaftssystem::new);
|
|
}
|
|
} |