数据结构课程设计运动会分数统计.docx

上传人:b****2 文档编号:401411 上传时间:2022-10-09 格式:DOCX 页数:31 大小:256.89KB
下载 相关 举报
数据结构课程设计运动会分数统计.docx_第1页
第1页 / 共31页
数据结构课程设计运动会分数统计.docx_第2页
第2页 / 共31页
数据结构课程设计运动会分数统计.docx_第3页
第3页 / 共31页
数据结构课程设计运动会分数统计.docx_第4页
第4页 / 共31页
数据结构课程设计运动会分数统计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

数据结构课程设计运动会分数统计.docx

《数据结构课程设计运动会分数统计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会分数统计.docx(31页珍藏版)》请在冰豆网上搜索。

数据结构课程设计运动会分数统计.docx

数据结构课程设计运动会分数统计

课程设计报告

课程名称数据结构

课题名称运动会分数统计

 

专业

班级

学号

姓名

指导老师张鏖烽田娟秀李杰君

2013年6月29日

湖南工程学院

课程设计任务书

 

课程名称数据结构

课题运动会分数统计

 

专业班级

学生姓名

学号

指导老师张鏖烽田娟秀李杰君

审批

 

任务书下达日期2013年6月23日

任务完成日期2013年6月29日

课程设计内容

1.课程设计目的:

课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,实习题中的问题比平时的习题复杂得多,也更接近实际。

实习着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。

平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

2.课程设计题目

1)运动会分数统计

任务:

参加运动会有n个学校,学校编号为1……n。

比赛分成m个男子项目,和w个女子项目。

项目编号为男子1……m,女子m+1……m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:

7、5、3、2、1,前三名的积分分别为:

5、3、2;哪些取前五名或前三名由学生自己设定。

(m<=20,n<=20)

功能要求:

●可以输入各个项目的前三名或前五名的成绩;

●能统计各学校总分;

●可以按学校编号、学校总分、男女团体总分排序输出;

●可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:

输入数据形式和范围:

20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

输出形式:

有中文提示,各学校分数为整形

界面要求:

有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:

学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;

测试数据:

要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;

 

1需求分析1

2.概要设计1

3.详细设计3

3.1数据结构定义3

3.2统计输出模块3

3.3排序输出函数6

3.4查询函数11

4.调试分析15

5.程序使用及说明15

6.测试结果15

7.总结18

8.附录18

1需求分析

本系统主要是运动会分数统计方案设计。

根据具体情况选择输入参加项目的男女类别和取成绩名次类别;最后选择输入名次。

运动会分数统计方案适合采用结构体数组,为了实现系统功能,主要应实现以下几部分:

程序以用户和计算机对话方式进行,即在计算机终端上显示提示信息之后,由用户输入进行查询成绩的操作:

产生各学校的成绩单,包括:

各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得。

产生团体总分报表,内容包括校号、男子团体总分、女子团子总分和团体总分,然后进行数据保存操作。

并且应该提供键盘式选择菜单实现功能选择。

由于运动会分数统计需要处理大量的数据,所以在运行期间,为了避免在运行大量数据时出错,并且系统能够在很短的时间内将运行结果稳定准确输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。

2.概要设计

按照课题要求,在设计时将本系统分为比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果几个功能模块,并且将对录入的分数按照各项成绩得分以及团体总分排序。

系统定义数据时使用结构体和结构体数组来存储信息数据,输入基本信息后由系统统计总分的内容并全部存入文件file中,在排序输出中使用冒泡排序法进行不同关键字的排序,查询函数采用顺序表的查找来完成。

在设计中采用了按照模块功能来实现程序的功能,每个模块完成系统的部分功能。

具体情况将详细设计中做具体介绍。

图1系统功能模块

(1)比赛成绩输入模块

比赛成绩输入模块分为:

创建信息部分,该部分需输入学校编号,项目编号,取得的名次,以及哪些名次;算法部分,得到排序结果。

(2)比赛成绩输出模块

将以输入的数据按照输出比赛菜单的选择输出相应的数据。

(3)查询比赛成绩模块

按照查询比赛结果菜单和其查询方式子菜单查询需要的数据。

(4)调用统计结果

将输入的各学校运动会成绩排序输出。

3.详细设计

3.1数据结构定义:

typedefstruct

{

intinum;/*项目编号*/

inttop;/*取名次的数目*/

intrange[5];/*名次*/

intmark[5];/*分数*/

}itemnode;/*存放项目信息*/

typedefstruct

{

intsnum;/*学校编号*/

intscore;/*学校总分*/

intmscore;/*男团体总分*/

intwscore;/*女团体总分*/

itemnodet[m0+w0];/*项目数组*/

}snode;/*存放学校信息*/

snodea[n0];/*定义一个学校数组*/

3.2统计输出模块:

比赛成绩输入模块需要输入学校编号,项目编号,取得的名次,以及哪些名次。

算法模块流程图如图2所示.此模块定义变量i,j,k,s;先初始化储存分数的数组各元素,for循环实现各学校信息的输入,包括学校编号、项目编号、取前3名or前5名、获得几个名次,使用switch语句实现对输入的各个名次赋予对应的分数。

voidoutput(intn,intm,intw)/*统计输出*/

{

readfromfile();

inti,j,s,q=0;

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);

for(j=0;j

{

printf("项目编号:

%d所取名次数量:

%d\n",a[i].t[j].inum,a[i].t[j].top);

for(s=0;s<5;s++)

{

if(a[i].t[j].range[s]!

=0)

printf("名次:

%d分数:

%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);

}

}

printf("\n");

}

printf("\n");

while(q!

=1)

{

printf("统计完毕!

返回?

1是2否");/*返回菜单*/

scanf("%d",&q);

printf("\n");

}

printf("\n");

menu(n,m,w);

}

 

图2比赛成绩输入模块

 

3.3排序输出函数:

比赛成绩输出模块实现按要求输出相应的数据。

有以下输出选项:

按学校编号输出、按学校总分输出、按男团总分输出、按女团总分输出。

for循环实现输出各个方式输出的每个数据。

排序输出流程图如图3所示。

voidsortput(intn,intm,intw)/*排序输出函数*/

{

readfromfile();

intc,i,j,k,q=0;

inttemp[n0];

printf("\t**************排序输出系统**************\n\n");

printf("\t\t****1.按学校编号输出****\n");

printf("\t\t****2.按学校总分输出****\n");

printf("\t\t****3.按男团总分输出****\n");

printf("\t\t****4.按女团总分输出****\n");

do

{

printf("请选择要实现功能的编号(1——4):

");

scanf("%d",&c);

switch(c)

{

case1:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].snum>a[j].snum)

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}/*用冒泡排序方法排序*/

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);

}/*按学校编号输出*/

break;

case2:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].score

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}/*用冒泡排序方法排序*/

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);

}/*按学校总分输出*/

break;

case3:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].mscore

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}/*用冒泡排序方法排序*/

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);

}/*按男团总分输出*/

break;

case4:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].wscore

{

k=tem

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1