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
相关产品推荐
相关产品推荐

