Das Grundgerüst der Funktionen wurde gelegt. Dimitry/Abbas

master
Dima 2024-12-10 17:08:42 +01:00
commit c813b1efd7
16 changed files with 293 additions and 0 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-22">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -0,0 +1 @@
/bin/

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Restaurantverwaltung</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -0,0 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=22
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=22
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=22

View File

@ -0,0 +1,18 @@
import java.util.*;
class Dish {
private String name;
private Map<String, Integer> ingredients;
public Dish(String name, Map<String, Integer> ingredients) {
this.name = name;
this.ingredients = ingredients;
}
public String getName() {
return name;
}
public Map<String, Integer> getIngredients() {
return ingredients;
}
}

View File

@ -0,0 +1,36 @@
import java.util.*;
class Inventory {
private Map<String, Integer> stock;
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 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;
}
}

View File

@ -0,0 +1,20 @@
import java.util.*;
class Menu {
private List<Dish> dishes;
public Menu() {
dishes = new ArrayList<>();
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)));
}
public void displayMenu(Inventory inventory) {
System.out.println("Verfügbares Menü:");
for (Dish dish : dishes) {
if (inventory.useIngredients(dish.getIngredients())) {
System.out.println("- " + dish.getName());
}
}
}
}

View File

@ -0,0 +1,15 @@
class Order {
private int tableNumber;
private String dish;
private boolean completed;
public Order(int tableNumber, String dish) {
this.tableNumber = tableNumber;
this.dish = dish;
this.completed = false;
}
public void completeOrder() {
completed = true;
}
}

View File

@ -0,0 +1,9 @@
class Reservation {
private int tableNumber;
private String customerName;
public Reservation(int tableNumber, String customerName) {
this.tableNumber = tableNumber;
this.customerName = customerName;
}
}

View File

@ -0,0 +1,8 @@
public class RestaurantManagement {
public static void main(String[] args) {
SystemController systemController = new SystemController();
systemController.startSystem();
}
}

View File

@ -0,0 +1,3 @@
enum Role {
MANAGER, SERVICE, KITCHEN
}

View File

@ -0,0 +1,122 @@
import java.io.*;
import java.util.*;
class SystemController {
private Scanner scanner = new Scanner(System.in);
private Map<String, User> users = new HashMap<>();
private final String USERS_FILE = "src/users.txt";
private Inventory inventory = new Inventory();
private Menu menu = new Menu();
public SystemController() {
// Benutzer aus Datei laden
loadUsersFromFile();
}
public void startSystem() {
System.out.println("Willkommen im Restaurant Management System!");
System.out.println("Bitte loggen Sie sich ein: ");
System.out.println("Username --------------->");
String username = scanner.nextLine();
System.out.println("Passwort --------------->");
String password = scanner.nextLine();
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 void displayMainMenu(User user) {
boolean running = true;
while (running) {
System.out.println("Hauptmenü:");
System.out.println("1. Bestand ansehen");
System.out.println("2. Neuer Nutzer erstellen");
System.out.println("3. Menü anzeigen");
System.out.println("4. Beenden");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1 -> inventory.viewStock();
case 2 -> {
if (user.role == Role.MANAGER) {
createUser();
} else {
System.out.println("Keine Rechte du hs");
}
}
case 3 -> menu.displayMenu(inventory);
case 4 -> running = false;
default -> System.out.println("Ungültige Auswahl.");
}
}
}
private void createUser() {
System.out.println("Neuen Nutzer erstellen:");
System.out.print("Benutzername: ");
String username = scanner.nextLine();
System.out.print("Passwort: ");
String password = scanner.nextLine();
System.out.print("Rolle (MANAGER, SERVICE, KITCHEN): ");
Role role = Role.valueOf(scanner.nextLine().toUpperCase());
User newUser = new User(username, password, role);
users.put(username, newUser);
saveUserToFile(newUser);
System.out.println("Nutzer erfolgreich erstellt.");
}
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);
}
}

View File

@ -0,0 +1,13 @@
class User {
String username;
String password;
Role role;
public User(String username, String password, Role role) {
this.username = username;
this.password = password;
this.role = role;
}
}

View File

@ -0,0 +1,3 @@
Dimitry:1234:MANAGER
Abbas Kronboch:Araber:SERVICE
Ananas Kopf:Bananenbieger:KITCHEN

View File

@ -0,0 +1,2 @@
Dimitry:1234:MANAGER
Abbas Kronboch:Araber:SERVICE