运动会管理系统资料Word格式文档下载.docx
- 文档编号:18204793
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:27
- 大小:375.02KB
运动会管理系统资料Word格式文档下载.docx
《运动会管理系统资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《运动会管理系统资料Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
所属的学校、运动员编号、得分1、得分2、得分3、得分4、得分5、总分、平均分。
3.课程设计说明书
概要设计
模块说明:
在我设计的程序中一共包括了八个模块,分别是:
输入成绩模块、查找成绩模块、修改成绩模块、删除成绩模块、输入时间模块、读取成绩模块、查找时间模块、修改时间模块。
程序的各个功能通过switch语句,把计几大模块联系了起来,同时,为了实现多次使用这几大模块,就在switch语句外加了while循环。
模块机构图
系统流程图
详细设计
参赛队员成绩:
成员成绩写入文件
打开score.txt.在运行窗口输入所有成员信息,信息包括项目编号(1—3),组别(1或2),五项小分,输入后进行判断醒目编号是否在范围内,若超出给出提示要求重新输入,若再次错误继续提示重新输入,计算其总分,平均分,写入文件。
完成输入后询问是否继续输入,若继续按“1”,继续操作,否则为“0”退出输入程序,输出所有输入的数据,关闭文件score.txt。
2)修改成绩信息
输入需要修改运动员的项目号、组别、编号。
以”r”打开score.txt文件,将文件中的数据格式化读入链表,完成读入后,关闭文件。
从链表的头节点开始查找该项成绩记录,查找到后,输入新成绩覆盖旧成绩,完成修改后,以“w”打开score.txt将链表中的数据重新写入score.txt文件,关闭文件。
3)删除参赛队员信息
从链表的头节点开始查找该项成绩记录,查找到后,删除该项成绩,以“w”打开score.txt将链表中的数据重新写入score.txt文件,关闭文件
查询成绩
从链表的头节点开始查找该项成绩记录,查找到后,输出该队员的成绩列表。
二:
时间
录入比赛时间
依次输入六场比赛的时间,存放在二位字符数组中,完成输入后,将比赛时间写入文件time.txt
2)修改比赛时间
将time.txt文件的时间读入二位字符数组中,输入比赛项目号、组别输入新比赛时间,再次字符数组中的内容写入文件time.txt,
3)查询比赛时间
将time.txt文件的时间读入二位字符数组中,输入比赛项目号、组别输出比赛时间。
4.课程设计成果
#include<
stdio.h>
stdlib.h>
string.h>
malloc.h>
chartime[3][2][7];
//读取并存放比赛时间
intM;
structcomp
{
intevent;
//比赛场次
intsex;
//1为男生,2为女生
intno;
//参赛队员编号
charname[20];
//所属的学校
floatscore[5];
floattotal;
floatave;
comp*next;
}d,a[50];
voidkeyboad()
{
inti;
FILE*fp;
if((fp=fopen("
score.txt"
"
w"
))==NULL)//保存在score.txt
{
printf("
不能创建score.txt文件。
。
\n"
);
exit(0);
}
printf("
输入参赛队员的项目、组别、编号、所属的学校、各项小分:
intt=1;
while(t!
=0)//判断是否停止输入
d.total=0;
scanf("
%d%d%d%s%f%f%f%f%f"
&
d.event,&
d.sex,&
d.no,&
d.name,&
d.score[0],&
d.score[1],&
d.score[2],&
d.score[3],&
d.score[4]);
while(d.event>
3||d.event<
1||d.sex<
1||d.sex>
2)//若输入内容有误则重新输入
{
printf("
警告:
参赛队员信息输入错误!
请重新输入参赛队员的项目、组别、编号、所属的学校、各项小分:
scanf("
}
floatmin=20,max=0;
for(i=0;
i<
5;
i++)//计算总分,均分
d.total+=d.score[i];
if(max<
d.score[i])
max=d.score[i];
if(min>
min=d.score[i];
d.total=d.total-max-min;
d.ave=(float)d.total/3;
fprintf(fp,"
%d%d%d%s%f%f%f%f%f%f%f\n"
d.event,d.sex,d.no,d.name,d.score[0],d.score[1],d.score[2],d.score[3],d.score[4],d.total,d.ave);
//信息格式化写入文件
是否继续输入?
1-是,0-否"
%d"
t);
==========================================================\n"
文件创建完毕。
fclose(fp);
//输入完毕,关闭文件
}
comp*read()//格式化读出文件信息score.txt写入链表
r"
))==NULL)
不能读取score.txt文件。
comp*head,*s,*r;
head=(comp*)malloc(sizeof(comp));
//尾插法创建链表
r=head;
项目组别编号学校得分1得分2得分3得分4得分5总分平均分\n"
while(fscanf(fp,"
%d%d%d%s%f%f%f%f%f%f%f"
d.no,d.name,&
d.score[4],&
d.total,&
d.ave)>
0)/*从文件读取参赛者信息,创建列表*/
s=(comp*)malloc(sizeof(comp));
s->
event=d.event;
sex=d.sex;
no=d.no;
strcpy(s->
name,d.name);
score[0]=d.score[0];
score[1]=d.score[1];
score[2]=d.score[2];
score[3]=d.score[3];
score[4]=d.score[4];
total=d.total;
ave=d.ave;
printf("
%d%d%3d%10s%3.1f%3.1f%3.1f%3.1f%3.1f%5.1f%6.2f\n"
s->
event,s->
sex,s->
no,s->
name,s->
score[0],s->
score[1],s->
score[2],s->
score[3],s->
score[4],s->
total,s->
ave);
r->
next=s;
r=s;
next=NULL;
//链表终点
returnhead;
voidqueue()//格式化读出文件信息score.txt写入链表
inti=0,j;
M=0;
comp*s=a;
d.next=NULL;
*(s+i)=d;
i++;
M++;
for(i=0;
M;
i++)
for(j=0;
j<
M-i-1;
j++)
if(a[j].total<
a[j+1].total)
{
d=a[j];
a[j]=a[j+1];
a[j+1]=d;
}
a[i].event,a[i].sex,a[i].no,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3],a[i].score[4],a[i].total,a[i].ave);
voidsearch(comp*head)
inti,j,k,l=0,d;
请输入需要查询参赛者的项目、组别、编号:
scanf("
%d%d%d"
i,&
j,&
k);
comp*s=head->
next;
while(s!
=NULL)//在链表中寻找该节点
if(i==s->
event&
&
j==s->
sex&
k==s->
no)
该参赛队员的成绩信息为:
//输出信息
l=1;
break;
s=s->
if(l==0)
未搜索到符合条件的项\n"
是否继续搜索其他参赛者信息?
1-是,0-否\n"
//是否继续查找
d);
if(d==1)
search(head);
voiddel(comp*head)
comp*s,*r;
请输入需要删除的参赛者的项目、组别、编号"
inti,j,k,d;
for(s=head,r=s->
r!
=NULL;
s=s->
next,r=s->
next)
while(r->
event==i&
r->
sex==j&
no==k)
s->
next=r->
free(r);
r=s->
if(r==NULL)//如果最后一位满足条件,如果没有这个判断程序执行到r->
event==i出错,因为此时r=NULL
break;
if(r==NULL)//如果没有这个判断,程序运行到r=s->
event出错,因为此时s=NULL
break;
是否继续删除其他参赛者信息?
del(head);
voidwritein(comp*head)
不能创建come.txt文件。
=NULL)
{
fprintf(fp,"
s=s->
voidrevise(comp*head)/*修改*/
intf,d,l,i,m;
floatmax=0,min=20;
请输入需要修改的参赛者的项目、组别、编号"
//以新成绩覆盖
f,&
d,&
l);
if(f==s->
d==s->
l==s->
{
请输入该参赛者的得分1得分2得分3得分4得分5:
%f%f%f%f%f"
s->
score[0],&
score[1],&
score[2],&
score[3],&
score[4]);
total=0;
for(i=0;
i++)//求得总分、均分
total+=s->
score[i];
score[i])
max=s->
min=s->
total=s->
total-max-min;
ave=(float)s->
total/3;
修改完毕。
是否继续修改其他参赛者信息?
//是否继续修改
m);
if(m==1)
revise(head);
voidintime()
inti,j;
FILE*fd;
请依次输入六场比赛时间:
if((fd=fopen("
time.txt"
3;
2;
%s"
time[i][j]);
fprintf(fd,"
%s\n"
fclose(fd);
voidreadtime()
FILE*fd;
fscanf(fd,"
fclose(fd);
voidsearchtime(intm,intn)
if(m>
3||m<
0||n<
0||n>
2)
该场比赛不存在!
else
readtime();
该场比赛时间为:
"
time[m-1][n-1]);
voidrevisetime(intm,intn)
readtime();
\n不能进行修改!
原比赛时间为:
searchtime(m,n);
请输入新比赛时间:
voidmain()
intm;
comp*q;
inti,j,k=1;
\t\t\t参赛队员信息操作界面\n"
while(k==1)
================================================================================\n"
请选择操作选项:
1输入比赛成绩2修改比赛成绩3删除成绩记录\n"
4查询成绩记录5输入比赛时间6修改比赛时间\n"
7查询比赛时间8浏览所有得分9按成绩高低输出\n"
switch(m)
case1:
keyboad();
输入的内容为:
read();
};
break;
case2:
q=read();
//读取文件
revise(q);
//修改
writein(q);
//写入文件
};
case3:
del(q);
//删除
};
case4:
search(q);
case5:
intime();
case6:
请依次输入该场比赛的项次、组别"
%d%d"
j);
revisetime(i,j);
case7:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 管理 系统 资料