运动会分数统计系统.docx
- 文档编号:9316621
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:24
- 大小:84.57KB
运动会分数统计系统.docx
《运动会分数统计系统.docx》由会员分享,可在线阅读,更多相关《运动会分数统计系统.docx(24页珍藏版)》请在冰豆网上搜索。
运动会分数统计系统
应用技术学院
课程设计报告
课程名称C语言课程设计
课题名称运动会分数统计系统
专业机械设计制造及其自动化
班级0781
学号************
姓名贺友来
指导教师王颖
2008年7月8日
湖南工程学院
课程设计任务书
课程名称C语言课程设计
课题运动会分数统计系统
专业班级电气工程及其自动化
学生姓名贺友来
学号************
指导老师王颖
审批
任务书下达日期:
2008年6月20日
任务完成日期:
2008年7月8日
C语言程序课程设计任务书
一课程设计性质与目的:
C语言程序设计是一门实践性很强的课程。
C程序课程设计是学习C语言
程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所
学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程
序、分析程序及上机操作、调试程序的能力,让学生加深理解书上所学的知识
,提高动手操作能力及分析问题和解决问题的能力。
二课程设计包含的知识点:
1.掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语
句。
2.掌握数组的基本概念。
掌握一维数组与二维数组的使用,掌握字符数组与
字符串的关系。
3.熟练掌握指针、地址、指针类型的概念及其使用。
掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系
4.掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。
5.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。
结构体与指针、函数的关系。
三课程设计的要求:
1.学生从以下八个题目中任意选择并完成一个题目。
要求每个学生能够独立思考
并按时完成本课程设计所包含的所有内容。
2.要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务,分析过程和算法,给出程序流程图和全部源程序,并做出总结。
3.设计报告的完整格式应包含以下内容:
a)设计总体思路
b)主程序及各个模块说明
c)总体模块框图
d)各个程序模块说明
e)程序流程图
f)程序清单
g)总结与体会
四.时间安排:
时间
上午
下午
晚上
1—4节(四学时)
5—6节(四学时)
7:
00—10:
00(四学时)
6月30号
布置课题,讲解题目
7月1号
7月2号
上机编程
7月3号
上机编程
7月4号
上机编程
五.课程设计考核办法:
根据学生所完成课程设计报告的完整性,正确性,和算法实现的质量,分为
优,良,中,及格和不及格五个等级。
六.课程设计指导老师:
王颖
七.课程设计题目:
设计课题:
运动会分数统计系统
1、问题描述:
制作一个运动会分数统计系统,用于统计各个运动员得分情况(由三名裁判给分,统计总分和平均得分),并进行比较排名。
在此功能上,完成查找、插入、追加、删除等功能,并可以进行文件的保存和调用
2、功能描述
1、比赛中,输入运动员编号、姓名、各个评委给出的分数,可由系统完成进行统计总分,平均分,排名功能。
2、如果输入的运动员成绩出现什么问题,可进行删除并重新编入。
3、可以根据运动员姓名查找其成绩。
4、将数据用文件进行保存,需要时也将文件调用。
3、算法提示:
1、用简单的程序设计方法
2、一定的窗口设计技巧
3、简单的数据类型
4、测试数据:
编号
姓名
评委1
评委2
评委3
总分
平均分
排名
100
wsw
80
90
70
240
80
1
101
Gsg
60
40
50
150
50
2
……
5、其它:
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
如评委人数的设置,除去一个最低分和最高分功能,添加个按编号查找等。
课程设计报告规范
一、需求分析
1、程序的功能。
2、输入输出的要求。
二、概要设计
1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计
1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、调试分析以及设计体会
1、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
2、程序调试中遇到的问题以及解决问题的方法。
3、课程设计过程经验教训、心得体会。
五、使用说明
用户使用手册:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
六、附录
1、参考书目
2、源程序清单(带注释)
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
●正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
●正文总字数要求在5000字以上(不含程序原代码)。
前言
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中;
7.务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
8.08年3月22日之前,请各班班长收齐课程设计报告和源程序软盘交王颖老师,联系电话:
8883238。
课程设计主文档
一.课程设计题目:
运动会分数统计系统
二.内容摘要:
该系统是一个简单的运动会分数统计系统,能够方便裁判统计各个运动员的得分情况并进行比较排名。
其功能包括:
创建记录、删除记录、追加记录、记录保存、记录调用。
三.关键字:
分数统计系统
四.总体设计方案的选定:
程序的功能:
要实现对成绩统计进行统一有效的管理需要通过用函数、
数据类型、C语句(控制语句、函数调用语句、表达式语句、复合语句等)
来实现。
由于是要求统计各个运动员的成绩,所以必须创建一个类似于表格样的程序,再将各个数据进行填写、更改、删除等。
也就要求程序必须由许多分支程序,这些程序用调用程序来连接。
。
五、概要设计
1.程序的模块组成:
主菜单函数、主函数:
voidmain();
自定义初始化函数SPORTS*init();
自定义创建链表函数:
SPORTS*create();
自定义删除记录函数:
SPORTS*delete(SPORTS*h);
自定义显示所有记录函数:
voidprint(SPORTS*h);
自定义查找函数:
voidsearch(SPORTS*h);
自定义保存函数:
voidsave(SPORTS*h);
自定义读入记录函数:
SPORTS*load();
自定义插入记录函数:
SPORTS*insert(SPORTS*h);
自定义追加记录函数:
voidappend();
自定义复制文件函数:
voidcopy();
2.各函数的主要功能:
主函数:
显示主菜单;
自定义初始化函数:
重新进入主菜单,消除以前的记录。
自定义创建链表函数:
创建一个新的表格进行运动员分数的统计。
自定义删除记录函数:
删除选定的运动员的成绩。
自定义显示所有记录函数:
将所有运动员成绩显示出来。
自定义查找函数:
根据姓名查找运动员的成绩。
自定义保存函数:
将统计的结果用文件进行保存。
自定义读入记录函数:
读入被保存的文件。
自定义插入记录函数:
插入新的数据。
详细设计:
*1、函数间的调用关系图如下
2、流程图:
七、心得体会
经过一周的时间,我不但实践了课本的所学的知识,还亲自制作了自己的程序,感觉自己对C语言有了更深入的了解。
课程设计可以说是分几步完成的。
首先必须有个整体的构思,知道自己要去完成一个什么样的程序。
然后分析这个程序的主干和枝干,再逐步将它们一个个完成,将它们连接起来,最后完善整个程序。
当然,这只是一种思想,落到实践中就每个环节都会碰到或多或少的困难。
这也是最考验我的地方。
有的时候我必须考虑如果要完成这个目的,应该选些什么函数合适,于是就需要翻阅笔记、书籍或者问同学老师。
经过长时间的思考和求索,我最终也就有了答案。
在整个设计过程中,我觉得最烦琐的事要属调试程序了。
因为辛辛苦苦构思出来的程序等到运行的时候我并没有看到预期的结果,而是“ERROR”。
这也就不得不一遍一遍地检查,并且WIN-TC不能显示错误的位置,这真的是个很麻烦的事情,有的时候我会心理发慌,有的时候我打算放弃。
但是,想着自己很辛苦的写了这么久,还是不想放弃,我开始慢慢去找我出的问题,我从头到尾检查了一面,终于发现了问题之所在,就这样我把错误慢慢地减少,最后编成功了,心里是非常快乐的。
同时也让我真正体会到一句话:
“有志者,事竟成!
”
事实上最麻烦的事不是语法的错误,因为这可以检查的出来,而是逻辑的错误,这可是个大麻烦啊!
通过本次课程设计的学习,我体会到学好计算机一定要重视实践环节,不仅是在学习C语言,还是其他计算机语言都是一样的重要。
所以我以后在学习过程中更加重视实践环节的重要性。
这样我相信自己的计算机水平一定会取得更好的进步!
我总结了一下本次程序课程设计主要用了函数的调用,if、else选择语句,switch语句,时间函数,标准输入输出、随机取整函数等基本知识点,结合课本知识加上自己的应用最终取得成功。
C语言是一项细致深入的工作,不仅要有严谨的思路,还要在实践中有耐心,要细心。
这一点我亲身体会到了!
。
最后,感谢在C语言学习及课程设计中对我指导的老师和同学!
附录:
六.源程序清单:
#include
#include
FILE*fp;
inta[100][10];/*定义一个二位数组用来存放运动员成绩*/
intstu;
inputx()
{
gotoxy(15,13);
textcolor(RED);
printf("pleaseinputthenunofsportmeetingman:
");
scanf("%d",&stu);
}
input()/*输入运动员成绩*/
{
inti;
for(i=1;i<=stu;i++)
{scanf("%8d%8d%8d%8d%8d%8d",&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5],&a[i][6]);
}
}
print1()/*输出成绩表,并求total,平均分和排名次*/
{
inti,j;
intb[100],c[100];
intt,loc,k;
fp=fopen("成绩表.txt","w");
for(i=1;i<=stu;i++)/*求total和平均分*/
{
a[i][7]=0;
for(j=2;j<=6;j++)
a[i][7]=a[i][7]+a[i][j];
a[i][8]=a[i][7]/5;
}
for(i=1;i<=stu;i++)/*排名*/
{
b[i]=a[i][7];
c[i]=i;
}
for(i=1;i<=stu-1;i++)
{
loc=i;
for(j=i+1;j<=stu;j++)
if(b[j]>b[loc])
loc=j;
if(loc!
=i)
{t=b[i];b[i]=b[loc];b[loc]=t;
t=c[i];c[i]=c[loc];c[loc]=t;
}
}
for(i=1;i<=stu;i++)
for(k=1;k<=stu;k++)
if(c[k]==i)
{
a[i][9]=k;
break;
}
for(i=1;i<=stu;i++)/*输出成绩表*/
{
for(j=1;j<=9;j++)
printf("%-6d",a[i][j]);
printf("\n");
}
/*以下输出成绩表存到一个文件中*/
fprintf(fp,"nunref1ref2ref3ref4ref5totalave名次\n");
for(i=1;i<=stu;i++)
{
for(j=1;j<=9;j++)
fprintf(fp,"%-6d",a[i][j]);
fprintf(fp,"\n");
}
}
print2()/*求各科total和平均分*/
{
inti,j;
intm[3][6];
for(j=2;j<=6;j++)
{
m[1][j-1]=0;
for(i=1;i<=stu;i++)
m[1][j-1]=m[1][j-1]+a[i][j];
m[2][j-1]=m[1][j-1]/stu;
}
for(i=1;i<=2;i++)
{
for(j=1;j<=5;j++)
printf("%-6d",m[i][j]);
printf("\n");
}
}
change()/*修改运动员成绩*/
{
intm,b,c,i,n=0;
printf("请输入您要修改的运动员的nun:
");
scanf("%d",&m);
printf("1,ref1;2,ref2;3,ref3;4,ref4;5,ref5;\n");
printf("请选择您要修改的科目:
");
scanf("%d",&b);
printf("请输入新的运动员成绩:
");
scanf("%d",&c);
for(i=1;i<=stu;i++)
if(m!
=a[i][1])n++;
else{
n++;
break;
}
a[n][b+1]=c;
printf("\n重新输出成绩表\n");
printf("nunref1ref2ref3ref4ref5totalave名次\n");
print1();
go();
}
go()/*选择菜单*/
{
intn;
printf("\n现在您将会遇到以下几种情况:
\n");
printf("1,继续查询;2,修改数据;3,重新运行;4,结束程序;\n");
printf("请您根据需要按键选择:
");
scanf("%d",&n);
if(n==1)find();
if(n==2)change();
if(n==3)main();
if(n==4){
clrscr();
printf("*********感谢您使用本程序*********\n");
printf("这是我编写的第一个系统程序,为了感谢您的使用,请到7306寝室找周帆\n");
printf("\n\n");
printf("再次感谢您的使用\n");
printf("------------ByeBye----------------");
}
getch();
}
find1()/*按名次查询运动员成绩*/
{
intn,i;
printf("请输入您要查询的运动员的名次:
");
scanf("%d",&n);
printf("名次nunref1ref2ref3ref4ref5totalave\n");
for(i=1;i<=stu;i++)
if(n==a[i][9])
{printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][9],a[i][1],a[i][2],a[i][3],a[i][4],a
[i][5],a[i][6],a[i][7],a[i][8]);
break;
}
printf("\n");
go();
}
find2()/*按nun查询运动员成绩*/
{
intn,i;
printf("请输入您要查询的运动员的nun:
");
scanf("%d",&n);
printf("nunref1ref2ref3ref4ref5totalave名次\n");
for(i=1;i<=stu;i++)
if(n==a[i][1])
{printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a
[i][6],a[i][7],a[i][8],a[i][9]);
break;
}
printf("\n");
go();
}
find3_1(intn)/*输出科目查询结果*/
{
inti;
printf("nun名次ref1ref2ref3ref4ref5totalave\n");
for(i=1;i<=stu;i++)
if(a[i][n+1]>=90)
{printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][9],a[i][2],a[i][3],a[i][4],a
[i][5],a[i][6],a[i][7],a[i][8]);
printf("\n");
}
go();
}
find3()/*科目选择菜单*/
{
intn;
printf("现有以下五种科目供查询:
\n");
printf("1,ref1;2,ref2;3,ref3;4,ref4;5,ref5;\n");
printf("请按键选择:
");
scanf("%d",&n);
find3_1(n);
}
find()/*查询方式菜单*/
{
intm;
printf("根据您的要求,有以下3种查询方式:
\n");
printf("1,按名次查询;\n");
printf("2,按nun查询;\n");
printf("3,查询某科成绩在90分以上的运动员的情况;\n");
printf("现在,按照您的需要请按键:
");
scanf("%d",&m);
if(m==1)find1();
if(m==2)find2();
if(m==3)find3();
}
main()/*主函数运用文本编辑对欢迎界面进行排版*/
{
inti;
clrscr();/*清屏*/
textcolor(YELLOW);
{
gotoxy(20,9);
printf("******welcometoxiangpangwork******\n");
gotoxy(20,11);
printf("------------workersail-------------\n");
gotoxy(20,15);
printf("*********PRESSANYKEY***************\n");
gotoxy(20,17);
printf("*************************************\n");
}
for(i=1;i<=44;i++)/*输出用#组成的矩形以达到美观的效果*/
{
{
gotoxy(16+i,19);
printf("#");
}
{
gotoxy(16+i,7);
printf("#");
}
}
for(i=1;i<=13;i++)
{
{
gotoxy(16,6+i);
printf("#");
}
{
gotoxy(61,6+i);
printf("#");
}
}
getch();
clrscr();
inputx();
clrscr();
gotoxy(3,3);
printf("\n运动员成绩管理系统\n\n");
printf("一,输入成绩\n");
printf("请输入运动员的成绩:
\n");
printf("nunref1ref2ref3ref4ref5\n");
input();
printf("\n");
printf("二,输出成绩表\n");
printf("nunref1ref2ref3ref4ref5totalave名次\n");
print1();
printf("\n");
printf("三,输出各科total及平均分\n");
printf("ref1ref2ref3ref4ref5\n");
print2();
printf("\n");
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 分数 统计 系统