2401_83352670 2024-03-06 14:40 采纳率: 100%
浏览 86
已结题

食堂菜品管理系统c++代码

学校拟开发一套食堂菜品管理系统,以便对菜品和同学们的评价进行管理,其中包含如下信息:
商户:商户名称、柜面位置、电话……
菜品:菜品编号、菜品名称、价格、所属商户……
学生:注册账号、昵称、电话……
食堂里的商户均不同名,一个商户可以提供多样菜品;
食堂对所有商户的菜品进行编号,每样菜品由其唯一的商户提供;
学生可对菜品进行评价,系统要存储学生对菜品的评分、评价内容和评价时间。
基本要求包括:
1.提供用户操作的菜单和界面,用户至少可分为学生和商户两种类型。
2.设计相应的信息表,用于记录信息,如学生信息表、商户信息表、菜品信息表、评价信息表等,要求以文件的形式存储,格式可以自行设计。
3.商户可进行如下操作:本商户信息的新增、查看、修改、删除等。发布和更新菜品信息。查询本商户菜品评价信息。
4.学生可进行如下操作:个人信息的新增、查看、修改、删除等。对各菜品信息、评价信息、统计信息(评分高低排序)的浏览。对各菜品的评分和评价。
5.系统退出时,更新相应文件中的信息;当下次运行程序时,从文件读取所有信息。

  • 写回答

13条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-03-06 14:41
    关注

    🌈🌈🌈参考通义千问和郭老师的小迷弟雅思莫了-编写提供🌈🌈🌈
    您可以参考如下,如果回答的不正确,及时评论区回复我,我会根据你错误描述追加回复,直到您满意为止。

    先提供你运行截图:

    img

    代码:

    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    // 商户结构体
    struct Merchant {
        string name;
        string location;
        string phone;
    };
    
    // 菜品结构体
    struct FoodItem {
        int id;
        string name;
        double price;
        string merchantName;
    };
    
    // 学生结构体
    struct Student {
        string username;
        string nickname;
        string phone;
    };
    
    // 评价结构体
    struct Review {
        string studentUsername;
        int foodItemId;
        int rating;
        string comment;
        string timestamp;
    };
    
    // 存储商户信息的容器
    vector<Merchant> merchants;
    
    // 存储菜品信息的容器
    vector<FoodItem> foodItems;
    
    // 存储学生信息的容器
    vector<Student> students;
    
    // 存储评价信息的容器
    vector<Review> reviews;
    
    // 保存商户信息到文件
    void saveMerchantsToFile() {
        ofstream file("merchants.txt");
        for (const auto& merchant : merchants) {
            file << merchant.name << " " << merchant.location << " " << merchant.phone << endl;
        }
        file.close();
    }
    
    // 从文件加载商户信息
    void loadMerchantsFromFile() {
        ifstream file("merchants.txt");
        Merchant merchant;
        while (file >> merchant.name >> merchant.location >> merchant.phone) {
            merchants.push_back(merchant);
        }
        file.close();
    }
    
    // 商户菜单
    void merchantMenu() {
        int choice;
        do {
            cout << "商户菜单:" << endl;
            cout << "1. 新增菜品" << endl;
            cout << "2. 查看菜品" << endl;
            cout << "3. 修改菜品" << endl;
            cout << "4. 删除菜品" << endl;
            cout << "5. 查询评价信息" << endl;
            cout << "6. 返回上一级菜单" << endl;
            cout << "请选择操作: ";
            cin >> choice;
    
            switch (choice) {
                case 1: {
                    cout << "请输入新增菜品的信息:" << endl;
                    FoodItem newItem;
                    cout << "菜品编号:";
                    cin >> newItem.id;
                    cout << "菜品名称:";
                    cin >> newItem.name;
                    cout << "价格:";
                    cin >> newItem.price;
                    cout << "所属商户名称:";
                    cin >> newItem.merchantName;
                    // 将新菜品加入容器
                    foodItems.push_back(newItem);
                    cout << "菜品新增成功!" << endl;
                    break;
                }
                case 2: {
                    cout << "当前菜品信息如下:" << endl;
                    for (const auto& item : foodItems) {
                        cout << "菜品编号:" << item.id << endl;
                        cout << "菜品名称:" << item.name << endl;
                        cout << "价格:" << item.price << endl;
                        cout << "所属商户名称:" << item.merchantName << endl;
                        cout << "-------------------------" << endl;
                    }
                    break;
                }
                case 3: {
                    int idToModify;
                    cout << "请输入要修改的菜品编号:";
                    cin >> idToModify;
                    auto it = find_if(foodItems.begin(), foodItems.end(), [idToModify](const FoodItem& item) {
                        return item.id == idToModify;
                    });
                    if (it != foodItems.end()) {
                        cout << "请输入新的菜品信息:" << endl;
                        cout << "菜品名称:";
                        cin >> it->name;
                        cout << "价格:";
                        cin >> it->price;
                        cout << "修改成功!" << endl;
                    } else {
                        cout << "未找到该菜品编号!" << endl;
                    }
                    break;
                }
                case 4: {
                    int idToDelete;
                    cout << "请输入要删除的菜品编号:";
                    cin >> idToDelete;
                    auto it = remove_if(foodItems.begin(), foodItems.end(), [idToDelete](const FoodItem& item) {
                        return item.id == idToDelete;
                    });
                    if (it != foodItems.end()) {
                        foodItems.erase(it, foodItems.end());
                        cout << "删除成功!" << endl;
                    } else {
                        cout << "未找到该菜品编号!" << endl;
                    }
                    break;
                }
                case 5: {
                    int idToQuery;
                    cout << "请输入要查询评价信息的菜品编号:";
                    cin >> idToQuery;
                    cout << "菜品编号为 " << idToQuery << " 的评价信息如下:" << endl;
                    for (const auto& review : reviews) {
                        if (review.foodItemId == idToQuery) {
                            cout << "学生用户名:" << review.studentUsername << endl;
                            cout << "评分:" << review.rating << endl;
                            cout << "评价内容:" << review.comment << endl;
                            cout << "时间戳:" << review.timestamp << endl;
                            cout << "-------------------------" << endl;
                        }
                    }
                    break;
                }
                case 6: {
                    cout << "返回上一级菜单" << endl;
                    break;
                }
                default:
                    cout << "无效的选择,请重新选择!" << endl;
            }
        } while (choice != 6);
    }
    
    // 学生菜单
    void studentMenu() {
        int choice;
        do {
            cout << "学生菜单:" << endl;
            cout << "1. 查看菜品信息" << endl;
            cout << "2. 评价菜品" << endl;
            cout << "3. 返回上一级菜单" << endl;
            cout << "请选择操作: ";
            cin >> choice;
    
            switch (choice) {
                case 1:
                    cout << "查看菜品信息功能暂未实现" << endl;
                    break;
                case 2:
                    cout << "评价菜品功能暂未实现" << endl;
                    break;
                case 3:
                    cout << "返回上一级菜单" << endl;
                    break;
                default:
                    cout << "无效的选择,请重新选择!" << endl;
            }
        } while (choice != 3);
    }
    
    // 运行系统
    void runSystem() {
        int choice;
        do {
            cout << "欢迎使用食堂菜品管理系统" << endl;
            cout << "1. 商户登录" << endl;
            cout << "2. 学生登录" << endl;
            cout << "3. 退出" << endl;
            cout << "请选择操作: ";
            cin >> choice;
    
            switch (choice) {
                case 1:
                    merchantMenu();
                    break;
                case 2:
                    studentMenu();
                    break;
                case 3:
                    cout << "感谢使用,再见!" << endl;
                    // 退出系统前保存信息到文件
                    saveMerchantsToFile();
                    // 保存菜品、学生和评价信息到文件的代码类似
                    break;
                default:
                    cout << "无效的选择,请重新选择!" << endl;
            }
        } while (choice != 3);
    }
    
    int main() {
        // 从文件加载商户信息
        loadMerchantsFromFile();
        // 类似的方式加载菜品、学生和评价信息
        runSystem();
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(12条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月7日
  • 已采纳回答 3月6日
  • 修改了问题 3月6日
  • 修改了问题 3月6日
  • 展开全部