Reservierungen können nun mit Uhrzeit gespeichert werden
parent
2572fccf7d
commit
50cb027cbe
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue