C语言毕业课程设计报告范例文档格式.docx
《C语言毕业课程设计报告范例文档格式.docx》由会员分享,可在线阅读,更多相关《C语言毕业课程设计报告范例文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
sleep()
randomize()
clock()
time(NULL)
getch()
putchar()
sound()
delay()
nosound()
kbhit()
random()
difftime(int,int)
exit()
cputs()
wherex()
menu()
画window的窗口界面
Selectitem()
定义菜单
DrawSelectitem()
显示主单名
RedText(intx,inty,char*z)
正常显示菜单
BlackText(intx,inty,char*z)
显示选中菜单
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(b