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

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

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

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

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

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

程序设计工程训练报告

 

运动会分数统计系统

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

姓名

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

专业班级

学号

指导教师

 

教务处制

1需求分析

1问题描述

运动会分数统计

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

比赛分成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关键函数的流程图

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~%d组是女子组*/

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

fclose(fp);

exit

(1);

}

/*主菜单*/

intchoose()

{

intchoo;

printf("\n\n1******输入成绩\n");

printf("2******统计各学校的总分\n");

printf("3******统计各学校各项目的得分\n");

printf("4******按学校总分排序输出\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("\n此项目是以前几名为胜出者:

\n");//选择得分标准//

printf("3-------以前三名\n");

printf("5-------以前五名\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("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号:

",g);

gotoalq;

}

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

}

}

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("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号:

",g);

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

}

}

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(a<=0)

{

printf("\n参赛学校个数不能是负数或零\n\n");

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

");

scanf("%d",&a);

}

if(a>20)

{

printf("\n参赛学校个数不能大于20\n\n");

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

");

scanf("%d",&a);

}

}

printf("有几个男子组:

");

scanf("%d",&c);

printf("有几个女子组:

");

scanf("%d",&d);

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

{

f[i]=(structnode*)malloc(sizeof(structnode)*(c+d+3));

for(j=0;j<=c+d+2;j++)

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

}

choos=choose();

while

(1)

{

while(choos<0||choos>8)

choos=choose();

(*g[choos])();

printf("\n");

choos=choose();

}

}

 

程序设计工程训练成绩评定标准表

明细项目

评分等级(含系数)

评分分值

实际得分

考勤

A

(1)

B(0.8)

C(0.5)

D(0.0)

10

工程项目规范

A

(1)

B(0.8)

C(0.5)

D(0.2)

10

工程训练报告

A

(1)

B(0.8)

C(0.5)

D(0.2)

30

设计作品质量

A

(1)

B(0.8)

C(0.5)

D(0.2)

45

材料收集情况

A

(1)

B(0.8)

C(0.5)

D(0.2)

5

综合评分

90-100

80-89

70-79

合格

60-69

不合格

0-59

该生成绩为:

,指导老师(签名):

评定日期:

年月日

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

当前位置:首页 > 工程科技 > 环境科学食品科学

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

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