C语言构建菜单界面 |
您所在的位置:网站首页 › 中缅边境什么时候解封国门的呢 › C语言构建菜单界面 |
C语言构建菜单界面
前言一、最开始的想法二、新的想法总结
前言
因为目前在做一个智能手表,所以需要一个菜单界面去选择相应功能。想的是先用C语言实现,然后再加到嵌入式的代码里面,以下是我用纯C语言实现菜单界面的过程。 一、最开始的想法while+switch实现 通过switch语句选择对应菜单,while做死循环,保证我程序不会结束 这种写法的适用场景: 比如你现在写了三个函数,这些函数都是顺序执行的,你想在运行时选择对应的函数执行,那这份菜单代码是可以满足需求的。 相关代码如下: #include #include int menu_select(void); int menu_out; //定义一个返回上一级菜单 int main() { while(1) { switch(menu_select()) { case 1: //system("cls"); menu_out=1; printf("这是二级菜单1内部\r\n"); /* 在这里面写你自己想执行的功能函数 */ printf("输入0返回上一级菜单:\r\n"); while(menu_out) //只有当键盘输入为0时,才退出当前菜单 scanf("%d",&menu_out); //否则一直循环获取键盘输入 break; case 2: //system("cls"); menu_out=1; printf("这是二级菜单2内部\r\n"); /* 在这里面写你自己想执行的功能函数 */ printf("输入0返回上一级菜单:\r\n"); while(menu_out) scanf("%d",&menu_out); break; case 3: //system("cls"); menu_out=1; printf("这是二级菜单3内部\r\n"); /* 在这里面写你自己想执行的功能函数 */ printf("输入0返回上一级菜单:\r\n"); while(menu_out) scanf("%d",&menu_out); break; default:break; } } return 0; } int menu_select(void) { int select; //system("cls"); printf("输入对应标号进入下一级菜单:\r\n"); printf("1、二级菜单1\r\n"); printf("2、二级菜单2\r\n"); printf("3、二级菜单3\r\n"); scanf("%d",&select); return select; }system(“cls”);这个函数的作用是清屏,为了让大家直观的看到运行结果我把它注释掉了。 加上它会把之前的打印数据清除,也就是只会看到当前菜单的内容。 运行结果如图: 总结一下, 这种写法优点:简单,容易理解,需要选择的功能不多的情况下非常适合使用 缺点:难以拓展,用这个方法写出的三级菜单代码丑到没法看(本人比较菜也是个因数) 二、新的想法通过输入两个参数,想象成一个方阵,我分别输入行数与列数,从而确定执行对应的功能。其实总的思路和上面是一样的,但稍有改变的是,我前一次输入参数采用while语句判断,while判断进入不同的分组也就是二级菜单之后,在输入第二个参数,用swich判断第二个参数,从而实现执行三级菜单。对一些功能封装成了函数,看起来简洁不少,但也可以发现,确实比二级菜单麻烦很多 主函数代码如下: 源码我会在文末给出网盘链接 int main() { while(1) { y=menu1_select(); while(y==1) { x=secmenu_select(y); if(!x) break; switch(x) { case 1: //secmenu_select printf("函数1执行完成\r\n"); menuout(); break; case 2: //secmenu_select printf("函数2执行完成\r\n"); menuout(); break; case 3: //secmenu_select printf("函数3执行完成\r\n"); menuout(); break; default:break; } } while(y==2) { x=secmenu_select(y); if(!x) break; switch(x) { case 1: //secmenu_select printf("函数4执行完成\r\n"); menuout(); break; case 2: //secmenu_select printf("函数5执行完成\r\n"); menuout(); break; case 3: //secmenu_select printf("函数6执行完成\r\n"); menuout(); break; } } while(y==3) { x=secmenu_select(y); if(!x) break; switch(x) { case 1: //secmenu_select printf("函数7执行完成\r\n"); menuout(); break; case 2: //secmenu_select printf("函数8执行完成\r\n"); menuout(); break; case 3: //secmenu_select printf("函数9执行完成\r\n"); menuout(); break; default:break; } } } return 0; }代码运行结果如图: 一样的,我运行时注释掉了system(“cls”);方便大家观看效果 大家使用的时候一定要记得加上 基本上就是这一些,用C语言确实挺不好写多级菜单界面的。用这种简单语句写到三级已经是我的极限了,再写四级菜单那肯定不好看,而且其中的逻辑关系很难掌握。但我查找资料的时候也看到有人用链表的方式写多级菜单,效果挺不错的。那就涉及到了数据结构等更高级的知识了,但目前来说,三级菜单对我已经够用了,所以没有深入,希望大家有兴趣的可以去探索。 对了,后续我会把这份代码在嵌入式里的应用也写一份博客的 如果对大家有帮助的话,麻烦点个赞呗 链接:https://pan.baidu.com/s/1FUGfxS1OfXihbWu3q2_HQQ 提取码:azqn |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |