Bestellungssystem verfeinert (Wird noch weiter verfeinert),

Ueberpruefung welche Gerichte vorhanden sind
master
Aliuy 2024-12-11 19:34:16 +01:00
parent 631d3f9602
commit e29730c223
6 changed files with 160 additions and 122 deletions

View File

@ -1,117 +1,142 @@
import java.util.Scanner; import java.util.Scanner;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.HashMap;
public class Bestellsystem { public class Bestellsystem {
private static List<Bestellung> bestellungen = new ArrayList<>(); private static List<Bestellung> bestellungen = new ArrayList<>();
private static Scanner scanner = new Scanner(System.in); private static Scanner scanner = new Scanner(System.in);
private static Menu menu = new Menu();
private final String STOCK_FILE = "src/stock.txt";
HashMap<String, Integer> stock = new HashMap<>();
public static void erstelleBestellung() {
public static void erstelleBestellung() { System.out.print("Bitte gib die Tischnummer ein: ");
System.out.print("Bitte gib die Tischnummer ein: "); String tischNummer = scanner.nextLine();
String tischNummer = scanner.nextLine(); Bestellung bestellung = new Bestellung(tischNummer);
while (true) {
// List<Dish> 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) { public static void speichereBestellung(Bestellung bestellung) {
System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): "); try {
String gericht = scanner.nextLine();
if (gericht.equalsIgnoreCase("fertig")) { File file = new File("Bestellungen.txt");
break; 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) { while ((zeile = bufferedReader.readLine()) != null) {
System.out.print("Möchte der Kunde noch einen Zusatzwunsch für dieses Gericht? (ja/nein): "); System.out.println(zeile);
String wunschAntwort = scanner.nextLine(); }
if (wunschAntwort.equalsIgnoreCase("ja")) { bufferedReader.close();
System.out.print("Bitte gib den Zusatzwunsch ein (z.B. 'keine Tomaten'): "); } catch (IOException e) {
String zusatzWunsch = scanner.nextLine(); System.out.println("Fehler beim Laden der Bestellungen: " + e.getMessage());
bestellung.addZusatzWunsch(zusatzWunsch); }
} else if (wunschAntwort.equalsIgnoreCase("nein")) { }
break;
}
}
}
bestellungen.add(bestellung); public static void zeigeAlleBestellungen() {
System.out.println("Bestellung wurde erfolgreich aufgenommen."); if (bestellungen.isEmpty()) {
System.out.println(bestellung.getBestellungDetails()); System.out.println("Keine Bestellungen vorhanden.");
} } else {
for (Bestellung bestellung : bestellungen) {
public static void speichereBestellung(Bestellung bestellung) { System.out.println(bestellung.getBestellungDetails());
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 ladeUndZeigeBestellungen() { public static void main(String[] args) {
try { while (true) {
FileReader fileReader = new FileReader("Bestellungen.txt"); System.out.println("\n--- Restaurant Bestellsystem ---");
BufferedReader bufferedReader = new BufferedReader(fileReader); System.out.println("1. Bestellung aufnehmen");
String zeile; 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) { if (option.equals("1")) {
System.out.println(zeile); erstelleBestellung();
} } else if (option.equals("2")) {
zeigeAlleBestellungen();
bufferedReader.close(); } else if (option.equals("3")) {
} catch (IOException e) { System.out.println("Programm wird beendet.");
System.out.println("Fehler beim Laden der Bestellungen: " + e.getMessage()); break;
} } else {
} System.out.println("Ungültige Eingabe. Bitte versuche es erneut.");
}
}
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.");
}
}
}
}

View File

@ -6,10 +6,11 @@ public class Bestellung {
private List<String> bestellteGerichte; private List<String> bestellteGerichte;
private List<String> zusatzWuensche; private List<String> zusatzWuensche;
public Bestellung(String tischNummer) { public Bestellung(String tischNummer) {
this.tischNummer = tischNummer; this.tischNummer = tischNummer;
this.bestellteGerichte = new ArrayList<>(); this.bestellteGerichte = new ArrayList<>();
this.zusatzWuensche = new ArrayList<>(); //this.zusatzWuensche = new ArrayList<>();
} }
public void addGericht(String gericht) { public void addGericht(String gericht) {
@ -20,22 +21,22 @@ public class Bestellung {
this.zusatzWuensche.add(wunsch); this.zusatzWuensche.add(wunsch);
} }
public String getBestellungDetails() { public String getBestellungDetails() {
StringBuilder details = new StringBuilder(); StringBuilder details = new StringBuilder();
details.append("Tisch Nummer: ").append(tischNummer).append("\nBestellte Gerichte:\n"); details.append("Tisch Nummer: ").append(tischNummer).append("\nBestellte Gerichte:\n");
for (String gericht : bestellteGerichte) { for (String gericht : bestellteGerichte) {
details.append("- ").append(gericht).append("\n"); details.append("- ").append(gericht).append("\n");
} }
if (!zusatzWuensche.isEmpty()) { // if (!zusatzWuensche.isEmpty()) {
details.append("Zusätzliche Wünsche:\n"); // details.append("Zusätzliche Wünsche:\n");
for (String wunsch : zusatzWuensche) { // for (String wunsch : zusatzWuensche) {
details.append("- ").append(wunsch).append("\n"); // details.append("- ").append(wunsch).append("\n");
} // }
} // }
return details.toString(); return details.toString();
} }
} }

View File

@ -56,7 +56,6 @@ class Inventory {
int amount = entry.getValue(); int amount = entry.getValue();
if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) { if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) {
System.out.println("Nicht genug " + ingredient + " im Lager.");
return false; return false;
} }
} }

View File

@ -1,9 +1,9 @@
import java.util.*; import java.util.*;
class Menu { class Menu {
private List<Dish> dishes; public List<Dish> dishes = new ArrayList<>();
public Menu() { public Menu() {
dishes = new ArrayList<>();
dishes.add(new Dish("Cheeseburger", Map.of("Brot", 1, "Fleisch", 1, "Käse", 1))); 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("Veggie-Burger", Map.of("Brot", 1, "Salat", 1, "Tomaten", 1)));
dishes.add(new Dish("Double Meat Burger", Map.of("Brot", 1, "Fleisch", 2))); dishes.add(new Dish("Double Meat Burger", Map.of("Brot", 1, "Fleisch", 2)));
@ -12,9 +12,17 @@ class Menu {
public void displayMenu(Inventory inventory) { public void displayMenu(Inventory inventory) {
System.out.println("Verfügbares Menü:"); System.out.println("Verfügbares Menü:");
for (Dish dish : dishes) { for (Dish dish : dishes) {
if (inventory.useIngredients(dish.getIngredients())) { if (inventory.useIngredients(dish.getIngredients()) == true) {
System.out.println("- " + dish.getName()); System.out.println("- " + dish.getName());
} }
} }
} }
}
public List<Dish> getDishes() {
return dishes;
}
public void setDishes(List<Dish> dishes) {
this.dishes = dishes;
}
}

View File

@ -12,7 +12,7 @@ class SystemController {
public SystemController() { public SystemController() {
loadUsersFromFile(); loadUsersFromFile();
} }
public void startSystem() { public void startSystem() {
@ -74,7 +74,7 @@ class SystemController {
} }
} }
} }
private void manageInventory() { private void manageInventory() {
boolean managingInventory = true; boolean managingInventory = true;
while (managingInventory) { while (managingInventory) {
@ -97,24 +97,26 @@ class SystemController {
System.out.println("Welchen Bestand möchten sie ändern?"); System.out.println("Welchen Bestand möchten sie ändern?");
String name = scanner.nextLine(); String name = scanner.nextLine();
System.out.println("Neue Anzahl ---->"); System.out.println("Neue Anzahl ---->");
try { try {
int anzahl = scanner.nextInt(); int anzahl = scanner.nextInt();
inventory.overwriteStock(name,anzahl); // Bestellungen im Speicher anzeigen 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.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für
// alle Nutzer zugänglich macht
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println("Fehler! Übeprüfen Sie ihre Eingabe"); System.out.println("Fehler! Übeprüfen Sie ihre Eingabe");
} }
} }
case 3 -> { case 3 -> {
System.out.println("Bestand wird erweitert....."); System.out.println("Bestand wird erweitert.....");
System.out.println("Name des Produkts: "); System.out.println("Name des Produkts: ");
String name = scanner.nextLine(); String name = scanner.nextLine();
System.out.println("Anzahl :"); System.out.println("Anzahl :");
try { try {
int anzahl = scanner.nextInt(); int anzahl = scanner.nextInt();
inventory.addIngredients(name,anzahl); // Bestellungen im Speicher anzeigen 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.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für
// alle Nutzer zugänglich macht
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println("Fehler! Übeprüfen Sie ihre Eingabe"); System.out.println("Fehler! Übeprüfen Sie ihre Eingabe");
} }
@ -140,6 +142,9 @@ class SystemController {
switch (choice) { switch (choice) {
case 1 -> { case 1 -> {
System.out.println("Bestellbare Gerichte:");
menu.displayMenu(inventory);
Bestellsystem.erstelleBestellung(); // Neue Bestellung erstellen Bestellsystem.erstelleBestellung(); // Neue Bestellung erstellen
} }
case 2 -> { case 2 -> {
@ -206,5 +211,4 @@ class SystemController {
saveUserToFile(defaultManager); saveUserToFile(defaultManager);
} }
} }

View File

@ -3,3 +3,4 @@ Ananasdasdas,5000
Brot,1532 Brot,1532
Tomaten,511 Tomaten,511
Käse,732 Käse,732
Fleisch,24