运动会管理系统资料.docx

上传人:b****3 文档编号:5229234 上传时间:2022-12-14 格式:DOCX 页数:27 大小:375.02KB
下载 相关 举报
运动会管理系统资料.docx_第1页
第1页 / 共27页
运动会管理系统资料.docx_第2页
第2页 / 共27页
运动会管理系统资料.docx_第3页
第3页 / 共27页
运动会管理系统资料.docx_第4页
第4页 / 共27页
运动会管理系统资料.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

运动会管理系统资料.docx

《运动会管理系统资料.docx》由会员分享,可在线阅读,更多相关《运动会管理系统资料.docx(27页珍藏版)》请在冰豆网上搜索。

运动会管理系统资料.docx

运动会管理系统资料

淮海工学院计算机工程学院

课程设计报告

设计名称:

C语言课程设计

姓名:

***学号:

20141228**

专业班级:

软件工程142

系(院):

软件工程系

设计时间:

2015.6.22-2015.7.5

设计地点:

计算机工程学院机房、教室、学生宿舍、图书馆

成绩:

指导教师评语:

 

签名:

年月日

1.课程设计目的

 

C课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。

目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。

 

2.课程设计任务与要求:

要求:

本次课程设计利用《C程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。

要求:

1、对系统进行功能需求分析

2、设计合理的数据结构和系统框架

3、编程简练,程序功能齐全,能正确运行

4、说明书、流程图要清楚

5、课题完成后必须按要求提交课程设计报告

任务:

设计一个运动会管理系统,

1)能够提供一个程序界面对运动员的基本资料进行输入、删除、修改和查询等,基本资料应保存在文件中。

2)能够输入、修改、查询某项比赛event的比赛时间,3项比赛的资料保存在文件中。

3) 比赛项目分男子组和女子组,每个运动员的总分计算规则是:

去掉最高分、去掉最低分求平均值。

4)提供界面让工作人员输入每场比赛的所有运动员的每个裁判的分数,能查询某场比赛所有运动员的最后得分

5)评分的资料保存在score.txt中,包含的数据项有:

所属的学校、运动员编号、得分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)删除参赛队员信息

输入需要修改运动员的项目号、组别、编号。

以”r”打开score.txt文件,将文件中的数据格式化读入链表,完成读入后,关闭文件。

从链表的头节点开始查找该项成绩记录,查找到后,删除该项成绩,以“w”打开score.txt将链表中的数据重新写入score.txt文件,关闭文件

查询成绩

输入需要修改运动员的项目号、组别、编号。

以”r”打开score.txt文件,将文件中的数据格式化读入链表,完成读入后,关闭文件。

从链表的头节点开始查找该项成绩记录,查找到后,输出该队员的成绩列表。

二:

时间

录入比赛时间

依次输入六场比赛的时间,存放在二位字符数组中,完成输入后,将比赛时间写入文件time.txt

2)修改比赛时间

将time.txt文件的时间读入二位字符数组中,输入比赛项目号、组别输入新比赛时间,再次字符数组中的内容写入文件time.txt,

3)查询比赛时间

将time.txt文件的时间读入二位字符数组中,输入比赛项目号、组别输出比赛时间。

4.课程设计成果

#include

#include

#include

#include

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("输入参赛队员的项目、组别、编号、所属的学校、各项小分:

\n");

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("警告:

参赛队员信息输入错误!

\n");

printf("请重新输入参赛队员的项目、组别、编号、所属的学校、各项小分:

\n");

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]);

}

floatmin=20,max=0;

for(i=0;i<5;i++)//计算总分,均分

{

d.total+=d.score[i];

if(max

max=d.score[i];

if(min>d.score[i])

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);//信息格式化写入文件

printf("是否继续输入?

1-是,0-否");

scanf("%d",&t);

}

printf("==========================================================\n");

printf("文件创建完毕。

\n");

fclose(fp);//输入完毕,关闭文件

}

comp*read()//格式化读出文件信息score.txt写入链表

{

FILE*fp;

if((fp=fopen("score.txt","r"))==NULL)

{

printf("不能读取score.txt文件。

\n");

exit(0);

}

comp*head,*s,*r;

head=(comp*)malloc(sizeof(comp));//尾插法创建链表

r=head;

printf("项目组别编号学校得分1得分2得分3得分4得分5总分平均分\n");

while(fscanf(fp,"%d%d%d%s%f%f%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],&d.total,&d.ave)>0)/*从文件读取参赛者信息,创建列表*/

{

s=(comp*)malloc(sizeof(comp));

s->event=d.event;

s->sex=d.sex;

s->no=d.no;

strcpy(s->name,d.name);

s->score[0]=d.score[0];

s->score[1]=d.score[1];

s->score[2]=d.score[2];

s->score[3]=d.score[3];

s->score[4]=d.score[4];

s->total=d.total;

s->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;

}

s->next=NULL;//链表终点

returnhead;

fclose(fp);

}

voidqueue()//格式化读出文件信息score.txt写入链表

{

FILE*fp;inti=0,j;M=0;

if((fp=fopen("score.txt","r"))==NULL)

{

printf("不能读取score.txt文件。

\n");

exit(0);

}

comp*s=a;d.next=NULL;

printf("项目组别编号学校得分1得分2得分3得分4得分5总分平均分\n");

while(fscanf(fp,"%d%d%d%s%f%f%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],&d.total,&d.ave)>0)/*从文件读取参赛者信息,创建列表*/

{

*(s+i)=d;

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);

i++;

M++;

}

fclose(fp);

for(i=0;i

for(j=0;j

if(a[j].total

{

d=a[j];

a[j]=a[j+1];

a[j+1]=d;

}

for(i=0;i

printf("%d%d%3d%10s%3.1f%3.1f%3.1f%3.1f%3.1f%5.1f%6.2f\n",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;

printf("请输入需要查询参赛者的项目、组别、编号:

\n");

scanf("%d%d%d",&i,&j,&k);

comp*s=head->next;

while(s!

=NULL)//在链表中寻找该节点

{

if(i==s->event&&j==s->sex&&k==s->no)

{

printf("该参赛队员的成绩信息为:

\n");//输出信息

printf("项目组别编号学校得分1得分2得分3得分4得分5总分平均分\n");

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);

l=1;

break;

}

s=s->next;

}

if(l==0)

printf("未搜索到符合条件的项\n");

printf("是否继续搜索其他参赛者信息?

1-是,0-否\n");//是否继续查找

scanf("%d",&d);

if(d==1)

search(head);

}

voiddel(comp*head)

{

comp*s,*r;

printf("请输入需要删除的参赛者的项目、组别、编号");

inti,j,k,d;

scanf("%d%d%d",&i,&j,&k);

for(s=head,r=s->next;r!

=NULL;s=s->next,r=s->next)

{

while(r->event==i&&r->sex==j&&r->no==k)

{

s->next=r->next;

free(r);

r=s->next;

if(r==NULL)//如果最后一位满足条件,如果没有这个判断程序执行到r->event==i出错,因为此时r=NULL

break;

}

if(r==NULL)//如果没有这个判断,程序运行到r=s->event出错,因为此时s=NULL

break;

}

printf("是否继续删除其他参赛者信息?

1-是,0-否\n");

scanf("%d",&d);

if(d==1)

del(head);

}

voidwritein(comp*head)

{

FILE*fp;

if((fp=fopen("score.txt","w"))==NULL)

{

printf("不能创建come.txt文件。

\n");

exit(0);

}

comp*s=head->next;

while(s!

=NULL)

{

fprintf(fp,"%d%d%d%s%f%f%f%f%f%f%f\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);

s=s->next;

}

fclose(fp);

}

voidrevise(comp*head)/*修改*/

{

intf,d,l,i,m;

floatmax=0,min=20;

printf("请输入需要修改的参赛者的项目、组别、编号");//以新成绩覆盖

scanf("%d%d%d",&f,&d,&l);

comp*s=head->next;

while(s!

=NULL)

{

if(f==s->event&&d==s->sex&&l==s->no)

{

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);

printf("请输入该参赛者的得分1得分2得分3得分4得分5:

\n");

scanf("%f%f%f%f%f",&s->score[0],&s->score[1],&s->score[2],&s->score[3],&s->score[4]);

s->total=0;

for(i=0;i<5;i++)//求得总分、均分

{

s->total+=s->score[i];

if(maxscore[i])

max=s->score[i];

if(min>s->score[i])

min=s->score[i];

}

s->total=s->total-max-min;

s->ave=(float)s->total/3;

}

s=s->next;

}

printf("修改完毕。

\n");

printf("是否继续修改其他参赛者信息?

1-是,0-否\n");//是否继续修改

scanf("%d",&m);

if(m==1)

revise(head);

}

voidintime()

{

inti,j;

FILE*fd;

printf("请依次输入六场比赛时间:

\n");

if((fd=fopen("time.txt","w"))==NULL)

{

printf("不能创建come.txt文件。

\n");

exit(0);

}

for(i=0;i<3;i++)

for(j=0;j<2;j++)

{

scanf("%s",time[i][j]);

fprintf(fd,"%s\n",time[i][j]);

}

fclose(fd);

}

voidreadtime()

{

inti,j;FILE*fd;

if((fd=fopen("time.txt","r"))==NULL)

{

printf("不能创建come.txt文件。

\n");

exit(0);

}

for(i=0;i<3;i++)

for(j=0;j<2;j++)

{

fscanf(fd,"%s\n",time[i][j]);

}

fclose(fd);

}

voidsearchtime(intm,intn)

{

if(m>3||m<0||n<0||n>2)

printf("该场比赛不存在!

\n");

else

{

readtime();

printf("该场比赛时间为:

");

printf("%s\n",time[m-1][n-1]);

}

}

voidrevisetime(intm,intn)

{

readtime();

if(m>3||m<0||n<0||n>2)

printf("该场比赛不存在!

\n不能进行修改!

\n");

else

{

printf("原比赛时间为:

");

searchtime(m,n);

printf("请输入新比赛时间:

");

scanf("%s",time[m-1][n-1]);

}

inti,j;

FILE*fd;

if((fd=fopen("time.txt","w"))==NULL)

{

printf("不能创建come.txt文件。

\n");

exit(0);

}

for(i=0;i<3;i++)

for(j=0;j<2;j++)

{

fprintf(fd,"%s\n",time[i][j]);

}

fclose(fd);

}

voidmain()

{

intm;

comp*q;

inti,j,k=1;

printf("\t\t\t参赛队员信息操作界面\n");

while(k==1)

{

printf("================================================================================\n");

printf("请选择操作选项:

\n");

printf("1输入比赛成绩2修改比赛成绩3删除成绩记录\n");

printf("4查询成绩记录5输入比赛时间6修改比赛时间\n");

printf("7查询比赛时间8浏览所有得分9按成绩高低输出\n");

scanf("%d",&m);

switch(m)

{

case1:

{

keyboad();

printf("输入的内容为:

\n");

read();

};break;

case2:

{

q=read();//读取文件

revise(q);//修改

writein(q);//写入文件

};break;

case3:

{

q=read();//读取文件

del(q);//删除

writein(q);//写入文件

};break;

case4:

{

q=read();

search(q);

};break;

case5:

{

intime();

};break;

case6:

{

printf("请依次输入该场比赛的项次、组别");

scanf("%d%d",&i,&j);

revisetime(i,j);

};break;

case7:

{

printf("请依次输入该场比赛的项次、组别");

scanf("%d%d",&i,&j);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1