运动会分数统计系统_第1页
运动会分数统计系统_第2页
运动会分数统计系统_第3页
运动会分数统计系统_第4页
运动会分数统计系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要*实践教学* 兰州理工大学计算机与通信学院2013年春季学期 C程序设计 课程设计题 目:运动会分数统计系统专业班级:通信工程12级xx班姓 名: xxxx 学 号: 12250xxx 指导教师: xxxxxx 成 绩:_I摘要运动会分数管理系统摘要在实际运动会比赛中,人工统计不但速度慢,而且容易出现错误。本运动会分数统计系统能够对输入的信息进行自动化处理,操作简单,可靠性高,大大提高了统计效率;系统将参赛学校比赛结束后的相关数据自动进行分析处理,可根据用户的要求,按照得分高低对学校、运动项目、参赛团体进行排序输出,使用户能够直观的了解到运动会情况。关键词:运动会 排序 统计IIC语言课程

2、设计论文目录中文摘要I1 题目要求11.1要求12 系统分析13 总体设计24 详细设计34.1 主要子函数功能34.2 主函数中各子函数功能介绍34.2.1 主函数34.2.24.2.35 运行结果(附带抓图)36 总结5参考文献6致谢附录171 题目要求1.1要求参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前前三名积分;前三名的积分分别为:5、3、2。(m、w=20,n=10)1).可以输入各个学校、各项目、以及各项目前三名的数据信息;2)能统计各学校总分、男子项目和女子项目总分;3)可以按学校编号(或学校名

3、称)、学校总分、男女团体总分排序输出;4).可以按学校编号(或学校名称)查询学校某个项目的情况;可以按项目编号查询取得前三的学校。2 系统分析本程序中学校的存储结构为链表,进出系统后第一步是输入运动会信息,输入的信息通过系统的运算处理后,通过输入相应的功能编号,系统按功能要求显示出相应的数据。Prev school1 next头结点Prev school(最后) next3 总体设计开始输入项目编号temp是数字NY0temp18NY输出“项目不存在”学校遍历结束temp存在YNNext schoolNtemp是奇数 NY取5名取3名输入获奖的学校编号se1se15NY项目号、名次、运动员名字

4、添进学校所在结点Y继续添加YN结束4详细设计:4.1主要子函数功能查询操作checkFunc(school *head,int &n)文件保存save(school *head)总分快速排序tquicksort(vector& v, int first, int last)总分基数排序 tbaseSort(vector& v, int d)void funct1()、void funct2()、void funct8()分别代表主菜单的8个功能。4.2主函数中各子函数功能介绍4.2.1 主函数首先要建立一个用户操作菜单,用户再根据菜单项实现操作;switch()语句实现对用户输入的选项进行判断

5、,然后对相应的子函数进行调用,并实现相应的功能;其各个子函数功能如下。void main() int t; g2=(ALLNode*)malloc(sizeof(ALLNode); g1=(ALLitems*)malloc(sizeof(ALLitems); if(!g2|!g1) exit(1); /textcolor(WHITE); /textbackground(BLUE); /clrscr(); system(cls); for(;) printf(tt 请选择(0-8):); loop:scanf(%d,&t); system(cls); switch(t) /选择语句 case 1

6、:funct1(g1,g2);save();break; /调用子函数 输入各个项目成绩并存储文件 case 2:funct2(g2);break; /调用子函数 统计各学校总分 case 3:funct3(g2);break; /调用子函数 按学校编号排序输出 case 4:funct4(g2);break; /调用子函数 按学校总分排序输出 case 5:funct5(g2);break; /调用子函数 按男团体总分排序输出 case 6:funct6(g2);break; /调用子函数 按女团体总分排序输出 case 7:funct7(g2);break; /调用子函数 按学校编号查询学

7、校某个项目情况 case 8:funct8(g1);break; /调用子函数 按项目编号查询取得名次的学校 case 0:exit(0); /退出系统 default: printf(输入有误,请重新选择:); goto loop; /clrscr(); system(cls); 4.2.2 void save()在这个操作系统中,首先要做的就是把信息输入,通过funct1()输入完毕后必须得存储输入的数据,采用void save()子函数实现此功能;在程序中建立sports1、sports2文件对数据进行存储,如果没有输入数据,则判断文件为空(NULL),返回空值。void save()

8、FILE *fp1,*fp2; /定义两个文件指针 fp1=(FILE *)malloc(sizeof(FILE);/malloc()动态存储FILE fp2=(FILE *)malloc(sizeof(FILE); if(fp1=fopen(sports1,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=NULL) printf(cann

9、ot open file.n); return; /sports1、sports2分别为存储Allitems、Allnode的文件 if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1) printf(file write error.n); fclose(fp2); 4.2.3 void funct1(ALLitems *g1,ALLNode *g2)此子函数为输入信息函数,含有for()循环、while循环、do while循环,通过printf()输入显示提示消息,提示要输入的是什么,再用scanf()函数进行输入,通过if()对输入的数字进行判断,如果满足条件则

10、提示输入错误,请重新输入5 运行结果(附带抓图)5.1程序运行结果5.2 在程序中男子项目数m和女子项目w数限定为120个,学校数目限定在110个,如果输入数字超出范围,则提醒重新输入,还有项目编号男子项目为20以前,女子项目在为2040,如果输入的项目编号超出1(m+w)和输入的学校编号不在1n内,则系统会输出“0”值,利用此系统之前必须阅读说明,可根据实际需要对w、m、n的限定值进行修改。部分运行结果如下图所示:5.3输出各学校总分界面结果输入错误的项目编号和学校编号,运行结果为零,运行结果如下图:输入正确的项目编号和学校编号,运行结果如下图:5.4输入学校编号按学校总分输出结果5.5输入

11、学校编号按学校男团体总分排序输出结果5.6输入学校编号按学校女团体总分排序输出结果5.7按学校编号查询学校某个项目情况如下图5.8按项目编号查询取得名次的学校结果如下图6 总结紧张而有序的C程序设计终于结束了通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。同时意识到这还是一个小小的开始,在实际生活中编写的程序远比这大得多,要把程序运用到实际生活中还得多努力锻炼,不断发展。参考文献1 C/C+程序设计,王连相等,中国科学技术出版社,20042 C语言程序设计,谭浩强,清华大学出版社,19993 C程序设

12、计题解与上机指导,谭浩强,清华大学出版社,19994 C语言实用程序荟萃,西安电子科技大学出版社,19935 C语言函数手册,机械工业出版社,19996 C语言的实际应用,安徽科学技术出版社,2000致谢首先要感谢王连相老师的授课和张宪立老师的指导!感谢所有支持我完成C程序设计论文的老师和同学们!感谢所有参考书籍的作者!附录:#include #include #include #include /#include /*屏幕操作函数*/ #define MAX 50 /#define NULL 0 typedef struct node1 int school; /*学校编号*/ int re

13、cord; /*项目成绩*/ struct node1 *next; /*链域*/ Schools; typedef struct int item; /*项目编号*/ Schools *firstschool; /*链域指向链表中第一个结点*/ ITEM; typedef struct int z; /* 项目总数 */ ITEM aMAX; ALLitems; typedef struct node2 int item; /*该学校获奖的项目*/ int record; /*项目成绩*/ struct node2 *next; /*链域*/ Items; typedef struct in

14、t school; /*学校编号*/ int score; /*学校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ SCHNode; typedef struct int n; /* 学校总数 */ SCHNode bMAX; ALLNode; ALLitems *g1; ALLNode *g2; void funct1(ALLitems *g1,ALLNode *g2) Schools *p1; Items *p2; int i,j,k,m,w,h,x; p1=(Sch

15、ools *)malloc(sizeof(Schools); p2=(Items *)malloc(sizeof(Items); if(!p1|!p2) exit(1); printf(nn); printf(n *输入各个项目信息 * nn); printf( 输入男子项目总数m:); scanf(%d,&m); if(m20) printf( 输入有误,m是20以内的整数,请重新输入:); scanf(%d,&m); printf( 输入女子项目总数w:); scanf(%d,&w); if(w20) printf( 输入有误,w是20以内的整数,请重新输入:); scanf(%d,&w)

16、; printf( 输入参加运动会的学校总数n:); scanf(%d,&g2-n); if(g2-nn20) printf( 输入有误,n是20以内的整数,请重新输入:); scanf(%d,&g2-n); g1-z=m+w; printf( 则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z); printf(nn *记录运动会成绩*); printf(nn (输入0标志结束)n); for(k=1;kz;k+) g1-ak.item=k; g1-ak.firstschool=NULL; for(k=1;kn;k+) g2-bk.school=k; g2-bk.firstite

17、m=0; g2-bk.score=0; g2-bk.boys=0; g2-bk.girls=0; g2-b0.score=0; g2-b0.boys=0; g2-b0.girls=0; while(i!=0) printf(n 项目:); scanf(%d,&i); if(i!=0) printf( 1.前三名 2.前五名n); printf( 请选择:); scanf(%d,&j); if(j!=1&j!=2) printf( 输入有误,请重新选择:); scanf(%d,&j); if(j=1) h=3; do printf( 第%d名:学校(学校编号为数字),h); scanf(%d,&

18、x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; if(h=3) p2-record=p1-record=2; if(h=2) p2-record=p1-record=3; if(h=1) p2-record=p1-record=5; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g

19、2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团体总分 */ h-; while(x!=0&h!=0); if(j=2) h=5; do printf( 第%d名:学校(学校编号为数字),h); scanf(%d,&x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items);

20、 p2-item=i; if(h=5) p2-record=p1-record=1; if(h=4) p2-record=p1-record=2; if(h=3) p2-record=p1-record=3; if(h=2) p2-record=p1-record=5; if(h=1) p2-record=p1-record=7; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累

21、计总分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团体总分 */ h-; while(x!=0&h!=0); void save() FILE *fp1,*fp2; fp1=(FILE *)malloc(sizeof(FILE); fp2=(FILE *)malloc(sizeof(FILE); if(fp1=fopen(sports1,wb)=NULL) printf(cannot open file.n); return; if(fwrit

22、e(g1,sizeof(ALLitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1) printf(file write error.n); fclose(fp2); void funct2(ALLNode *g2) /* 输出各学校总分 */ int k; printf(nn * 输出各学校总分 *n); printf(

23、 学校编号t 总分 n); for(k=1;kn;k+) printf( %dttt %dn,k,g2-bk.score); printf(n); system(pause); printf( 按任意键返回主菜单.); getchar(); void funct3(ALLNode *g2) /* 按学校编号排序输出 */ int k; Items *p2; p2=(Items *)malloc(sizeof(Items); printf(nn * 按学校编号排序输出 *n); printf( 学校编号ttt获奖情况 n); scanf(%d,&k); for(k=1;kn;k+) printf

24、(tttttt%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(项目%d:得%d分 ,p2-item,p2-record); p2=p2-next; printf(n); printf(n); system(pause); printf(按任意键返回主菜单.); getchar(); void funct4(ALLNode *g2) /* 按学校总分排序输出 */ int i,j,k; Items *p2; printf(nn * 按学校总分排序输出 *n); printf( 学校编号tt总分 n); scanf(%d,&k); /print

25、f(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%d tt%dn,g2-bk.school,g2-bk.score); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.scorebj.score&j0) g2-bj+1.score=g

26、2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%d tt%dn,g2-bk.school,g2-bk.score); system(pause); printf(按任意键返回主菜单.); ge

27、tchar(); void funct5(ALLNode *g2) /* 按男团体总分排序输出 */ int i,j,k; Items *p2; p2=(Items *)malloc(sizeof(Items); printf(nn * 按男团体总分排序输出 *n); printf(学校编号tt男团体总分 n); scanf(%d,&k); /printf(输入要查询的学校编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%dtt %dn,g2-bk.school,g2-bk.boys)

28、; p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.boysbj.boys&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g

29、2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.boys); system(pause); / 暂停等待 printf(按任意键返回主菜单.); getchar(); void funct6(ALLNode *g2) /* 按女团体总分排序输出 */ int i,j,k; Items *p2; p2=(Items *)malloc(sizeof(Items); printf(nn *

30、按女团体总分排序输出 *n); printf(学校编号tt女团体总分 n); scanf(%d,&k); / printf(输入要查询的项目编号:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%dtt %dn,g2-bk.school,g2-bk.girls); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.

31、school; j=i-1; while(g2-b0.girlsbj.girls&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-b

32、k.school,g2-bk.girls); system(pause); printf(按任意键返回主菜单.); getchar(); void funct7(ALLNode *g2) /* 按学校编号查询学校某个项目情况 */ int i,j; Items *p2; printf(n * 按学校编号查询学校某个项目情况 *n); printf( 输入要查询的学校编号:); scanf(%d,&i); printf( 输入要查询的项目编号:); scanf(%d,&j); p2=g2-bi.firstitem; while(p2!=NULL) if(p2-item=j) printf( 学校

33、编号:%dt项目%d:得%d分n,i,p2-item,p2-record); p2=p2-next; printf(n); system(pause); printf( 按任意键返回主菜单.); getchar(); void funct8(ALLitems *g1) /* 按项目编号查询取得名次的学校 */ int i; Schools *p1; printf(n* 按项目编号查询取得名次的学校 *n); printf(输入要查询的项目编号:); scanf(%d,&i); printf(项目编号ttt取得名次的学校n); printf(%dt,i); p1=g1-ai.firstschool; while(p1!=NULL) printf( 学校%d:得%d分 ,p1-school,p1-record); p1=p1-next; printf(nn);

温馨提示

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

评论

0/150

提交评论