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

上传人:b****2 文档编号:14443575 上传时间:2022-10-22 格式:DOC 页数:26 大小:399.50KB
下载 相关 举报
数据结构课程设计运动会分数统计系统完整报告word文档Word格式.doc_第1页
第1页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档Word格式.doc_第2页
第2页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档Word格式.doc_第3页
第3页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档Word格式.doc_第4页
第4页 / 共26页
数据结构课程设计运动会分数统计系统完整报告word文档Word格式.doc_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

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

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

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

任务:

参加运动会有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<

school*>

&

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=要添加的项目号;

count]).range=i(名次)

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

更新总分

break;

}

first=first->

next;

……}

c) 

详细设计

开始

输入项目编号temp

是数字

N

Y

0<

temp<

18

输出“项目不存在”

学校遍历结束

temp存在

Nextschool

temp是奇数

取5名

取3名

输入获奖的学校编号se

1<

se<

15

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

继续添加

结束

查询操作:

while(first!

=head)

{……

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

{

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

}……

输出向量中的内容

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

voidserialSort(vector<

v)

for(inti=0;

i<

v.size();

i++)

{

cout<

<

*v[i];

}

}

1.按学校编号统计

2.按学校名次统计

3.按男团总分统计

4.按女团总分统计

5.返回查询菜单

6.返回主菜单

1.所有学校总分统计表

2.学校成绩查询

3.项目情况查询

4.返回主菜单

详细代码:

#include<

stdio.h>

stdlib.h>

string.h>

io.h>

//#include<

conio.h>

/*屏幕操作函数*/

#defineMAX50

//#defineNULL0

typedefstructnode1{

intschool;

/*学校编号*/

intrecord;

/*项目成绩*/

structnode1*next;

/*链域*/

}Schools;

typedefstruct{

intitem;

/*项目编号*/

Schools*firstschool;

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

}ITEM;

typedefstruct{

intz;

/*项目总数*/

ITEMa[MAX];

}ALLitems;

typedefstructnode2{

intitem;

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

intrecord;

structnode2*next;

}Items;

intscore;

/*学校总分*/

intboys;

/*男团体总分*/

intgirls;

/*女团体总分*/

Items*firstitem;

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

}SCHNode;

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"

输入男子项目总数m:

"

scanf("

%d"

&

m);

if(m<

0||m>

20)

{printf("

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

scanf("

}

输入女子项目总数w:

w);

if(w<

0||w>

输入有误,w是20以内的整数,请重新输入:

输入参加运动会的学校总数n:

g2->

n);

if(g2->

n<

0||g2->

n>

输入有误,n是20以内的整数,请重新输入:

g1->

z=m+w;

则项目编号为男子1-%d,女子%d-%d"

m,m+1,g1->

z);

\n\n****记录运

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

当前位置:首页 > 生活经验 > 家具家电

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1