java程序 模拟肯德基卖餐问题,可以单点,也可以点套餐
时间: 2023-06-15 12:06:50 浏览: 57
好的,我可以给你提供一个简单的 Java 程序模拟肯德基卖餐问题。首先,我们需要定义餐品和套餐的类:
```java
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 Combo {
private String name;
private Food mainDish;
private Food sideDish;
private double price;
public Combo(String name, Food mainDish, Food sideDish, double price) {
this.name = name;
this.mainDish = mainDish;
this.sideDish = sideDish;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public String getMainDishName() {
return mainDish.getName();
}
public String getSideDishName() {
return sideDish.getName();
}
}
```
然后,我们需要定义一个菜单类,用于存储餐品和套餐:
```java
import java.util.ArrayList;
import java.util.List;
class Menu {
private List<Food> foods;
private List<Combo> combos;
public Menu() {
foods = new ArrayList<>();
combos = new ArrayList<>();
}
public void addFood(Food food) {
foods.add(food);
}
public void addCombo(Combo combo) {
combos.add(combo);
}
public List<Food> getFoods() {
return foods;
}
public List<Combo> getCombos() {
return combos;
}
}
```
接下来,我们需要定义一个订单类,用于存储客户点的餐品和套餐:
```java
import java.util.ArrayList;
import java.util.List;
class Order {
private List<Food> foods;
private List<Combo> combos;
public Order() {
foods = new ArrayList<>();
combos = new ArrayList<>();
}
public void addFood(Food food) {
foods.add(food);
}
public void addCombo(Combo combo) {
combos.add(combo);
}
public List<Food> getFoods() {
return foods;
}
public List<Combo> getCombos() {
return combos;
}
public double getTotalPrice() {
double totalPrice = 0;
for (Food food : foods) {
totalPrice += food.getPrice();
}
for (Combo combo : combos) {
totalPrice += combo.getPrice();
}
return totalPrice;
}
}
```
最后,我们需要定义一个主程序类,用于模拟点餐流程:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 初始化菜单
Menu menu = new Menu();
Food burger = new Food("汉堡", 15.0);
Food fries = new Food("薯条", 8.0);
Food cola = new Food("可乐", 6.0);
Combo combo1 = new Combo("套餐1", burger, fries, 20.0);
Combo combo2 = new Combo("套餐2", burger, cola, 18.0);
menu.addFood(burger);
menu.addFood(fries);
menu.addFood(cola);
menu.addCombo(combo1);
menu.addCombo(combo2);
// 开始点餐
Scanner scanner = new Scanner(System.in);
Order order = new Order();
boolean isOrdering = true;
while (isOrdering) {
System.out.println("请问您需要点什么?");
System.out.println("1. 汉堡 (15 元)");
System.out.println("2. 薯条 (8 元)");
System.out.println("3. 可乐 (6 元)");
System.out.println("4. 套餐1 (汉堡 + 薯条 + 饮料,20 元)");
System.out.println("5. 套餐2 (汉堡 + 饮料,18 元)");
System.out.println("6. 结算并退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
order.addFood(burger);
System.out.println("已加入汉堡");
break;
case 2:
order.addFood(fries);
System.out.println("已加入薯条");
break;
case 3:
order.addFood(cola);
System.out.println("已加入可乐");
break;
case 4:
order.addCombo(combo1);
System.out.println("已加入套餐1:汉堡 + 薯条 + 饮料");
break;
case 5:
order.addCombo(combo2);
System.out.println("已加入套餐2:汉堡 + 饮料");
break;
case 6:
isOrdering = false;
break;
default:
System.out.println("无效的选项");
break;
}
}
// 输出订单详情和总价
System.out.println("您的订单详情:");
for (Food food : order.getFoods()) {
System.out.println(food.getName() + " (单价:" + food.getPrice() + " 元)");
}
for (Combo combo : order.getCombos()) {
System.out.println(combo.getName() + " (套餐包含:" + combo.getMainDishName() + "、" + combo.getSideDishName() + "、饮料;套餐价:" + combo.getPrice() + " 元)");
}
System.out.println("总价:" + order.getTotalPrice() + " 元。谢谢惠顾!");
}
}
```
这个程序会先初始化一个菜单,然后进入点餐流程。在点餐流程中,用户可以选择单点餐品或者点套餐,并且可以多次选择。当用户选择结算并退出时,程序会输出订单详情和总价。以上代码仅供参考,你可以根据自己的需求进行修改。