数据结构 运动会分数统计

来源:互联网 发布:手机淘宝优惠券制作 编辑:程序博客网 时间:2024/03/29 08:15

#include<iostream> 

#include<string> 

#include<iomanip> 

#include<fstream>

using namespace std; 

int n; //n个学校 

int m; //m个男子项目 

int w; //w个女子项目 

struct pro //表示项目的结构体 

string name; //项目名称 

int snum[6]; //35名学校的编号 

}p[21]; 

struct school //表示学校的结构体 

int num; 

string name; //学校名称 

int score; //学校总分 

int male; //男子总分 

int female; //女子总分 

}sch[21]; 

int qianwu[5]={7,5,3,2,1};//前五名得分 

int qiansan[3]={5,3,2}; //前三名得分

void input()  //输入前三或前五成绩

int i,j,y,x; 

printf("输入学校数目:"); 

y=0; 

while(1) 

scanf("%d",&n); 

if(n>=1&&n<=20)y=1; 

if(y)break; 

else printf("输入数据有误,请重新输入:"); 

for(i=1;i<=n;i++) 

printf("输入第%d个学校的名称:",i); 

cin>>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; 

else printf("输入数据有误,请重新输入:"); 

for(i=1;i<=m;i++) 

printf("输入第%d个项目的名称:/n",i); 

cin>>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; 

else printf("输入数据有误,请重新输入:"); 

p[i].snum[j]=x; 

sch[x].score+=qianwu[j-1]; 

sch[x].male+=qianwu[j-1]; 

}

for(i=m+1;i<=m+w;i++)

printf("输入第%d个项目(女子)的编号:/n",i); 

cin>>p[i].name;

printf("输入第%d个项目的前3名的学校编号:/n",i); 

for(j=1;j<=3;j++) 

y=0; 

while(1) 

scanf("%d",&x); 

if(x>=1&&x<=20)y=1; 

if(y)break; 

else printf("输入数据有误,请重新输入:"); 

p[i].snum[j]=x; 

sch[x].score+=qiansan[j-1]; 

sch[x].female+=qiansan[j-1]; 

}

 

void print(int i) 

cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) 

<<sch[i].male<<setw(10)<<sch[i].female<<endl; 

void bianhao() //按编号排序 

int i,j; 

school t; 

for(i=1;i<n;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); 

void zongfen() //按学校总分排序 

int i,j; 

school t; 

for(i=1;i<n;i++) 

for(j=i;j<=n;j++) 

if(sch[i].score<sch[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); 

ofstream fout;

fout.open("运动会分数统计.txt"); 

fout<<"编号 学校名称 总分 男子总分 女子总分"<<endl;

for(i=1;i<=n;i++) 

{fout<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) 

<<sch[i].male<<setw(10)<<sch[i].female<<endl; }

fout.close();

void malezf() //按学校男总分排序 

int i,j; 

school t; 

for(i=1;i<n;i++) 

for(j=i;j<=n;j++) 

if(sch[i].male<sch[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); 

void femalezf() //按学校女总分排序 

int i,j; 

school t; 

for(i=1;i<n;i++) 

for(j=i;j<=n;j++) 

if(sch[i].female<sch[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); 

cout<<endl; 

void cxsch() //查询学校信息 

int i,y,s; 

printf("输入需要查询的学校编号:"); 

y=0; 

while(1) 

scanf("%d",&s); 

if(s>=1&&s<=n)y=1; 

if(y)break; 

else printf("输入数据有误,请重新输入:"); 

printf("该学校相关信息:/n"); 

printf("编号 学校名称 总分 男子总分 女子总分/n"); 

for(i=1;i<=n;i++) 

if(sch[i].num==s) 

print(i); 

break; 

cout<<endl; 

void cxxm() //查询项目信息 

int i,y,s; 

printf("输入需要查询的项目编号:"); 

y=0; 

while(1) 

scanf("%d",&s); 

if(s>=1&&s<=n)y=1; 

if(y)break; 

else printf("输入数据有误,请重新输入:"); 

cout<<p[s].name<<"5名学校编号及名称为:"<<endl; 

printf("名次 编号 学校名称/n"); 

for(i=1;i<=5;i++) 

cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl; 

cout<<endl; 

void solve() //菜单函数

int z; 

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; 

int main() //主函数

input(); 

solve(); 

return 0; 

}

原创粉丝点击