您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 运动会分数统计系统设计报告
数据结构课程设计报告设计题目:运动会分数统计系统专业计算机科学与技术班级计算机1202班学生学号指导教师一、设计目的:通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册需求概述:设计一个运动会成绩系统,使之能提供以下功能:1)录入比赛成绩2)统计比赛成绩3)比赛成绩排序4)比赛成绩查询5)比赛成绩保存6)退出统计系统二、总体设计编写目的:根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。2.1总体设计该系统可以按功能进行模块划分,其模块图如下:系统模块图其中:成绩录入模块完成学校成绩的录入功能,录入信息包括项目编号、项目名称、项目排名、每项积分等;成绩统计模块完成已录入学校总积分和每项排名的显示;成绩排序模块完成学校成绩的排序,排序时对应有按学校编号查询、按学校总分查询和按男女团体总分三种方式;运动会分数管理系统成绩录入成绩统计成绩排序成绩查询成绩保存退出系统按男女团体按学校总分按学校编号成绩查询模块完成职工信息的查询功能,查询时对应有按学校编号查询、按项目编号查询两种方式;成绩保存模块完成将学校成绩以文本文件形式保存在本地的功能;退出系统模块退出本系统的功能;2.2数据结构本系统中主要的数据结构就是学校的信息以及各项成绩,包含学校名称、学校编号、学校总分、男子团体总分、女子团体总分、各个项目的编号,分数等,在处理过程中各项可以作为一个学校的不同属性来进行处理。数据结构:学校:structschool{charSname[20];//学校名称intSnumber;//学校编号intSscore;//学校总分intMscore;//男子团体总分intWscore;//女子团体总分}项目:structSport{intEnumber;//项目编号intEscore;//项目分数}2.3程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:程序流程图详细设计编写目的:根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。三、详细设计:对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:首先输入参加运动会的数量以及学校名称;①成绩录入模块:按项目序号输入比赛成绩;分成录取前5名或前3名成绩;②成绩统计模块:输出各学校总积分情况;输出已结束的比赛信息;否否否否否开始菜单选择录入统计查询排序成绩录入保存成绩统计学校编号总成绩男女团体成绩保存结束是是是是是项目编号学校编号③成绩排序模块:if(按学校编号排序)按学校编号输出各学校积分信息;elseif(按总成绩排序)按总成绩排序输出各学校积分信息;elseif(按男女团体成绩排序)按平男女团体成绩输出各学校积分信息;else提示输入不合适;④成绩查询模块:if(按学校编号查询)输出该学校得到积分的所有项目成绩;elseif(项目编号查询)else提示输入不合适;⑤成绩保存模块:创建一个新的文件;将比赛积分、排名等情况以文本形式存储在本地程序的详细清单如下:#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineMAXN31charSport_event[MAXN+1][10]={0,100米,200米,400米,800米,1500米,5000米,4*100米,4*400米,110米栏,跳高,跳远,铅球,标枪,铁饼,三级跳,100米,200米,400米,800米,1500米,3000米,4*100米,4*400米,100米栏,跳高,跳远,铅球,标枪,铁饼};intList[MAXN][6];structschool{charSname[20];//学校名称intSnumber;//学校编号intSscore;//学校总分intMscore;//男子团体总分intWscore;//女子团体总分structSport{intEnumber;//项目编号intEscore;//项目分数};structSportEvent[MAXN];};voidinput(structschool*parr,intN);//函数功能:1.成绩录入voidstatistics(structschool*parr,intN);//函数功能:2.成绩统计voidsore(structschool*parr,intN);//函数功能:3.成绩排序voidinquire(structschool*parr,intN);//函数功能:4.成绩查询voidwrite(structschool*parr,intN);//函数功能:5.将数据写入文件voidexit(structschool*parr,int*N);//函数功能:0.结束整个程序intcmp(constvoid*a,constvoid*b){if((*(structschool*)a).Sscore(*(structschool*)b).Sscore)return1;elseif((*(structschool*)a).Sscore==(*(structschool*)b).Sscore)return((*(structschool*)a).Snumber(*(structschool*)b).Snumber?1:-1);elsereturn-1;}intcmpM(constvoid*a,constvoid*b){if((*(structschool*)a).Mscore(*(structschool*)b).Mscore)return1;elseif((*(structschool*)a).Mscore==(*(structschool*)b).Mscore)return((*(structschool*)a).Snumber(*(structschool*)b).Snumber?1:-1);elsereturn-1;}intcmpW(constvoid*a,constvoid*b){if((*(structschool*)a).Wscore(*(structschool*)b).Wscore)return1;elseif((*(structschool*)a).Wscore==(*(structschool*)b).Wscore)return((*(structschool*)a).Snumber(*(structschool*)b).Snumber?1:-1);elsereturn-1;}intcmpN(constvoid*a,constvoid*b){return((*(structschool*)a).Snumber(*(structschool*)b).Snumber)?1:-1;}intmain(){structschool*parr;inti,j;intN=0;charch='\0';memset(List,0,sizeof(List));printf(\n\n\n\n);printf(\t\t|******************************************|\n);printf(\t\t|-------欢迎使用运动会分数统计系统-------|\n);printf(\t\t|******************************************|\n);printf(\n\n\n\n);printf(请输入参加运动会的学校个数:);scanf(%d,&N);parr=(structschool*)malloc((sizeof(structschool)*(N+1)));for(i=1;i=N;i++)for(j=1;jMAXN;j++){parr[i].Event[j].Escore=0;parr[i].Event[j].Enumber=j;}for(i=1;i=N;i++){printf(请输入第%02d个学校名称:,i);scanf(%s,parr[i].Sname);parr[i].Snumber=i;}printf(按任意键继续\n);getch();while(1){system(cls);printf(\n\n\n\n);printf(\t\t|******************************************|\n);printf(\t\t|------------运动会分数统计系统----------|\n);printf(\t\t|--------------1.比赛成绩录入------------|\n);printf(\t\t|--------------2.比赛成绩统计------------|\n);printf(\t\t|--------------3.比赛成绩排序------------|\n);printf(\t\t|--------------4.比赛成绩查询------------|\n);printf(\t\t|--------------5.比赛成绩保存------------|\n);printf(\t\t|--------------0.退出统计系统------------|\n);printf(\t\t|******************************************|\n);printf(\t\t\n);scanf(%c,&ch);switch(ch){case'1':input(parr,N);break;case'2':statistics(parr,N);break;case'3':sore(parr,N);break;case'4':inquire(parr,N);break;case'5':write(parr,N);break;case'0':exit(parr,&N);break;default:printf(\n\t输入错误!按回车键返回主菜单!);}}free(parr);return0;}//函数功能:列出学校名称voidlist_school(structschool*parr,intN){inti;qsort(&parr[1],N,sizeof(structschool),cmpN);printf(\n参与此次运动会的学校编号及名称:\n);for(i=1;i=N;i++)printf(\t\t\t%02d%s\n,parr[i].Snumber,parr[i].Sname);return;}//函数功能:1.成绩录入voidinput(structschool*parr,intN){inti;intnum,temp;intserial;printf(\t男子项目:\n);printf(\t\t01.100米02.200米03.400米04.800米05.1500米\n);printf(\t\t06.5000米07.4*100米08.4*400米09.110米栏10.跳高\n);printf(\t\t11.跳远12.铅球13.标枪14.铁饼15.三级跳\n);printf(\t女子项目:\n);printf(\t\t16.100米17.200米18.400米19.800米20.1500米\n);printf(\t\t21.3000米22.4*100米23.4*400米24.100米栏25.跳高\n);printf(\t\t26.跳远27.铅球28.标枪29.铁饼\n);getchar();while(1){printf(\n\t请输入项目编号:);scanf(%d,&num);if(num29||num1){printf(输入错误!\n);get
本文标题:运动会分数统计系统设计报告
链接地址:https://www.777doc.com/doc-6277000 .html