Fehler beim Finanzmanagment behoben
parent
4afcd67145
commit
2572fccf7d
|
|
@ -12,7 +12,6 @@ import java.util.List;
|
|||
import java.util.HashMap;
|
||||
|
||||
public class Bestellsystem {
|
||||
|
||||
private static List<Bestellung> bestellungen = new ArrayList<>();
|
||||
private static Scanner scanner = new Scanner(System.in);
|
||||
private static Menu menu = new Menu();
|
||||
|
|
@ -24,106 +23,79 @@ public class Bestellsystem {
|
|||
System.out.print("Bitte gib die Tischnummer ein: ");
|
||||
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;
|
||||
if (gericht.equalsIgnoreCase("fertig")) {
|
||||
speichereBestellung(bestellung);
|
||||
System.out.println("Bestand wurde aktualisiert");
|
||||
|
||||
System.out.print("Bitte bestelle ein Gericht (oder 'fertig', um abzuschließen): ");
|
||||
String gericht = scanner.nextLine();
|
||||
boolean istVerfuegbar = false;
|
||||
|
||||
|
||||
if (gericht.equalsIgnoreCase("fertig")) {
|
||||
speichereBestellung(bestellung);
|
||||
System.out.println("Bestand wurde aktualisiert");
|
||||
break;
|
||||
}
|
||||
|
||||
// Überprüfen, ob das Gericht im Menü verfügbar ist
|
||||
try {
|
||||
for (Dish dish : menu.getDishes()) {
|
||||
if (gericht.equalsIgnoreCase(dish.getName())) {
|
||||
// Zutaten für das Gericht verwenden (Bestand aktualisieren)
|
||||
SystemController.inventory.useIngredients(dish.getIngredients());
|
||||
bestellung.addGericht(gericht); // Gericht zur Bestellung hinzufügen
|
||||
istVerfuegbar = true;
|
||||
bestellungen.add(bestellung); // Bestellung zur Liste der Bestellungen hinzufügen
|
||||
System.out.println("Bestellung wurde aktualisiert");
|
||||
System.out.println(bestellung.getBestellungDetails()); // Bestellungsdetails anzeigen
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
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;
|
||||
}
|
||||
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: ");
|
||||
String id = scanner.nextLine();
|
||||
|
||||
Bestellung zuLoeschen = null;
|
||||
|
||||
for (Bestellung bestellung : bestellungen) {
|
||||
if (bestellung.getId().equals(id)) {
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -47,10 +47,11 @@ public class Bestellung {
|
|||
|
||||
String[] parts = fileLine.split(";");
|
||||
if (parts.length < 3) {
|
||||
throw new IllegalArgumentException("Ungültiges Dateiformat: " + fileLine);
|
||||
throw new IllegalArgumentException("Ungültiges Dateiformat: " + fileLine);
|
||||
}
|
||||
|
||||
|
||||
|
||||
String id = parts[0].trim();
|
||||
String tischNummer = parts[1].trim();
|
||||
|
||||
|
|
@ -74,4 +75,4 @@ public class Bestellung {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -12,3 +12,17 @@ Bestellte Gerichte:
|
|||
|
||||
Zeit: 16:13
|
||||
--------------------------
|
||||
ID: 004b2f19-5c8f-47bf-9a8d-38ee515f4526
|
||||
Tisch Nummer: 2
|
||||
Bestellte Gerichte:
|
||||
|
||||
Zeit: 15:47
|
||||
--------------------------
|
||||
ID: 3aa58523-b89b-480f-a486-8348f4e3381d
|
||||
Tisch Nummer: 1
|
||||
Bestellte Gerichte:
|
||||
- Cheeseburger
|
||||
- Double Meat Burger
|
||||
|
||||
Zeit: 15:47
|
||||
--------------------------
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
import java.util.*;
|
||||
import java.util.Map;
|
||||
|
||||
class Dish {
|
||||
private String name;
|
||||
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.ingredients = ingredients;
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
|
@ -15,4 +19,8 @@ class Dish {
|
|||
public Map<String, Integer> getIngredients() {
|
||||
return ingredients;
|
||||
}
|
||||
|
||||
public double getPrice() {
|
||||
return price;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,144 +1,115 @@
|
|||
import java.io.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
class FinancialManager {
|
||||
private static final String TRANSACTION_FILE = "src/transactions.txt"; // Datei für Transaktionen (Einnahmen und Ausgaben)
|
||||
private List<Transaction> transactions = new ArrayList<>();
|
||||
public class FinancialManager {
|
||||
private double totalRevenue;
|
||||
private double totalExpenses;
|
||||
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<>();
|
||||
|
||||
public FinancialManager() {
|
||||
loadTransactionsFromFile();
|
||||
}
|
||||
private final String FINANCIAL_REPORT_FILE = "src/financial_report.txt";
|
||||
|
||||
public void recordTransaction(double amount, String description, boolean isIncome) {
|
||||
Date date = new Date();
|
||||
Transaction transaction = new Transaction(amount, description, isIncome, date);
|
||||
transactions.add(transaction);
|
||||
saveTransactionToFile(transaction);
|
||||
}
|
||||
|
||||
public void addRevenue(double amount) {
|
||||
this.totalRevenue += amount;
|
||||
LocalDate today = LocalDate.now();
|
||||
dailyRevenue.put(today, dailyRevenue.getOrDefault(today, 0.0) + amount);
|
||||
|
||||
private void saveTransactionToFile(Transaction transaction) {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(TRANSACTION_FILE, true))) {
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String transactionLine = dateFormat.format(transaction.getDate()) + ";" + transaction.getAmount() + ";" + transaction.getDescription() + ";" + (transaction.isIncome() ? "Income" : "Expense");
|
||||
writer.write(transactionLine);
|
||||
writer.newLine();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Transaktion: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
// 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);
|
||||
|
||||
private void loadTransactionsFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(TRANSACTION_FILE))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date date = dateFormat.parse(parts[0]);
|
||||
double amount = Double.parseDouble(parts[1]);
|
||||
String description = parts[2];
|
||||
boolean isIncome = "Income".equals(parts[3]);
|
||||
transactions.add(new Transaction(amount, description, isIncome, date));
|
||||
}
|
||||
} catch (IOException | java.text.ParseException e) {
|
||||
System.out.println("Fehler beim Laden der Transaktionen: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||
monthlyRevenue.put(startOfMonth, monthlyRevenue.getOrDefault(startOfMonth, 0.0) + amount);
|
||||
|
||||
public void showFinancialReport(String period) {
|
||||
double totalIncome = 0;
|
||||
double totalExpense = 0;
|
||||
Date startDate = null;
|
||||
Date endDate = new Date();
|
||||
saveFinancialReport(); // Finanzdaten in die Datei speichern
|
||||
}
|
||||
|
||||
switch (period.toLowerCase()) {
|
||||
case "daily":
|
||||
startDate = getStartOfDay();
|
||||
break;
|
||||
case "weekly":
|
||||
startDate = getStartOfWeek();
|
||||
break;
|
||||
case "monthly":
|
||||
startDate = getStartOfMonth();
|
||||
break;
|
||||
default:
|
||||
System.out.println("Ungültige Zeitraumoption!");
|
||||
return;
|
||||
}
|
||||
// Methode zur Hinzufügung von Ausgaben
|
||||
public void addExpense(double amount) {
|
||||
this.totalExpenses += amount;
|
||||
LocalDate today = LocalDate.now();
|
||||
dailyExpenses.put(today, dailyExpenses.getOrDefault(today, 0.0) + amount);
|
||||
|
||||
// Berechnen der Einnahmen und Ausgaben im angegebenen Zeitraum
|
||||
for (Transaction transaction : transactions) {
|
||||
if (!transaction.getDate().before(startDate) && !transaction.getDate().after(endDate)) {
|
||||
if (transaction.isIncome()) {
|
||||
totalIncome += transaction.getAmount();
|
||||
} else {
|
||||
totalExpense += transaction.getAmount();
|
||||
}
|
||||
}
|
||||
}
|
||||
// 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);
|
||||
|
||||
System.out.println("\n--- Finanzbericht für " + period + " ---");
|
||||
System.out.println("Gesamte Einnahmen: " + totalIncome + " EUR");
|
||||
System.out.println("Gesamte Ausgaben: " + totalExpense + " EUR");
|
||||
System.out.println("Nettogewinn: " + (totalIncome - totalExpense) + " EUR");
|
||||
}
|
||||
LocalDate startOfMonth = today.withDayOfMonth(1);
|
||||
monthlyExpenses.put(startOfMonth, monthlyExpenses.getOrDefault(startOfMonth, 0.0) + amount);
|
||||
|
||||
private Date getStartOfDay() {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
return cal.getTime();
|
||||
}
|
||||
saveFinancialReport(); // Finanzdaten in einer txt Datei speichern
|
||||
}
|
||||
|
||||
private Date getStartOfWeek() {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
return cal.getTime();
|
||||
}
|
||||
public double getRevenueForPeriod(String period) {
|
||||
LocalDate today = LocalDate.now();
|
||||
switch (period.toLowerCase()) {
|
||||
case "daily":
|
||||
return dailyRevenue.getOrDefault(today, 0.0);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
private Date getStartOfMonth() {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
return cal.getTime();
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
class Transaction {
|
||||
private double amount;
|
||||
private String description;
|
||||
private boolean isIncome;
|
||||
private Date date;
|
||||
// Getter für Gesamtumsatz
|
||||
public double getTotalRevenue() {
|
||||
return totalRevenue;
|
||||
}
|
||||
|
||||
public Transaction(double amount, String description, boolean isIncome, Date date) {
|
||||
this.amount = amount;
|
||||
this.description = description;
|
||||
this.isIncome = isIncome;
|
||||
this.date = date;
|
||||
}
|
||||
// Getter für Gesamtausgaben
|
||||
public double getTotalExpenses() {
|
||||
return totalExpenses;
|
||||
}
|
||||
|
||||
public double getAmount() {
|
||||
return amount;
|
||||
}
|
||||
// Berechnung des Nettogewinns
|
||||
public double getNetProfit() {
|
||||
return totalRevenue - totalExpenses;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public boolean isIncome() {
|
||||
return isIncome;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return date;
|
||||
}
|
||||
}
|
||||
// Methode zur Speicherung des Finanzberichts in einer Datei
|
||||
private void saveFinancialReport() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FINANCIAL_REPORT_FILE, true))) {
|
||||
writer.write("Datum: " + LocalDate.now());
|
||||
writer.newLine();
|
||||
writer.write("Gesamte Einnahmen: " + totalRevenue + " €");
|
||||
writer.newLine();
|
||||
writer.write("Gesamte Ausgaben: " + totalExpenses + " €");
|
||||
writer.newLine();
|
||||
writer.write("Nettogewinn: " + getNetProfit() + " €");
|
||||
writer.newLine();
|
||||
writer.write("-------------------------------------");
|
||||
writer.newLine();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern des Finanzberichts: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +1,37 @@
|
|||
import java.util.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
class Inventory {
|
||||
private Map<String, Integer> stock;
|
||||
private final String STOCK_FILE = "src/stock.txt";
|
||||
|
||||
|
||||
public class Inventory {
|
||||
|
||||
private Map<String, Integer> stock = new HashMap<>();
|
||||
private FinancialManager financialManager; // Deklaration der Instanzvariable
|
||||
|
||||
public Inventory(FinancialManager financialManager) {
|
||||
this.financialManager = financialManager; // Initialisierung des FinancialManagers im Konstruktor
|
||||
}
|
||||
|
||||
private final String STOCK_FILE = "src/stock.txt"; // Datei für den Bestand
|
||||
|
||||
public void loadStockFromFile() {
|
||||
stock = new HashMap<>();
|
||||
stock.clear();
|
||||
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);
|
||||
|
||||
if (parts.length == 2) {
|
||||
String ingredientName = parts[0];
|
||||
int quantity = Integer.parseInt(parts[1]);
|
||||
stock.put(ingredientName, quantity);
|
||||
}
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden");
|
||||
|
||||
System.out.println("Bestand-Datei nicht gefunden, neue Datei wird erstellt.");
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage());
|
||||
System.out.println("Fehler beim Laden des Bestands: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Speichert den aktuellen Bestand in die Datei
|
||||
public void saveStockToFile() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) {
|
||||
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
||||
|
|
@ -34,96 +39,98 @@ class Inventory {
|
|||
writer.newLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Datei: " + e.getMessage());
|
||||
System.out.println("Fehler beim Speichern des Bestands: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public Inventory() {
|
||||
|
||||
}
|
||||
|
||||
// Zeigt den aktuellen Bestand an
|
||||
public void viewStock() {
|
||||
System.out.println("Aktueller Bestand:");
|
||||
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
|
||||
System.out.println(entry.getKey() + ": " + entry.getValue());
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addIngredients(String productName, int amountToAdd, FinancialManager financialManager) {
|
||||
double ingredientCost = 1.0; // Beispielhafter Preis für Zutaten (z.B. 1 Euro pro Stück)
|
||||
|
||||
stock.put(productName, stock.getOrDefault(productName, 0) + amountToAdd);
|
||||
|
||||
// Berechne die Ausgaben für die Erweiterung des Bestands
|
||||
double totalCost = ingredientCost * amountToAdd;
|
||||
|
||||
// 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 amount = entry.getValue();
|
||||
int requiredAmount = entry.getValue();
|
||||
|
||||
if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) {
|
||||
// Ü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;
|
||||
}
|
||||
|
||||
public void useIngredients(Map<String, Integer> ingredients) {
|
||||
|
||||
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
|
||||
stock.put(entry.getKey(), stock.get(entry.getKey()) - entry.getValue());
|
||||
saveStockToFile();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 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.");
|
||||
public void overwriteStock(String productName, int newAmount) {
|
||||
if (stock.containsKey(productName)) {
|
||||
stock.put(productName, newAmount);
|
||||
System.out.println("Der Bestand für " + productName + " wurde auf " + newAmount + " Stück geändert.");
|
||||
} else {
|
||||
System.out.println(ingredient + " ist nicht im Lager vorhanden.");
|
||||
System.out.println("Das Produkt " + productName + " existiert nicht im Bestand.");
|
||||
}
|
||||
}
|
||||
|
||||
// Neue Methode: Gesamten Bestand prüfen
|
||||
public int totalStock() {
|
||||
int total = 0;
|
||||
for (int amount : stock.values()) {
|
||||
total += amount;
|
||||
}
|
||||
return total;
|
||||
// Getter für den Bestand
|
||||
public Map<String, Integer> getStock() {
|
||||
return stock;
|
||||
}
|
||||
|
||||
// Neue Methode: Warnungen bei niedrigem Bestand
|
||||
public void lowStockWarning(int threshold) {
|
||||
System.out.println("Warnung: Niedriger Bestand bei folgenden Zutaten:");
|
||||
for (Map.Entry<String, Integer> 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);
|
||||
}
|
||||
// Setter für den Bestand
|
||||
public void setStock(Map<String, Integer> stock) {
|
||||
this.stock = stock;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +1,18 @@
|
|||
import java.util.*;
|
||||
|
||||
class Menu {
|
||||
public List<Dish> dishes = new ArrayList<>();
|
||||
public List<Dish> availableDishes = new ArrayList<>();
|
||||
public class Menu {
|
||||
public List<Dish> dishes = new ArrayList<>();
|
||||
public List<Dish> availableDishes = new ArrayList<>();
|
||||
|
||||
public Menu() {
|
||||
|
||||
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)));
|
||||
dishes.add(new Dish("Ramen", Map.of("Soße", 1, "Salat", 1, "Tomaten", 1, "Nudeln", 30)));
|
||||
}
|
||||
public Menu() {
|
||||
|
||||
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), 4.0));
|
||||
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), 7.0));
|
||||
}
|
||||
|
||||
|
||||
public void displayMenu(Inventory inventory) {
|
||||
System.out.println("Verfügbares Menü:");
|
||||
for (Dish dish : dishes) {
|
||||
|
|
|
|||
|
|
@ -2,466 +2,555 @@ import java.util.*;
|
|||
import java.io.*;
|
||||
|
||||
class SystemController {
|
||||
private Scanner scanner = new Scanner(System.in);
|
||||
private Map<String, User> users = new HashMap<>();
|
||||
private final String USERS_FILE = "src/users.txt";
|
||||
public static Inventory inventory = new Inventory();
|
||||
private Menu menu = new Menu();
|
||||
private FinancialManager financialManager = new FinancialManager();
|
||||
private ReservationManager reservationManager = new ReservationManager();
|
||||
private List<Shift> shifts = new ArrayList<>();
|
||||
private List<Absence> absences = new ArrayList<>();
|
||||
private List<Feedback> feedbacks = new ArrayList<>();
|
||||
private final String SHIFT_FILE = "src/shifts.txt";
|
||||
private final String ABSENCE_FILE = "src/absences.txt";
|
||||
private final String FEEDBACK_FILE = "src/feedback.txt";
|
||||
private Scanner scanner = new Scanner(System.in);
|
||||
private Map<String, User> users = new HashMap<>();
|
||||
private final String USERS_FILE = "src/users.txt";
|
||||
public static Inventory inventory;
|
||||
private Menu menu = new Menu();
|
||||
private FinancialManager financialManager = new FinancialManager();
|
||||
private ReservationManager reservationManager = new ReservationManager();
|
||||
private List<Shift> shifts = new ArrayList<>();
|
||||
private List<Absence> absences = new ArrayList<>();
|
||||
private List<Feedback> feedbacks = new ArrayList<>();
|
||||
private final String SHIFT_FILE = "src/shifts.txt";
|
||||
private final String ABSENCE_FILE = "src/absences.txt";
|
||||
private final String FEEDBACK_FILE = "src/feedback.txt";
|
||||
|
||||
public SystemController() {
|
||||
loadUsersFromFile();
|
||||
loadShiftsFromFile();
|
||||
loadAbsencesFromFile();
|
||||
loadFeedbacksFromFile();
|
||||
}
|
||||
public SystemController() {
|
||||
loadUsersFromFile();
|
||||
loadShiftsFromFile();
|
||||
loadAbsencesFromFile();
|
||||
loadFeedbacksFromFile();
|
||||
inventory = new Inventory(financialManager);
|
||||
}
|
||||
|
||||
public void startSystem() {
|
||||
System.out.println("Willkommen im Restaurant Management System!");
|
||||
System.out.println("Bitte loggen Sie sich ein: ");
|
||||
public void startSystem() {
|
||||
System.out.println("Willkommen im Restaurant Management System!");
|
||||
System.out.println("Bitte loggen Sie sich ein: ");
|
||||
|
||||
System.out.print("Username ---------------> ");
|
||||
String username = scanner.nextLine();
|
||||
System.out.print("Username ---------------> ");
|
||||
String username = scanner.nextLine();
|
||||
|
||||
System.out.print("Passwort ---------------> ");
|
||||
String password = scanner.nextLine();
|
||||
System.out.print("Passwort ---------------> ");
|
||||
String password = scanner.nextLine();
|
||||
|
||||
User user = authenticate(username, password);
|
||||
if (user != null) {
|
||||
displayMainMenu(user);
|
||||
} else {
|
||||
System.out.println("Ungültige Anmeldedaten.");
|
||||
}
|
||||
}
|
||||
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 User authenticate(String username, String password) {
|
||||
if (users.containsKey(username) && users.get(username).password.equals(password)) {
|
||||
return users.get(username);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void displayMainMenu(User user) {
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
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. Finanzbericht anzeigen");
|
||||
System.out.println("6. Reservierungen verwalten");
|
||||
System.out.println("7. Mitarbeiter verwalten");
|
||||
System.out.println("8. Beenden");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
switch (choice) {
|
||||
case 1 -> manageInventory();
|
||||
case 2 -> { if (user.role == Role.MANAGER) { createUser(); } else { System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); } }
|
||||
case 3 -> menu.displayMenu(inventory);
|
||||
case 4 -> manageOrders();
|
||||
case 5 -> showFinancialReports();
|
||||
case 6 -> manageReservations(user);
|
||||
case 7 -> manageEmployees(user);
|
||||
case 8 -> { running = false; System.out.println("System wird beendet. Auf Wiedersehen!"); }
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
public void displayMainMenu(User user) {
|
||||
boolean running = true;
|
||||
while (running) {
|
||||
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. Finanzbericht anzeigen");
|
||||
System.out.println("6. Reservierungen verwalten");
|
||||
System.out.println("7. Mitarbeiter verwalten");
|
||||
System.out.println("8. Beenden");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
switch (choice) {
|
||||
case 1 -> manageInventory();
|
||||
case 2 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
createUser();
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 3 -> menu.displayMenu(inventory);
|
||||
case 4 -> manageOrders();
|
||||
case 5 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
displayFinancialReport();
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 6 -> manageReservations(user);
|
||||
case 7 -> manageEmployees(user);
|
||||
case 8 -> {
|
||||
running = false;
|
||||
System.out.println("System wird beendet. Auf Wiedersehen!");
|
||||
}
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFinancialReport(List<Dish> orderedDishes) {
|
||||
// Prüfen, ob die Liste der bestellten Gerichte leer ist
|
||||
if (orderedDishes.isEmpty()) {
|
||||
System.out.println("Keine Bestellung aufgegeben. Kein Preis berechnet.");
|
||||
return; // Wenn keine Gerichte bestellt wurden, wird der Vorgang abgebrochen
|
||||
}
|
||||
|
||||
private void manageReservations(User user) {
|
||||
boolean managingReservations = true;
|
||||
while (managingReservations) {
|
||||
System.out.println("\n--- Reservierungen verwalten ---");
|
||||
System.out.println("1. Reservierung erstellen");
|
||||
System.out.println("2. Reservierung bearbeiten");
|
||||
System.out.println("3. Reservierung stornieren");
|
||||
System.out.println("4. Reservierungen anzeigen");
|
||||
System.out.println("5. Zurück zum Hauptmenü");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
switch (choice) {
|
||||
case 1 -> { if (user.role == Role.MANAGER || user.role == Role.SERVICE) { createReservation(); } else { System.out.println("Keine Rechte, um neue Reservierungen zu erstellen."); } }
|
||||
case 2 -> { if (user.role == Role.MANAGER || user.role == Role.SERVICE) { editReservation(); } else { System.out.println("Keine Rechte, um Reservierungen zu bearbeiten."); } }
|
||||
case 3 -> { if (user.role == Role.MANAGER || user.role == Role.SERVICE) { cancelReservation(); } else { System.out.println("Keine Rechte, um Reservierungen zu stornieren."); } }
|
||||
case 4 -> reservationManager.displayTableOverview();
|
||||
case 5 -> managingReservations = false;
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
double totalAmount = 0;
|
||||
|
||||
private void createReservation() {
|
||||
System.out.print("Tischnummer: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
System.out.print("Kundenname: ");
|
||||
String customerName = scanner.nextLine();
|
||||
reservationManager.createReservation(tableNumber, customerName);
|
||||
}
|
||||
// Berechnung des Gesamtbetrags für die bestellten Gerichte
|
||||
for (Dish dish : orderedDishes) {
|
||||
totalAmount += dish.getPrice(); // Gesamtbetrag basierend auf den Preisen der bestellten Gerichte
|
||||
}
|
||||
|
||||
private void editReservation() {
|
||||
System.out.print("Tischnummer der Reservierung: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
System.out.print("Neuer Kundenname: ");
|
||||
String newCustomerName = scanner.nextLine();
|
||||
reservationManager.editReservation(tableNumber, newCustomerName);
|
||||
}
|
||||
// Einnahmen im Finanzmanager hinzufügen
|
||||
financialManager.addRevenue(totalAmount);
|
||||
|
||||
private void cancelReservation() {
|
||||
System.out.print("Tischnummer der Reservierung: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
reservationManager.cancelReservation(tableNumber);
|
||||
}
|
||||
|
||||
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.println("Gesamtkosten der Bestellung: " + totalAmount + " €");
|
||||
}
|
||||
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
private void manageReservations(User user) {
|
||||
boolean managingReservations = true;
|
||||
while (managingReservations) {
|
||||
System.out.println("\n--- Reservierungen verwalten ---");
|
||||
System.out.println("1. Reservierung erstellen");
|
||||
System.out.println("2. Reservierung bearbeiten");
|
||||
System.out.println("3. Reservierung stornieren");
|
||||
System.out.println("4. Reservierungen anzeigen");
|
||||
System.out.println("5. Zurück zum Hauptmenü");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
switch (choice) {
|
||||
case 1 -> {
|
||||
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
|
||||
createReservation();
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Reservierungen zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 2 -> {
|
||||
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
|
||||
editReservation();
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um Reservierungen zu bearbeiten.");
|
||||
}
|
||||
}
|
||||
case 3 -> {
|
||||
if (user.role == Role.MANAGER || user.role == Role.SERVICE) {
|
||||
cancelReservation();
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um Reservierungen zu stornieren.");
|
||||
}
|
||||
}
|
||||
case 4 -> reservationManager.displayTableOverview();
|
||||
case 5 -> managingReservations = false;
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
} 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); // Bestellungen im Speicher anzeigen
|
||||
inventory.saveStockToFile(); // Echtzeitspeicherung der Daten
|
||||
} 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 createReservation() {
|
||||
System.out.print("Tischnummer: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
System.out.print("Kundenname: ");
|
||||
String customerName = scanner.nextLine();
|
||||
reservationManager.createReservation(tableNumber, customerName);
|
||||
}
|
||||
|
||||
private void manageOrders() {
|
||||
boolean managingOrders = true;
|
||||
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ü");
|
||||
private void editReservation() {
|
||||
System.out.print("Tischnummer der Reservierung: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
scanner.nextLine();
|
||||
System.out.print("Neuer Kundenname: ");
|
||||
String newCustomerName = scanner.nextLine();
|
||||
reservationManager.editReservation(tableNumber, newCustomerName);
|
||||
}
|
||||
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
private void cancelReservation() {
|
||||
System.out.print("Tischnummer der Reservierung: ");
|
||||
int tableNumber = scanner.nextInt();
|
||||
reservationManager.cancelReservation(tableNumber);
|
||||
}
|
||||
|
||||
switch (choice) {
|
||||
case 1 -> {
|
||||
menu.displayMenu(inventory);
|
||||
Bestellsystem.erstelleBestellung(); // Neue Bestellung erstellen
|
||||
}
|
||||
case 2 -> {
|
||||
Bestellsystem.ladeUndZeigeBestellungen(); // Bestellungen aus Datei anzeigen
|
||||
}
|
||||
case 3 -> {
|
||||
Bestellsystem.loescheBestellung(); // Bestellungen aus Datei löschen
|
||||
}
|
||||
case 4 -> managingOrders = false;
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void manageEmployees(User user) {
|
||||
boolean managingEmployees = true;
|
||||
while (managingEmployees) {
|
||||
System.out.println("\n--- Mitarbeiter verwalten ---");
|
||||
System.out.println("1. Schichtplan anzeigen");
|
||||
System.out.println("2. Abwesenheit eintragen");
|
||||
System.out.println("3. Abwesenheit anzeigen");
|
||||
System.out.println("4. Feedback geben");
|
||||
System.out.println("5. Feedback anzeigen");
|
||||
System.out.println("6. Zurück zum Hauptmenü");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
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ü");
|
||||
|
||||
switch (choice) {
|
||||
case 1 -> showShiftPlan(user.username); // Schichtplan für den eingeloggten Mitarbeiter anzeigen
|
||||
case 2 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
createAbsence(user.username); // Abwesenheit für Mitarbeiter erstellen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 3 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
showAbsences(); // Abwesenheiten zeigen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 4 -> giveFeedback(); // Feedback geben
|
||||
case 5 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
showFeedback(); // Feedbacks zeigen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 6 -> managingEmployees = false; // Zurück zum Hauptmenü
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
|
||||
private void createUser() {
|
||||
String username = "";
|
||||
String password = "";
|
||||
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 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.");
|
||||
}
|
||||
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
|
||||
} 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
|
||||
} 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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
User newUser = new User(username, password, role);
|
||||
users.put(username, newUser);
|
||||
saveUserToFile(newUser);
|
||||
private void manageOrders() {
|
||||
boolean managingOrders = true;
|
||||
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.println("Nutzer erfolgreich erstellt.");
|
||||
} catch (NullPointerException c) {
|
||||
System.out.println("Fehler beim Erstellen eines Accounts.");
|
||||
}
|
||||
}
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
|
||||
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());
|
||||
switch (choice) {
|
||||
case 1 -> {
|
||||
menu.displayMenu(inventory);
|
||||
Bestellsystem.erstelleBestellung(); // Neue Bestellung erstellen
|
||||
}
|
||||
case 2 -> {
|
||||
Bestellsystem.ladeUndZeigeBestellungen(); // Bestellungen aus Datei anzeigen
|
||||
}
|
||||
case 3 -> {
|
||||
Bestellsystem.loescheBestellung(); // Bestellungen aus Datei löschen
|
||||
}
|
||||
case 4 -> managingOrders = false;
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 loadShiftsFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/shifts.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String shiftDate = parts[1];
|
||||
String shiftTime = parts[2];
|
||||
|
||||
// Erstelle neuen Shift-Objekt und füge es der Liste hinzu
|
||||
Shift shift = new Shift(username, shiftDate, shiftTime);
|
||||
shifts.add(shift);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Schichtpläne: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void loadAbsencesFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/absences.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String date = parts[1];
|
||||
String reason = parts[2];
|
||||
|
||||
// Erstelle neues Absence-Objekt und füge es der Liste hinzu
|
||||
Absence absence = new Absence(username, date, reason);
|
||||
absences.add(absence);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Abwesenheiten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void loadFeedbacksFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/feedback.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String feedback = parts[1];
|
||||
|
||||
// Erstelle neues Feedback-Objekt und füge es der Liste hinzu
|
||||
Feedback feedbackObj = new Feedback(username, feedback);
|
||||
feedbacks.add(feedbackObj);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Feedbacks: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void showShiftPlan(String username) {
|
||||
System.out.println("\n--- Dein Schichtplan ---");
|
||||
for (Shift shift : shifts) {
|
||||
if (shift.getUsername().equals(username)) {
|
||||
System.out.println(shift);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void createAbsence(String username) {
|
||||
System.out.println("Gib Den Namen des Mitarbeiters ein:");
|
||||
String name = scanner.nextLine();
|
||||
System.out.print("Gib das Datum der Abwesenheit ein: ");
|
||||
String date = scanner.nextLine();
|
||||
System.out.print("Gib den Grund der Abwesenheit ein: ");
|
||||
String reason = scanner.nextLine();
|
||||
public void manageEmployees(User user) {
|
||||
boolean managingEmployees = true;
|
||||
while (managingEmployees) {
|
||||
System.out.println("\n--- Mitarbeiter verwalten ---");
|
||||
System.out.println("1. Schichtplan anzeigen");
|
||||
System.out.println("2. Abwesenheit eintragen");
|
||||
System.out.println("3. Abwesenheit anzeigen");
|
||||
System.out.println("4. Feedback geben");
|
||||
System.out.println("5. Feedback anzeigen");
|
||||
System.out.println("6. Zurück zum Hauptmenü");
|
||||
System.out.print("Bitte wähle eine Option: ");
|
||||
int choice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
|
||||
Absence absence = new Absence(name, date, reason);
|
||||
absences.add(absence);
|
||||
saveAbsencesToFile();
|
||||
System.out.println("Abwesenheit wurde erfolgreich eingetragen.");
|
||||
}
|
||||
|
||||
public void saveShiftToFile(String shift) {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter("src/shifts.txt", true))) {
|
||||
writer.write(shift); // Schicht als String speichern
|
||||
writer.newLine();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Schicht: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void showAbsences() {
|
||||
System.out.println("\n--- Abwesenheiten ---");
|
||||
for (Absence absence : absences) {
|
||||
System.out.println(absence);
|
||||
}
|
||||
}
|
||||
|
||||
public void giveFeedback() {
|
||||
System.out.print("Gib den Benutzernamen des Mitarbeiters ein: ");
|
||||
String employeeUsername = scanner.nextLine();
|
||||
System.out.print("Gib das Feedback ein: ");
|
||||
String feedbackText = scanner.nextLine();
|
||||
switch (choice) {
|
||||
case 1 -> showShiftPlan(user.username); // Schichtplan für den eingeloggten Mitarbeiter anzeigen
|
||||
case 2 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
createAbsence(user.username); // Abwesenheit für Mitarbeiter erstellen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 3 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
showAbsences(); // Abwesenheiten zeigen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 4 -> giveFeedback(); // Feedback geben
|
||||
case 5 -> {
|
||||
if (user.role == Role.MANAGER) {
|
||||
showFeedback(); // Feedbacks zeigen
|
||||
} else {
|
||||
System.out.println("Keine Rechte, um neue Nutzer zu erstellen.");
|
||||
}
|
||||
}
|
||||
case 6 -> managingEmployees = false; // Zurück zum Hauptmenü
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Feedback feedback = new Feedback(employeeUsername, feedbackText);
|
||||
feedbacks.add(feedback);
|
||||
saveFeedbackToFile();
|
||||
System.out.println("Feedback wurde erfolgreich gespeichert.");
|
||||
}
|
||||
|
||||
public void showFeedback() {
|
||||
if (feedbacks.isEmpty()) {
|
||||
System.out.println("Keine Feedbacks vorhanden.");
|
||||
} else {
|
||||
System.out.println("\n--- Feedbacks ---");
|
||||
for (Feedback feedback : feedbacks) {
|
||||
System.out.println(feedback.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void saveAbsencesToFile() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(ABSENCE_FILE, true))) {
|
||||
for (Absence absence : absences) {
|
||||
writer.write(absence.toFileFormat());
|
||||
writer.newLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Abwesenheiten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void saveFeedbackToFile() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FEEDBACK_FILE, false))) {
|
||||
for (Feedback feedback : feedbacks) {
|
||||
writer.write(feedback.toFileFormat());
|
||||
writer.newLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern des Feedbacks: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
private void createUser() {
|
||||
String username = "";
|
||||
String password = "";
|
||||
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 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.");
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
try {
|
||||
User newUser = new User(username, password, role);
|
||||
users.put(username, newUser);
|
||||
saveUserToFile(newUser);
|
||||
|
||||
private void createDefaultManager() {
|
||||
User defaultManager = new User("Dimitry", "1234", Role.MANAGER);
|
||||
users.put("Dimitry", defaultManager);
|
||||
saveUserToFile(defaultManager);
|
||||
}
|
||||
System.out.println("Nutzer erfolgreich erstellt.");
|
||||
} catch (NullPointerException c) {
|
||||
System.out.println("Fehler beim Erstellen eines Accounts.");
|
||||
}
|
||||
}
|
||||
|
||||
private void showFinancialReports() {
|
||||
System.out.println("\n--- Finanzbericht ---");
|
||||
System.out.println("Wählen Sie den Zeitraum:");
|
||||
System.out.println("1. Täglich");
|
||||
System.out.println("2. Wöchentlich");
|
||||
System.out.println("3. Monatlich");
|
||||
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());
|
||||
|
||||
int periodChoice = scanner.nextInt();
|
||||
scanner.nextLine(); // Eingabepuffer leeren
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
switch (periodChoice) {
|
||||
case 1 -> financialManager.showFinancialReport("daily");
|
||||
case 2 -> financialManager.showFinancialReport("weekly");
|
||||
case 3 -> financialManager.showFinancialReport("monthly");
|
||||
default -> System.out.println("Ungültige Auswahl.");
|
||||
}
|
||||
}
|
||||
private void loadShiftsFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/shifts.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String shiftDate = parts[1];
|
||||
String shiftTime = parts[2];
|
||||
|
||||
// Erstelle neuen Shift-Objekt und füge es der Liste hinzu
|
||||
Shift shift = new Shift(username, shiftDate, shiftTime);
|
||||
shifts.add(shift);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Schichtpläne: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void loadAbsencesFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/absences.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String date = parts[1];
|
||||
String reason = parts[2];
|
||||
|
||||
// Erstelle neues Absence-Objekt und füge es der Liste hinzu
|
||||
Absence absence = new Absence(username, date, reason);
|
||||
absences.add(absence);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Abwesenheiten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void loadFeedbacksFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/feedback.txt"))) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split(";");
|
||||
String username = parts[0];
|
||||
String feedback = parts[1];
|
||||
|
||||
// Erstelle neues Feedback-Objekt und füge es der Liste hinzu
|
||||
Feedback feedbackObj = new Feedback(username, feedback);
|
||||
feedbacks.add(feedbackObj);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Laden der Feedbacks: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void showShiftPlan(String username) {
|
||||
System.out.println("\n--- Dein Schichtplan ---");
|
||||
for (Shift shift : shifts) {
|
||||
if (shift.getUsername().equals(username)) {
|
||||
System.out.println(shift);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void createAbsence(String username) {
|
||||
System.out.println("Gib Den Namen des Mitarbeiters ein:");
|
||||
String name = scanner.nextLine();
|
||||
System.out.print("Gib das Datum der Abwesenheit ein: ");
|
||||
String date = scanner.nextLine();
|
||||
System.out.print("Gib den Grund der Abwesenheit ein: ");
|
||||
String reason = scanner.nextLine();
|
||||
|
||||
Absence absence = new Absence(name, date, reason);
|
||||
absences.add(absence);
|
||||
saveAbsencesToFile();
|
||||
System.out.println("Abwesenheit wurde erfolgreich eingetragen.");
|
||||
}
|
||||
|
||||
public void saveShiftToFile(String shift) {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter("src/shifts.txt", true))) {
|
||||
writer.write(shift); // Schicht als String speichern
|
||||
writer.newLine();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Schicht: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void showAbsences() {
|
||||
System.out.println("\n--- Abwesenheiten ---");
|
||||
for (Absence absence : absences) {
|
||||
System.out.println(absence);
|
||||
}
|
||||
}
|
||||
|
||||
public void giveFeedback() {
|
||||
System.out.print("Gib den Benutzernamen des Mitarbeiters ein: ");
|
||||
String employeeUsername = scanner.nextLine();
|
||||
System.out.print("Gib das Feedback ein: ");
|
||||
String feedbackText = scanner.nextLine();
|
||||
|
||||
Feedback feedback = new Feedback(employeeUsername, feedbackText);
|
||||
feedbacks.add(feedback);
|
||||
saveFeedbackToFile();
|
||||
System.out.println("Feedback wurde erfolgreich gespeichert.");
|
||||
}
|
||||
|
||||
public void showFeedback() {
|
||||
if (feedbacks.isEmpty()) {
|
||||
System.out.println("Keine Feedbacks vorhanden.");
|
||||
} else {
|
||||
System.out.println("\n--- Feedbacks ---");
|
||||
for (Feedback feedback : feedbacks) {
|
||||
System.out.println(feedback.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void saveAbsencesToFile() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(ABSENCE_FILE, false))) {
|
||||
for (Absence absence : absences) {
|
||||
writer.write(absence.toFileFormat());
|
||||
writer.newLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern der Abwesenheiten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void saveFeedbackToFile() {
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FEEDBACK_FILE, false))) {
|
||||
for (Feedback feedback : feedbacks) {
|
||||
writer.write(feedback.toFileFormat());
|
||||
writer.newLine();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Speichern des Feedbacks: " + 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. Finanzbericht aus Datei anzeigen");
|
||||
System.out.println("6. 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 -> {
|
||||
displayFinancialReportFromFile(); // Finanzbericht aus Datei anzeigen
|
||||
}
|
||||
case 6 -> viewingReport = false; // Zurück zum Hauptmenü
|
||||
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void displayFinancialReportFromFile() {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader("src/financial_report.txt"))) {
|
||||
String line;
|
||||
System.out.println("\n--- Finanzbericht aus Datei ---");
|
||||
while ((line = reader.readLine()) != null) {
|
||||
System.out.println(line); // Jede Zeile des Berichts anzeigen
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println("Fehler beim Lesen des Finanzberichts aus der Datei: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,3 +5,11 @@ Arim;22.02.2025;Krank
|
|||
Arim;22.02.2025;Krank
|
||||
Dimitry ;25.04.2025;Krankheit
|
||||
Abbas;26.03.2025;Krankheit
|
||||
Arim;22.02.2025;Krank
|
||||
Arim;22.02.2025;Krank
|
||||
Dimitry ;25.04.2025;Krankheit
|
||||
Arim;22.02.2025;Krank
|
||||
Arim;22.02.2025;Krank
|
||||
Dimitry ;25.04.2025;Krankheit
|
||||
Abbas;26.03.2025;Krankheit
|
||||
Ali;30.06.2025;Krank
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
Datum: 2025-01-12
|
||||
Gesamte Einnahmen: 0.0 €
|
||||
Gesamte Ausgaben: 1545.0 €
|
||||
Nettogewinn: -1545.0 €
|
||||
-------------------------------------
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
01,100
|
||||
Soße,49999996
|
||||
Ananasdasdas,5000
|
||||
Brot,1503
|
||||
Tomaten,503
|
||||
Käse,715
|
||||
Fleisch,93
|
||||
Salat,494
|
||||
Nudeln,150
|
||||
Soße,100
|
||||
Brot,100
|
||||
Tomaten,200
|
||||
Salat,260
|
||||
Käse,100
|
||||
Fleisch,200
|
||||
Loading…
Reference in New Issue