From e29730c2233f18b379d044e7f406fec8b59981d1 Mon Sep 17 00:00:00 2001 From: Aliuy Date: Wed, 11 Dec 2024 19:34:16 +0100 Subject: [PATCH] Bestellungssystem verfeinert (Wird noch weiter verfeinert), Ueberpruefung welche Gerichte vorhanden sind --- Restaurantverwaltung/src/Bestellsystem.java | 217 ++++++++++-------- Restaurantverwaltung/src/Bestellung.java | 23 +- Restaurantverwaltung/src/Inventory.java | 1 - Restaurantverwaltung/src/Menu.java | 16 +- .../src/SystemController.java | 24 +- Restaurantverwaltung/src/stock.txt | 1 + 6 files changed, 160 insertions(+), 122 deletions(-) diff --git a/Restaurantverwaltung/src/Bestellsystem.java b/Restaurantverwaltung/src/Bestellsystem.java index 2d83726..2441e8c 100644 --- a/Restaurantverwaltung/src/Bestellsystem.java +++ b/Restaurantverwaltung/src/Bestellsystem.java @@ -1,117 +1,142 @@ import java.util.Scanner; import java.io.BufferedReader; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; - +import java.util.HashMap; public class Bestellsystem { - private static List bestellungen = new ArrayList<>(); - private static Scanner scanner = new Scanner(System.in); + private static List bestellungen = new ArrayList<>(); + private static Scanner scanner = new Scanner(System.in); + private static Menu menu = new Menu(); + private final String STOCK_FILE = "src/stock.txt"; + HashMap stock = new HashMap<>(); - - public static void erstelleBestellung() { - System.out.print("Bitte gib die Tischnummer ein: "); - String tischNummer = scanner.nextLine(); + public static void erstelleBestellung() { + System.out.print("Bitte gib die Tischnummer ein: "); + String tischNummer = scanner.nextLine(); + Bestellung bestellung = new Bestellung(tischNummer); + while (true) { +// List Gerichte = new ArrayList<>(menu.getDishes()); +// try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) { +// String line; +// while ((line = reader.readLine()) != null) { +// String[] parts = line.split(","); +// +// String name = parts[0]; +// Integer count = Integer.parseInt(parts[1]); +// stock.put(name, count); +// +// } +// } catch (FileNotFoundException e) { +// System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden"); +// +// } catch (IOException e) { +// System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage()); +// } +// for (Dish gericht : Gerichte) { +// if (stock.containsKey(gericht.getName())) { +// if (stock.get(gericht.getName()) < ) +// } +// } + System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): "); + String gericht = scanner.nextLine(); + boolean istVerfuegbar = false; + for (Dish dish : menu.getDishes()) { + if (gericht.equalsIgnoreCase(dish.getName())) { + bestellung.addGericht(gericht); + istVerfuegbar = true; + bestellungen.add(bestellung); + System.out.println("Bestellung wurde erfolgreich aufgenommen."); + System.out.println(bestellung.getBestellungDetails()); + } + if (gericht.equalsIgnoreCase("fertig")) { + break; + } + } + if (istVerfuegbar == false) { + System.out.println("Gericht ist nicht im Menu"); + } - Bestellung bestellung = new Bestellung(tischNummer); +// while (true) { +// System.out.print("Möchte der Kunde noch einen Zusatzwunsch für dieses Gericht? (ja/nein): "); +// String wunschAntwort = scanner.nextLine(); +// +// if (wunschAntwort.equalsIgnoreCase("ja")) { +// System.out.print("Bitte gib den Zusatzwunsch ein (z.B. 'keine Tomaten'): "); +// String zusatzWunsch = scanner.nextLine(); +// bestellung.addZusatzWunsch(zusatzWunsch); +// } else if (wunschAntwort.equalsIgnoreCase("nein")) { +// break; +// } +// } + } + } - while (true) { - System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): "); - String gericht = scanner.nextLine(); + public static void speichereBestellung(Bestellung bestellung) { + try { - if (gericht.equalsIgnoreCase("fertig")) { - break; - } + File file = new File("Bestellungen.txt"); + FileWriter writer = new FileWriter(file, true); + writer.write(bestellung.getBestellungDetails()); + writer.write("\n--------------------------\n"); + writer.close(); + System.out.println("Bestellung wurde erfolgreich gespeichert."); + } catch (IOException e) { + System.out.println("Fehler beim Speichern der Bestellung: " + e.getMessage()); + } + } - bestellung.addGericht(gericht); + public static void ladeUndZeigeBestellungen() { + try { + FileReader fileReader = new FileReader("Bestellungen.txt"); + BufferedReader bufferedReader = new BufferedReader(fileReader); + String zeile; - while (true) { - System.out.print("Möchte der Kunde noch einen Zusatzwunsch für dieses Gericht? (ja/nein): "); - String wunschAntwort = scanner.nextLine(); + while ((zeile = bufferedReader.readLine()) != null) { + System.out.println(zeile); + } - if (wunschAntwort.equalsIgnoreCase("ja")) { - System.out.print("Bitte gib den Zusatzwunsch ein (z.B. 'keine Tomaten'): "); - String zusatzWunsch = scanner.nextLine(); - bestellung.addZusatzWunsch(zusatzWunsch); - } else if (wunschAntwort.equalsIgnoreCase("nein")) { - break; - } - } - } - - + bufferedReader.close(); + } catch (IOException e) { + System.out.println("Fehler beim Laden der Bestellungen: " + e.getMessage()); + } + } - bestellungen.add(bestellung); - System.out.println("Bestellung wurde erfolgreich aufgenommen."); - System.out.println(bestellung.getBestellungDetails()); - } - - public static void speichereBestellung(Bestellung bestellung) { - try { - - File file = new File("Bestellungen.txt"); - FileWriter writer = new FileWriter(file, true); - writer.write(bestellung.getBestellungDetails()); - writer.write("\n--------------------------\n"); - writer.close(); - System.out.println("Bestellung wurde erfolgreich gespeichert."); - } catch (IOException e) { - System.out.println("Fehler beim Speichern der Bestellung: " + e.getMessage()); - } - } + public static void zeigeAlleBestellungen() { + if (bestellungen.isEmpty()) { + System.out.println("Keine Bestellungen vorhanden."); + } else { + for (Bestellung bestellung : bestellungen) { + System.out.println(bestellung.getBestellungDetails()); + } + } + } - public static void ladeUndZeigeBestellungen() { - try { - FileReader fileReader = new FileReader("Bestellungen.txt"); - BufferedReader bufferedReader = new BufferedReader(fileReader); - String zeile; + public static void main(String[] args) { + while (true) { + System.out.println("\n--- Restaurant Bestellsystem ---"); + System.out.println("1. Bestellung aufnehmen"); + System.out.println("2. Alle Bestellungen anzeigen"); + System.out.println("3. Beenden"); + System.out.print("Bitte wähle eine Option: "); + String option = scanner.nextLine(); - while ((zeile = bufferedReader.readLine()) != null) { - System.out.println(zeile); - } - - bufferedReader.close(); - } catch (IOException e) { - System.out.println("Fehler beim Laden der Bestellungen: " + e.getMessage()); - } - } - - - public static void zeigeAlleBestellungen() { - if (bestellungen.isEmpty()) { - System.out.println("Keine Bestellungen vorhanden."); - } else { - for (Bestellung bestellung : bestellungen) { - System.out.println(bestellung.getBestellungDetails()); - } - } - } - - public static void main(String[] args) { - while (true) { - System.out.println("\n--- Restaurant Bestellsystem ---"); - System.out.println("1. Bestellung aufnehmen"); - System.out.println("2. Alle Bestellungen anzeigen"); - System.out.println("3. Beenden"); - - System.out.print("Bitte wähle eine Option: "); - String option = scanner.nextLine(); - - if (option.equals("1")) { - erstelleBestellung(); - } else if (option.equals("2")) { - zeigeAlleBestellungen(); - } else if (option.equals("3")) { - System.out.println("Programm wird beendet."); - break; - } else { - System.out.println("Ungültige Eingabe. Bitte versuche es erneut."); - } - } - } -} + if (option.equals("1")) { + erstelleBestellung(); + } else if (option.equals("2")) { + zeigeAlleBestellungen(); + } else if (option.equals("3")) { + System.out.println("Programm wird beendet."); + break; + } else { + System.out.println("Ungültige Eingabe. Bitte versuche es erneut."); + } + } + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Bestellung.java b/Restaurantverwaltung/src/Bestellung.java index e957dfc..e50eba8 100644 --- a/Restaurantverwaltung/src/Bestellung.java +++ b/Restaurantverwaltung/src/Bestellung.java @@ -6,10 +6,11 @@ public class Bestellung { private List bestellteGerichte; private List zusatzWuensche; + public Bestellung(String tischNummer) { this.tischNummer = tischNummer; this.bestellteGerichte = new ArrayList<>(); - this.zusatzWuensche = new ArrayList<>(); + //this.zusatzWuensche = new ArrayList<>(); } public void addGericht(String gericht) { @@ -20,22 +21,22 @@ public class Bestellung { this.zusatzWuensche.add(wunsch); } - + public String getBestellungDetails() { StringBuilder details = new StringBuilder(); details.append("Tisch Nummer: ").append(tischNummer).append("\nBestellte Gerichte:\n"); - + for (String gericht : bestellteGerichte) { details.append("- ").append(gericht).append("\n"); } - if (!zusatzWuensche.isEmpty()) { - details.append("Zusätzliche Wünsche:\n"); - for (String wunsch : zusatzWuensche) { - details.append("- ").append(wunsch).append("\n"); - } - } - +// if (!zusatzWuensche.isEmpty()) { +// details.append("Zusätzliche Wünsche:\n"); +// for (String wunsch : zusatzWuensche) { +// details.append("- ").append(wunsch).append("\n"); +// } +// } + return details.toString(); } -} +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Inventory.java b/Restaurantverwaltung/src/Inventory.java index c01f89b..85d7ade 100644 --- a/Restaurantverwaltung/src/Inventory.java +++ b/Restaurantverwaltung/src/Inventory.java @@ -56,7 +56,6 @@ class Inventory { int amount = entry.getValue(); if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) { - System.out.println("Nicht genug " + ingredient + " im Lager."); return false; } } diff --git a/Restaurantverwaltung/src/Menu.java b/Restaurantverwaltung/src/Menu.java index f1b72d5..0563cb5 100644 --- a/Restaurantverwaltung/src/Menu.java +++ b/Restaurantverwaltung/src/Menu.java @@ -1,9 +1,9 @@ import java.util.*; class Menu { - private List dishes; + public List dishes = new ArrayList<>(); 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))); @@ -12,9 +12,17 @@ class Menu { public void displayMenu(Inventory inventory) { System.out.println("Verfügbares Menü:"); for (Dish dish : dishes) { - if (inventory.useIngredients(dish.getIngredients())) { + if (inventory.useIngredients(dish.getIngredients()) == true) { System.out.println("- " + dish.getName()); } } } -} + + public List getDishes() { + return dishes; + } + + public void setDishes(List dishes) { + this.dishes = dishes; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/SystemController.java b/Restaurantverwaltung/src/SystemController.java index ee9ef70..e021ae9 100644 --- a/Restaurantverwaltung/src/SystemController.java +++ b/Restaurantverwaltung/src/SystemController.java @@ -12,7 +12,7 @@ class SystemController { public SystemController() { loadUsersFromFile(); - + } public void startSystem() { @@ -74,7 +74,7 @@ class SystemController { } } } - + private void manageInventory() { boolean managingInventory = true; while (managingInventory) { @@ -97,24 +97,26 @@ class SystemController { System.out.println("Welchen Bestand möchten sie ändern?"); String name = scanner.nextLine(); System.out.println("Neue Anzahl ---->"); - try { + 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 + 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 { + 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 + 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"); } @@ -140,6 +142,9 @@ class SystemController { switch (choice) { case 1 -> { + System.out.println("Bestellbare Gerichte:"); + menu.displayMenu(inventory); + Bestellsystem.erstelleBestellung(); // Neue Bestellung erstellen } case 2 -> { @@ -206,5 +211,4 @@ class SystemController { saveUserToFile(defaultManager); } - } \ No newline at end of file diff --git a/Restaurantverwaltung/src/stock.txt b/Restaurantverwaltung/src/stock.txt index 91d3d40..537a4dc 100644 --- a/Restaurantverwaltung/src/stock.txt +++ b/Restaurantverwaltung/src/stock.txt @@ -3,3 +3,4 @@ Ananasdasdas,5000 Brot,1532 Tomaten,511 Käse,732 +Fleisch,24 \ No newline at end of file