C语言课程设计_运动会管理系统

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

要求

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

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

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

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

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

任务

设计一个运动会管理系统,用于管理比赛时体操、跳水、滑冰等赛事裁判员对赛事的评分。假设只有这3场比赛event,每场有5个裁判评分。

实现功能

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

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

3) 比赛项目分男子组和女子组,每个运动员的总分计算规则是:去掉最高分、去掉最低分求平均值。

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

5)评分的资料保存在score.txt中,包含的数据项有:所属的学校、运动员编号、得分1、得分2、得分3、得分4、得分5、总分、平均分。

概要设计

模块说明

程序中一共包括了三个大模块,分别是:运动员信息模块、比赛时间模块、裁判分数模块,每个模块根据不同要求分成3—5个小模块,分别是:输入模块、修改模块、查询模块、删除模块、退出系统模块。这几个模块中输入、查找和修改都是独立分开作为子函数的,另外的则是作为switch语句中的一部分,通过switch语句,把模块联系了起来,同时,为了实现多次使用这几个模块,就在switch语句外加了do-while循环。

以下是模块结构图:

详细设计 

源程序代码

#include 
#include 
#include   /*用于动态分布空间*/
#include 
typedef struct Athlete   /*定义运动员管理信息的结构体。typedef用来指定新的类型名来代替已有的类型名*/
{char name[10];int sex;char school[10];int number;char class1[10];
}athtype;
typedef struct Athlete1  /*定义比赛时间管理的结构体*/
{char name[10];int event;int score[5];int sex;int tp;float aver;
}score;
typedef struct Athletenode   /*使用链表录入运动员数据athtype data*/
{athtype data;struct Athletenode *next;
}Listnode;
typedef struct Event    /*定义裁判分数管理的结构体*/
{char name[10];char time[20];int number;
}event;void Print()        /*输入运动员的信息*/
{FILE *fp1;int i,n;if((fp1=fopen("d:\\校运动会管理系统\\information.txt","ab+"))==NULL)  /*ab为了读写打开一个二进制文件*/{printf("不能建立!");exit(0);}athtype ah,ah1;fseek(fp1,0,2);   /*fseek用于二进制打开的文件,移除文件读写指针的位置,fp1为一打开的文件指针,偏移量为0,2将文件名指向末尾*/n=ftell(fp1)/sizeof(athtype);/*ftell返回文件fp1的当前位置,并赋值给n*/rewind(fp1);          /*功能是将文件内部的指针重新指向一个流的开头*/printf("输入运动员信息:");scanf("%s %d %s %d %s",ah.name,&ah.sex,ah.school,&ah.number,ah.class1);for(i=0;idata=ah;r->next=s;r=s;}r->next=NULL;fclose(fp1);printf("输入删除运动员编号:");scanf("%d",&d);p=head;p1=head->next;while(p1!=NULL){if(p1->data.number==d) break;p=p1;p1=p1->next;}if(p1!=NULL){p->next=p1->next;free(p1);fp1=fopen("d:\\校运动会管理系统\\information.txt","wb");/*为了输出数据,打开一个二进制文件*/p=head->next;while(p!=NULL){fwrite(&(p->data),sizeof(athtype),1,fp1);p=p->next;}fclose(fp1);printf("删除完成!\n");}else printf("未找到!\n");
}
void Modification() /*修改运动员的信息*/
{FILE *fp1;int i,n,d;if((fp1=fopen("d:\\校运动会管理信息\\information.txt","rb+"))==NULL){printf("不能建立!");exit(2);}athtype ah,ah1;fseek(fp1,0,2);n=ftell(fp1)/sizeof(athtype);rewind(fp1);printf("输入修改运动员编号:");scanf("%d",&d);for(i=0;i0){printf("%s          %s",en.name,en.time);printf("\n");}
}void Time()  /*进入比赛时间界面的选择*/
{int a;do{ printf("请选择 1-输入,2-修改,3-查询,0-退出:");scanf("%d",&a);switch(a){case 1:Print1();break;case 2:Modification1();break;case 3:Inquire1();break;}	}while(a!=0);system("cls");
}
void Print2() /*裁判信息管理*/
{score athe;int i,j,cnt=0;athtype athe1;int tmp;FILE *fp1,*fp2,*fp3;if((fp2=fopen("d:\\校运动会管理系统\\score.txt","ab"))==NULL)  /*向二进制文件尾添加数据*/{printf("不能建立!");exit(7);}if((fp1=fopen("d:\\校运动会管理系统\\information.txt","rb"))==NULL){printf("不能建立!");exit(8);}if((fp3=fopen("d:\\校运动会管理系统\\score.txt","a"))==NULL) /*向文本文件尾添加数据*/{ printf("不能建立!");exit(9);}printf("请输入比赛名称:(1.体操  2.跳水 3.滑冰 )");scanf("%d",&athe.event);fprintf(fp3,"%d ",athe.event);fputs("(1.体操  2.跳水 3.滑冰 )\n",fp3);fputs("  运动员编号    学校名称        裁判得分              总分    平均分\n",fp3);while(fread(&athe1,sizeof(athtype),1,fp1)>0){strcpy(athe.name,athe1.name);athe.sex=athe1.sex;fprintf(fp3,"  %d ",athe1.number);fprintf(fp3,"      %s        ",athe1.school);printf("运动员%s\n",athe.name);printf("请依次输入五个裁判评分:");for(i=0;i<5;i++)    /*冒泡法进行排序*/{scanf("%d",&athe.score[i]);fprintf(fp3," %d ",athe.score[i]);}for(i=0;i<4;i++)for(j=3;j>=i;j--)if(athe.score[j+1]

设计心得

 第一次输真么多的代码,发现自己还有很多的不足,同时也学会了许多新的老师不曾讲过的只是,这次课程设计,是对自己经历的充实,也是对自己的一次巨大的挑战。这次课设,也让我明白在今后的学习和生活当中,合作的重要性,以及对基础知识的把握,让暗暗下定决心在下学期的学习当中更加努力和认真,这一年对c语言的学习,让我从一无所知转换到另一个层次,也让我对计算机语言有了一定的认识,也激发了我对计算机知识学习的好奇心,相信在未来的计算机语言的学习中,我能在C的基础上,学习的更加灵动。

附件:源码下载

C语言课程设计-运动会管理系统_c语言课程设计报告校园运动会管理系统-C文档类资源-CSDN文库https://download.csdn.net/download/NBITer/87369758


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部