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

  • 格式:doc
  • 大小:1.39 MB
  • 文档页数:33

运动会分数统计尚燚目录摘要 (1)1绪论 (1)2系统分析 (2)2.1功能需求 (2)2.2数据需求 (2)2.3性能需求 (2)3总体设计 (2)3.1系统设计方案 (2)3.2功能模块设计 (2)4详细设计 (4)4.1数据结构定义 (4)4.2比赛成绩输入模块 (4)4.3比赛成绩输出 (6)4.4查询比赛成绩模块 (8)4.5调用统计结果模块 (10)5调试与测试 (12)5.1调试 (12)5.2测试 (12)6结论 (15)结束语 (15)参考文献 (15)附录1-用户手册 (17)附录2-源程序 (23)摘要为了发展体育事业,强健中华儿女,便于运动会分数统计特此开发运动会分数统计程序。

本程序的主要运用了C语言开发。

系统主要实现了比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。

报告从系统分析,总体设计,详细设计,调试与测试方面进行描述和介绍。

关键词:学校编号;项目编号;男团总分;女团总分1绪论随着社会的进步,体育事业发展,为了提高运动会成绩统计准确,减少设计者们的工作量,开发了本系统。

根据课程设计任务书要求,本系统开发主要完成以下功能和性能。

内容:参加运动会有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).能统计各学校总分;(3).可以按学校编号、学校总分、男女团体总分排序输出;(4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

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

2系统分析2.1 功能需求本系统主要是运动会分数统计方案设计。

运动会分数统计方案适合采用结构体数组,为了实现系统功能,主要应实现以下几部分:比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。

2.2数据需求需要输入学校编号,项目编号,取得的名次,以及哪些名次。

2.3 性能需求本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。

3总体设计3.1系统设计方案本方案要求准备结构体数组、读写文件。

还能把信息直接输入存储到文件中,读取文件中信息,从而得到结果。

(1) 菜单设计分为主函数菜单、比赛成绩输出菜单、查询分数统计结果菜单、查询方式子菜单。

(2) 数据保存方式建立文件,数据保存在文件中。

运动运分数统计程序(3) 数据类型采用结构体类型。

(4) 存储结构采用结构体类型数组存储结构存储。

(5) 算法设计输入比赛结果模块中运用了冒泡算法将输入的数据排序。

3.2功能模块设计根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。

该系统分为比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。

比赛成绩输出模块有四个子模块,分别是:按学校编号输出模块、按学校总分输出模块、安南员总分输出模块和按女团总分输出模块;查询比赛成绩模块分为按学校编号查询模块河岸项目编号查询两个子模块。

功能模块图如图1所示。

图1功能模块图(1)比赛成绩输入模块比赛成绩输入模块分为:创建信息部分,该部分需输入学校编号,项目编号,取得的名次,以及哪些名次;算法部分,得到排序结果。

(2)比赛成绩输出模块将以输入的数据按照输出比赛菜单的选择输出相应的数据。

(3)查询比赛成绩模块按照查询比赛结果菜单和其查询方式子菜单查询需要的数据。

(4)调用统计结果将输入的各学校运动会成绩排序输出。

4详细设计4.1 数据结构定义建立结构体如下:typedef struct{int itemnum; //项目编号int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型typedef struct{int schoolnum; //学校编号int score; //学校总分int mscore; //男团体总分int wscore; //女团体总分itemnode c[m+w]; //项目数组}headnode;//定义头结点类型4.2比赛成绩输入模块比赛成绩输入模块需要输入学校编号,项目编号,取得的名次,以及哪些名次。

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

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

有以下输出选项:按学校编号输出、按学校总分输出、按男团总分输出、按女团总分输出。

图3比赛成绩输出模块流程图模块定义了int choice,i,j,k;int remember[n];int sign变量,do…while包括switch 语句,选择输出按学校编号输出、按学校总分输出、按男团总分输出、按女团总分输出相应的数据。

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

4.4查询比赛成绩模块查询比赛成绩模块包括:按学校编号查询,按项目编号查询。

其算法原理相同,例举按学校项目编号查询模块。

如图4所示。

图4按项目编号查询模块流程图此模块定义了int choice; int i,j,k,s;switch(choice)实现查询的两种方式的选择,当i>n时输出错误:这个学校没有参加此次运动会! 否则,输入项目编号,如果j>m+w||j==0,输出此次运动会没有这个项目。

否则,使用for循环输出相关数据,从而实现查询功能。

4.5调用统计结果模块调用统计模块从文件中读取数据输出,流程图如图5所示。

图5调用统计结果模块流程图此模块定义了FILE *report; int i,j,k,s;for循环中套用for循环,for循环分别对学校编号、学校总分、男团总分、女团总分进行输出,在使用for循环对各学校的项目编号、所取名次数量、各个名次输出,实现对文件中的数据的调用。

5调试与测试5.1 调试调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。

调试过程中出现的问题和处理方式:(1)程序出现语法错误发现是输入名次信息的地方忘带地址符&。

添加取地址符。

printf("*****名次:");scanf("%d",&h[i].c[j].range[s]);(2)在输出模块不能将全部的学校信息输出,属于算法编写错误,正确的程序应该为:if(h[remember[i]].mscore<h[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k; 5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。

或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

过度测试则会浪费许多宝贵的资源。

到测试后期,即使找到了错误,然而付出了过高的代价。

测试数据过程如下。

(1) 输入功能测试输入数据1:1 1 1 3 3 1 2 32 3 2 2 32 13 2 1 32 3 3 1 2 3 预期结果:学校编号:1学校总分:15男团总分:10女团总分:5项目编号:1所取名次数:3名次:1名次:2名次:3分数:5分数:3分数:2项目编号:2所取名次数:3名次:2名次:3分数:3分数:2学校编号:2学校总分:17男团总分:7女团总分:10项目编号:1所取名次数:3名次:1名次:3分数:5分数:2项目编号:2 所取名次数:3 名次:1名次:2名次:3分数:5分数:3分数:2运行结果:学校编号:1 学校总分:15 男团总分:10 女团总分:5 项目编号:1 所取名次数:3 名次:1名次:2名次:3分数:5分数:3分数:2项目编号:2 所取名次数:3 名次:2名次:3分数:3分数:2学校编号:2 学校总分:17 男团总分:7女团总分:10项目编号:1所取名次数:3名次:1名次:3分数:5分数:2项目编号:2所取名次数:3名次:1名次:2名次:3分数:5分数:3分数:2按照要求输入的数据能够显示正确的结果。

6结论课程设计顺利完成,任务书中所提出的要求全部实现不过这个程序还有些不够完善,例如:输入学校各舒适与现在宏定义中确定的,不能改变,有待进一步完善。

结束语因为在理论学习中没有好好的掌握,现在要独立完成一个较复杂的程序编写,确实有困难。

今后我必需扎实基础理论、认真思考,而且要践行我的承诺,一步一个脚印的走下去,才可以达到我们预期的彼岸!仔细回顾数据结构的学习过程,发现其实他也并不是想象中的那么难。

只要肯去攀登!参考文献[1] 谭浩强.C语言程序设计(第三版).清华大学出版社,2007[2] 姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,2008[3] 吴伟民,严蔚敏.数据结构.清华大学出版社,2008[4]李廉治,姜文清,郭福顺.数据结构.大连理工大学出版社,1989年[5] 网上相关资料运动会分数统计附录1-用户手册(1)首先运行文件运动会统计分数7.exe:如图6所示:图6运行运动会分数统计界面(2) 输入信息:程序首先赋初值,定义学校的个数为2,男生项目为1,女生项目为1。

输入1得到进入输入信息模块。

如图7所示:图7输入学校运动会分数界面按回车键可得到学校的得分信息和按编号获得的所以信息。

(3)输出信息输入2进入输出信息模块,该模块分四项: 如图8所示:图8输出运动会分数界面①按学校编号输出: 如图9所示:图9按学校编号输出分数界面②按学校总分输出:如图10所示:图9按学校总分输出分数界面③按男团总分输出:如图11所示:图11按学校编号男团总分输出分数界面④按女团总分输出:如图12所示:图12按女团总分输出分数界面⑤输入2返回输出信息模块,输入0返回主菜单。