2022年数据结构课程方案报告运动会计分系统

上传人:鲁** 文档编号:567314388 上传时间:2024-07-19 格式:PDF 页数:20 大小:224.35KB
返回 下载 相关 举报
2022年数据结构课程方案报告运动会计分系统_第1页
第1页 / 共20页
2022年数据结构课程方案报告运动会计分系统_第2页
第2页 / 共20页
2022年数据结构课程方案报告运动会计分系统_第3页
第3页 / 共20页
2022年数据结构课程方案报告运动会计分系统_第4页
第4页 / 共20页
2022年数据结构课程方案报告运动会计分系统_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《2022年数据结构课程方案报告运动会计分系统》由会员分享,可在线阅读,更多相关《2022年数据结构课程方案报告运动会计分系统(20页珍藏版)》请在金锄头文库上搜索。

1、个人资料整理仅限学习使用软 件 学 院课程设计报告书2018 年 12 月精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 20 页个人资料整理仅限学习使用目录1 设计时间 . 32 设计目的 . 33 设计任务 . 34 设计内容 . 34.1 需求分析 . . 34.2 总体设计 . 44.3 详细设计 . 64.4 测试与分析 . 94.4.1 测试. 84.4.2 分析. 84.5 附录 . 95 总结与展望 . 145.1 设计总结 . 145.2 优化展望 14参考文献 . 15成绩评定 . 15精选学习资料 - - - -

2、- - - - - 名师归纳总结 - - - - - - -第 2 页,共 20 页个人资料整理仅限学习使用1 设计时间2018-12-272 设计目的1.通过设计、编码、调试等各环节的训练,深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。2.综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,逐步掌握软件开发的基本思想、方法和实现步骤,提高实际应用水平。3.初步树立正确的程序设计思想,培养分析问题、解决问题的能力,提高查询资料和撰写书面文件的能力。3 设计任务参加运动会有 n 个学校,学校编号为1n。比赛分成 m 个男子工程,和w 个女子工程。工程编号

3、为男子1m ,女子m+1 m+w。不同的工程取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。m=20,n=20 )设计程序达到以下要求:1)产生各院系的成绩单,内容包括各院系取得的每项成绩的工程号、名次成绩)、姓名和得分;2)产生团体总分报表,内容包括院系编号、男子团体总分和团体总分。4 设计内容4.1 需求分析本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。应具备一定的实用性。4.1.1 功能实现1

4、)记录功能。能记录一次运动会的所有工程信息,如其编号,名称,是男子工程还是女子工程,是取前三名还是前五名,以及取得名次的学校编号;能记录参加本次运动会的学校个数,以及学校的编号。并能添加,修改,删除其中的信息。2)查询功能。能根据工程编号查询在该工程上获得名次的学校编号,并按名次先后顺序输出;能根据学校编号和工程编号查询该学校在该工程上获得的名次以及得分情精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 20 页个人资料整理仅限学习使用况。 /* 输入比赛数据函数 */ void Index ( void /* 整理比赛数据函数 */vo

5、id Teamsco ( void /* 团体成绩计算函数 */void Output ( int a /* 输出学院成绩列表函数 */ void TeamOutput ( void /* 输出团体报表函数 */ void MatchOutput ( int t /* 输出比赛工程名次列表函数 */ 4.2.3 各程序模块之间的层次 Input( Index( Teamsco(Output( TeamOutput(Main( 图 4.3.1 模块层次关系输 入 学院 个 数n,并输入 男 子m 和 女子 工 程个数Input( Index( Teamsco(TeamOutput(Output(

6、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 20 页个人资料整理仅限学习使用输入学院数n 输入男子工程数m, 女子工程数w 输 入 男 子 工 程数 m 输 出 学 院 数 n , 比 赛 工 程m+w个,男子工程m 个,女子工程w开始输入已结束的工程编号c 和输入名次类型rank Input(c Index( Teamsco( Teamoutput( 输入学院编号查询成绩列表c 输入工程编号查询成绩列表c 如果继续输入,输入1. 返回查看学院比赛结果输入2,返回查看工程结果输入3结束图 4.3.3 流程图精选学习资料 - - -

7、- - - - - - 名师归纳总结 - - - - - - -第 7 页,共 20 页个人资料整理仅限学习使用4.4 测试与分析4.4.1 测试1. 输入参加比赛的学院个数8,男子工程数 2,女子工程数 2。2. 输入已结束的工程编号1, 并选择前 5 名。输出:工程 1 取前 5 名)。3输入学院编号、姓名、得分。输入另一已结束工程编号2输出:工程2 取前 3名)。4输入另一已结束工程编号3,并选择前 5 名。输出:工程 3 取前 5 名)。5输入另一已结束工程编号4输出:工程 4 取前 3 名)。6输入 0,系统输出报表。7输入学院编号查询成绩列表输入 3)。系统产生报表。8. 输入需要

8、查询排名的工程编号. 2. index 函数是将运动员得分按学院和性别汇总。最多用到3 次循环嵌套。时间复杂度 O(n3。程序运行较慢的原因可能在于此。3. teamsco函数用于计算团体总分。时间复杂度O(n2。4. Output 函数用于输出报表,循环一次,时间复杂度O(n。5. TeamOutput 和 MatchOutput函数分别用于输出团体报表和工程报表。时间复杂度均为 O(n。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 20 页个人资料整理仅限学习使用4.5 附录源程序#include #include #includ

9、e int n,m,w。 /* 定义代表学院、男子工程、女子工程数量的变量 */ struct Result /* 定义工程比赛结果名次列表元素结构体 */ int scnum。 /* 学院编号 */ char name20。 /* 姓名 */ int position。 /* 名次 */ int score。 /* 得分 */ 。struct Match /* 定义运动工程结构体 */ int matnum。 /* 工程编号 */ int num。 /* 工程名次个数 */ struct Result list5。 /* 名次列表数组 */ 。struct SchoolList /* 定义学

10、院成绩单元素 */ int matnum。 /* 工程编号 */ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 20 页个人资料整理仅限学习使用 int position。 /* 名次 */ char name20。 /* 姓名 */ int score。 /* 得分 */ 。struct School /* 定义学院结构体 */ int scnum。 /* 学院校号 */ struct SchoolList list50。 /* 成绩单列表数组 */ int team。 /* 团体总分 */ int mteam。 /* 男子团体总分

11、 */ int fteam。 /* 女子团体总分 */ int num。 /* 累加数 */ 。struct Match ma50。 /* 定义运动工程结构数组 */ struct School sc20。int a,b。 /* 工程编号 ,工程名次个数 */ void Input (int c /* 输入比赛数据函数 */ int i,a,rank。 a=c。 do printf(选择名次类型 :取前 3 名输入 3,取前 5 名输入 5:。/* 判断名次类型 */ scanf(%d,&rank。 if (rank=3 maa-1.num=3。精选学习资料 - - - - - - - - -

12、 名师归纳总结 - - - - - - -第 10 页,共 20 页个人资料整理仅限学习使用 if(rank=5 maa-1.num=5。 else if(rank!=3&rank!=5 printf(输入错误 ,请重新 。 while (rank!=3&rank!=5 。 printf(n 第%d 项:取前 %d名,a,maa-1.num。 for(i=0。i maa-1.listi.position=i+1 。 do printf(n 输入第 %d 名所在学院编号 (1-%d:,i+1,n 。 scanf(%d,&maa-1.listi.scnum 。 if(maa-1.listi.scn

13、umn printf(n 错误!输入的编号应为1-%d 之间!,n。 /* 输出出错信息 */ while (maa-1.listi.scnumn 。 printf(请输入此项获奖运动员姓名:。 scanf(%s,&maa-1.listi.name 。 printf(请输入该运动员得分 。 scanf(%d,&maa-1.listi.score 。 printf(该运动员得分为 :%d,maa-1.listi.score 。 return。 void Index ( void /* 整理比赛数据函数 */ int i,j,k,t 。 for(i=0。i 精选学习资料 - - - - - - -

14、 - - 名师归纳总结 - - - - - - -第 11 页,共 20 页个人资料整理仅限学习使用 sci.scnum=i+1。 /* 初始化学院编号 */ sci.num=0。 /* 初始化累加数 */ for(i=0。i /* 工程个数 */ for(j=0。j /* 工程名次 */ for(k=0。k /* 学院编号 */ if(mai.listj.scnum=sck.scnum /* scnum 学院编号 */ sck.listsck.num.matnum=mai.matnum 。 /*matnum 工程编号 */ sck.listsck.num.position=mai.listj

15、.position 。 for(t=0。t /* 学院编号 */ sck.listsck.num.namet=mai.listj.namet 。 sck.listsck.num.score=mai.listj.score 。 sck.num+。 return。 void Teamsco ( void /* 团体成绩计算函数 */ int i,j。 for(i=0。i sci.team=0。 sci.mteam=0。 sci.fteam=0。 /* 初始化 */ for(i=0。i for(j=0。j sci.team=sci.team+sci.listj.score。 /* 团体总分成绩计算

16、*/ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 20 页个人资料整理仅限学习使用 if(sci.listj.matnum sci.mteam=sci.mteam+sci.listj.score 。 /* 男子团体成绩计算 */ else sci.fteam=sci.fteam+sci.listj.score 。 /* 女子团体成绩计算 */ return。 void Output ( int a /* 输出学院成绩列表函数 */ int i。 printf(n 成绩报表学院编号 :%dn,a。 printf(比赛工程编号名次姓名

17、得分n。 for(i=0。i printf (%6d%10d%10s%15dn,sca-1.listi.matnum,sca-1.listi.position, sca-1.listi.name,sca-1.listi.score。 return。 void TeamOutput ( void /* 输出团体报表函数 */ int i。 printf(n 团体成绩报表 n。 printf(学院编号团体总分男子团体总分女子团体总分n。 for(i=0。i printf(%5d%10d%11d%13dn,sci.scnum,sci.team,sci.mteam,sci.fteam。 return。

18、 void MatchOutput ( int t /* 输出比赛工程名次列表函数 */ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 20 页个人资料整理仅限学习使用 int i。 printf ( n 工程名次列表工程编号 :%dn,t。 printf ( n 比赛工程编号名次获奖者姓名获奖者所在学院编号得分n。 for ( i=0。i printf( %6d%12d%12s%16d%14dn,mat-1.matnum,mat-1.listi.position, mat-1.listi.name,mat-1.listi.scnu

19、m,mat-1.listi.score 。 return。 void main ( void int i,c,t,k。 /* c 为工程编号 */ printf(nn*运动会分数统计系统 *n。 printf(请根据提示进行操作 。 do printf( n 请输入参加运动会的学院个数:(1-20 。 scanf(%d,&n。 if( n20 /* 输出出错信息 */ printf( n 输入的学院数目不正确 !请重新输入 !(1-20n 。 while ( n20 。 do printf(n 有多少个男子工程 :(1-20。 scanf(%d,&m 。 if ( m20 /* 输出出错信息

20、*/ printf(n 输入的男子工程数目不正确!请重新输入 !(1-30n。 while ( m20 。 do printf(n 有多少个女子工程 :(1-20。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 20 页个人资料整理仅限学习使用 scanf(%d,&w 。 if ( w20 /* 输出出错信息 */ printf ( n 输入的女子工程数目不正确!请重新输入 !(1-20n 。 while ( w20 。 printf (n 本次有 %d 个学院参加,共 %d 个比赛工程,男子工程 %d 个,女子工程 %d 个。n,n

21、,m+w,m,w。SCANFDATA: /* 比赛数据输入定位点 */ printf(请输入比赛结果资料 n。 for(i=0。i mai.matnum=i+1。 /* 初始化工程编号 */ c=1。 /* 初始化 a */ do printf(n 请输入已结束的比赛工程编号(1-%d(0=完成 :,m+w。 scanf(%d,&c。 if(c0&(c Input(c。 /* 调用输入函数 */ else if(c=0 break。 /* 输出出错信息 */ else printf(n!error:输入的数应为 1-%d 之间的整数 !n,m+w 。 while(c!=0 。 printf(n

22、 正在进行整理数据 ,请稍候 .n。 /* 稍候 */ Index(。 /* 调用整理函数 */ Teamsco( 。 /* 调用团体成绩计算函数 */ TeamOutput(。 /* 调用输出团体报表函数 */ SEESCHOOL: /* 查看学院数据定位点 */ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 20 页个人资料整理仅限学习使用 c=1。 /* 初始化 c*/ while ( c!=0 printf(nn 请输入学院编号查询成绩列表(1-%d(0=完成:,n。 scanf(%d,&c。 if(c=0 break。 e

23、lse if(c0&(c Output(c。 /* 调用输出学院成绩列表函数 */ else printf(n!错误!输入的数应为 1-%d 之间的整数 !n,n。 /*输出出错信息 */ SEEMATCH: /* 查看工程结果数据定位点 */ t=1。 while ( t!=0 printf ( nn 请输入需要查询排名的工程编号(1-%d(0=完成:,m+w 。 scanf ( %d,&t 。 if ( t=0 break。 else if ( (t0&(t MatchOutput(t。 /* 调用输出工程排名列表函数 */ else printf ( nn!错误!输入的数应为 1-%d

24、之间的整数 !n,m+w 。/*输出错误信息 */ do printf ( 继续输入数据输入1,返回查看学院比赛结果输入2,返回查看工程比赛结果输入3.n。 printf(退出请按 0.。 scanf ( %d,&k。 if ( k=0 break。 /* 跳出程序 */ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 20 页个人资料整理仅限学习使用 else if ( k=1 goto SCANFDATA。/* 回到输入数据点继续进行输入数据 */ else if ( k=2 goto SEESCHOOL。/* 回到查看学院比赛结

25、果点 */ else if ( k=3 goto SEEMATCH。 /* 回到查看工程比赛结果点 */ else printf ( nn! 错误 !输入的数应为对应操作的整数!n 。 /*输出出错信息 */ while (k!=0&k!=1&k!=2&k!=3。 system (cls。 /* 清屏函数 */ printf (n 程序运行完毕 !谢谢!按任意键退出 !n。 getchar (。 exit (1。 /* 退出程序 */ return。 5 总结与展望5.1 设计总结本程序主要用结构体和数组储存数据,通过循环套用和选择结构实现运动会各工程各学院成绩的处理并输出。在设计程序过程中逐

26、渐体验到数据结构对程序实现的巨大作用,可以说数据结构使C 程序更加灵活多变,功能更强大。调试程序时无数次的失败也曾让我垂头丧气,但我咬牙坚持了下来。当一个问题解决时,例如解决了在选择名次类型和最后输出报表时发生冲突,我也体验到了独立完成任务并解决问题的乐趣。本次课程设计给了我发挥能力的平台,也使我的编程能力和调试能力得到了提高。5.2 优化展望该程序在人机互动时输入量较大,且提示太多,界面不够干净利落。可尝试将得分在程序中依次赋给各名次,免去录入成绩的过程,同时也减少了错误的发生。另外最好产生一个 txt 文件将报表保存,以增强该系统的实用性。精选学习资料 - - - - - - - - -

27、名师归纳总结 - - - - - - -第 17 页,共 20 页个人资料整理仅限学习使用参考文献1 谭浩强 c程序设计 第三版)清华大学出版社, 2005年 7月第 3版:216221 2 严蔚敏,吴伟民 数据结构 c语言版)清华大学出版社,2018年 3月:458508 3王娣,安剑,孙秀梅 c语言程序开发人民邮电出版社,2018年 1月:14000精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 20 页个人资料整理仅限学习使用成绩评定成绩教师签字精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 20 页个人资料整理仅限学习使用精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 20 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号