From c813b1efd7591ea7bf861ecf24c79ab22568933c Mon Sep 17 00:00:00 2001 From: Dima Date: Tue, 10 Dec 2024 17:08:42 +0100 Subject: [PATCH] =?UTF-8?q?Das=20Grundger=C3=BCst=20der=20Funktionen=20wur?= =?UTF-8?q?de=20gelegt.=20Dimitry/Abbas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Restaurantverwaltung/.classpath | 10 ++ Restaurantverwaltung/.gitignore | 1 + Restaurantverwaltung/.project | 17 +++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 14 ++ Restaurantverwaltung/src/Dish.java | 18 +++ Restaurantverwaltung/src/Inventory.java | 36 ++++++ Restaurantverwaltung/src/Menu.java | 20 +++ Restaurantverwaltung/src/Order.java | 15 +++ Restaurantverwaltung/src/Reservation.java | 9 ++ .../src/RestaurantManagement.java | 8 ++ Restaurantverwaltung/src/Role.java | 3 + .../src/SystemController.java | 122 ++++++++++++++++++ Restaurantverwaltung/src/User.java | 13 ++ Restaurantverwaltung/src/users.txt | 3 + Restaurantverwaltung/users.txt | 2 + 16 files changed, 293 insertions(+) create mode 100644 Restaurantverwaltung/.classpath create mode 100644 Restaurantverwaltung/.gitignore create mode 100644 Restaurantverwaltung/.project create mode 100644 Restaurantverwaltung/.settings/org.eclipse.core.resources.prefs create mode 100644 Restaurantverwaltung/.settings/org.eclipse.jdt.core.prefs create mode 100644 Restaurantverwaltung/src/Dish.java create mode 100644 Restaurantverwaltung/src/Inventory.java create mode 100644 Restaurantverwaltung/src/Menu.java create mode 100644 Restaurantverwaltung/src/Order.java create mode 100644 Restaurantverwaltung/src/Reservation.java create mode 100644 Restaurantverwaltung/src/RestaurantManagement.java create mode 100644 Restaurantverwaltung/src/Role.java create mode 100644 Restaurantverwaltung/src/SystemController.java create mode 100644 Restaurantverwaltung/src/User.java create mode 100644 Restaurantverwaltung/src/users.txt create mode 100644 Restaurantverwaltung/users.txt diff --git a/Restaurantverwaltung/.classpath b/Restaurantverwaltung/.classpath new file mode 100644 index 0000000..639689c --- /dev/null +++ b/Restaurantverwaltung/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Restaurantverwaltung/.gitignore b/Restaurantverwaltung/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/Restaurantverwaltung/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Restaurantverwaltung/.project b/Restaurantverwaltung/.project new file mode 100644 index 0000000..f89aaf4 --- /dev/null +++ b/Restaurantverwaltung/.project @@ -0,0 +1,17 @@ + + + Restaurantverwaltung + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Restaurantverwaltung/.settings/org.eclipse.core.resources.prefs b/Restaurantverwaltung/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/Restaurantverwaltung/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/Restaurantverwaltung/.settings/org.eclipse.jdt.core.prefs b/Restaurantverwaltung/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..a9bbf2d --- /dev/null +++ b/Restaurantverwaltung/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=22 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=22 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=22 diff --git a/Restaurantverwaltung/src/Dish.java b/Restaurantverwaltung/src/Dish.java new file mode 100644 index 0000000..3e8f78d --- /dev/null +++ b/Restaurantverwaltung/src/Dish.java @@ -0,0 +1,18 @@ +import java.util.*; +class Dish { + private String name; + private Map ingredients; + + public Dish(String name, Map ingredients) { + this.name = name; + this.ingredients = ingredients; + } + + public String getName() { + return name; + } + + public Map getIngredients() { + return ingredients; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Inventory.java b/Restaurantverwaltung/src/Inventory.java new file mode 100644 index 0000000..e9ed292 --- /dev/null +++ b/Restaurantverwaltung/src/Inventory.java @@ -0,0 +1,36 @@ +import java.util.*; +class Inventory { + private Map stock; + + public Inventory() { + stock = new HashMap<>(); + stock.put("Brot", 10); + stock.put("Fleisch", 8); + stock.put("Käse", 5); + stock.put("Salat", 7); + stock.put("Tomaten", 6); + } + + public void viewStock() { + System.out.println("Aktueller Bestand:"); + for (Map.Entry entry : stock.entrySet()) { + System.out.println(entry.getKey() + ": " + entry.getValue()); + } + } + + public boolean useIngredients(Map ingredients) { + for (Map.Entry entry : ingredients.entrySet()) { + String ingredient = entry.getKey(); + int amount = entry.getValue(); + + if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) { + System.out.println("Nicht genug " + ingredient + " im Lager."); + return false; + } + } + for (Map.Entry entry : ingredients.entrySet()) { + stock.put(entry.getKey(), stock.get(entry.getKey()) - entry.getValue()); + } + return true; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Menu.java b/Restaurantverwaltung/src/Menu.java new file mode 100644 index 0000000..f1b72d5 --- /dev/null +++ b/Restaurantverwaltung/src/Menu.java @@ -0,0 +1,20 @@ +import java.util.*; +class Menu { + private List dishes; + + public Menu() { + dishes = new ArrayList<>(); + dishes.add(new Dish("Cheeseburger", Map.of("Brot", 1, "Fleisch", 1, "Käse", 1))); + dishes.add(new Dish("Veggie-Burger", Map.of("Brot", 1, "Salat", 1, "Tomaten", 1))); + dishes.add(new Dish("Double Meat Burger", Map.of("Brot", 1, "Fleisch", 2))); + } + + public void displayMenu(Inventory inventory) { + System.out.println("Verfügbares Menü:"); + for (Dish dish : dishes) { + if (inventory.useIngredients(dish.getIngredients())) { + System.out.println("- " + dish.getName()); + } + } + } +} diff --git a/Restaurantverwaltung/src/Order.java b/Restaurantverwaltung/src/Order.java new file mode 100644 index 0000000..9bf391e --- /dev/null +++ b/Restaurantverwaltung/src/Order.java @@ -0,0 +1,15 @@ +class Order { + private int tableNumber; + private String dish; + private boolean completed; + + public Order(int tableNumber, String dish) { + this.tableNumber = tableNumber; + this.dish = dish; + this.completed = false; + } + + public void completeOrder() { + completed = true; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Reservation.java b/Restaurantverwaltung/src/Reservation.java new file mode 100644 index 0000000..bfdd428 --- /dev/null +++ b/Restaurantverwaltung/src/Reservation.java @@ -0,0 +1,9 @@ +class Reservation { + private int tableNumber; + private String customerName; + + public Reservation(int tableNumber, String customerName) { + this.tableNumber = tableNumber; + this.customerName = customerName; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/RestaurantManagement.java b/Restaurantverwaltung/src/RestaurantManagement.java new file mode 100644 index 0000000..ba45311 --- /dev/null +++ b/Restaurantverwaltung/src/RestaurantManagement.java @@ -0,0 +1,8 @@ + + +public class RestaurantManagement { + public static void main(String[] args) { + SystemController systemController = new SystemController(); + systemController.startSystem(); + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Role.java b/Restaurantverwaltung/src/Role.java new file mode 100644 index 0000000..1c80796 --- /dev/null +++ b/Restaurantverwaltung/src/Role.java @@ -0,0 +1,3 @@ +enum Role { + MANAGER, SERVICE, KITCHEN +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/SystemController.java b/Restaurantverwaltung/src/SystemController.java new file mode 100644 index 0000000..548c73f --- /dev/null +++ b/Restaurantverwaltung/src/SystemController.java @@ -0,0 +1,122 @@ +import java.io.*; +import java.util.*; + +class SystemController { + private Scanner scanner = new Scanner(System.in); + private Map users = new HashMap<>(); + private final String USERS_FILE = "src/users.txt"; + private Inventory inventory = new Inventory(); + private Menu menu = new Menu(); + + public SystemController() { + // Benutzer aus Datei laden + loadUsersFromFile(); + } + + public void startSystem() { + System.out.println("Willkommen im Restaurant Management System!"); + System.out.println("Bitte loggen Sie sich ein: "); + + System.out.println("Username --------------->"); + + String username = scanner.nextLine(); + + System.out.println("Passwort --------------->"); + + String password = scanner.nextLine(); + + User user = authenticate(username, password); + if (user != null) { + displayMainMenu(user); + } else { + System.out.println("Ungültige Anmeldedaten."); + } + } + + private User authenticate(String username, String password) { + if (users.containsKey(username) && users.get(username).password.equals(password)) { + return users.get(username); + } + return null; + } + + private void displayMainMenu(User user) { + boolean running = true; + while (running) { + System.out.println("Hauptmenü:"); + System.out.println("1. Bestand ansehen"); + System.out.println("2. Neuer Nutzer erstellen"); + System.out.println("3. Menü anzeigen"); + System.out.println("4. Beenden"); + + int choice = scanner.nextInt(); + scanner.nextLine(); + + switch (choice) { + case 1 -> inventory.viewStock(); + case 2 -> { + if (user.role == Role.MANAGER) { + createUser(); + } else { + System.out.println("Keine Rechte du hs"); + } + } + case 3 -> menu.displayMenu(inventory); + case 4 -> running = false; + default -> System.out.println("Ungültige Auswahl."); + } + } + } + + private void createUser() { + System.out.println("Neuen Nutzer erstellen:"); + System.out.print("Benutzername: "); + String username = scanner.nextLine(); + System.out.print("Passwort: "); + String password = scanner.nextLine(); + System.out.print("Rolle (MANAGER, SERVICE, KITCHEN): "); + Role role = Role.valueOf(scanner.nextLine().toUpperCase()); + + User newUser = new User(username, password, role); + users.put(username, newUser); + saveUserToFile(newUser); + + System.out.println("Nutzer erfolgreich erstellt."); + } + + private void loadUsersFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader(USERS_FILE))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split(":"); + if (parts.length == 3) { + String username = parts[0]; + String password = parts[1]; + Role role = Role.valueOf(parts[2].toUpperCase()); + + users.put(username, new User(username, password, role)); + } + } + } catch (FileNotFoundException e) { + System.out.println("Benutzerdatenbank nicht gefunden. Standard-Manager wird erstellt."); + createDefaultManager(); + } catch (IOException e) { + System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage()); + } + } + + private void saveUserToFile(User user) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(USERS_FILE, true))) { + writer.write(user.username + ":" + user.password + ":" + user.role.name()); + writer.newLine(); + } catch (IOException e) { + System.out.println("Fehler beim Speichern des Nutzers: " + e.getMessage()); + } + } + + private void createDefaultManager() { + User defaultManager = new User("Dimitry", "1234", Role.MANAGER); + users.put("Dimitry", defaultManager); + saveUserToFile(defaultManager); + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/User.java b/Restaurantverwaltung/src/User.java new file mode 100644 index 0000000..3f7716c --- /dev/null +++ b/Restaurantverwaltung/src/User.java @@ -0,0 +1,13 @@ +class User { + String username; + String password; + Role role; + + public User(String username, String password, Role role) { + this.username = username; + this.password = password; + this.role = role; + } + + +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/users.txt b/Restaurantverwaltung/src/users.txt new file mode 100644 index 0000000..4863871 --- /dev/null +++ b/Restaurantverwaltung/src/users.txt @@ -0,0 +1,3 @@ +Dimitry:1234:MANAGER +Abbas Kronboch:Araber:SERVICE +Ananas Kopf:Bananenbieger:KITCHEN diff --git a/Restaurantverwaltung/users.txt b/Restaurantverwaltung/users.txt new file mode 100644 index 0000000..226b9b7 --- /dev/null +++ b/Restaurantverwaltung/users.txt @@ -0,0 +1,2 @@ +Dimitry:1234:MANAGER +Abbas Kronboch:Araber:SERVICE