C语言运动会计分程序编写.docx
任务:参加运动会有n个学校,学校编号为1n,比赛分成m个男子工程,和W个女子工程。工程编号为男子1m,女子m+1m+w。不同的工程取前五名或前三名枳分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2:哪些取前五名或前三名由学生自己设定.(m<=20,n<20)功能要求:1).可以输入各个工程的前三名或前五名的成绩;2).能统计各学校总分,3),可以按学校编号、学校总分、男女团体总分排序输出:4).可以按学校编号查询学校某个工程的情况:可以按工程编号查询取得前:或前五名的学校。规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动工程的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生臼己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在C语言程序设计的书上,谙自学解决)请在圾后的上交资料中指明你用到的存储结构:测试数据:耍求使用1、全部合法数据;2、整体非法数据:3、局部非法数据.进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明:8inc1.ude<stdio.h>tiinc1.ude<sting>Sinc1.ude<inanip>SincIude<fstream>usingnamespacestd:intn1.m,w;structpro表示工程的结构体(stringname;工程名称inisnum6;前5名学校的编号)p21:structSChOo1.表示学校的结构体(intnum;stringname;学校名称intscore;学校总分intInaIe:男子总分intfema1.e:女子总分*sch21:intintegra1.1.5=7,5,3,2,1;前五名得分intintegra1.23=5,3,2;/前三名得分voidinputO(inti,j,y,x:Drintf("输入学校数目:);y=0;scanf(*d*.4n):if(n>=1.ftn<=20)if(y)break:e1.sePrinifC输入数据有说,谛重新输入:。;for(i1.ji<=nu)Drintfr输入第%d个学校的名珠:",i):SCanf(飞s”,4schi.name):schi.score=0;schi.fema1.e=0:sch(i).ma1.e=O:schi.num=i:Printr("输入男子工程数和女子工程数:"):y=o;scanf(*i1.*,&m,&w):if(烂20tAm>-1.4w<=20ifiw>=1.)y-1.;if(y)break;e1.sePrin1.fe1输入数据有误,请盅新输入)for(i=1.zi<=m*wj)(Primfr输入第M个工程的名称:n,i);scanf(*%s*,4pi.nae):Printf("输入第d个工程的前5名的学校编号八t.i):for(j=1J<=5J+)y=0;whi1.e(1.)(scanffW*,4x);if(x>=1.<=20)y=1.:if(y)break:e1.sePrintfe输入数据有误,请曳新输入:D:)pi.Snuinj=X:schx.SCOre'=integra1.j-1:if(i<=m)schx.ma1.e+=integra1.j-1.:e1.seschxj.fema1.e+=integra1.j-1.;voidprint(inti)printf(*-%d%ds1.ddd%d,M*.schi.11ub,SetW(10).schi.name,SetW(8),schi.score,SetW(9),schi.ma1.e,setu(10),schi.fema1.e);voidbianhao()按编号排序(i11ti,j;schoo1.t:for(i=1.;i<n;i+)(for(j=id<=n1j+)if(schi.num>schj.num)t=schi:schi=schj;schj=t;)printf(n按编号排列:n");Printfe编号学校名称总分男子总分女子总分n"):for(i=1.:i<=n;i+)print(i):)voidzongfen()/按学校总分排序(inti,j;schoo1.I:for(i=1.;i<n;iw)(for(j=i;j<=n;j+>if(schi.score<schj.score)(t=schischi=schj:schj=t;)printfn按学校总分排列:n");PriMfc1编号学校名称总分更子总分女子总分n"):for(i=1.;i<=n:i+0print(i):ofstreafont;fou1.OPCn("运动会分数统计.Ix1.");fout<<”编号学校名称总分男子总分女子总分“<<end1.;for(i=1.:i<=n;i+)fout<<schij.tum<<setr(13)<<schij.name<<setw(8)<<schi.score<<setw(9)<<schi.三a1.c<<setu(10)<<schi.fna1.c<<cnd1.:fout.c1.oseO:voida1.ezf()按学校男总分排序i11ti,j;schoo1.t:for(i=ki<n:i+)for(j=ij<=nj)if(schi.ma1.e<schj.BaIe)(t=schi;schi=schj:schj=t;)printfn按学校男子总分排列:n);Printf编号学校名称总分男子总分女子总分n"):for(i=1.;i<=n:i+)print(i):)voidfea1.ezf()按学校女总分排序(i11ti,j:schoo1.t:for(i=1.;i<n:i+)(for(j=i:j<=n:j+)if(sch(i.fema1.e<schj.fema1.e)t=schijschi=schjschj=t;)printfn按学校女子总分排列:n"):Drintfc编号学校名称总分男子总分女子总分n"):for(i=1.;i<=n;i+>print(i):printf(n*):)voidcxsch查闻学校信息(i11ti,y,s:Drintfr输入需要St询的学校编写:"):y=0;whi1.e(1.)(scanf(*%d,s):if(s>=1.Sis<=n)y=1.;if(y)break:e1.sePrintfe输入数据有误,请曳新输入:D:)PrinIfe1该学校相关信息:n);Printf("编号学校名称总分男子总分女子总分n"):fori=ki<=nJ+÷)(if(schi.r>um-=s)(print(i):break;printf(*n*);voidCxxmO查询_E程信息(i11ti,y,s;Printf("输入需要查询的工程漏号:“):y=0:WhiIescanf(*%d,.4s):if(s>=1.Ss<=n)y=1.;if(y)break:e1.sePrin1.f("输入数据有误,请重新输入)printf(*s前5名学校编号及名称为n”,ps.name);Printfr名次编号学校名称n”);for(i=1.:i<=5:i+1-)printf(*%d%ddsn.i.ps.snumi,setw(12),schps.s11umi.name):printf(*n*):voidso1.ve0菜单函数(intz;WhiIe(printfn选择您需要的操作(选择序号):n);PrintfC1.按学校编号排序输出n"):printf(,2,按学校总分排序输出t);printf3,按学校男总分排序给出n"):Printf(-4.按学校女总分排序蝌出<);printf5.杳询某个学校成绩n):printfC6.交询某个工程成绩n.);printf("7.结束nn"):scanf(*%d,4z):if(Z=DbianhaoO:if(z=2)zo<fcn0:if(z-3)ma1.ezf0:if(z=4)femaIezfO;if(z=5)cxschO:if(z=6)cxxm:if(z-7)break:so1.ve();return0;inc1.u<Je<stdio.h>tJinc1.ude<string>Sinc1.ude<i(x11anip>ITinc1.ude<fstream>usingnamespacestd:i111.11;/n个学校i11tm:个男子工程i11tw;个女子工程structpro表示工程的结构体(stringnaae;/工程名称i11tsnu三6;/前5名学校的编号)p1.21:structsch1.表示学校的结构体(intnum;stringna«e;学校名称intscore;学校总分intInaI*Z/男子总分intfema1.e;/女子总分)sch21;intintegra1.5=(7,5,3,2,1):前五名得分voidinput0inti,j,y,x;Prirnfr输入学校数目:);y二0;WhiIescanf(*%d*,4n):if(n>1.SAn<-20)y1.:if(y)break;e1.sePrintfC输入数据有误,靖亘新输入for(i=1.i<=ni+÷)PrintfC输入第%d个学校的名称:".i):scanf(*%s,&schi.name):schi.score=O:schi.fcHaIc=0;schi.a1.e0;schi.nu=i;)DrinHe"输入男子工程数和女子工程数:“);y=0:whi1.e(1.)SCanf("1%(,&m,&w);if(烂20tAm>-1.4w<=20ifiw>=1.)y-1.;if(y)break;e1.sePrin1.fe1输入数据有误,请盅新输入)for(i=1.zi<=m*wj)(Primfr输入第M个工程的名称:n,i);scanf(*%s*,4pi.nae):Printf("输入第d个工程的前5名的学校编号八t.i):for(j=1J<=5J+)y=0;whi1.e(1.)(scanff%d",4x);if(x>=1.<=20)y=1.:if(y)break:e1.sePrintfe输入数据有误,请曳新输入:D:)pi.Snuinj=X:schx.SCOre'=integra1.j-1:if(i<=m)schx.ma1.e+=integra1.j-1.:e1.seschxj.fema1.e+=intra1.j-1.;voidprint(inti)printf(*-%d%ds1.ddd%d,M*.schi.11ub,SetW(10).schi.name,SetW(8),schi.score,SetW(9),schi.ma1.e,setu(10),schi.fema1.e);voidbianhao()按编号排序(i11ti,j;schoo1.t:for(i=1.;i<n;i+)(for(j=id<=n1j+)if(schi.num>schj.num)t=schi:schi=schj;schj=t;)printf(n按编号排列:n");Printfe编号学校名称总分男子总分女子总分n"):for(i=1.:i<=n;i+)print(i):)voidzongfen()/按学校总分排序(inti,j;schoo1.I:for(i=1.;i<n;iw)(for(j=i;j<=n;j+>if(schi.score<schj.score)(t=schischi=schj:schj=t;)printfn按学校总分排列:n");PriMfc1编号学校名称总分更子总分女子总分n"):for(i=1.;i<=n:i+0print(i):ofstreafont;fou1.OPCn("运动会分数统计.Ix1.");fout<<”编号学校名称总分男子总分女子总分“<<end1.;for(i=1.:i<=n;i+)fout<<schij.tum<<setr(13)<<schij.name<<setw(8)<<schi.score<<setw(9)<<schi.三a1.c<<setu(10)<<schi.fna1.c<<cnd1.:fout.c1.oseO:voida1.ezf()按学校男总分排序i11ti,j;schoo1.t:for(i=ki<n:i+)for(j=ij<=nj)if(schi.ma1.e<schj.HaIe)(t=schi;schi=schj:schj=t;)printfn按学校男子总分排列:n);Printf编号学校名称总分男子总分女子总分n"):for(i=1.;i<=n:i+)print(i):)voidfea1.ezf()按学校女总分排序(i11ti,j:schoo1.t:for(i=1.;i<n:i+)(for(j=i:j<=n:j+)if(schi.fema1.e<schj.fe三a1.e)t=schijschi=schjschj=t;)printfn按学校女子总分排列:n"):Drintfc编号学校名称总分男子总分女子总分n"):for(i=1.;i<=n;i+>print(i):printf(n*):)voidcxsch查闻学校信息(i11ti,y,s:Drintfr输入需要St询的学校编写:"):y=0;whi1.e(1.)(scanf(*%d,s):if(s>=1.Sis<=n)y=1.;if(y)break:e1.sePrintfe输入数据有误,请曳新输入:D:)PrinIfe1该学校相关信息:n);Printf("编号学校名称总分男子总分女子总分n"):fori=ki<=nJ+÷)(if(schi.r>um-=s)(print(i):break;printf(*n*);voidCxxmO查询_E程信息(i11ti,y,s;Printf("输入需要查询的工程漏号:“):y=0:WhiIescanf(*%d,.4s):if(s>=1.Ss<=n)y=1.;if(y)break:e1.sePrin1.f("输入数据有误,请重新输入)printf(*s前5名学校编号及名称为n”,ps.name);Printfr名次编号学校名称n”);for(i=1.:i<=5:i+1-)printf(*%d%ddsn.i.ps.snumi,setw(12),schps.s11umi.name):printf(*n*):voidso1.ve0菜单函数(intz;WhiIe(printfn选择您需要的操作(选择序号):n);PrintfC1.按学校编号排序输出n"):printf(,2,按学校总分排序输出t);printf3,按学校男总分排序给出n"):Printf(-4.按学校女总分排序蝌出<);printf5.杳询某个学校成绩n):printfC6.交询某个工程成绩n.);printf("7.结束nn"):scanf(*%d,4z):if(Z=DbianhaoO:if(z=2)zo<fcn0:if(z-3)ma1.ezf0:if(z=4)femaIezfO;if(z=5)cxschO:if(z=6)cxxm:if(z-7)break:so1.ve();return0;