用java写一个外卖订餐系统程序中的菜品列表、订单列表、顾客列表等都必须采用链表存储(1)餐厅管理员的登录功能,顾客的注册登录功能。 (2)餐厅管理员对菜品信息的添加、修改、删除、按菜品名称查询、按价格范围查询 (3)顾客查看菜品信息,按菜品名称查询、按价格范围查询
时间: 2023-08-12 07:06:33 浏览: 71
java 做得叫外卖管理系统
4星 · 用户满意度95%
好的,这是一个经典的Java编程题目,我可以给你提供一些思路和代码示例。
首先,我们需要定义一些类来表示系统中的各种实体,如菜品、订单、顾客等。这里我们可以使用链表来实现存储,比如使用Java自带的LinkedList类。
```
import java.util.LinkedList;
// 菜品类
class Food {
String name; // 菜品名称
double price; // 菜品价格
public Food(String name, double price) {
this.name = name;
this.price = price;
}
}
// 订单类
class Order {
LinkedList<Food> foodList; // 订单中的菜品列表
String customerName; // 下单顾客姓名
public Order(LinkedList<Food> foodList, String customerName) {
this.foodList = foodList;
this.customerName = customerName;
}
}
// 顾客类
class Customer {
String name; // 顾客姓名
String password; // 顾客密码
public Customer(String name, String password) {
this.name = name;
this.password = password;
}
}
// 餐厅管理员类
class RestaurantManager {
String name; // 管理员姓名
String password; // 管理员密码
LinkedList<Food> foodList; // 餐厅菜品列表
public RestaurantManager(String name, String password) {
this.name = name;
this.password = password;
this.foodList = new LinkedList<>();
}
// 添加菜品
public void addFood(Food food) {
foodList.add(food);
}
// 修改菜品
public void modifyFood(int index, Food food) {
foodList.set(index, food);
}
// 删除菜品
public void deleteFood(int index) {
foodList.remove(index);
}
// 按名称查询菜品
public LinkedList<Food> queryFoodByName(String name) {
LinkedList<Food> result = new LinkedList<>();
for (Food food : foodList) {
if (food.name.equals(name)) {
result.add(food);
}
}
return result;
}
// 按价格范围查询菜品
public LinkedList<Food> queryFoodByPrice(double minPrice, double maxPrice) {
LinkedList<Food> result = new LinkedList<>();
for (Food food : foodList) {
if (food.price >= minPrice && food.price <= maxPrice) {
result.add(food);
}
}
return result;
}
}
```
接下来,我们需要实现一些用户界面,让管理员和顾客可以通过输入来与系统进行交互。这里我们可以使用Java自带的Scanner类来读取用户输入。
```
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
RestaurantManager manager = new RestaurantManager("admin", "admin123"); // 初始化管理员账户
while (true) {
System.out.println("请选择要进行的操作:");
System.out.println("1. 餐厅管理员登录");
System.out.println("2. 顾客注册");
System.out.println("3. 顾客登录");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入管理员账号:");
String managerName = scanner.next();
System.out.println("请输入管理员密码:");
String managerPassword = scanner.next();
if (managerName.equals(manager.name) && managerPassword.equals(manager.password)) {
System.out.println("管理员登录成功!");
handleManager(manager, scanner);
} else {
System.out.println("管理员账号或密码错误!");
}
break;
// TODO: 实现顾客注册和登录功能
}
}
}
// 管理员操作界面
public static void handleManager(RestaurantManager manager, Scanner scanner) {
while (true) {
System.out.println("请选择要进行的操作:");
System.out.println("1. 添加菜品");
System.out.println("2. 修改菜品");
System.out.println("3. 删除菜品");
System.out.println("4. 按名称查询菜品");
System.out.println("5. 按价格范围查询菜品");
System.out.println("6. 退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入菜品名称:");
String foodName = scanner.next();
System.out.println("请输入菜品价格:");
double foodPrice = scanner.nextDouble();
manager.addFood(new Food(foodName, foodPrice));
System.out.println("菜品添加成功!");
break;
// TODO: 实现修改、删除、查询菜品等操作
case 6:
return;
}
}
}
}
```
这里只是给出了一些示例代码,具体实现还需要根据具体需求进行调整和完善。希望对你有所帮助!
阅读全文