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.io.*;
class Inventory {
private Map<String, Integer> stock;
private Map<String, Integer> stock;
private final String STOCK_FILE = "src/stock.txt";
public Inventory() {
stock = new HashMap<>();
stock.put("Brot", 10);
stock.put("Fleisch", 8);
stock.put("Käse", 5);
stock.put("Salat", 7);
stock.put("Tomaten", 6);
}
public void loadStockFromFile() {
stock = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(STOCK_FILE))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
public void viewStock() {
System.out.println("Aktueller Bestand:");
for (Map.Entry<String, Integer> entry : stock.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
String name = parts[0];
Integer count = Integer.parseInt(parts[1]);
stock.put(name, count);
public boolean useIngredients(Map<String, Integer> ingredients) {
for (Map.Entry<String, Integer> entry : ingredients.entrySet()) {
String ingredient = entry.getKey();
int amount = entry.getValue();
}
} catch (FileNotFoundException e) {
System.out.println("Stockdatenbank nicht gefunden. Einträge müssen manuell erstellt werden");
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;
}
} catch (IOException e) {
System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage());
}
}
public void saveStockToFile() {
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();
}
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() {
loadUsersFromFile();
}
public void startSystem() {
@ -42,8 +43,9 @@ class SystemController {
private void displayMainMenu(User user) {
boolean running = true;
while (running) {
inventory.loadStockFromFile();
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("3. Menü anzeigen");
System.out.println("4. Bestellungen verwalten");
@ -54,7 +56,7 @@ class SystemController {
scanner.nextLine(); // Eingabepuffer leeren
switch (choice) {
case 1 -> inventory.viewStock();
case 1 -> manageInventory();
case 2 -> {
if (user.role == Role.MANAGER) {
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() {
boolean managingOrders = true;
@ -153,4 +205,6 @@ class SystemController {
users.put("Dimitry", defaultManager);
saveUserToFile(defaultManager);
}
}
}

View File

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