# define LEN sizeof (SC)
# include"stdio.h”
# include"stdlib.h”
Typedef struct scoredetail
{ int score;
Char programer;
Char school;
}SC;
Typedef struct scoredef1
{ int score;
Char programer;
Char school;
Struct scoredef1 *next;
}SC1;
Void input() /*输入函数,完成将键盘输入的学生数据写入磁盘*/
{ SC a1; char I; /*结构体变量a1用来存放一个运动员的数据*/
FILE *fp;
Clrslr(); /*清屏*/
If (fp=fopen("e:\\file1”, "wb”)= =NULL)
{printf("error!\n”);exit(0);}
While(i=’1’;i<=(‘m’+’w’-2*’1’)*(‘n’-‘1’+1);i++) /*以循环方式输入每个运动员的数据*/
{printf("\tschool:”);
Scanf("%c”,&a1.school);
while(a.school<’1’||a.school>’n’)
{Printf(“\terror! Input school again.”);scanf(“\%c”,&a1.school);}
Printf("\tprogramer:”);
Scanf("%c”,&a1.programer);
while(a.programer<’1’||a.programer>’m’+’w’)
{printf(“\teror! Input programer again.”);scanf(“\%c”,&a1.programer);}
Printf("\tscore:”);
Scanf("%d”,&a1.score);
While(a.score<0)
{printf(“\terror! Input score again.”);scanf(“\%d”,&a1.score);}
Fwrite(&a1,sizeof(SC),1,fp);
}
Fclose(fp);
}
SC1 creat () /*建立链表函数,完成用链表来存放从文件中读取的运动员数据*/
{SC1 *head1,*p1,*p2;
FILE *fp;
Clrslr();
P1=p2=(SC1*)malloc(LEN);
Head1=NULL;
If(fp=fopen("e:\\file1”, "rb”))= =NULL)
{printf("error!\n”);exit(0);}
While(fread(*p1,sizeof(SC),1,fp)!=0)
{if(head1= =NULL) head=p1;
Else p2->next=p1;
P2=p1;
P1=(SC1*)malloc(LEN);}
Free(p1);
P2->next=NULL;
Return head1;
}
SC thirdfifth(SC *p3,char a) /*本函数实现找出运动项目a的前三(五)名的成绩*/
{ SC t,a[20],b[5];int i=0,j;
While(p3!=NULL) /*通过循环把各个学校的项目a的成绩放在数组a[20]中*/
{if(p3->programmer=a)
{a[i]=*p3;i++;}
P3=p3->next;
}
For(i=0;i<5;i++) /*对a[20]中的数进行排序*/
For(j=i+1;j<=20;j++)
If(a[i].score<a[j].score)
{t=a[i];a[i]=a[j];a[j]=t;}
Printf("%d,%d,%d”,a[0].score,a[1].score,a[2].score); /*输出前三名的成绩*/
If(a>=('m'-'1')/2+'1'&&a<'m'+'1'||a>=('w'-‘1’)/2+'m')
Printf(“%d,%d”,a[3].score,a[4].score); /*输出第四、五名的成绩*/
For(i=0;i<5;i++)
B[i]=a[i];
Return b[5];
}
void Athirdfifth() /*本函数实现输出各个项目的前三(五)名的成绩*/
{char I;
For(i='1';i<='m'+'w';i++)
{printf(“\t The scores of the top 3 or 5 of the programmer %c are:\n”,i);
Thirdfifth(head,i);
}
}
Int statistic(int *k,char b) /*本函数实现统计学校b的总成绩*/
{SC a[5];int ,j,s1,s2,s3,s4,s;char i;
For(i='1';i<('m'-'1')/2+'1';i++) /*统计学校b男子团体的总分*/
{a[5]=thirdfifth(head,i);
For(j=0;j<3;j++)
If(a[j].school=b)
Switch(j)
{case 0:s1+=5;break;
Case 1:s1+=3;break;
Case 2:s1+=2;break;
}
}
For(i=('m'-'1')/2+'1';i<='m';i++)
{a[5]thirdfifth(head,i);
For(j=0;j<5;j++)
If(a[j].school=b)
Switch(j)
{case 0:s2+=7;break;
Case 1:s2+=5;break;
Case 2:s2+=3;break;
Case 3:s2+=2;break;
Case 4:s2+=1;break;
}
}
For(i='m’+’1';i<('w'-‘1’)/2+'m';i++) /*统计学校b女子团体的总*/
{a[5]=thirdfifth(head,i);
For(j=0;j<3;j++)
If(a[j].school=b)
Switch(j)
{case 0:s3+=5;break;
Case 1:s3+=3;break;
Case 2:s3+=2;break;
}
}
For(i=('w'-‘1’)/2+'m';i<='m'+'w';i++)
{a[5]=thirdfifth(head,i);
For(j=0;j<5;j++)
If(a[j].school=b)
Switch(j)
{case 0:s4+=7;break;
Case 1:s4=5;break;
case 2:s4+=3;break;
case 3:s4+=2;break;
case 4:s4+=1;break;
}
}
*k=s1+s2;
Return s=s1+s2+s3+s4;
}
void Astatistic() /*本函数实现输出各个学校的总分*/
{int sum,k1=0;char I;
For(i='1';i<='n';i++)
{sum=statistic(&k1;i);
Printf(“school\t%cscore\t%d\n”,I,sum)
}
}
void sort() /*本函数实现按学校编号.学校总分.男女团体总分排序输出*/
{struct schoolscore
{char school;
int score;
}ss[20],ssb[20],ssw[20],t; /*ss[20],ssb[20],ssw[20]分别存放各个学校的总分.男生团体总分.女生团体总分*/
int a1=0;char i;int a,j,d;
for(i='1',a=0;i<='n';i++,a++)
{ss[a].score=statistic(&a1,i);
ss[a].school=i;
ssb[a].score=a1;
ssb[a].school=i;
ssw[a].school=ss[a].score-a1;
ssw[a].school=i;
}
a--;
for(d=0;d<a;d++) /*对各个学校的总分.男生团体总分.女生团体总分进行排序*/
for(j=d+1;j<a+1;j++)
{if(ss[d].score<ss[j].score)
{t=ss[d];ss[d]=ss[j];ss[j]=t;}
if(ssb[d].score<ssb[j].score)
{t=ssb[d];ss[d]=ss[j];ss[j]=t;}
if(ssw[d].score<ssw[j].score)
{t=ssw[d];ssw[d]=ssw[j];ssw[j]=t;}
printf("\tassort by the sum of a school and output the result:\n"); /*输出按学校总分排序的结果*/
for(d=0;d<=a;d++)
printf("school\t%cscore\t%d",ss[d].school,ss[d].score);
printf("\tassort by the sum of the boys of a school and output the result:\n");
/*输出按学校男生团体总分排序的结果*/
for(d=0;d<a+1;d++)
printf("\tschool\t%cboy score\t%d",ssb[d].school,ssb[d].score);
printf("\tassort on the sum of the girls of a school and output the result :\n");
/*输出按学校女生团体总分排序的结果*/
for(d=0;d<a+1;d++)
printf("\tschool\t%cgirl score\t%d",ssw{d].school.ssw[d].score);
}
void inquire1() /*本函数实现按学校编号查询学校某个项目的情况*/
{SC a[5];char a1,a2;
int i;
printf("\tinput the school code you want to inquire\n");
scanf("%c\n",&a1);
printf("\tinput the programmer code you want to inquire\n");
scanf("%c\n",&a2);
a[5]=thirdfifth(head,a2); /*找出项目a2的前五名*/
for(i=0;i<5;i++) /*通过循环找出学校a1的项目a2的成绩*/
if(a[i].school=a1)
break;
if(i<3)
printf("\tschool\t%c\tprogrammer \t%c\tranking\t%d",a1,a2,i+1);
if(i>2&&(a[i].school>=('w'-‘1’)/2+'m'||a[i].school>=('m'-‘1’)/2+'1'&&a[i].school<'m’+1))
printf("\tschool\t%c\tprogrammer\t%c\tranking\t%d".a1,a2.i+1);
if(i=6)
printf(“\tthe programmer gets no score\n”);
}
void inquire2() /*本函数实现按项目编号查询取得前三(五)名的学校*/
{SC a[5];char a1;int i;
printf("\tinput the programmer code you want to inquire\n");
scanf("%c\n",&a1);
a[5]=thirdfifth(head,a1);
printf("\tthe top 3 or 5 schools of the programmer are\n");
for(i=0;i<3;i++)
printf("%c\t",a[i].school);
if(a1>=('m'-‘1’)/2+'1'&&a[i].school<'m’+1||a1>=('w'-‘1’)/2+'m')
for(i=3;i<5;i++)
printf("%c",a[i].school);
}
main()
{int x,m1,n1,w1;char m,n,w;
SC head;
head=creat(); /* 将链表的首地址赋给head*/
printf("\tinput the NO. of the school \n");
scanf("%d",&n1);
printf("\tinput the NO. of the boy programmer\n");
scanf("%d",&m1);
printf(“\tinput the NO. of the girl programmer\n");
scanf(“%d”,&w1);
m=(char)m1; /*对m1个学校进行编码*/
n=(char)n1; /*对n1个项目进行编码*/
w=(char)w1; /*对 w1个项目进行编码*/
do
{clrscr();
printf("\n\n\n\n\n\t\tplayer score management system\n");
printf("\t\t***************************************************************************************
没有合适的资源?快使用搜索试试~ 我知道了~
数据结构课程设计—— 运动会分数统计
共6个文件
exe:1个
c:1个
bpf:1个
5星 · 超过95%的资源 需积分: 12 20 下载量 14 浏览量
2010-04-18
14:56:27
上传
评论
收藏 48KB RAR 举报
温馨提示
任务:参加运动会有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)、可以按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校。
资源推荐
资源详情
资源评论
收起资源包目录
数据结构运动会分数统计.rar (6个子文件)
运动会分数统计
fenshutongji.exe 78KB
Project1.bpf 204B
fenshutongji.obj 8KB
fenshutongji.c 10KB
Project1.bpr 3KB
新建 文本文档 (3).txt 9KB
共 6 条
- 1
资源评论
- michealdone2013-12-01特别适用。初级金典
xj_8912
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功