运动会分数统计.docx

上传人:b****5 文档编号:5339361 上传时间:2022-12-15 格式:DOCX 页数:20 大小:204.11KB
下载 相关 举报
运动会分数统计.docx_第1页
第1页 / 共20页
运动会分数统计.docx_第2页
第2页 / 共20页
运动会分数统计.docx_第3页
第3页 / 共20页
运动会分数统计.docx_第4页
第4页 / 共20页
运动会分数统计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

运动会分数统计.docx

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

运动会分数统计.docx

运动会分数统计

一、问题描述及要求

【问题描述】参加运动会有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以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

【输出形式】

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

【界面要求】

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

【存储结构】

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

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

【测试数据】

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

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

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

二、需求分析

根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:

信息统计模块、信息输出模块、信息查询模块、信息调用模块。

(1)、信息统计模块实现信息的输入、统计、存档。

(2)、信息输出模块实现信息的输出。

(3)、信息查询模块实现信息的查询。

(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出

三、数据结构

(1)项目数据表:

运动会系统先制定本次运动会所需的参赛项目。

本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。

用于对以后项目情况的统计已及查询。

typedefstruct

{

intinum;/*项目编号*/

inttop;/*取名次的数目*/

intrange[5];/*名次*/

intmark[5];/*分数*/

}itemnode;/*存放项目信息*/

(2)学校数据表:

本数据表根据要求储存了各个参赛学校的总体情况,包括学校的编号、学校总分、男子团体总分、女子团体总分,并且包括项目数据数组t[n]。

其中snum和t[n]中部分数据由输入信息输入,而其他三项内容score,mscore,wscore将由系统进行自动统计。

typedefstruct

{

intschoolnum;/*学校编号*/

intschoolcore;/*学校总分*/

intmanscore;/*男团体总分*/

intwomanscore;/*女团体总分*/

itemnodet[m0+w0];/*项目数组*/

}snode;/*存放学校信息*/

snodea[n0];/*定义一个学校数组*/

这二个数据表相关联接,a[n]中包括t[n],形成一个整体。

四、源代码

#include

#include

#include

#definen020

#definem020

#definew020

typedefstruct

{

intinum;

inttop;

intrange[5];

intmark[5];

}itemnode;

typedefstruct

{

intschoolnum;

intschoolcore;

intmanscore;

intwomanscore;

itemnodet[m0+w0];

}snode;

snodea[n0];

voidmenu(intn,intm,intw)

{

intc;

voidinput(intn,intm,intw);

voidoutput(intn,intm,intw);

voidsortput(intn,intm,intw);

voidsearch(intn,intm,intw);

printf("==========运动会分数统计系统==========\n");

printf("*******1.信息输入*******\n");

printf("*******2.统计输出*******\n");

printf("*******3.排序输出*******\n");

printf("*******4.信息查询*******\n");

printf("*******0.退出系统*******\n\n");

printf("请选择要实现步骤的编号(0—4):

");

scanf("%d",&c);

switch(c)

{

case1:

input(n,m,w);break;

case2:

output(n,m,w);break;

case3:

sortput(n,m,w);break;

case4:

search(n,m,w);break;

case0:

printf("谢谢使用,再见!

\n");

exit(0);

}

}

voidsavetofile()

{

FILE*fp;

inti;

if((fp=fopen("file.txt","w"))==NULL)

{

printf("cannotopenthefile\n");

return;

}

for(i=0;i

{

if(a[i].schoolnum!

='\0')

if(fwrite(&a[i],sizeof(snode),1,fp)!

=1)

{

printf("filewriteerror\n");

return;

}

}

fclose(fp);

}

voidreadfromfile()

{

inti;

FILE*fp;

if((fp=fopen("file.txt","rb"))==NULL)

{

printf("cannotopenthefile\n");

return;

}

for(i=0;i

fread(&a[i],sizeof(snode),1,fp);

fclose(fp);

}

voidinput(intn,intm,intw)

{

inti,j,s,k,q=0;

for(i=0;i

{

printf("学校编号:

");

scanf("%d",&a[i].schoolnum);

for(j=0;j

{

printf("项目编号:

");

scanf("%d",&a[i].t[j].inum);

printf("取名次个数(3或者5):

");

scanf("%d",&a[i].t[j].top);

printf("获得名次个数(1—5):

");

scanf("%d",&k);

for(s=0;s

{

printf("所获名次(1—5):

");

scanf("%d",&a[i].t[j].range[s]);

}

printf("\n");

}

}

for(i=0;i

{

a[i].schoolcore=0;

a[i].manscore=0;

a[i].womanscore=0;

}

for(i=0;i

for(j=0;j

for(s=0;s<5;s++)

{

if(a[i].t[j].top==3)

switch(a[i].t[j].range[s])

{

case0:

a[i].t[j].mark[s]=0;break;

case1:

a[i].t[j].mark[s]=5;break;

case2:

a[i].t[j].mark[s]=3;break;

case3:

a[i].t[j].mark[s]=2;break;

}

elseif(a[i].t[j].top==5)

switch(a[i].t[j].range[s])

{

case0:

a[i].t[j].mark[s]=0;break;

case1:

a[i].t[j].mark[s]=7;break;

case2:

a[i].t[j].mark[s]=5;break;

case3:

a[i].t[j].mark[s]=3;break;

case4:

a[i].t[j].mark[s]=2;break;

case5:

a[i].t[j].mark[s]=1;break;

}

a[i].schoolcore=a[i].schoolcore+a[i].t[j].mark[s];

if(j<=m-1)

a[i].manscore=a[i].manscore+a[i].t[j].mark[s];

else

a[i].womanscore=a[i].womanscore+a[i].t[j].mark[s];

}

while(q!

=1)

{

printf("输入完毕!

返回?

1是2否");

scanf("%d",&q);

printf("\n");

}

printf("\n");

savetofile();

menu(n,m,w);

}

voidoutput(intn,intm,intw)

{

readfromfile();

inti,j,s,q=0;

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[i].schoolnum,a[i].schoolcore,a[i].manscore,a[i].womanscore);

for(j=0;j

{

printf("项目编号:

%d所取名次数量:

%d\n",a[i].t[j].inum,a[i].t[j].top);

for(s=0;s<5;s++)

{

if(a[i].t[j].range[s]!

=0)

printf("名次:

%d分数:

%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);

}

}

printf("\n");

}

printf("\n");

while(q!

=1)

{

printf("统计完毕!

返回?

1是2否");

scanf("%d",&q);

printf("\n");

}

printf("\n");

menu(n,m,w);

}

voidsortput(intn,intm,intw)

{

readfromfile();

intc,i,j,k,q=0;

inttemp[n0];

printf("===========排序输出系统==========\n\n");

printf("****1.按学校编号输出****\n");

printf("****2.按学校总分输出****\n");

printf("****3.按男团总分输出****\n");

printf("****4.按女团总分输出****\n\n");

do

{

printf("请选择要实现功能的编号(1—4):

");

scanf("%d",&c);

switch(c)

{

case1:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].schoolnum>a[j].schoolnum)

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].schoolnum,a[temp[i]].schoolcore,a[temp[i]].manscore,a[temp[i]].womanscore);

}

break;

case2:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].schoolcore

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].schoolnum,a[temp[i]].schoolcore,a[temp[i]].manscore,a[temp[i]].womanscore);

}

break;

case3:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].manscore

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].schoolnum,a[temp[i]].schoolcore,a[temp[i]].manscore,a[temp[i]].womanscore);

}

break;

case4:

for(i=0;i

temp[i]=i;

for(i=0;i

{

for(j=i+1;j

if(a[temp[i]].womanscore

{

k=temp[i];

temp[i]=temp[j];

temp[j]=k;

}

}

for(i=0;i

{

printf("学校编号:

%d学校总分:

%d男团总分:

%d女团总分:

%d\n",a[temp[i]].schoolnum,a[temp[i]].schoolcore,a[temp[i]].manscore,a[temp[i]].womanscore);

}

break;

}

printf("请选择1返回主菜单0继续");

scanf("%d",&q);

printf("\n");

}while(q==0);

printf("\n");

if(q!

=0)

menu(n,m,w);

}

voidsearch(intn,intm,intw)

{

readfromfile();

intc,i,j,k,d,l,q=0;

printf("****************查询系统****************\n\n");

printf("****1.按学校编号查询****\n");

printf("****2.按项目编号查询****\n\n");

do

{

k=-1;d=-1;l=-1;

printf("请选择要实现功能的编号(1或2):

");

scanf("%d",&c);

switch(c)

{

case1:

printf("要查询的学校编号:

");

scanf("%d",&c);

for(i=0;i

{

if(a[i].schoolnum==c)

k=i;

}

if(k==-1)

printf("错误:

这个学校没有参加此次运动会!

\n");

else

{

printf("要查询的项目编号:

");

scanf("%d",&c);

for(j=0;j

{

if(a[k].t[j].inum==c)

d=j;

}

if(d==-1)

printf("此次运动会没有这个项目\n");

else

{

printf("这个项目取前%d名,该学校的成绩如下:

\n",a[k].t[d].top);

for(i=0;i<5;i++)

if(a[k].t[d].range[i]!

=0)

printf("名次:

%d\n",a[k].t[d].range[i]);

}

}

break;

case2:

printf("要查询的项目编号:

");

scanf("%d",&c);

for(i=0;i

for(j=0;j

if(a[i].t[j].inum==c)

l=j;

if(l==-1)

printf("此次运动会没有这个项目\n");

else

{

printf("该项目取前%d名,取得名次的学校\n",a[0].t[l].top);

for(i=0;i

for(j=0;j<5;j++)

if(a[i].t[l].range[j]!

=0)

printf("学校编号:

%d,名次:

%d\n",a[i].schoolnum,a[i].t[l].range[j]);

}

break;

default:

printf("输入错误,请重试!

\n");

}

printf("请选择1返回主菜单0继续");

scanf("%d",&q);

printf("\n");

}while(q==0);

printf("\n");

if(q!

=0)

menu(n,m,w);

}

voidmain()

{

intn,m,w;

printf("==========运动会分数统计系统==========\n");

printf("请先输入运动会主要信息\n");

printf("输入学校个数:

");

scanf("%d",&n);

printf("输入男子项目个数:

");

scanf("%d",&m);

printf("输入女子项目个数:

");

scanf("%d",&w);

menu(n,m,w);

}

五、运行结果

(1)输入运动会主要信息:

(2)信息输入:

 

(3)统计输出:

 

 

(4)排序输出:

 

(5)信息查询:

(6)退出:

六、总结

在这次的课程设计中遇到了许许多多的问题与困难,通过查阅各种书籍、上网查找各种资料,并通过与同学的讨论解决这些问题。

总的来说,在这次的实验中收获很大,同时也认识到了自己的不足,在下面的学习中更加努力,来弥补自己的不足。

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

当前位置:首页 > 表格模板 > 表格类模板

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

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