运动会分数统计系统 数据结构课程设计文档格式.docx

上传人:b****1 文档编号:15371110 上传时间:2022-10-29 格式:DOCX 页数:40 大小:298.46KB
下载 相关 举报
运动会分数统计系统 数据结构课程设计文档格式.docx_第1页
第1页 / 共40页
运动会分数统计系统 数据结构课程设计文档格式.docx_第2页
第2页 / 共40页
运动会分数统计系统 数据结构课程设计文档格式.docx_第3页
第3页 / 共40页
运动会分数统计系统 数据结构课程设计文档格式.docx_第4页
第4页 / 共40页
运动会分数统计系统 数据结构课程设计文档格式.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

运动会分数统计系统 数据结构课程设计文档格式.docx

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

运动会分数统计系统 数据结构课程设计文档格式.docx

(2)能统计各学校总分;

(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;

(4)可以按学校编号查询学校某个项目的情况;

可以按项目编号查询取得前三或前五名的学校。

三.概要设计

3.1链表结构的ADT的定义

ADTList{

数据对象:

D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}

数据关系:

R1={<

ai-1,ai>

|ai-1,ai∈D,i=2,…,n}

基本操作:

InitList(&

L)

操作结果:

构造一个空的线性表L。

GetElem(L,i,&

e)

初始条件:

线性表L已存在,1≦i≦ListLength(L)

操作结果:

用e返回L中第i个数据元素的值。

LocateElem(L,e,compare())

线性表L已存在,compare()是数据元素判定函数。

返回L中第1个与e满足关系compare()的数据元素的位序。

若这样的数据元素不存在,则返回值为0。

PriorElem(L,cur_e,&

pre_e)

初始条件:

线性表L已存在。

操作结果:

若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义。

NextElem(L,cur_e,&

next_e)

初始条件:

若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。

ListInsert(&

L,I,e)

线性表L已存在,1≦i≦ListLength(L)+1

在L中第i个位置之前插入新的元素e,L是表长度加1

ListTraverse(L,visit())

操作结果:

依次对L的每个数据元素调用函数visit()。

一旦visit()失败,则操作失败。

}ADTList

 

3.2系统功能模块设计

图3-1运动会分数统计系统功能模块图

3.3主要函数调用关系图

图3-2系统函数调用关系图

3.4主界面设计

为了实现运动会分数统计系统,需要设计一个含有多菜单项的主控菜单子程序,以链接系统中各个子项目的调用,为了方便用户使用本系统,本系统主控菜单的运行界面如图3-3所示。

图3-3主菜单运行界面

四.详细设计

实现运动会分数统计系统的开发,采用链表结构类型存储运动会学校名称、男子女子运动项目以及男子女子项目成绩的信息。

4.1数据类型定义

//每一个学校的信息

typedefstructLnode//结点

{

chardata[20];

//学校名称

intda,d1,d2;

//学校编号、学校总分、男女团体分

structLnode*next;

//指向下一学校

}Lnode,*LinkList;

intsz[20];

//每一个项目的信息存取

typedefstructLnode1

chardata[20],data1[20],data2[20],data3[20],data4[20],data5[20];

//该项目前五名学校的名称

intda1,da2,da3,da4,da5;

//该项目前五名学校的编号

structLnode1*next;

//指向下一项目

}Lnode1,*LinkList1;

4.2系统子程序详细设计

输入各学校名称的算法:

//按从头到尾的顺序依次建立线性链表L1共有n个节点

voidschoolname(LinkList&

L1,intn)

inti;

LinkListp,q;

//输入头结点信息,即输入第一个学校的名字

L1=(LinkList)malloc(sizeof(Lnode));

//malloc是动态开辟内存,函数返回为void型指针(指向开辟的内存空间);

(LinkList)定义的指针的类型;

(sizeof(Lnode)malloc开辟的内存空间的大小

printf("

请输入这%d个学校的名字:

\n"

n);

p=(LinkList)malloc(sizeof(Lnode));

//指向一个有意义的地方

L1->

next=p;

//把p的值赋给nextnext指向实际的空间p时指针

scanf("

%s"

&

p->

data);

//修改空间的值,&

取p的数据域的地址

//从第二个节点开始依次输入到第n个节点信息

for(i=2;

i<

=n;

i++)//p是第一个,所以i=2从2开始先指出第一个,然后第一个在指出剩下的

q=p;

//q指向p开辟的空间即q指向p指向的地方

//给新开辟的空间赋值

q->

}

输入男子运动项目名字的算法:

//按从头到尾的顺序依次建立线性链表L2共有n2个节点

voidmansports(LinkList1&

L2,intn2)

//输入第一个节点的信息,即第一个男子项目的名字

LinkList1r,s;

L2=(LinkList1)malloc(sizeof(Lnode1));

请输入这%d个项目的名字:

n2);

r=(LinkList1)malloc(sizeof(Lnode1));

//把新开辟的空间data1-5初始化

for(intt=0;

t<

20;

t++)

r->

data1[t]='

\0'

;

for(t=0;

data2[t]='

data3[t]='

data4[t]='

data5[t]='

L2->

next=r;

//从第二个节点开始输入到第n2个节点的信息

=n2;

i++)

s=r;

//s指向r指向的地方

s->

输入女子运动项目名字的算法:

//按从头到尾的顺序依次建立线性链表L3共有n1个节点

voidwomansports(LinkList1&

L3,intn1)

//输入第一个节点的信息,即第一个女子项目的名字

L3=(LinkList1)malloc(sizeof(Lnode1));

n1);

L3->

//从第二个节点开始依次输入到第n1个节点信息

=n1;

参加比赛的学校的总分排名的算法:

voidschoolrankings(LinkList&

LinkListp;

学校的数据类型上边

intz,i,j,y;

参加这次比赛的学校的总分排名:

);

p=L1->

next;

//下一个地方的指针给pp是学校的数据类型p是一个节点,L1下一个节点给p

//先把每个学校的总分依次遍历,存放在数组sz中。

一个一个取,一个一个找先让p指向一个链表

for(i=0;

=n-1;

sz[i]=p->

da;

//节点的信息指向一个数组,data学校总数的数据域,把所有的学校的总分

p=p->

//再对数组sz用冒泡排序法进行从小到大排序

for(i=1;

for(j=1;

j<

=n-i;

j++)

if(sz[j-1]>

sz[j])

y=sz[j-1];

sz[j-1]=sz[j];

sz[j]=y;

z=1;

//初始化

//把线性链表L1按项目总分从大到小的顺序排列,并打印名次

for(i=n-1;

i>

=0;

i--)

//L1表示一个节点,取出里面一个数据,那个数据的名字是next,next也是一个节点,p也是一个节点,

if(i>

0)//意义是判断下一个是不是

//如果值相等则链表指针直接指向下一个,不用交换位置

while(sz[i]==sz[i-1])相邻的两个数组素不素相等

i--;

//从大到小,从最后一个比较

//在链表L1中找到与sz[i]相等的节点的位置,并打印出名次信息

j++)

if(sz[i]==p->

da)//数组里面的值从最后一个开始取

第%d名%s:

%d分\n"

z,p->

data,p->

da);

z++;

参加这次比赛的学校的男子项目的成绩排名的算法:

//男子项目排名算法代码与上述学校总分的排名算法完全一致,其中男子项目排序的过程为比较男子项目总分

voidmanrankings(LinkList&

参加这次比赛的学校的男子项目的成绩排名:

ne

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

当前位置:首页 > 高中教育 > 其它课程

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

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