C语言简单的代码让你的期末设计系统界面更加亮眼(中国人不骗中国人)

C语言简单代码让你的毕设系统界面更加亮眼(中国人不骗中国人)

我在做大一期末设计(订餐管理信息系统)时,看到主菜单输入a\b\c再按回车进入各个功能界面感觉太拉了,于是想出了以下效果:
在这里插入图片描述在这里插入图片描述

就是简单的按a左移选中框,按d右移选中框,按空格进入的效果,但比之前输入字母选择更加美观。

具体实现思路如下:

先附上完整代码

	int n = 0;
	int i = 1;
	printf("\033[32m按任意键进入系统...");
	while (1)
	{
		if (kbhit())
		{
			i = getch();
			if (i == 'd')
			{
				n++;
			}
			else if (i == 'a')
			{
				n--;
			}
			else if (i == 'g')
			{
				if (n == 1)
				{
					enter(&count);
				}
				else if (n == 2)
				{
					display(count);
				}
				...后面还有5个n的情况没写完

			}
			if (n == 8)
			{
				n--;
			}
			if (n == 0)
			{
				n++;
			}
		}
		if (n == 1)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m|录入| 显示  删除  保存  修改  查询  退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 2)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入 |显示| 删除  保存  修改  查询  退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 3)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入  显示 |删除| 保存  修改  查询  退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 4)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入  显示  删除 |保存| 修改  查询  退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 5)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入  显示  删除  保存 |修改| 查询  退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 6)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入  显示  删除  保存  修改 |查询| 退出\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
		else if (n == 7)
		{
			printf("\033[32m --订单信息管理系统--\n");
			printf("\n");
			printf("Hi\n");
			printf("\n");
			printf("-功能列表-\n");
			printf("\n");
			printf("\033[32m 录入  显示  删除  保存  修改  查询 |退出|\n");
			printf("--------------------------------------------------\n");
			printf("                                     version:1.0");
			system("cls");
		}
	}

框的移动我想的代码实现思路比较笨,不知道还有没有更好的方法
就是将每种框移动的情况界面完整的打印出来,然后在这几种界面中切换。

然后如何切换呢?

	int n = 0;/当n=1的时候,切换到1的界面上去,当n=2的时候切换到2的界面上去
	int i = 1;/给i一个初始值,给任意的都行无所谓
	printf("\033[32m按任意键进入系统...");
	while (1)/整个代码必须放入一个while语句,才能保证不断执行
	{
		if (kbhit())/如果检测到你有输入就进入if语句,否则继续执行后面的代码
		{
			i = getch();/获取你输入的字符
			if (i == 'd')/如果你输入d,那么n+1
			{
				n++;
			}
			else if (i == 'a')如果你输入a,那么n-1
			{
				n--;
			}
		}
		if (n == 8)/这条代码是防止n变成0或者8那种超出了我们预先设定好菜单的值
			{
				n--;/如果当n=7的时候你又按了d,n变成8又会立刻减一,不会超出范围
			}
			if (n == 0)
			{
				n++;如上
			}
			else if (i == 'g')/按g确认进入该选项,主要是判断n是等于几就进入哪一个选项对应的功能
			{
				if (n == 1)
				{
					enter(&count);
				}
				else if (n == 2)
				{
					display(count);
				}
				else...后面就不写了
	}

在这里我们将每种情况的界面都设一个标记,分别为1,2,3,4,5,6,7.
然后关键来了:我们需要用到kbhit函数,简单来说这个函数可以无阻塞式监听键盘,他会一直检测缓冲区,如果你有输入那么返回1,无输入就返回0。
这样程序就不会像getche那样停下来等待你输入,而是只要你不输入他就继续执行后面的代码,输入就执行你 if 语句里的代码。

ok,具体讲解在代码注释中,比较好讲解。

如果有别的想法,欢迎评论区讨论,我也知道我这个做法有点笨了

  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值