运动会分数统计实验报告_第1页
运动会分数统计实验报告_第2页
运动会分数统计实验报告_第3页
运动会分数统计实验报告_第4页
运动会分数统计实验报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录一.设计要求.1二.设计分析.1三.设计实现.3四.实验心得.8五.参考文献.8一.设计要求:任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)功能要求:1).可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

2、规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;二.设计分析:本程序中学校的存储结构为数组运动项

3、目结构体:运动项目结构运动项目名称运动项目编号运动项目得分图1 运动项目结构体学校结构体:学校结构学校编号学校名称所得总分男子得分女子得分男子项目数量男子项目结构女子项目数量女子项目结构男子项目总分女子项目总分图2学校机构体主菜单结构:1.输入各个项目成绩2.按学校编号排序输出3.按学校总分排序输出4.按男女团体总分排序输出6.按项目编号查询取得名次的学校7.存储数据8.读取数据0.退出系统5.按学校编号查询学校某个项目开始选择操作图3主菜单结构主要结构:typedef struct/项目结构char xmm100;/项目名称char num5;/项目编号int score;/项目得分xian

4、gm;typedef struct schoolint num; /学校编号char schoolname20;/学校名称int manscore;/男子得分int womenscore;/女子得分 int sum;/总分xiangm manMAX;/男子项目int man_num;/男子项目个数int man_score;/男子团体总分xiangm womenMAX;/女子项目int women_num;/女子项目个数int women_score;/女子团体总分school;主要函数:void fun1_1() /对学校和项目进行初始化操作void fun1_lurum1(int flag

5、)/录入男子取前3名的项目成绩void fun1_luruw1(int flag) /录入女子取前3名的项目成绩void fun1_lurum2(int flag) /录入男子取前5名的项目成绩void fun1_luruw2(int flag) /录入女子取前5名的项目成绩void fun1_sum() /计算学校总得分以及男子团体总分女子团体总分void fun1()/输入各个项目成绩,调用前面的函数void fun2()/按学校编号排序输出void fun3()/按学校总分排序并输出结果void fun4()/分别进行男子团体总分排序和女子团体排序并输出void fun5()/输入一个学

6、校的编号查询该学校取得的成绩void fun6()/输入一个项目的编号查询该项目的得分学校情况void save()/将数据写到school.txt文件中void load()/从school.txt文件中读取数据三.设计实现:1.程序主界面:图4程序主界面2.输入功能:图5输入功能完成3.按学校编号排序输出:图6按学校编号排序输出4.按学校总分排序输出:图7按学校总分排序输出5.按男女团体总分排序输出:图8按男女团体总分排序输出6.按学校编号查询某个项目的情况:图9按学校编号查询某个项目的情况7.按项目编号查询取得名次的学校:图10按项目编号查询取得名次的学校8.存储数据:图11存储数据9.

7、存储的数据:图12存储的数据10.读取数据:图13读取数据四.实验心得:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际能力的具体训练和考察过程写之前有第一感觉是用链表写但是上次的课程设计写的就是链表,所以想尝试一下用数组写这个题目写完之后两者对比起来处理这种题目还是用链表比较方便用数组太花存储空间了,处理太多数据的话就不现实了在文件读写的时候由于数据太多写入和读取都要一个一个处理通过这次课程设计使我懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考能力而对于程序。最大的体会就是必须严谨。身为一个程序员必须要有严谨

8、的思维。好的程序是让别人挑不出毛病的程序,而不是动不动就修改升级。那样用户用起来会觉得麻烦。而且会质疑会不会还有什么隐藏着的漏洞。学习编程是一个循序渐进的过程,如果想提高不是短时间就能看出效果的。必须坚持多练,多写。很多东西老师不可能一一教大家。遇到问题第一时间不要想着找别人。要通过自己的努力完成这个目标。有困难就查资料,实在是攻克不了了再去求助同学和老师。这样才能更好地提升自己的能力。五.参考文献:1 谭浩强C语言程序设计学习辅导(第2版)(M)清华大学出版社(2009-01出版)2 数据结构:C语言版/严蔚敏,吴伟民编著. -北京:清华大学出版社,2007源代码:#include#incl

9、ude#include#includeusing namespace std;#define MAX 22typedef struct/项目结构char xmm100;/项目名称char num5;/项目编号int score;/项目得分xiangm;typedef struct schoolint num; /学校编号char schoolname20;/学校名称int manscore;/男子得分int womenscore;/女子得分 int sum;/总分xiangm manMAX;/男子项目int man_num;/男子项目个数int man_score;/男子团体总分xiangm

10、womenMAX;/女子项目int women_num;/女子项目个数int women_score;/女子团体总分school;school sMAX;int schooln;/学校个数void fun1_1()/对学校和项目进行初始化操作int m,w;/学校数量,男子项目数以及女子项目数printf(*初始化数据*n);printf(请输入学校数:);scanf(%d,&schooln);if(schooln20 & schooln0)printf(输入错误请重新输入:);scanf(%d,&schooln);for(int i=1;i20)printf(输入错误请重新输入);scanf

11、(%d%d,&m,&w);printf(对男子项目进行初始化:n);for(i=1;i=m;i+)/初始化男子项目printf(输入男子项目的编号和名称:);char c100;char num5;scanf(%s%s,num,c);for(int j=1;j=schooln;j+)strcpy(sj.mani.xmm,c);strcpy(sj.mani.num,num);sj.mani.score=0;sj.man_num=m;printf(对女子项目进行初始化:n);for(i=1;i=w;i+)/初始化女子项目printf(输入女子项目的名称和编号:);char c100;char nu

12、m5;scanf(%s%s,num,c);for(int j=1;j=schooln;j+)strcpy(sj.womeni.xmm,c);strcpy(sj.womeni.num,num);sj.womeni.score=0;sj.women_num=w;printf(初始化完成.n);int find_xmnum1(char *num)int i,flag;for(i=1;i=s1.man_num;i+)if(!strcmp(s1.mani.num,num)flag=i;break;return flag;int find_xmnum2(char *num)int i,flag;for(i

13、=1;i=s1.women_num;i+)if(!strcmp(s1.womeni.num,num)flag=i;break;return flag;void fun1_lurum1(int flag)printf(请输入第一名的学校编号:);int y;scanf(%d,&y);printf(%s该项目获得5分n,sy.schoolname);sy.manflag.score+=5;printf(请输入第二名的学校编号:);scanf(%d,&y);printf(%s该项目获得3分n,sy.schoolname);sy.manflag.score+=3;printf(请输入第三名的学校编号:

14、);scanf(%d,&y);printf(%s该项目获得2分n,sy.schoolname);sy.manflag.score+=2;void fun1_luruw1(int flag)printf(请输入第一名的学校编号:);int y;scanf(%d,&y);printf(%s该项目获得5分n,sy.schoolname);sy.womenflag.score+=5;printf(请输入第二名的学校编号:);scanf(%d,&y);printf(%s该项目获得3分n,sy.schoolname);sy.womenflag.score+=3;printf(请输入第三名的学校编号:);s

15、canf(%d,&y);printf(%s该项目获得2分n,sy.schoolname);sy.womenflag.score+=2;void fun1_lurum2(int flag)printf(请输入第一名的学校编号:);int y;scanf(%d,&y);printf(%s该项目获得7分n,sy.schoolname);sy.manflag.score+=7;printf(请输入第二名的学校编号:);scanf(%d,&y);printf(%s该项目获得5分n,sy.schoolname);sy.manflag.score+=5;printf(请输入第三名的学校编号:);scanf(

16、%d,&y);printf(%s该项目获得3分n,sy.schoolname);sy.manflag.score+=3;printf(请输入第四名的学校编号:);scanf(%d,&y);printf(%s该项目获得2分n,sy.schoolname);sy.manflag.score+=2;printf(请输入第五名的学校编号:);scanf(%d,&y);printf(%s该项目获得1分n,sy.schoolname);sy.manflag.score+=1;void fun1_luruw2(int flag)printf(请输入第一名的学校编号:);int y;scanf(%d,&y);

17、printf(%s该项目获得7分n,sy.schoolname);sy.womenflag.score+=7;printf(请输入第二名的学校编号:);scanf(%d,&y);printf(%s该项目获得5分n,sy.schoolname);sy.womenflag.score+=5;printf(请输入第三名的学校编号:);scanf(%d,&y);printf(%s该项目获得3分n,sy.schoolname);sy.womenflag.score+=3;printf(请输入第四名的学校编号:);scanf(%d,&y);printf(%s该项目获得2分n,sy.schoolname);

18、sy.womenflag.score+=2;printf(请输入第五名的学校编号:);scanf(%d,&y);printf(%s该项目获得1分n,sy.schoolname);sy.womenflag.score+=1;void fun1_sum()for(int i=1;i=schooln;i+)for(int j=1;j=s1.man_num;j+)si.sum+=si.manj.score;si.man_score+=si.manj.score;for(j=1;j=s1.women_num;j+)si.sum+=si.womenj.score;si.women_score+=si.wo

19、menj.score;void fun1()/输入比赛项目数据fun1_1();printf(对男子项目得分进行统计:n);for(int i=1;i=s1.man_num;i+)printf(请输入项目编号:);char num5;scanf(%s,num);int flag;/储存该项目的下标flag=find_xmnum1(num);printf(%sn,s1.manflag.xmm);printf(输入1,该项目取前3名录入成绩;输入2,该项目按前5名录入成绩:);int x;scanf(%d,&x);if(x=1)fun1_lurum1(flag);if(x=2)fun1_lurum

20、2(flag);printf(对女子项目得分进行统计:n);for(i=1;i=s1.women_num;i+)printf(请输入项目编号:);char num5;scanf(%s,num);int flag;/储存该项目的下标flag=find_xmnum2(num);printf(%sn,s1.womenflag.xmm);printf(输入1,该项目取前3名录入成绩;输入2,该项目按前5名录入成绩:);int x;scanf(%d,&x);if(x=1)fun1_luruw1(flag);if(x=2)fun1_luruw2(flag);fun1_sum();void fun2()fo

21、r(int i=1;ia2.key;void fun3()arry aMAX;for(int i=1;i=schooln;i+)ai-1.key=si.sum;ai-1.de=i;sort(a,a+schooln,comp);for(i=1;i=schooln;i+)printf(%d %s %dn,sai-1.de.num,sai-1.de.schoolname,sai-1.de.sum);void fun4()printf(男子团体输出!n);arry aMAX;for(int i=1;i=schooln;i+)ai-1.key=si.man_score;ai-1.de=i;sort(a,

22、a+schooln,comp);for(i=1;i=schooln;i+)printf(%d %s %dn,sai-1.de.num,sai-1.de.schoolname,sai-1.de.man_score);printf(女子团体输出!n);arry bMAX;for(i=1;i=schooln;i+)bi-1.key=si.women_score;bi-1.de=i;sort(b,b+schooln,comp);for(i=1;i=schooln;i+)printf(%d %s %dn,sbi-1.de.num,sbi-1.de.schoolname,sbi-1.de.women_sc

23、ore);void fun5()printf(请输入要查询的学校编号:);int n;scanf(%d,&n);for(int i=1;i=sn.man_num;i+)printf(%s %s %dn,sn.mani.num,sn.mani.xmm,sn.mani.score);for(i=1;i=sn.women_num;i+)printf(%s %s %dn,sn.womeni.num,sn.womeni.xmm,sn.womeni.score);void fun6()printf(请输入要查询的项目编号:);char c5;scanf(%s,c);int flag=0,flagg=0;f

24、lag=find_xmnum1(c);if(!flag)flag=find_xmnum2(c);flagg=1;for(int i=1;i=schooln;i+)if(flagg & si.womenflag.score!=0)printf(%d %s %dn,si.num,si.schoolname,si.womenflag.score);else if(si.manflag.score!=0)printf(%d %s %dn,si.num,si.schoolname,si.manflag.score);void save()FILE*fp;int i;if(fp=fopen(school.

25、txt,w)=NULL)printf(不能打开文件n);return ;fprintf(fp,%dn,schooln);for(i=1;i=schooln;i+)fprintf(fp,%d %s %d %d %d %d %d %d %d ,si.num,si.schoolname,si.manscore,si.womenscore,si.sum,si.man_num,si.man_score,si.women_num,si.women_score);for(int j=1;j=si.man_num;j+)fprintf(fp,%s %s %d ,si.manj.num,si.manj.xmm,

26、si.manj.score);for(int k=1;k=si.women_num;k+)fprintf(fp,%s %s %d ,si.womenk.num,si.womenk.xmm,si.womenk.score);fprintf(fp,n);printf(存储成功!n);fclose(fp);void load()int i;FILE*fp;if(fp=fopen(school.txt,r)=NULL)printf(不能打开文件n);return ;fscanf(fp,%dn,&schooln);for(i=1;i=schooln;i+)fscanf(fp,%d %s %d %d %d

27、 %d %d %d %d ,&si.num,si.schoolname,&si.manscore,&si.womenscore,&si.sum,&si.man_num,&si.man_score,&si.women_num,&si.women_score);for(int j=1;j=si.man_num;j+)fscanf(fp,%s %s %d ,si.manj.num,si.manj.xmm,&si.manj.score);for(int k=1;k=si.women_num;k+)fscanf(fp,%s %s %d ,si.womenk.num,si.womenk.xmm,&si.womenk.score);printf(%dn,schooln);for(i=1;i=schooln;i+)printf(%d %s %d %d %d %d %d %d %d ,si.num,si.schoolname,si.manscore,si.womenscore,si.sum,si.man_num,si.man_score,si.women_num,

温馨提示

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

评论

0/150

提交评论