ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:581.50KB ,
资源ID:7198647      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7198647.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(运动会计分系统-课程设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

运动会计分系统-课程设计.doc

1、 目录 目录 2 一 概述 3 二 总体方案设计 4 三 详细设计 5 5.1.1提出问题 8 5.1.2解决问题 9 5.1.3提出问题 9 5.1.4分析问题 9 5.1.5解决问题 9 5.1.6提出问题 9 5.1.7分析问题 9 5.1.8解决问题 9 5.2算法的效率及改进设想 9 四 程序的调试与运行结果分析 11 (一) 用户手册 11 (二)调试过程中出现的问题和处理方式 15 五 课程设计总结 16 附录:(源程序) 17 参 考 文 献 27

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

3、团体总分排序输出; 4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5)数据存入文件并能随时查询 6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有合理的提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体

4、非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 二 总体方案设计 (1)运动项目定义: typedef struct Sport //运动项目结构{ char name[20]; //运动项目名称 int isboy; //0为女项目,1为男项目 int is3; //0为取前五名,1为取前五名 int number; //项目编号 (2)主要算法的设计思想: 本程序主要是使用链表来实现操作。一个运动会包括运动项目和参加运动会的成员。因此构造两个链表Depart

5、ment,Sport。根据输入的不同选择不同的功能,有输入运动项目,按总分排序,按男团体总分排序,按女团体总分排序,按项目标号查询,退出。为了操作的方便,并且能够保存输入数据,所以通过文件操作来实现数据的写和读。每次添加新的数据后都要输入0退出,数据才能保存。对于总分的排序使用了冒泡排序。为了使整个程序看起来更加友好,又添加了程序启动画面。 在此次课程设计小组中我所承当的工作是:对总程序的结构体的定义,界面菜单的建立以及void funct6(ALLNode *g2) 和 按学校编号查询学校某个项目情况的子函数程序编写。void funct7(ALLNode *g2) 是按学校编号查询

6、学校某个项目情况 ;void funct6(ALLNode *g2):按女团体总分排序输出。(各部分解决问题详见详细设计中遇到的较重要问题的回顾) 三 详细设计 3、1程序流程图 1) 设计运动会的学校编号或名称、项目成绩、男女团体总分的数据存储系统设计图 图(1) (2)查询团体总分程序设计图 图2 (3)总流程图: (4)算法分析: 其中 school类为: class school:public athlete

7、 /*学校*/ { …… public: int count; /*学校获奖数*/ int serial; /*学校编号*/ int menscore; /*男选手总分*/ int womenscore; /*女选手总分*/ int totalscore; /*总分*/ athlete ath[MaxSize]; /*获奖运动员信息数组,包括分数,名次,项目*/ school *prev;//前指针 school *next; //后指针 }; 其中部分主要的函数: 添加操作a

8、dd(school* &head) 查询操作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 <= n ; i++ ) { 输入第i名运动员的学校编号temp …… while(first!=head) //遍历链表,直到找到编

9、号为serial的学校所在结点,或first指向表头head { if (first->serial ==要添加的编号) { (first->ath[first->count]).item =要添加的项目号; (first->ath[first->count]).range =i(名次) First指向的学校的项目加一; 更新总分 break; } first = first->next; (5)遇到的较重要问题的回顾 5.1.1提出问题 所有输入输出内容只能在一屏内显示,学

10、过c语言,很知道”\n”是换行,”\f”是换屏的,可是在这里就是无法实现。 5.1.2解决问题 输入clrscr(); 5.1.3提出问题 设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。 5.1.4分析问题 在供用户选择时,提供了几个选项,就写几个case语句,但是当用户输入的并不是这几个数字时,系统就不能做出正确判断。 5.1.5解决问题 修改case语句,添加default语句提示出错,要求重新输入; default:{ clrscr();

11、 /*清屏*/ printf("输入错误,请重新选择"); } 5.1.6提出问题 当同一项目中有同一学校的两个人时,便不能正确输出或者输出相同人名。 5.1.7分析问题 由于同时有两个相同学校编号的人存在,系统在输出时,不能确定那个是正确的,或者用后来的覆盖以前的。 5.1.8解决问题 用for函数实现从开始到结尾的遍历。 5.2算法的效率及改进设想 算法的效率:总的来讲,严重引响执行速度的便是查找,查找任意一个数据,便要将其所在的结构从头至尾遍历一次,耗费大量的时间。

12、 改进设想:因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。 在这次上机过程中遇到过一些问题,但经过我们不懈努力,解决了部分,还有的现在不能解决,留着我们日后思考和解决。 比如说在运用数据结构排序的时候,方法的选择上,总是想用时间复杂度小的算法,但结果出了问题,最后还是用了我们熟悉的选择法排序。 结构体的运用上感觉不是很熟悉,遇到结构体的时候很陌生,这是以后必须要加强的。在我们的这个程序中用了两个结构体: struct node { int num; }; struct node *f[22];

13、我们同样遇到了一些还不能很好解决的问题,在输出的时候不能得到我们想要的效果,在按学校编号排序查询输出的时候,发生了重叠在做了几次修改之后都能使之满意,这有待学习和修改。 在编写之前,做整体的规划很重要,这才能让我们的效率更高和合作得更好。 四 程序的调试与运行结果分析 (一) 用户手册 1 本程序可以在vc++5.0和vc++6.0 的环境下运行。 2 在vc中创建一个工程,将源程序复制到.cpp中,编译链接就可以。 如下: 运动会计分系统 1.主菜单窗口 2. 输入各

14、个项目成绩并存储文件 3. 统计各学校总分 4. 按学校编号排序输出 5. 按学校总分排序输出 6. 按男团体总分排序输出 7. 按女团体总分排序输出 8. 按学校编号查询学校某个项目情况 9. 按项目编号查询取得名次的学校 (二)调试过程中出现的问题和处理方式 为了使系统具有一点的容错性,当输入错误信息时应给出相应提示以正确输入数据,如:printf("要查询的项目编号:"); scanf("%d",&s); if(s>m+w||s==0) printf("此次运动会不包括

15、这个项目.\n\n\n"); 想在每次查询结束想返回主菜单进行其它项时,应在main( )函数中调用其它函数时再调用main( )函数,如: switch(choice) { case 1: inputinformation();writedata();readdata();main(); case 2: output();main(); case 3: inquiry();main(); case 4: readdata();main(); 程序出现语法错误,发现是输入名次信息的地方忘带地址符&,

16、或是程序不完整,只写了一个大括号。如: printf("*****名次:"); scanf("%d",&h[i].c[j].range[s]) 五 课程设计总结 经过几个星期的奋战,终于完成了课程设计,感觉又进一步了解了这门课程,各个知识点都加强了我似乎突然找到了方向,认真的学习这门课。 回顾这次课程设计,使我感慨颇多。的确,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,同时不仅可以巩固学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我

17、懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考的能力。运动会计分系统,比较复杂,经过很长时间的书写,总算尝到了胜利的“滋味” 在细节的认识上,我们在开发程序的时候,在之前就要知道自己想要的效果,然后把需要实现的功能在纸上列出来,然后比如要用几个函数来实现几个功能,整体需要几个模块来搭建,这些工作都是要在未动工之前就得做好的准备工作,编程要的是有整体的思想加细心。这次的课程设计收获颇多,最大的认识到了要想高效设计出想要的东西不仅要熟悉的掌握所学知识,还要学会充分利用现有资源。在这之前,总以为自己编程方面还很差,现在才觉得,只要努力了,就会有收获,就会得到回报。

18、 附录:(源程序) (一)。运动会计分系统 #include #include #include #include //#include /*屏幕操作函数*/ #define MAX 50 //#define NULL 0 typedef struct node1{ int school; /*学校编号*

19、/ int record; /*项目成绩*/ struct node1 *next; /*链域*/ }Schools; typedef struct { int item; /*项目编号*/ Schools *firstschool; /*链域指向链表中第一个结点*/ }ITEM; typedef struct { int z; /* 项目总数 */ ITEM a[MAX];

20、 }ALLitems; typedef struct node2 { int item; /*该学校获奖的项目*/ int record; /*项目成绩*/ struct node2 *next; /*链域*/ }Items; typedef struct { int school; /*学校编号*/ int score; /*学校总分*/ int boys; /*男团体总分*/ i

21、nt girls; /*女团体总分*/ Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ }SCHNode; typedef struct { int n; /* 学校总数 */ SCHNode b[MAX]; }ALLNode; ALLitems *g1; ALLNode *g2; void funct1(ALLitems *g1,ALLNode *g2)

22、{ Schools *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

23、 ******输入各个项目信息 ****** \n\n"); printf(" 输入男子项目总数m:"); scanf("%d",&m); if(m<0||m>20) { printf(" 输入有误,m是20以内的整数,请重新输入:"); scanf("%d",&m); } printf("

24、 输入女子项目总数w:"); scanf("%d",&w); if(w<0||w>20) { printf(" 输入有误,w是20以内的整数,请重新输入:"); scanf("%d",&w); } printf(" 输入参加运动会的学校总数n:"); scanf("%d",&g2->n); if(g2->n<0||g2->n>20) { printf(" 输入有误,n是20以内的整数,请重

25、新输入:"); scanf("%d",&g2->n); } g1->z=m+w; printf(" 则项目编号为男子1-%d,女子%d-%d",m,m+1,g1->z); printf("\n\n ****记录运动会成绩****"); printf("\n\n (输入0标志结束)\n"); for(k=1;k<=g1->z;k++) { g1->a[k].item=k;

26、g1->a[k].firstschool=NULL; } for(k=1;k<=g2->n;k++) { g2->b[k].school=k; g2->b[k].firstitem=0; g2->b[k].score=0; g2->b[k].boys=0; g2->b[k].girls=0; } g2->b[0].score=0; g2->b[0].boys=0; g2->b[0].girls=0;

27、 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("

28、 输入有误,请重新选择:"); scanf("%d",&j); } if(j==1) { h=3; do{ printf(" 第%d名:学校(学校编号为数字)",h); scanf("%d",&x); p1=(Schools *)malloc(sizeof(Schools)); p1->school=x; p2=(Items

29、)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->a[i].firstschool; g1->a[i].firstschool=p1;

30、 p2->next=g2->b[x].firstitem; g2->b[x].firstitem=p2; g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分 */ if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record; /* 累计男团体总分 */ else g2->b[x].girls=g2->b[x].girls+p2->record;

31、 /* 累计女团体总分 */ h--; }while(x!=0&&h!=0); } if(j==2) { h=5; do{ printf(" 第%d名:学校(学校编号为数字)",h); scanf("%d",&x); p1=(Schools *)malloc(sizeof(Schools)); p

32、1->school=x; p2=(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;

33、 if(h==1) p2->record=p1->record=7; p1->next=g1->a[i].firstschool; g1->a[i].firstschool=p1; p2->next=g2->b[x].firstitem; g2->b[x].firstitem=p2; g2->b[x].score=g2->b[x].score+p2->record; /* 累计总分 *

34、/ if(i<=m) g2->b[x].boys=g2->b[x].boys+p2->record; /* 累计男团体总分 */ else g2->b[x].girls=g2->b[x].girls+p2->record; /* 累计女团体总分 */ h--; }while(x!=0&&h!=0); } } } } void save()

35、 { 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(fwrite(g1,sizeof(ALLitems),1,fp1)!=1) printf("file write error.\n");

36、 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) /* 输出各学校总分 */ {

37、int k; printf("\n\n ****** 输出各学校总分 ******\n"); printf(" 学校编号\t 总分 \n"); for(k=1;k<=g2->n;k++) printf(" %d\t\t\t %d\n",k,g2->b[k].score); printf("\n"); system("pause"); printf("

38、 按任意键返回主菜单......"); getchar(); } void funct3(ALLNode *g2) /* 按学校编号排序输出 */ { int k; Items *p2; p2=(Items *)malloc(sizeof(Items)); printf("\n\n ****** 按学校编号排序输出 ******\n"); printf(" 学校编

39、号\t\t\t获奖情况 \n"); scanf("%d",&k); for(k=1;k<=g2->n;k++) { printf("\t\t\t\t\t\t%d\t",k); p2=g2->b[k].firstitem; while(p2!=NULL) { printf("项目%d:得%d分 ",p2->item,p2->record); p2=p2->next; } printf("\n"); } printf("\n

40、"); system("pause"); printf("按任意键返回主菜单......"); getchar(); } void funct4(ALLNode *g2) /* 按学校总分排序输出 */ { int i,j,k; Items *p2; printf("\n\n ****** 按学校总分排序输出 ******\n"); printf(" 学校编号\t\t总分 \n"); scanf("%

41、d",&k); //printf("输入要查询的项目编号:"); for(i=2;i<=g2->n;i++) { printf("%d\t",k); p2=g2->b[k].firstitem; while(p2!=NULL) { printf("%d \t\t%d\n",g2->b[k].school,g2->b[k].score); p2=p2->next; } printf("\n"); g2->b[0].sco

42、re=g2->b[i].score; g2->b[0].boys=g2->b[i].boys; g2->b[0].girls=g2->b[i].girls; g2->b[0].school=g2->b[i].school; j=i-1; while(g2->b[0].scoreb[j].score&&j>0) { g2->b[j+1].score=g2->b[j].score; g2->b[j+1].boys=g2->b[j].boys; g2->b

43、[j+1].girls=g2->b[j].girls; g2->b[j+1].school=g2->b[j].school; j--; } g2->b[j+1].score=g2->b[0].score; g2->b[j+1].boys=g2->b[0].boys; g2->b[j+1].girls=g2->b[0].girls; g2->b[j+1].school=g2->b[0].school; } for(k=1;k<=g2->n;k++)

44、 printf("%d \t\t%d\n",g2->b[k].school,g2->b[k].score); system("pause"); printf("按任意键返回主菜单......"); getchar(); } void funct5(ALLNode *g2) /* 按男团体总分排序输出 */ { int i,j,k; Items *p2; p2=(Items *)malloc(sizeof(Items)); printf("\n\n

45、 ****** 按男团体总分排序输出 ******\n"); printf("学校编号\t\t男团体总分 \n"); scanf("%d",&k); //printf("输入要查询的学校编号:"); for(i=2;i<=g2->n;i++) { printf("%d\t",k); p2=g2->b[k].firstitem;

46、 while(p2!=NULL) { printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].boys); p2=p2->next; } printf("\n"); g2->b[0].score=g2->b[i].score; g2->b[0].boys=g2->b[i].boys; g2->b[0].gi

47、rls=g2->b[i].girls; g2->b[0].school=g2->b[i].school; j=i-1; while(g2->b[0].boysb[j].boys&&j>0) { g2->b[j+1].score=g2->b[j].score; g2->b[j+1].boys=g2->b[j].boys; g2->b[j+1].girls=g2->b[j].girls; g2->b[j+1].school=g2->b[j].school;

48、 j--; } g2->b[j+1].score=g2->b[0].score; g2->b[j+1].boys=g2->b[0].boys; g2->b[j+1].girls=g2->b[0].girls; g2->b[j+1].school=g2->b[0].school; } for(k=1;k<=g2->n;k++) printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].boys); system("paus

49、e"); // 暂停等待 printf("按任意键返回主菜单......"); getchar(); } void funct6(ALLNode *g2) /* 按女团体总分排序输出 */ { int i,j,k; Items *p2; p2=(Items *)malloc(sizeof(Items)); printf("\n\n ****** 按女团体总分排序输出 ***

50、\n"); printf("学校编号\t\t女团体总分 \n"); scanf("%d",&k); // printf("输入要查询的项目编号:"); for(i=2;i<=g2->n;i++) { printf("%d\t",k); p2=g2->b[k].firstitem; while(p2!=NULL) { printf("%d\t\t %d\n",g2->b[k].school,g2->b[k].girls); p2=p2->next;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服