C语言运动会计分程序编写.docx
《C语言运动会计分程序编写.docx》由会员分享,可在线阅读,更多相关《C语言运动会计分程序编写.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言运动会计分程序编写.docx](https://file1.bdocx.com/fileroot1/2023-2/3/62086496-36a6-4032-940c-487b9e84cc79/62086496-36a6-4032-940c-487b9e84cc791.gif)
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、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
#include
#include
#include
#include
usingnamespacestd;
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;
else
printf("输入数据有误,请重新输入:
");
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;i{
for(j=i;j<=n;j++)
if(sch[i].num>sch[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;i{
for(j=i;j<=n;j++)
if(sch[i].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<<"编号学校名称总分男子总分女子总分"<for(i=1;i<=n;i++)
{fout<<fout.close();
}
voidmalezf()//按学校男总分排序
{
inti,j;
schoolt;
for(i=1;i{
for(j=i;j<=n;j++)
if(sch[i].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;i{
for(j=i;j<=n;j++)
if(sch[i].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;
}
#include
#include
#include
#include
usingnamespacestd;
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;i{
for(j=i;j<=n;j++)
if(sch[i].num>sch[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;i{
for(j=i;j<=n;j++)
if(sch[i].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<<"编号学校名称总分男子总分女子总分"<for(i=1;i<=n;i++)
{fout<<fout.close();
}
voidmalezf()//按学校男总分排序
{
inti,j;
schoolt;
for(i=1;i{
for(j=i;j<=n;j++)
if(sch[i].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;i{
for(j=i;j<=n;j++)
if(sch[i].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;
}