运动会分数统计论文.docx

上传人:b****1 文档编号:601388 上传时间:2022-10-11 格式:DOCX 页数:24 大小:106.38KB
下载 相关 举报
运动会分数统计论文.docx_第1页
第1页 / 共24页
运动会分数统计论文.docx_第2页
第2页 / 共24页
运动会分数统计论文.docx_第3页
第3页 / 共24页
运动会分数统计论文.docx_第4页
第4页 / 共24页
运动会分数统计论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

运动会分数统计论文.docx

《运动会分数统计论文.docx》由会员分享,可在线阅读,更多相关《运动会分数统计论文.docx(24页珍藏版)》请在冰豆网上搜索。

运动会分数统计论文.docx

运动会分数统计论文

 

软件学院

课程设计报告书

 

课程名称数据结构

设计题目运动会分数统计

 

目录

1设计时间.....................................1

2设计目的.....................................1

3设计任务......................................1

4设计内容....................................1

4.1需求分析....................................1

4.2总体设计.....................................3

4.3详细设计.....................................4

4.4测试与分析...................................8

4.4.1测试.......................................9

4.4.2分析.......................................9

4.5附录.........................................9

5总结与展望..................................22

参考文献........................................24

1设计时间

2012.1.2-2012.1.8

2设计目的

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3设计任务

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

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

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

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

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

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

(m<=20,n<=20)

(1)产生各院系的成绩单,内容包括各院系取得的每项成绩的项目号、名次(成绩)、姓名和得分;

(2)产生团体总分报表,内容包括院系编号、男子团体总分、女子团体总分和团体总分。

4设计内容

4.1需求分析

为了简便地对运动会的报名、成绩的录入和统计,设计开发了本系统,以解决需求。

当然,本系统只是一个较为简单的系统,仍然存在着一些问题,将在以后的学习中进行完善。

功能:

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

2) 能统计各学校总分,

3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;

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

输出形式:

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

界面要求:

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

存储结构:

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

测试数据:

要求使用:

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

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

4.2总体设计

根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:

信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1所示。

(1)信息统计模实现信息的输入、统计、存档。

(2)信息输出模块,实现信息的输出。

(3)信息查询实现信息的查询。

运动会分数统计系统

函数功能表

函数

功能

voidinputinformation()

输入和统计信息函数

voidoutput()

输出信息函数

voidinquiry()

查询信息函数

voidwritedata()

数据存储函数

voidreaddata()

读入数据函数

4.3详细设计

(1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。

//定义项目结点的类型

typedefstruct

{

intitemnum;//项目编号

inttop;//项目取名次的数目,由用户定义3或5

intrange[5];//名次

intmark[5];//分数

}itemnode;

(2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。

//定义学校结点类型

typedefstruct

{

intschoolnum;//学校编号

intscore;//学校总分

intmscore;//男团体总分

intwscore;//女团体总分

itemnodec[m+w];//项目数组

}schoolnode;

(3)定义学校数组schoolnodeh[n]。

采用数组结构有利于随机的存储和查询。

定义全局标志变量intflag1、flag2,分别用以标志是否已经向系统输入了信息和标志系统中是否已经存在信息。

定义文件指针FILE*report,用来指向存档的文件。

功能模块:

(1)信息输入及分数统计功能

voidinputinformation()为输入信息及分数统计函数。

在输入信息的同时进行分数的统计。

可以输入各个学校各项目前三名或前五名的成绩。

在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。

利用swith语句前三名的分数赋为5、3、2,前五名的成绩赋为7,5、3、2、1,未取得成绩则赋为0。

并统计团体总分,男团总分和女团总分。

其主要功能代码如下:

for(s=0;s

{printf("*****名次:

");

scanf("%d",&h[i].c[j].range[s]);//输入所获名次信息

if(h[i].c[j].top==3)

switch(h[i].c[j].range[s])

{case0:

h[i].c[j].mark[s]=0;break;

case1:

h[i].c[j].mark[s]=5;break;

case2:

h[i].c[j].mark[s]=3;break;

case3:

h[i].c[j].mark[s]=2;break;

}

else

switch(h[i].c[j].range[s])

{case0:

h[i].c[j].mark[s]=0;break;

case1:

h[i].c[j].mark[s]=7;break;

case2:

h[i].c[j].mark[s]=5;break;

case3:

h[i].c[j].mark[s]=3;break;

case4:

h[i].c[j].mark[s]=2;break;

case5:

h[i].c[j].mark[s]=1;break;

}

h[i].score=h[i].score+h[i].c[j].mark[s];

(2)信息输出功能

voidoutput()为输出函数。

列出一个输出目录利用swich语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。

利用辅助数组remember[]和冒泡排序的方法使之按分数的由高到低输出。

利用循环语句dowhile()当输入2时返回输出目录,输入0是跳出循环返回主菜单。

(3)信息查询功能

voidinquiry()为查询函数。

列车一个查询目录利用swich语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得分情况或某个项目的前几名的学校。

再利用循环语句dowhile()当输入2是返回查询目录,输入0时跳出循环返回主菜单。

(5)主函数

voidmain()是主函数。

列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。

想在每次查询结束想返回主菜单进行其它项时,应在main()函数中调用其它函数时再调用main()函数,如:

switch(choice)

{

case1:

printf("输入信息:

\n");inputinformation();writedata();printf("信息已存入档案!

");main();

case2:

printf("输出信息:

\n");if(flag1)readdata();output();main();

在进入主菜单后为了确保系统中已经输入了信息,用标志标量flag1和flag2来控制循环。

如果系统中没有任何信息,用户就不能选择输入或查询操作,此时会输出提示信息,并返回主菜单。

直到用户输入了信息或退出系统。

其实现代码如下:

do{printf("======================欢迎使用======================\n");

printf("\n\n*****************运动会分数统计系统********************\n");

printf("\n\n********************1.输入信息*************************\n");

printf("********************2.输出信息*************************\n");

printf("********************3.查询信息*************************\n");

printf("********************4.退出系统*************************\n\n\n");

printf("================================================\n\n");

printf("********请选择要实现步骤的编号(请确保已经输入信息!

):

\n\n");

scanf("%d",&choice);

if(choice==4)break;

elseif(choice==1)flag1=0;

elseif((report=fopen("sportsdata.txt","r"))!

=null)flag2=0;

else

{system("cls");

printf("\n\n\n\n系统中无任何信息!

\n\n请先输入信息!

!

!

\n\n\n\n");

}

}while(flag1&&flag2);

4.4测试与分析

4.4.1测试

运行程序,进入系统主菜单。

用户可以选择输入、输出、查询信息或退出系统,界面

 

输入信息:

输出信息:

 

4.4.2分析

算法的效率:

总的来讲,严重影响执行速度的便是查找,查找任意一个数据,便要将其所在的结构从头至尾遍历一次,耗费大量的时间。

改进设想:

因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。

4.5附录

#include

#include

#include

#include

#definen2//学校数目

#definem1//男子项目数目

#definew1//女子项目数目

#de

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

当前位置:首页 > 解决方案 > 学习计划

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

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