2022年运动会分数统计系统 .pdf
《2022年运动会分数统计系统 .pdf》由会员分享,可在线阅读,更多相关《2022年运动会分数统计系统 .pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计评审表姓 名学 院学 号专业班级题 目运动会分数统计系统评审意见评审成绩指导教师签名职称评审时间年月日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 29 页课程设计作品验收表题目运动会分数统计系统参与人员姓 名班 级学 号设计任务与要求:1) 可以输入各个学校各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;5) 数据存入文件并能随时查询。作品完成情况:能按要求实现信息的输入、
2、统计,按多种方式输出、查询等基本功能。能将输入的信息存入文档,可供随时调用。能够正确应对部分不合理的输入。验收情况:验收教师签名: _ 年月日注:1. 除“验收情况”栏外,其余各栏均由学生在作品验收前填写。2. “验收情况”栏由验收小组按实际验收的情况如实填写。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 29 页目录1 问题描述与分析 . 1 课程设计的目的. 1 系统需求分析.1 2 概要设计 . .2 系统功能设计. .2 函数构造.2 3 详细设计.3 3.1 数据类型及重要变量的定义.3 3.2 函数的设计和实现.4 4 测
3、试.7 5 课程设计总结.11 5.1 调试中遇到的较重要问题的回忆.11 5.2 算法的效率及改良思想12 5.3 心得体会.12 参考文献 .13 附录.13 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 29 页1 . 运动会分数统计系统1 问题描述与分析1.1 课程设计目的为 了 稳 固 我 们 数 据 结 构 知 识 , 加 强 我 们 的 实 际 动 手 能 力 和 提 高 我 们 综合 素 质 , 提高我们对电脑软件工程的认识学院 组 织 我 们 进 行 了 数 据 结 构 课 程 设计 。 此次课程设计要到达以下几点目
4、的:1了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。2提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。4初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。1.2 系统需求分析问题描述:参加运动会有n 个学校,学校编号为1n。比赛分成 m个男子项目,和 w 个女子项目。项目编号为男子1m ,女子 m+1 m+w 。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前
5、三名的积分分别为: 5、3、2;哪些取前五名或前三名由学生自己设定。 m=20,n=20 。功能要求:1) 可以输入各个学校各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 29 页2 . 5) 数据存入文件并能随时查询;6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称。输出形式:有中文提示,各学校分数为整形。界面要求:有
6、合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。2 概要设计2.1 系统功能设计根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1 所示。1信息统计模实现信息的输入、统计、存档。2信息输出模块,实现信息的输出。3信息查询实现信息的查询。运动会分数统计系统信息统计模块信息输出模块信息查询模块分数统计信息输入信息存档图 1 系统功能结构图2.2 函数构造根 据 系 统 功 能 结 构 图 的 描 述 , 可 以 构 造 出 该 系 统 的 几 个 基 本 的 函 数 ,其 方 法 名 和 功
7、 能 如 表 1 所 示 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 29 页3 . 表 1 函数功能表函数功能void inputinformation( ) 输入和统计信息函数void output( ) 输出信息函数void inquiry( ) 查询信息函数void writedata( ) 数据存储函数void readdata( ) 读入数据函数3 详细设计3.1 数据类型及重要变量的定义1定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。/定义项目结点的类型typedef struct
8、 int itemnum; / 项目编号int top; /项目取名次的数目,由用户定义3或 5 int range5; / 名次int mark5; /分数itemnode; 2定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。/定义学校结点类型typedef struct int schoolnum; /学校编号int score; /学校总分int mscore; /男团体总分int wscore; /女团体总分itemnode cm+w; / 项目数组schoolnode; 精选学习资料 - - - - - - - - - 名师归纳总结 -
9、- - - - - -第 6 页,共 29 页4 . 3定义学校数组 schoolnode hn 。采用数组结构有利于随机的存储和查询。定义全局标志变量 int flag1 、flag2 ,分别用以标志是否已经向系统输入了信息和标志系统中是否已经存在信息。定义文件指针FILE * report,用来指向存档的文件。函数的设计和实现在概要设计中已经对该系统涉及的抽象数据类型和函数及其功能做了说明,这里就不在对每个函数进行一一说明,只对其中比较重要的功能模块进行描述。1信息输入及分数统计功能void inputinformation( ) 为输入信息及分数统计函数。在输入信息的同时进行分数的统计。
10、可以输入各个学校各项目前三名或前五名的成绩。在输入学校的参赛项目时,结果取前三名还是前五名自己定,用一个选择语句实现。利用swith 语句前三名的分数赋为 5、3、2,前五名的成绩赋为 7,5、3、2、1,未取得成绩则赋为 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; brea
11、k; 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; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 29 页5 . case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break;
12、case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks; 2信息输出功能void output( )为输出函数。列出一个输出目录利用swich 语句使函数按学校编号输出或按学校总分、男团总分、女团总分由高到低排序输出。利用辅助数组remember和冒泡排序的方法使之按分数的由高到低输出。利用循环语句do while( ) 当输入 2 时返回输出目录,输入0 是跳出循环返回主菜单。其流程图如图2 所示。开始显示选择菜单输入选项按学校总分输出按女团总分输出按学校编号输出按男团总分输出Case 1 Case 2Case 3Case 4跳
13、出 -结束是否跳出是否图 2 输出信息模块流程图3信息查询功能void inquiry( ) 为查询函数。列车一个查询目录利用swich 语句使函数按学校编号或项目编号查询,输出某学校的某个项目的得分情况或某个项目的前几名的学校。再利用精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 29 页6 . 循环语句 do while( ) 当输入 2 是返回查询目录,输入0 时跳出循环返回主菜单。其程序流程图如图 3 所示。开始显示选择菜单输入选项按学校编号查询按项目编号查询Case 1Case 2跳出 -结束是否跳出是否图 3 查询信息模块程
14、序流程图5主函数void main( )是主函数。 列出主菜单, 利用 switch 语句调用以上函数实现各个菜单的功能。想在每次查询结束想返回主菜单进行其它项时,应在 main( )函数中调用其它函数时再调用 main( )函数,如:switch(choice) case 1: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 29 页7 . printf( 输入信息 :n);inputinformation();writedata();printf(信息已存入档案!);main(); case 2: printf( 输出信息 :n);
15、if(flag1)readdata();output();main(); 在进入主菜单后为了确保系统中已经输入了信息,用标志标量 flag1 和 flag2 来控制循环。如果系统中没有任何信息,用户就不能选择输入或查询操作,此时会输出提示信息,并返回主菜单。直到用户输入了信息或退出系统。其实现代码如下: do printf(=欢送使用 =n); printf(nn*运动会分数统计系统*n); printf(nn*1.输入信息 *n); printf(*2.输出信息 *n); printf(*3.查询信息 *n); printf(*4.退出系统 *nnn); printf(=nn); print
16、f(*请选择要实现步骤的编号( 请确保已经输入信息! ):nn); scanf(%d,&choice); if(choice=4)break; else if(choice=1)flag1=0; else if(report=fopen(sportsdata.txt,r)!=null )flag2=0; else system(cls); printf(nnnn系统中无任何信息!nn 请先输入信息 !nnnn); while(flag1 & flag2); 4 测试运行程序,进入系统主菜单。用户可以选择输入、输出、查询信息或退出系统,界面如图 4 所示。精选学习资料 - - - - - - -
17、 - - 名师归纳总结 - - - - - - -第 10 页,共 29 页8 . 图 4 系统主界面1输入信息输入 1 得到进入输入信息模块。根据系统提示将以下信息输入系统中:学校编号 1,项目编号 1,取前 5 名,获得 1 个名次,是第 5 名;项目编号 2,取前3 名,获得 3 个名次,分别是 1、2、3 名。学校编号 2,项目编号 1,取前 5 名,获得 4 个名次,分别是 1、2、3、4 名;项目编号 2,取前 5 名,获得 0 个名次。输入信息后,会自动存档,并提示存档成功,然后自动返还主菜单,如图 5 所示。图 5 信息成功输入系统并存入了文档2输出信息输入 2 进入输出信息模
18、块,该模块分四项,分别代表一种输出方式,如图6 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 29 页9 . 图 6 输入信息模块界面用户可以按照自己的喜好,选择一种方式输入信息,输入2 返回输出信息模块,输入 0 返回主菜单。如图79 分别是按照学校编号、学校总分、女团总分输出的情况。图 7 按学校总分输出图 8 按学校总分输出精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 29 页10 . 图 9 按女团总分输出3查询信息输入 3 进入信息查询模块,该模块分为两项
19、,如图10所示。图 10 信息查询模块用户可以选择不同菜单进行查询,如图 11和图 12 分别是按照学校编号和项目编号查询的情况。图 11 按学校编号查询精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 29 页11 . 图 12 按项目编号查询4退出系统在主菜单下输入4 可以退出系统,并有中文提示,如下图。图 13 退出系统5 课程设计总结5.1 调试中遇到的较重要问题回忆1提出问题:所有输入输出内容只能在一屏内显示,学过c 语言,很知道” n”是换行, ”f”是换屏的,可是在这里就是无法实现。解决问题 : 输入 clrscr();
20、2提出问题:设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。分析问题:在供用户选择时,提供了几个选项,就写几个case语句,但是当用户输入的并不是这几个数字时,系统就不能做出正确判断。解决问题:修改case语句,添加 default 语句提示出错,要求重新输入。源代码如下:Default: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 29 页12 . clrscr(); /*清屏 */ printf( 输入错误,请重新选择); 3提出问题:用户在系统主菜单上进行选择时,假设没有输入任何初始信息,而选择
21、输出或查询操作,系统也会做出相应操作。解决问题:增加标识变量作为循环终止变量, 用来判断系统中是否已经输入了信息。假设没有就提示用户先输入信息。5.2 算法的效率及改良设想算法的效率:总的来讲,严重引响执 行速度的便是查找,查找任意一个数据,便要将其所在的结构从头至尾遍历一次,消耗大量的时间。改良设想:因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。5.3 心得体会在这次上机过程中遇到过一些问题,但经过不懈努力,解决了部分,还有的现在不能解决,留待日后思考和解决。比方说在运用数据结构排序的时候,方法的选择上,总是想用时间复杂度小的算法
22、,但结果出了问题,最后还是用了我们熟悉的选择法排序。在编写之前,做整体规划和详细设计很重要。只有思路清晰,设计合理可行,编码才有可能有的放矢,才能更加有效的完成任务。本次集中上机实验,对我来说可以算是一次挑战,因为在理论学习中没有好好的掌握,现在要独立完成一个较复杂的程序编写,确实有一点困难。但我对于难度一向是以积极迎战的态度来面对,认真积极努力完成这次集中上机的任务。对我来说这是一次很好的时机,同时我也很好的把握了这次时机,认真的完成了此次上机学习的任务,对自己今后在程序编写方面以及文档撰写方面相信会有很大的帮助,在此也对学校安排这样一次学习表示感谢, 最后希望自己在数据结构以及电脑的其他学
23、习方面能够得到很好的提高。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 29 页13 . 参考文献1李云清、杨庆红、揭安全.数据结构 C 语言版 M. 人民邮电大学出版社 ,200 2潘彦.算法设计与分析基础 M. 北京:清华大学出版社 ,200 原理、方法与应用 M. 中国水利水电出版社 ,200 4 吕凤翥 .C+语言程序设计第2 版.电子工业出版社 ,200 5 严蔚敏、吴伟民 .数据结构 C 语言版 M. 清华大学出版社 ,200 附录源代码:#include #include #include #include #defi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年运动会分数统计系统 2022 运动会 分数 统计 系统
限制150内