129 lines
3.7 KiB
Java
129 lines
3.7 KiB
Java
import java.util.*;
|
|
import java.io.*;
|
|
|
|
class Inventory {
|
|
private Map<String, Integer> stock;
|
|
private final String STOCK_FILE = "src/stock.txt";
|
|
|
|
|
|
|
|
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(",");
|
|
|
|
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());
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
} 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 showIngredientsAvailable(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) {
|
|
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.");
|
|
} 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);
|
|
}
|
|
}
|
|
} |