diff --git a/Restaurantverwaltung/src/Reservation.java b/Restaurantverwaltung/src/Reservation.java index bfdd428..108fa94 100644 --- a/Restaurantverwaltung/src/Reservation.java +++ b/Restaurantverwaltung/src/Reservation.java @@ -1,4 +1,4 @@ -class Reservation { +public class Reservation implements Comparable{ private int tableNumber; private String customerName; @@ -6,4 +6,24 @@ class Reservation { this.tableNumber = tableNumber; this.customerName = customerName; } -} \ No newline at end of file + + public int getTableNumber() { + return tableNumber; + } + + public void setTableNumber(int tableNumber) { + this.tableNumber = tableNumber; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + @Override + public int compareTo(Reservation other) { + return Integer.compare(this.tableNumber, other.tableNumber); + } +} diff --git a/Restaurantverwaltung/src/ReservationManager.java b/Restaurantverwaltung/src/ReservationManager.java new file mode 100644 index 0000000..4a09976 --- /dev/null +++ b/Restaurantverwaltung/src/ReservationManager.java @@ -0,0 +1,77 @@ +import java.io.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class ReservationManager { + private List reservations; + private final String filePath = "src/Reservations.txt"; + + public ReservationManager() { + reservations = new ArrayList<>(); + loadReservations(); + } + + public void createReservation(int tableNumber, String customerName) { + Reservation reservation = new Reservation(tableNumber, customerName); + reservations.add(reservation); + saveReservations(); // Reservierungen nach jedem Erstellen speichern + } + + public void editReservation(int tableNumber, String newCustomerName) { + for (Reservation reservation : reservations) { + if (reservation.getTableNumber() == tableNumber) { + reservation.setCustomerName(newCustomerName); + saveReservations(); // Reservierungen nach Bearbeitung speichern + break; + } + } + } + + public void cancelReservation(int tableNumber) { + reservations.removeIf(reservation -> reservation.getTableNumber() == tableNumber); + saveReservations(); + } + + + private void saveReservations() { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { + for (Reservation reservation : reservations) { + writer.write(reservation.getTableNumber() + "," + reservation.getCustomerName()); + writer.newLine(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void loadReservations() { + try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { + String line; + while ((line = reader.readLine()) != null) { + String[] data = line.split(","); + int tableNumber = Integer.parseInt(data[0]); + String customerName = data[1]; + Reservation reservation = new Reservation(tableNumber, customerName); + reservations.add(reservation); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public List getReservations() { + return reservations; + } + + public void displayTableOverview() { + if (reservations.isEmpty()) { + System.out.println("Keine Reservierungen vorhanden."); + } else { + Collections.sort(reservations); + for (Reservation reservation : reservations) { + System.out.println("Tischnummer: " + reservation.getTableNumber() + " | Kundenname: " + reservation.getCustomerName()); + } + } + } +} diff --git a/Restaurantverwaltung/src/Reservations.txt b/Restaurantverwaltung/src/Reservations.txt new file mode 100644 index 0000000..b87976d --- /dev/null +++ b/Restaurantverwaltung/src/Reservations.txt @@ -0,0 +1,2 @@ +1,Dimimtry +2,Ali und Arim diff --git a/Restaurantverwaltung/src/SystemController.java b/Restaurantverwaltung/src/SystemController.java index 84ab99f..1f4fe2a 100644 --- a/Restaurantverwaltung/src/SystemController.java +++ b/Restaurantverwaltung/src/SystemController.java @@ -8,6 +8,7 @@ class SystemController { public static Inventory inventory = new Inventory(); private Menu menu = new Menu(); private FinancialManager financialManager = new FinancialManager(); + private ReservationManager reservationManager = new ReservationManager(); public SystemController() { loadUsersFromFile(); @@ -38,43 +39,80 @@ class SystemController { return null; } - private void displayMainMenu(User user) { + public void displayMainMenu(User user) { boolean running = true; while (running) { - inventory.loadStockFromFile(); System.out.println("\n--- Hauptmenü ---"); System.out.println("1. Bestand verwalten"); System.out.println("2. Neuer Nutzer erstellen"); System.out.println("3. Menü anzeigen"); System.out.println("4. Bestellungen verwalten"); System.out.println("5. Finanzbericht anzeigen"); - System.out.println("6. Beenden"); - + System.out.println("6. Reservierungen verwalten"); + System.out.println("7. Beenden"); System.out.print("Bitte wähle eine Option: "); int choice = scanner.nextInt(); - scanner.nextLine(); // Eingabepuffer leeren - + scanner.nextLine(); switch (choice) { case 1 -> manageInventory(); - case 2 -> { - if (user.role == Role.MANAGER) { - createUser(); - } else { - System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); - } - } + case 2 -> { if (user.role == Role.MANAGER) { createUser(); } else { System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); } } case 3 -> menu.displayMenu(inventory); - case 4 -> manageOrders(); // Übergibt an Bestellsystem - case 5 -> showFinancialReports(); // Anzeige der Finanzberichte - case 6 -> { - running = false; - System.out.println("System wird beendet. Auf Wiedersehen!"); - } + case 4 -> manageOrders(); + case 5 -> showFinancialReports(); + case 6 -> manageReservations(); + case 7 -> { running = false; System.out.println("System wird beendet. Auf Wiedersehen!"); } default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); } } } + private void manageReservations() { + boolean managingReservations = true; + while (managingReservations) { + System.out.println("\n--- Reservierungen verwalten ---"); + System.out.println("1. Reservierung erstellen"); + System.out.println("2. Reservierung bearbeiten"); + System.out.println("3. Reservierung stornieren"); + System.out.println("4. Reservierungen anzeigen"); + System.out.println("5. Zurück zum Hauptmenü"); + System.out.print("Bitte wähle eine Option: "); + int choice = scanner.nextInt(); + scanner.nextLine(); // Eingabepuffer leeren + switch (choice) { + case 1 -> createReservation(); + case 2 -> editReservation(); + case 3 -> cancelReservation(); + case 4 -> reservationManager.displayTableOverview(); + case 5 -> managingReservations = false; + default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); + } + } + } + + private void createReservation() { + System.out.print("Tischnummer: "); + int tableNumber = scanner.nextInt(); + scanner.nextLine(); + System.out.print("Kundenname: "); + String customerName = scanner.nextLine(); + reservationManager.createReservation(tableNumber, customerName); + } + + private void editReservation() { + System.out.print("Tischnummer der Reservierung: "); + int tableNumber = scanner.nextInt(); + scanner.nextLine(); + System.out.print("Neuer Kundenname: "); + String newCustomerName = scanner.nextLine(); + reservationManager.editReservation(tableNumber, newCustomerName); + } + + private void cancelReservation() { + System.out.print("Tischnummer der Reservierung: "); + int tableNumber = scanner.nextInt(); + reservationManager.cancelReservation(tableNumber); + } + private void manageInventory() { boolean managingInventory = true; while (managingInventory) { diff --git a/Restaurantverwaltung/src/users.txt b/Restaurantverwaltung/src/users.txt index 21fb1f8..25416dc 100644 --- a/Restaurantverwaltung/src/users.txt +++ b/Restaurantverwaltung/src/users.txt @@ -1,3 +1,3 @@ Dimitry:1234:MANAGER -Abbas:1234:SERVICE +Abbas:1234:MANAGER Ananas Kopf:Bananenbieger:KITCHEN