用Java编写如下程序:编写一个食堂点餐程序,用户可以选择5种不同的餐品(如米饭、面条、饺子等),价格自拟。 并根据用餐时间(早餐、午餐、晚餐)决定价格,早餐打9折。 每位用户最多可以点5份餐品,超出数量时给予提示并完成订单
时间: 2024-09-20 11:07:31 浏览: 56
好的,我们可以使用Java设计一个简单的命令模式或者策略模式来实现这个食堂点餐程序。这里我将提供一个基础的伪代码示例:
```java
// 餐品接口
interface Food {
double getPrice();
}
// 具体餐品类,实现Food接口
class Rice implements Food {
private double price;
public Rice(double price) {
this.price = price;
}
@Override
public double getPrice() {
return price;
}
}
class Noodle implements Food {
// 类似于Rice,定义其他菜品的价格
// ...
}
class Dumpling implements Food {
// ...
}
// 时间策略类,包含折扣规则
class DiscountStrategy {
double breakfastDiscount = 0.9;
public double applyDiscount(Food food, String mealTime) {
if ("早餐".equals(mealTime)) {
return food.getPrice() * breakfastDiscount;
} else {
return food.getPrice();
}
}
}
// 点餐类
class Diner {
int maxOrderCount = 5;
DiscountStrategy strategy = new DiscountStrategy();
void order(Food food, String mealTime) {
double discountedPrice = strategy.applyDiscount(food, mealTime);
if (getTotalOrders() >= maxOrderCount) {
System.out.println("您已经达到了最大购买数量,请减少一些餐品。");
} else {
System.out.printf("您选择了%T, 折扣后的价格为%.2f元。\n", food, discountedPrice);
// 添加到购物车或处理订单逻辑
}
}
private int getTotalOrders() {
// 计算已点餐品的数量
// ...
}
}
public class Main {
public static void main(String[] args) {
Diner diner = new Diner();
diner.order(new Rice(10), "早餐"); // 示例点餐
diner.order(new Noodle(15), "午餐"); // 另外一餐
// ...
}
}
```
阅读全文
相关推荐


















