数据结构课程设计运动会分数统计.docx
- 文档编号:2085825
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:12
- 大小:280.99KB
数据结构课程设计运动会分数统计.docx
《数据结构课程设计运动会分数统计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会分数统计.docx(12页珍藏版)》请在冰点文库上搜索。
数据结构课程设计运动会分数统计
《数据结构》课程设计
题目:
运动会分数统计
课程名:
运动会分数统计
专业:
学号:
姓名:
学号:
姓名:
学号:
姓名:
学号:
姓名:
一、概要……..……………………………………………….3
1题目
2要求
二、分析……..……………………………………………….4
1整体设计
2数据结构的选择
三、设计……..……………………………………………….5
1模块设计
2整体流程图
3重点模块或算法流程图
四、调试分析和测试结果…………………………………..8
1程序测试进程
2程序调试进程
五、算法效率分析………………………………………….11
六、心得体会……..………………………………………...12
七、源程序……..…………………………………………...13
一、概要
1题目:
运动会分数统计
2要求:
任务:
参加运动会有n个学校,学校编号为1……n。
竞赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分别离为:
7、五、3、二、1,前三名的积分别离为:
五、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
1)能够输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分,
3)能够按学校编号或名称、学校总分、男女集体总分排序输出;
4)能够按学校编号查询学校某个项目的情形;能够按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
能够输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每一个功能能够设立菜单,依照提示,能够完成相关的功能要求。
存储结构:
学生自己依照系统功能要求自己设计,可是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方式等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求利用一、全数合法数据;二、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳固。
测试数据及测试结果请在上交的资料中写明。
二、分析
1整体设计
参赛人数即为顺序表表长,在顺序表节点中有成绩,在成立学生信息时可直接输入成绩,输入学生信息时编码是自动加的,统计学校总分或男女项目总分时都用2个for循环来实现,统计出来的得分都可放入另一个顺序表中以便于排序,在查询时用户输入要查询的学校代号或项目代号即可查询,在成立信息时会挪用保留在文件的函数来实现学生信息的保留。
2数据结构的选择
运动会分数统计程序用到的是顺序表的数据类型,由于一开始参赛人数确实是确信下来的,参赛人数即为顺序表表长,故顺序表的表长也就确信下来了,顺序表的要紧内容有学校数、男子项目数、女子项目数、总的参赛人数。
节点要紧内容包括:
学生的姓名、学校代号、项目代号和学生的成绩。
顺序表类型如下:
typedefstruct{
uexiao==i&&L->sc[j].xiangmu==n)ame,L->sc[j].score);}
}
按项目代号查取得成绩的学校是也是按编号查询,只要学校项目代号与输入要查的项目相同而且有成绩就输出。
函数如下:
voidsearch2(seqlist*L){iangmu==k&&L->sc[j].score!
=0)
printf("学校代号%d在该项目姓名%s取得成绩%d\n",L->sc[j].xuexiao,L->sc[j].name,L->sc[j].score);
}
}
(2)统计
在统计学校总分和各学校男女项目总分时思路大致相同,在统计男(女)项目总分时只需确信下是不是是男(女)子项目,若是是就加,判定方式确实是男子项目的项目代号小于等于男子项目数(即:
L->sc[j].xiangmu)<(L->m))而女子项目那么大于男子项目数(即L->sc[j].xiangmu)>(L->m))
统计各学校总分函数介绍如下:
voidtongfen(seqlist*L,list*s){uexiao==i){core;}iaohao=i;ey=sum;
和uexiao,&L->sc[i].xiangmu,&L->sc[i].name,&L->sc[i].score);
}
savefile(L);
printf("成立成功!
:
");
}
voidsearch1(seqlist*L){uexiao==i&&L->sc[j].xiangmu==n)
printf("该学校在该项目姓名为%s取得成绩%d\n",L->sc[j].name,L->sc[j].score);
}
}
voidsearch2(seqlist*L){iangmu==k&&L->sc[j].score!
=0)
printf("学校代号%d在该项目姓名%s取得成绩%d\n",L->sc[j].xuexiao,L->sc[j].name,L->sc[j].score);
}
}
voidtongfen(seqlist*L,list*s){uexiao==i){
sum=sum+L->sc[j].score;}
}
s->r[i].xiaohao=i;
s->r[i].key=sum;
printf("学校代号为%d的学校取得的总分为%d\n",i,sum);
}
}
voidtongfenboy(seqlist*L,list*s){uexiao==i){
if((L->sc[j].xiangmu)<(L->m)||(L->sc[j].xiangmu)==(L->m)){
sum=sum+L->sc[j].score;}
}
}
s->r[i].xiaohao=i;
s->r[i].key=sum;
printf("学校代号为%d在男子项目取得的总分为%d\n",i,sum);
}
}
voidtongfengirl(seqlist*L,list*s){uexiao==i){
if((L->sc[j].xiangmu)>(L->m)){
sum=sum+L->sc[j].score;}
}
}
s->r[i].xiaohao=i;
s->r[i].key=sum;
printf("学校代号为%d在女子项目取得的总分为%d\n",i,sum);
}
}
voidpaixu(seqlist*L,list*s){ey
}
}
voidoutput(seqlist*L){
intj;
printf("学校代号编号项目号姓名成绩:
\n");
for(j=1;j<=L->r;j++){
printf("%d\t%d\t%d\t%s\t%d\n",L->sc[j].xuexiao,j,L->sc[j].xiangmu,L->sc[j].name,L->sc[j].score);
}
};
seqlist*loadfile()xt","r");
seqlist*s;
s=(seqlist*)malloc(sizeof(seqlist));
fscanf(fp,"%d%d%d%d",&s->r,&s->n,&s->m,&s->w);
for(inti=1;i<=s->r;i++)
{
fscanf(fp,"%s",buf);
strcpy(s->sc[i].name,buf);
fscanf(fp,"%d%d%d",&s->sc[i].xuexiao,&s->sc[i].xiangmu,&s->sc[i].score);
}
fclose(fp);
returns;
}
voidsavefile(seqlist*s)xt","a+"))==NULL)
{
printf("Cannotopenthefile!
\n");
return;
}
fprintf(fp,"%d\t",s->r);
fprintf(fp,"%d\t",s->n);
fprintf(fp,"%d\t",s->m);
fprintf(fp,"%d\n",s->w);
for(inti=1;i<=s->r;i++)
{
fprintf(fp,"%s\t",s->sc[i].name);
fprintf(fp,"%d\t",s->sc[i].xuexiao);
fprintf(fp,"%d\t",s->sc[i].xiangmu);
fprintf(fp,"%d\n",s->sc[i].score);
}
fclose(fp);
}
intmenu_select(){
inti,sn;
printf("------欢迎来到大学生运动会治理系统------\n");
printf("请您先建立参赛者信息并记录成绩
(1)\n");
printf("查询(按校查某个项目)
(2)\n");
printf("查询(按项目查取得成绩的学校)(3)\n");
printf("统计各学校总分并排序输出(4)\n");
printf("统计各学校男子项目总分并排序输出(5)\n");
printf("统计各学校女子项目总分并排序输出(6)\n");
printf("输出(7)\n");
printf("退出(0)\n");
printf("----------------请选择------------------\n");
for(i=0;i<100;i++){
scanf("%d",&sn);
if(sn<0||sn>7)
printf("\n\t输入错误,重选0-7:
\n");
elsebreak;}
returnsn;
}
voidmain(){
intm,n,w,r;
FILE*fp;
seqlistS,*L=&S;
listp,*s=&p;
if((fp=fopen("运动员系统.txt","r"))==NULL)
{
L=(seqlist*)malloc(sizeof(seqlist));
printf("------欢迎来到大学生运动会治理系统------\n");
printf("输入参赛的学校数,男子项目数,女子项目数,总的参赛人数:
\n");
scanf("%d%d%d%d",&n,&m,&w,&r);
printf("\n");
L->n=n;L->m=m;L->w=w;L->r=r;
}
else
L=loadfile();
for(;;){
switch(menu_select()){
case1:
set(L);break;
case2:
search1(L);break;
case3:
search2(L);break;
case4:
tongfen(L,s);paixu(L,s);break;
case5:
tongfenboy(L,s);paixu(L,s);break;
case6:
tongfengirl(L,s);paixu(L,s);break;
case7:
output(L);break;
case0:
break;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 运动会 分数 统计