数据结构课程设计运动会分数统计系统完整报告word文档.doc

上传人:wj 文档编号:2507143 上传时间:2023-05-03 格式:DOC 页数:26 大小:399.50KB
下载 相关 举报
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第1页
第1页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第2页
第2页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第3页
第3页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第4页
第4页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第5页
第5页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第6页
第6页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第7页
第7页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第8页
第8页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第9页
第9页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第10页
第10页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第11页
第11页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第12页
第12页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第13页
第13页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第14页
第14页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第15页
第15页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第16页
第16页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第17页
第17页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第18页
第18页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第19页
第19页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档.doc_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计运动会分数统计系统完整报告word文档.doc

《数据结构课程设计运动会分数统计系统完整报告word文档.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会分数统计系统完整报告word文档.doc(26页珍藏版)》请在冰点文库上搜索。

数据结构课程设计运动会分数统计系统完整报告word文档.doc

《数据结构》

课程设计

专业:

班级:

姓名:

指导教师:

2011年6月28日

目录

题目 1

时间 1

分析 1

程序要求 2

数据结构设计 2

1.概述 2

2.关键算法 3

3.查询操作 4

详细代码 6

测试结果 18

1.主菜单窗口 18

3.统计各学校总分 19

4.按学校编号排序输出 20

5.按学校总分排序输出 20

6.按男团体总分排序输出 21

7.按女团体总分排序输出 21

8.按学校编号查询学校某个项目情况 22

9.按项目编号查询取得名次的学校 22

测试非法数据 22

课程设计总结 26。

运动会分数统计

任务:

参加运动会有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)可以按学校编号或名称、学校总分、男女团体总分排序输出;

4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

5)数据存入文件并能随时查询

6)规定:

输入数据形式和范围:

可以输入学校的名称,运动项目的名称

输出形式:

有中文提示,各学校分数为整形;

界面要求:

有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求;

存储结构:

学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;

测试数据:

要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;

时间:

2011年6月22日—2011年6月28日星期二

a)需求分析

程序功能:

系统主要用于运动会分数统计方案;

输入方式:

键盘输入整形数据

输出方式:

屏幕显示

用户界面:

中文菜单提示操作

存储方式:

存储结构为链表

b)设计概要

本程序中学校的存储结构为链表:

Prevschool1next

头结点

Prevschool(最后)next

…………

……

school类为:

classschool:

publicathlete/*学校*/

{

……

public:

intcount;/*学校获奖数*/

intserial;/*学校编号*/

intmenscore;/*男选手总分*/

intwomenscore;/*女选手总分*/

inttotalscore;/*总分*/

athleteath[MaxSize];/*获奖运动员信息数组,包括分数,名次,项目*/

school*prev;//前指针

school*next;//后指针

};

部分主要的函数:

添加操作add(school*&head)

查询操作checkFunc(school*head,int&n)

文件保存save(school*head)

总分快速排序tquicksort(vector&v,intfirst,intlast)

总分基数排序tbaseSort(vector&v,intd)

关键算法:

{……

添加项目号

for(i=1;i<=n;i++)

{输入第i名运动员的学校编号temp

……

while(first!

=head) //遍历链表,直到找到编号为serial的学校所在结点,或first指向表头head

{ if(first->serial==要添加的编号)

{

(first->ath[first->count]).item=要添加的项目号;

(first->ath[first->count]).range=i(名次)

First指向的学校的项目加一;

更新总分

break; }

first=first->next;

……}

c) 详细设计

开始

输入项目编号temp

是数字

N

Y

0

N

Y

输出“项目不存在”

学校遍历结束

temp存在

Y

N

Nextschool

N

temp是奇数

N

Y

取5名

取3名

输入获奖的学校编号se

1

N

Y

项目号、名次、运动员名字添进学校所在结点

Y

继续添加

Y

N

结束

查询操作:

while(first!

=head)

{……

if(输入的项目编号==学校第i位运动员的项目)

{

把第i位运动员的项目,学校编号、名次、得分信息压入向量;

}……

}

first=first->next;

……

输出向量中的内容

//按学校编号顺序输出所有参赛学校运动会成绩

voidserialSort(vector&v)

{

for(inti=0;i

{

cout<<*v[i];

}

}

1.按学校编号统计

2.按学校名次统计

3.按男团总分统计

4.按女团总分统计

5.返回查询菜单

6.返回主菜单

1.所有学校总分统计表

2.学校成绩查询

3.项目情况查询

4.返回主菜单

详细代码:

#include

#include

#include

#include

//#include/*屏幕操作函数*/

#defineMAX50

//#defineNULL0

typedefstructnode1{

intschool;/*学校编号*/

intrecord;/*项目成绩*/

structnode1*next;/*链域*/

}Schools;

typedefstruct{

intitem;/*项目编号*/

Schools*firstschool;/*链域指向链表中第一个结点*/

}ITEM;

typedefstruct{

intz;/*项目总数*/

ITEMa[MAX];

}ALLitems;

typedefstructnode2{

intitem;/*该学校获奖的项目*/

intrecord;/*项目成绩*/

structnode2*next;/*链域*/

}Items;

typedefstruct{

intschool;/*学校编号*/

intscore;/*学校总分*/

intboys;/*男团体总分*/

intgirls;/*女团体总分*/

Items*firstitem;/*链域指向链表中第一个获奖项目的结点*/

}SCHNode;

typedefstruct{

intn;/*学校总数*/

SCHNodeb[MAX];

}ALLNode;

ALLitems*g1;

ALLNode*g2;

voidfunct1(ALLitems*g1,ALLNode*g2)

{Schools*p1;

Items*p2;

inti,j,k,m,w,h,x;

p1=(Schools*)malloc(sizeof(Schools));

p2=(Items*)malloc(sizeof(Items));

if(!

p1||!

p2)

exit

(1);

\n\n");

printf("\n******输入各个项目信息******\n\n");

printf("输入男子项目总数m:

");

scanf("%d",&m);

if(m<0||m>20)

{printf("输入有误,m是20以内的整数,请重新输入:

");

scanf("%d",&m);

}

printf("输入女子项目总数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以内的整数,请重新输入:

");

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;

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;

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",&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->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;/*累计总分*/

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

elseg2->b[x].girls=g2->b[x].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));

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->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;/*累计总分*/

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

elseg2->b[x].girls=g2->b[x].girls+p2->record;/*累计女团体总分*/

h--;

}while(x!

=0&&h!

=0);

}

}

}

}

voidsave()

{FILE*fp1,*fp2;

fp1=(FILE*)malloc(sizeof(FILE));

fp2=(FILE*)malloc(sizeof(FILE));

if((fp1=fopen("sports1","wb"))==NULL)

{printf("cannotopenfile.\n");

return;

}

if(fwrite(g1,sizeof(ALLitems),1,fp1)!

=1)

printf("filewriteerror.\n");

fclose(fp1);

if((fp2=fopen("sports2","wb"))==NULL)

{printf("cannotopenfile.\n");

return;

}

if(fwrite(g2,sizeof(ALLNode),1,fp2)!

=1)

printf("filewriteerror.\n");

fclose(fp2);

}

voidfunct2(ALLNode*g2)/*输出各学校总分*/

{intk;

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("按任意键返回主菜单......");

getchar();

}

voidfunct3(ALLNode*g2)/*按学校编号排序输出*/

{

intk;

Items*p2;

p2=(Items*)malloc(sizeof(Items));

printf("\n\n******按学校编号排序输出******\n");

printf("学校编号\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");

system("pause");

printf("按任意键返回主菜单......");

getchar();

}

voidfunct4(ALLNode*g2)/*按学校总分排序输出*/

{inti,j,k;

Items*p2;

printf("\n\n******按学校总分排序输出******\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].score);

p2=p2->next;

}

printf("\n");

g2->b[0].score=g2->b[i].score;

g2->b[0].boys=g2->b[i].boys;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 图表模板

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

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