运动会比赛计分系统_8运动会比赛计分系统
运动会比赛计分系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“8运动会比赛计分系统”。
#include #include #include #include
#include #define n 2//学校数目
#define m 1//男子项目数目
#define w 1//女子项目数目 #define null 0 struct itemnode{
int itemnum;//项目编号
int top;
//取名次的数目
int range[5];//名次
int mark[5];//分数
char name[8];};
//定义项目结点的类型 struct headnode{ int schoolnum;
//学校编号
int score;
//学校总分
int mscore;
//男团体总分
int wscore;
//女团体总分
itemnode c[m+w];
//项目数组 };//定义头结点类型
headnode h[n];//定义一个头结点数组
void inputinformation()//输入信息,建立系统 {
int i,j,k,s;char ch;
for(i=0;i
{
h[i].score=0;
h[i].mscore=0;
h[i].wscore=0;
//初始化头结点
printf(“====参赛学校编号:”);
scanf(“%d”,&h[i].schoolnum);
for(j=0;j
{
printf(“
参赛项目编号:”);
scanf(“%d”,&h[i].c[j].itemnum);
printf(“
取前3名or前5名:”);
scanf(“%d”,&h[i].c[j].top);
printf(“
所取名次数量:”);
scanf(“%d”,&k);
for(s=0;s
//输入头结点信息//输入项目信息
{
h[i].c[j].range[s]=0;
h[i].c[j].mark[s]=0;//初始化排名和分数
printf(“
所获得的名次:”);
scanf(“%d”,&h[i].c[j].range[s]);
//输入所获名次信息
printf(“
该运动员姓名:”);
getchar(ch);
gets(h[i].c[j].name);
if(h[i].c[j].top==3)
switch(h[i].c[j].range[s])
{
case 0: h[i].c[j].mark[s]=0;break;
case 1: h[i].c[j].mark[s]=5;break;
case 2: h[i].c[j].mark[s]=3;break;
case 3: h[i].c[j].mark[s]=2;break;
}
else
switch(h[i].c[j].range[s])
{
case 0: h[i].c[j].mark[s]=0;break;
case 1: h[i].c[j].mark[s]=7;break;
case 2: h[i].c[j].mark[s]=5;break;
case 3: h[i].c[j].mark[s]=3;break;
case 4: h[i].c[j].mark[s]=2;break;
case 5: h[i].c[j].mark[s]=1;break;
}
h[i].score=h[i].score+h[i].c[j].mark[s];//按取前三名还是取前五名分别记分
if(j
h[i].mscore=h[i].mscore+h[i].c[j].mark[s];//是男子项目(取前三名)则记到男子分数里面去
else
h[i].wscore=h[i].wscore+h[i].c[j].mark[s];//是女子项目(取前五名)则记到女子项目里面去
}
printf(“n”);
}
} printf(“n”);}
void output()
//输出函数 {
int choice,i,j,k;int remember[n];int sign;
do {
printf(“*******************1.按参赛学校编号输出.*******************n”);
printf(“*******************2.按参赛学校总分输出.*******************n”);
printf(“n*********************** 请选择编号*************************n:”);
scanf(“%d”,&choice);
switch(choice)
{
case 1:
for(i=0;i
{
printf(“nn*****学校编号:%d”,h[i].schoolnum);
printf(“*****学校总分:%d” ,h[i].score);
printf(“*****男团总分:%d”,h[i].mscore);
printf(“*****女团总分:%d ”,h[i].wscore);
}
//按编号顺序输出
break;
case 2:
for(i=0;i
remember[i]=i;
for(i=0;i
{
for(j=i+1;j
if(h[remember[i]].score
{
k=remember[i];
remember[i]=remember[j];
remember[j]=k;
}
} // 用冒泡排序方法,用辅助数组记住头结点下标
for(i=0;i
{
printf(“nn*****学校总分:%d”,h[remember[i]].score);
printf(“*****学校编号:%d” ,h[remember[i]].schoolnum);
printf(“*****男团总分:%d”,h[remember[i]].mscore);
printf(“*****女团总分:%d ”,h[remember[i]].wscore);
//按所记下标顺序输出
}
//按学校总分输出
break;
}
printf(“n”);
printf(“请选择继续,0 跳出n”);
scanf(“%d”,&sign);}while(sign==2);//循环执行输出语句
printf(“nnn”);} //查询函数
void inquiry()
{
int choice;int i,j,k,s;
printf(“n*****按学校编号查询*****n”);
do{
printf(“要查询的参赛学校编号:”);
scanf(“%d”,&i);
if(i>n)
printf(“错误:这个学校没有参加此次运动会!”);
else {
printf(“所要查询的参赛项目编号:”);
scanf(“%d”,&j);
if(j>m+w||j==0)
printf(“此次运动会没有这个项目nn”);//学校编号超出范围,则输出警告
else
{
printf(“n这个项目取前%d名,该学校的成绩如下:n”,h[0].c[j-1].top);
for(k=0;k
if(h[i-1].c[j-1].range[k]!=0)
{
printf(“所获得的名次:%dn”,h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩
}
}
}
printf(“n”);
printf(“请选择 2 继续 , 0 跳出n”);
scanf(“%d”,&s);
printf(“nn”);
}while(s==2);
//循环执行输出语句 } //把数据存储在文件中
void writedata()
{
FILE *report;
int i;
if((report=fopen(“sportsdata.txt”,“w”))==null){
printf(“不能打开文件n”);
exit(1);
} for(i=0;i
fwrite(&h[i],sizeof(headnode),1,report);
fclose(report);}
//按头结点块写入
//读出文件中数据的函数
void readdata()
{
FILE *report;
int i,j,k,s;
if((report=fopen(“sportsdata.txt”,“r”))==null)
{
printf(“file can not be openedn”);
exit(1);
}
for(i=0;i
{
printf(“学校编号:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
printf(“学校总分:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
printf(“男团总分:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
printf(“女团总分:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
printf(“nnn”);
getch();
for(j=0;j
{
printf(“项目编号:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
printf(“所取得的名次数量:”);
fread(&k,sizeof(int),1,report);
printf(“%dn”,k);
for(s=0;s
{
fread(&k,sizeof(int),1,report);
if(k!=0)
printf(“名次:”);
printf(“%dn”,k);
}
for(s=0;s
{
fread(&k,sizeof(int),1,report);
if(k!=0)
printf(“分数:”);
printf(“%dn”,k);
}
}
printf(“nnn”);
getch();}
fclose(report);//关闭文件
} //按照读一个数据就输出一个数据的方式显示数据内容
void main(){
int choice;
printf(“n ╔===================★ welcome ★======================╗n”);
printf(“n
******************运动会比赛计分系统*******************n”);
printf(“n
★★★★★★
Design by 陈雪芸
★★★★★★
n”);
printf(“nn
********************1.输入比赛信息*********************n”);
printf(“
********************2.输出比赛信息*********************n”);
printf(“
********************3.查询比赛信息*********************n”);
printf(“
********************4.退出系统
*********************nn”);
printf(“ ╚========╝nnn”);
printf(“请选择要实现步骤的编号:nn”);
scanf(“%d”,&choice);switch(choice){
case 1:
inputinformation();
writedata();
main();
case 2:
output();
main();
case 3:
inquiry();
main();
case 4:
exit(0);
default:
exit(0);
} }