c++运动会分数统计程序
- 格式:doc
- 大小:117.00 KB
- 文档页数:8
#include<stdio.h>#include<math.h>#include <process.h>#define N 20 /*学校最大数目*/#define M 20 /*男子项目最大数目*/#define W 20 /*女子项目最大数目*/typedef struct{int inum; /*项目编号*/int top; /*取名次的数目*/int range[5]; /*名次*/int mark[5]; /*分数*/}itemnode; /*存放项目信息*/typedef struct{int snum; /*学校编号*/int score; /*学校总分*/int mscore; /*男团体总分*/int wscore; /*女团体总分*/itemnode t[M+W]; /*项目数组*/}snode; /*存放学校信息*/snode a[N]; /* 定义一个学校数组*/void menu(int n,int m,int w) /*菜单函数*/{int c;void input(int n,int m,int w);void output(int n,int m,int w);void sortput(int n,int m,int w);void search(int n,int m,int w);printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("\t\t*******1.信息输入*******\n");printf("\t\t*******2.统计输出*******\n");printf("\t\t*******3.排序输出*******\n");printf("\t\t*******4.信息查询*******\n");printf("\t\t*******0.退出系统*******\n\n");printf("=======================================================\n\n");printf("请选择要实现步骤的编号(0--4):");scanf("%d",&c);switch(c){case 1:input(n,m,w);break;case 2:output(n,m,w);break;case 3:sortput(n,m,w);break;case 4:search(n,m,w);break;case 0:printf("谢谢使用,再见!\n");exit(0);default:printf("输入错误,请重试!\n");menu(n,m,w);}}void savetofile() /*信息存入文件file*/ {FILE *fp;int i;if((fp=fopen("file.txt","w"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++){if(a[i].snum!='\0')if(fwrite(&a[i],sizeof(snode),1,fp)!=1){printf("file write error\n");return;}}fclose(fp);}void readfromfile() /*信息从文件file中取出*/{int i;FILE *fp;if((fp=fopen("file.txt","rb"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++)fread(&a[i],sizeof(snode),1,fp);fclose(fp);}void input(int n,int m,int w) /*1.信息输入*/ {int i,j,s,k,q=0;for(i=0;i<n;i++){printf("学校编号:");scanf("%d",&a[i].snum); /*输入学校信息*/for(j=0;j<m+w;j++){printf("项目编号:");scanf("%d",&a[i].t[j].inum);printf("项目取前3名或前5名(3或者5):");scanf("%d",&a[i].t[j].top);if(a[i].t[j].top==3)printf("获得名次个数(1--3):");elseprintf("获得名次个数(1--5):");scanf("%d",&k); /*输入项目信息*/for(s=0;s<k;s++){if(a[i].t[j].top==3)printf("所获名次(1--3):");elseprintf("所获名次(1--5):");scanf("%d",&a[i].t[j].range[s]); /*输入所获名次信息*/ }printf("\n");}}for(i=0;i<n;i++){a[i].score=0;a[i].mscore=0;a[i].wscore=0;} /*初始化分数*/for(i=0;i<n;i++)for(j=0;j<m+w;j++)for(s=0;s<5;s++){if(a[i].t[j].top==3)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=5; break;case 2: a[i].t[j].mark[s]=3; break;case 3: a[i].t[j].mark[s]=2; break;}else if(a[i].t[j].top==5)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=7; break;case 2: a[i].t[j].mark[s]=5; break;case 3: a[i].t[j].mark[s]=3; break;case 4: a[i].t[j].mark[s]=2; break;case 5: a[i].t[j].mark[s]=1; break;}else{printf("信息有误!");printf("\n");exit(0);}a[i].score=a[i].score+a[i].t[j].mark[s]; /*记学校总分*/if(j<=m-1)a[i].mscore=a[i].mscore+a[i].t[j].mark[s]; /*记男子团体总分*/elsea[i].wscore=a[i].wscore+a[i].t[j].mark[s]; /*记女子团体总分*/ }printf("输入完毕!返回? 1是 2否\n"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("不能再添加信息!");printf("\n");savetofile(); /*将信息存入文件file*/menu(n,m,w);}void output(int n,int m,int w) /*2.统计输出*/{readfromfile();int i,j,s,q=0;for(i=0;i<n;i++) /*显示结果*/{printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);{printf("项目编号:%d 所取名次数量:%d\n",a[i].t[j].inum,a[i].t[j].top);for(s=0;s<5;s++){if(a[i].t[j].range[s]!=0)printf("名次:%d 分数:%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);}}printf("\n");}printf("\n");printf("统计完毕!返回? 1是 2否"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("统计已经结束!");printf("\n");menu(n,m,w);}void sortput(int n,int m,int w) /*3.排序输出*/{readfromfile();int c,i,j,k,q=0;int temp[N];printf("\t**************排序输出系统**************\n\n");printf("\t\t****1.按学校编号输出****\n");printf("\t\t****2.按学校总分输出****\n");printf("\t\t****3.按男团总分输出****\n");printf("\t\t****4.按女团总分输出****\n");printf("=======================================================\n\n");do{printf("请选择要实现功能的编号(1--4):");scanf("%d",&c);switch(c){case 1:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].snum>a[j].snum){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校编号输出*/break;case 2:for(i=0;i<n;i++)temp[i]=i;{for(j=i+1;j<n;j++)if(a[temp[i]].score<a[j].score){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校总分输出*/break;case 3:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].mscore<a[j].mscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按男团总分输出*/break;case 4:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].wscore<a[j].wscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按女团总分输出*/break;default:printf("输入错误,请重试!\n");}printf("请选择 1 返回主菜单 0继续"); /*返回菜单或继续排序*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void search(int n,int m,int w) /*查询函数*/{readfromfile();int c,i,j,k,d,l,q=0;printf("\t****************查询系统****************\n\n");printf("\t\t****1.按学校编号查询****\n");printf("\t\t****2.按项目编号查询****\n");printf("=======================================================\n\n");do{k=-1;d=-1;l=-1;printf("请选择要实现功能的编号(1--2):");scanf("%d",&c);switch(c){case 1:printf("要查询的学校编号:"); /*查找学校编号下标*/scanf("%d",&c);for(i=0;i<n;i++){if(a[i].snum==c)k=i;}if(k==-1)printf("错误:这个学校没有参加此次运动会!\n");else{printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(j=0;j<m+w;j++){if(a[k].t[j].inum==c)d=j;}if(d==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("这个项目取前 %d名,该学校的成绩如下:\n", a[k].t[d].top);for(i=0;i<5;i++)if(a[k].t[d].range[i]!=0)printf("名次:%d\n",a[k].t[d].range[i]);}}break;case 2:printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(i=0;i<n;i++)for(j=0;j<m+w;j++)if(a[i].t[j].inum==c)l=j;if(l==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("该项目取前 %d名,取得名次的学校\n",a[0].t[l].top);for(i=0; i<n;i++)for(j=0;j<5;j++)if(a[i].t[l].range[j]!=0)printf("学校编号:%d,名次:%d\n",a[i].snum,a[i].t[l].range[j]);}break;default:printf("输入错误,请重试!\n");}printf("请选择:1.返回主菜单 0.继续"); /*返回菜单或继续查询*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void main() /*主函数*/{int n,m,w;printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("请先输入运动会主要信息\n"); /*设计运动会主要数据个数*/printf("输入学校个数:");scanf("%d",&n);printf("输入男子项目个数:");scanf("%d",&m);printf("输入女子项目个数:");scanf("%d",&w);menu(n,m,w);}。
课程设计报告课程名称《C语言程序设计》课题名称运动会分数统计系统专业电气工程及其自动化班级电气工程学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题运动会分数统计系统专业班级电气工程及其自动化学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日第一部分《C语言课程设计》任务书前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
高级语言程序设计――――《运动会分数统计系统》引言本课程设计主要解决在运动会上,该程序用于运动会上。
本文详细介绍了运动会分数统计程序的设计与实现,该程序具有运动会成绩的输入,统计与输出等功能。
在课程设计中,程序设计语言采用Visual C++,程序运行平台为Windows XP。
程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。
1、需求分析为了简便地对运动会的报名、成绩的录入和统计,设计开发了本系统,以解决需求。
当然,本系统只是一个较为简单的系统,仍然存在着一些操作上以及显示上的问题,我将在以后的学习中进行完善。
问题描述:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:5、4、3、2、1,前三名的积分分别为:3、2、1;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分,(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查(5)询取得前三或前五名的学校。
输出形式:有中文提示,各学校分数为整形。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
3、概要设计(或总体设计)3.1数据结构描述本课程涉及主要采用了C++。
C++语言是在C语言的基础上发展起来的,不仅继承了C语言的所有特点,而且引入了面向对象的程序设计方法。
C++改进了程序涉及思路,将编程方式进化到面向对象进行程序设计这一新的思维过程。
目录摘要 (1)前言 (2)正文 (3)1.采用类C语言定义相关的数据类型 (3)2.各模块的伪码算法 (4)3.函数的调用关系图 (7)4.调试分析 (7)5.测试结果 (8)6.源程序(带注释) (12)总结 (15)参考文献 (17)致谢 (18)附件Ⅰ部分源程序代码 (19)摘要本次课程设计的主要任务是利用学过的数据结构的知识设计一个运动会分数统计系统。
运动会分数统计系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。
运动会分数统计系统是典型的信息管理系统,本系统是根据现代化校园的发展而设计的运动会分数统计系统,本系统可以方便老师、运动员来学校查找成绩、名次。
要求应用程序功能完备,易使用等特点。
实现全校运动会信息在线查询。
还可以对新的运动信息进行信息录入。
由于运动项目种类繁多,可以实现信息修改。
通过本次课程设计可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构。
关键词:数据结构;运动会;分数统计系统;C语言前言本学期开设的《算法与数据结构》课程已经告一段落,。
在学习科目的第一节课起,张老师就为我们阐述了它的重要性。
它对我们来说具有一定的难度。
它是其它编程语言的一门基本学科。
尽管不好学,但是我们必须学好这门课程,这对于我们计算机专业的学生来说意义重大。
经过一个学期的理论知识的学习,对于数据结构相关的知识有了一定的了解。
这是一门纯属于设计的科目,它需用把理论变为上机调试和具体实践。
在课程结束之后。
老师为我们安排了这次为期两周的课程设计。
目的就是让我们自己在计算机上自己设计算法来实现相应的功能以及锻炼学生的动手能力和实践能力,最重要的是要把我们所学的数据结构的理论知识应运到实践中去。
这次课程设计的题目是“运动会分数统计系统”,要求学生自己查阅相关资料,完成相应的任务,自己上机设计算法,调试程序,运行出结果,以此来加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养自己的动手能力。
计算机学院信管专业数据结构课程设计题目:运动会分数统计班级:姓名:学号:同组人姓名:起迄日期:课程设计地点:指导教师:评阅意见:成绩评定:评阅人:日期:完成日期:2013年12月目录1、需求分析 (02)2、概要设计 (03)3、详细设计 (04)4、调试分析和测试结果 (05)5、总结 (13)6、参考文献 (14)7、致谢 (14)8、附录 (14)1、需求分析(1)任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)(2)功能要求:a).可以输入各个项目的前三名或前五名的成绩;b).能统计各学校总分,c).可以按学校编号、学校总分、男女团体总分排序输出;d).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
(3)规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)(4)输出形式:有中文提示,各学校分数为整形(5)界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
(6)存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(7)测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;2、概要设计(1)文字分析本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。
由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。
一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的.(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力.(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法.(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
二、课程设计名称及内容课程设计名称:运动会比赛计分系统设计内容:设计一个运动会比赛计分系统,该系统要求对运动会比赛得分进行管理和维护.三、任务和要求要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:(1)取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;(2)取前3名:第一名得分5,第二名得分3,第三名得分2;(3)用户自定义:各名次权值由用户指定.四、设计方案提示(1)界面系统以菜单方式工作(2)输入数据并存入文件使用到结构体变量和动态链表,由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
对输入的信息进行合法性判断,直到输入正确为止.都输入完成后,调用写文件函数对指定的文件进行写操作,把输入的信息写入到文件中。
(3)显示所有记录将文件中的所有记录以表格的形式输出.如果文件未打开会出现“文件打开失败!按任意键返回.。
课程设计报告课程设计题目:运动会分数统计系统学院:软件学院姓名:*****班级: ***学号: *****专业:电子商务指导教师:姜林2012年06月08日目录一、实验目的-----------------------------------------------(3)二、设计要求-----------------------------------------------(3)三、需求分析-----------------------------------------------(3)四、详细设计-----------------------------------------------(4)五、代码清单-----------------------------------------------(4)六、实验小结-----------------------------------------------(22)一、目的本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。
三、需求分析1.问题描述运动会分数统计系统参加运动会有n个系,系编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
应用技术学院课程设计报告课程名称C语言课程设计课题名称运动会分数统计系统专业机械设计制造及其自动化班级0781学号************姓名贺友来指导教师王颖2008年 7月 8日湖南工程学院课程设计任务书课程名称C语言课程设计课题运动会分数统计系统专业班级电气工程及其自动化学生姓名贺友来学号************指导老师王颖审批任务书下达日期:2008年6月20日任务完成日期:2008年7月8日C语言程序课程设计任务书一课程设计性质与目的:C语言程序设计是一门实践性很强的课程。
C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、分析程序及上机操作、调试程序的能力,让学生加深理解书上所学的知识,提高动手操作能力及分析问题和解决问题的能力。
二课程设计包含的知识点:1.掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语句。
2.掌握数组的基本概念。
掌握一维数组与二维数组的使用,掌握字符数组与字符串的关系。
3.熟练掌握指针、地址、指针类型的概念及其使用。
掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系4.掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。
5.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。
结构体与指针、函数的关系。
三课程设计的要求:1.学生从以下八个题目中任意选择并完成一个题目。
要求每个学生能够独立思考并按时完成本课程设计所包含的所有内容。
2.要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务,分析过程和算法,给出程序流程图和全部源程序,并做出总结。
3.设计报告的完整格式应包含以下内容:a)设计总体思路b)主程序及各个模块说明c)总体模块框图d)各个程序模块说明e)程序流程图f)程序清单g)总结与体会四.时间安排:五.课程设计考核办法:根据学生所完成课程设计报告的完整性,正确性,和算法实现的质量,分为优,良,中,及格和不及格五个等级。
1
学 号 09770211
信息工程学院
数据结构与C课程设计
设计说明书
题目
运动会分数统计
起止日期: 年 月 日 至 年 月 日
学生姓名
班级
成绩
指导教师(签字)
1
2
课程设计任务书
2011—2012学年第1学期
信息工程 系 软件工程 专业 1 班级
课程设计名称: 数据结构课程设计
设计题目: 运动会分数统计
完成期限:自 201 2年 10月 16 日至 2012 年 10 月 26 日共 2 周
设计依据、要求及主要内容(可另加附页):
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄
袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入
本课程设计成绩;
(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;
(4)认真编写课程设计报告。
三、设计内容
参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编
号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
四、参考文献
1.王红梅.数据结构.清华大学出版社
2.王红梅.数据结构学习辅导与实验指导.清华大学出版社
3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社
1
3
一、需求分析
1.本演示程序中,学校编号要求为1……n,男子比赛项目编号要求
为1……m,女子比赛项目编号要求为m+1……m+w(m<=20,n<=20),根
据用户的不同的需求可以取不同的名次(前三名或前五名)。
2. 演示程序以人机交互的方式执行,即在计算机上显示中文提示
信息后,由用户在键盘上输入对应的数据或命令,程序将执行相应的操
作并显示下一步信息。
3. 程序执行的命令包括:
(1)输入各个项目的成绩
(2) 从文件输出各个项目的成绩
(3) 输出各学校的成绩
(4) 输出学校总成绩列表
(6) 按学校的编号查询学校某个项目的情况
(7) 按学校的编号查询学校所有项目的情况
(8) 按项目编号查询取得前三名或前五名的情况
(9) 查看某条记录
(10)删除某条记录
(11) 退出系统
二、问题求解
此类问题属于表数据表格问题,要实现增删改查功能,通常做法是需要统计某个信息时,需要
将某个信息提出来进行统计,比如另外开辟一个表格,将要统计的数据提取到建立的表格里,如果
需要查询某个信息,我们通常会按照某个规律去查找,比如一个运动员的信息,我们可以通过他的
运动员号进行查找,当然我们需要将表的运动员号先按照某个顺序排好,以致我们方便查询;删除
时我们会简单的将其划掉………
三、总体设计
线性表初始化的流程图如下:
1
4
输入操作的流程图:
开始
把元素插到指定位置
存储插入文件
结束操
作
判断存储
空间
判断输入
值是否越
扩展存储空间
True
F
1
5
T
F
F
T
T
F
结束
输入名次
输入取前几
输入学校编号
输入项目名称
输入项目编号
根据名次赋予得分
判断是否符合
判断是否符合
判断是否符合
判断是否符合
开始
1
6
四、详细设计
(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等);
结构体定义:
typedef struct ElemType
{ //成绩记录类型
int item_no; //项目编号
char item_name[20]; //项目名称
int school_no; //学校编号
char school_name[20]; //学校名称
int place; //前五前三名
int score; //得分
int order; //名次
};
//顺序表结构类型List
typedef struct List
{
ElemType* element;
int length;
};
bool ReadFileTxt(List &L) //生成数据文本
void GetFromKey(List &L) //从键盘输入数据
void ShowSchoolScore(List &L) //输出各学校的成绩
void Showtotaltable(List &L) //按照团体总分从高到低输出各学校总成绩
void Find1(List &L)//按学校的编号查询学校所有项目的情况
void Find2(List &L)//按项目编号查询取得前三名或前五名的情况
void Find3(List &L)//按学校的编号查询学校某个项目的情况
void menu(List &l) //显示主菜单
void main()
{
List l; //定义l
l.element=NULL; //对元素赋值
InitList(l); //对l进行初始化
menu(l);
ClearList(l);
}
其中menu()调用了
void GetFromKey(List &L) //从键盘输入数据
void ShowSchoolScore(List &L) //输出各学校的成绩
void Showtotaltable(List &L) //按照团体总分从高到低输出各学校总成绩
1
7
void Find1(List &L)//按学校的编号查询学校所有项目的情况
void Find2(List &L)//按项目编号查询取得前三名或前五名的情况
void Find3(List &L)//按学校的编号查询学校某个项目的情况
五、调试与测试
(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施;)
按照菜单的提示进行操作,测试能得到预测结果,测试时出的问题是:按项目编号查询取得
前三名或前五名的情况结束时没进入下一个循环;
六、关键源程序清单和执行结果
(清单中应有足够的注释问题描述和功能设计。)
void GetFromKey(List &L) //从键盘输入数据
void ShowSchoolScore(List &L) //输出各学校的成绩
1
8