2020-03-03 04:20:09 来源:范文大全收藏下载本文
#include #include #include #include
#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(\"\\n\\n*****学校编号:%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(\"\\n\\n*****学校总分:%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(\"请选择
2 继续,0 跳出\\n\");
scanf(\"%d\",&sign); }while(sign==2); //循环执行输出语句
printf(\"\\n\\n\\n\"); } //查询函数
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(\"此次运动会没有这个项目\\n\\n\");//学校编号超出范围,则输出警告
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(\"所获得的名次:%d\\n\",h[i-1].c[j-1].range[k]); //输出要查询学校项目的成绩
}
}
}
printf(\"\\n\");
printf(\"请选择 2 继续 , 0 跳出\\n\");
scanf(\"%d\",&s);
printf(\"\\n\\n\");
}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 opened\\n\");
exit(1);
}
for(i=0;i
{
printf(\"学校编号:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
printf(\"学校总分:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
printf(\"男团总分:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
printf(\"女团总分:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
printf(\"\\n\\n\\n\");
getch();
for(j=0;j
{
printf(\"项目编号:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
printf(\"所取得的名次数量:\");
fread(&k,sizeof(int),1,report);
printf(\"%d\\n\",k);
for(s=0;s
{
fread(&k,sizeof(int),1,report);
if(k!=0)
printf(\"名次:\");
printf(\"%d\\n\",k);
}
for(s=0;s
{
fread(&k,sizeof(int),1,report);
if(k!=0)
printf(\"分数:\");
printf(\"%d\\n\",k);
}
}
printf(\"\\n\\n\\n\");
getch(); }
fclose(report); //关闭文件
} //按照读一个数据就输出一个数据的方式显示数据内容
void main() {
int choice;
printf(\"\\n ╔===================★ welcome ★======================╗\\n\");
printf(\"\\n
******************运动会比赛计分系统*******************\\n\");
printf(\"\\n
★★★★★★
Design by 陈雪芸
★★★★★★
\\n\");
printf(\"\\n\\n
********************1.输入比赛信息*********************\\n\");
printf(\"
********************2.输出比赛信息*********************\\n\");
printf(\"
********************3.查询比赛信息*********************\\n\");
printf(\"
********************4. 退出系统
*********************\\n\\n\");
printf(\" ╚========╝\\n\\n\\n\");
printf(\"请选择要实现步骤的编号:\\n\\n\");
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);
} }
人人范文网 m.inrrp.com.cn 手机版