C语言构建菜单界面 您所在的位置:网站首页 AutoCAD操作界面各个功能菜单与指令的含义 C语言构建菜单界面

C语言构建菜单界面

2023-09-26 17:24| 来源: 网络整理| 查看: 265

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+switch的思路,真的贼麻烦。

总结一下, 这种写法优点:简单,容易理解,需要选择的功能不多的情况下非常适合使用 缺点:难以拓展,用这个方法写出的三级菜单代码丑到没法看(本人比较菜也是个因数)

二、新的想法

通过输入两个参数,想象成一个方阵,我分别输入行数与列数,从而确定执行对应的功能。其实总的思路和上面是一样的,但稍有改变的是,我前一次输入参数采用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 实验室设备网 版权所有