用Java写一个菜单计价系统,参考以下类的模板进行设计: 菜品类:对应菜谱上一道菜的信息。 Dish { String name;//菜品名称 int unit_price; //单价 int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份) } 菜谱类:对应菜谱,包含饭店提供的所有菜的信息。 Menu { Dish[] dishs ;//菜品数组,保存所有菜品信息 Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。 } 点菜记录类:保存订单上的一道菜品记录 Record { Dish d;//菜品 int portion;//份额(1/2/3代表小/中/大份) int getPrice()//计价,计算本条记录的价格 } 订单类:保存用户点的所有菜的信息。 Order { Record[] records;//保存订单上每一道的记录 int getTotalPrice()//计算订单的总价 Record addARecord(String dishName,int portion) //添加一条菜品信息到订单中。 }
时间: 2023-05-11 14:05:00 浏览: 95
可以参考以下代码实现:
// 菜品类
class Dish {
String name; // 菜品名称
int unit_price; // 单价
// 计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
int getPrice(int portion) {
if (portion == 1) {
return unit_price;
} else if (portion == 2) {
return unit_price * 2;
} else if (portion == 3) {
return unit_price * 3;
} else {
return 0;
}
}
}
// 菜谱类
class Menu {
Dish[] dishs; // 菜品数组,保存所有菜品信息
// 根据菜名在菜谱中查找菜品信息,返回Dish对象。
Dish searchDish(String dishName) {
for (Dish dish : dishs) {
if (dish.name.equals(dishName)) {
return dish;
}
}
return null;
}
}
// 点菜记录类
class Record {
Dish d; // 菜品
int portion; // 份额(1/2/3代表小/中/大份)
// 计价,计算本条记录的价格
int getPrice() {
return d.getPrice(portion);
}
}
// 订单类
class Order {
Record[] records; // 保存订单上每一道的记录
// 计算订单的总价
int getTotalPrice() {
int totalPrice = 0;
for (Record record : records) {
totalPrice += record.getPrice();
}
return totalPrice;
}
// 添加一条菜品信息到订单中。
Record addARecord(String dishName, int portion) {
Menu menu = new Menu();
Dish dish = menu.searchDish(dishName);
if (dish == null) {
return null;
}
Record record = new Record();
record.d = dish;
record.portion = portion;
Record[] newRecords = new Record[records.length + 1];
System.arraycopy(records, 0, newRecords, 0, records.length);
newRecords[records.length] = record;
records = newRecords;
return record;
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
// 初始化菜谱
Menu menu = new Menu();
menu.dishs = new Dish[3];
menu.dishs[0] = new Dish();
menu.dishs[0].name = "鱼香肉丝";
menu.dishs[0].unit_price = 20;
menu.dishs[1] = new Dish();
menu.dishs[1].name = "宫保鸡丁";
menu.dishs[1].unit_price = 25;
menu.dishs[2] = new Dish();
menu.dishs[2].name = "红烧肉";
menu.dishs[2].unit_price = 30;
// 点餐
Order order = new Order();
order.addARecord("鱼香肉丝", 2);
order.addARecord("宫保鸡丁", 1);
order.addARecord("红烧肉", 3);
// 输出订单总价
System.out.println("订单总价:" + order.getTotalPrice());
}
}