用c++写一个点餐改变菜谱进行金额结算的系统
时间: 2024-03-24 12:41:21 浏览: 76
基于Qt+C++实现的最火爆的在线点餐系统+源码(毕业设计&课程设计&项目开发)
5星 · 资源好评率100%
好的,下面是一个简单的点餐、修改菜谱和金额结算的系统的C++代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
// 定义菜品类
class Dish {
public:
Dish(string name, int price) {
this->name = name;
this->price = price;
}
string getName() {
return name;
}
int getPrice() {
return price;
}
private:
string name;
int price;
};
// 定义菜单类
class Menu {
public:
Menu() {
// 初始化菜单
dishes["鱼香肉丝"] = Dish("鱼香肉丝", 20);
dishes["宫保鸡丁"] = Dish("宫保鸡丁", 22);
dishes["回锅肉"] = Dish("回锅肉", 18);
}
// 获取菜单
vector<Dish> getDishes() {
vector<Dish> dishList;
for (auto it = dishes.begin(); it != dishes.end(); it++) {
dishList.push_back(it->second);
}
return dishList;
}
// 添加菜品
void addDish(Dish dish) {
dishes[dish.getName()] = dish;
}
// 修改菜品
void updateDish(string name, int price) {
dishes[name].getPrice() = price;
}
private:
map<string, Dish> dishes;
};
// 定义订单类
class Order {
public:
Order() {
totalPrice = 0;
}
// 添加菜品
void addDish(Dish dish) {
dishes.push_back(dish);
totalPrice += dish.getPrice();
}
// 获取菜品列表
vector<Dish> getDishes() {
return dishes;
}
// 获取订单总价
int getTotalPrice() {
return totalPrice;
}
private:
vector<Dish> dishes;
int totalPrice;
};
int main() {
Menu menu; // 初始化菜单
Order order; // 初始化订单
// 展示菜单
cout << "欢迎来到餐厅!以下是我们的菜单:" << endl;
vector<Dish> dishList = menu.getDishes();
for (auto it = dishList.begin(); it != dishList.end(); it++) {
cout << it->getName() << " " << it->getPrice() << "元" << endl;
}
// 点餐
while (true) {
string dishName;
cout << "请点菜(输入菜名,空格,数量,如:鱼香肉丝 2),输入0结束点餐:" << endl;
cin >> dishName;
if (dishName == "0") {
break;
}
int count;
cin >> count;
Dish dish = menu.getDish(dishName);
for (int i = 0; i < count; i++) {
order.addDish(dish);
}
}
// 修改菜谱
string dishName;
int newPrice;
cout << "是否需要修改菜谱?(输入菜名和新的价格,如:鱼香肉丝 25),输入0跳过:" << endl;
cin >> dishName;
if (dishName != "0") {
cin >> newPrice;
menu.updateDish(dishName, newPrice);
}
// 结算
cout << "您的订单如下:" << endl;
vector<Dish> dishList = order.getDishes();
for (auto it = dishList.begin(); it != dishList.end(); it++) {
cout << it->getName() << " " << it->getPrice() << "元" << endl;
}
cout << "总价:" << order.getTotalPrice() << "元" << endl;
return 0;
}
```
这个系统包含了菜品类、菜单类和订单类。菜品类用于存储菜品的名称和价格,菜单类用于存储菜单中的所有菜品,并提供添加菜品和修改菜品的方法,订单类用于存储顾客点的菜品和总价。在主函数中,首先展示菜单,然后让顾客点餐,再询问是否需要修改菜谱,最后展示订单和总价。
阅读全文