电气078322李杰 运动会分数统计系统.docx
- 文档编号:8784372
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:18
- 大小:103.55KB
电气078322李杰 运动会分数统计系统.docx
《电气078322李杰 运动会分数统计系统.docx》由会员分享,可在线阅读,更多相关《电气078322李杰 运动会分数统计系统.docx(18页珍藏版)》请在冰豆网上搜索。
电气078322李杰运动会分数统计系统
应用技术学院
课程设计报告
课程名称C语言课程设计
课题名称运动会分数统计系统
专业电气工程及其自动化
班级0783
学号200713010322
姓名李杰
指导教师王颖
2008年3月20日
目录
一、C语言程序课程设计任务书…………………………………………3
二、课程设计主文档………………………………………………………9
三、流程图…………………………………………………………………11
四、源程序清单……………………………………………………………12
五心得体会………………………………………………………………18
六、参考资料………………………………………………………………18
七、评分表…………………………………………………………………19
湖南工程学院
课程设计任务书
课程名称C语言课程设计
课题运动会分数统计系统
专业班级电气工程及其自动化
学生姓名李杰
学号200713010322
指导老师王颖
审批
任务书下达日期:
2008年3月16日
任务完成日期:
2008年3月20日
前言
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中;
7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
8.在2008年3月23日之前,请各班学习委员收齐课程设计报告和源程序软盘交王颖老师,联系电话:
8883238。
一C程序课程设计任务书
一课程设计性质与目的:
C语言程序设计是一门实践性很强的课程。
C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力,让学生加深理解书本上所学的知识,提高动手操作的能力以及分析问题和解决问题的能力。
二课程设计包含知识点:
1,掌握并熟练运用C语言的基本数据类型与各种表达式以及程序的流程控制语句。
2,掌握数组的基本概念。
熟练掌握一维数组和二维数组的使用,掌握字符数组与字符串的关系以及字符串的简单处理,会分析、编写利用数组进行数据存储和处理的简单程序。
3,熟练掌握指针、地址、指针类型、void指针类型、空指针等概念,熟练掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算和指针表达式,掌握指针与数组、函数、字符串、自由空间等的联系,了解引用变量、值传送、引用传送的概念,掌握引用参数的使用。
4,掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
5,掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
三课程设计要求:
1,学生从以下八个题目中任意选择并完成一个题目。
要求每个学生能独立思考认真并按时完成本课程设计所包含的所有内容。
2,要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序,并做出总结。
3.设计报告的完整格式应包括以下部分的内容:
1.设计总体思路
2.主程序及各个模块说明
3.总体模块框图
4.各个程序模块说明
5.程序流程图
6.程序清单
7.总结与体会
四时间安排:
时间
任务
2008-3-8下午3:
40-5:
40
指导老师给学生布置课程设计的任务及要求
2008-3-10到2008-3-15
学生根据设计任务及要求,对系统进行需求分析`概要设计和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序
2008-3-16
接受指导老师的验收
2008-3-16到2008-3-22
书写课程设计报告
提交课程设计报告
五课程设计考核办法:
根据学生所完成课程设计报告的完整性,准确性,和算法实现质量,分为优,良,中,及格,和不及格五个等级。
六课程设计指导老师:
王颖
七课程设计题目:
运动会分数统计系统
1、问题描述:
参加运动会的n个学校编号为l~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为l~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分为5,3,2设计一个统计程序按名次产生各种成绩单、得分报表。
2、基本要求:
1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;均按名次排序。
2.比赛项目既要有径赛,又要有田赛。
3.测试数据:
对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
4.实现提示:
1)数据结构:
线性表
2)数据库结构:
下面四张表构成该系统的基本数据库,全部输出报表由系统根据基本表自动生成。
3).可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。
5、选作内容:
允许用户指定某项目采取其他名次取法
二、课程设计主文档
1、课程设计题目:
运动会分数统计系统
2、内容摘要:
该系统是一个简单的分数统计系统,能够使选手和学校了解自己的得分及排名情况。
其功能包括:
团体总分统计,男子总分统计,女子总分统计等。
3、关键字:
分数统计系统
4、总体设计方案的选定:
程序的功能:
要实现对分数统计进行统一有效的管理需要通过用函数、数据类型、C语句(控制语句、函数调用语句、表达式语句、复合语句等)来实现。
这个系统有很多个界面,这些界面的调用,最终是通过函数之间的调用来实现的。
5、概要设计
程序的模块组成以及各个函数的功能:
1.程序的模块组成:
主菜单函数、主函数:
main();
得分分配函数:
score();
团体成绩计算函数:
teamsco();
自定义清屏函数:
my_clear();
输出学校成绩列表函数:
output();
输出团体报表函数:
teamput();
整理函数:
index();
2.各函数的主要功能:
主函数:
显示主菜单;
自定义清屏函数:
设置颜色;
自定义输入函数:
输入“a”;
团体报表输出函数:
输出团体成绩;
学校成绩列表函数:
输出各个学校成绩列表;
整理函数:
把各项目个人学校得分统计出来;
【详细设计】
相关的数据类型:
structresult/*定义比赛名次列表元素*/
{intscnum;/*学校编号*/
charname[20];/*姓名*/
intposition;/*名次*/
intscore;/*得分*/};
structmatch/*定义项目结构体*/
{intmatnum;/*项目编号*/
intnum;/*项目名次个数*/
structresultlist[5];/*名词列表数组*/};
structsclist/*定义成绩单元素*/
{intmatnum;/*项目编号*/
intposition;/*名次*/
charname[20];/*姓名*/
intscore;/*得分*/};
structschool/*定义学校结构体*/
{intscnum;/*学校校号*/
structsclistlist[50];/*成绩单列表数组*/
intteam;/*团体总分*/
intmteam;/*男子团体总分*/
intfteam;/*女子团体总分*/
intnum;/*累加数*/};
structmatchma[50];
structschoolsc[20];
函数间的调用关系图如下
main函数的下属子功能函数及其调用示意
三、流程图
四、源程序清单:
#include
#include"stdlib.h"
#include"stdio.h"
intn,m,w;
structresult/*定义比赛名次列表元素*/
{intscnum;/*学校编号*/
charname[20];/*姓名*/
intposition;/*名次*/
intscore;/*得分*/};
structmatch/*定义项目结构体*/
{intmatnum;/*项目编号*/
intnum;/*项目名次个数*/
structresultlist[5];/*名词列表数组*/};
structsclist/*定义成绩单元素*/
{intmatnum;/*项目编号*/
intposition;/*名次*/
charname[20];/*姓名*/
intscore;/*得分*/};
structschool/*定义学校结构体*/
{intscnum;/*学校校号*/
structsclistlist[50];/*成绩单列表数组*/
intteam;/*团体总分*/
intmteam;/*男子团体总分*/
intfteam;/*女子团体总分*/
intnum;/*累加数*/};
structmatchma[50];
structschoolsc[20];
score(a,b)/*得分分配函数*/
inta,b;/*项目编号,项目名次个数*/
{if(b==3)
{ma[a-1].list[0].score=5;
ma[a-1].list[1].score=3;
ma[a-1].list[2].score=2;}
if(b==5)
{ma[a-1].list[0].score=7;
ma[a-1].list[1].score=5;
ma[a-1].list[2].score=3;
ma[a-1].list[3].score=2;
ma[a-1].list[4].score=1;}
return;}
input(a)/*输入函数*/
inta;/*项目编号*/
{inti;
do{printf("\n第%d项:
取前几名(3/5)?
",a);
scanf("%d",&ma[a-1].num);
if((ma[a-1].num!
=3)&&(ma[a-1].num!
=5))
printf("\n!
error:
输入的数应为3或5!
\n");}
while((ma[a-1].num!
=3)&&(ma[a-1].num!
=5));
score(a,ma[a-1].num);/*调用得分分配函数*/
for(i=0;i {ma[a-1].list[i].position=i+1; printf("\n第%d名: 学校编号: ",i+1); scanf("%d",&ma[a-1].list[i].scnum); printf("姓名: "); scanf("%s",&ma[a-1].list[i].name); printf("得分: %d",ma[a-1].list[i].score);} return;} index()/*整理函数*/ {inti,j,k,t; for(i=0;i {sc[i].scnum=i+1;/*初始化校号*/ sc[i].num=0;/*初始化累加数*/} for(i=0;i for(j=0;j for(k=0;k if(ma[i].list[j].scnum==sc[k].scnum) {sc[k].list[sc[k].num].matnum=ma[i].matnum; sc[k].list[sc[k].num].position=ma[i].list[j].position; for(t=0;t<20;t++) sc[k].list[sc[k].num].name[t]=ma[i].list[j].name[t]; sc[k].list[sc[k].num].score=ma[i].list[j].score; sc[k].num++;} return;} teamsco()/*团体成绩计算函数*/ {inti,j; for(i=0;i {sc[i].team=0; sc[i].mteam=0; sc[i].fteam=0;}/*初始化*/ for(i=0;i for(j=0;j {sc[i].team=sc[i].team+sc[i].list[j].score;/*团体成绩计算*/ if(sc[i].list[j].matnum<=m) sc[i].mteam=sc[i].mteam+sc[i].list[j].score;/*男子团体成绩计算*/ elsesc[i].fteam=sc[i].fteam+sc[i].list[j].score;/*女子团体成绩计算*/} return;} output(a)/*输出学校成绩列表函数*/ inta; {inti; printf("\n成绩报表学校编号: %d\n",a); printf("比赛项目编号名次姓名得分\n"); for(i=0;i printf("%6d%10d%10s%15d\n",sc[a-1].list[i].matnum,sc[a-1].list[i].position,sc[a-1].list[i].name,sc[a-1].list[i].score); return;} teamput()/*输出团体报表函数*/ {inti; printf("\n团体成绩报表\n"); printf("学校编号团体总分男子团体总分女子团体总分\n"); for(i=0;i printf("%4d%7d%11d%13d\n",sc[i].scnum,sc[i].team,sc[i].mteam,sc[i].fteam); return;} main() {inti,c;/*c为项目编号*/ printf("********************************************************\n"); printf("C程序语言课程设计------运动会分数统计\n"); printf("设计人: 李杰\n"); printf("********************************************************\n"); printf("请输入参加运动会的学校个数: "); scanf("%d",&n); printf("\n有多少个男子项目: "); scanf("%d",&m); printf("\n有多少个女子项目: "); scanf("%d",&w); printf("\n本次运动会有%d个学校参加,共设%d个比赛项目,其中男子项目%d个,女子项目%d个。 \n",n,m+w,m,w); printf("请输入比赛结果资料\n"); for(i=0;i ma[i].matnum=i+1;/*初始化项目编号*/ c=1;/*初始化c*/ while(c! =0) {printf("\n请输入已结束的比赛项目编号(0=COTINUE): "); scanf("%d",&c); if((c>0)&&(c<=m+w)) input(c);/*调用输入函数*/ elseif(c==0)break; elseprintf("\n! error: 输入的数应为1-%d之间的整数! \n",m+w);/*输入出错信息*/ } printf("\nLoading......\n");/*稍后*/ index();/*调用整理函数*/ teamsco();/*调用团体成绩计算函数*/ teamput();/*调用输出团体报表函数*/ c=1;/*初始化c*/ while(c! =0) {printf("\n\n请输入学校编号查询成绩列表(0=EXIT): "); scanf("%d",&c); if(c==0)break; elseif((c>=0)&&(c<=m+w)) output(c);/*调用输出学校成绩列表函数*/ elseprintf("\n! error: 输入的数应为1-%d之间的整数! \n",m+w);/*输入出错信息*/ } clrscr();/*清屏函数*/ printf("\n谢谢! 请多多指教! \n"); return;} 五、心得体会 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进,再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。 这次设计,让我掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验! 课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游刃而解而解。 同时,在老师的身上我学得到很多实用的知识,在次我表示感谢! 同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 六、参考资料: C语言课程程序设案例精编中国水利水电出版社 《C语言程序设计案例分析》人民邮电出版社 《C程序设计(第三版)》谭浩强著清华大学出版社 《C语言程序设计案例教程》张基温编著清华大学出版社 应用技术学院课程设计评分表 课程名称: C语言课程设计 项目 评价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名: 日期: (注: 1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。 ) 注: 参考资料: C语言教材,C语言课程设计参考书,关于C语言的课程设计书等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电气078322李杰 运动会分数统计系统 电气 078322 李杰 运动会 分数 统计 系统