为酒店编写一个点菜程序:首先给出要求客人输入餐桌号的提示信息, 客人键入餐桌号后,给出包含:菜名、菜编号以及价格的菜单提示信息,客人键入对应菜的编号后,给出点菜汇总信息。 要求:1•菜名、菜编号、价格用结构体存放。
时间: 2024-02-03 10:14:06 浏览: 16
好的,以下是一个简单的点菜程序的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 定义菜品结构体
struct Dish {
string name; // 菜名
int id; // 菜编号
double price; // 价格
};
// 定义餐厅菜单
vector<Dish> menu = {
{"宫保鸡丁", 1, 28.0},
{"鱼香肉丝", 2, 32.0},
{"水煮鱼", 3, 38.0},
{"红烧肉", 4, 26.0},
{"小炒肉", 5, 30.0}
};
int main() {
int table_num; // 餐桌号
cout << "请输入餐桌号:" << endl;
cin >> table_num;
cout << "欢迎光临餐厅,餐桌号为:" << table_num << endl;
cout << "菜单如下:" << endl;
cout << "--------------------------------" << endl;
cout << "编号\t菜名\t价格" << endl;
for (const auto &dish : menu) {
cout << dish.id << "\t" << dish.name << "\t" << dish.price << endl;
}
cout << "--------------------------------" << endl;
// 点菜
vector<Dish> ordered_dishes; // 已点菜品
while (true) {
int dish_id;
cout << "请输入菜品编号进行点菜(输入0结束点菜):" << endl;
cin >> dish_id;
if (dish_id == 0) {
break;
}
bool find_dish = false; // 是否找到对应菜品
for (const auto &dish : menu) {
if (dish.id == dish_id) {
ordered_dishes.push_back(dish);
find_dish = true;
break;
}
}
if (!find_dish) {
cout << "没有找到对应菜品,请重新输入!" << endl;
}
}
// 输出点菜汇总信息
cout << "您已点的菜品如下:" << endl;
cout << "--------------------------------" << endl;
double total_price = 0;
for (const auto &dish : ordered_dishes) {
cout << dish.name << "\t" << dish.price << endl;
total_price += dish.price;
}
cout << "--------------------------------" << endl;
cout << "总计:" << total_price << "元" << endl;
return 0;
}
```
在此示例代码中,我们定义了一个 `Dish` 结构体来存储菜品的信息,然后定义了一个 `menu` 变量来存储餐厅的菜单。用户输入餐桌号后,程序会输出菜单提示信息,然后进入点菜流程。用户输入菜品编号后,程序会查找对应菜品,如果找到则将菜品加入已点菜品列表中,否则提示用户重新输入。最后程序会输出点菜汇总信息,包括已点菜品及总价。