版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:运动会分数统计姓名:学号:专业班级:系院):设计时间:设计地点:成绩:指导教师评语:成绩:签名:年月日
1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2.课程设计任务及要求:课程设计题目运动会分数统计任务参加运动会有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)能统计各学校总分;(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校;(5)各学校分数为整型,学校名称、运动项目的名称为字符型;(6)界面友好,有中文提示。
3.课程设计说明书一需求分析生命在于运动,为了让我们的生活更加精彩,国家、社会、学校开办了许多运动会,身为学生的我们也参加了学校开办的运动会,然而运动会中那么多项目,得分不同,参加人员也不同,只靠人统计分数是很麻烦的,因此就需要设计一个程序来帮我们更好、更快、更精确的统计分数。该程序主要用于统计运动会中各个学校所得总分以及各校在男子和女子项目中所得分数,并提供查询功能。该程序需要具备以下功能:1.创建信息:创建学校名称、运动项目(字符型);输入运动会中各个项目前三名或前五名的成绩(成绩为整数型)。2.信息处理:统计各个学校在运动会中取得的总分;3.信息输出:能够按学校编号、学校总分、男女团体总分排序输出;4.信息查询:可以按学校编号查询学校某个项目的情况也可以按项目编号查询取得前三或前五名的学校;5.此程序要求界面友好并且有中文提示。二概要设计1.逻辑结构:采用线性结构——结构中的数据元素之间存在着一对一的线性关系;主要采用线性表。2.存储结构:主要采用线性表的顺序存储;输入操作:输入各个学校的名称、运动项目;输入运动会上前三或前五名成绩。结构体定义查找操作:1.按学校编号2.按运动项目编号3.主要核心算法:Createinformation(),//创建学校、运动会项目,输入运动会中前三名或前五名的成绩。OutputSchnum(),//按学校编号排序输出总分。OutputSchscore(),//按学校总分排序输出总分。OutputBoyscore(),//按男子团体总分排序输出总分。OutputGirlscore(),//按女子团体总分排序输出总分。SearchSchname(),//按学校编号各个学校情况。SearchPronum(),//按运动项目查询各个学校情况。输入学校名称、运动项目4.各算法之间的关系:输入学校名称、运动项目创建信息创建信息输入前三名或前五名的成绩输入前三名或前五名的成绩按学校编号排序输出总分按学校编号排序输出总分按学校总分排序输出按学校总分排序输出总分运动会分数统计运动会分数统计信息处理信息处理按男按男子团体总分排序输出总分按女子团体按女子团体总分排序输出总分按学校编号各个学校情况按学校编号各个学校情况信息查询信息查询按运动项目各个学校情况按运动项目各个学校情况三详细设计创建信息:voidCreateInformation()//创建信息//{ inti,a,b; cout<<"请输入学校个数:"; while(1) { cin>>n;//输入学校个数n//if(n>=1&&n<=20)//判断学校个数是否在1~20之间,不在则重新输入// break;else cout<<"输入数据有误,请重新输入:"; } for(i=1;i<=n;i++) { cout<<"请输入第"<<i<<"个学校名称:"; cin>>sch[i].name;//输入学校名称(字符型)// sch[i].score=0;//将学校总分、男女团体总分初始化为0// sch[i].boyscore=0; sch[i].girlscore=0; sch[i].num=i;//学校的编号// } cout<<"请输入男子团体项目个数和女子团体项目个数:";A: cin>>m>>w;//输入男女团体项目数目// if(m<=20&&m>=1&&w<=20&&w>=1)//判断男女团体项目数目是否符合标准// { for(i=1;i<=m+w;i++) { cout<<"请输入第"<<i<<"个项目的名称:"; cin>>pro[i].name;//输入项目名称// cout<<"请输入第"<<i<<"个项目有前三名还是有前五名(输入3或5):"; while(1) { cin>>c; pro[i].rank=c; if(c==3||c==5) break; else cout<<"输入有误,请重新输入:"; }cout<<"请输入第"<<i<<"个项目的前"<<c<<"名学校编号:"<<endl; for(a=1;a<=c;a++) {B: cout<<"第"<<a<<"名学校编号:"; cin>>b;//输入第a名学校编号// if(b>=1&&b<=n) { if(c==5)//判断项目有前三名还是有前五名// { pro[i].num[a]=b;//第i个项目的第a名编号// sch[b].score=sch[b].score+result5[a-1];//统计学校总分// if(i<=m)//判断此项目是男团体还是女团体// { sch[b].boyscore=sch[b].boyscore+result5[a-1];//统计男团体的总分// } else sch[b].girlscore=sch[b].girlscore+result5[a-1];//统计女团体总分// } else { pro[i].num[a]=b;//第i个项目的第a名编号// sch[b].score=sch[b].score+result3[a-1];//统计学校总分// if(i<=m)//判断此项目是男团体还是女团体// { sch[b].boyscore=sch[b].boyscore+result3[a-1];//统计男团体的总分// } else sch[b].girlscore=sch[b].girlscore+result3[a-1];//统计女团体总分// } } else { cout<<"你输入有误,请重新输入:"; gotoB; } } cout<<endl; } } else { cout<<"你输入有误,请重新输入:"; gotoA; }}信息处理:voidOutputschnum()//按学校编号排序,选用简单选择排序//{ inti,j,k; schooll; for(i=1;i<=n-1;++i) { k=i;//在i开始的n-i+1个记录中选关键码最小的记录// for(j=i+1;j<=n;++j) if(sch[j].num<sch[k].num)k=j;//k中存放关键码最小记录的下标// if(k!=i)//关键码最小的记录及第i个记录交换// { l=sch[i]; sch[i]=sch[k]; sch[k]=l; } } cout<<"按学校编号排列:"<<endl; cout<<"学校编号名称总分男子总分女子总分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputschscore()//按学校总分排序,选择直接插入排序//{ inti,j; for(i=2;i<=n;i++) { sch[0]=sch[i];//将待插入记录存放到监视哨r[0]中// j=i-1;//从前一个数开始比较// while(sch[0].score<sch[j].score)//寻找插入位置// { sch[j+1]=sch[j]; j=j-1; } sch[j+1]=sch[0];//将待插入记录插入到已排序的序列中// } cout<<"按学校总分排列:"<<endl; cout<<"学校编号名称总分男子总分女子总分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputBoyscore()//按男子团体总分排序输出,采用冒泡排序//{ intchange,i,j; schoolk; change=TRUE; for(i=1;i<=n-1&&change;++i) { change=FALSE; for(j=1;j<=n-i;++j) if(sch[j].boyscore>sch[j+1].boyscore)//如果sch[j]比前面asch[j-1]的小,则交换向上浮// {//交换数组sch[j]和sch[j-1]// k=sch[j]; sch[j]=sch[j+1]; sch[j+1]=k; change=TRUE; } } cout<<"按男子团体总分排列:"<<endl; cout<<"学校编号名称总分男子总分女子总分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}voidOutputGirlscore()//按女子团体总分排列输出,简单选择排序//{ inti,j,k; schooll; for(i=1;i<=n-1;++i) { k=i; for(j=i+1;j<=n;++j) if(sch[j].girlscore<sch[k].girlscore)k=j; if(k!=i) { l=sch[i]; sch[i]=sch[k]; sch[k]=l; } } cout<<"按女子团体总分排列:"<<endl; cout<<"学校编号名称总分男子总分女子总分"<<endl; for(i=1;i<=n;i++) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; } cout<<endl;}信息查询:voidSearchschnum()//按学校编号查询//{ intx,i; cout<<"请输入你要查询的学校编号:"; while(1) { cin>>x;//输入要查询的学校编号// if(x>=1&&x<=n)//判断输入的学校编号是否存在// break; else cout<<"你输入有误,请重新输入:"; } cout<<"你要查询的学校有关信息如下:"<<endl; cout<<"学校编号名称总分男子总分女子总分"<<endl; for(i=1;i<=n;i++) { if(sch[i].num==x) { cout<<""<<sch[i].num<<""<<sch[i].name<<""<<sch[i].score<<""<<sch[i].boyscore<<""<<sch[i].girlscore<<endl; break; } } cout<<endl;}voidSearchpronum()//按项目编号查询//{ intx,i; cout<<"请输入你要查询的项目编号:"; while(1) { cin>>x;//输入要查询的项目编号// if(x>=1&&x<=w+m)//判断要查询的项目编号是否存在// break; else cout<<"你输入有误,请重新输入:"; } cout<<pro[x].name<<"前3或前5名学校的情况如下:"<<endl; cout<<"名次"<<"学校编号"<<"名称"<<"学校总分"<<endl;for(i=1;i<=pro[x].rank;i++) { cout<<""<<i<<""<<pro[x].num[i]<<""<<sch[pro[x].num[i]].name<<""<<sch[pro[x].num[i]].score<<endl; } cout<<endl;}四设计及调试分析一开始定义结构体时,定义的不够全面,到后面编码时发现不够用,就要再次定义,这部分比较简单。整个代码在编写过程中,主要在创建信息的时候出现很多问题,一开始构思的时候总是不够全面,不是无法计算男女总分成绩,就是排名得分不知道怎么弄,于是就在网上搜了一些有关信息,找到了一个较好的方式,就是比较麻烦一些,不注意的话就会很容易绕进去,必须一步一步的看清楚。信息输出就比较简单一些,其中按不同方式输出,我就从书上找了几种排序方法,这些书上都有,基本没动。信息查询页比较简单,一开始创建信息的时候就把一些信息存储好了,查询时只需要把那些信息输出来就行了。调试时,有的输入老是循环,查看代码发现时if语句缺少括号,还有就是缺分号、变量没定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 23090-25:2025 EN Information technology - Coded representation of immersive media - Part 25: Conformance and reference software for carriage of visual volumetric vid
- 2024版汽车设备租赁合同范本
- 2024样板房样板间租赁合同3篇
- 福建省宁德市福鼎第十一中学2022年高一英语上学期期末试题含解析
- 2025-2030年中国水果罐头行业市场运营现状及投资前景规划研究报告
- 2025-2030年中国氯乙酸市场竞争格局及未来投资趋势分析报告
- 2025-2030年中国挂熨机行业发展状况及营销战略研究报告
- 2025-2030年中国手术显微镜市场发展现状及投资趋势分析报告
- 2025-2030年中国小型汽油机市场运营状况与发展潜力分析报告
- 2025-2030年中国室内照明市场前景趋势及投资战略规划研究报告
- 2025年工程合作协议书
- 2025年山东省东营市东营区融媒体中心招聘全媒体采编播专业技术人员10人历年高频重点提升(共500题)附带答案详解
- 2025年宜宾人才限公司招聘高频重点提升(共500题)附带答案详解
- KAT1-2023井下探放水技术规范
- 驾驶证学法减分(学法免分)题库及答案200题完整版
- 竣工验收程序流程图
- 清华经管工商管理硕士研究生培养计划
- 口腔科诊断证明书模板
- 管沟挖槽土方计算公式
- 国网浙江省电力公司住宅工程配电设计技术规定
- 烟花爆竹零售应急预案
评论
0/150
提交评论