TC界面课程设计.docx
- 文档编号:6295557
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:25
- 大小:93.91KB
TC界面课程设计.docx
《TC界面课程设计.docx》由会员分享,可在线阅读,更多相关《TC界面课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
TC界面课程设计
简要的程序功能说明和使用说明:
1.程序功能说明:
程序运行时在屏幕上先显示出TC界面,当选择主菜单时,便产生一个下拉式子菜单,可用UP和DOWN键使压在第一个子菜单项上的黑色光条上下移动,当按ESC键时,便收回下拉菜单;当按ALT_X时,便退出。
2.使用说明:
显示出TC界面之后,当按ALT_F时,产生一个下拉菜单。
此时,黑色光条压在第一项上,可用UP和DOWN键使黑色光条上下移动。
当光条在第一项上时,若再按UP键,则光条移到最后一项;当光条在最后一项上时,若再按DOWN键,则光条移到第一项。
当按ESC键时,收起下拉菜单,退回到主菜单下。
当按ALT_R、ALT_C、ALT_P、ALT_O、ALT_D或ALT_B时,所做操作和按ALT_F相同。
程序工作流程图:
详细的设计说明:
先把编程所需要的头文件都包含进去,然后定义各键的扫描码,在程序中就可以用这些大写的键名,以代替扫描码的值,这样就会使程序简明易懂,不会因扫描码写错而导致程序出错。
然后定义变量,在程序中用指针数组menu[]存放顶行主菜单项,menu1[]存放底行主菜单项,用red[]存放顶行主菜单项的各项热键字符(即主菜单各项的第一个字母),red1[]存放底行主菜单项的各项热键字符。
用f[]存放主菜单第一项File的子菜单各项,并分别用r[]、c[]、p[]、o[]、d[]和b[]存放Run、Compile、Project、Options、Debug和Break/watch的主菜单各项。
定义字符数组buff、bufr、bufc、bufp、bufo、bufd和bufb存放原子菜单所占区域的内容,buff1、bufr1、bufc1、bufp1、bufo1、bufd1和bufb1存放一个子菜单项区域内容。
定义一个窗口,用For循环白底黑字依次显示出顶行主菜单各项,并用测菜单项字符个数的办法,使光标回移到该项的第一个字母处,然后用红色字母再重现它。
之后,为了塑造一个更好看的界面,开始画界面的框。
框画完后,用和显示顶行主菜单各项相同的方法显示出底行子菜单各项。
然后再定义一个窗口,显示出蓝底白字的NUM.
此时,检查是否有按键按下,如果有的话,调用取键扫描码函数(此函数是由get_key函数实现的,用来返回用户按键的扫描码)。
当有键按下时,由get_key函数取回按键的扫描码,然后进行判断,当按ALT_X键时,则退出,若按ALT_F键时,则执行弹出子菜单的操作。
首先要将子菜单区域内容保存到buff缓冲区内,当子菜单项消失时,以便用它来恢复原区域的内容(即所谓的收起下拉菜单)。
然后在设置一个子菜单的白色窗口,调用作框函数box(),在窗口区域内画一个矩形框,再利用For循环在所画框内输出File的子菜单各项,并等待按键。
当按键为ALT_X时,则退出;当按键为ENTER时,去做相应的处理,在这里,没有写出具体操作;当按键为ESC时,则收起相应的下拉菜单,当是UP或DOWN键时,则产生黑色光条的上下移动。
其余六项和设置File菜单的方法相同。
程序设计中的心得与体会:
放寒假之前,听说要在寒假做一个课程设计,当时第一感觉就是好难啊!
怎么可能完成呢?
要知道那对于我们来说简直就是天方夜谭。
后来,没办法,这毕竟是个任务,虽然对于当时来说,这个任务很艰巨。
我们无论如何也要完成。
于是,我从图书馆里借了几本书。
在寒假里,没事的时候,就看一下那几本书,发现从里面学到了好多东西,了解了很多知识,也掌握了很多函数的用法,顿时增长了见识,开拓了眼界。
虽然在寒假里看了一些有关课设的东西,但刚开始,真正开始编程序的时候,还是很难,有点摸不着头绪。
不过,后来在看了一些参考书之后,总算有了点眉目。
可是有的时候,编译链接都很成功,就是程序的运行结果始终和你想要的有一定的差距,你也找不到原因,这是很难的。
有时候想破头皮都想不出到底为什么,这是最头疼的。
而当你有一点点收获时,你就会高兴地手舞足蹈,兴奋之情溢于言表。
因为我通过自己的努力,克服了自己所面对的困难,能够独立解决问题了,说明我不再是小孩子了,我已经长大了!
看着程序一行行地被编出来,心里甭提多高兴了!
同时,我也明白了坚持就是胜利的道理,一切事情只有坚持不懈,才能取得最后的胜利。
如果干一件事不能善始善终的话,就什么事都干不成。
所以,无论干什么,无论多么困难,只要对自己有信心,坚持不懈,都能够获得最后的胜利。
附录:
程序清单:
#include
#include
#include
#include
#include
#defineKey_DOWN80
#defineKey_UP72
#defineKey_ESC1
#defineKey_ALT_F33
#defineKey_ALT_X45
#defineKey_ENTER28
#defineKey_ALT_E18
#defineKey_ALT_R19
#defineKey_ALT_C46
#defineKey_ALT_P25
#defineKey_ALT_O24
#defineKey_ALT_D32
#defineKey_ALT_B48
intget_key();
voidbox();
main()
{intx,y,i,l,key;
char*menu[]={"File","Edit","Run","Compile","Project","Options","Debug","Break/watch"};
char*menu1[]={"F1-Help","F5-Zoom","F6-Switch","F7-Trace","F8-Step","F9-Make","F10-Menu",};
char*red[]={"F","E","R","C","P","O","D","B"};
char*red1[]={"F1","F5","F6","F7","F8","F9","F10"};
char*f[]={"LoadF3",
"PickAlt-F3",
"New",
"SaveF2",
"Writeto",
"Directory",
"Changedir",
"OSshell",
"QuitAlt-X"};
char*redf[]={"L","P","N","S","W","D","C","O","Q"};
char*r[]={"RunCtrl-F9",
"ProgramresetCtrl-F2",
"GotocursorF4",
"TraceintoF7",
"StepoverF8",
"UserscreenAlt-F5"};
char*redr[]={"R","P","G","T","S","U"};
char*c[]={"CompiletoOBJD:
NONAME.OBJ",
"MakeEXEfileD:
NONAME.EXE",
"LinkEXEfile",
"Buildall",
"PrimaryCfile:
",
"Getinfo"};
char*redc[]={"C","M","L","B","P","G"};
char*p[]={"Projectname",
"BreakmakeonErrors",
"AutodependenciesOff",
"Clearproject",
"Removemessages"};
char*redp[]={"P","B","A","C","R"};
char*o[]={"Compiler",
"Linker",
"Environment",
"Directories",
"Arguments",
"Saveoptions",
"Retrieveoptions"};
char*redo[]={"C","L","E","D","A","S","R"};
char*d[]={"EvaluateCtrl-F4",
"CallstackCtrl-F3",
"Findfunction",
"Refreshdisplay",
"DisplayswappingSmart",
"SourcedebuggingOn"};
char*redd[]={"E","C","F","R","D","S"};
char*b[]={"AddwatchCtrl-F7",
"Deletewatch",
"Editwatch",
"Removeallwatches",
"",
"TogglebreakpointCtrl-F8",
"Clearallbreakpoints",
"Viewnextbreakpoint"};
char*redb[]={"A","D","E","R","","T","C","V"};
charbuff[15*17*2],buff1[17*2];/*定义缓冲区范围*/
charbufr[10*27*2],bufr1[27*2];
charbufc[10*34*2],bufc1[34*2];
charbufp[9*36*2],bufp1[36*2];
charbufo[11*21*2],bufo1[21*2];
charbufd[10*31*2],bufd1[31*2];
charbufb[12*30*2],bufb1[30*2];
textbackground
(1);/*设置背景色为蓝色*/
clrscr();/*清屏*/
window(1,1,80,1);/*定义一个窗口*/
textbackground(15);/*设置窗口内背景色为白色*/
textcolor(0);/*设置窗口内字符颜色为黑色*/
clrscr();/*清屏*/
window(1,1,80,2);
for(i=0,l=0;i<=7;i++)
{x=wherex();/*找到当前光标的位置*/
y=wherey();
cprintf("%s",menu[i]);/*输出各菜单*/
l=strlen(menu[i]);/*求出各菜单字符串的长度*/
gotoxy(x,y);/*把光标移到(x,y)处*/
textcolor(RED);/*设置字符颜色为红色*/
cprintf("%s",red[i]);
x=x+l+3;
gotoxy(x,y);
textcolor(BLACK);
}
window(1,2,80,25);
textbackground
(1);
textcolor(15);
clrscr();
gotoxy(1,1);/*画框*/
putch(0xd5);
for(i=2;i<37;i++)
{putch(0xcd);}
cprintf("%s",menu[1]);
for(i=42;i<79;i++)
{putch(0xcd);}
putch(0xb8);
for(i=2;i<21;i++)
{gotoxy(1,i);
putch(0xb3);
gotoxy(80,i);
putch(0xb3);
}
gotoxy(1,21);
putch(0xc3);
for(i=2;i<36;i++)
{putch(0xc4);}
cprintf("Message");
for(i=44;i<79;i++)
{putch(0xc4);}
putch(0xb4);
for(i=22;i<24;i++)
{gotoxy(1,i);
putch(0xb3);
gotoxy(80,i);
putch(0xb3);
}
gotoxy(1,23);
putch(0xc0);
for(i=2;i<80;i++)
{putch(0xc4);}
putch(0xd9);
gotoxy(8,2);
cprintf("Line1Col1InsertIndentTabFillUnindent*D:
NONAME.C");
window(1,25,80,25);
textbackground(15);
textcolor(0);
clrscr();
window(1,25,80,25);/*定义一个窗口*/
for(i=0,l=0;i<=6;i++)
{x=wherex();/*得到当前光标的位置*/
y=wherey();
cprintf("%s",menu1[i]);/*显示各菜单项*/
l=strlen(menu1[i]);/*求出各菜单项字符串的长度*/
gotoxy(x,y);/*把光标移到(x,y)处*/
textcolor(RED);/*设置字符显示的颜色为红色*/
cprintf("%s",red1[i]);
x=x+l+2;
gotoxy(x,y);
textcolor(0);/*为显示下一字符*/
}
window(69,25,73,25);
textbackground
(1);
textcolor(15);
clrscr();
gotoxy(2,1);
cprintf("NUM");
window(1,1,80,25);
gotoxy(2,4);
while
(1)
{key=0;
while(bioskey
(1)==0);/*检测是否有按键,有按键则继续*/
key=get_key();/*调用取键函数*/
if(key==Key_ALT_X)
exit(0);
if(key==Key_ALT_F)
{textbackground(0);/*在黑色背景下显示白色的“File”*/
textcolor(15);
gotoxy(4,1);
cprintf("%s",menu[0]);
gettext(3,2,19,16,buff);/*获取文本窗口中的文本信息*/
window(3,2,19,12);
textbackground(15);
textcolor(0);
clrscr();
window(3,2,19,16);
box(1,1,11,17);/*调用画框函数*/
for(i=2;i<=10;i++)/*用for循环输出File的子菜单*/
{gotoxy(3,i);
cprintf("%s",f[i-2]);
gotoxy(3,i);
textcolor(RED);
cprintf("%s",redf[i-2]);
textcolor(0);
}
gettext(2,2,18,3,buff1);/*将矩形区域内的信息存入buff1*/
textbackground(0);
textcolor(15);
gotoxy(3,2);
cprintf("%s",f[0]);
y=2;
key=get_key();
while(key!
=Key_ALT_X&&key!
=Key_ENTER&&key!
=Key_ESC)
{if(key==Key_UP||key==Key_DOWN)
{puttext(2,y,18,y+1,buff1);
/*用buff1刷新该区域,使信息重现*/
if(key==Key_UP)/*按上下键使光标上下移动*/
y=y==2?
10:
y-1;
elsey=y==10?
2:
y+1;
gettext(2,y,18,y+1,buff1);
textbackground(0);
textcolor(15);
gotoxy(3,y);
cprintf("%s",f[y-2]);
}
key=get_key();
}
if(key==Key_ALT_X)
exit(0);
elseif(key==Key_ENTER)
{switch(y-1)
{case1:
/*LoadF3*/break;
case2:
/*PickAlt-F3*/break;
case3:
/*New*/break;
case4:
/*SaveF2*/break;
case5:
/*Writeto*/break;
case6:
/*Directory*/break;
case7:
/*Changedir*/break;
case8:
/*OSshell*/break;
case9:
exit(0);
default:
break;
}
}
else
{window(1,1,80,2);
puttext(3,2,19,16,buff);/*用buff刷新该区域,使信息重现*/
textbackground(15);/*在白色背景下显示黑色的“File”*/
textcolor(0);
gotoxy(4,1);
cprintf("%s",menu[0]);
gotoxy(4,1);
textcolor(RED);/*使F呈现红色*/
cprintf("%c",'F');
window(1,1,80,25);
gotoxy(2,4);
/*定义一个文本窗口,使光标在(2,4)处闪烁*/
}
}
elseif(key==Key_ALT_R)
{textbackground(0);/*在黑色背景下显示白色的“Run”*/
textcolor(15);
gotoxy(18,1);
cprintf("%s",menu[2]);
gettext(17,2,43,11,bufr);/*获取文本窗口中的文本信息*/
window(17,2,43,9);
textbackground(15);
textcolor(0);
clrscr();
window(17,2,43,11);
box(1,1,8,27);/*调用画框函数*/
for(i=2;i<=7;i++)/*用for循环输出Run的子菜单*/
{gotoxy(3,i);
cprintf("%s",r[i-2]);
gotoxy(3,i);
textcolor(RED);
cprintf("%s",redr[i-2]);
textcolor(0);
}
gettext(16,2,42,3,bufr1);/*将矩形区域内的信息存入bufr1*/
textbackground(0);
textcolor(15);
gotoxy(3,2);
cprintf("%s",r[0]);
y=2;
key=get_key();
while(key!
=Key_ESC&&key!
=Key_ALT_X)
{if(key==Key_UP||key==Key_DOWN)
{puttext(16,y,42,y+1,bufr1);/*用bufr1刷新该区域,使信息重现*/
if(key==Key_UP)/*按上下键使光标上下移动*/
y=y==2?
7:
y-1;
elsey=y==7?
2:
y+1;
gettext(16,y,42,y+1,bufr1);
textbackground(0);
textcolor(15);
gotoxy(3,y);
cprintf("%s",r[y-2]);
}
key=get_key();
}
if(key==Key_ALT_X)
exit(0);
else
{window(1,1,80,2);
puttext(17,2,43,11,bufr);/*用bufr刷新该区域,使信息重现*/
textbackground(15);/*在白色背景下显示黑色的“Run”*/
textcolor(0);
gotoxy(18,1);
cprintf("%s",menu[2]);
gotoxy(18,1);
textcolor(RED);/*使R呈现红色*/
cprintf("%c",'R');
window(1,1,80,25);
gotoxy(2,4);
/*定义一个文本窗口,使光标在(2,4)处闪烁*/
}
}
elseif(key==Key_ALT_C)
{textbackground(0);/*在黑色背景下显示白色的“Compile”*/
textcolor(15);
gotoxy(24,1);
cprintf("%s",menu[3]);
gettext(23,2,56,11,bufc);/*获取文本窗口中的文本信息*/
window(23,2,56,9);
textbackground(15);
textcolor(0);
clrscr();
window(23,2,56,11);
box(1,1,8,34);/*调用画框函数*/
for(i=2;i<=7;i++)/*用for循环输出Compile的子菜单*/
{gotoxy(3,i);
cprintf("%s",c[i-2]);
gotoxy(3,i);
textcolor(RED);
cprintf("%s",redc[i-2]);
textcolor(0);
}
gettext(22,2,54,3,bufc1);/*将矩形区域内的信息存入bufc1*/
textbackground(0);
textcolor(15);
gotoxy(3,2);
cprintf("%s",c[0]);
y=2;
key=get_key();
while(key!
=Key_ALT_X&&key!
=Key_ESC)
{if(key==Key_UP||key==Key_DOWN)
{puttext(22,y,54,y+1,bufc1);
/*用bufc1刷新该区域,使信息重现*/
if(key==Key_UP)/*按上下键使光标上下移动*/
y=y==2?
7:
y-1;
elsey=y==7?
2:
y+1;
gettext(22,y,54,y+1,bufc1);
textbackground(0);
textcolor(15);
gotoxy(3,y);
cprintf("%s",c[y-2]);
}
key=get_key();
}
if(key==Key_ALT_X)
exit(0);
else
{window(1,1,80,2);
puttext(23,2,56,11,bufc);/*用b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TC 界面 课程设计