Erweiterung der Bestandverwaltungsfunktionen

master
Dima 2024-12-11 16:19:27 +01:00
parent 0faefb5179
commit aeceac2111
3 changed files with 179 additions and 32 deletions

View File

@ -1,36 +1,124 @@
import java.util.*; import java.util.*;
import java.io.*;
class Inventory { class Inventory {
private Map<String, Integer> stock; private Map<String, Integer> stock;
private final String STOCK_FILE = "src/stock.txt";
public Inventory() { public void loadStockFromFile() {
stock = new HashMap<>(); stock = new HashMap<>();
stock.put("Brot", 10); try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) {
stock.put("Fleisch", 8); String line;
stock.put("Käse", 5); while ((line = reader.readLine()) != null) {
stock.put("Salat", 7); String[] parts = line.split(",");
stock.put("Tomaten", 6);
}
public void viewStock() { String name = parts[0];
System.out.println("Aktueller Bestand:"); Integer count = Integer.parseInt(parts[1]);
for (Map.Entry<String, Integer> entry : stock.entrySet()) { stock.put(name, count);
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
public boolean useIngredients(Map<String, Integer> ingredients) { }
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) { } catch (FileNotFoundException e) {
String ingredient = entry.getKey(); System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden");
int amount = entry.getValue();
if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) { } catch (IOException e) {
System.out.println("Nicht genug " + ingredient + " im Lager."); System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage());
return false; }
} }
}
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) { public void saveStockToFile() {
stock.put(entry.getKey(), stock.get(entry.getKey()) - entry.getValue()); try (BufferedWriter writer = new BufferedWriter(new FileWriter(STOCK_FILE))) {
} for (Map.Entry<String, Integer> entry : stock.entrySet()) {
return true; writer.write(entry.getKey() + "," + entry.getValue());
} writer.newLine();
}
System.out.println("Bestand in Datei gespeichert.");
} catch (IOException e) {
System.out.println("Fehler beim Speichern der Datei: " + e.getMessage());
}
}
public Inventory() {
}
public void viewStock() {
System.out.println("Aktueller Bestand:");
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
public boolean useIngredients(Map<String, Integer> ingredients) {
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
String ingredient = entry.getKey();
int amount = entry.getValue();
if (!stock.containsKey(ingredient) || stock.get(ingredient) < amount) {
System.out.println("Nicht genug " + ingredient + " im Lager.");
return false;
}
}
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
stock.put(entry.getKey(), stock.get(entry.getKey()) - entry.getValue());
}
return true;
}
// Neue Methode: Zutaten hinzufügen
public void addIngredients(String ingredient, int amount) {
if (amount <= 0) {
System.out.println("Ungültige Menge: " + amount);
return;
}
stock.put(ingredient, stock.getOrDefault(ingredient, 0) + amount);
System.out.println(amount + " " + ingredient + " hinzugefügt.");
}
// Neue Methode: Zutaten entfernen
public void removeIngredient(String ingredient) {
if (stock.containsKey(ingredient)) {
stock.remove(ingredient);
System.out.println(ingredient + " wurde aus dem Lager entfernt.");
} else {
System.out.println(ingredient + " ist nicht im Lager vorhanden.");
}
}
// Neue Methode: Gesamten Bestand prüfen
public int totalStock() {
int total = 0;
for (int amount : stock.values()) {
total += amount;
}
return total;
}
// Neue Methode: Warnungen bei niedrigem Bestand
public void lowStockWarning(int threshold) {
System.out.println("Warnung: Niedriger Bestand bei folgenden Zutaten:");
for (Map.Entry<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);
}
}
} }

View File

@ -12,6 +12,7 @@ class SystemController {
public SystemController() { public SystemController() {
loadUsersFromFile(); loadUsersFromFile();
} }
public void startSystem() { public void startSystem() {
@ -42,8 +43,9 @@ class SystemController {
private void displayMainMenu(User user) { private void displayMainMenu(User user) {
boolean running = true; boolean running = true;
while (running) { while (running) {
inventory.loadStockFromFile();
System.out.println("\n--- Hauptmenü ---"); System.out.println("\n--- Hauptmenü ---");
System.out.println("1. Bestand ansehen"); System.out.println("1. Bestand verwalten");
System.out.println("2. Neuer Nutzer erstellen"); System.out.println("2. Neuer Nutzer erstellen");
System.out.println("3. Menü anzeigen"); System.out.println("3. Menü anzeigen");
System.out.println("4. Bestellungen verwalten"); System.out.println("4. Bestellungen verwalten");
@ -54,7 +56,7 @@ class SystemController {
scanner.nextLine(); // Eingabepuffer leeren scanner.nextLine(); // Eingabepuffer leeren
switch (choice) { switch (choice) {
case 1 -> inventory.viewStock(); case 1 -> manageInventory();
case 2 -> { case 2 -> {
if (user.role == Role.MANAGER) { if (user.role == Role.MANAGER) {
createUser(); createUser();
@ -72,6 +74,56 @@ class SystemController {
} }
} }
} }
private void manageInventory() {
boolean managingInventory = true;
while (managingInventory) {
inventory.loadStockFromFile();
System.out.println("\n--- Bestand verwalten ---");
System.out.println("1. Bestand ansehen");
System.out.println("2. Bestand ändern");
System.out.println("3. Bestand erweitern");
System.out.println("4. Zurück zum Hauptmenü");
System.out.print("Bitte wähle eine Option: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Eingabepuffer leeren
switch (choice) {
case 1 -> {
inventory.viewStock(); // Bestand ansehen
}
case 2 -> {
System.out.println("Welchen Bestand möchten sie ändern?");
String name = scanner.nextLine();
System.out.println("Neue Anzahl ---->");
try {
int anzahl = scanner.nextInt();
inventory.overwriteStock(name,anzahl); // Bestellungen im Speicher anzeigen
inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für alle Nutzer zugänglich macht
} catch (IllegalArgumentException e) {
System.out.println("Fehler! Übeprüfen Sie ihre Eingabe");
}
}
case 3 -> {
System.out.println("Bestand wird erweitert.....");
System.out.println("Name des Produkts: ");
String name = scanner.nextLine();
System.out.println("Anzahl :");
try {
int anzahl = scanner.nextInt();
inventory.addIngredients(name,anzahl); // Bestellungen im Speicher anzeigen
inventory.saveStockToFile(); // Echtzeitspeicherung der Daten in der Datenbank, die für Daten für alle Nutzer zugänglich macht
} catch (IllegalArgumentException e) {
System.out.println("Fehler! Übeprüfen Sie ihre Eingabe");
}
}
case 4 -> managingInventory = false;
default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
}
}
private void manageOrders() { private void manageOrders() {
boolean managingOrders = true; boolean managingOrders = true;
@ -153,4 +205,6 @@ class SystemController {
users.put("Dimitry", defaultManager); users.put("Dimitry", defaultManager);
saveUserToFile(defaultManager); saveUserToFile(defaultManager);
} }
}
}

View File

@ -0,0 +1,5 @@
Soße,50000000
Ananasdasdas,5000
Brot,1532
Tomaten,511
Käse,732