Reservierungen können nun mit Uhrzeit gespeichert werden

master
PC 2025-01-12 19:19:48 +01:00
parent 2572fccf7d
commit 50cb027cbe
4 changed files with 168 additions and 88 deletions

View File

@ -1,29 +1,49 @@
public class Reservation implements Comparable<Reservation>{ import java.time.LocalTime;
public class Reservation {
private int tableNumber; private int tableNumber;
private String customerName; private String customerName;
private LocalTime reservationTime;
public Reservation(int tableNumber, String customerName) { public Reservation(int tableNumber, String customerName, LocalTime reservationTime) {
this.tableNumber = tableNumber; this.tableNumber = tableNumber;
this.customerName = customerName; this.customerName = customerName;
this.reservationTime = reservationTime;
} }
public int getTableNumber() { public int getTableNumber() {
return tableNumber; return tableNumber;
} }
public void setTableNumber(int tableNumber) {
this.tableNumber = tableNumber;
}
public String getCustomerName() { public String getCustomerName() {
return customerName; return customerName;
} }
public void setCustomerName(String customerName) { public LocalTime getReservationTime() {
this.customerName = customerName; return reservationTime;
} }
public void setCustomerName(String name) {
this.customerName = name;
}
@Override @Override
public int compareTo(Reservation other) { public boolean equals(Object obj) {
return Integer.compare(this.tableNumber, other.tableNumber); if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Reservation that = (Reservation) obj;
return tableNumber == that.tableNumber &&
reservationTime.equals(that.reservationTime);
}
@Override
public int hashCode() {
return tableNumber * 31 + reservationTime.hashCode();
}
@Override
public String toString() {
return "Table: " + tableNumber + ", Name: " + customerName + ", Time: " + reservationTime;
} }
} }

View File

@ -1,44 +1,70 @@
import java.io.*; import java.io.*;
import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
public class ReservationManager { public class ReservationManager {
private List<Reservation> reservations; private List<Reservation> reservations;
private final String filePath = "src/Reservations.txt"; private final String filePath = "src/Reservations.txt";
public ReservationManager() { public ReservationManager() {
reservations = new ArrayList<>(); reservations = new ArrayList<>();
loadReservations(); loadReservations();
} }
public void createReservation(int tableNumber, String customerName) { public void createReservation(int tableNumber, String customerName, LocalTime reservationTime) {
Reservation reservation = new Reservation(tableNumber, customerName); if (isTableAvailable(tableNumber, reservationTime)) {
reservations.add(reservation); Reservation reservation = new Reservation(tableNumber, customerName, reservationTime);
saveReservations(); // Reservierungen nach jedem Erstellen speichern reservations.add(reservation);
saveReservations();
System.out.println("Reservierung erfolgreich: " + reservation);
} else {
System.out.println("Der Tisch " + tableNumber + " ist um " + reservationTime + " bereits reserviert.");
}
} }
public void editReservation(int tableNumber, String newCustomerName) { public void editReservation(int tableNumber, String newCustomerName) {
for (Reservation reservation : reservations) { for (Reservation reservation : reservations) {
if (reservation.getTableNumber() == tableNumber) { if (reservation.getTableNumber() == tableNumber) {
reservation.setCustomerName(newCustomerName); reservation.setCustomerName(newCustomerName);
saveReservations(); // Reservierungen nach Bearbeitung speichern saveReservations();
break; System.out.println("Reservierung aktualisiert: " + reservation);
return;
} }
} }
System.out.println("Keine Reservierung für Tisch " + tableNumber + " gefunden.");
} }
public void cancelReservation(int tableNumber) { public void cancelReservation(int tableNumber, LocalTime reservationTime) {
reservations.removeIf(reservation -> reservation.getTableNumber() == tableNumber); reservations.removeIf(reservation ->
saveReservations(); reservation.getTableNumber() == tableNumber &&
reservation.getReservationTime().equals(reservationTime));
saveReservations();
System.out.println("Reservierung für Tisch " + tableNumber + " um " + reservationTime + " wurde storniert.");
} }
private boolean isTableAvailable(int tableNumber, LocalTime reservationTime) {
for (Reservation reservation : reservations) {
if (reservation.getTableNumber() == tableNumber) {
LocalTime existingTime = reservation.getReservationTime();
if (!reservationTime.isBefore(existingTime.minusMinutes(119)) &&
!reservationTime.isAfter(existingTime.plusMinutes(119))) {
return false;
}
}
}
return true;
}
private void saveReservations() { private void saveReservations() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (Reservation reservation : reservations) { for (Reservation reservation : reservations) {
writer.write(reservation.getTableNumber() + "," + reservation.getCustomerName()); writer.write(reservation.getTableNumber() + "," +
writer.newLine(); reservation.getCustomerName() + "," +
reservation.getReservationTime());
writer.newLine();
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -50,13 +76,20 @@ public class ReservationManager {
String line; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
String[] data = line.split(","); String[] data = line.split(",");
if (data.length < 3) {
System.out.println("Ungültiger Eintrag in der Datei: " + line);
continue;
}
int tableNumber = Integer.parseInt(data[0]); int tableNumber = Integer.parseInt(data[0]);
String customerName = data[1]; String customerName = data[1];
Reservation reservation = new Reservation(tableNumber, customerName); LocalTime reservationTime = LocalTime.parse(data[2]);
Reservation reservation = new Reservation(tableNumber, customerName, reservationTime);
reservations.add(reservation); reservations.add(reservation);
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} catch (Exception e) {
System.out.println("Fehler beim Laden von Reservierungen: " + e.getMessage());
} }
} }
@ -65,13 +98,19 @@ public class ReservationManager {
} }
public void displayTableOverview() { public void displayTableOverview() {
if (reservations.isEmpty()) { if (reservations.isEmpty()) {
System.out.println("Keine Reservierungen vorhanden."); System.out.println("Keine Reservierungen vorhanden.");
} else { } else {
Collections.sort(reservations); reservations.sort((r1, r2) -> {
for (Reservation reservation : reservations) { if (r1.getTableNumber() != r2.getTableNumber()) {
System.out.println("Tischnummer: " + reservation.getTableNumber() + " | Kundenname: " + reservation.getCustomerName()); return Integer.compare(r1.getTableNumber(), r2.getTableNumber());
} }
} return r1.getReservationTime().compareTo(r2.getReservationTime());
});
for (Reservation reservation : reservations) {
System.out.println(reservation);
}
}
} }
} }

View File

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

View File

@ -1,5 +1,6 @@
import java.util.*; import java.util.*;
import java.io.*; import java.io.*;
import java.time.LocalTime;
class SystemController { class SystemController {
private Scanner scanner = new Scanner(System.in); private Scanner scanner = new Scanner(System.in);
@ -22,6 +23,7 @@ class SystemController {
loadAbsencesFromFile(); loadAbsencesFromFile();
loadFeedbacksFromFile(); loadFeedbacksFromFile();
inventory = new Inventory(financialManager); inventory = new Inventory(financialManager);
inventory.loadStockFromFile();
} }
public void startSystem() { public void startSystem() {
@ -114,70 +116,86 @@ class SystemController {
} }
private void manageReservations(User user) { private void manageReservations(User user) {
boolean managingReservations = true; boolean managingReservations = true;
while (managingReservations) { while (managingReservations) {
System.out.println("\n--- Reservierungen verwalten ---"); System.out.println("\n--- Reservierungen verwalten ---");
System.out.println("1. Reservierung erstellen"); System.out.println("1. Reservierung erstellen");
System.out.println("2. Reservierung bearbeiten"); System.out.println("2. Reservierung bearbeiten");
System.out.println("3. Reservierung stornieren"); System.out.println("3. Reservierung stornieren");
System.out.println("4. Reservierungen anzeigen"); System.out.println("4. Reservierungen anzeigen");
System.out.println("5. Zurück zum Hauptmenü"); System.out.println("5. Zurück zum Hauptmenü");
System.out.print("Bitte wähle eine Option: "); System.out.print("Bitte wähle eine Option: ");
int choice = scanner.nextInt(); int choice = scanner.nextInt();
scanner.nextLine(); scanner.nextLine();
switch (choice) { switch (choice) {
case 1 -> { case 1 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) { if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
createReservation(); createReservation();
} else { } else {
System.out.println("Keine Rechte, um neue Reservierungen zu erstellen."); System.out.println("Keine Rechte, um neue Reservierungen zu erstellen.");
} }
} }
case 2 -> { case 2 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) { if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
editReservation(); editReservation();
} else { } else {
System.out.println("Keine Rechte, um Reservierungen zu bearbeiten."); System.out.println("Keine Rechte, um Reservierungen zu bearbeiten.");
} }
} }
case 3 -> { case 3 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) { if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
cancelReservation(); cancelReservation();
} else { } else {
System.out.println("Keine Rechte, um Reservierungen zu stornieren."); System.out.println("Keine Rechte, um Reservierungen zu stornieren.");
} }
} }
case 4 -> reservationManager.displayTableOverview(); case 4 -> reservationManager.displayTableOverview();
case 5 -> managingReservations = false; case 5 -> managingReservations = false;
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
} }
} }
} }
private void createReservation() { private void createReservation() {
System.out.print("Tischnummer: "); System.out.print("Tischnummer: ");
int tableNumber = scanner.nextInt(); int tableNumber = scanner.nextInt();
scanner.nextLine(); scanner.nextLine();
System.out.print("Kundenname: "); System.out.print("Kundenname: ");
String customerName = scanner.nextLine(); String customerName = scanner.nextLine();
reservationManager.createReservation(tableNumber, customerName); System.out.print("Uhrzeit der Reservierung (HH:mm): ");
String timeInput = scanner.nextLine();
try {
LocalTime reservationTime = LocalTime.parse(timeInput);
reservationManager.createReservation(tableNumber, customerName, reservationTime);
} catch (Exception e) {
System.out.println("Ungültiges Zeitformat. Bitte HH:mm verwenden.");
}
} }
private void editReservation() { private void editReservation() {
System.out.print("Tischnummer der Reservierung: "); System.out.print("Tischnummer der Reservierung: ");
int tableNumber = scanner.nextInt(); int tableNumber = scanner.nextInt();
scanner.nextLine(); scanner.nextLine();
System.out.print("Neuer Kundenname: "); System.out.print("Neuer Kundenname: ");
String newCustomerName = scanner.nextLine(); String newCustomerName = scanner.nextLine();
reservationManager.editReservation(tableNumber, newCustomerName); reservationManager.editReservation(tableNumber, newCustomerName);
} }
private void cancelReservation() { private void cancelReservation() {
System.out.print("Tischnummer der Reservierung: "); System.out.print("Tischnummer der Reservierung: ");
int tableNumber = scanner.nextInt(); int tableNumber = scanner.nextInt();
reservationManager.cancelReservation(tableNumber); scanner.nextLine();
System.out.print("Uhrzeit der Reservierung (HH:mm): ");
String timeInput = scanner.nextLine();
try {
LocalTime reservationTime = LocalTime.parse(timeInput);
reservationManager.cancelReservation(tableNumber, reservationTime);
} catch (Exception e) {
System.out.println("Ungültiges Zeitformat. Bitte HH:mm verwenden.");
}
} }
private void manageInventory() { private void manageInventory() {
boolean managingInventory = true; boolean managingInventory = true;
while (managingInventory) { while (managingInventory) {