




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软 件 学 院课程设计报告书 2010 年 12 月 目录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成绩评定151 设计时间 2010-12-272 设计目的1. 通过设计、编码、调试等各环节的训练,深刻理解、牢固掌握数据结构和算法设计 技术,掌握分析、解决实际问题的能力。2. 综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,逐步 掌握软件开发的基本思想、方法和实现步骤,提高实际应用水平。3. 初步树立正确的程序设计思想,培养分析问题、解决问题的能力,提高查询资料和撰写书面文件的能力。 3设计任务 参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)设计程序达到以下要求:(1)产生各院系的成绩单,内容包括各院系取得的每项成绩的项目号、名次(成绩)、姓名和得分;(2)产生团体总分报表,内容包括院系编号、男子团体总分和团体总分。4 设计内容 4.1需求分析 本程序在运行期间,为了避免在运行大量数据时不会出错,并且能够在很短的时间内将运行结果稳定输出,就需要系统达到安全性能好,可靠性高,稳定性强,处理数据迅速等特点。应具备一定的实用性。4.1.1功能实现(1)记录功能。能记录一次运动会的所有项目信息,如其编号,名称,是男子项目还是女子项目,是取前三名还是前五名,以及取得名次的学校编号;能记录参加本次运动会的学校个数,以及学校的编号。并能添加,修改,删除其中的信息。(2)查询功能。能根据项目编号查询在该项目上获得名次的学校编号,并按名次先后顺序输出;能根据学校编号和项目编号查询该学校在该项目上获得的名次以及得分情况。(3)统计功能。能统计各个学校的总分,男子团体总分,女子团体总分。4.1.2相关规定:输入数据形式和范围:20以内的整数,也可以输入学校的名称,运动项目的名称4.1.3输出形式:有中文提示,各学校分数为整形。4.1.4界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。4.2总体设计4.2.1定义程序所用到的抽象变量及结构体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 /* 定义学院成绩单元素 */ int matnum; /* 项目编号 */ int position; /* 名次 */ char name20; /* 姓名 */ int score; /* 得分 */; struct School /* 定义学院结构体 */ int scnum; /* 学院校号 */ struct SchoolList list50; /* 成绩单列表数组 */ int team; /* 团体总分 */ int mteam; /* 男子团体总分 */ int fteam; /* 女子团体总分 */ int num; /* 累加数 */; struct Match ma50; /* 定义运动项目结构数组 */ struct School sc20; int a,b; /* 项目编号,项目名次个数 */4.2.2定义程序所用函数void Input (int c) /* 输入比赛数据函数 */void Index ( void ) /* 整理比赛数据函数 */ void 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 模块层次关系4.3详细设计主函数主要流程为:1 输入学院个数n,并输入男子m和女子项目个数w;2 调用input函数对m+n个项目分别选择名次类型并录入学院,姓名和成绩;3 在程序后台调用index函数处理录入的数据;4 在程序后台调用teamsco函数将成绩汇总,计算团体总分。5 调用TeamOutput函数输出团体报表;6 调用Output函数按学院查看报表;7 调用MatchOutput函数按项目查看报表;8 选择继续录入、返回按学院查看报表或按项目查看报表;9 结束;输入学院个数n,并输入男子m和女子项目个数w;TeamOutput()Teamsco()Index()Input()图4.3.2 函数调用图结束继续录入、返回查看MatchOutput()Output() )输入学院数n输入男子项目数m, 女子项目数w输入男子项目数m输出学院数n,比赛项目m+w个,男子项目m个,女子项目w个开始输入已结束的项目编号c 和输入名次类型rankInput(c)Index()Teamsco()Teamoutput()输入学院编号查询成绩列表c输入项目编号查询成绩列表c如果继续输入,输入1. 返回查看学院比赛结果输入2,返回查看项目结果输入3结束图4.3.3 流程图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. 输入需要查询排名的项目编号(输入2)。系统产生报表。9. 输入0完成10.输入0结束4.4.2分析该程序运行时需要逐步按照提示输入和判断,做出与系统相悖的输入或选择将返回重新与机器互动。程序运行时比较慢,可能是因为有些函数的时间复杂度较高。1. input函数只有一次循环,且循环次数由选择的名次类型来定。时间复杂度O(n).2. index函数是将运动员得分按学院和性别汇总。最多用到3次循环嵌套。时间复杂度O(n3)。程序运行较慢的原因可能在于此。3. teamsco函数用于计算团体总分。时间复杂度O(n2)。4. Output函数用于输出报表,循环一次,时间复杂度O(n)。5. TeamOutput 和MatchOutput函数分别用于输出团体报表和项目报表。时间复杂度均为O(n)。4.5 附录源程序#include #include #include 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 /* 定义学院成绩单元素 */ int matnum; /* 项目编号 */ int position; /* 名次 */ char name20; /* 姓名 */ int score; /* 得分 */; struct School /* 定义学院结构体 */ int scnum; /* 学院校号 */ struct SchoolList list50; /* 成绩单列表数组 */ int team; /* 团体总分 */ int mteam; /* 男子团体总分 */ 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; 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;imaa-1.num;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.scnumn) printf(n错误!输入的编号应为1-%d之间!,n); /* 输出出错信息 */ while (maa-1.listi.scnumn); printf(请输入此项获奖运动员姓名:); scanf(%s,&); 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;in;i+) sci.scnum=i+1; /* 初始化学院编号 */ sci.num=0; /* 初始化累加数 */ for(i=0;im+w;i+) /* 项目个数 */ for(j=0;jmai.num;j+) /* 项目名次 */ for(k=0;kn;k+) /* 学院编号 */ if(mai.listj.scnum=sck.scnum) /* scnum学院编号 */ sck.listsck.num.matnum=mai.matnum; /*matnum项目编号*/ sck.listsck.num.position=mai.listj.position; for(t=0;t20;t+) /* 学院编号 */ t=t; sck.listsck.num.score=mai.listj.score; sck.num+; return;void Teamsco ( void ) /* 团体成绩计算函数 */ int i,j; for(i=0;in;i+) sci.team=0; sci.mteam=0; sci.fteam=0; /* 初始化 */ for(i=0;in;i+) for(j=0;jsci.num;j+) sci.team=sci.team+sci.listj.score; /* 团体总分成绩计算 */ if(sci.listj.matnum=m) 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(比赛项目编号 名次 姓名 得分n); for(i=0;isca-1.num;i+) printf (%6d%10d%10s%15dn,sca-1.listi.matnum,sca-1.listi.position, ,sca-1.listi.score); return; void TeamOutput ( void ) /* 输出团体报表函数 */ int i; printf(n团体成绩报表n); printf(学院编号 团体总分 男子团体总分 女子团体总分n); for(i=0;in;i+) printf(%5d%10d%11d%13dn,sci.scnum,sci.team,sci.mteam,sci.fteam); return;void MatchOutput ( int t ) /* 输出比赛项目名次列表函数 */ int i; printf ( n项目名次列表 项目编号:%dn,t); printf ( n比赛项目编号 名次 获奖者姓名 获奖者所在学院编号 得分n); for ( i=0;imat-1.num;i+ ) printf( %6d%12d%12s%16d%14dn,mat-1.matnum,mat-1.listi.position, ,mat-1.listi.scnum,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-20)n ); while ( n20 ); do printf(n有多少个男子项目:(1-20); scanf(%d,&m); if ( m20 ) /* 输出出错信息 */ printf(n输入的男子项目数目不正确!请重新输入!(1-30)n); while ( m20 ); do printf(n有多少个女子项目:(1-20); scanf(%d,&w); if ( w20 ) /* 输出出错信息 */ printf ( n输入的女子项目数目不正确!请重新输入!(1-20)n ); while ( w20 ); printf (n本次有%d个学院参加,共%d个比赛项目,男子项目%d个,女子项目%d个。n,n,m+w,m,w); SCANFDATA: /* 比赛数据输入定位点 */ printf(请输入比赛结果资料n); for(i=0;i0)&(c0)&(c0)&(t=m+w) MatchOutput(t); /* 调用输出项目排名列表函数 */ else printf ( nn!错误!输入的数应为1-%d之间的整数!n,m+w ); /*输出错误信息 */ do printf ( 继续输入数据输入1,返回查看学院比赛结果输入2,返回查看项目比赛结果输入3.n); printf(退出请按0.); scanf ( %d,&k); if ( k=0 ) break; /* 跳出程序 */ else if ( k=1 ) goto SCANFDATA;/* 回到输入数据点继续进行输入数据 */ else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生鲜超市设计管理方案(3篇)
- 2017-2018学年高中历史人民版必修3试题专题一中国传统文化主流思想的演变1-2随堂双基达标
- 临时排水施工方案(3篇)
- 河南省郑州市中牟县2023-2024学年高一下学期4月期中生物试题(解析版)
- 保洁公司保洁方案(3篇)
- 养老机构社会捐赠方案(3篇)
- 互联网公司正式员工劳动合同示范文本
- 水库泄洪管道清淤方案(3篇)
- 屋面骨架施工方案(3篇)
- 2025年医师医院感染管理知识试题(含答案)
- GB/T 23480-2025电火花小孔加工机床精度检验
- 液氧站安全管理与操作培训
- 2025-2030国内中成药行业市场深度调研及发展前景与投资机会研究报告
- DB32T 4972.1-2024传染病突发公共卫生事件应急处置技术规范 第1部分:监测预警
- 银行合同签署管理制度
- 颈动脉粥样硬化的健康宣教
- 民丰县盼水河铅锑矿工程项目环境影响报告书
- 检验员考核标准
- 2025-2030咖啡豆和胶囊行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 餐饮业安全生产管理制度汇编
- 杜绝抱怨的培训
评论
0/150
提交评论