You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ SQLite程序主菜单到子菜单的跳转实现咨询

解决C++ SQLite程序主菜单到添加子菜单的跳转问题

核心思路

要实现菜单跳转,本质是在主菜单的选项分支里调用子菜单函数,同时给子菜单添加输入循环和返回主菜单的逻辑。

具体实现步骤

  • 完善addMenu函数的交互逻辑
    给addMenu加上输入循环,处理用户的子菜单选择,比如添加返回主菜单的选项(输入0返回),同时处理输入合法性:

    #include <iostream>
    #include <limits>
    
    void addMenu() {
        int choice;
        do {
            // 打印子菜单界面
            std::cout << "\n=== 添加子菜单 ===" << std::endl;
            std::cout << "1. 添加用户数据" << std::endl;
            std::cout << "2. 添加业务记录" << std::endl;
            std::cout << "0. 返回主菜单" << std::endl;
            std::cout << "请输入选择: ";
            
            // 处理非法输入(比如非数字)
            if (!(std::cin >> choice)) {
                std::cin.clear(); // 清除输入错误状态
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 丢弃无效输入内容
                std::cout << "输入无效,请输入数字!" << std::endl;
                continue;
            }
    
            // 处理子菜单选项逻辑
            switch (choice) {
                case 1:
                    // 这里写入你的SQLite添加用户逻辑
                    std::cout << "执行添加用户操作..." << std::endl;
                    break;
                case 2:
                    // 这里写入你的SQLite添加记录逻辑
                    std::cout << "执行添加记录操作..." << std::endl;
                    break;
                case 0:
                    std::cout << "返回主菜单..." << std::endl;
                    break;
                default:
                    std::cout << "无效选项,请重新输入!" << std::endl;
            }
        } while (choice != 0); // 输入0时退出子菜单,回到主菜单
    }
    
  • 主菜单中触发子菜单跳转
    在主菜单的输入处理分支里,当用户选择1时直接调用addMenu()即可:

    void mainMenu() {
        int choice;
        do {
            // 打印主菜单界面
            std::cout << "\n=== 主菜单 ===" << std::endl;
            std::cout << "1. 进入添加子菜单" << std::endl;
            std::cout << "2. 查询数据" << std::endl;
            std::cout << "0. 退出程序" << std::endl;
            std::cout << "请输入选择: ";
            
            // 同样处理非法输入
            if (!(std::cin >> choice)) {
                std::cin.clear();
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                std::cout << "输入无效,请输入数字!" << std::endl;
                continue;
            }
    
            // 主菜单选项分支
            switch (choice) {
                case 1:
                    addMenu(); // 调用子菜单函数,完成跳转
                    break;
                case 2:
                    std::cout << "执行查询操作..." << std::endl;
                    break;
                case 0:
                    std::cout << "退出程序..." << std::endl;
                    break;
                default:
                    std::cout << "无效选项,请重新输入!" << std::endl;
            }
        } while (choice != 0);
    }
    
    // 主函数示例
    int main() {
        mainMenu();
        return 0;
    }
    

关键注意点

  • 必须添加输入合法性检查,否则用户输入非数字会导致程序进入死循环。
  • 子菜单的循环条件设为choice != 0,确保用户选0时能退出子菜单,回到主菜单的循环流程中。
  • 后续新增其他子菜单时,都可以复用这个模式:主菜单分支调用子菜单函数,子菜单内部做独立的输入循环处理。

内容的提问来源于stack exchange,提问作者Horackle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:05:02