您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > C语言运动会计分程序编写
任务:参加运动会有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).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;#includestdio.h#includestring#includeiomanip#includefstreamusingnamespacestd;intn,m,w;structpro//表示项目的结构体{stringname;//项目名称intsnum[6];//前5名学校的编号}p[21];structschool//表示学校的结构体{intnum;stringname;//学校名称intscore;//学校总分intmale;//男子总分intfemale;//女子总分}sch[21];intintegral1[5]={7,5,3,2,1};//前五名得分intintegral2[3]={5,3,2};//前三名得分voidinput(){inti,j,y,x;printf(输入学校数目:);y=0;scanf(%d,&n);if(n=1&&n=20)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);for(i=1;i=n;i++){printf(输入第%d个学校的名称:,i);scanf(%s,&sch[i].name);sch[i].score=0;sch[i].female=0;sch[i].male=0;sch[i].num=i;}printf(输入男子项目数和女子项目数:);y=0;scanf(%d%d,&m,&w);if(m=20&&m=1&&w=20&&w=1)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}for(i=1;i=m+w;i++){printf(输入第%d个项目的名称:\n,i);scanf(%s,&p[i].name);printf(输入第%d个项目的前5名的学校编号:\n,i);for(j=1;j=5;j++){y=0;while(1){scanf(%d,&x);if(x=1&&x=20)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}p[i].snum[j]=x;sch[x].score+=integral[j-1];if(i=m)sch[x].male+=integral[j-1];elsesch[x].female+=integral[j-1];}}}voidprint(inti){printf(%d%d%s%d%d%d%d%d%d,sch[i].num,setw(10),sch[i].name,setw(8),sch[i].score,setw(9),sch[i].male,setw(10),sch[i].female);}voidbianhao()//按编号排序{inti,j;schoolt;for(i=1;in;i++){for(j=i;j=n;j++)if(sch[i].numsch[j].num){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf(\n按编号排列:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++)print(i);}voidzongfen()//按学校总分排序{inti,j;schoolt;for(i=1;in;i++){for(j=i;j=n;j++)if(sch[i].scoresch[j].score){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf(\n按学校总分排列:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++)print(i);ofstreamfout;fout.open(运动会分数统计.txt);fout编号学校名称总分男子总分女子总分endl;for(i=1;i=n;i++){foutsch[i].numsetw(13)sch[i].namesetw(8)sch[i].scoresetw(9)sch[i].malesetw(10)sch[i].femaleendl;}fout.close();}voidmalezf()//按学校男总分排序{inti,j;schoolt;for(i=1;in;i++){for(j=i;j=n;j++)if(sch[i].malesch[j].male){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf(\n按学校男子总分排列:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++)print(i);}voidfemalezf()//按学校女总分排序{inti,j;schoolt;for(i=1;in;i++){for(j=i;j=n;j++)if(sch[i].femalesch[j].female){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf(\n按学校女子总分排列:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++)print(i);printf(\n);}voidcxsch()//查询学校信息{inti,y,s;printf(输入需要查询的学校编号:);y=0;while(1){scanf(%d,&s);if(s=1&&s=n)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}printf(该学校相关信息:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++){if(sch[i].num==s){print(i);break;}}printf(\n);}voidcxxm()//查询项目信息{inti,y,s;printf(输入需要查询的项目编号:);y=0;while(1){scanf(%d,&s);if(s=1&&s=n)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}printf(%s前5名学校编号及名称为\n,p[s].name);printf(名次编号学校名称\n);for(i=1;i=5;i++)printf(%d%d%d%s\n,i,p[s].snum[i],setw(12),sch[p[s].snum[i]].name);printf(\n);}voidsolve()//菜单函数{intz;while(1){printf(\n选择您需要的操作(选择序号):\n);printf(1.按学校编号排序输出\n);printf(2.按学校总分排序输出\n);printf(3.按学校男总分排序输出\n);printf(4.按学校女总分排序输出\n);printf(5.查询某个学校成绩\n);printf(6.查询某个项目成绩\n);printf(7.结束\n\n);scanf(%d,&z);if(z==1)bianhao();if(z==2)zongfen();if(z==3)malezf();if(z==4)femalezf();if(z==5)cxsch();if(z==6)cxxm();if(z==7)break;}}intmain()//主函数{input();solve();return0;}#includestdio.h#includestring#includeiomanip#includefstreamusingnamespacestd;intn;//n个学校intm;//m个男子项目intw;//w个女子项目structpro//表示项目的结构体{stringname;//项目名称intsnum[6];//前5名学校的编号}p[21];structschool//表示学校的结构体{intnum;stringname;//学校名称intscore;//学校总分intmale;//男子总分intfemale;//女子总分}sch[21];intintegral[5]={7,5,3,2,1};//前五名得分voidinput(){inti,j,y,x;printf(输入学校数目:);y=0;while(1){scanf(%d,&n);if(n=1&&n=20)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}for(i=1;i=n;i++){printf(输入第%d个学校的名称:,i);scanf(%s,&sch[i].name);sch[i].score=0;sch[i].female=0;sch[i].male=0;sch[i].num=i;}printf(输入男子项目数和女子项目数:);y=0;while(1){scanf(%d%d,&m,&w);if(m=20&&m=1&&w=20&&w=1)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}for(i=1;i=m+w;i++){printf(输入第%d个项目的名称:\n,i);scanf(%s,&p[i].name);printf(输入第%d个项目的前5名的学校编号:\n,i);for(j=1;j=5;j++){y=0;while(1){scanf(%d,&x);if(x=1&&x=20)y=1;if(y)break;elseprintf(输入数据有误,请重新输入:);}p[i].snum[j]=x;sch[x].score+=integral[j-1];if(i=m)sch[x].male+=integral[j-1];elsesch[x].female+=integral[j-1];}}}voidprint(inti){printf(%d%d%s%d%d%d%d%d%d,sch[i].num,setw(10),sch[i].name,setw(8),sch[i].score,setw(9),sch[i].male,setw(10),sch[i].female);}voidbianhao()//按编号排序{inti,j;schoolt;for(i=1;in;i++){for(j=i;j=n;j++)if(sch[i].numsch[j].num){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf(\n按编号排列:\n);printf(编号学校名称总分男子总分女子总分\n);for(i=1;i=n;i++)print(i);}voidzongfen()//按学校总分排
本文标题:C语言运动会计分程序编写
链接地址:https://www.777doc.com/doc-1116827 .html