import java.util.*;
class User {
private String username;
private String password;
private ArrayList<Order> orders;
public User(String username, String password) {
this.username = username;
this.password = password;
this.orders = new ArrayList<>();
}
public String getUsername() {
return username;
}
public boolean authenticate(String enteredUsername, String enteredPassword) {
return username.equals(enteredUsername) && password.equals(enteredPassword);
}
public void placeOrder(Order order) {
orders.add(order);
System.out.println("Order placed successfully.");
}
public void viewOrders() {
System.out.println("Order History for " + username + ":");
for (Order order : orders) {
order.displayOrder();
System.out.println("Total: $" + order.calculateTotal());
System.out.println("--------------");
}
}
}
class Food {
private String name;
private double price;
public Food(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
class Order {
private Map<Food, Integer> items;
public Order() {
this.items = new HashMap<>();
}
public void addItem(Food food, int quantity) {
items.put(food, items.getOrDefault(food, 0) + quantity);
}
public void displayOrder() {
System.out.println("Order Details:");
for (Map.Entry<Food, Integer> entry : items.entrySet()) {
Food food = entry.getKey();
int quantity = entry.getValue();
System.out.println("Item: " + food.getName() + ", Quantity: " + quantity + ", Subtotal: $" + food.getPrice() * quantity);
}
}
public double calculateTotal() {
double total = 0.0;
for (Map.Entry<Food, Integer> entry : items.entrySet()) {
Food food = entry.getKey();
int quantity = entry.getValue();
total += food.getPrice() * quantity;
}
return total;
}
}
class Restaurant {
private ArrayList<Food> menu;
public Restaurant() {
this.menu = new ArrayList<>();
}
public void addFood(Food food) {
menu.add(food);
}
public void displayMenu() {
System.out.println("Menu:");
for (Food food : menu) {
System.out.println("Item: " + food.getName() + ", Price: $" + food.getPrice());
}
}
public ArrayList<Food> getMenu() {
return menu;
}
}
public class MeituanFoodDeliverySystem {
private static ArrayList<User> users;
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
users = new ArrayList<>();
// 添加一个默认用户
users.add(new User("admin", "admin123"));
Restaurant restaurant = new Restaurant();
restaurant.addFood(new Food("Burger", 8.99));
restaurant.addFood(new Food("Pizza", 12.99));
restaurant.addFood(new Food("Salad", 5.99));
User currentUser = null;
while (true) {
System.out.println("\nMeituan Food Delivery System");
System.out.println("1. Login");
System.out.println("2. Register");
System.out.println("3. Display Menu");
System.out.println("4. Place Order");
System.out.println("5. View Orders");
System.out.println("6. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // consume newline
switch (choice) {
case 1:
currentUser = login();
break;
case 2:
register();
break;
case 3:
restaurant.displayMenu();
break;
case 4:
if (currentUser == null) {
System.out.println("Please login first.");
currentUser = login();
}
placeOrder(currentUser, restaurant);
break;
case 5:
if (currentUser == null) {
System.out.println("Please login first.");
currentUser = login();
}
currentUser.viewOrders();
break;
case 6:
System.out.println("Exiting Meituan Food Delivery System. Thank you!");
System.exit(0);
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
private static User login() {
System.out.print("Enter username: ");
String enteredUsername = scanner.nextLine();
System.out.print("Enter password: ");
String enteredPassword = scanner.nextLine();
for (User user : users) {
if (user.authenticate(enteredUsername, enteredPassword)) {
System.out.println("Login successful!");
return user;
}
}
System.out.println("Login failed. Incorrect username or password.");
return null;
}
private static void register() {
System.out.print("Enter new username: ");
String newUsername = scanner.nextLine();
// Check if the username already exists
for (User user : users) {
if (user.getUsername().equals(newUsername)) {
System.out.println("Username already exists. Please choose a different username.");
return;
}
}
System.out.print("Enter new password: ");
String newPassword = scanner.nextLine();
User newUser = new User(newUsername, newPassword);
users.add(newUser);
System.out.println("Registration successful!");
}
private static void placeOrder(User user, Restaurant restaurant) {
Order order = new Order();
while (true) {
System.out.print("Enter item name (or 'done' to finish ordering): ");
String itemName = scanner.nextLine();
if (itemName.equalsIgnoreCase("done")) {
break;
}
System.out.print("Enter quantity: ");
int quantity = scanner.nextInt();
scanner.nextLine(); // consume newline
Food selectedFood = null;
for (Food food : restaurant.getMenu()) {
if (food.getName().equalsIgnoreCase(itemName)) {
selectedFood = food;
break;
}
}
if (selectedFood != null) {
order.addItem(selectedFood, quantity);
System.out.println("Item added to the order.");
} else {
System.out.println("Item not found in the menu.");
}
}
user.placeOrder(order);
}
}
带有用户信息的外卖平台的代码示例
于 2023-11-19 16:10:26 首次发布