C语言毕业课程设计报告范例Word文件下载.docx
- 文档编号:20229368
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:25
- 大小:21.71KB
C语言毕业课程设计报告范例Word文件下载.docx
《C语言毕业课程设计报告范例Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言毕业课程设计报告范例Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
显示选中菜单
DrawFrame(intl,intu,intr,intd,inttcolor,intbcolor)
画边框函数
DrawMl(intn)
显示具体下拉选择项目
MoveMl(intn,intx)
菜单选项的控制,n决定水平项,x决定下拉的选项
Enter(intm,intn)
菜单选项的具体功能
run()
按键操作过程
Start()
开始打字
User()
输入名字,模式,字数
Bgcolor()
背景颜色
Ccolor()
字体颜色
Time()
设定时间
Recore()
用户记录
Help()
系统帮助
About()
系统信息
Exit()
退出系统
三.设计分析
程序主要以函数为模块,一个函数实现一个功能或一个设置项,为了阅读的方便,函数里又包含了自定义函数,最后主函数调用自定义的函数,整个过程清晰,各个函数独立性强。
算法方面主要是产生随机字符这块要研究一下,其他的大概也没什么好研究的,基本都是输入输出操作。
随机字符的产生我利用了数组的下标和random()函数,数组先给赋值了,三个数组就三种情况,达到了设计的要求。
还有就是倒计时的实现,因为C语言不能同时执行两条语句,故在打字的过程中和倒计时不能同时实现,为了解决这个问题,我用了kbhit()如果键盘没输入就退出这次输入循环,让倒计时继续执行,当有键盘的输入这次的输入循环也就结束,也是让倒计时继续执行,问题解决。
四.程序存在的问题
由于本人水平有限,本程序存在一些问题,主要有以下几个方面:
1.在打字过程中,当打错了字时不能删掉重新输入,只能继续打下去,因为这个过程用的是循环输入,当每入一字就结束了这个字的输入不能修改。
2.部分界面的输入没考虑用户各种输入的情况,当用户非正常输入时,系统可能会中止。
3.没有考虑当用户选择背景字体颜色都一样时的情况(这种情况导致界面没有东西显示,主要就是背景和字体用了一样的颜色),只是用提示语句提醒用户。
五.心得体会
经过两周的课程设计,对C语言有了更深刻的了解,学到了很多以前没了解过的函数和算法。
一直以来就认为C语言就是学编程的基础但用不上场,现在觉得它的确也能用上场了,可以编写软件。
虽然只有短短的两周时间,却让我感悟很多。
只要肯用心去做每件事情,最终的结果都会让人满意的。
六.程序源代码
#include<
bios.);
*菜单选项的具体功能*
voidDrawFrame(intleft,intup,intright,intdown,inttextcolor,intbackgroundcolor);
*画边框*
voidDrawSelectitem();
*显示主菜单*
voidBlackText(intx,inty,char*z);
*选中菜单*
voidMoveMl(intn,intx);
*菜单选项的控制*
voidrun();
*具体操作*
voidStart();
charchoosec[1];
intx,y;
intfirst,second;
voidUser();
charuname[15]="
quan"
;
intzz=300;
voidBgcolor();
charbgcol[1]={'
1'
};
voidCcolor();
charccol[1]={'
7'
voidTime();
intm=60;
voidRecore();
FILE*fp;
char;
}ml[3];
*选项数*
intkey;
*按键变量*
inti,j;
charsave[4096];
*保存文本区域空间*
charc[4096];
*清屏专用空间*
***主函数****
main()
{
welcome();
menu();
run();
}
voidwelcome()
{
textbackground(BLUE);
textcolor(7);
window();
clrscr();
gotoxy(20,8);
printf("
\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"
);
gotoxy(20,9);
gotoxy(20,10);
\1\1\1\1\1\1"
gotoxy(20,11);
gotoxy(20,12);
\1\1\1WELCOMETOMYTYPESYSTEM!
\1\1\1"
gotoxy(20,13);
\1\1\1Copyright(c)2004byQuan\1\1\1"
gotoxy(20,14);
gotoxy(20,15);
gotoxy(20,16);
gotoxy(20,17);
gotoxy(20,18);
gotoxy(3,19);
Pressanykeytocontine......"
getch();
*画window的界面*
voidmenu()
textbackground(BLUE);
window();
clrscr();
gotoxy(1,2);
printf("
%c"
218);
*画左上角*
for(i=0;
i<
78;
i++)
196);
*画水平直线*
191);
*画右上角*
for(i=3;
=23;
{
gotoxy(1,i);
179);
*画垂直线*
gotoxy(80,i);
}
192);
*画左下角*
217);
*画右下角*
gotoxy(1,1);
textcolor(7);
80;
cprintf("
219);
*用符号实现画主菜单的灰色背景区*
Selectitem();
*调用选项函数*
DrawSelectitem();
*画选项*
gettext(c);
*保存当前文本区域*
gotoxy(3,5);
namerightrate"
if((fp=fopen("
recore.txt"
"
r"
))==NULL)
gotoxy(3,6);
cannotopenfile"
return;
fread(&
=2;
*保存菜单的项数*
strcpy(ml[1].name,"
setting(F2)"
strcpy(ml[1].str[0],"
User"
strcpy(ml[1].str[1],"
Bgcolor"
strcpy(ml[1].str[2],"
Charcolor"
strcpy(ml[1].str[3],"
Time"
strcpy(ml[1].str[4],"
Recore"
ml[1].n=5;
strcpy(ml[2].name,"
Help(F3)"
*系统帮助*
strcpy(ml[2].str[0],"
Helptopic"
strcpy(ml[2].str[1],"
About"
ml[2].n=2;
*显示主单名*
voidDrawSelectitem()
3;
RedText(i,1,ml[i].name);
*显示主菜单名,且首字母为红色*
*正常显示菜单*
RedText(intx,inty,char*z)
textbackground(7);
*设置背景颜色为浅灰色*
gotoxy(3+x*20,y);
for(j=0;
z[j];
j++)
if(j==0)
textcolor(RED);
*第一个字母显示红色*
else
textcolor(BLACK);
z[j]);
*输出菜单名*
*显示选中菜单*
voidBlackText(intx,inty,char*z)
textbackground(14);
textcolor(15);
gotoxy(3+20*x,y);
*定位坐标*
cputs(z);
*输出菜单名字符串*
*画边框函数*
voidDrawFrame(intl,intu,intr,intd,inttcolor,intbcolor)
textbackground(bcolor);
*背景颜色*
textcolor(bcolor);
*文本颜色*
for(i=l;
=r;
i++)*输出背景区域*
for(j=u;
j<
=d;
gotoxy(i,j);
printf("
*输出背景字符*
textcolor(tcolor);
*边框颜色*
for(i=u+1;
d;
i++)*在背景区域内输出边框线*
gotoxy(l,i);
*垂直线*
gotoxy(r,i);
for(i=l+1;
r;
gotoxy(i,u);
*水平线*
gotoxy(i,d);
gotoxy(l,u);
*左上角*
gotoxy(r,u);
*右上角*
gotoxy(l,d);
*左下角*
gotoxy(r,d);
*右下角*
*gettext(l+1,u+1,r-1,d-1,save1);
**保存边框内区域*
*显示具体下拉选择项目*
voidDrawMl(intn)
gettext(save);
*保存被掩盖的地方*
BlackText(n,1,ml[n].name);
*反选显示主菜单*
DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);
*下拉菜单的边框*
3+ml[n].n;
i++)*输出所选菜单各选项*
if(i==3)
BlackText(n,i,ml[n].str[i-3]);
*默认选中第一项*
RedText(n,i,ml[n].str[i-3]);
*其余各项首字符红色显示*
gotoxy(79,1);
MoveMl(n,3);
*菜单选项的控制*
*菜单选项的控制,n决定水平项,x决定下拉的选项*
voidMoveMl(intn,intx)
intflag=1;
while(flag)
key=bioskey(0);
*接收按键*
switch(key)
caseESC:
*退出循环*
puttext(save);
*恢复打开菜单前的样子*
flag=0;
break;
caseLEFT:
*移到左边的选项*
if(n==0)*往左移动越界的话移到最后一个选项*
DrawMl
(2);
else
DrawMl(n-1);
caseRIGHT:
*移动右边的选项*
*恢复打开菜单前的样子*
if(n==2)*往右移动越界的话移到第一个选项*
DrawMl(0);
DrawMl(n+1);
caseUP:
*具体选项往上移动*
RedText(n,x,ml[n].str[x-3]);
*输出红色字体*
if(x==3)*移到最上面再按上键,就移到最下面*
x=3+ml[n].n-1;
x--;
*移动到新的要显示的内容*
BlackText(n,x,ml[n].str[x-3]);
*输出黑色字体*
flag=1;
caseDOWN:
*具体选项往下移动*
if(x==(3+ml[n].n-1))*移动到最底下再按下键就移到最上面*
x=3;
x++;
caseENTER:
Enter(n,x-3);
}
voidEnter(intm,intn)
switch(m)
case0:
switch(n)*选择了Start菜单选项*
{
case0:
Start();
break;
*开始打字测试*
case1:
Exit();
*结束*
}break;
*退出系统*
case1:
switch(n)*选择了Setting菜单选项*
User();
*定义用户*
Bgcolor();
*改变背景颜色*
case2:
Ccolor();
*改变字体*
case3:
Time();
*改变测试时间*
case4:
Recore();
*显示所有用户记录*
case2:
switch(n)*选择了帮助菜单选项*
Help();
About();
*按键操作过程*
voidrun()
while
(1)
gotoxy(texty,textx);
*接收按键*
caseF1:
DrawMl(0);
*file*
caseF2:
DrawMl
(1);
*显示下拉菜单setting*
caseF3:
DrawMl
(2);
*显示下拉菜单help*
*开始打字*
voidStart()
{intj,i,total=0;
floatright=0.0,wrong=0.0;
charch1[]="
abcdefghijklmnopqrstuvwxyz"
charch2[]="
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
charch3[]="
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!
@#$%^&
*()_+`.<
>
-=[]?
{}\|;
'
:
"
chargch[300],out[300];
charkey;
charrename[10];
floatrerate;
clock_tbegin,end;
textbackground(bgcol[0]);
textcolor(ccol[0]);
randomize();
switch(choosec[0])
case'
{for(j=0;
zz;
i=random(26);
if(j%77==0)
\n\n\263"
ch1[i]);
out[j]=ch1[i];
}break;
2'
i=random(52);
ch2[i]);
out[j]=ch2[i];
3'
i=random(94);
ch3[i]);
out[j]=ch3[i];
default:
gotoxy(2,4);
begin=clock();
first=time(NULL);
j=0;
do{
x=wherex();
y=wherey();
second=time(NULL);
if(difftime(second,first)==1)
gotoxy(12,19);
%3d"
m);
m--;
first=second;
gotoxy(3,19);
Resttime:
if(total!
=0)
{gotoxy(18,19);
Rightrate:
%4.4f%%\t\tpressentertoexit"
right(right+wrong));
gotoxy(3,20);
Yourname:
gotoxy(12,20);
%s"
uname);
gotoxy(27,20);
right:
%3.0fwrong:
%3.0ftotal:
%3d"
right,wrong,total);
gotoxy(x,y);
if(kbhit()!
gch[j]=getch();
putchar(gch[j]);
if((j+1)%77==0)
line:
if(gch[j]=='
\015'
{textbackground(RED);
textcolor(GREEN);
gotoxy(1,3);
gotoxy(1,4);
gotoxy(1,5);
gotoxy(1,6);
\1\1\1\1\1\1\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 毕业 课程设计 报告 范例