C语言程序设计运动会成绩统计系统.docx

上传人:b****8 文档编号:9305437 上传时间:2023-02-04 格式:DOCX 页数:31 大小:20.62KB
下载 相关 举报
C语言程序设计运动会成绩统计系统.docx_第1页
第1页 / 共31页
C语言程序设计运动会成绩统计系统.docx_第2页
第2页 / 共31页
C语言程序设计运动会成绩统计系统.docx_第3页
第3页 / 共31页
C语言程序设计运动会成绩统计系统.docx_第4页
第4页 / 共31页
C语言程序设计运动会成绩统计系统.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C语言程序设计运动会成绩统计系统.docx

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

C语言程序设计运动会成绩统计系统.docx

C语言程序设计运动会成绩统计系统

 

程序设计工程训练报告

 

运动会分数统计系统

 

课程名称C语言程序设计工程训练

 

姓名

院(系)信息科学与技术学院

 

专业班级

学号

指导教师

 

教务处制

 

1

需求分析..........................................................................

1

2

系统总框图和功能模块说明..........................................................

2

2.1

系统总框图..................................................................

2

2.2

功能模块说明................................................................

2

3

系统设计..........................................................................

3

3.1

主要结构体...................................................................

3

3.2

主要功能函数.................................................................

3

3.3

关键函数的流程图.............................................................

4

 

4

系统调试..........................................................................

4

5

总结..............................................................................

7

6

源程序清单.......................................................................

7

 

1需求分析

1问题描述

运动会分数统计

参加运动会有n个学校,学校编号为1n。

比赛分成m个男子项目,和w个女子项目。

项目编号为男子1~m,女子m+1~m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:

7、5、3、2、1,前三名的积分分别为:

5、3、2;哪些项目取前五名或前三名由使用者设定。

(m<=20,n<=20)

2.基本要求:

1)可以输入各个项目的前三名或前五名的成绩;

2)能统计各学校总分;

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

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

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

3.测试数据

1)首先进入成绩录入界面,先输入参赛学校数,再输入男子组数和女子组数;

2)然后进入总目录;

3)输入:

1输入成绩;

4)输入:

2统计各校总分;

5)输入:

3统计各校项目得分;

6)输入:

4按学校总分排序输出;

7)输入:

5按男团体总分排序输出;

8)输入:

6按女团体总分排序输出;

9)输入:

7按学校编号查询学校某个项目的成绩;

10)输入:

8按项目编号查询取得前三名或前五名的学校;

 

11)输入:

0退出;

 

2系统总框图和功能模块说明

2.1系统总框图

 

启动程序

 

录入学校数,男、女子组数

 

显示主目录

 

 

用户选择某命令,产生相应的操作

 

显示结果,用户选择返回主目录或退

 

退出程序

 

2.2功能模块说明

1)输入:

1输入成绩;···························输入某一项目的成绩

 

2)输入:

2统计各校总分;···········统计各校所有项目总分之和

3)输入:

3统计各校项目得分;·······输出各校各项目得分

4)输入:

4按学校总分排序输出;·······按照总分从大到小排序

5)输入:

5按男团体总分排序输出;····仅按照男子团体总分从大到小排序

 

 

6)输入:

6按女团体总分排序输出;····仅按照女子团体总分从大到小排序

7)输入:

7按学校编号查询学校某个项目的成绩;···输入学校编号及项目编号可查询该校的该项

 

目成绩

8)输入:

8按项目编号查询取得前三名或前五名的学校;···输入项目编号可查询该项目获得名次

 

的学校

9)输入:

0退出;······退出系统

 

3系统设计

3.1主要结构体

菜单号choo

学校:

num

项目:

ab

男团、de

女团、ke

3.2主要功能函数

voidexit0()

 

voidinput()

 

voideach()

 

voidbiaohao()

voidzongfen()

 

voidnanzong()

 

voidnvzong()

voidxuexiao()

 

voidxiangmu()

voidmain()

 

3.3关键函数的流程图

 

voidexit0()voidinput()

 

voideach()voidbiaohao()

 

voidzongfen()voidnanzong()voidnvzong()

 

voidxuexiao()voidxiangmu()voidmain()

 

4系统调试

<1>开始界面,分别输入3、7、3.

 

输入1后显示

 

输入2后显示

 

输入3后显示

 

输入4后显示

 

输入5后显示

 

输入6后显示

 

输入7后显示

 

输入8后显示

 

输入9》》》》退出

 

5总结

 

本次课程设计检验了我的实践能力,感觉自己还有许多东西要学习,并不仅限于课本上的知识,实践才是真理,在学习中实践,实践中去学习。

学习的路很长。

再有要多问,几个人共同讨论会有意想不到的效果

 

6源程序清单

#include

#include

inta,b,c,d,i,j;

structnode

{

intnum;

};

structnode*f[22];

voidexit0()

{

FILE*fp;

intk;

alp:

if((fp=fopen("e:

\\sore.txt","w"))==NULL)

{

printf("createrror\n");

printf("1*****tryagain\n");

printf("2*****tuichu\n");

printf("3*****returnmenu\n");//

回到主菜单

//

 

alj:

scanf("%d",&k);

if(k==1)

gotoalp;

elseif(k==2)

exit(0);

elseif(k==3)

return;

else

{

printf("输入错误,请重新输入:

");

gotoalj;

}

}printf(fp,"\n\n");

fprintf(fp,"*运动会分数统计表*\n\n\n");

printf(fp,"*项目代号*");

for(i=1;i<=c+d;i++)

printf(fp,"%5d",i);

printf(fp,"");

printf(fp,"\n*学校代号*");

for(i=1;i<=a;i++)

{

printf(fp,"%10d",i);

for(b=1;b<=c+d;b++)

{

printf(fp,"%5d",f[i][b].num);

}

printf(fp,"\n");

}

printf(fp,"\n\n");

printf(fp,"the%dschoolnumbers\n\n",a);/*注:

本次运动会有%d个学校参赛*/

printf(fp,"1~%d组是男子组,%d~%d组是女子组\n",c,c+1,c+d);/*其中1~%d组是男子组,

~%d组是女子组*/

printf("\n*比赛成绩已保存到当前路径下的sore.txt文件中*\n\n");/*比赛成绩已保存到当前

路径下的"sore.txt"文件中*/

 

%d

fclose(fp);

exit

(1);

}

/*主菜单*/

intchoose()

{

intchoo;

printf("\n\n1******printf("2******printf("3******printf("4******

输入成绩\n");

统计各学校的总分\n");

统计各学校各项目的得分

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

 

\n");

 

printf("5******

按男团体总分排序输出

\n");

printf("6******

按女团体总分排序输出

\n");

printf("7******

按学校编号查询学校某个项目的成绩

\n");

printf("8******

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

\n");

printf("9******

退出\n\n");

printf("请选择:

");

scanf("%d",&choo);

return(choo-1);

}

/*输入信息*/

voidinput()

{

intab,ac,ae,af,g=1,get[5]={0,0,0,0,0};

printf("\n请输入项目代号:

");

ale:

scanf("%d",&ab);

if(ab>c+d||ab<1)

{

printf("\n此项目代号不存在,重新输入:

\n");

gotoale;

}

ae=0;

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

{

if(f[i][ab].num!

=0)

{

ae=1;

break;

}

}

if(ae==1)

{

al2:

printf("\n此项目成绩已被录入过,是否要重新录入:

\n");//此项目成绩曾经已被录入过,

是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入)//

printf("1++++是\n");//(若重新录入,以前的该项目成绩将被删除)//

printf("2++++否\n");//不要,待查证后再录入//

scanf("%d",&af);

if(af==2)

{

printf("已取消录入!

\n");

return;

}

elseif(af==1)

{

for(i=1;i<=a;i++)

{

 

if(f[i][ab].num!

=0)

{

f[i][0].num=f[i][0].num-f[i][ab].num;

if(ab<=c)

f[i][c+d+1].num=f[i][c+d+1].num-f[i][ab].num;

else

f[i][c+d+2].num=f[i][c+d+2].num-f[i][ab].num;

}

f[i][ab].num=0;

}

}

else

gotoal2;

}

al:

printf("\nprintf("3-------printf("5-------

此项目是以前几名为胜出者:

以前三名\n");

以前五名\n");

\n");//

选择得分标准

//

scanf("%d",&ac);

if(ac==3)

{

 

printf("请按照第一、第二、第三的名次依次输入获胜学校代号:

");

af=5;

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

{

alq:

scanf("%d",&ae);

if(ae>a||ae<1)

{

printf("%d学校代号不存在,重新输入第%d名的学校代号:

",ae,g);

gotoalq;

}

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

{

if(ae==get[b])

{

 

printf("同一个学校不能在同一项目中有两个名次

gotoalq;

}

else

get[b]=ae;

}

f[ae][0].num=f[ae][0].num+af;

f[ae][ab].num=af;

if(ab<=c)

 

请重新输入第

 

%d名的学校代号:

 

",g);

 

f[ae][c+d+1].num=f[ae][c+d+1].num+af;

else

f[ae][c+d+2].num=f[ae][c+d+2].num+af;

if(af>3)

af=af-2;

else

af--;

g++;

}

}

elseif(ac==5)

{

printf("请按照第一、第二、第三、第四、第五的名次依次输入获胜学校代号:

");

af=7;

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

{

alw:

scanf("%d",&ae);

if(ae>a||ae<1)

{

printf("%d学校代号不存在,重新输入第%d名的学校代号:

",ae,g);gotoalw;

}

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

{

if(ae==get[b])

{

printf("同一个学校不能在同一项目中有两个名次

gotoalw;

}

else

get[b]=ae;

}

f[ae][0].num=f[ae][0].num+af;

f[ae][ab].num=af;

if(ab<=c)

f[ae][c+d+1].num=f[ae][c+d+1].num+af;

else

f[ae][c+d+2].num=f[ae][c+d+2].num+af;

if(af>3)

af=af-2;

else

af--;

g++;

}

}

 

请重新输入第

 

%d名的学校代号:

 

",g);

 

else

gotoal;

printf("输入完成!

\n");

}

 

/*学校成绩*/

voideach()

{

printf("\n学校代号:

团体总成绩\n");

for(i=1;i<=a;i++)

{

printf("%d:

%d\n",i,f[i][0].num);

}

}

 

/*各项目成绩*/

voidbiaohao()

{

printf("\n项目代号:

");

for(i=1;i<=c+d;i++)

{

if(i>9)

printf("%d",i);

else

printf("%5d",i);

}

printf("\n学校代号:

\n");

for(i=1;i<=a;i++)

{

printf("%7d",i);

for(b=1;b<=c+d;b++)

{

if(f[i][b].num>9)

printf("%6d",f[i][b].num);

else

printf("%7d",f[i][b].num);

}

printf("\n");

}

}

 

/*按学校总分排序输出*/

voidzongfen()

{

structnod

 

{

intke;

intnum;

};

intha;

structnod*de;

de=(structnod*)malloc(sizeof(structnod)*a+1);

printf("\n学校代号:

团体总成绩\n");

for(i=1;i<=a;i++)

{

de[i].ke=i;

de[i].num=f[i][0].num;

}

for(i=1;i<=a;i++)

{

for(b=i;b<=a;b++)

{

if(de[b].num>de[i].num)

{

ha=de[b].ke;

de[b].ke=de[i].ke;

de[i].ke=ha;

ha=de[b].num;

de[b].num=de[i].num;

de[i].num=ha;

}

}

}

for(i=1;i<=a;i++)

{

printf("%d:

%d\n",de[i].ke,de[i].num);

}

}

 

/*按男子团队总分排序*/

voidnanzong()

{

structnod

{

intke;

intnum;

};

intha;

structnod*de;

de=(structnod*)malloc(sizeof(structnod)*a+1);

 

printf("\n学校代号:

男子团体总成绩\n");

for(i=1;i<=a;i++)

{

de[i].ke=i;

de[i].num=f[i][c+d+1].num;

}

for(i=1;i<=a;i++)

{

for(b=i;b<=a;b++)

{

if(de[b].num>de[i].num)

{

ha=de[b].ke;

de[b].ke=de[i].ke;

de[i].ke=ha;

ha=de[b].num;

de[b].num=de[i].num;

de[i].num=ha;

}

}

}

for(i=1;i<=a;i++)

{

printf("%d:

%d\n",de[i].ke,de[i].num);

}

}

 

/*按女子团队总分排序*/

voidnvzong()

{

structnod

{

intke;

intnum;

};

intha;

structnod*de;

de=(structnod*)malloc(sizeof(structnod)*a+1);

printf("\n学校代号:

女子团体总成绩\n");

for(i=1;i<=a;i++)

{

de[i].ke=i;

de[i].num=f[i][c+d+2].num;

}

for(i=1;i<=a;i++)

 

{

for(b=i;b<=a;b++)

{

if(de[b].num>de[i].num)

{

ha=de[b].ke;

de[b].ke=de[i].ke;

de[i].ke=ha;

ha=de[b].num;

de[b].num=de[i].num;

de[i].num=ha;

}

}

}

for(i=1;i<=a;i++)

{

printf("%d:

%d\n",de[i].ke,de[i].num);

}

}

 

/*按学校编号查询学校某个项目的成绩*/

voidxuexiao()

{

intdr,dt;

printf("\n要查询的学校代号:

");

aly:

scanf("%d",&dr);

if(dr>a||dr<1)

{

printf("学校代号不存在,重新输入:

");

gotoaly;

}

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

");

alo:

scanf("%d",&dt);

if(dt>c+d||dt<1)

{

printf("

项目代号不存在

重新输入:

");

gotoalo;

}

printf("

%d

所学校的第

%d

项目成绩为

%d\n",dr,dt,f[dr][dt].num);

}

 

/*按项目编号查询取得前三或前五名的学校*/

voidxiangmu()

{

intge,sedy=0;

 

printf("\n要查询的项目代号:

");

all:

scanf("%d",&ge);

if(ge>c+d||ge<1)

{

printf("没有此项目代号,重新输入:

\n");

gotoall;

}

for(i=1;i<=a;i++)

{

if(f[i][ge].num==2)

sedy=1;

}

if(sedy==0)

{

printf("此项目没有录入成绩\n");

return;

}

for(i=1;i<=a;i++)

{

if(f[i][ge].num==7)

{

printf("此项目取前5名学校成绩高到低依次为:

\n");

break;

}

}

if(i==a+1)

printf("此项目取前3名学校成绩高到低依次为:

\n");

for(i=7;i>0;i--)

{

for(b=1;b<=a;b++)

{

if(f[b][ge].num==i)

printf("%d号学校\n",b);

}

}

}

 

void(*g[])()={input,each,biaohao,zongfen,nanzong,nvzong,xuexiao,xiangmu,exit0};

 

/*主函数*/

voidmain()

{

intchoos;

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

printf("共有多少个学校参赛:

");

 

scanf("%d",&a);

while(a<=0||a>20)

{

if

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

当前位置:首页 > 初中教育 > 数学

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

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