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 String customerName;
private LocalTime reservationTime;
public Reservation(int tableNumber, String customerName) {
public Reservation(int tableNumber, String customerName, LocalTime reservationTime) {
this.tableNumber = tableNumber;
this.customerName = customerName;
this.reservationTime = reservationTime;
}
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;
public LocalTime getReservationTime() {
return reservationTime;
}
public void setCustomerName(String name) {
this.customerName = name;
}
@Override
public int compareTo(Reservation other) {
return Integer.compare(this.tableNumber, other.tableNumber);
public boolean equals(Object obj) {
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.time.LocalTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ReservationManager {
private List<Reservation> reservations;
private final String filePath = "src/Reservations.txt";
private final String filePath = "src/Reservations.txt";
public ReservationManager() {
reservations = new ArrayList<>();
loadReservations();
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 createReservation(int tableNumber, String customerName, LocalTime reservationTime) {
if (isTableAvailable(tableNumber, reservationTime)) {
Reservation reservation = new Reservation(tableNumber, customerName, reservationTime);
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) {
for (Reservation reservation : reservations) {
if (reservation.getTableNumber() == tableNumber) {
reservation.setCustomerName(newCustomerName);
saveReservations(); // Reservierungen nach Bearbeitung speichern
break;
saveReservations();
System.out.println("Reservierung aktualisiert: " + reservation);
return;
}
}
System.out.println("Keine Reservierung für Tisch " + tableNumber + " gefunden.");
}
public void cancelReservation(int tableNumber) {
reservations.removeIf(reservation -> reservation.getTableNumber() == tableNumber);
saveReservations();
public void cancelReservation(int tableNumber, LocalTime reservationTime) {
reservations.removeIf(reservation ->
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() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (Reservation reservation : reservations) {
writer.write(reservation.getTableNumber() + "," + reservation.getCustomerName());
writer.newLine();
writer.write(reservation.getTableNumber() + "," +
reservation.getCustomerName() + "," +
reservation.getReservationTime());
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
@ -50,13 +76,20 @@ public class ReservationManager {
String line;
while ((line = reader.readLine()) != null) {
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]);
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);
}
} catch (IOException e) {
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() {
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());
}
}
if (reservations.isEmpty()) {
System.out.println("Keine Reservierungen vorhanden.");
} else {
reservations.sort((r1, r2) -> {
if (r1.getTableNumber() != r2.getTableNumber()) {
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
2,Ali und Arim
1,Abbas,15:30
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.io.*;
import java.time.LocalTime;
class SystemController {
private Scanner scanner = new Scanner(System.in);
@ -22,6 +23,7 @@ class SystemController {
loadAbsencesFromFile();
loadFeedbacksFromFile();
inventory = new Inventory(financialManager);
inventory.loadStockFromFile();
}
public void startSystem() {
@ -114,70 +116,86 @@ class SystemController {
}
private void manageReservations(User user) {
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();
switch (choice) {
case 1 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
createReservation();
} else {
System.out.println("Keine Rechte, um neue Reservierungen zu erstellen.");
}
}
case 2 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
editReservation();
} else {
System.out.println("Keine Rechte, um Reservierungen zu bearbeiten.");
}
}
case 3 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
cancelReservation();
} else {
System.out.println("Keine Rechte, um Reservierungen zu stornieren.");
}
}
case 4 -> reservationManager.displayTableOverview();
case 5 -> managingReservations = false;
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
}
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();
switch (choice) {
case 1 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
createReservation();
} else {
System.out.println("Keine Rechte, um neue Reservierungen zu erstellen.");
}
}
case 2 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
editReservation();
} else {
System.out.println("Keine Rechte, um Reservierungen zu bearbeiten.");
}
}
case 3 -> {
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
cancelReservation();
} else {
System.out.println("Keine Rechte, um Reservierungen zu stornieren.");
}
}
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);
System.out.print("Tischnummer: ");
int tableNumber = scanner.nextInt();
scanner.nextLine();
System.out.print("Kundenname: ");
String customerName = scanner.nextLine();
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() {
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);
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);
System.out.print("Tischnummer der Reservierung: ");
int tableNumber = scanner.nextInt();
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() {
boolean managingInventory = true;
while (managingInventory) {