#include
#include
#include
#include
#defineJUDEGNUM3 /* 裁判数 */
#define NAMELEN20/* 姓名最大字符数 */
#define CODELEN10/* 号码最大字符数 */
#define FNAMELEN80/* 文件名最大字符数 */
#define BUFFSIZE128/* 缓冲区最大字符数 */
char judgement[JUDEGNUM][NAMELEN+1] = {"judgementA","judgementB","judgementC"};
struct AthleteScore
{
charname[NAMELEN+1];/* 姓名 */
char code[CODELEN+1];/* 学号 */
int score[JUDEGNUM];/* 各裁判给的成绩 */
int total; /* 总成级 */
};
struct LinkNode
{
charname[NAMELEN+1];/* 姓名 */
char code[CODELEN+1];/* 号码 */
int score[JUDEGNUM];/* 各裁判给的成绩 */
int total; /* 总成级 */
structLinkNode *next;
}*head;/* 链表首指针 */
int total[JUDEGNUM];/* 各裁判给的总成绩 */
FILE *filepoint;/* 文件指针 */
char filename[FNAMELEN];/* 文件名 */
/* 从指定文件读入一个记录 */
int GetRecord(FILE *fpt,struct AthleteScore *sturecord)
{
char buf[BUFFSIZE];
int i;
if(fscanf(fpt,"%s",buf)!=1)
return 0;/* 文件结束 */
strncpy(sturecord->name,buf,NAMELEN);
fscanf(fpt,"%s",buf);
strncpy(sturecord->code,buf,CODELEN);
for(i=0;i
fscanf(fpt,"%d",&sturecord->score[i]);
for(sturecord->total=0,i=0;i
sturecord->total+=sturecord->score[i];
return 1;
}
/* 对指定文件写入一个记录 */
void PutRecord(FILE *fpt,struct AthleteScore *sturecord)
{
int i;
fprintf(fpt,"%s\n",sturecord->name);
fprintf(fpt,"%s\n",sturecord->code);
for(i=0;i
fprintf(fpt,"%d\n",sturecord->score[i]);
return ;
}
/* 显示运动员记录 */
void ShowAthleteRecord(struct AthleteScore *rpt)
{
int i;
printf("\nName : %s\n",rpt->name);
printf("Code : %s\n",rpt->code);
printf("score :\n");
for(i=0;i
printf(" %-15s : %4d\n",judgement[i],rpt->score[i]);
printf("Total : %4d\n",rpt->total);
}
/* 列表显示运动员成绩 */
void Listathleteinfo(char *fname)
{
FILE *fp;
struct AthleteScore s;
system("cls");
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.\n",fname);
return ;
}
while(GetRecord(fp,&s)!=0)
{
ShowAthleteRecord(&s);
}
fclo