C++实现一个学生饭堂点餐系统
时间: 2024-03-21 12:41:22 浏览: 17
好的,这个学生饭堂点餐系统可以分为以下几个模块:
1. 菜单模块:展示当前饭堂提供的菜品,并且可以根据用户的需求进行筛选。
2. 下单模块:用户可以选择菜品并下单,下单成功后会生成一个订单号。
3. 支付模块:用户可以使用现金或者刷卡进行支付,支付成功后会提示用户取餐。
4. 取餐模块:用户可以凭借订单号来取餐。
下面是一个简单的实现:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 菜品结构体
struct Food {
string name; // 菜品名称
double price; // 菜品价格
};
// 订单结构体
struct Order {
int orderId; // 订单号
vector<Food> foods; // 菜品列表
double totalPrice; // 订单总价
};
// 菜单列表
vector<Food> menu = {
{"鱼香肉丝", 12.0},
{"宫保鸡丁", 10.0},
{"回锅肉", 15.0},
{"土豆丝", 8.0},
{"烤鸭", 40.0},
{"红烧肉", 18.0},
{"糖醋排骨", 20.0},
{"酸菜鱼", 28.0},
{"蒸鱼", 30.0},
{"清蒸肉饼", 8.0}
};
// 显示菜单
void showMenu() {
cout << "菜单列表:" << endl;
for (int i = 0; i < menu.size(); i++) {
cout << i + 1 << ". " << menu[i].name << " " << menu[i].price << "元" << endl;
}
}
// 筛选菜单
void filterMenu(vector<Food>& filterResult, string keyword) {
for (int i = 0; i < menu.size(); i++) {
if (menu[i].name.find(keyword) != string::npos) {
filterResult.push_back(menu[i]);
}
}
}
// 下单
void placeOrder(Order& order) {
int foodIndex;
do {
cout << "请选择菜品编号(输入0结束):" << endl;
cin >> foodIndex;
if (foodIndex >= 1 && foodIndex <= menu.size()) {
order.foods.push_back(menu[foodIndex - 1]);
order.totalPrice += menu[foodIndex - 1].price;
}
else if (foodIndex != 0) {
cout << "无效的菜品编号,请重新输入!" << endl;
}
} while (foodIndex != 0);
}
// 支付
void payOrder(Order& order) {
int payType;
do {
cout << "请选择支付方式(1:现金,2:刷卡):" << endl;
cin >> payType;
if (payType == 1) {
cout << "请支付:" << order.totalPrice << "元" << endl;
cout << "支付成功!请取餐!" << endl;
break;
}
else if (payType == 2) {
cout << "请刷卡支付:" << order.totalPrice << "元" << endl;
cout << "支付成功!请取餐!" << endl;
break;
}
else {
cout << "无效的支付方式,请重新选择!" << endl;
}
} while (true);
}
// 取餐
void takeFood(Order& order) {
cout << "请凭订单号:" << order.orderId << " 取餐!" << endl;
}
int main() {
Order order;
order.orderId = 10001;
// 显示菜单
showMenu();
// 筛选菜单
string keyword;
cout << "请输入菜品关键字(不输入直接回车表示不筛选):" << endl;
cin >> keyword;
if (keyword != "") {
vector<Food> filterResult;
filterMenu(filterResult, keyword);
if (filterResult.size() == 0) {
cout << "未找到相关菜品!" << endl;
return 0;
}
cout << "筛选结果:" << endl;
for (int i = 0; i < filterResult.size(); i++) {
cout << i + 1 << ". " << filterResult[i].name << " " << filterResult[i].price << "元" << endl;
}
}
// 下单
placeOrder(order);
// 支付
payOrder(order);
// 取餐
takeFood(order);
return 0;
}
```
这个实现只是一个简单的示例,实际上还有很多细节需要处理,比如输入验证、菜品库存、订单管理等等。