Grundbaustein des User Interface

master
PC 2025-01-12 22:37:51 +01:00
parent 50cb027cbe
commit e44f710161
11 changed files with 467 additions and 45 deletions

View File

@ -0,0 +1,2 @@
Ali,12.01.2025,20:00,2
,,,

View File

@ -1,28 +1,2 @@
ID: aa9888b3-148a-4866-b404-7f9dc262153b
Tisch Nummer: 1
Bestellte Gerichte:
- Cheeseburger
Zeit: 20:00
--------------------------
ID: 47856861-c7fc-4fb7-9366-174851fb1f46
Tisch Nummer: 01
Bestellte Gerichte:
- Cheeseburger
Zeit: 16:13
--------------------------
ID: 004b2f19-5c8f-47bf-9a8d-38ee515f4526
Tisch Nummer: 2
Bestellte Gerichte:
Zeit: 15:47
--------------------------
ID: 3aa58523-b89b-480f-a486-8348f4e3381d
Tisch Nummer: 1
Bestellte Gerichte:
- Cheeseburger
- Double Meat Burger
Zeit: 15:47
--------------------------
01,Dima,Cheeseburger, Ramen,2,100€
02,Ali,Ramen,2

View File

@ -1,5 +0,0 @@
1,Abbas,15:30
1,Dimimtry,18:00
1,Ariminho,20:00
2,Ali und Arim,19:00
1,Ilinho,13:30

View File

@ -44,7 +44,7 @@ class SystemController {
}
}
private User authenticate(String username, String password) {
User authenticate(String username, String password) {
if (users.containsKey(username) && users.get(username).password.equals(password)) {
return users.get(username);
}

View File

@ -0,0 +1 @@
Ali,Küche,15.000€

View File

@ -1,7 +1,2 @@
Nudeln,150
Soße,100
Brot,100
Tomaten,200
Salat,260
Käse,100
Fleisch,200
Brot,100,10
Tomaten,1000,10

View File

@ -0,0 +1,92 @@
package userinterface;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class InventoryPanel extends JPanel {
private DefaultTableModel tableModel;
private JTable table;
private List<String[]> stockItems;
private final String filePath = "src/stock.txt";
public InventoryPanel(JFrame frame, JPanel mainPanel) {
this.setLayout(new BorderLayout());
JLabel label = new JLabel("Bestand verwalten", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 24));
this.add(label, BorderLayout.NORTH);
// Tabelle vorbereiten
String[] columns = {"Produkt", "Menge"};
tableModel = new DefaultTableModel(columns, 0);
table = new JTable(tableModel);
loadStock();
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane, BorderLayout.CENTER);
// Steuerpanel unten
JPanel controlPanel = new JPanel();
JButton refreshButton = new JButton("Aktualisieren");
JButton backButton = new JButton("Zurück");
controlPanel.add(refreshButton);
controlPanel.add(backButton);
this.add(controlPanel, BorderLayout.SOUTH);
// ActionListener für Buttons
refreshButton.addActionListener(e -> loadStock());
backButton.addActionListener(e -> switchPanel(frame, mainPanel));
}
private void switchPanel(JFrame frame, JPanel mainPanel) {
frame.getContentPane().removeAll();
frame.add(mainPanel, BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
}
private void loadStock() {
stockItems = new ArrayList<>();
tableModel.setRowCount(0);
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
if (!line.trim().isEmpty()) {
String[] data = line.split(",");
if (data.length >= 2) {
stockItems.add(data);
tableModel.addRow(data);
}
}
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Laden des Bestands!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
public void updateStock(String productName, int quantityUsed) {
for (String[] item : stockItems) {
if (item[0].equalsIgnoreCase(productName)) {
int currentQuantity = Integer.parseInt(item[1]);
item[1] = String.valueOf(currentQuantity - quantityUsed);
saveStock();
loadStock();
return;
}
}
JOptionPane.showMessageDialog(this, "Produkt nicht gefunden: " + productName, "Fehler", JOptionPane.WARNING_MESSAGE);
}
private void saveStock() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (String[] item : stockItems) {
writer.write(String.join(",", item));
writer.newLine();
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Bestands!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
}

View File

@ -0,0 +1,57 @@
package userinterface;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class MainMenu {
public static void main(String[] args) {
JFrame frame = new JFrame("Restaurantverwaltungssystem");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLayout(new BorderLayout());
JLabel headerLabel = new JLabel("Restaurantverwaltungssystem", SwingConstants.CENTER);
headerLabel.setFont(new Font("Arial", Font.BOLD, 30));
frame.add(headerLabel, BorderLayout.NORTH);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(2, 3, 20, 20));
JButton reservierungenButton = new JButton("Reservierungen verwalten");
JButton lagerButton = new JButton("Lagerbestand verwalten");
JButton bestellungenButton = new JButton("Bestellungen verwalten");
JButton personalButton = new JButton("Personal verwalten");
JButton finanzenButton = new JButton("Finanzen verwalten");
JButton beendenButton = new JButton("Beenden");
mainPanel.add(reservierungenButton);
mainPanel.add(lagerButton);
mainPanel.add(bestellungenButton);
mainPanel.add(personalButton);
mainPanel.add(finanzenButton);
mainPanel.add(beendenButton);
frame.add(mainPanel, BorderLayout.CENTER);
reservierungenButton.addActionListener(e -> switchPanel(frame, mainPanel, new ReservationPanel(frame, mainPanel)));
lagerButton.addActionListener(e -> switchPanel(frame, mainPanel, new InventoryPanel(frame, mainPanel)));
bestellungenButton.addActionListener(e -> switchPanel(frame, mainPanel, new OrdersPanel(frame, mainPanel)));
personalButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Personal verwalten: Noch nicht implementiert."));
finanzenButton.addActionListener(e -> JOptionPane.showMessageDialog(frame, "Finanzen verwalten: Noch nicht implementiert."));
beendenButton.addActionListener(e -> System.exit(0));
frame.setVisible(true);
}
private static void switchPanel(JFrame frame, JPanel mainPanel, JPanel newPanel) {
frame.getContentPane().removeAll();
frame.add(newPanel, BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
}
}

View File

@ -0,0 +1,153 @@
package userinterface;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class OrdersPanel extends JPanel {
private DefaultTableModel tableModel;
private JTable table;
private List<String[]> orders;
private final String filePath = "src/Bestellungen.txt";
public OrdersPanel(JFrame frame, JPanel mainPanel) {
this.setLayout(new BorderLayout());
JLabel label = new JLabel("Bestellungen verwalten", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 24));
this.add(label, BorderLayout.NORTH);
// Tabelle vorbereiten
String[] columns = {"Bestell-ID", "Kunde", "Artikel", "Menge"};
tableModel = new DefaultTableModel(columns, 0);
table = new JTable(tableModel);
loadOrders();
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane, BorderLayout.CENTER);
// Steuerpanel unten
JPanel controlPanel = new JPanel();
JButton addButton = new JButton("Hinzufügen");
JButton editButton = new JButton("Bearbeiten");
JButton deleteButton = new JButton("Löschen");
JButton backButton = new JButton("Zurück");
controlPanel.add(addButton);
controlPanel.add(editButton);
controlPanel.add(deleteButton);
controlPanel.add(backButton);
this.add(controlPanel, BorderLayout.SOUTH);
// ActionListener für Buttons
addButton.addActionListener(e -> addOrder());
editButton.addActionListener(e -> editOrder());
deleteButton.addActionListener(e -> deleteOrder());
backButton.addActionListener(e -> switchPanel(frame, mainPanel));
}
private void switchPanel(JFrame frame, JPanel mainPanel) {
frame.getContentPane().removeAll();
frame.add(mainPanel, BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
}
private void loadOrders() {
orders = new ArrayList<>();
tableModel.setRowCount(0);
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
if (!line.trim().isEmpty()) {
String[] data = line.split(",");
if (data.length >= 4) {
orders.add(data);
tableModel.addRow(data);
}
}
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Laden der Bestellungen!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
private void saveOrders() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (String[] order : orders) {
writer.write(String.join(",", order));
writer.newLine();
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Speichern der Bestellungen!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
private void addOrder() {
JTextField idField = new JTextField();
JTextField customerField = new JTextField();
JTextField itemField = new JTextField();
JTextField quantityField = new JTextField();
Object[] fields = {
"Bestell-ID:", idField,
"Kunde:", customerField,
"Artikel:", itemField,
"Menge:", quantityField
};
int option = JOptionPane.showConfirmDialog(this, fields, "Bestellung hinzufügen", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String[] order = {idField.getText(), customerField.getText(), itemField.getText(), quantityField.getText()};
orders.add(order);
tableModel.addRow(order);
saveOrders();
}
}
private void editOrder() {
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "Bitte wählen Sie eine Bestellung aus!", "Warnung", JOptionPane.WARNING_MESSAGE);
return;
}
String[] order = orders.get(selectedRow);
JTextField idField = new JTextField(order[0]);
JTextField customerField = new JTextField(order[1]);
JTextField itemField = new JTextField(order[2]);
JTextField quantityField = new JTextField(order[3]);
Object[] fields = {
"Bestell-ID:", idField,
"Kunde:", customerField,
"Artikel:", itemField,
"Menge:", quantityField
};
int option = JOptionPane.showConfirmDialog(this, fields, "Bestellung bearbeiten", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String[] updatedOrder = {idField.getText(), customerField.getText(), itemField.getText(), quantityField.getText()};
orders.set(selectedRow, updatedOrder);
tableModel.removeRow(selectedRow);
tableModel.insertRow(selectedRow, updatedOrder);
saveOrders();
}
}
private void deleteOrder() {
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "Bitte wählen Sie eine Bestellung aus!", "Warnung", JOptionPane.WARNING_MESSAGE);
return;
}
int option = JOptionPane.showConfirmDialog(this, "Möchten Sie diese Bestellung wirklich löschen?", "Bestätigung", JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
orders.remove(selectedRow);
tableModel.removeRow(selectedRow);
saveOrders();
}
}
}

View File

@ -0,0 +1,153 @@
package userinterface;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class ReservationPanel extends JPanel {
private DefaultTableModel tableModel;
private JTable table;
private List<String[]> reservations;
private final String filePath = "src/Reservations.txt";
public ReservationPanel(JFrame frame, JPanel mainPanel) {
this.setLayout(new BorderLayout());
JLabel label = new JLabel("Reservierungen verwalten", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 24));
this.add(label, BorderLayout.NORTH);
// Tabelle vorbereiten
String[] columns = {"Name", "Datum", "Zeit", "Personen"};
tableModel = new DefaultTableModel(columns, 0);
table = new JTable(tableModel);
loadReservations();
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane, BorderLayout.CENTER);
// Steuerpanel unten
JPanel controlPanel = new JPanel();
JButton addButton = new JButton("Hinzufügen");
JButton editButton = new JButton("Bearbeiten");
JButton deleteButton = new JButton("Stornieren");
JButton backButton = new JButton("Zurück");
controlPanel.add(addButton);
controlPanel.add(editButton);
controlPanel.add(deleteButton);
controlPanel.add(backButton);
this.add(controlPanel, BorderLayout.SOUTH);
// ActionListener für Buttons
addButton.addActionListener(e -> addReservation());
editButton.addActionListener(e -> editReservation());
deleteButton.addActionListener(e -> deleteReservation());
backButton.addActionListener(e -> switchPanel(frame, mainPanel));
}
private void switchPanel(JFrame frame, JPanel mainPanel) {
frame.getContentPane().removeAll();
frame.add(mainPanel, BorderLayout.CENTER);
frame.revalidate();
frame.repaint();
}
private void loadReservations() {
reservations = new ArrayList<>();
tableModel.setRowCount(0);
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
if (!line.trim().isEmpty()) {
String[] data = line.split(",");
if (data.length >= 4) {
reservations.add(data);
tableModel.addRow(data);
}
}
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Laden der Reservierungen!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
private void saveReservations() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (String[] reservation : reservations) {
writer.write(String.join(",", reservation));
writer.newLine();
}
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "Fehler beim Speichern der Reservierungen!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
private void addReservation() {
JTextField nameField = new JTextField();
JTextField dateField = new JTextField();
JTextField timeField = new JTextField();
JTextField peopleField = new JTextField();
Object[] fields = {
"Name:", nameField,
"Datum (YYYY-MM-DD):", dateField,
"Zeit (HH:MM):", timeField,
"Personen:", peopleField
};
int option = JOptionPane.showConfirmDialog(this, fields, "Reservierung hinzufügen", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String[] reservation = {nameField.getText(), dateField.getText(), timeField.getText(), peopleField.getText()};
reservations.add(reservation);
tableModel.addRow(reservation);
saveReservations();
}
}
private void editReservation() {
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "Bitte wählen Sie eine Reservierung aus!", "Warnung", JOptionPane.WARNING_MESSAGE);
return;
}
String[] reservation = reservations.get(selectedRow);
JTextField nameField = new JTextField(reservation[0]);
JTextField dateField = new JTextField(reservation[1]);
JTextField timeField = new JTextField(reservation[2]);
JTextField peopleField = new JTextField(reservation[3]);
Object[] fields = {
"Name:", nameField,
"Datum (YYYY-MM-DD):", dateField,
"Zeit (HH:MM):", timeField,
"Personen:", peopleField
};
int option = JOptionPane.showConfirmDialog(this, fields, "Reservierung bearbeiten", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String[] updatedReservation = {nameField.getText(), dateField.getText(), timeField.getText(), peopleField.getText()};
reservations.set(selectedRow, updatedReservation);
tableModel.removeRow(selectedRow);
tableModel.insertRow(selectedRow, updatedReservation);
saveReservations();
}
}
private void deleteReservation() {
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(this, "Bitte wählen Sie eine Reservierung aus!", "Warnung", JOptionPane.WARNING_MESSAGE);
return;
}
int option = JOptionPane.showConfirmDialog(this, "Möchten Sie diese Reservierung wirklich stornieren?", "Bestätigung", JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
reservations.remove(selectedRow);
tableModel.removeRow(selectedRow);
saveReservations();
}
}
}

View File

@ -1,4 +1,4 @@
Dimitry:1234:MANAGER
Abbas:1234:MANAGER
Ananas Kopf:Bananenbieger:KITCHEN
Arim:1234:MANAGER
Dimitry:MANAGER:1234
Abbas:MANAGER:1234
Ananas Kopf:KITCHEN:1234
Arim:MANAGER:1234