《数据结构课程设计-运动会分数统计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计-运动会分数统计.docx(23页珍藏版)》请在课桌文档上搜索。
1、淮海工学院计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:运动会分数统计姓名:学号:专业班级:系(K):设计时间:设计地点:成绩:指导教师评语:签名:1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3 .提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4 .训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2 .课程设计任务及要求:课程设
2、计题目运动会分数统计任务参加运动会有n个学校,学校编号为1no比赛分成m个男子项目,和W个女子项目。项目编号为男子1m,女子m+1m+wo不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(水=20,nn;输入学校个数n/if(n=l&n=20)判断学校个数是否在120之间,不在则重新输入break;elseCOUt。输入数据有误,请重新输入:;for(i=l;i=n;i+)(cout请输入第ischi.name;输入学校名称(字符型)schi.score=0;将学校总分、男女团体总分初始化为0schi
3、.boyscore=0;schi.girlscore=0;schi.num=i;学校的编号coutmw;输入男女团体项目数目if(01=1&帔=20&川二1)判断男女团体项目数目是否符合标准(for(i=l;i=m+w;i+)(cout请输入第proi.name;输入项目名称cout请输入第c;proi.rank=c;if(c=3c=5)break;elsecout输入有误,请重新输入:;cout请输入第i个项目的前c名学校编号:endl;for(a=l;a=c;a+)(B:COUt第ab;输入第a名学校编号if(b=lftb=n)(if(c=5)判断项目有前三名还是有前五名(Proi.num
4、a=b;第i个项目的第a名编号schb.Score=Schb.SCOre+result5aT;统计学校总分if(i=m)判断此项目是男团体还是女团体(schb.boyscore=schb.boyscore+result5a-l;/统计男团体的总分elseschb.girlscore=schb.girlscore+result5a-l;统计女团体总分elsePrOi.numa=b;第i个项目的第a名编号/schb.score=schb.SCOre+result3aT;统计学校总分if(i=m)判断此项目是男团体还是女团体(schb.boyscore=schb.boyscore+result3a-
5、l;/统计男团体的总分elseschb.girlscore=schb.girlscore+result3a-l;统计女团体总分)else(cout你输入有误,请重新输入:;gotoB;Jcoutendl;else(cout你输入有误,请重新输入:;gotoA;)信息处理:voidOUtPUtSChnUn)()按学校编号排序,选用简单选择排序(inti,j,k;school1;for(i=l;i=n-l;+i)(k=i;在i开始的n-i+1个记录中选关键码最小的记录for(j=il;j=n;+j)if(schj.numschk.num)k=jk中存放关键码最小记录的下标/if(k!=i)关键码最
6、小的记录及第i个记录交换l=schi;schi=schk;schk=l;)COUt按学校编号排列:*endl;CoU学校编号名称总分男子总分女子总分endl;for(i=l;i=n;i+)(coutzz,zschi.numz,z,schi.namez,zzschi.score/zzschi.boyscore/,yzschi.girlscoreendl;coutendl;voidOUtPUtSChSCore()按学校总分排序,选择直接插入排序(inti,j;for(i=2;i=n;i+)(schO=schi;将待插入记录存放到监视哨r0中j=iT;从前一个数开始比较while(schO.scor
7、eschj.score)寻找插入位置schj+l=schj;j=j-l;)schj+l=schO:将待插入记录插入到已排序的序列中)COUt“按学校总分排列:endl;男子总分女子总分 endl;“schi. name7zyzschi. boyscorez,COUt学校编号名称总分for(i=l;i=n;i+)(COUt,schi.numz,yzschi.scorezz“schi.girlscoreendl;coutendl;)voidOUtPUtBoySCOre()按男子团体总分排序输出,采用冒泡排序intchange,i,j;schoolk;change=TRUE;for(i=l;i=n-
8、l&change;+i)change=FLSE;for(j=l;jschj+l.boyscore)/如果schj比前面aschjT的小,则交换向上浮交换数组schj和schj-l/k=schj;schj=schj+l;schj+l=k;Change=TRUE;)CoUt按男子团体总分排列:endl;COUt学校编号名称总分男子总分女子总分endl;for(i=l;i=n;i+)(COUt,schi.numz,zschi.name,zyzschi.scorezz?zschi.boyscorez,“schi.girlscoreendl;)coutendl;)voidOUtPUtGirlSCOre(
9、)按女子团体总分排列输出,简单选择排序(inti,j,k;school1;for(i=l;i=n-l;+i)(k=i;for(j=i+l;j=n+j)if(schj.girlscoreschk.girlscore)k=j;if(k!=i)(l=schi;schi=schk;schk=l;)CoUt“按女子团体总分排列:endl;COUt学校编号名称总分男子总分女子总分endl;for(i=l;i=n;i+)(COUt,schi.numz,zschi.name,zyzschi.scorezz?zschi.boyscorez,zzschi.girlscoreendl;coutendl;信息查询:v
10、oidSearChSChnUm()按学校编号查询(intX,i;coutx;输入要查询的学校编号if(x=l&x*n)判断输入的学校编号是否存在break;elseCOUt*你输入有误,请重新输入:;)CoUt你要查询的学校有关信息如下:endl;CoUt学校编号名称总分男子总分女子总分endl;for(i=l;i=n;i+)(if(schi.num=x)cout,/z,schi.num,z,zschi.name*yzschi.scorezz?zschi.boyscorez,“schi.girlscoreendl;break;)coutendl;)voidSearChPrOnUni()按项目编
11、号查询(intx,i;coutx;输入要查询的项目编号if(x=l&x=w+m)判断要查询的项目编号是否存在break;elsecout。你输入有误,请重新输入:;coutprox.name“前3或前5名学校的情况如下:endl;cout名次学校编号*名称学校总分Xendl;for(i=l;i=prox.rank;i+)(COUt,iz,z,prox.numi,/yzschprox.numi.namezzzschprox.numi.scoreendl;)cout/称三的名x5i刖的富目目目:.;:项项普IPolPtJlPOlPOlP个个个编编编编编名名屯名12345请请请(输入3或5):5in
12、是森B-*毁刖的l21132目目目:个个个编编编编编请请请这是创建信息界面,用于输入学校名称、项目名称以及各个项目每个学校获取名次情况,输入学校、项目名称时用字符型,编号用整型。ZlC,D:设计代码Debug课程设计网络091产超110912128.exe你可以选择以下几种操作:,三三摹麻1瓶瞌卒校编号查询各衣运动/自查询茗个,退出1234unnunit女子总分0121311男子总分2总分2171819nanhannandabeidaaigong4321口N,D:设计代码Debug课程设计网络091产超110912128.exeK.况起着青分出卷总总Mtttttttttt触IEW刀分询询Itt
13、t心总查查ttttrnOK刀体体号目制竹编总团团编项料卷子子校动Ittt胡笺重辜运出倾RttItttXT二l二V二、二二*TAtt9ttttttttW0#tt#19Ittt可Utt你tt5:下方1123456?:M攀关OnQwttwwttttttHWWWt的有树IQItt阴ttt(tttttltttttttttt帮询校名har浮请lft?-回CnD:设计设计代码Debug课程设计网络091产超110912128.exe况总总t情出出卷总总Hb一出出t个各各一序氏刀分询询o心总查查-OlP体售节目,编总团团编项一卷子动M运出改按皮退二二rt二二二二C1234567Wi!矍,勺-miItttttt
14、tItlt的择乳一或编134kU输,前VO眇123*iJCr,D:设计设计代码Debug课程设计网络091产超110912128.exe12343 23 11nunttttttItM你可以选择以下几种抵33安勇子团体百分5 lits.6 .按运动项目查询各个李枝情况7 .退出1.逋籁入你选! Wl kianqiu前 3司 将次举校6编号:3世总分j出总分 蜉触县分Mll m UttttMttltnanda be ida nanda huaigong buaigong171817Press any key to continueC,D:设计代码Debug课程设计 网络091产超110912128
15、. exe191912 3 4 5 67况 r慝青青 分出也趋 总总 出出个帏UW刀分询询 M0心查查T7olp刀体体号目Ittt 竹编总团团编项tttt 阳卷子子校动tttt 胡笺富辜运出做 “: 4二*二、|二、二 t TA这是功能菜单界面,你需要干什么就选择那个操作对应的编号,最后选7退出程序。七附录(源程序清单)4.课程设计心得选了这个题目之后,首先把这个题目认真仔细的分析了一遍,大致在脑中把程序的整个框架结构勾勒一遍,在报告的需求分析和概要设计完整的写出来,然后程序按照概要设计中描绘的一步一步完成。首先,定义结构体,程序需要哪些必须先定义好,结构体定义好后第一部是创建信息,这也是整个
16、代码中最困难,最麻烦的部分,其中需要很多循环,每个循环里还带有循环,必须一一对应,稍有不慎就会出现错误,输入学校名称和数量时还要考虑是否符合要求,需要判断语句,一个字烦。创建项目时,也要考虑相同的问题,之后还要判断有几个名次3个或5个,每个名次得到的分数又不同,这部分又要判断,计算分数时首先计算学校总分然后才计算男女团体分数,计算男女分数也要判断,并且男女团体分数要分开计算,以便后面好输出。信息创建好后就是信息输出了,这部分挺简单的,要求是按学校编号、学校总分、男女团体总分排序输出,只要用一种排序就可以了,也可以用几种,这些书上都有,很简单,没什么困难的,只要细心一些就可以将这一部分搞定,这一部分的四个函数就相当于一个函数。信息查询这部分在我原本想法中应该比较困难,可是在编写时发现这一部分非常简单,比前面的代码简单多了,其中按项目查询时有个地方要小心不然一不小心就会输出及要得到的不一致,需要判断好。最后就是主函数,这一部分就是介绍一下程序用途,调用函数,程序正常运行。