运动会分数统计系统课程设计报告.doc

上传人:小飞机 文档编号:4297763 上传时间:2023-04-14 格式:DOC 页数:22 大小:271.50KB
返回 下载 相关 举报
运动会分数统计系统课程设计报告.doc_第1页
第1页 / 共22页
运动会分数统计系统课程设计报告.doc_第2页
第2页 / 共22页
运动会分数统计系统课程设计报告.doc_第3页
第3页 / 共22页
运动会分数统计系统课程设计报告.doc_第4页
第4页 / 共22页
运动会分数统计系统课程设计报告.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《运动会分数统计系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《运动会分数统计系统课程设计报告.doc(22页珍藏版)》请在三一办公上搜索。

1、(运动会分数统计系统课 程 设 计 报 告数 据 结 构院系: 专业: 班级: 学号: $姓名: 教师: 时间: 一、问题描述|1、功能任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20),按要求实现相应的数据输入、查询、计分等功能。2、数据建议输入学校的名称,运动项目的名称等,其余信息学生自行设计;输出形式:有合理的提示,各学校分数为整形;数据的存储结构自行设计。

2、建议运动会的相关数据要存储在数据文件中。3、操作$1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。4、要求提供系统菜单,界面友好,提示信息完整。二、系统分析及设计1、需求分析根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息输出模块、信息查询模块、信息调用模块。其系统功能结构图如图所示。(1)、信息统计模块实现信息的输入、统计、存档。(2)、信息输出模块实现信息的输出。(3)、信息查询模块实现信息的

3、查询。(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。?信息输入运动会分数统计系统信息统计模块信息输出模块信息查询模块信息调用模块分数统计信息存档2、概要设计此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。之所以采用顺序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息写入文件以及读取文件。(1)、结构体定义如下:、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用户自己定义的取前3名还是前5名的积分、名次、分数。typedef structchar proname10; 开始】总分显示菜单界面按学校名

4、称输出按学校总分输出按男团总分输出按女团总分输出退出返回主菜单直接退出本系统主菜单$结束输入功能序号开始信息查询界面选择查询方式按学校编号查询按项目编号查询退出返回主菜单直接退出本系统主菜单结束j.rangem;if(si.aj.top=3) j.rangem)case 0: si.aj.markm=0; break;case 1: si.aj.markm=5; break;case 2: si.aj.markm=3; break;case 3: si.aj.markm=2; break;elseswitch(si.aj.rangem)case 0: si.aj.markm=0; break;

5、!case 1: si.aj.markm=7; break;case 2: si.aj.markm=5; break;case 3: si.aj.markm=3; break;case 4: si.aj.markm=2; break;case 5: si.aj.markm=1; break;si.score=si.score+si.aj.markm; score=si.Mscore+si.aj.markm; score=si.Wscore+si.aj.markm; core sj.score)?k=bi;bi=bj;bj=k;for(i=0;iN;i+) chnameendl;cout学校编号

6、:sbi.schnumendl;cout学校总分:sbi.scoreendl;cout男团总分:sbi.Mscoreendl;cout女团总分:sbi.Wscoreendl;coutvoid Inquiry()函数是信息查询函数,显示一个查询菜单,利用switch语句实现按学校编号查询和按项目编号查询,并输出该学校某个项目的情况或某个项目取得前3名或前5名的学校信息。利用循环语句while(1)返回查询菜单,break语句终止循环。其主要功能代码如下:按学校编号查询:couti;if(iN) j-1.top名,该学校的成绩如下:endl;for(k=0;k5;k+):if(si-1.aj-1.

7、rangek!=0)cout名次:si-1.aj-1.rangek;if(si-1.aj-1.markk!=0)cout分数:si-1.aj-1.markkendl;按项目编号查询:couty;if(yM+W | y=0) y-1.top名,取得该名次的学校:endl;for(i=0;jN;i+)for(j=0;j5;j+)if(si.ay-1.rangej!=0)cout学校名称:si.schname学校编号:si.schnum名次:si.ay-1.rangej; %if(si.ay-1.markj!=0)cout分数:si.ay-1.markj对于读写文件不是很熟悉,fread和fwrit

8、e函数不是很会用,在读出文件里的信息并输出时花了很长时间,不过,最后总算是会用了。3、输出界面运行程序,进入主菜单界面,用户可以选择输入信息、输出信息、查询信息、调用信息、关于或退出系统。注意:第一次运行本程序时,请选择输入信息。以后再运行时,为了避免再次输入大量信息,可以先选择调用信息,将以前输入的信息重新显示在屏幕上,再进行后续操作。&主菜单界面如图所示:(1)、输入信息选择1号功能进入输入信息模块,根据提示信息将以下信息输入系统中。学校名称:武汉理工大学;学校编号:1;项目名称:男子100米;项目编号:1;取前5名;获得1个名次,第5名。项目名称:女子100米;项目编号:2;取前3名,获

9、得3个名次,分别是第1、2、3名。学校名称:湖北经济学院;学校编号:2;项目名称:男子跳远;项目编号:1;取前5名,获得4个名次,分别是第1、2、3、4名。项目名称:女子跳高;项目编号:2;取前5名,获得一个名次,第3名。输入信息后,信息会自动存档,并自动返回到主菜单。【输入信息如图所示:(2)、输出信息输入2进入总分显示菜单界面。用户可根据自己喜好选择按学校名称输出、按学校总分输出、按男团总分输出、按女团总分输出或者退出返回主菜单、直接退出系统。#总分显示菜单界面如图所示:用户可根据自己喜好选择按哪种方式输出,信息输出后,按任意键返回总分显示菜单界面。输入5则返回主菜单,输入6则退出系统。以

10、下是分别按照学校名称、学校总分、男团总分、女团总分输出的情况。按学校名称输出:|按学校总分输出:按男团总分输出:按女团总分输出:】(3)、查询信息输入3进入信息查询界面,用户可根据自己喜好选择按学校编号查询、按项目编号查询或者退出返回主菜单、直接退出系统。信息查询界面如图所示:用户可根据自己喜好选择按哪种方式查询,查询结束后,按任意键返回信息查询界面。输入3则返回主菜单,输入4则退出系统。以下是分别按照学校编号、项目编号查询的情况。-按学校编号查询:按项目编号查询:(4)、调用信息为了避免每次运行程序时都要输入大量数据,在第一次运行程序后,就已经将信息自动存档,再次运行时,可以先直接调用信息,

11、按任意键返回主菜单,再进行后续操作。调用的信息如图所示:(5)关于界面自行设计(6)退出系统输入6则退出系统,并有中文提示。如图所示:|四、设计总结在课程设计的过程中,虽然遇到了很多问题,但最终差不多也都一一解决了。有的时候是一些很小的逻辑错误,需要的是细心。同学之间互相帮助,多个人思考多个力量,遇到自己解决不了的问题,向同学求助,能更好的帮我们解决所面临的难题。由于此次课程设计用到数据文件的知识,而这些知识老师都没讲,自学起来稍微有点困难,但也不是完全看不懂,只是对一些函数的应用不太熟悉,经过此次课程设计,对文件的读写有了更深的了解,也相应的培养了我的自学能力。经过C语言和数据结构的学习,我

12、发现数据结构与C语言有很大的不同,C语言不需要考虑存储结构之类的,只需要定义个变量或数组,集中精力于算法之上,而数据结构前期的整体规划和构思非常重要,先确立合理的存储结构,再来编写算法,实际上一旦存储结构确立了,算法的实现相对来说简单很多,难就难在如何确立合理的存储结构。能够把此次课程设计做出来,是一个很大的挑战,但我经过自己的不懈努力,终于完成了,看着自己的作品,心里还是说不出的高兴,虽然做的过程很艰难。人生就是要把困难踩在脚下。附录:!源代码:# include # include # include # define M 1 入信息 *endl;cout* 2.输出信息 *endl;co

13、ut* 3.查询信息 *endl;:cout* 4.调用信息 *endl;cout* 5.关于 *endl;cout* 6.退出系统 *endl;cout*endl;cout* 注:第一次运行本程序时请选择1号功能 *endl;cout*endl;void SubMenu() 学校名称输出 *endl;cout* 2.按学校总分输出 *endl;cout* 3.按男团总分输出 *endl;cout* 4.按女团总分输出 *endl;cout* 5.退出返回主菜单 *endl;cout* 6.直接退出本系统 *endl;cout*endl;void InitSch() core=0;si.Msc

14、ore=0;si.Wscore=0;void InfoInput() chname; 、coutsi.schnum; for(j=0;jM+W;j+) j.proname;coutsi.aj.pronum;coutsi.aj.top;coutk;for(m=0;m5;m+) j.rangem=0;si.aj.markm=0;for(m=0;mk;m+) j.rangem;if(si.aj.top=3) j.rangem)case 0: si.aj.markm=0; break;/case 1: si.aj.markm=5; break;case 2: si.aj.markm=3; break;

15、case 3: si.aj.markm=2; break;elseswitch(si.aj.rangem)(case 0: si.aj.markm=0; break;case 1: si.aj.markm=7; break;case 2: si.aj.markm=5; break;case 3: si.aj.markm=3; break;case 4: si.aj.markm=2; break;case 5: si.aj.markm=1; break;si.score=si.score+si.aj.markm; score=si.Mscore+si.aj.markm; score=si.Wsc

16、ore+si.aj.markm; chnameendl;cout学校编号:sbi.schnumendl;cout学校总分:sbi.scoreendl;cout男团总分:sbi.Mscoreendl;cout女团总分:sbi.Wscoreendl;coutendl;system(pause); chnameendl;cout学校编号:si.schnumendl;cout学校总分:si.scoreendl;cout男团总分:si.Mscoreendl;cout女团总分:si.Wscoreendl;coutendl;system(pause); core sj.score)!k=bi;bi=bj;b

17、j=k;Output(b); score sj.Mscore)|k=bi;bi=bj;bj=k;Output(b); score sj.Wscore)k=bi;bi=bj;bj=k;Output(b); 学校编号查询 *endl;cout* 2.按项目编号查询 *endl;cout* 3.退出返回主菜单 *endl;cout* 4.直接退出本系统 *endl;cout*endl;void Inquiry() j-1.top名,该学校的成绩如下:endl;for(k=0;k5;k+)?if(si-1.aj-1.rangek!=0)cout名次:si-1.aj-1.rangek;if(si-1.a

18、j-1.markk!=0)cout分数:si-1.aj-1.markkendl;,system(pause); system(cls); break;case 2: y-1.top名,取得该名次的学校:endl;for(i=0;jN;i+)for(j=0;j5;j+)if(si.ay-1.rangej!=0)¥cout学校名称:si.schname学校编号:si.schnum名次:si.ay-1.rangej;if(si.ay-1.markj!=0)cout分数:si.ay-1.markjendl;system(pause); system(cls); break;&case 3: chnam

19、eendl;cout学校编号:si.schnumendl;for(j=0;jM+W;j+)cout项目名称:si.aj.pronameendl;cout项目编号:si.aj.pronumendl;cout取前3名还是前5名:si.aj.topendl;for(m=0;m5;m+)¥fread(&si.aj.rangem,sizeof(int),1,fp);if(si.aj.rangem!=0)cout名次:si.aj.rangem;fread(&si.aj.markm,sizeof(int),1,fp);if(si.aj.markm!=0)cout分数:si.aj.markmendl;cout

20、endl;fclose(fp); /关闭文件void Menu() /主菜单函数 int number;doHead(); MainMenu();coutnumber;switch(number)case 1: /输入信息system(cls); Head();cout请输入运动会各学校信息:endl;InfoInput(); /信息输入模块fsave(); /保存信息system(cls); break;case 2: /输出信息system(cls); InfoOutput(); /信息输出模块break;case 3: /查询信息system(cls); Inquiry(); /信息查询

21、模块break;case 4: /调用信息system(cls); Head();Read(); /调用信息模块system(pause); system(cls); break;case 5: /“关于”模块system(cls); Head();About(); /“关于”界面system(pause); system(cls);break;case 6: /退出系统system(cls);Head();cout谢谢使用!endl;exit(0);default: /其他cout对不起,无此功能,请输入正确的功能序号!endl;system(pause); system(cls);break;while(1);void main() /主函数 Menu(); /主菜单函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号