ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:149KB ,
资源ID:7102229      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7102229.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(运动会分数统计论文.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

运动会分数统计论文.doc

1、 软 件 学 院 课程设计报告书 课程名称 数据结构 设计题目 运动会分数统计 目 录 1 设计时间.....................................1 2 设计目的.....................................1 3设计任务......................................1 4 设计内容 ....................................1 4

2、1需求分析 ....................................1 4.2总体设计.....................................3 4.3详细设计.....................................4 4.4测试与分析...................................8 4.4.1测试.......................................9 4.4.2分析.......................................9

3、4.5 附录.........................................9 5 总结与展望..................................22 参考文献........................................24 1 设计时间 2012.1.2-2012.1.8 2 设计目的 学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法

4、迅速找出程序代码中的错误并且修改。 3设计任务 参加运动会有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)产生团体总分报表,内容包括院系编号、男子团体总分、女子团体总分和团体总分。 4 设计内容 4.1需求分析 为了简便地对

5、运动会的报名、成绩的录入和统计,设计开发了本系统,以解决需求。当然,本系统只是一个较为简单的系统,仍然存在着一些问题,将在以后的学习中进行完善。 功能: 1)可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件

6、中。 测试数据:要求使用:1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。 4.2总体设计 根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1所示。 (1)信息统计模实现信息的输入、统计、存档。 (2)信息输出模块,实现信息的输出。 (3)信息查询实现信息的查询。 运动会分数统计系统 信息查询模块 信息输出模块 信息统计模块 信息存档 信息输入 分数统计

7、 函数功能表 函数 功能 void inputinformation( ) 输入和统计信息函数 void output( ) 输出信息函数 void inquiry( ) 查询信息函数 void writedata( ) 数据存储函数 void readdata( ) 读入数据函数 4.3详细设计 (1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。 //定义项目结点的类型 typedef struct { int itemnum; //项目编号 int top; //项目取

8、名次的数目,由用户定义3或5 int range[5]; //名次 int mark[5]; //分数 }itemnode; (2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。 //定义学校结点类型 typedef struct { int schoolnum; //学校编号 int score; //学校总分 int mscore; //男团体总分 int wscore; //女团体总分 itemnode c[m+w]; //项目数组 }schoo

9、lnode; (3) 定义学校数组schoolnode h[n]。采用数组结构有利于随机的存储和查询。定义全局标志变量int flag1、flag2,分别用以标志是否已经向系统输入了信息和标志系统中是否已经存在信息。定义文件指针FILE * report,用来指向存档的文件。 功能模块: (1)信息输入及分数统计功能 void inputinformation( )为输入信息及分数统计函数。在输入信息的同时进行分数的统计。可以输入各个学校各项目前三名或前五名的成绩。在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。利用swith语句前三名的分数赋为5、3

10、2,前五名的成绩赋为7,5、3、2、1,未取得成绩则赋为0。并统计团体总分,男团总分和女团总分。其主要功能代码如下: for(s=0;s

11、 break; case 1: h[i].c[j].mark[s]=5; break; case 2: h[i].c[j].mark[s]=3; break; case 3: h[i].c[j].mark[s]=2; break; } else switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0; b

12、reak; case 1: h[i].c[j].mark[s]=7; break; case 2: h[i].c[j].mark[s]=5; break; case 3: h[i].c[j].mark[s]=3; break; case 4: h[i].c[j].mark[s]=2; break; case 5: h[i].c[j].mark[s]=1; break; }

13、 h[i].score=h[i].score+h[i].c[j].mark[s]; (2)信息输出功能 void output( )为输出函数。列出一个输出目录利用swich语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。利用辅助数组remember[]和冒泡排序的方法使之按分数的由高到低输出。利用循环语句do while( )当输入2时返回输出目录,输入0是跳出循环返回主菜单。 (3)信息查询功能 void inquiry( )为查询函数。列车一个查询目录利用swich 语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得分情况或某个项目的前几名的

14、学校。再利用循环语句do while( )当输入2是返回查询目录,输入0时跳出循环返回主菜单。 (5)主函数 void main( )是主函数。列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。 想在每次查询结束想返回主菜单进行其它项时,应在main( )函数中调用其它函数时再调用main( )函数,如: switch(choice) { case 1: printf("输入信息:\n");inputinformation();writedata();printf("信息已存入档案!");main(); case 2:

15、 printf("输出信息:\n");if(flag1)readdata();output();main(); 在进入主菜单后为了确保系统中已经输入了信息,用标志标量flag1和flag2来控制循环。如果系统中没有任何信息,用户就不能选择输入或查询操作,此时会输出提示信息,并返回主菜单。直到用户输入了信息或退出系统。其实现代码如下: do{ printf("======================欢迎使用======================\n"); printf("\n\n*****************运动会分数统计系统************

16、\n"); printf("\n\n********************1.输入信息*************************\n"); printf("********************2.输出信息*************************\n"); printf("********************3.查询信息*************************\n"); printf("********************4.退出系统*****************

17、\n\n\n"); printf("================================================\n\n"); printf("********请选择要实现步骤的编号( 请确保已经输入信息! ):\n\n"); scanf("%d",&choice); if(choice==4)break; else if(choice==1)flag1=0; else if((report=fopen("sportsdata.txt","r"))!=null )flag2=

18、0; else { system("cls"); printf("\n\n\n\n系统中无任何信息!\n\n请先输入信息!!!\n\n\n\n"); } }while(flag1 && flag2); 4.4测试与分析 4.4.1测试 运行程序,进入系统主菜单。用户可以选择输入、输出、查询信息或退出系统,界面 输入信息: 输出信息: 4.4.2分析 算法的效率:总的来讲,严

19、重影响执行速度的便是查找,查找任意一个数据,便要将其所在的结构从头至尾遍历一次,耗费大量的时间。 改进设想:因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。 4.5 附录 #include #include #include #include #define n 2//学校数目 #define m 1//男子项目数目 #define w 1//女子项目数目 #define null 0 int flag1=1; int fl

20、ag2=1;//全局变量,用来标识是否已经向系统输入信息 FILE *report; //定义项目结点的类型 typedef struct { int itemnum; //项目编号 int top; //项目取名次的数目,由用户定义3或5 int range[5]; //名次 int mark[5]; //分数 }itemnode; //定义学校结点类型 typedef struct { int schoolnum; //学校编号 int score; //学校总分 int mscor

21、e; //男团体总分 int wscore; //女团体总分 itemnode c[m+w]; //项目数组 }schoolnode; schoolnode h[n];//定义一个学校结点数组 //信息输入模块,用来输入信息,建立系统 void inputinformation() { int i,j,k,s; for(i=0;i

22、 //初始化各结点 for(i=0;in || h[i].schoolnum<=0);//输入学校结点信息 for(j=0;j

23、 scanf("%d",&h[i].c[j].itemnum); }while(h[i].c[j].itemnum>m+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("*****获得几个名次:"); s

24、canf("%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;s

25、 switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=5; break; case 2: h[i].c[j].mark[s]=3; break; case 3: h[i].c[j].mark[s]=2; break; }

26、 else switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0; break; case 1: h[i].c[j].mark[s]=7; break; case 2: h[i].c[j].mark[s]=5; break; case 3: h[i].c[j].mark[s]=3; break; case

27、 4: h[i].c[j].mark[s]=2; break; case 5: h[i].c[j].mark[s]=1; break; } h[i].score=h[i].score+h[i].c[j].mark[s]; //按取前三名还是取前五名分别记分 if(j<=m-1) h[i].mscore=h[i].mscore+h[i].c[j].mark[s]; //是男子项目则记到男子

28、分数里面去 else h[i].wscore=h[i].wscore+h[i].c[j].mark[s]; //是女子项目则记到女子项目里面去 } printf("\n"); } } } //信息输出模块,用来输出信息,可以选择按不同的方式输出信息 void output() { int choice,i,j,k; int remember[n]; int sign; do { printf("************

29、1.按学校编号输出.*******************\n"); printf("*******************2.按学校总分输出.*******************\n"); printf("*******************3.按男团总分输出.*******************\n"); printf("*******************4.按女团总分输出.*******************\n"); printf("\n\n******************* 请选择编号**

30、\n\n:"); scanf("%d",&choice); switch(choice) { case 1: //按编号顺序输出 for(i=0;i

31、 printf("*****女团总分: %d\n\n\n",h[i].wscore); } break; case 2: //按学校总分输出 for(i=0;i

32、{ k=remember[i]; remember[i]=remember[j]; remember[j]=k; } } // 用冒泡排序方法,用辅助数组记住学校结点下标 for(i=0;i

33、 printf("*****学校总分:%d\n" ,h[remember[i]].score); printf("*****男团总分:%d\n",h[remember[i]].mscore); printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore); //按所记下标顺序输出 } break;

34、 case 3: //按男团总分输出 for(i=0;i

35、 } } for(i=0;i

36、]].wscore); } break; case 4: //按女团总分输出 for(i=0;i

37、ber[i]; remember[i]=remember[j]; remember[j]=k; } } for(i=0;i

38、d\n",h[remember[i]].mscore); printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore); } break; } printf("请选择 2 继续,0 跳出\n"); scanf("%d",&sign); }while(sign==2); //循环执行输出语句 } //查询模块,用来查询信息

39、 void inquiry() { int choice; int i,j,k,s; printf("\n*****1:按学校编号查询\n"); printf("\n*****2:按项目编号查询\n"); printf("\n\n*****请选择查询方式:"); //提供两种查询方式 scanf("%d",&choice); switch(choice) { case 1: do {

40、 printf("要查询的学校编号:"); scanf("%d",&i); if(i>n) printf("错误:这个学校没有参加此次运动会!\n\n\n"); else { printf("要查询的项目编号:"); scanf("%d",&j); if(j>m+w||j==0) printf("此次运动会没有这个项目\n\n\n"); //学校编号超出范围,则输出警告 else { printf("这个项目取前 %d名,该学校的

41、成绩如下:\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"); }while(s==2);

42、 //循环执行输出语句 break; case 2: 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

43、i++) for(j=0;j<5;j++) if(h[i].c[s-1].range[j]!=0) printf("学校编号:%d,名次:%d\n",h[i].schoolnum,h[i].c[s-1].range[j]); } //输出该项目取得名次学校的成绩 printf("\n\n\n继续 2,跳出 0\n"); scanf("%d",&i); printf("\n\n\n"); }while(i==2);

44、 break; } } void writedata() //把数据存储在文件中 { //FILE *report; int i; if((report=fopen("sportsdata.txt","w"))==null) { printf("文件不存在,不能打开文件!\n"); exit(1); } for(i=0;i

45、 fclose(report); } //按头结点块写入 void readdata() //读出文件中数据的函数 { //FILE *report; int i,j,s; if((report=fopen("sportsdata.txt","r"))==null) { printf("文件不存在,不能打开文件!\n"); exit(1); }

46、 for(i=0;i

47、izeof(int),1,report); //printf("%d\n",k); //printf("******女团总分:"); fread(&h[i].wscore,sizeof(int),1,report); for(j=0;j

48、port); for(s=0;s<5;s++) { fread(&h[i].c[j].range[s],sizeof(int),1,report); } for(s=0;s<5;s++) { fread(&h[i].c[j].mark[s],sizeof(int),1,report); } } } fclose(report); //关闭文件 }

49、 //按照读一个数据就输出一个数据的方式显示数据内容 //主函数 void main() { int choice; do { printf("======================欢迎使用======================\n"); printf("\n\n*****************运动会分数统计系统********************\n"); printf("\n\n********************1.输入信息*************************\n");

50、printf("********************2.输出信息*************************\n"); printf("********************3.查询信息*************************\n"); printf("********************4.退出系统*************************\n\n\n"); printf("================================================\n\n"); printf("********请选择要

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服