运动会分数统计系统 课程设计.docx

上传人:b****6 文档编号:8442915 上传时间:2023-01-31 格式:DOCX 页数:23 大小:279.26KB
下载 相关 举报
运动会分数统计系统 课程设计.docx_第1页
第1页 / 共23页
运动会分数统计系统 课程设计.docx_第2页
第2页 / 共23页
运动会分数统计系统 课程设计.docx_第3页
第3页 / 共23页
运动会分数统计系统 课程设计.docx_第4页
第4页 / 共23页
运动会分数统计系统 课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

运动会分数统计系统 课程设计.docx

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

运动会分数统计系统 课程设计.docx

运动会分数统计系统课程设计

数据结构课程设计

运动会分数统计系统

专业:

网络工程

班级:

学号

姓名:

指导老师:

2012年6月29日

 

一、课程设计目的

 

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

 

二、课程设计题目

任务:

参加运动会有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).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

规定:

输入数据形式和范围:

20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

输出形式:

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

界面要求:

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

存储结构:

学生自己根据系统功能要求自己设计。

请在最后的上交资料中指明你用到的存储结构;

测试数据:

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

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

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

 

三、课程设计设计过程

 

1、数据存储方式设计

 

在程序中需要存储的信息有:

1)、以运动会的各项目编号为基础存储,存储第一到第三或第一到第五名学校的编号存入。

由于存储从第一到第三还第一到第五名学校编号是由项目决定的,因此在此处

我选择使用临界链表存储,数组的数据域为1表示取前三名,为0表示取前五名。

2)、用二维数组存储各学校的信息,包括学校的编号,学校的总成绩,男子总成绩,女子总成绩。

临界链表:

a

(1)

1

a

(2)

1

a(3)

1

a(4)

0

1

2

3

4

3

5

3

2

1

1

2

3

4

5

 

二维表抽象图:

学校编号

总成绩

男子团体成绩

女子团体成绩

1

2

3

程序类的设计:

classinfor

{

public:

intx;

infor*p;

};

用来存储链表节点信息

链表建立关键代码:

for(intk=1;k<=t;k++)

{

s=newinfor;

do{

cin>>l;

e[k]=l;

if(l>num||l<0)

{

cout<<"本编号输入有误请重新输入:

"<

}

}while(l>num||l<0);

s->x=l;

s->p=NULL;

h->p=s;

h=s;

}

四、设计思想

1.数据输入:

根据运动项目的序号,输入该项目取得前三名或前五名成绩的学校的编号。

2.数据的处理:

把输入到临界链表的数据,装入存储学校信息的二维数组中。

3.普通输出:

按学校的编号输出数据。

4.排序输出:

分别按照总成绩、男子团体成绩、女子团体成绩从大到小的顺序输出数据。

5.查询输出:

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

五、程序流程图:

 

六、程序编写

#include

usingnamespacestd;

staticintnum,man,woman;

classinfor

{

public:

intx;

infor*p;

};

voidinput(infor*a)

{

intt,z,l,m,k;

booldu;

inte[6];

infor*s,*h;

for(inti=1;i<=man+woman;i++)

{

do{

cout<<"请输入该项目的计分方式(前三名为“1”,前五名为“0”)"<

cin>>z;

a[i].x=z;

a[i].p=NULL;

h=&(a[i]);

if(z!

=1&&z!

=0)

cout<<"计数方式选择有误,请重新输入!

"<

}while(z!

=1&&z!

=0);

if(z==1)

t=3;

elseif(z==0)

t=5;

//do{

cout<<"请按本项目名次输入学校的编号"<

for(intk=1;k<=t;k++)

{

s=newinfor;

do{

cin>>l;

e[k]=l;

if(l>num||l<0)

{

cout<<"本编号输入有误请重新输入:

"<

}

}while(l>num||l<0);

s->x=l;

s->p=NULL;

h->p=s;

h=s;

}

/*if(t=3)

{

if(e[1]==e[2]||e[1]==e[3]||e[2]==e[3])

du=true;

else

du=false;

}

if(t=5)

{

if(e[1]==e[2]||e[1]==e[3]||e[1]==e[4]||e[1]==e[5]||e[2]==e[3]||e[2]==e[4]||e[2]==e[5]||e[3]==e[4]||e[3]==e[5]||e[4]==e[5])

du=true;

else

du=false;

}

if(du)

cout<<"输入学校序号有重复,请重新输入:

"<

else

break;

}while

(1);*/

}

 

}

voidcontro(infor*a,int**school)

{

intm,scor,kl;

infor*p1;

for(inti=1;i<=man;i++)

{

p1=a[i].p;

if(a[i].x==1)

scor=5;

elsescor=7;

while(p1!

=NULL)

{

kl=p1->x;

//school[p1->x][2]=+scor;

school[p1->x][3]=+scor;

p1=p1->p;

if(scor==1)

scor=2;

if(scor==0)

scor=1;

}

}

for(inti1=man+1;i1<=man+woman;i1++)

{

p1=a[i1].p;

if(a[i1].x==1)

scor=5;

elsescor=7;

while(p1!

=NULL)

{

school[p1->x][4]=+scor;

//school[p1->x][2]=+scor;

p1=p1->p;

scor=scor-2;

if(scor==1)

scor=2;

if(scor==0)

scor=1;

}

}

for(intad=1;ad<=num;ad++)

{

school[ad][2]=school[ad][3]+school[ad][4];

}

}

voidoutput(int**a)

{

inttemp[1][5];

cout<<"按学校编号输出:

"<

cout<<"学校编号学校总分男子团体成绩女子团体成绩"<

for(inti=1;i<=num;i++)

{

for(intzz=1;zz<=num;zz++)

{

if(zz==i)

{

cout<<"";

for(ints=1;s<=4;s++)

{

cout<

}

cout<

break;

}

}

}

 

}

voidbyalloutput(int**a)

{

inttemp[1][5];

cout<<"按总成绩顺序输出;"<

cout<<"学校编号学校总分男子团体成绩女子团体成绩"<

for(inthud=1;hud<=num;hud++)

{

 

for(intj=num;j>=hud+1;j--)

{

if(a[j][2]>a[j-1][2])

{

temp[0][1]=a[j][1];temp[0][2]=a[j][2];temp[0][3]=a[j][3];temp[0][4]=a[j][4];

a[j][1]=a[j-1][1];a[j][2]=a[j-1][2];a[j][3]=a[j-1][3];a[j][4]=a[j-1][4];

a[j-1][1]=temp[0][1];a[j-1][2]=temp[0][2];a[j-1][3]=temp[0][3];a[j-1][4]=temp[0][4];

}

}

}

for(inti1=1;i1<=num;i1++)

{

cout<<"";

for(intj1=1;j1<=4;j1++)

cout<

cout<

}

}

voidbymanoutput(int**a)

{

inttemp[1][5];

cout<<"按总成绩顺序输出;"<

cout<<"学校编号学校总分男子团体成绩女子团体成绩"<

for(inthud=1;hud<=num;hud++)

{

 

for(intj=num;j>=hud+1;j--)

{

if(a[j][3]>a[j-1][3])

{

temp[0][1]=a[j][1];temp[0][2]=a[j][2];temp[0][3]=a[j][3];temp[0][4]=a[j][4];

a[j][1]=a[j-1][1];a[j][2]=a[j-1][2];a[j][3]=a[j-1][3];a[j][4]=a[j-1][4];

a[j-1][1]=temp[0][1];a[j-1][2]=temp[0][2];a[j-1][3]=temp[0][3];a[j-1][4]=temp[0][4];

}

}

}

for(inti1=1;i1<=num;i1++)

{

cout<<"";

for(intj1=1;j1<=4;j1++)

cout<

cout<

}

}

voidbywomanoutput(int**a)

{

inttemp[1][5];

cout<<"按总成绩顺序输出;"<

cout<<"学校编号学校总分男子团体成绩女子团体成绩"<

for(inthud=1;hud<=num;hud++)

{

 

for(intj=num;j>=hud+1;j--)

{

if(a[j][4]>a[j-1][4])

{

temp[0][1]=a[j][1];temp[0][2]=a[j][2];temp[0][3]=a[j][3];temp[0][4]=a[j][4];

a[j][1]=a[j-1][1];a[j][2]=a[j-1][2];a[j][3]=a[j-1][3];a[j][4]=a[j-1][4];

a[j-1][1]=temp[0][1];a[j-1][2]=temp[0][2];a[j-1][3]=temp[0][3];a[j-1][4]=temp[0][4];

}

}

}

for(inti1=1;i1<=num;i1++)

{

cout<<"";

for(intj1=1;j1<=4;j1++)

cout<

cout<

}

}

voidselebyschool(infor*a,intschool,intspor)

{

infor*p1;

intscor;

p1=a[spor].p;

if(a[spor].x==1)

scor=7;

else

scor=9;

//cout<<"**************"<

while(p1!

=NULL)

{

//cout<

scor-=2;

if(scor==1)

scor=2;

if(scor==0)

scor=1;

if(p1->x==school)

break;

p1=p1->p;

}

//scor=3;

if(p1==NULL)

scor=0;

cout<<"学校编号该项目成绩"<

cout<<""<

}

voidselebyspor(infor*a,intspo)

{

infor*p1;

p1=a[spo].p;

if(a[spo].x==1)

cout<<"项目编号第一名第二名第三名"<

else

cout<<"项目编号第一名第二名第三名第四名第五名"<

cout<<""<

while(p1!

=NULL)

{

cout<<""<x<<"";

p1=p1->p;

}

}

intmain()

{

intscho,spor,chose;

int**coned;

intfff=1;

infor*a,*p1;

cout<<"**************欢迎使用运动会分数统计系统**************"<

cout<<"请输入参加运动会学校的个数:

"<

cin>>num;

cout<<"请分别输入男子项目和女子项目的个数:

"<

cin>>man>>woman;

a=newinfor[man+woman+1];

coned=newint*[num+1];

for(inti=0;i

coned[i]=newint[5];

for(intde=1;de<=num;de++)

{

for(intdd=1;dd<=4;dd++)

{

if(dd==1)

coned[de][1]=de;

elseconed[de][dd]=0;

}

}

 

/*for(intle=1;le<=num;le++)

{

for(intll=1;ll<=4;ll++)

cout<

}*/

input(a);

contro(a,coned);

//cout<

//for(intzd=1;zd<=man+woman;zd++)

//{

//cout<

//p1=a[zd].p;

//cout<x;

//while(p1!

=NULL)

//{

//cout<<""<x<<""<

//fff--;

//}

//}

do{

cout<<"⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙★★★操作菜单★★★⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙"<

cout<<"【﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟1.按学校编号输出﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟2.按学校总成绩输出﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟3.按男子团体成绩输出﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟4.按女子团体成绩输出﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟5.按学校和项目查询信息﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟6.按项目编号查询﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹟﹟﹟﹟﹟﹟﹟0.退出﹟﹟﹟﹟﹟﹟﹟】"<

cout<<"【﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡】"<

cout<<"⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙★★★操作菜单★★★⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙"<

cout<<"请输入你的选择:

";

cin>>chose;

switch(chose)

{

case1:

{

output(coned);

break;

}

case2:

{

byalloutput(coned);

break;

}

case3:

{

bymanoutput(coned);

break;

}

case4:

{

bywomanoutput(coned);

break;

}

case5:

{

cout<<"输入查询的学校和项目编号:

"<

cin>>scho>>spor;

selebyschool(a,scho,spor);

break;

}

case6:

{

cout<<"输入查询的项目编号:

"<

cin>>spor;

selebyspor(a,spor);

break;

}

case0:

gotoer;

}

}while

(1);

er:

return0;

}

 

七、运行结果

数据输入:

选项输出:

输出:

 

 

 

查询:

 

八、实验心得

通过一周的课程设计对数据结构的实际操作,更加深了对数据存储的理解,更明确如何去存储数据才能做到更快捷,更节省空间,运用更加方便。

确实,数据结构是编程的基础,只有更好的去操作数据才能编写出更实用,更精练的程序。

这一周对数据结构的课程设计,是一次系统运用知识,实际操作的机会,短短一周收益颇深。

只有更多的实践才能得到更多的经验,才能更好的掌握书本上的知识。

以后还需要自己去找机会去锻炼自己综合操作的能力和思想。

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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