数据结构 运动会分数统计
2010-01-09 21:34
429 查看
#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]; //前3或5名学校的编号
}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;
}
#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]; //前3或5名学校的编号
}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;
}
相关文章推荐
- 数据结构-运动会分数统计
- [置顶] 运动会分数统计(数据结构课程设计)
- 数据结构运动会分数统计实习报告源码
- 数据结构实习报告(运动会分数统计)
- <数据结构>运动会分数统计
- 数据结构-运动会分数统计
- 运动会分数统计
- 运动会分数统计
- 运动会分数统计系统开发(第一版)
- 运动会分数统计
- 运动会分数统计系统——史上最完善的运动会分数统计系统
- 运动会分数统计系统开发
- 数据结构作业 运动会分数统计 c++
- [沈阳工业大学C语言课设]学生试卷分数统计
- 【数据结构-trie树】trie数实现单词查询和单词统计
- javascript脚本编程解决考试分数统计问题
- 数据结构-红黑树扩张-顺序统计树
- 数据结构 ——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 中国大学MOOC-陈越、何钦铭-数据结构 统计工龄
- 10、Pandas 的数据结构、统计特性及数据读写