用c++编写餐厅点餐系统(包括用户浏览菜单,下单和结账功能,商家可以增删菜品,设置菜品价格等)
时间: 2024-12-06 14:33:33 浏览: 31
在C++中,构建一个简单的餐厅点餐系统可以使用类和对象的概念。首先,我们需要创建三个主要类:`User`、`Menu` 和 `Restaurant`。以下是代码的一个基本概述:
```cpp
#include <iostream>
#include <map>
#include <string>
// 菜品类
class Dish {
public:
std::string name;
double price;
// 构造函数,getter和setter省略
};
// 菜单类
class Menu {
private:
std::map<std::string, Dish> dishes;
public:
void addDish(Dish dish);
void removeDish(const std::string& dishName);
const Dish& getDish(const std::string& dishName) const;
};
// 餐厅类
class Restaurant {
private:
Menu menu;
public:
void serve(User& user);
};
// 用户类
class User {
private:
std::string name;
std::list<Dish> cart;
public:
void browseMenu();
void order(Dish dish);
void checkout();
};
void Menu::addDish(Dish dish) {
dishes[dish.name] = dish;
}
void Menu::removeDish(const std::string& dishName) {
dishes.erase(dishName);
}
const Dish& Menu::getDish(const std::string& dishName) const {
if (dishes.find(dishName) != dishes.end())
return dishes[dishName];
throw std::runtime_error("菜品不存在");
}
void Restaurant::serve(User& user) {
// 用户浏览菜单和点菜
user.browseMenu();
user.order();
// 结账
user.checkout();
}
void User::browseMenu() {
for (const auto& dish : menu.getDishes()) {
std::cout << dish.first << ": " << dish.second.price << std::endl;
}
}
void User::order(Dish dish) {
if (menu.exists(dish.name)) {
cart.push_back(dish);
} else {
std::cerr << "菜品" << dish.name << "不可用" << std::endl;
}
}
void User::checkout() {
double total = 0;
for (const auto& dish : cart) {
total += dish.price;
}
std::cout << "总价: " << total << std::endl;
// 省略实际支付逻辑
}
int main() {
Restaurant restaurant;
Dish dish {"牛肉炒饭", 30};
restaurant.menu.addDish(dish);
User user {"John"};
restaurant.serve(user);
return 0;
}
```
这个例子实现了用户浏览菜单、下单和结账的基本流程,商家通过`Restaurant`类来增删菜品和设置价格。请注意,这只是一个基础版本,实际应用可能需要更复杂的错误处理、数据库交互和用户界面。
阅读全文