精华内容
下载资源
问答
  • 2021-05-21 05:12:25

    C语言的菜单制作

    C语言的菜单制作 图形化菜单 要完成一个菜单需要考虑以下几个方面: 菜单的定义 保存部分屏幕 恢复期望的屏幕 用户的响应值传递 如何显示菜单 可以利用输出字符画出主界面上的边框和主菜单的背景区域。然后再显示主菜单,最后画出下拉菜单。(仿TC) 利用ASCII中的特殊字符。如218为「,196为—,179为︱,191为﹁,192为﹂,217为」来画出应用程序的边框。 菜单的定义 思考用什么来表示菜单及其子菜单? 示例 system("cls"); /*调用系统的清屏命令*/ stdlib.h textbackground(BLUE);/*将文本背景设置为蓝色*/ conio.h window(1,1,25,80); /*定义活动文本模式窗口*/ conio.h clrscr(); /*清除文本模式窗品*/ textx=3; texty=2; /*光标初始化位置*/ gotoxy(1,2); /*在文本窗口中设置光标*/ printf("%c",218); /*画左上角*/ for(i=0;i<78;i++) printf("%c",196); /*画水平直线*/ printf("%c",191);/*画右上角*/ for(i=3;i<=23;i++) { gotoxy(1,i); printf("%c",179); /*画垂直线*/ gotoxy(80,i); printf("%c",179); } printf("%c",192); /*画左下角*/ for(i=0;i<78;i++) printf("%c",196); printf("%c",217); /*画右下角*/ gotoxy(1,1); textcolor(7); /*设置文本颜色灰色*/ for(i=0;i<80;i++) cprintf("%c",219);/*用符号实现画主菜单的灰色背景区*/ Cprintf与printf 1.cprintf函数用于向当前窗口输出数据,比如你用window函 数定义一个窗口 window(20,10,60,20),那么当你调用cprintf 函数时,cprintf的输出就是相对于20,10, 60,20这个窗 口,当输出的字符串长度大于当前窗口长度时,会在当前窗 口自动换行。 2.cprintf函数可以配合setcolor,setbkcolor等函数使用,而调 用printf函数时会忽略这些 函数执行的结果。 Cprintf和printf 比如执行:setcolor(RED); cprintf("Hello world"); printf("Hello"); 将会在屏幕上显示红色字符串:Hello world 和白色字符串(因为setcolor函数对printf函数不起作用)Hello 在原来的C语言中,cprintf中的c代表console,就是控制 台.(conio.h中的con也是这个意思)到了windows也继承了这 个渊源。 按照设计者本来的意图,printf是标准输出,就是指可以完 全不知道你输出的对象,只是以标准的文本流方式输出。 cprintf是与终端相关的,要用到一些系统平台,硬件设备相关的 特性,所以可以有颜色等很多东西可供选择,同时也削弱了移 植性,所以cprintf是非标准的。 定义菜单 在前面定义了表示菜单的结构体。现在需要定义具体的菜单。菜单项应该放在结构体数组中。如mainmenu[i]就表示水平的第i个菜单(主菜单)mainmenu[i].name为菜单的名字,而mainmenu[i].sub[j]则表示第i个主菜单下的第j个下拉选项。 示例 void Selectitem() { strcpy(ml[0].name,“File”); /*下面的具体选项补空格是为了各菜单黑色背景相同*/ strcpy(ml[0].str[0],“New "); strcpy(ml[0].str[1],“Load "); strcpy(ml[0].str[2],“Save "); strcpy(ml[0].str[3],"Exit "); ml[0].n=6; /*保存菜单的项数*/ ………….. } 画出菜单 定义了每一个具体的菜单项,现在需要把它们通通都显示出来。对于正常菜单来说,显示菜单灰底黑色且首字符为红色的样式,表示菜单未选中

    更多相关内容
  • C语言构建菜单界面

    千次阅读 多人点赞 2021-12-07 12:32:28
    通过C语言编写菜单界面,包括二级菜单与三级菜单,附源码


    前言

    因为目前在做一个智能手表,所以需要一个菜单界面去选择相应功能。想的是先用C语言实现,然后再加到嵌入式的代码里面,以下是我用纯C语言实现菜单界面的过程。

    一、最开始的想法

    while+switch实现
    通过switch语句选择对应菜单,while做死循环,保证我程序不会结束

    这种写法的适用场景:
    比如你现在写了三个函数,这些函数都是顺序执行的,你想在运行时选择对应的函数执行,那这份菜单代码是可以满足需求的。
    相关代码如下:

    #include<stdio.h>
    #include <windows.h>
    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

    展开全文
  • C语言操作界面菜单思考

    万次阅读 多人点赞 2017-06-25 23:51:07
    C语言中,制作菜单操作界面是很常见的,一般都是通过scanf("%d",&i) 与switch(i)搭配来使用,这种方法很基础,我近来发现另外一种比较不错的方法,容错处理也有,可拓展性也高:#define BUFFERSIZE 256 enum login_...
    C语言中,制作菜单操作界面是很常见的,一般都是通过scanf("%d",&i) 与switch(i)搭配来使用,这种方法很基础,我近来发现另外一种比较不错的方法,容错处理也有,可拓展性也高:
    #define BUFFERSIZE 256
    enum login_register_status {_f_main_, _login_id_, _login_passwd_, _udpport_, _register_name_, _register_passwd_};
    static struct
    {
    	enum login_register_status status;
    	int buf_size;                        //从标准输入中获取的字节个数
    	int display;                         //根据需要,可以选择添加这个变量,控制显示设计
    	char *buf;                           //从标准输入获取的字节存放的位置,同buf_size一起使用
    }f_menu;
    
    static void init_f_menu()             //初始化菜单
    {
    	f_menu.status = _f_main_;
    	f_menu.display = 1;
    	f_menu.buf_size = BUFFERSIZE;             //一次从标准输入获取的字节共个数
    	f_menu.buf = malloc(BUFFERSIZE);
    }
    
    
    //通过这个枚举形式,本质上主界面和子界面是同一等级
    static void fun_f_menu()
    {
    	if(_f_main_ == f_menu.status)
    		printf("1.登录  2.注册  3.退出\n");	         //主界面
    	else if(_login_id_ == f_menu.status)
    		printf("请输入ID:\n"); 						//以下5个分级子界面,本质上和主界面同一等级
    	else if(_login_passwd_ == f_menu.status)
    		printf("请输入密码:\n");            
    	else if(_udpport_ == f_menu.status)
    		printf("请输入监听的UDP端口\n");
    	else if(_register_name_ == f_menu.status)
    		printf("请输入姓名:\n");
    	else if(_register_passwd_ == f_menu.status)
    		printf("请输入密码:\n");
    }
    
    static void do_f_menu()
    {
    	int nret;
    	scanf("%s", f_menu.buf);
    	//主界面的操作选项,通过从buf中获取的不同的数值,设置不同的f_menu.status,进行不同的操作
    	if(f_menu.status == _f_main_)
    	{
    		int num;
    		sscanf(f_menu.buf, "%d", &num);
    		if(1 == num)
    			f_menu.status = _login_id_;
    		else if(2 == num)
    		{
    			f_menu.status = _register_name_;
    		}
    		else if(3 == num)
    		{
    			exit(1);
    		}
    		else
    		{
    			printf("输入错误\n");
    			f_menu.status = _f_main_;
    		}
    	}
    	//根据不同status,来选择不同界面操作
    	else if(f_menu.status == _login_id_)     
    	{
    		/*   *** */
    		f_menu.status = ***       //下一个界面
    	}
    	else if(f_menu.status == _login_passwd_)     
    	{
    		/*   *** */
    		f_menu.status = ***       //下一个界面
    	}
    	else if(f_menu.status == _udpport_)      
    	{
    		/*   *** */
    		f_menu.status = ***       //下一个界面
    	}
    	else if(f_menu.status == _register_name_)
    	{
    		/*   *** */
    		f_menu.status = ***       //下一个界面
    	}
    	else if(f_menu.status == _register_passwd_)
    	{
    		/*   *** */
    		f_menu.status = ***       //下一个界面
    	}
    }


    展开全文
  • C语言界面美化源码

    2012-09-24 22:11:34
    C语言界面美化,用于好看一点的界面呀,你们懂的为了赚积分1分
  • 其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计。今天就让小编为大家介绍c语言界面设计。c语言界面设计代码的操作步骤1、首先打开visual studio c++ 6.0。2、点击菜单栏 文件->新建,弹出新建...

    weibo_del.png

    学计算机的人都知道C语言,而这也是非常常用的一种计算机编程语言。其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计。今天就让小编为大家介绍c语言界面设计。

    c语言界面设计代码的操作步骤

    1、首先打开visual studio c++ 6.0。

    2、点击菜单栏 文件->新建,弹出新建对话框。

    3、选择 win32 Applicantion, 工程名字命名为win32gui, 路径设置为自己的,点击确定。

    4、点击确定后,弹出 Win32 Application 对话框,选择一个典型的“Hello World”程序,点击完成。

    5、工程创建好之后,项目文件设置。

    6、编译,运行。

    7、点击代码区域的ResourseView ,然后找到 Dialog

    8、选中Dialog, 右键选择插入,弹出插入资源对话框,如下面第二张图所示,选择Dialog,点击 新建按钮,一个对话框就这样建好了。

    ?png=dcd9ba1d6bd97f192279e9d2@5@1@png_6_0_0_135_651_622_434_892.979_1262.879@0@430@764@532@3e

    c语言界面设计(图片来自网络)

    9、新建好的对话框初始样子。

    10、我们可以选择相应的控件,然后将其拖进对话框,进行界面设计,比如我们先选择静态文本控件,将其拖进对话框,选中对话框上的控件,右键属性,修改控件的标题为“姓名”。

    11、然后从控件中拖一个编辑控件进对话框,并与静态文本控件保持水平。

    12、讲解怎么将对话框与菜单关联起来,就是鼠标单击菜单选项时候,弹出该对话框。

    13、点击资源视图里的Menu->IDC_WIN32GUI,在File下增加一个菜单选项,名字叫做opendialog, ID为ID_MENUITEM32772。

    14、打开win32gui.cpp,在WndProc消息函数增加对话框响应代码,case ID_MENUITEM32772 : DialogBox(hInst, (LPCTSTR)IDD_DIALOG1 , hWnd, NULL);break。

    其中ID_MENUITEM32772 是菜单项的id,IDD_DIALOG1 是对话框id,DialogBox是对话框弹出函数。重新编译运行,点击file下的opendialog,弹出刚刚新建的对话框。一个入门的win32 gui就弄好了。

    注意事项:

    1、新建的对话框要有消息处理函数,不然打开了就无法关闭了。

    2、使用vc6.0创建一个Hello World 的win 32 程序,可以在此基础上修改,添加代码,不用从头写。

    cbdb952b108c23de2fdec6ee05eac1cd.png

    c语言界面设计(图片来自网络)

    关于c语言

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

    C语言与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

    当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。

    以上就是小编为大家介绍的关于c语言界面设计的相关内容。c语言作为计算机的编程语言,完全可以设计相关的程序,对于界面进行设计和优化,你学会了吗?

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX...
  • C语言菜单1

    2022-03-19 13:15:50
    菜单1
  • 使用C语言图形界面进行编程

    千次阅读 2021-05-21 02:10:10
    但是这些寄存器的内容与EGA的内容不同c语言图形界面,它们又加载了另一个 颜色寄存器表的索引,这些颜色寄存器仅存储显示的颜色. 它们的字长为18位,因此可以选择256K种颜色,共256种 颜色寄存器,因此可以一次显示...
  • 在win-tc 下 全屏图形界面,是个不错的用具 呵呵 c语言图形界面菜单 c语言图形界面菜单 c语言图形界面菜单
  • C语言界面设计的经典教程private void cmbDisplayStyle_SelectedIndexChanged(object sender, EventArgs e) { string str = this.cmbDisplayStyle.SelectedItem.ToString(); switch (str) ...
  • short game_arr[HEI][WID];short next_blockarr[4][4];short cur_boxindex, next_boxindex;short cur_block_coord_x, cur_block_coord_y;//制作方块声明的函数... //用来存放游戏界面的数组int var; //用来记录该数...
  • 计算机技术基础课程设计C语言设计报告题目:精美游戏目录选择界面演示学院:化学工程学院专业:制药工程专业班级:050607姓名:徐成指导教师:顾煜新设计日期:2006年12月14日→2007年1月10日一、选题背景:本程序为...
  • C语言简单代码让你的毕设系统界面更加亮眼(中国人不骗中国人) 我在做大一期末设计(订餐管理信息系统)时,看到主菜单输入a\b\c再按回车进入各个功能界面感觉太拉了,于是想出了以下效果: 就是简单的按a左移选...
  • 【单片机C语言】编写一个菜单

    千次阅读 2021-07-19 14:04:51
    本文讲解了如何用C语言实现一个菜单。本菜单的选项切换、确认、返回逻辑与菜单中选项具体要实现的功能分离开,让菜单的代码更加清晰,避免了一般状态机编写中状态机功能切换逻辑与具体功能写在一起造成混乱的情况。 ...
  • 一种漂亮的自绘菜单

    千次阅读 2021-05-20 07:16:12
    下载本文所附源代码以前还是菜鸟时就觉得QQ的菜单做得很漂亮,想着自已的程序如果有那种菜单多好。现在积累了一定的知识,就自已设计了一个类似的菜单控件类。并把它发表出来供大家使用和参考,难免有不足的地方请...
  • #include <stdio.h>void aix1(x);void aix2(y);void aix3(z);void aix4(j);main(){ int a[]={20,5,16,14,12,14,16,18,20,22,24,26,27,30},b[]={5,5,23,27,31,27,23,19,15,11,7,3,1},c[]={0,1,1,1,1,1,1,1,1,1,...
  • 现在很多餐厅看到的菜单上大多是这样设计的:本店主打招牌菜、最佳人气冠军、主厨推荐、必吃美食等。表面看菜单很全,但是顾客看着菜单却不知道点什么好,另外也会增加顾客的点餐时间,对翻台率有影响......这些其实...
  • C语言实现简单菜单

    千次阅读 2021-05-20 00:41:22
    通过本实例简单了解C语言实现菜单的基本原理。实例中没有什么过多深入的东西,仅仅是简单实现基本的菜单。本实例是查询航班时刻表:/************************************************************************//*...
  • C语言课程设计之设计菜单程序

    万次阅读 多人点赞 2019-12-25 13:45:23
    C语言课程设计之设计菜单程序 设计要求: 菜单内容:程序运行后,给出三个菜单选项的内容和输入提示 1 FindNum; 2 Dimand; 3 Goodbye!; Input 1-3: 2.设计要求:使用1-3数字来选择菜单项,其他输入则不起作用。 3....
  • C语言简单的菜单选项

    千次阅读 2021-05-19 15:26:33
    #include char get_choice(void);char get_first(void);int get_int(void);void count(void);int main(){int choice;void count (void);while ((choice =get_choice())!='q'){switch(choice){case 'a' : printf("Buy...
  • 主要面向想做出图形界面C语言初学者 C语言初学者开始都是在黑白控制台上开发一些小程序,实现一些小功能,因为基础的C语言可视化效果比较差,所展示的都是黑白的字符和数字,比较单调乏味。一些大学的计算机类专业...
  • 主要面向想做出图形界面C语言初学者 C语言初学者开始都是在黑白控制台上开发一些小程序,实现一些小功能,因为基础的C语言可视化效果比较差,所展示的都是黑白的字符和数字,比较单调乏味。一些大学的计算机类专业...
  • 计算机专业C语言课程设计实验报告,用Turbo C实现图形菜单界面,题目是《医院专家门诊挂号系统》。 关于编译方法:将报告中的3个源文件复制出来后,用turbo C编译,链接即可,注意运行本程序需要配置显卡,具体方法...
  • 第4章主菜单模块的开发 本章目录 4 1任务说明4 2任务分析4 3任务实施4 4知识点详解4 4 1字符型数据4 4 2多分支switch语句 4 1任务说明 任务描述 编写计算器中主函数 main 的菜单选择 输入不同的字母 进入不同的运算 ...
  • C语言怎么返回主界面

    千次阅读 2021-05-22 14:56:56
    } bool ReturnCaidan() { printf("按q键返回上级菜单\n"); scanf(" %c",&value); if(value=='q') { return true; } else { return false; } } void func1() { printf("function1\n"); } void func2() { printf(...
  • 1、C语言菜单制作,图形化菜单,要完成一个菜单需要考虑以下几个方面: 菜单的定义 保存部分屏幕 恢复期望的屏幕 用户的响应值传递,如何显示菜单,可以利用输出字符画出主界面上的边框和主菜单的背景区域。然后再显示...
  • 一个不到两百行的图形化界面版贪吃蛇小游戏,只是实现了基本核心的蛇吃食物长大玩法,可以继续添加炸弹、菜单栏等内容,适合c语言初学者拿来做课设练手
  • C语言是怎么实现图形界面的?

    千次阅读 2021-05-22 11:09:09
    GTK就可以,一个基于C语言的免费、开源、跨平台图形工具包,可以直接使用C语言调用实现图形界面开发,下面我简单介绍一下这个工具包的安装和使用,这里以Windows平台为例:1.首先,下载GTK安装包,这个可以直接到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,865
精华内容 8,746
关键字:

c语言菜单界面