编写食堂饭菜管理程序,要求程序能实现显示饭菜单、修改饭菜单、饭菜价格排序、饭菜信息查询、用户能够通过给价格区间筛选满足条件的饭菜、能够随机推出一道饭菜、输入在星期几吃什么饭、显示在之前输入的星期几吃的饭、退出的功能,要求设计一个饭类,数据成员包括饭菜名和窗口号和价钱,用 C++编写
时间: 2024-01-26 09:05:17 浏览: 66
好的,我可以帮您编写这个程序。首先,我们需要设计一个饭类,包括饭菜名、窗口号和价格三个数据成员。代码如下:
```c++
class Food {
private:
string name; // 饭菜名
int window; // 窗口号
double price; // 价格
public:
// 构造函数
Food(string n, int w, double p) {
name = n;
window = w;
price = p;
}
// 获取饭菜名
string getName() const {
return name;
}
// 获取窗口号
int getWindow() const {
return window;
}
// 获取价格
double getPrice() const {
return price;
}
};
```
接下来,我们需要设计一个管理程序类,包括显示饭菜单、修改饭菜单、饭菜价格排序、饭菜信息查询、用户能够通过给价格区间筛选满足条件的饭菜、能够随机推出一道饭菜、输入在星期几吃什么饭、显示在之前输入的星期几吃的饭、退出的功能。代码如下:
```c++
class FoodManager {
private:
vector<Food> menu; // 饭菜单
unordered_map<string, Food> foodMap; // 饭菜名到饭菜对象的映射
unordered_map<string, string> weekdayMap; // 星期到饭菜名的映射
public:
// 添加饭菜
void addFood(const Food &food) {
menu.push_back(food);
foodMap[food.getName()] = food;
}
// 显示饭菜单
void showMenu() const {
for (const auto &food : menu) {
cout << food.getName() << "\t" << food.getWindow() << "\t" << food.getPrice() << endl;
}
}
// 修改饭菜信息
void modifyFood(const string &name, const Food &food) {
auto iter = foodMap.find(name);
if (iter != foodMap.end()) {
iter->second = food;
}
}
// 饭菜价格排序
void sortMenuByPrice() {
sort(menu.begin(), menu.end(), [](const Food &a, const Food &b) {
return a.getPrice() < b.getPrice();
});
}
// 饭菜信息查询
const Food *findFood(const string &name) const {
auto iter = foodMap.find(name);
if (iter != foodMap.end()) {
return &iter->second;
}
return nullptr;
}
// 根据价格区间筛选饭菜
vector<Food> filterByPrice(double minPrice, double maxPrice) const {
vector<Food> result;
for (const auto &food : menu) {
if (food.getPrice() >= minPrice && food.getPrice() <= maxPrice) {
result.push_back(food);
}
}
return result;
}
// 随机推出一道饭菜
const Food *recommendFood() const {
if (menu.empty()) {
return nullptr;
}
srand(time(nullptr));
int index = rand() % menu.size();
return &menu[index];
}
// 输入在星期几吃什么饭
void setFoodOfWeekday(const string &weekday, const string &name) {
auto iter = foodMap.find(name);
if (iter != foodMap.end()) {
weekdayMap[weekday] = name;
}
}
// 显示在之前输入的星期几吃的饭
void showFoodOfWeekday(const string &weekday) const {
auto iter = weekdayMap.find(weekday);
if (iter != weekdayMap.end()) {
cout << iter->second << endl;
} else {
cout << "没有设置" << weekday << "吃什么饭" << endl;
}
}
// 退出程序
void exitProgram() const {
exit(0);
}
};
```
最后,我们可以编写一个 main 函数来测试程序的功能。代码如下:
```c++
int main() {
// 初始化饭菜管理程序
FoodManager manager;
manager.addFood(Food("鱼香肉丝", 1, 12.5));
manager.addFood(Food("宫保鸡丁", 2, 15.0));
manager.addFood(Food("糖醋里脊", 1, 18.0));
manager.addFood(Food("红烧肉", 2, 20.5));
manager.addFood(Food("回锅肉", 1, 22.0));
manager.addFood(Food("酸菜鱼", 2, 28.0));
// 显示饭菜单
cout << "===== 饭菜单 =====" << endl;
manager.showMenu();
// 修改饭菜信息
manager.modifyFood("酸菜鱼", Food("烤鱼", 2, 35.0));
cout << "===== 修改饭菜信息后的饭菜单 =====" << endl;
manager.showMenu();
// 饭菜价格排序
manager.sortMenuByPrice();
cout << "===== 饭菜价格排序后的饭菜单 =====" << endl;
manager.showMenu();
// 饭菜信息查询
const Food *food = manager.findFood("回锅肉");
if (food != nullptr) {
cout << "查询到饭菜:" << food->getName() << "\t" << food->getWindow() << "\t" << food->getPrice() << endl;
} else {
cout << "没有找到饭菜" << endl;
}
// 根据价格区间筛选饭菜
cout << "===== 价格在 15 ~ 25 之间的饭菜 =====" << endl;
vector<Food> result = manager.filterByPrice(15, 25);
for (const auto &food : result) {
cout << food.getName() << "\t" << food.getWindow() << "\t" << food.getPrice() << endl;
}
// 随机推出一道饭菜
food = manager.recommendFood();
if (food != nullptr) {
cout << "随机推荐饭菜:" << food->getName() << "\t" << food->getWindow() << "\t" << food->getPrice() << endl;
} else {
cout << "没有饭菜可供推荐" << endl;
}
// 设置星期几吃什么饭
manager.setFoodOfWeekday("星期一", "鱼香肉丝");
manager.setFoodOfWeekday("星期二", "宫保鸡丁");
manager.setFoodOfWeekday("星期三", "糖醋里脊");
manager.setFoodOfWeekday("星期四", "红烧肉");
manager.setFoodOfWeekday("星期五", "回锅肉");
manager.setFoodOfWeekday("星期六", "烤鱼");
manager.setFoodOfWeekday("星期日", "酸菜鱼");
// 显示在之前输入的星期几吃的饭
cout << "星期三吃什么饭:" << endl;
manager.showFoodOfWeekday("星期三");
// 退出程序
manager.exitProgram();
return 0;
}
```
以上就是编写食堂饭菜管理程序的全部内容,希望能对您有所帮助。
阅读全文