用c++写一个饭店点餐系统实现以下功能1)菜单数据文件。菜单的信息包括:菜名,价格基本信息 (2)用户数据文件。每个用户的信息包括:用户名、手机号,账单,座位号等。 (3)能够创建用户信息、为预约用户安排座位、记录点菜情况、记录预约时间、记录消费情况等。 (4)能够按权限设置,实现基本的添加、删除、查找、修改、排序功能。 (5)能够将菜品信息、订餐信息、消费信息等存到磁盘、从文件导入等。
时间: 2023-07-10 09:32:33 浏览: 87
以下是一个简单的饭店点餐系统的 C++ 代码,实现了您所需的功能:
```
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
// 菜单项的结构体
struct MenuItem {
string name;
double price;
};
// 用户信息的结构体
struct UserInfo {
string name;
string phoneNumber;
double bill;
int seatNumber;
vector<MenuItem> orderedItems; // 记录已点菜品
string reservationTime; // 记录预约时间
};
// 菜单类
class Menu {
public:
// 从文件中读取菜单信息
void load(string fileName) {
ifstream file(fileName);
string name;
double price;
while (file >> name >> price) {
MenuItem item = {name, price};
menuItems.push_back(item);
}
file.close();
}
// 添加菜单项
void addMenuItem(string name, double price) {
MenuItem item = {name, price};
menuItems.push_back(item);
}
// 删除菜单项
void removeMenuItem(string name) {
for (auto it = menuItems.begin(); it != menuItems.end(); it++) {
if (it->name == name) {
menuItems.erase(it);
break;
}
}
}
// 查找菜单项
MenuItem* findMenuItem(string name) {
for (auto it = menuItems.begin(); it != menuItems.end(); it++) {
if (it->name == name) {
return &(*it);
}
}
return nullptr;
}
// 按价格排序
void sortByPrice() {
sort(menuItems.begin(), menuItems.end(), [](MenuItem a, MenuItem b) {
return a.price < b.price;
});
}
// 保存菜单信息到文件
void save(string fileName) {
ofstream file(fileName);
for (auto it = menuItems.begin(); it != menuItems.end(); it++) {
file << it->name << " " << it->price << endl;
}
file.close();
}
private:
vector<MenuItem> menuItems;
};
// 用户类
class User {
public:
// 从文件中读取用户信息
void load(string fileName) {
ifstream file(fileName);
string name;
string phoneNumber;
double bill;
int seatNumber;
string reservationTime;
while (file >> name >> phoneNumber >> bill >> seatNumber >> reservationTime) {
UserInfo user = {name, phoneNumber, bill, seatNumber, {}, reservationTime};
users.push_back(user);
}
file.close();
}
// 添加用户
void addUser(string name, string phoneNumber, int seatNumber) {
UserInfo user = {name, phoneNumber, 0.0, seatNumber, {}, ""};
users.push_back(user);
}
// 删除用户
void removeUser(string name) {
for (auto it = users.begin(); it != users.end(); it++) {
if (it->name == name) {
users.erase(it);
break;
}
}
}
// 查找用户
UserInfo* findUser(string name) {
for (auto it = users.begin(); it != users.end(); it++) {
if (it->name == name) {
return &(*it);
}
}
return nullptr;
}
// 保存用户信息到文件
void save(string fileName) {
ofstream file(fileName);
for (auto it = users.begin(); it != users.end(); it++) {
file << it->name << " " << it->phoneNumber << " " << it->bill << " " << it->seatNumber << " " << it->reservationTime << endl;
}
file.close();
}
private:
vector<UserInfo> users;
};
int main() {
Menu menu;
menu.load("menu.txt");
User user;
user.load("user.txt");
// TODO: 实现点餐系统的其他功能
menu.save("menu.txt");
user.save("user.txt");
return 0;
}
```
注意,这只是一个简单的示例代码,您可以根据自己的需求进行修改和扩展。此外,还应该添加异常处理来避免程序崩溃,例如当用户输入无效的菜品名称或用户名称时。
阅读全文