Anpassung der Kosten, hinzufügen der Preise, optimierung der Anzeige,
parent
8a28a35a6d
commit
d97c8e898a
|
|
@ -24,106 +24,79 @@ public class Bestellsystem {
|
||||||
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);
|
Bestellung bestellung = new Bestellung(tischNummer);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
// List<Dish> Gerichte = new ArrayList<>(menu.getDishes());
|
// Gericht auswählen
|
||||||
// try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) {
|
System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): ");
|
||||||
// String line;
|
String gericht = scanner.nextLine();
|
||||||
// while ((line = reader.readLine()) != null) {
|
boolean istVerfuegbar = false;
|
||||||
// String[] parts = line.split(",");
|
|
||||||
//
|
// Wenn der Benutzer 'fertig' eingibt, wird die Bestellung gespeichert
|
||||||
// String name = parts[0];
|
if (gericht.equalsIgnoreCase("fertig")) {
|
||||||
// Integer count = Integer.parseInt(parts[1]);
|
speichereBestellung(bestellung);
|
||||||
// stock.put(name, count);
|
System.out.println("Bestand wurde aktualisiert");
|
||||||
//
|
break;
|
||||||
// }
|
}
|
||||||
// } catch (FileNotFoundException e) {
|
|
||||||
// System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden");
|
// Überprüfen, ob das Gericht im Menü verfügbar ist
|
||||||
//
|
try {
|
||||||
// } catch (IOException e) {
|
for (Dish dish : menu.getDishes()) {
|
||||||
// System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage());
|
if (gericht.equalsIgnoreCase(dish.getName())) {
|
||||||
// }
|
// Zutaten für das Gericht verwenden (Bestand aktualisieren)
|
||||||
// for (Dish gericht : Gerichte) {
|
SystemController.inventory.useIngredients(dish.getIngredients());
|
||||||
// if (stock.containsKey(gericht.getName())) {
|
bestellung.addGericht(gericht); // Gericht zur Bestellung hinzufügen
|
||||||
// if (stock.get(gericht.getName()) < )
|
istVerfuegbar = true;
|
||||||
// }
|
bestellungen.add(bestellung); // Bestellung zur Liste der Bestellungen hinzufügen
|
||||||
// }
|
System.out.println("Bestellung wurde aktualisiert");
|
||||||
System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): ");
|
System.out.println(bestellung.getBestellungDetails()); // Bestellungsdetails anzeigen
|
||||||
String gericht = scanner.nextLine();
|
break;
|
||||||
boolean istVerfuegbar = false;
|
}
|
||||||
if (gericht.equalsIgnoreCase("fertig")) {
|
}
|
||||||
speichereBestellung(bestellung);
|
} catch (Exception e) {
|
||||||
System.out.println("Bestand wurde aktualisiert");
|
System.out.println("Fehler beim Hinzufügen des Gerichts zur Bestellung: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wenn das Gericht nicht im Menü ist, eine Fehlermeldung anzeigen
|
||||||
|
if (!istVerfuegbar) {
|
||||||
|
System.out.println("Gericht ist nicht im Menü.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void loescheBestellung() {
|
||||||
|
ladeUndZeigeBestellungen();
|
||||||
|
|
||||||
|
System.out.print("Gib die ID der zu löschenden Bestellung ein: ");
|
||||||
|
String id = scanner.nextLine();
|
||||||
|
|
||||||
|
Bestellung zuLoeschen = null;
|
||||||
|
|
||||||
|
for (Bestellung bestellung : bestellungen) {
|
||||||
|
if (bestellung.getId().equals(id)) {
|
||||||
|
zuLoeschen = bestellung;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
try { for (Dish dish : menu.getDishes()) {
|
}
|
||||||
if (gericht.equalsIgnoreCase(dish.getName())) {
|
|
||||||
SystemController.inventory.useIngredients(dish.getIngredients());
|
|
||||||
bestellung.addGericht(gericht);
|
|
||||||
istVerfuegbar = true;
|
|
||||||
bestellungen.add(bestellung);
|
|
||||||
System.out.println("Bestellung wurde aktualisiert");
|
|
||||||
System.out.println(bestellung.getBestellungDetails());
|
|
||||||
|
|
||||||
}
|
|
||||||
// else {
|
|
||||||
// System.out.println("Ist nicht verfügbar");
|
|
||||||
// }
|
|
||||||
}} catch (Exception e ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
if (istVerfuegbar == false) {
|
|
||||||
System.out.println("Gericht ist nicht im Menu");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
if (zuLoeschen != null) {
|
||||||
|
bestellungen.remove(zuLoeschen);
|
||||||
|
aktualisiereDatei();
|
||||||
|
System.out.println("Bestellung wurde gelöscht.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Keine Bestellung mit der angegebenen ID gefunden.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loescheBestellung() {
|
|
||||||
ladeUndZeigeBestellungen();
|
|
||||||
|
|
||||||
System.out.print("Gib die ID der zu löschenden Bestellung ein: ");
|
private static void aktualisiereDatei() {
|
||||||
String id = scanner.nextLine();
|
try (FileWriter writer = new FileWriter(FILE_PATH, false)) {
|
||||||
|
for (Bestellung bestellung : bestellungen) {
|
||||||
Bestellung zuLoeschen = null;
|
writer.write(bestellung.toFileFormat());
|
||||||
|
}
|
||||||
for (Bestellung bestellung : bestellungen) {
|
} catch (IOException e) {
|
||||||
if (bestellung.getId().equals(id)) {
|
System.out.println("Fehler beim Aktualisieren der Datei: " + e.getMessage());
|
||||||
zuLoeschen = bestellung;
|
}
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (zuLoeschen != null) {
|
|
||||||
bestellungen.remove(zuLoeschen);
|
|
||||||
aktualisiereDatei();
|
|
||||||
System.out.println("Bestellung wurde gelöscht.");
|
|
||||||
} else {
|
|
||||||
System.out.println("Keine Bestellung mit der angegebenen ID gefunden.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static void aktualisiereDatei() {
|
|
||||||
try (FileWriter writer = new FileWriter(FILE_PATH, false)) {
|
|
||||||
for (Bestellung bestellung : bestellungen) {
|
|
||||||
writer.write(bestellung.toFileFormat());
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.out.println("Fehler beim Aktualisieren der Datei: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void speichereBestellung(Bestellung bestellung) {
|
public static void speichereBestellung(Bestellung bestellung) {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,37 @@ Bestellte Gerichte:
|
||||||
|
|
||||||
Zeit: 16:13
|
Zeit: 16:13
|
||||||
--------------------------
|
--------------------------
|
||||||
|
ID: 657b07cf-3416-43a6-9477-8f057541caeb
|
||||||
|
Tisch Nummer: 01
|
||||||
|
Bestellte Gerichte:
|
||||||
|
|
||||||
|
Zeit: 17:13
|
||||||
|
--------------------------
|
||||||
|
ID: 13b6908f-6b5e-4ed5-9d83-a01913bf0608
|
||||||
|
Tisch Nummer: Ramen
|
||||||
|
Bestellte Gerichte:
|
||||||
|
|
||||||
|
Zeit: 17:25
|
||||||
|
--------------------------
|
||||||
|
ID: dbe203a2-da99-4420-8095-999f79d37eaa
|
||||||
|
Tisch Nummer: Cheeseburger
|
||||||
|
Bestellte Gerichte:
|
||||||
|
|
||||||
|
Zeit: 17:28
|
||||||
|
--------------------------
|
||||||
|
ID: f72aa0bf-d739-4e72-9654-add74abc3cea
|
||||||
|
Tisch Nummer: 01
|
||||||
|
Bestellte Gerichte:
|
||||||
|
- Cheeseburger
|
||||||
|
- Ramen
|
||||||
|
- Ramen
|
||||||
|
|
||||||
|
Zeit: 17:33
|
||||||
|
--------------------------
|
||||||
|
ID: 8adf6247-e041-46fd-86ee-2773b2eb69fe
|
||||||
|
Tisch Nummer: 01
|
||||||
|
Bestellte Gerichte:
|
||||||
|
- Cheeseburger
|
||||||
|
|
||||||
|
Zeit: 17:42
|
||||||
|
--------------------------
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
import java.util.*;
|
import java.util.Map;
|
||||||
|
|
||||||
class Dish {
|
class Dish {
|
||||||
private String name;
|
private String name;
|
||||||
private Map<String, Integer> ingredients;
|
private Map<String, Integer> ingredients;
|
||||||
|
private double price; // Preis für jedes Gericht
|
||||||
|
|
||||||
public Dish(String name, Map<String, Integer> ingredients) {
|
public Dish(String name, Map<String, Integer> ingredients, double price) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.ingredients = ingredients;
|
this.ingredients = ingredients;
|
||||||
|
this.price = price;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
@ -15,4 +18,8 @@ class Dish {
|
||||||
public Map<String, Integer> getIngredients() {
|
public Map<String, Integer> getIngredients() {
|
||||||
return ingredients;
|
return ingredients;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public double getPrice() {
|
||||||
|
return price;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,45 +1,91 @@
|
||||||
class FinancialManager {
|
import java.time.LocalDate;
|
||||||
private double totalRevenue; // Gesamte Einnahmen
|
import java.util.HashMap;
|
||||||
private double totalExpenses; // Gesamte Ausgaben
|
import java.util.Map;
|
||||||
|
|
||||||
// Konstruktor
|
public class FinancialManager {
|
||||||
public FinancialManager() {
|
private double totalRevenue;
|
||||||
this.totalRevenue = 0.0;
|
private double totalExpenses;
|
||||||
this.totalExpenses = 0.0;
|
private double totalProfit;
|
||||||
}
|
private Map<LocalDate, Double> dailyRevenue = new HashMap<>();
|
||||||
|
private Map<LocalDate, Double> weeklyRevenue = new HashMap<>();
|
||||||
|
private Map<LocalDate, Double> monthlyRevenue = new HashMap<>();
|
||||||
|
private Map<LocalDate, Double> dailyExpenses = new HashMap<>();
|
||||||
|
private Map<LocalDate, Double> weeklyExpenses = new HashMap<>();
|
||||||
|
private Map<LocalDate, Double> monthlyExpenses = new HashMap<>();
|
||||||
|
|
||||||
// Einnahmen hinzufügen
|
// Methode zur Hinzufügung von Einnahmen
|
||||||
public void addRevenue(double amount) {
|
public void addRevenue(double amount) {
|
||||||
totalRevenue += amount;
|
this.totalRevenue += amount;
|
||||||
System.out.println("Einnahmen hinzugefügt: " + amount + " Euro.");
|
LocalDate today = LocalDate.now();
|
||||||
|
dailyRevenue.put(today, dailyRevenue.getOrDefault(today, 0.0) + amount);
|
||||||
|
|
||||||
|
// Einnahmen für die Woche und den Monat aktualisieren
|
||||||
|
LocalDate startOfWeek = today.minusDays(today.getDayOfWeek().getValue() - 1);
|
||||||
|
weeklyRevenue.put(startOfWeek, weeklyRevenue.getOrDefault(startOfWeek, 0.0) + amount);
|
||||||
|
|
||||||
|
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||||
|
monthlyRevenue.put(startOfMonth, monthlyRevenue.getOrDefault(startOfMonth, 0.0) + amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ausgaben hinzufügen
|
// Methode zur Hinzufügung von Ausgaben
|
||||||
public void addExpense(double amount) {
|
public void addExpense(double amount) {
|
||||||
totalExpenses += amount;
|
this.totalExpenses += amount;
|
||||||
System.out.println("Ausgabe hinzugefügt: " + amount + " Euro.");
|
LocalDate today = LocalDate.now();
|
||||||
|
dailyExpenses.put(today, dailyExpenses.getOrDefault(today, 0.0) + amount);
|
||||||
|
|
||||||
|
// Ausgaben für die Woche und den Monat aktualisieren
|
||||||
|
LocalDate startOfWeek = today.minusDays(today.getDayOfWeek().getValue() - 1);
|
||||||
|
weeklyExpenses.put(startOfWeek, weeklyExpenses.getOrDefault(startOfWeek, 0.0) + amount);
|
||||||
|
|
||||||
|
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||||
|
monthlyExpenses.put(startOfMonth, monthlyExpenses.getOrDefault(startOfMonth, 0.0) + amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finanzbericht anzeigen (Einnahmen, Ausgaben und Netto-Gewinn)
|
// Methode zur Berechnung der Einnahmen für einen bestimmten Zeitraum
|
||||||
public void showFinancialReport(String period) {
|
public double getRevenueForPeriod(String period) {
|
||||||
double netProfit = totalRevenue - totalExpenses; // Netto-Gewinn berechnen
|
LocalDate today = LocalDate.now();
|
||||||
System.out.println("Finanzbericht für die " + period + ":");
|
switch (period.toLowerCase()) {
|
||||||
System.out.println("Gesamte Einnahmen: " + totalRevenue + " Euro.");
|
case "daily":
|
||||||
System.out.println("Gesamte Ausgaben: " + totalExpenses + " Euro.");
|
return dailyRevenue.getOrDefault(today, 0.0);
|
||||||
System.out.println("Netto-Gewinn: " + netProfit + " Euro.");
|
case "weekly":
|
||||||
|
LocalDate startOfWeek = today.minusDays(today.getDayOfWeek().getValue() - 1);
|
||||||
|
return weeklyRevenue.getOrDefault(startOfWeek, 0.0);
|
||||||
|
case "monthly":
|
||||||
|
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||||
|
return monthlyRevenue.getOrDefault(startOfMonth, 0.0);
|
||||||
|
default:
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getter für Einnahmen
|
// Methode zur Berechnung der Ausgaben für einen bestimmten Zeitraum
|
||||||
|
public double getExpensesForPeriod(String period) {
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
switch (period.toLowerCase()) {
|
||||||
|
case "daily":
|
||||||
|
return dailyExpenses.getOrDefault(today, 0.0);
|
||||||
|
case "weekly":
|
||||||
|
LocalDate startOfWeek = today.minusDays(today.getDayOfWeek().getValue() - 1);
|
||||||
|
return weeklyExpenses.getOrDefault(startOfWeek, 0.0);
|
||||||
|
case "monthly":
|
||||||
|
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||||
|
return monthlyExpenses.getOrDefault(startOfMonth, 0.0);
|
||||||
|
default:
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter für Gesamtumsatz
|
||||||
public double getTotalRevenue() {
|
public double getTotalRevenue() {
|
||||||
return totalRevenue;
|
return totalRevenue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getter für Ausgaben
|
// Getter für Gesamtausgaben
|
||||||
public double getTotalExpenses() {
|
public double getTotalExpenses() {
|
||||||
return totalExpenses;
|
return totalExpenses;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getter für Netto-Gewinn
|
// Berechnung des Nettogewinns
|
||||||
public double getNetProfit() {
|
public double getNetProfit() {
|
||||||
return totalRevenue - totalExpenses;
|
return totalRevenue - totalExpenses;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,123 +2,140 @@ import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class Inventory {
|
public class Inventory {
|
||||||
private Map<String, Integer> stock = new HashMap<>(); // Bestand der Zutaten
|
|
||||||
private final String STOCK_FILE = "src/stock.txt"; // Datei für den Bestand
|
|
||||||
|
|
||||||
// Lädt den Bestand aus der Datei
|
private Map<String, Integer> stock = new HashMap<>();
|
||||||
public void loadStockFromFile() {
|
private FinancialManager financialManager; // Deklaration der Instanzvariable
|
||||||
stock.clear();
|
|
||||||
try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) {
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
String[] parts = line.split(":");
|
|
||||||
if (parts.length == 2) {
|
|
||||||
String ingredientName = parts[0];
|
|
||||||
int quantity = Integer.parseInt(parts[1]);
|
|
||||||
stock.put(ingredientName, quantity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
System.out.println("Bestand-Datei nicht gefunden, neue Datei wird erstellt.");
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.out.println("Fehler beim Laden des Bestands: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Speichert den aktuellen Bestand in die Datei
|
public Inventory(FinancialManager financialManager) {
|
||||||
public void saveStockToFile() {
|
this.financialManager = financialManager; // Initialisierung des FinancialManagers im Konstruktor
|
||||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) {
|
}
|
||||||
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
|
||||||
writer.write(entry.getKey() + ":" + entry.getValue());
|
|
||||||
writer.newLine();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.out.println("Fehler beim Speichern des Bestands: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zeigt den aktuellen Bestand an
|
private final String STOCK_FILE = "src/stock.txt"; // Datei für den Bestand
|
||||||
public void viewStock() {
|
|
||||||
if (stock.isEmpty()) {
|
|
||||||
System.out.println("Der Bestand ist leer.");
|
|
||||||
} else {
|
|
||||||
System.out.println("\n--- Aktueller Bestand ---");
|
|
||||||
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
|
||||||
System.out.println(entry.getKey() + ": " + entry.getValue() + " Stück");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bestellmenge verringern (z.B. beim Bestellen)
|
// Lädt den Bestand aus der Datei
|
||||||
public void useIngredients(Map<String, Integer> usedIngredients) {
|
public void loadStockFromFile() {
|
||||||
for (Map.Entry<String, Integer> entry : usedIngredients.entrySet()) {
|
stock.clear();
|
||||||
String ingredientName = entry.getKey();
|
try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) {
|
||||||
int amountUsed = entry.getValue();
|
String line;
|
||||||
if (stock.containsKey(ingredientName)) {
|
while ((line = reader.readLine()) != null) {
|
||||||
int currentStock = stock.get(ingredientName);
|
String[] parts = line.split(":");
|
||||||
if (currentStock >= amountUsed) {
|
if (parts.length == 2) {
|
||||||
stock.put(ingredientName, currentStock - amountUsed);
|
String ingredientName = parts[0];
|
||||||
} else {
|
int quantity = Integer.parseInt(parts[1]);
|
||||||
System.out.println("Nicht genügend Bestand für " + ingredientName);
|
stock.put(ingredientName, quantity);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
System.out.println("Zutat " + ingredientName + " existiert nicht im Bestand.");
|
} catch (FileNotFoundException e) {
|
||||||
}
|
System.out.println("Bestand-Datei nicht gefunden, neue Datei wird erstellt.");
|
||||||
}
|
} catch (IOException e) {
|
||||||
}
|
System.out.println("Fehler beim Laden des Bestands: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Bestand erweitern und berechnen, ob Ausgaben hinzuzufügen sind
|
// Speichert den aktuellen Bestand in die Datei
|
||||||
public void addIngredients(String ingredientName, int amount, FinancialManager financialManager) {
|
public void saveStockToFile() {
|
||||||
if (stock.containsKey(ingredientName)) {
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) {
|
||||||
stock.put(ingredientName, stock.get(ingredientName) + amount);
|
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
||||||
} else {
|
writer.write(entry.getKey() + ":" + entry.getValue());
|
||||||
stock.put(ingredientName, amount);
|
writer.newLine();
|
||||||
}
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Fehler beim Speichern des Bestands: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Preis für den Einkauf von Zutaten (hier Beispielwerte für Salat und Tomaten)
|
// Zeigt den aktuellen Bestand an
|
||||||
double pricePerUnit = getPriceForIngredient(ingredientName);
|
public void viewStock() {
|
||||||
double totalCost = pricePerUnit * amount;
|
if (stock.isEmpty()) {
|
||||||
|
System.out.println("Der Bestand ist leer.");
|
||||||
|
} else {
|
||||||
|
System.out.println("\n--- Aktueller Bestand ---");
|
||||||
|
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
||||||
|
System.out.println(entry.getKey() + ": " + entry.getValue() + " Stück");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Finanzmanager über die Ausgaben informieren
|
// Bestellmenge verringern (z.B. beim Bestellen)
|
||||||
financialManager.addExpense(totalCost);
|
public void useIngredients(Map<String, Integer> usedIngredients) {
|
||||||
}
|
for (Map.Entry<String, Integer> entry : usedIngredients.entrySet()) {
|
||||||
|
String ingredientName = entry.getKey();
|
||||||
|
int amountUsed = entry.getValue();
|
||||||
|
if (stock.containsKey(ingredientName)) {
|
||||||
|
int currentStock = stock.get(ingredientName);
|
||||||
|
if (currentStock >= amountUsed) {
|
||||||
|
stock.put(ingredientName, currentStock - amountUsed);
|
||||||
|
} else {
|
||||||
|
System.out.println("Nicht genügend Bestand für " + ingredientName);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("Zutat " + ingredientName + " existiert nicht im Bestand.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Gibt den Preis für eine bestimmte Zutat zurück (Beispielpreise)
|
// Bestand erweitern und berechnen, ob Ausgaben hinzuzufügen sind
|
||||||
private double getPriceForIngredient(String ingredientName) {
|
public void addIngredients(String productName, int amountToAdd, FinancialManager financialManager) {
|
||||||
switch (ingredientName.toLowerCase()) {
|
double ingredientCost = 1.0; // Beispielhafter Preis für Zutaten (z.B. 1 Euro pro Stück)
|
||||||
case "salat":
|
|
||||||
return 1.5; // Preis für Salat pro Einheit
|
|
||||||
case "tomaten":
|
|
||||||
return 0.8; // Preis für Tomaten pro Einheit
|
|
||||||
case "cheeseburger":
|
|
||||||
return 3.0; // Preis für Cheeseburger pro Einheit
|
|
||||||
default:
|
|
||||||
return 1.0; // Standardpreis pro Einheit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// In der Inventory-Klasse:
|
|
||||||
public boolean showIngredientsAvailable(Map<String, Integer> ingredients) {
|
|
||||||
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
|
|
||||||
String ingredientName = entry.getKey();
|
|
||||||
int requiredAmount = entry.getValue();
|
|
||||||
|
|
||||||
if (!stock.containsKey(ingredientName) || stock.get(ingredientName) < requiredAmount) {
|
// Addiere die Zutaten zum Bestand
|
||||||
System.out.println("Nicht genügend Bestand für: " + ingredientName);
|
stock.put(productName, stock.getOrDefault(productName, 0) + amountToAdd);
|
||||||
return false; // Wenn eine Zutat nicht genug vorhanden ist, gibt die Methode false zurück
|
|
||||||
}
|
// Berechne die Ausgaben für die Erweiterung des Bestands
|
||||||
}
|
double totalCost = ingredientCost * amountToAdd;
|
||||||
return true; // Alle Zutaten sind verfügbar
|
|
||||||
}
|
// Gebe die Kosten in den Finanzen an
|
||||||
|
financialManager.addExpense(totalCost);
|
||||||
|
|
||||||
|
System.out.println("Bestand für " + productName + " wurde um " + amountToAdd + " Stück erhöht.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gibt den Preis für eine bestimmte Zutat zurück (Beispielpreise)
|
||||||
|
private double getPriceForIngredient(String ingredientName) {
|
||||||
|
switch (ingredientName.toLowerCase()) {
|
||||||
|
case "salat":
|
||||||
|
return 1.5; // Preis für Salat pro Einheit
|
||||||
|
case "tomaten":
|
||||||
|
return 0.8; // Preis für Tomaten pro Einheit
|
||||||
|
case "cheeseburger":
|
||||||
|
return 3.0; // Preis für Cheeseburger pro Einheit
|
||||||
|
default:
|
||||||
|
return 1.0; // Standardpreis pro Einheit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// In der Inventory-Klasse:
|
||||||
|
public boolean showIngredientsAvailable(Map<String, Integer> ingredients) {
|
||||||
|
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
|
||||||
|
String ingredient = entry.getKey();
|
||||||
|
int requiredAmount = entry.getValue();
|
||||||
|
|
||||||
|
// Überprüfe, ob der Lagerbestand ausreicht
|
||||||
|
if (!stock.containsKey(ingredient) || stock.get(ingredient) < requiredAmount) {
|
||||||
|
System.out.println("Nicht genügend Bestand für: " + ingredient); // Fehlermeldung
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Getter für den Bestand
|
public void overwriteStock(String productName, int newAmount) {
|
||||||
public Map<String, Integer> getStock() {
|
if (stock.containsKey(productName)) {
|
||||||
return stock;
|
stock.put(productName, newAmount);
|
||||||
}
|
System.out.println("Der Bestand für " + productName + " wurde auf " + newAmount + " Stück geändert.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Das Produkt " + productName + " existiert nicht im Bestand.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Setter für den Bestand
|
// Getter für den Bestand
|
||||||
public void setStock(Map<String, Integer> stock) {
|
public Map<String, Integer> getStock() {
|
||||||
this.stock = stock;
|
return stock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setter für den Bestand
|
||||||
|
public void setStock(Map<String, Integer> stock) {
|
||||||
|
this.stock = stock;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
class Menu {
|
public class Menu {
|
||||||
public List<Dish> dishes = new ArrayList<>();
|
public List<Dish> dishes = new ArrayList<>();
|
||||||
public List<Dish> availableDishes = new ArrayList<>();
|
public List<Dish> availableDishes = new ArrayList<>();
|
||||||
|
|
||||||
public Menu() {
|
public Menu() {
|
||||||
|
|
||||||
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), 5.0));
|
||||||
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), 4.0));
|
||||||
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), 6.0));
|
||||||
dishes.add(new Dish("Ramen", Map.of("Soße", 1, "Salat", 1, "Tomaten", 1, "Nudeln", 30)));
|
dishes.add(new Dish("Ramen", Map.of("Soße", 1, "Salat", 1, "Tomaten", 1, "Nudeln", 30), 7.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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) {
|
||||||
|
|
|
||||||
|
|
@ -1,251 +1,297 @@
|
||||||
import java.io.BufferedReader;
|
import java.util.Scanner;
|
||||||
import java.io.BufferedWriter;
|
import java.util.Map;
|
||||||
import java.io.FileNotFoundException;
|
import java.util.HashMap;
|
||||||
import java.io.FileReader;
|
import java.util.List;
|
||||||
import java.io.FileWriter;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
class SystemController {
|
public class SystemController {
|
||||||
private Scanner scanner = new Scanner(System.in);
|
private Scanner scanner = new Scanner(System.in);
|
||||||
private Map<String, User> users = new HashMap<>();
|
private Map<String, User> users = new HashMap<>();
|
||||||
private final String USERS_FILE = "src/users.txt";
|
private final String USERS_FILE = "src/users.txt";
|
||||||
private static Inventory inventory = new Inventory(); // Bestand
|
public static Inventory inventory;
|
||||||
private Menu menu = new Menu(); // Menü
|
private Menu menu = new Menu();
|
||||||
private FinancialManager financialManager = new FinancialManager(); // Finanzmanager
|
private FinancialManager financialManager = new FinancialManager(); // Instanziierung des FinancialManagers
|
||||||
|
|
||||||
public SystemController() {
|
public SystemController() {
|
||||||
loadUsersFromFile(); // Benutzer aus Datei laden
|
loadUsersFromFile();
|
||||||
}
|
inventory = new Inventory(financialManager); // Übergabe des FinancialManagers an Inventory
|
||||||
|
}
|
||||||
|
|
||||||
public void startSystem() {
|
public void startSystem() {
|
||||||
System.out.println("Willkommen im Restaurant Management System!");
|
System.out.println("Willkommen im Restaurant Management System!");
|
||||||
System.out.println("Bitte loggen Sie sich ein: ");
|
System.out.println("Bitte loggen Sie sich ein: ");
|
||||||
|
|
||||||
System.out.print("Username ---------------> ");
|
System.out.print("Username ---------------> ");
|
||||||
String username = scanner.nextLine();
|
String username = scanner.nextLine();
|
||||||
|
|
||||||
System.out.print("Passwort ---------------> ");
|
System.out.print("Passwort ---------------> ");
|
||||||
String password = scanner.nextLine();
|
String password = scanner.nextLine();
|
||||||
|
|
||||||
User user = authenticate(username, password);
|
User user = authenticate(username, password);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
displayMainMenu(user); // Hauptmenü anzeigen
|
displayMainMenu(user);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Ungültige Anmeldedaten.");
|
System.out.println("Ungültige Anmeldedaten.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private User authenticate(String username, String password) {
|
private User authenticate(String username, String password) {
|
||||||
if (users.containsKey(username) && users.get(username).password.equals(password)) {
|
if (users.containsKey(username) && users.get(username).password.equals(password)) {
|
||||||
return users.get(username);
|
return users.get(username);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayMainMenu(User user) {
|
public void displayMainMenu(User user) {
|
||||||
boolean running = true;
|
boolean running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
inventory.loadStockFromFile();
|
inventory.loadStockFromFile();
|
||||||
System.out.println("\n--- Hauptmenü ---");
|
System.out.println("\n--- Hauptmenü ---");
|
||||||
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");
|
|
||||||
System.out.println("5. Finanz- und Umsatzverwaltung");
|
|
||||||
System.out.println("6. Beenden");
|
|
||||||
|
|
||||||
System.out.print("Bitte wähle eine Option: ");
|
if (user.role == Role.SERVICE) {
|
||||||
int choice = scanner.nextInt();
|
System.out.println("1. Bestellung aufnehmen");
|
||||||
scanner.nextLine(); // Eingabepuffer leeren
|
System.out.println("2. Zurück");
|
||||||
|
} else {
|
||||||
|
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"); // Option zum Verwalten der Bestellungen hinzugefügt
|
||||||
|
System.out.println("5. Finanzbericht anzeigen");
|
||||||
|
System.out.println("6. Beenden");
|
||||||
|
}
|
||||||
|
|
||||||
switch (choice) {
|
System.out.print("Bitte wähle eine Option: ");
|
||||||
case 1 -> manageInventory(); // Bestand verwalten
|
int choice = scanner.nextInt();
|
||||||
case 2 -> {
|
scanner.nextLine(); // Eingabepuffer leeren
|
||||||
if (user.role == Role.MANAGER) {
|
|
||||||
createUser(); // Neuer Nutzer erstellen
|
|
||||||
} else {
|
|
||||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 3 -> menu.displayMenu(inventory); // Menü anzeigen
|
|
||||||
case 4 -> manageOrders(); // Bestellungen verwalten
|
|
||||||
case 5 -> manageFinances(); // Finanz- und Umsatzverwaltung
|
|
||||||
case 6 -> {
|
|
||||||
running = false;
|
|
||||||
System.out.println("System wird beendet. Auf Wiedersehen!");
|
|
||||||
}
|
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void manageInventory() {
|
switch (choice) {
|
||||||
boolean managingInventory = true;
|
case 1 -> {
|
||||||
while (managingInventory) {
|
if (user.role == Role.SERVICE) {
|
||||||
inventory.loadStockFromFile();
|
menu.displayMenu(inventory);
|
||||||
System.out.println("\n--- Bestand verwalten ---");
|
Bestellsystem.erstelleBestellung(); // Bestellung aufnehmen
|
||||||
System.out.println("1. Bestand ansehen");
|
updateFinancialReport(menu.getAvailableDishes()); // Finanzbericht aktualisieren
|
||||||
System.out.println("2. Bestand ändern");
|
} else {
|
||||||
System.out.println("3. Bestand erweitern");
|
manageInventory();
|
||||||
System.out.println("4. Zurück zum Hauptmenü");
|
}
|
||||||
|
}
|
||||||
|
case 2 -> {
|
||||||
|
if (user.role != Role.SERVICE) {
|
||||||
|
createUser();
|
||||||
|
} else {
|
||||||
|
running = false; // Zurück
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 3 -> {
|
||||||
|
if (user.role != Role.SERVICE) {
|
||||||
|
menu.displayMenu(inventory); // Menü anzeigen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 4 -> manageOrders(); // Bestellungen verwalten aufrufen
|
||||||
|
case 5 -> displayFinancialReport(); // Finanzbericht anzeigen
|
||||||
|
case 6 -> running = false; // Beenden
|
||||||
|
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
System.out.print("Bitte wähle eine Option: ");
|
// Finanzbericht aktualisieren:
|
||||||
int choice = scanner.nextInt();
|
private void updateFinancialReport(List<Dish> orderedDishes) {
|
||||||
scanner.nextLine(); // Eingabepuffer leeren
|
double totalAmount = 0;
|
||||||
|
|
||||||
switch (choice) {
|
for (Dish dish : orderedDishes) {
|
||||||
case 1 -> inventory.viewStock(); // Bestand ansehen
|
totalAmount += dish.getPrice(); // Gesamtbetrag basierend auf den Preisen der bestellten Gerichte
|
||||||
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.useIngredients(Map.of(name, anzahl)); // Zutaten im Bestand verwenden
|
|
||||||
inventory.saveStockToFile(); // Bestand speichern
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
System.out.println("Fehler! Überprü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, financialManager); // Bestand erweitern und Ausgaben verbuchen
|
|
||||||
inventory.saveStockToFile(); // Bestand speichern
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
System.out.println("Fehler! Überprüfen Sie Ihre Eingabe");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 4 -> managingInventory = false;
|
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void manageOrders() {
|
// Einnahmen im Finanzmanager hinzufügen
|
||||||
boolean managingOrders = true;
|
financialManager.addRevenue(totalAmount);
|
||||||
while (managingOrders) {
|
|
||||||
System.out.println("\n--- Bestellungen verwalten ---");
|
|
||||||
System.out.println("1. Bestellung aufnehmen");
|
|
||||||
System.out.println("2. Alle Bestellungen anzeigen");
|
|
||||||
System.out.println("3. Bestellungen löschen");
|
|
||||||
System.out.println("4. Zurück zum Hauptmenü");
|
|
||||||
|
|
||||||
System.out.print("Bitte wähle eine Option: ");
|
System.out.println("Gesamtkosten der Bestellung: " + totalAmount + " €");
|
||||||
int choice = scanner.nextInt();
|
}
|
||||||
scanner.nextLine(); // Eingabepuffer leeren
|
|
||||||
|
|
||||||
switch (choice) {
|
|
||||||
case 1 -> {
|
|
||||||
menu.displayMenu(inventory); // Menü anzeigen
|
|
||||||
Bestellsystem.erstelleBestellung(); // Bestellung aufnehmen
|
|
||||||
}
|
|
||||||
case 2 -> Bestellsystem.ladeUndZeigeBestellungen(); // Alle Bestellungen anzeigen
|
|
||||||
case 3 -> Bestellsystem.loescheBestellung(); // Bestellungen löschen
|
|
||||||
case 4 -> managingOrders = false;
|
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void manageFinances() {
|
private void manageInventory() {
|
||||||
boolean managingFinances = true;
|
boolean managingInventory = true;
|
||||||
while (managingFinances) {
|
while (managingInventory) {
|
||||||
System.out.println("\n--- Finanz- und Umsatzverwaltung ---");
|
inventory.loadStockFromFile();
|
||||||
System.out.println("1. Einnahmen und Ausgaben anzeigen");
|
System.out.println("\n--- Bestand verwalten ---");
|
||||||
System.out.println("2. Umsatzübersicht (Täglich, Wöchentlich, Monatlich)");
|
System.out.println("1. Bestand ansehen");
|
||||||
System.out.println("3. Zurück zum Hauptmenü");
|
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: ");
|
System.out.print("Bitte wähle eine Option: ");
|
||||||
int choice = scanner.nextInt();
|
int choice = scanner.nextInt();
|
||||||
scanner.nextLine(); // Eingabepuffer leeren
|
scanner.nextLine(); // Eingabepuffer leeren
|
||||||
|
|
||||||
switch (choice) {
|
switch (choice) {
|
||||||
case 1 -> financialManager.showFinancialReport("heute"); // Finanzbericht anzeigen
|
case 1 -> {
|
||||||
case 2 -> {
|
inventory.viewStock(); // Bestand ansehen
|
||||||
System.out.println("Bitte wählen Sie den Zeitraum:");
|
}
|
||||||
System.out.println("1. Täglich");
|
case 2 -> {
|
||||||
System.out.println("2. Wöchentlich");
|
System.out.println("Welchen Bestand möchten Sie ändern?");
|
||||||
System.out.println("3. Monatlich");
|
String name = scanner.nextLine();
|
||||||
int periodChoice = scanner.nextInt();
|
System.out.println("Neue Anzahl ---->");
|
||||||
scanner.nextLine(); // Eingabepuffer leeren
|
try {
|
||||||
|
int anzahl = scanner.nextInt();
|
||||||
|
inventory.overwriteStock(name, anzahl); // Bestellungen im Speicher anzeigen
|
||||||
|
inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
System.out.println("Fehler! Überprü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, financialManager); // Bestellungen im Speicher anzeigen
|
||||||
|
inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
System.out.println("Fehler! Überprüfen Sie Ihre Eingabe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 4 -> managingInventory = false;
|
||||||
|
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (periodChoice) {
|
|
||||||
case 1 -> financialManager.showFinancialReport("täglich"); // Täglicher Bericht
|
private void manageOrders() {
|
||||||
case 2 -> financialManager.showFinancialReport("wöchentlich"); // Wöchentlicher Bericht
|
boolean managingOrders = true;
|
||||||
case 3 -> financialManager.showFinancialReport("monatlich"); // Monatlicher Bericht
|
while (managingOrders) {
|
||||||
default -> System.out.println("Ungültige Auswahl.");
|
System.out.println("\n--- Bestellungen verwalten ---");
|
||||||
}
|
System.out.println("1. Bestellung aufnehmen");
|
||||||
}
|
System.out.println("2. Alle Bestellungen anzeigen");
|
||||||
case 3 -> managingFinances = false;
|
System.out.println("3. Bestellungen löschen");
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
System.out.println("4. Zurück zum Hauptmenü");
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUser() {
|
System.out.print("Bitte wähle eine Option: ");
|
||||||
String username = "";
|
int choice = scanner.nextInt();
|
||||||
String password = "";
|
scanner.nextLine(); // Eingabepuffer leeren
|
||||||
Role role = null;
|
|
||||||
try {
|
|
||||||
System.out.println("\n--- Neuen Nutzer erstellen ---");
|
|
||||||
System.out.print("Benutzername: ");
|
|
||||||
username = scanner.nextLine();
|
|
||||||
System.out.print("Passwort: ");
|
|
||||||
password = scanner.nextLine();
|
|
||||||
System.out.print("Rolle (MANAGER, SERVICE, KITCHEN): ");
|
|
||||||
role = Role.valueOf(scanner.nextLine().toUpperCase());
|
|
||||||
} catch (IllegalArgumentException | NullPointerException e) {
|
|
||||||
System.out.println("Fehler beim Erstellen eines Accounts. Überprüfen Sie Ihre Eingaben.");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
switch (choice) {
|
||||||
User newUser = new User(username, password, role);
|
case 1 -> {
|
||||||
users.put(username, newUser);
|
menu.displayMenu(inventory); // Menü anzeigen
|
||||||
saveUserToFile(newUser);
|
Bestellsystem.erstelleBestellung(); // Bestellung aufnehmen
|
||||||
System.out.println("Nutzer erfolgreich erstellt.");
|
updateFinancialReport(menu.getAvailableDishes()); // Finanzbericht aktualisieren
|
||||||
} catch (NullPointerException e) {
|
}
|
||||||
System.out.println("Fehler beim Erstellen des Nutzers.");
|
case 2 -> {
|
||||||
}
|
Bestellsystem.ladeUndZeigeBestellungen(); // Bestellungen anzeigen
|
||||||
}
|
}
|
||||||
|
case 3 -> {
|
||||||
|
Bestellsystem.loescheBestellung(); // Bestellungen löschen
|
||||||
|
}
|
||||||
|
case 4 -> managingOrders = false; // Zurück zum Hauptmenü
|
||||||
|
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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) {
|
private void createUser() {
|
||||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(USERS_FILE, true))) {
|
String username = "";
|
||||||
writer.write(user.username + ":" + user.password + ":" + user.role.name());
|
String password = "";
|
||||||
writer.newLine();
|
Role role = null;
|
||||||
} catch (IOException e) {
|
try {
|
||||||
System.out.println("Fehler beim Speichern des Nutzers: " + e.getMessage());
|
System.out.println("\n--- Neuen Nutzer erstellen ---");
|
||||||
}
|
System.out.print("Benutzername: ");
|
||||||
}
|
username = scanner.nextLine();
|
||||||
|
System.out.print("Passwort: ");
|
||||||
|
password = scanner.nextLine();
|
||||||
|
System.out.print("Rolle (MANAGER, SERVICE, KITCHEN): ");
|
||||||
|
role = Role.valueOf(scanner.nextLine().toUpperCase());
|
||||||
|
} catch (IllegalArgumentException d) {
|
||||||
|
System.out.println("Fehler beim Erstellen eines Accounts. Überprüfen Sie Ihre Eingaben");
|
||||||
|
} catch (NullPointerException c) {
|
||||||
|
System.out.println("Fehler beim Erstellen eines Accounts. Überprüfen Sie Ihre Eingaben");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
User newUser = new User(username, password, role);
|
||||||
|
users.put(username, newUser);
|
||||||
|
saveUserToFile(newUser);
|
||||||
|
|
||||||
|
System.out.println("Nutzer erfolgreich erstellt.");
|
||||||
|
} catch (NullPointerException c) {
|
||||||
|
System.out.println("Fehler beim Erstellen des Nutzers.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayFinancialReport() {
|
||||||
|
boolean viewingReport = true;
|
||||||
|
while (viewingReport) {
|
||||||
|
System.out.println("\n--- Finanzbericht ---");
|
||||||
|
System.out.println("1. Tägliche Einnahmen anzeigen");
|
||||||
|
System.out.println("2. Wöchentliche Einnahmen anzeigen");
|
||||||
|
System.out.println("3. Monatliche Einnahmen anzeigen");
|
||||||
|
System.out.println("4. Gesamte Einnahmen anzeigen");
|
||||||
|
System.out.println("5. Zurück zum Hauptmenü");
|
||||||
|
|
||||||
|
System.out.print("Bitte wähle eine Option: ");
|
||||||
|
int choice = scanner.nextInt();
|
||||||
|
scanner.nextLine(); // Eingabepuffer leeren
|
||||||
|
|
||||||
|
switch (choice) {
|
||||||
|
case 1 -> {
|
||||||
|
double dailyRevenue = financialManager.getRevenueForPeriod("daily");
|
||||||
|
System.out.println("Tägliche Einnahmen: " + dailyRevenue + " €");
|
||||||
|
}
|
||||||
|
case 2 -> {
|
||||||
|
double weeklyRevenue = financialManager.getRevenueForPeriod("weekly");
|
||||||
|
System.out.println("Wöchentliche Einnahmen: " + weeklyRevenue + " €");
|
||||||
|
}
|
||||||
|
case 3 -> {
|
||||||
|
double monthlyRevenue = financialManager.getRevenueForPeriod("monthly");
|
||||||
|
System.out.println("Monatliche Einnahmen: " + monthlyRevenue + " €");
|
||||||
|
}
|
||||||
|
case 4 -> {
|
||||||
|
double totalRevenue = financialManager.getTotalRevenue();
|
||||||
|
System.out.println("Gesamte Einnahmen: " + totalRevenue + " €");
|
||||||
|
}
|
||||||
|
case 5 -> viewingReport = false; // Zurück zum Hauptmenü
|
||||||
|
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void createDefaultManager() {
|
|
||||||
User defaultManager = new User("Dimitry", "1234", Role.MANAGER);
|
|
||||||
users.put("Dimitry", defaultManager);
|
|
||||||
saveUserToFile(defaultManager);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +1,7 @@
|
||||||
Salat:160
|
Tomaten:100
|
||||||
|
Salat:260
|
||||||
|
Käse:100
|
||||||
|
Brot:100
|
||||||
|
Soße:100
|
||||||
|
Fleisch:200
|
||||||
|
Nudeln:150
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
Dimitry:1234:MANAGER
|
Dimitry:1234:MANAGER
|
||||||
Abbas:1234:SERVICE
|
Abbas:1234:SERVICE
|
||||||
Ananas Kopf:Bananenbieger:KITCHEN
|
Ananas Kopf:Bananenbieger:KITCHEN
|
||||||
|
Arim:1234:MANAGER
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue