体育打分系统Word文档下载推荐.docx
- 文档编号:4184056
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:19
- 大小:259KB
体育打分系统Word文档下载推荐.docx
《体育打分系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《体育打分系统Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
stdlib.h>
string.h>
#defineJUDEGNUM4/*裁判数*/
#defineNAMELEN20/*姓名最大字符数*/
#defineCODELEN10/*号码最大字符数*/
#defineFNAMELEN80/*文件名最大字符数*/
#defineBUFFSIZE128/*缓冲区最大字符数*/
charjudgement[JUDEGNUM][NAMELEN+1]={"
judgementA"
"
judgementB"
judgementC"
judgementD"
};
structAthleteScore
{
charname[NAMELEN+1];
/*姓名*/
charcode[CODELEN+1];
/*学号*/
intscore[JUDEGNUM];
/*各裁判给的成绩*/
inttotal;
/*总成级*/
intaverage;
structLinkNode
/*号码*/
inttotal;
/*总成级*/
structLinkNode*next;
}*head;
/*链表首指针*/
inttotal[JUDEGNUM];
/*各裁判给的总成绩*/
FILE*filepoint;
/*文件指针*/
charfilename[FNAMELEN];
/*文件名*/
/*从指定文件读入一个记录*/
intGetRecord(FILE*fpt,structAthleteScore*sturecord)
charbuf[BUFFSIZE];
inti,j,temp,max=0,min=10;
if(fscanf(fpt,"
%s"
buf)!
=1)
return0;
/*文件结束*/
strncpy(sturecord->
name,buf,NAMELEN);
fscanf(fpt,"
buf);
code,buf,CODELEN);
for(i=0;
i<
JUDEGNUM;
i++)
fscanf(fpt,"
%d"
&
sturecord->
score[i]);
while(sturecord->
score[i]>
0||sturecord->
10)
{printf("
请输入0到10之间的数字\n"
);
}
for(i=0;
4;
i++)
for(j=i+1;
j<
j++)/*注意循环的上下限*/
if(sturecord->
score[j])
{temp=sturecord->
score[i];
sturecord->
score[i]=sturecord->
score[j];
score[j]=temp;
}
for(sturecord->
total=0,i=0;
sturecord->
total+=sturecord->
{if(sturecord->
max)
{max=sturecord->
}
score[i]<
min)
{min=sturecord->
average=(sturecord->
total-max-min)/2;
return1;
/*对指定文件写入一个记录*/
voidPutRecord(FILE*fpt,structAthleteScore*sturecord)
inti;
fprintf(fpt,"
%s\n"
sturecord->
name);
code);
fprintf(fpt,"
%d\n"
return;
/*显示运动员记录*/
voidShowAthleteRecord(structAthleteScore*rpt)
printf("
\nName:
%s\n"
rpt->
Code:
score:
\n"
printf("
%-15s:
%4d\n"
judgement[i],rpt->
Total:
total);
average:
%4d\n"
average);
/*列表显示运动员成绩*/
voidListathleteinfo(char*fname)
FILE*fp;
structAthleteScores;
system("
cls"
if((fp=fopen(fname,"
r"
))==NULL)
{
Can'
topenfile%s.\n"
fname);
return;
while(GetRecord(fp,&
s)!
=0)
ShowAthleteRecord(&
s);
fclose(fp);
return;
/*构造链表*/
structLinkNode*CreatLinklist(char*fname)
structLinkNode*p,*u,*v,*h;
returnNULL;
h=NULL;
p=(structLinkNode*)malloc(sizeof(structLinkNode));
while(GetRecord(fp,(structAthleteScore*)p)!
v=h;
while(v&
&
p->
total<
=v->
total)
{
u=v;
v=v->
next;
}
if(v==h)
h=p;
else
u->
next=p;
p->
next=v;
p=(structLinkNode*)malloc(sizeof(structLinkNode));
free(p);
returnh;
/*顺序显示链表各表元*/
voidOutputLinklist(structLinkNode*h)
while(h!
=NULL)
ShowAthleteRecord((structAthleteScore*)h);
while(getchar()!
='
\n'
h=h->
/*按运动员姓名查找记录*/
intSearchbyName(char*fname,char*key)
intc;
c=0;
if(strcmp(s.name,key)==0)
ShowAthleteRecord(&
c++;
if(c==0)
Theathlete%sisnotinthefile%s.\n"
key,fname);
/*按运动员号码查找记录*/
intSearchbyCode(char*fname,char*key)
if(strcmp(s.code,key)==0)
break;
voidInsertRecord()
charc,i,j,n;
Pleaseinputtheathletesscorerecordfile'
sname:
\n"
scanf("
filename);
if((fp=fopen(filename,"
Thefile%sdoesn'
texit.\ndoyouwanttocreatit?
(Y/N)"
getchar();
c=getchar();
if(c=='
Y'
||c=='
y'
)
fp=fopen(filename,"
w"
printf("
Pleaseinputtherecordnumber:
"
scanf("
n);
for(i=0;
n;
{
printf("
Inputtheathlete'
scanf("
s.name);
scode:
s.code);
for(j=0;
j++)
{
printf("
Inputthe%smark:
judgement[j]);
scanf("
s.score[j]);
}
PutRecord(fp,&
fclose(fp);
intmain()
charc;
while
(1)
system("
\n--------------输入命令-----------\n"
|1:
插入记录.\n"
|2:
按运动员的姓名寻找记录.\n"
|3:
按运动员的号码寻找记录.\n"
|4:
列出所有的记录.\n"
|5:
按总分从高到低排列.\n"
|6:
退出.\n"
------------------------------------------\n"
请输入命令:
scanf("
%c"
c);
/*输入选择命令*/
switch(c)
{case'
1'
:
InsertRecord();
getch();
break;
case'
2'
/*按运动员的姓名寻找记录*/
Pleaseinputtheathlete'
SearchbyName(filename,buf);
3'
/*按运动员的号码寻找记录*/
SearchbyCode(filename,buf);
4'
/*列出所有运动员记录*/
Listathleteinfo(filename);
5'
/*按总分从高到低排列显示*/
if((head=CreatLinklist(filename))!
OutputLinklist(head);
case6:
return1;
default:
5、测试数据及其结果分析
1、首页界面
2、输入命令一,插入运动员记录
3、输入命令二,按运动员姓名查找
3、输入命令三按运动员号码查找及结果
4、输入命令四,列出所有运动员记录
5、输入命令5,对所有的运动员的成绩排序
6、调试过程中的问题
1、开始时用的清屏的,代码是clrscr()兼容性不好,XX搜索后改变了函数system("
第一个问题就圆满解决了。
2、对于打分的细则问题,参考网上的代码过于简单只计算了总分,于是自己想了改成去掉一个最高分一个最低分,再去平均分,介于平均分是float型的,总分是int型的,考虑在计算过程电脑是否自己会强制转换,不行就手动转换float(a)/n。
3、对于对每个裁判打分进行排序的问题,只实现了成绩的排队,和裁判本人对不上了。
7、参考文献和查阅的资料(给出文献名或者网络链接)
1.朱立华,王立柱.《C语言程序设计》.人民邮电出版社
2.
8、程序设计总结
这是大学四年里的最后的一次的课程设计,不能说自己新学到了什么多的东西,只能说是对自己之前学的C语言以及数据结构的复习吧,由于这些事大一和大二时学的很长时间没碰了,几乎都已经很陌生了,这次在不断的查询和解决办法的过程,对遗忘的很多知识点算是一个回顾。
对于一些基本算法和文件、链表的运用更是加深了印象。
这次实验最深刻的体会还是时间的合理分配及运用,由于目前大四自己要实习而且英语方面还报了考试,这些综合在一起就需要自己高效率的利用分配自己是时间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 体育 打分 系统