数据结构课程设计报告-运动会分数统计(能实现).doc_第1页
数据结构课程设计报告-运动会分数统计(能实现).doc_第2页
数据结构课程设计报告-运动会分数统计(能实现).doc_第3页
数据结构课程设计报告-运动会分数统计(能实现).doc_第4页
数据结构课程设计报告-运动会分数统计(能实现).doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

运动会分数统计1需求分析 根据课程设计任务书要求,本系统开发主要完成以下功能和性能。任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,nn时输出错误:这个学校没有参加此次运动会! 否则,输入项目编号,如果jm+w|j=0,输出此次运动会没有这个项目。否则,使用for循环输出相关数据,从而实现查询功能。3.5调用统计结果模块调用统计模块从文件中读取数据输出,流程图如图5所示。 图5调用统计结果模块流程图 此模块定义了FILE *report; int i,j,k,s; for循环中套用for循环,for循环分别对学校编号、学校总分、男团总分、女团总分进行输出,在使用for循环对各学校的项目编号、所取名次数量、各个名次输出,实现对文件中的数据的调用。4调试与测试4.1 调试调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。调试过程中出现的问题和处理方式:(1) 程序出现语法错误发现是输入名次信息的地方忘带地址符&。 添加取地址符。 printf(*名次:); scanf(%d,&hi.cj.ranges);(2)在输出模块不能将全部的学校信息输出,属于算法编写错误,正确的程序应该为:if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k;4.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。测试数据过程如下。(1) 输入功能测试输入数据1:1 1 1 3 3 1 2 3 2 3 2 2 3 2 1 3 2 1 3 2 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按照要求输入的数据能够显示正确的结果。参考文献1 谭浩强.C语言程序设计(第三版).清华大学出版社,20072 姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,20083 吴伟民,严蔚敏.数据结构.清华大学出版社,20084 李廉治,姜文清,郭福顺.数据结构.大连理工大学出版社,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返回主菜单。(4)查询信息:如图13所示:输入3进入信息查询模块: 图13查询界面 按学校编号查询:如图14所示:图14按学校编号查询界面 按项目编号查询:如图15所示:图15按项目编号查询界面 输入错误信息时给出提示:如图16、17所示:图16错误提示界面图17错误提示界面 输入2继续查询,输入0返回主菜单(5) 调用信息输入4时显示出所有的信息:如图18、19所示:图18调用信息界面图19调用信息界面附录2源程序#include#include#include #include #define n 2/学校数目 #define m 1/男子项目数目 #define w 1/女子项目数目#define null 0typedef struct int itemnum; /项目编号 int top; /取名次的数目 int range5; /名次 int mark5; /分数itemnode; /定义项目结点的类型typedef structint schoolnum; /学校编号 int score; /学校总分 int mscore; /男团体总分 int wscore; /女团体总分 itemnode cm+w; /项目数组headnode;/定义头结点类型headnode hn;/定义一个头结点数组void inputinformation() /输入信息,建立系统int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化头结点 for(i=0;in;i+) printf(*学校编号:); scanf(%d,&hi.schoolnum); /输入头结点信息 for(j=0;jm+w;j+) printf(*项目编号:); scanf(%d,&hi.cj.itemnum); printf(*取前3名or前5名:); scanf(%d,&hi.cj.top); printf(*获得几个名次:); scanf(%d,&k); /输入项目信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分数 for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /输入所获名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; break; case 2: hi.cj.marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;/按取前三名还是取前五名分别记分 if(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子项目则记到男子分数里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子项目则记到女子项目里面去 printf(n); void output() /输出函数 int choice,i,j,k;int remembern;int sign; do printf(*1.按学校编号输出.*n); printf(*2.按学校总分输出.*n); printf(*3.按男团总分输出.*n); printf(*4.按女团总分输出.*n); printf(nn* 请选择编号*nn:); scanf(%d,&choice); switch(choice) case 1:for(i=0;in;i+) printf(nn*学校编号:%dn,hi.schoolnum); printf(*学校总分:%dn ,hi.score); printf(*男团总分:%dn,hi.mscore); printf(*女团总分: %dnnn,hi.wscore); /按编号顺序输出 break; case 2: for(i=0;in;i+)rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score) k=rememberi;rememberi=rememberj,rememberj=k; / 用冒泡排序方法,用辅助数组记住头结点下标 for(i=0;in;i+) Printf(“nn*学校编号:%dn”,hrememberi.schoolnum); printf(*学校总分:%dn ,hrememberi.score); printf(*男团总分:%dn,hrememberi.mscore); printf(*女团总分: %dnnn,hrememberi.wscore);/按所记下标顺序输出 /按学校总分输出 break; case 3: for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k; for(i=0;in;i+) printf(nn*学校编号:%dn,hrememberi.schoolnum); printf(*学校总分:%dn ,hrememberi.score); printf(*男团总分:%dn,hrememberi.mscore); printf(*女团总分: %dnnn,hrememberi.wscore); /按男团总分输出 break; case 4: for(i=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.wscorehj.wscore) k=rememberi;rememberi=rememberj;rememberj=k; for(i=0;in)printf(错误:这个学校没有参加此次运动会!nnn); elseprintf(要查询的项目编号:); scanf(%d,&j); if(jm+w|j=0) printf(此次运动会没有这个项目nnn);/学校编号超出范围,则输出警告 else printf(这个项目取前 %d名,该学校的成绩如下:n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次运动会不包括这个项目.nnn);/项目编号超出范围则输出警告elseprintf(该项目取前 %d名,取得名次的学校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(学校编号:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /输出该项目取得名次学校的成绩 printf(nnn继续 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;void writedata() /把数据存储在文件中 FILE *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(不能打开文件n); exit(1); for(i=0;in;i+)fwrite(&hi,sizeof(headnode),1,report); fclose(report); /按头结点块写入 void readdata() /读出文件中数据的函数 FILE *report; int i,j,k,s; if(report=fopen(sportsdata.txt,r)=null) printf(file can not be openedn); exit(1); for(i=0;in;i+) printf(*学校编号:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*学校总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*男团总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*女团总分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(nnn); getch(); for(j=0;jm+w;j+) printf(*项目编号:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*所取名次数量:); fread(&k,sizeof(int),1,report); prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论