C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx

上传人:b****8 文档编号:22887735 上传时间:2023-02-05 格式:DOCX 页数:28 大小:278.15KB
下载 相关 举报
C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx_第1页
第1页 / 共28页
C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx_第2页
第2页 / 共28页
C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx_第3页
第3页 / 共28页
C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx_第4页
第4页 / 共28页
C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx

《C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。

C语言课程设计运动会分数统计系统说明书2Word格式文档下载.docx

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

输出形式:

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

界面要求:

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

存储结构:

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

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

测试数据:

要求使用1、全部合法数据;

2、整体非法数据;

3、局部非法数据。

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

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

五、数据结构设计

1.概述

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

其中

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)

2.关键算法

{……

添加项目号

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;

……}

3.查询操作:

六、详细代码:

#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;

intz;

/*项目总数*/

ITEMa[MAX];

}ALLitems;

typedefstructnode2{

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

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);

printf("

\n******输入各个项目信息******\n\n"

);

输入男子项目总数m:

"

scanf("

%d"

&

m);

if(m<

0||m>

20)

{printf("

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

}

输入女子项目总数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****记录运动会成绩****"

\n\n(输入0标志结束)\n"

for(k=1;

k<

=g1->

z;

k++)

{g1->

a[k].item=k;

a[k].firstschool=NULL;

=g2->

n;

{g2->

b[k].school=k;

g2->

b[k].firstitem=0;

b[k].score=0;

b[k].boys=0;

b[k].girls=0;

b[0].score=0;

b[0].boys=0;

b[0].girls=0;

while(i!

=0)

\n项目:

i);

if(i!

1.前三名2.前五名\n"

请选择:

j);

if(j!

=1&

j!

=2)

输入有误,请重新选择:

if(j==1)

{h=3;

do{printf("

第%d名:

学校(学校编号为数字)"

h);

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=3;

if(h==1)p2->

record=5;

next=g1->

a[i].firstschool;

a[i].firstschool=p1;

next=g2->

b[x].firstitem;

b[x].firstitem=p2;

b[x].score=g2->

b[x].score+p2->

record;

/*累计总分*/

if(i<

=m)g2->

b[x].boys=g2->

b[x].boys+p2->

/*累计男团体总分*/

elseg2->

b[x].girls=g2->

b[x].girls+p2->

/*累计女团体总分*/

h--;

}while(x!

=0&

h!

=0);

if(j==2)

{h=5;

if(h==5)p2->

record=1;

if(h==4)p2->

record=7;

}

voidsave()

{FILE*fp1,*fp2;

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

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

if((fp1=fopen("

sports1"

"

wb"

))==NULL)

cannotopenfile.\n"

return;

}

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

=1)

filewriteerror.\n"

fclose(fp1);

if((fp2=fopen("

sports2"

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

=1)

fclose(fp2);

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

{intk;

\n\n******输出各学校总分******\n"

学校编号\t总分\n"

%d\t\t\t%d\n"

k,g2->

b[k].score);

\n"

system("

pause"

按任意键返回主菜单......"

getchar();

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

{

intk;

\n\n******按学校编号排序输出******\n"

学校编号\t\t\t获奖情况\n"

k);

\t\t\t\t\t\t%d\t"

k);

p2=g2->

b[k].firstitem;

while(p2!

=NULL)

项目%d:

得%d分"

p2->

item,p2->

record);

p2=p2->

按任意键返回主菜单......"

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

{inti,j,k;

Items*p2;

\n\n******按学校总分排序输出******\n"

学校编号\t\t总分\n"

//printf("

输入要查询的项目编号:

for(i=2;

i<

i++)

{

%d\t"

%d\t\t%d\n"

g2->

b[k].school,g2->

b[0].score=g2->

b[i].score;

b[0].boys=g2->

b[i].boys;

b[0].girls=g2->

b[i].girls;

b[0].school=g2->

b[i].school;

j=i-1;

while(g2->

b[0].score<

b[j].score&

j>

0)

b[j+1].score=g2->

b[j].score;

b[j+1].boys=g2->

b[j].boys;

b[j+1].girls=g2->

b[j].girls;

b[j+1].school=g2->

b[j].school;

j--;

b[0].score;

b[0].boys;

b[0].girls;

b[0].school;

voidfunct5(ALLNode*g2)/*按男团体总分排序输出*/

\n\n******按男团体总分排序输出******\n"

学校编号\t\t男团体总分\n"

输入要查询的学校编号:

{

%d\t\t%d\n"

b[k].boys);

b[0].boys<

b[j].boys&

//暂停等待

voidfunct6(ALLNode*g2)/*按女团体总分排序输出*/

\n\n******按女团体总分排序输出******\n"

学校编号\t\t女团体总分\n"

scanf("

//printf("

b[k].girls);

b[0].girls<

b[j].girls&

voidfunct7(ALLNode*g2)/*按学校编号查询学校某个项目情况*/

{inti,j;

\n******按学校编号查询学校某个项目情况******\n"

输入要查询的学校编号:

输入要查询的项目编号:

b[i].firstitem;

{if(p2->

item==j)

学校编号:

%d\t项目%d:

得%d分\n"

i,p2->

prin

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

当前位置:首页 > 高等教育 > 工学

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

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