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,具体讲解在代码注释中,比较好讲解。
如果有别的想法,欢迎评论区讨论,我也知道我这个做法有点笨了