diff --git a/Restaurantverwaltung/src/Inventory.java b/Restaurantverwaltung/src/Inventory.java index e9ed292..c01f89b 100644 --- a/Restaurantverwaltung/src/Inventory.java +++ b/Restaurantverwaltung/src/Inventory.java @@ -1,36 +1,124 @@ import java.util.*; +import java.io.*; + class Inventory { - private Map stock; + private Map stock; + private final String STOCK_FILE = "src/stock.txt"; + + - 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 loadStockFromFile() { + stock = new HashMap<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split(","); - public void viewStock() { - System.out.println("Aktueller Bestand:"); - for (Map.Entry entry : stock.entrySet()) { - System.out.println(entry.getKey() + ": " + entry.getValue()); - } - } + String name = parts[0]; + Integer count = Integer.parseInt(parts[1]); + stock.put(name, count); - public boolean useIngredients(Map ingredients) { - for (Map.Entry entry : ingredients.entrySet()) { - String ingredient = entry.getKey(); - int amount = entry.getValue(); + } + } catch (FileNotFoundException e) { + System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden"); - 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; - } + } catch (IOException e) { + System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage()); + } + } + + public void saveStockToFile() { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) { + for (Map.Entry entry : stock.entrySet()) { + writer.write(entry.getKey() + "," + entry.getValue()); + writer.newLine(); + } + System.out.println("Bestand in Datei gespeichert."); + } catch (IOException e) { + System.out.println("Fehler beim Speichern der Datei: " + e.getMessage()); + } + } + + public Inventory() { + + } + + 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; + } + + // Neue Methode: Zutaten hinzufügen + public void addIngredients(String ingredient, int amount) { + if (amount <= 0) { + System.out.println("Ungültige Menge: " + amount); + return; + } + stock.put(ingredient, stock.getOrDefault(ingredient, 0) + amount); + System.out.println(amount + " " + ingredient + " hinzugefügt."); + } + + // Neue Methode: Zutaten entfernen + public void removeIngredient(String ingredient) { + if (stock.containsKey(ingredient)) { + stock.remove(ingredient); + System.out.println(ingredient + " wurde aus dem Lager entfernt."); + } else { + System.out.println(ingredient + " ist nicht im Lager vorhanden."); + } + } + + // Neue Methode: Gesamten Bestand prüfen + public int totalStock() { + int total = 0; + for (int amount : stock.values()) { + total += amount; + } + return total; + } + + // Neue Methode: Warnungen bei niedrigem Bestand + public void lowStockWarning(int threshold) { + System.out.println("Warnung: Niedriger Bestand bei folgenden Zutaten:"); + for (Map.Entry entry : stock.entrySet()) { + if (entry.getValue() < threshold) { + System.out.println(entry.getKey() + ": " + entry.getValue()); + } + } + } + + + + // Neue Methode: Zutatenbestand überschreiben + public void overwriteStock(String ingredient, int amount) { + if (amount < 0) { + System.out.println("Ungültige Menge: " + amount); + return; + } + if (stock.containsKey(ingredient)) { + stock.put(ingredient, amount); + System.out.println(ingredient + " Bestand auf " + amount + " gesetzt."); + } else { + System.out.println(ingredient + " ist nicht im Lager vorhanden. Hinzufügen mit neuer Menge."); + stock.put(ingredient, amount); + } + } } \ No newline at end of file diff --git a/Restaurantverwaltung/src/SystemController.java b/Restaurantverwaltung/src/SystemController.java index 4486f9a..ee9ef70 100644 --- a/Restaurantverwaltung/src/SystemController.java +++ b/Restaurantverwaltung/src/SystemController.java @@ -12,6 +12,7 @@ class SystemController { public SystemController() { loadUsersFromFile(); + } public void startSystem() { @@ -42,8 +43,9 @@ class SystemController { private void displayMainMenu(User user) { boolean running = true; while (running) { + inventory.loadStockFromFile(); System.out.println("\n--- Hauptmenü ---"); - System.out.println("1. Bestand ansehen"); + 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"); @@ -54,7 +56,7 @@ class SystemController { scanner.nextLine(); // Eingabepuffer leeren switch (choice) { - case 1 -> inventory.viewStock(); + case 1 -> manageInventory(); case 2 -> { if (user.role == Role.MANAGER) { createUser(); @@ -72,6 +74,56 @@ class SystemController { } } } + + private void manageInventory() { + boolean managingInventory = true; + while (managingInventory) { + inventory.loadStockFromFile(); + System.out.println("\n--- Bestand verwalten ---"); + System.out.println("1. Bestand ansehen"); + System.out.println("2. Bestand ändern"); + System.out.println("3. Bestand erweitern"); + System.out.println("4. Zurück zum Hauptmenü"); + + System.out.print("Bitte wähle eine Option: "); + int choice = scanner.nextInt(); + scanner.nextLine(); // Eingabepuffer leeren + + switch (choice) { + case 1 -> { + inventory.viewStock(); // Bestand ansehen + } + case 2 -> { + System.out.println("Welchen Bestand möchten sie ändern?"); + String name = scanner.nextLine(); + System.out.println("Neue Anzahl ---->"); + try { + int anzahl = scanner.nextInt(); + inventory.overwriteStock(name,anzahl); // Bestellungen im Speicher anzeigen + inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für alle Nutzer zugänglich macht + } catch (IllegalArgumentException e) { + System.out.println("Fehler! Übeprüfen Sie ihre Eingabe"); + } + + } + case 3 -> { + System.out.println("Bestand wird erweitert....."); + System.out.println("Name des Produkts: "); + String name = scanner.nextLine(); + System.out.println("Anzahl :"); + try { + int anzahl = scanner.nextInt(); + inventory.addIngredients(name,anzahl); // Bestellungen im Speicher anzeigen + inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für alle Nutzer zugänglich macht + } catch (IllegalArgumentException e) { + System.out.println("Fehler! Übeprüfen Sie ihre Eingabe"); + } + } + case 4 -> managingInventory = false; + default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); + } + } + } private void manageOrders() { boolean managingOrders = true; @@ -153,4 +205,6 @@ class SystemController { users.put("Dimitry", defaultManager); saveUserToFile(defaultManager); } -} + + +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/stock.txt b/Restaurantverwaltung/src/stock.txt new file mode 100644 index 0000000..91d3d40 --- /dev/null +++ b/Restaurantverwaltung/src/stock.txt @@ -0,0 +1,5 @@ +Soße,50000000 +Ananasdasdas,5000 +Brot,1532 +Tomaten,511 +Käse,732