题目:基于函数嵌套调用的点餐系统实现
描述:
需要实现一个简化的点餐系统,该系统能够处理多位顾客的点餐、支付以及提供食物的过程。系统的主要流程通过函数嵌套调用来实现,包括展示菜单、点餐、生成账单、支付以及提供食物等功能。
具体要求:
- 菜单展示:使用
showMenu
函数展示菜单,菜单包含若干项,每项有名称和价格。 - 点餐逻辑:使用
takeOrder
函数进行点餐,该函数嵌套调用showMenu
来显示菜单,并允许顾客选择多个菜品,输入0
结束点餐。 - 生成账单:使用
generateBill
函数根据顾客选择的菜品生成账单,并计算总价。 - 支付处理:使用
makePayment
函数处理支付过程,该函数嵌套调用generateBill
获取账单金额,并接受用户输入的支付金额,检查是否足够支付账单。 - 提供食物:使用
serveFood
函数模拟准备并提供食物的过程。 - 主要流程:使用 函数作为主要的点餐流程函数,依次调用点餐、支付和提供食物的函数。
- 多顾客支持:在
main
函数中,程序应支持处理多位顾客的点餐,通过循环调用customerOrder
实现。
核心代码流程图:
源代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 菜单项结构体,包含菜名和价格
struct MenuItem {
string name;
double price;
};
// 展示菜单函数
void showMenu(const vector<MenuItem>& menu) {
cout << "菜单:" << endl;
for (size_t i = 0; i < menu.size(); ++i) {
cout << i + 1 << ". " << menu[i].name << " - $" << menu[i].price << endl;
}
}
// 点餐函数,根据顾客选择生成订单
void takeOrder(vector<MenuItem>& menu, vector<int>& order) {
showMenu(menu);
int choice;
cout << "请输入要点餐的编号(输入0结束点餐):";
while (cin >> choice && choice != 0) {
if (choice > 0 && choice <= menu.size()) {
order.push_back(choice - 1); // 将选择的菜单项索引加入订单
}
else {
cout << "无效选择,请重新输入:" << endl;
}
}
cout << "顾客已点餐,处理订单..." << endl;
}
// 生成账单函数,根据订单计算总价
double generateBill(const vector<MenuItem>& menu, const vector<int>& order) {
double total = 0.0;
for (int index : order) {
total += menu[index].price;
}
cout << "根据订单生成账单,总价为:$" << total << endl;
return total;
}
// 支付函数,接受用户输入的支付金额,并检查是否足够支付账单
bool makePayment(double bill) {
double paymentAmount;
cout << "顾客正在支付账单,金额为:$" << bill << endl;
cout << "请输入支付金额:$";
cin >> paymentAmount;
// 检查支付金额是否足够
if (paymentAmount >= bill) {
cout << "支付成功,找零:$" << (paymentAmount - bill) << endl;
return true; // 支付成功
}
else {
cout << "支付失败,金额不足,请重新支付。" << endl;
return false; // 支付失败
}
}
// 提供食物函数
void serveFood() {
cout << "准备食物并提供给顾客..." << endl;
}
// 顾客订单处理函数
void customerOrder(vector<MenuItem>& menu) {
vector<int> order;
takeOrder(menu, order);
double bill = generateBill(menu, order);
// 循环直到支付成功
while (!makePayment(bill)) {
cout << "请重新支付。" << endl;
}
serveFood();
}
int main() {
// 创建菜单
vector<MenuItem> menu = {
{"汉堡", 5.0},
{"薯条", 3.0},
{"可乐", 2.0},
{"沙拉", 4.5}
};
int numberOfOrders;
cout << "请输入点餐数量(即几位顾客要点餐):";
cin >> numberOfOrders;
for (int i = 0; i < numberOfOrders; ++i) {
cout << "处理第" << i + 1 << "位顾客的订单:" << endl;
customerOrder(menu);
}
cout << "所有订单处理完毕,谢谢光临!" << endl;
return 0;
}
运行截图:
标签:菜单,函数,menu,C++,嵌套,点餐,order,cout From: https://blog.csdn.net/Raye_Young/article/details/143263366