ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:486.23KB ,
资源ID:12403259      下载积分:6 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12403259.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(运动会计分系统课程设计.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

运动会计分系统课程设计.docx

1、运动会计分系统课程设计编 号: B04931082学 号: 7 课 程 设 计教 学 院计算机学院课程名称高级语言程序设计题 目运动会比赛计分系统专 业软件工程班 级(一)班姓 名包先跃同组人员石奇、吕鹏飞、立阳指导教师祁文青2013年06月29日 课程设计任务书 2012 2013 学年第 2 学期学生: 包先跃 专业班级: 12软件工程 指导教师: 祁文青 工作部门: 计算机学院 一、课程设计题目:运动会比赛计分系统二、课程设计容:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2

2、,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。三、进度安排1分析问题,给出数学模型,选择数据结构。2设计算法,给出算法描述。3给出源程序清单。4. 编辑、编译、调试源程序。5. 撰写课程设计报告。四、基本要求1.界面友好,函数功能要划分好。2.总体设计应画一流程图。3.程序要加必要的注释。4.要提供程序测试方案。5.程序一定要经得起测试,要能运行起来,不能运行的程序是没有价值的。 一

3、概述1.课程设计的目的1理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养综合运用所学知识独立完成课题的能力。3培养勇于探索、严谨推理、实事、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。2.课程设计的要求1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5)数据存入文件并能随时查询 6

4、)规定:输入数据形式和围:可以输入学校的名称,运动项目的名称 输出形式:有合理的提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 二 总体方案设计(1)运动项目定义: typedef struct S

5、port /运动项目结构 char name20; /运动项目名称 int isboy; /0为女项目,1为男项目int is3; /0为取前五名,1为取前五名int number; /项目编号(2)主要算法的设计思想: 本程序主要是使用链表来实现操作。一个运动会包括运动项目和参加运动会的成员。因此构造两个链表Department,Sport。根据输入的不同选择不同的功能,有输入运动项目,按总分排序,按男团体总分排序,按女团体总分排序,按项目标号查询,退出。为了操作的方便,并且能够保存输入数据,所以通过文件操作来实现数据的写和读。每次添加新的数据后都要输入0退出,数据才能保存。对于总分的排序使

6、用了冒泡排序。为了使整个程序看起来更加友好,又添加了程序启动画面。 在此次课程设计小组中我所承当的工作是:对总程序的结构体的定义,界面菜单的建立以及void funct6(ALLNode *g2) 和 按学校编号查询学校某个项目情况的子函数程序编写。void funct7(ALLNode *g2) 是按学校编号查询学校某个项目情况 ;void funct6(ALLNode *g2):按女团体总分排序输出。(各部分解决问题详见详细设计中遇到的较重要问题的回顾) 三 详细设计3、1程序流程图1)设计运动会的学校编号或名称、项目成绩、男女团体总分的数据存储系统设计图 图(1)(2)查询团体总分程序设

7、计图图2(3)总流程图:(4)算法分析:其中school类为:class school:public athlete /*学校*/ public: int count; /*学校获奖数*/ int serial; /*学校编号*/ int menscore; /*男选手总分*/ int womenscore; /*女选手总分*/ int totalscore; /*总分*/ athlete athMaxSize; /*获奖运动员信息数组,包括分数,名次,项目*/ school *prev;/前指针 school *next; /后指针;其中部分主要的函数:添加操作add(school* &he

8、ad)查询操作checkFunc(school *head,int &n)文件保存save(school *head)总分快速排序tquicksort(vector& v, int first, int last)总分基数排序 tbaseSort(vector& v, int d) 2.关键算法 添加项目号for ( i = 1 ; i serial =要添加的编号) (first-athfirst-count).item =要添加的项目号; (first-athfirst-count).range =i(名次) First指向的学校的项目加一;更新总分 break; first = firs

9、t-next;(5)遇到的较重要问题的回顾 5.1.1提出问题所有输入输出容只能在一屏显示,学过c语言,很知道”n”是换行,”f”是换屏的,可是在这里就是无法实现。5.1.2解决问题输入clrscr();5.1.3提出问题设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。5.1.4分析问题在供用户选择时,提供了几个选项,就写几个case语句,但是当用户输入的并不是这几个数字时,系统就不能做出正确判断。5.1.5解决问题修改case语句,添加default语句提示出错,要求重新输入; default: clrscr(); /*清屏*/ printf(输入错误,请重新选

10、择); 5.1.6提出问题当同一项目中有同一学校的两个人时,便不能正确输出或者输出相同人名。5.1.7分析问题由于同时有两个相同学校编号的人存在,系统在输出时,不能确定那个是正确的,或者用后来的覆盖以前的。5.1.8解决问题用for函数实现从开始到结尾的遍历。5.2算法的效率及改进设想算法的效率:总的来讲,严重引响执行速度的便是查找,查找任意一个数据,便要将其所在的结构从头至尾遍历一次,耗费大量的时间。 改进设想:因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。在这次上机过程中遇到过一些问题,但经过我们不懈努力,解决了部分,还有的现在

11、不能解决,留着我们日后思考和解决。比如说在运用数据结构排序的时候,方法的选择上,总是想用时间复杂度小的算法,但结果出了问题,最后还是用了我们熟悉的选择法排序。结构体的运用上感觉不是很熟悉,遇到结构体的时候很陌生,这是以后必须要加强的。在我们的这个程序中用了两个结构体:struct node int num; ; struct node *f22; 我们同样遇到了一些还不能很好解决的问题,在输出的时候不能得到我们想要的效果,在按学校编号排序查询输出的时候,发生了重叠在做了几次修改之后都能使之满意,这有待学习和修改。在编写之前,做整体的规划很重要,这才能让我们的效率更高和合作得更好。 四 程序的调

12、试与运行结果分析(一) 用户手册1 本程序可以在vc+5.0和vc+6.0 的环境下运行。2 在vc中创建一个工程,将源程序复制到.cpp中,编译就可以。如下:运动会计分系统1.主菜单窗口2. 输入各个项目成绩并存储文件3. 统计各学校总分4. 按学校编号排序输出 5. 按学校总分排序输出6. 按男团体总分排序输出7. 按女团体总分排序输出8. 按学校编号查询学校某个项目情况9. 按项目编号查询取得名次的学校(二)调试过程中出现的问题和处理方式 为了使系统具有一点的容错性,当输入错误信息时应给出相应提示以正确输入数据,如:printf(要查询的项目编号:); scanf(%d,&s); if(

13、sm+w|s=0) printf(此次运动会不包括这个项目.nnn); 想在每次查询结束想返回主菜单进行其它项时,应在main( )函数中调用其它函数时再调用main( )函数,如: switch(choice) case 1: inputinformation();writedata();readdata();main(); case 2: output();main(); case 3: inquiry();main(); case 4: readdata();main(); 程序出现语法错误,发现是输入名次信息的地方忘带地址符&,或是程序不完整,只写了一个大括号。如: printf(*名

14、次:); scanf(%d,&hi.cj.ranges) 五 课程设计总结 经过几个星期的奋战,终于完成了课程设计,感觉又进一步了解了这门课程,各个知识点都加强了我似乎突然找到了方向,认真的学习这门课。回顾这次课程设计,使我感慨颇多。的确,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,同时不仅可以巩固学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考的能力。运动会计分系统,比较复杂,经过很长时间的书写,总算尝到了胜利的“滋味” 在细节的认识上,我们在开发程序的时候,在之前就要知道自己想

15、要的效果,然后把需要实现的功能在纸上列出来,然后比如要用几个函数来实现几个功能,整体需要几个模块来搭建,这些工作都是要在未动工之前就得做好的准备工作,编程要的是有整体的思想加细心。这次的课程设计收获颇多,最大的认识到了要想高效设计出想要的东西不仅要熟悉的掌握所学知识,还要学会充分利用现有资源。在这之前,总以为自己编程方面还很差,现在才觉得,只要努力了,就会有收获,就会得到回报。附录:(源程序)(一)。运动会计分系统#include #include #include #include /#include /*屏幕操作函数*/ #define MAX 50 /#define NULL 0 typ

16、edef struct node1 int school; /*学校编号*/ int record; /*项目成绩*/ 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

17、 node2 *next; /*链域*/ Items; typedef struct int 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) Schoo

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

19、,w是20以的整数,请重新输入:); scanf(%d,&w); 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+)

20、g2-bk.school=k; g2-bk.firstitem=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( 第

21、%d名:学校(学校编号为数字),h); scanf(%d,&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-

22、bx.firstitem=p2; g2-bx.score=g2-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=

23、(Items *)malloc(sizeof(Items); 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.sco

24、re=g2-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); void save() FILE *fp1,*fp2; fp1=(FILE *)malloc(sizeof(FILE); fp2=(FILE *)malloc(sizeof(FILE); if(fp1=fopen(sports1,wb)=NULL) printf(cannot

25、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(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; pr

26、intf(nn * 输出各学校总分 *n); printf( 学校编号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(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); prin

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2