• 525.00 KB
  • 2022-09-27 发布

数据结构课程设计(论文)-运动会分数统计系统

  • 24页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
课程设计评审表姓名学院学号专业班级题目运动会分数统计系统评审意见评审成绩指导教师签名职称评审时间年月日\n课程设计作品验收表题目运动会分数统计系统参与人员姓名班级学号设计任务与要求:1) 可以输入各个学校各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;5) 数据存入文件并能随时查询。作品完成情况:能按要求实现信息的输入、统计,按多种方式输出、查询等基本功能。能将输入的信息存入文档,可供随时调用。能够正确应对部分不合理的输入。验收情况:验收教师签名:___________      年月日注:1.除“验收情况”栏外,其余各栏均由学生在作品验收前填写。2.“验收情况”栏由验收小组按实际验收的情况如实填写。\n目录1问题描述与分析……………………………………….…………………..………11.1课程设计的目的…………………………….……………………...……………11.2系统需求分析………………………………………….………………………...12概要设计…………….……………………………………………………………...22.1系统功能设计……………...…………………………………………………….22.2函数构造…………………………….…………………………………………..23详细设计……………………………………………………………………………...33.1数据类型及重要变量的定义……………………………………………………...33.2函数的设计和实现……………………………………………………………….44测试…………………………………………………………………………………...75课程设计总结………………………………………………………………………...115.1调试中遇到的较重要问题的回顾………………………………………………..115.2算法的效率及改进思想…………………………………………………………125.3心得体会……………………………………………………………………….12参考文献……………………….………………………………………………..13附录……………………………….……………………………………………..13\n运动会分数统计系统1问题描述与分析1.1课程设计目的为了巩固我们数据结构知识,加强我们的实际动手能力和提高我们综合素质,提高我们对计算机软件工程的认识学院组织我们进行了数据结构课程设计。此次课程设计要达到以下几点目的:1.11了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。1.12提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。1.13培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。1.14初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。1.2系统需求分析问题描述:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。功能要求:1.21可以输入各个学校各个项目的前三名或前五名的成绩;1.22 能统计各学校总分;1.23 可以按学校编号或名称、学校总分、男女团体总分排序输出;1.24可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;.21\n1.25 数据存入文件并能随时查询;1.26 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称。输出形式:有中文提示,各学校分数为整形。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。2概要设计2.1系统功能设计根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1所示。2.11信息统计模实现信息的输入、统计、存档。2.12信息输出模块,实现信息的输出。2.13信息查询实现信息的查询。图2-1系统功能结构图2.2函数构造根据系统功能结构图的描述,可以构造出该系统的几个基本的函数,其方法名和功能如表2-1所示。.21\n表2-1函数功能表函数功能voidinputinformation()输入和统计信息函数voidoutput()输出信息函数voidinquiry()查询信息函数voidwritedata()数据存储函数voidreaddata()读入数据函数3详细设计3.1数据类型及重要变量的定义3.11定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。//定义项目结点的类型typedefstruct{intitemnum;//项目编号inttop;//项目取名次的数目,由用户定义3或5intrange[5];//名次intmark[5];//分数}itemnode;3.12定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。//定义学校结点类型typedefstruct{intschoolnum;//学校编号intscore;//学校总分intmscore;//男团体总分intwscore;//女团体总分itemnodec[m+w];//项目数组}schoolnode;.21\n3.13定义学校数组schoolnodeh[n]。采用数组结构有利于随机的存储和查询。定义全局标志变量intflag1、flag2,分别用以标志是否已经向系统输入了信息和标志系统中是否已经存在信息。定义文件指针FILE*report,用来指向存档的文件。3.2函数的设计和实现在概要设计中已经对该系统涉及的抽象数据类型和函数及其功能做了说明,这里就不在对每个函数进行一一说明,只对其中比较重要的功能模块进行描述。3.21信息输入及分数统计功能voidinputinformation()为输入信息及分数统计函数。在输入信息的同时进行分数的统计。可以输入各个学校各项目前三名或前五名的成绩。在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。利用swith语句前三名的分数赋为5、3、2,前五名的成绩赋为7,5、3、2、1,未取得成绩则赋为0。并统计团体总分,男团总分和女团总分。其主要功能代码如下:for(s=0;s#include#include#include#definen2//学校数目#definem1//男子项目数目#definew1//女子项目数目#definenull0intflag1=1;intflag2=1;//全局变量,用来标识是否已经向系统输入信息FILE*report;//定义项目结点的类型typedefstruct{intitemnum;//项目编号inttop;//项目取名次的数目,由用户定义3或5intrange[5];//名次intmark[5];//分数}itemnode;//定义学校结点类型typedefstruct{intschoolnum;//学校编号intscore;//学校总分intmscore;//男团体总分intwscore;//女团体总分.21\nitemnodec[m+w];//项目数组}schoolnode;schoolnodeh[n];//定义一个学校结点数组//信息输入模块,用来输入信息,建立系统voidinputinformation(){inti,j,k,s;for(i=0;in||h[i].schoolnum<=0);//输入学校结点信息for(j=0;jm+w||h[i].c[j].itemnum<=0);do{printf("*****取前3名or前5名:");scanf("%d",&h[i].c[j].top);}while(h[i].c[j].top!=3&&h[i].c[j].top!=5);printf("*****获得几个名次:");scanf("%d",&k);//输入项目信息for(s=0;s<5;s++)h[i].c[j].range[s]=0,h[i].c[j].mark[s]=0;//初始化排名和分数for(s=0;sn)printf("错误:这个学校没有参加此次运动会!\n\n\n");else{printf("要查询的项目编号:");scanf("%d",&j);if(j>m+w||j==0)printf("此次运动会没有这个项目\n\n\n");//学校编号超出范围,则输出警告else{printf("这个项目取前%d名,该学校的成绩如下:\n",h[0].c[j-1].top);for(k=0;k<5;k++)if(h[i-1].c[j-1].range[k]!=0)printf("名次:%d\n",h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩}}printf("请选择2继续,0跳出\n");scanf("%d",&s);printf("\n\n\n");.21\n}while(s==2);//循环执行输出语句break;case2:do{printf("要查询的项目编号:");scanf("%d",&s);if(s>m+w||s==0)printf("此次运动会不包括这个项目.\n\n\n");//项目编号超出范围则输出警告else{printf("该项目取前%d名,取得名次的学校\n",h[0].c[s-1].top);for(i=0;i