校际运动会管理系统说明书.doc_第1页
校际运动会管理系统说明书.doc_第2页
校际运动会管理系统说明书.doc_第3页
校际运动会管理系统说明书.doc_第4页
校际运动会管理系统说明书.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南大学C语言程序设计之: 校级运动会管理系统 指导教师:樊光军 专业班级:机械0917学生姓名:孙华博 机电工程学院 2010年7月 8日一 程序描述本课题主要实现一个简单的运动会成绩管理系统。假设参加运动会有s个学校,学校编号为1s。有m个男子项目和n个女子项目。男子项目编号为1m,女子项目编号为m+1m+n。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由自己设定。功能要求:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分;(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;(5)可以按项目编号查询取得前三或前五名的学校。 开发工具:VC+。二 设计过程本设计主要有以下几大功能模块:主程序,成绩输入,成绩统计,按照各种方式排序输出,通过不同的条件进行查询,保存退出主程序成绩输入成绩统计查询按项目编号查询取得前三或前五名的学校按各种方式输出按学校编号排序输出按男团体总分排序输出按学校总分排序输出按女团体总分排序输出按学校编号查询学校某个项目的成绩退出程序结构图主程序设计如图.主要通过main()函数及choose()函数实现.主程序图void main() int choos; printf(nn * * * 运动会分数统计 * * *nnn); printf(共有多少个学校参赛:); scanf(%d,&a); while(a20) if(a20) printf(n 参赛学校个数不能大于20nn); printf(共有多少个学校参赛:); scanf(%d,&a); printf(有几个男子组:); scanf(%d,&c); printf(有几个女子组:); scanf(%d,&d); for(i=0;i=a;i+) fi=(struct node *)malloc(sizeof(struct node)*(c+d+3); for(j=0;j=c+d+2;j+) fij.num=0; choos=choose(); while(1) while(choos8) choos=choose(); (*gchoos)(); printf(n); choos=choose(); int choose() int choo; printf(nn 1*输入成绩n); printf( 9*退出nn); printf(请选择:); scanf(%d,&choo); return(choo-1); 成绩输入 如图所示.当选择1 时进行成绩的输入.实现的功能函数为input(),相关实现如下: 成绩输入void input() int ab,ac,ae,af,g=1,get5=0,0,0,0,0; printf(n请输入项目代号:); ale:scanf(%d,&ab); if(abc+d|ab1) printf(n此项目代号不存在,重新输入n); goto ale; ae=0; for(i=0;i=a;i+) if(fiab.num!=0) ae=1; break; if(ae=1) al2: printf(n此项目成绩曾经已被录入过,是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入):n); printf( 1+重新录入(若重新录入,以前的该项目成绩将被删除)n); printf( 2+不要,待查证后再录入nn); scanf(%d,&af); if(af=2) printf(您已取消录入!n); return; else if(af=1) for(i=1;i=a;i+) if(fiab.num!=0) fi0.num=fi0.num-fiab.num; if(ab=c) fic+d+1.num=fic+d+1.num-fiab.num; else fic+d+2.num=fic+d+2.num-fiab.num; fiab.num=0; else goto al2; al: printf(n此项目是以前几名为胜出者:nn); printf( 3-以前三名n); printf( 5-以前五名nn); scanf(%d,&ac); if(ac=3) printf(n请依次输入获胜学校代号:); af=5; for(i=0;ia|ae1) printf(%d学校代号不存在,重新输入第%d名的学校代号n,ae,g); goto alq; for(b=0;b5;b+) if(ae=getb) printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!n,g); goto alq; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else if(ac=5) printf(请依次输入获胜学校代号:); af=7; for(i=0;ia|ae1) printf(%d学校代号不存在,重新输入第%d名的学校代号n,ae,g); goto alw; for(b=0;b5;b+) if(ae=getb) printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!n,g); goto alw; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else goto al; printf(nn 输入完成 ! ! ! ! n); 成绩统计成绩统计如图所示.当选择2 时进行成绩的输入.实现的功能函数为each (),相关实现如下:void each() printf(n 对应的格式为:n 学校代号:团体总成绩nn ); for(i=1;i=a;i+) printf(%2d:%3d ,i,fi0.num); if(i%3=0) printf(n ); 按照各种方式输出 主要有按学校编号输出,按学校总分输出,按男团输出,按女团输出.相关实现分别如下: 按学校编号输出 按学校总分出输按男团输出 按女团输出.void biaohao() printf(n项目代号 ); for(i=1;i9) printf(%4d ,i); else printf(%5d ,i); printf(n); printf(学校代号 n); for(i=1;i=a;i+) /*按学校编号使用for循环和判断语句输出*/ void zongfen() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*a+1);printf(n 按学校编号排序输出nn); printf( 学校代号 总分nn); for(i=1;i=a;i+) dei.ke=i; dei.num=fi0.num; for(i=1;i=a;i+) /*按学校总分使用for循环和判断语句输出*/ for(i=1;i=a;i+) printf(%13d%8dn,dei.ke,dei.num); void nanzong() printf(n 按男子团体总分排序输出nn); printf( 学校代号 男子团体总分nn); for(i=1;i=a;i+) dei.ke=i; dei.num=fic+d+1.num; for(i=1;i=a;i+) /*同上,按男团使用for循环嵌套及判断语句输出*/ for(i=1;i=a;i+) printf(%13d%12dn,dei.ke,dei.num); void nvzong() printf( 按女子团体总分排序输出nn); printf( 学校代号 女子团体总分nn); for(i=1;i=a;i+) for(i=1;i=a;i+) /*同上,按女团使用for循环及判断语句输出*/ for(i=1;ia|drc+d|dtc+d|ge1) printf(没有此项目代号,重新输入n); goto all; for(i=1;i=a;i+) if(fbge.num=2) sedy=1; if(sedy=0) printf(此项目没有录入成绩n); return; for(i=1;i0;i-) for(b=1;b=a;b+) if(fbge.num=i) printf(%5d,b); 保存退出 保存退出void exit0() FILE *fp; int k; alp:if(fp=fopen(sore.txt,w)=NULL) printf(创建文件失败n); printf( 1*重试n); printf( 2*强制退出(数据将不会保存到文件)n); printf( 3*回到主菜单n); alj: scanf(%d,&k); if(k=1) goto alp; else if(k=2) exit(0); else if(k=3) return; else printf(输入错误,请重新输入:); goto alj; fprintf(fp,nn); fprintf(fp,运动会分数统计表nnn); fprintf(fp,项目代号); for(i=1;i=c+d;i+) fprintf(fp,%5d,i); fprintf(fp, ); fprintf(fp,n 学校代号n); for(i=1;i=a;i+) fprintf(fp,%10d,i); for(b=1;b=c+d;b+) fprintf(fp,%5d,fib.num); fprintf(fp,n); fprintf(fp,nn); fprintf(fp, 注:本次运动会有%d个学校参赛nn,a); fprintf(fp, 其中1 %d组是男子组,%d %d组是女子组n,c,c+1,c+d); printf(n比赛成绩已保存到当前路径下的sore.txt文件中nn); fclose(fp); exit(1); 三 测试运行程序,分别输入学校数,男团.女团数。测试界面根据界面的提示进行各种操作.逐一从1到9进行操作,测试其功能。原程序代码#include #include #include #includeint a,b,c,d,i,j; struct node int num; ; struct node *f22; void exit0() FILE *fp; int k; alp:if(fp=fopen(sore.txt,w)=NULL) printf(创建文件失败n); printf( 1*重试n); printf( 2*强制退出(数据将不会保存到文件)n); printf( 3*回到主菜单n); alj: scanf(%d,&k); if(k=1) goto alp; else if(k=2) exit(0); else if(k=3) return; else printf(输入错误,请重新输入:); goto alj; fprintf(fp,nn); fprintf(fp,运动会分数统计表nnn); fprintf(fp,项目代号); for(i=1;i=c+d;i+) fprintf(fp,%5d,i); fprintf(fp, ); fprintf(fp,n 学校代号n); for(i=1;i=a;i+) fprintf(fp,%10d,i); for(b=1;bc+d|ab1) printf(n此项目代号不存在,重新输入n); goto ale; ae=0; for(i=0;i=a;i+) if(fiab.num!=0) ae=1; break; if(ae=1) al2: printf(n此项目成绩曾经已被录入过,是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入):n); printf( 1+重新录入(若重新录入,以前的该项目成绩将被删除)n); printf( 2+不要,待查证后再录入nn); scanf(%d,&af); if(af=2) printf(您已取消录入!n); return; else if(af=1) for(i=1;i=a;i+) if(fiab.num!=0) fi0.num=fi0.num-fiab.num; if(ab=c) fic+d+1.num=fic+d+1.num-fiab.num; else fic+d+2.num=fic+d+2.num-fiab.num; fiab.num=0; else goto al2; al: printf(n此项目是以前几名为胜出者:nn); printf( 3-以前三名n); printf( 5-以前五名nn); scanf(%d,&ac); if(ac=3) printf(n请依次输入获胜学校代号:); af=5; for(i=0;ia|ae1) printf(%d学校代号不存在,重新输入第%d名的学校代号n,ae,g); goto alq; for(b=0;b5;b+) if(ae=getb) printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!n,g); goto alq; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else if(ac=5) printf(请依次输入获胜学校代号:); af=7; for(i=0;ia|ae1) printf(%d学校代号不存在,重新输入第%d名的学校代号n,ae,g); goto alw; for(b=0;b5;b+) if(ae=getb) printf(同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号!n,g); goto alw; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else goto al; printf(nn 输入完成 ! ! ! ! n); void each() printf(n 对应的格式为:n 学校代号:团体总成绩nn ); for(i=1;i=a;i+) printf(%2d:%3d ,i,fi0.num); if(i%3=0) printf(n ); void biaohao() printf(n项目代号 ); for(i=1;i9) printf(%4d ,i); else printf(%5d ,i); printf(n); printf(学校代号 n); for(i=1;i=a;i+) printf( %d ,i); for(b=1;b9) printf(%4d,fib.num); else printf(%5d,fib.num); printf(n); void zongfen() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*a+1);printf(n 按学校编号排序输出nn); printf( 学校代号 总分nn); for(i=1;i=a;i+) dei.ke=i; dei.num=fi0.num; for(i=1;i=a;i+) for(b=i;bdei.num) ha=deb.ke; deb.ke=dei.ke; dei.ke=ha; ha=deb.num; deb.num=dei.num; dei.num=ha; for(i=1;i=a;i+) printf(%13d%8dn,dei.ke,dei.num); void nanzong() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*a+1); printf(n 按男子团体总分排序输出nn); printf( 学校代号 男子团体总分nn); for(i=1;i=a;i+) dei.ke=i; dei.num=fic+d+1.num; for(i=1;i=a;i+) for(b=i;bdei.num) ha=deb.ke; deb.ke=dei.ke; dei.ke=ha; ha=deb.num; deb.num=dei.num; dei.num=ha; for(i=1;i=a;i+) printf(%13d%12dn,dei.ke,dei.num); void nvzong() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*a+1); printf( 按女子团体总分排序输出nn); printf( 学校代号 女子团体总分nn); for(i=1;i=a;i+) dei.ke=i; dei.num=fic+d+2.num; for(i=1;i=a;i+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论