学生运动会成绩管理系统_第1页
已阅读1页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

书目

一、系统开发的背景.............................................1

二、系统分析与设计.............................................1

(一)系统功能要求.............................................1

(二)系统模块结构设计........................................1

(一)统计各系别总分:VOIDFUNCT1().....................................3

(二)按系别编号排序:VOIDFUNCT2().....................................4

(三)按系别总分排序:VOIDFUNCT3()............................6

(四)按男团体总分排序:VOIDFUNCT4O..................................7

(五)按女团体总分排序:VOIDFUNCT5()..........................9

(六)按系别编号查询某个项目状况:VOIDFUNCT6()..................11

(七)按项目编号直询取得名次的系别:VOIDFUNCT7O.................13

(八)退出系统:VOIDFUNCTOO...........................................14

四、系统测试.................................................15

(―)测试VOIDHUANYINGNlO函数,VOIDINPUT()函数................15

(二)测试VOIDMULIJ()函数....................................15

(三)测试VOIDFUNCT1()函数....................................15

(四)测试VOIDFUNCT20函数...................................15

(五)测试VOIDFUNCT3O函数....................................15

(六)测试VOIDFUNCT4O函数....................................15

(•七)测试VOIDFUNCT5()函数....................................15

(八)测试VOIDFUNCT6()函数.......................................15

(九)测试VOIDFUNCT7()函数.......................................15

(十)测试VOIDFUNCTO()函数.......................................16

五、总结.........................................................16

六、附件(代码)................................................16

学生运动会成果管理系统

一、系统开发的背景

为了学校便利管理学生运动会成果,查询各系总分、各项目排名、以

及各系获奖状况,因此我们用所学的学问设计了一个学生运动会管理系统,

以此便利学校对运动会状况的了解及查询。

二、系统分析及设计

(一)系统功能要求

该系统可以实现:1)可以输入各个项目的前三名的成果;2)能统计

各系别总分;3)可以按系别编号、系别总分、男女团体总分排序输出;4)

可以按系别编号查询某系某个项目的状况;5)可以按项目编号查询取得前

三名的系别。

(-)系统模块结构设计

概要设计:

1结构体

运动项目

{项目编号;名次;};

系别

{系别编号:项目:团体总分:男团体总分:女团体总分;}:

2主程序(main)

包括登陆欢迎程序,分数录入程序,查询程序,退出程序

通过对系统功能的分析,学生运动会成果管理系统功能如图1所示。

图1学生运动会成果管理系统功能图

通过上图的功能分析,把整个系统划分为8个模块:

1、统计各系别总分,该模块主要实现:统计各系别运动会成果

总分,借助函数voidfunctl()来实现;

2、按系别编号排序,该模块主要实现:依据各系别编号从小到大

进行排序,借助函数voidfunct2()来实现;

3、按系别总分排序,该模块主要实现:依据各个系别运动会成果

总分从大到小法行排序,借助函数voidfunct3()来实现;

4、按男团体总分排序,该模块主要实现:依据各系别男团体获得

的总分从大到小进行排序,借助函数voidfunct4()来实现;

5、按女团体总分排序,该模块主要实现:依据各系别女团体获

得的总分从大到小进行排序,借助函数voidfunct5()来实现;

6、按系别编号查询某个项目状况,该模块主要实现:依据系别

编号查询该系别在某个项目中所获得的成果,借助函数voidfunct60

来实现;

7、按项目编号查询取得名次的系别,该模块主要实现:依据项

目编号杳询取得该顼目前二名的系别,借助函数voidfunct7()来实

现;

8、退出系统,该模块主要实现:学生运动会成果管理系统的平

安退出,借助函数voidfunctOO来实现;

三、系统的设计及实现

(一)统计各系别总分:voidfunctl()

分析:依据各系所获奖项的级别,依据每个一等奖加5分,每个二等

奖加3分,每个三等奖加2分,统计出各系所获得的总分。流程图如图2

所示。

(妇*)

总分=一等奖X

L।-A/v、%、/c।

/狒总/

(4±由)

图2:voidfunctl。流程图

该模块的详细代码如下所示。

voidfunctl()〃统计各系别总分

{inti,q;

printf(z,**********统计各系别总分**********\ri〃);

printf(,z**系别编号**\1\1**总分**\n〃);

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

printf(zz\t%d\t\t\L%d\n〃,dep[i].departmentnum,dep[i].total)

T

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf&q);

while(q==0||q-=D

if(q==0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

(二)按系别编号排序:voidfunct2()

分析:为了运用户更好的查询各系之间的竞赛成果状况,将其依

据系别编号进行排序。流程图如图3所示。

图3:voidfunct2()流程图

该模块的详细代码如下所示。

voidfunct2()〃按系别编号排序

structdepartmentdepl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;i<N-j-l;i++)

if(dep[i].departmentnum>dep[i+1].departmentnum)

depl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=depl;

printf(z/**********按系别编号排序**********\n");

printf(,z**系别编号**\t\t**总分**\n〃);

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

printf(〃\t%d\t\t\t\t/d\n〃,dep[i].departmentnum,dep[i].total);

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:");

scant("%d〃,&q);

while(q==0||q==l)

if(q==0)funct0();

if(q==l)xunhuanO;

else

printf(〃输入错误(只能是。或1),请重新输入:〃);

(三)按系别总分排序:voidfunct3()

分析:为了运用户更好的查询各系之间的竞赛成果排名状况,将

其依据所获成果总分进行廿序。流产图如图4所示。

图4:(4.)t3()流程图

*

该模块的详细代码女{dep[i].totakde

voidfunct3()p[i+l].total3分排序

structdepartment广一1•♦----------------

.)../输出按总/

mt1,j,q;//

i~~

for(j=0;j<N-l;j++)(人士)

for(i=0;i<N-j-l;i++)

if(dep[i].total<dep[i+l].total)

depl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=depl;

printf(,z**********按系别总分排序**********\ri");

printfC**系别编号**\1\1**总分**\n〃);

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

printf(〃\t96d\t\t\t\t%d\n〃,dep[i].departmentnum,dep[i].total);

printf(〃\n");printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf&q);

while(q==0||q-=D

if(q==0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

(四)按男团体总分排序:voidfunct4()

分析:依据各系男团体项目所获得的总分进行排序并按所获得的

总分从大到小输出。流程图如图5所示。

图5:voidfunct4()流程图

该模块的详细代码如下所示。

voidfunct4()〃按男团体总分排序

structdepartmentdepl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;i<N-j-l;i++)

if(dep[i].boytotaKdep[i+1].boytotal)

dcpl=dep[i];

dep[i]=depEi+l];

dep[i+l]=depl;

printf(/z**********按男团体总分排序**********\n");

printf(,?**系别编号**\t\t**总分**\n〃);

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

printf(〃\t%d\t\t\t\t/d\n〃,dep[i].departmentnum,dep[i].boytotal);

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:");

scant("%d〃,&q);

while(q==0||q==l)

if(q==0)funct0();

if(q==l)xunhuanO;

else

printf(〃输入错误(只能是。或1),请重新输入:〃);

(五)按女团体总分排序:voidfunct5()

分析:依据各系女团体项目所获得的总分进行排序并按所获得的

总分从大到小输出。流程图如图6所示。

(…)

dep[i].gir1total<dep[i+l].gi

rltotaldepl=dep[i];

/输出按女团体/

/士,

图6:voidfunct5()流程图

该模块的详细代码如下所示。

voidfunct5()〃按女团体总分排序

structdepartmentdepl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;i<N-j-l;i++)

if(dep[i].girltotal<dep[i+l].girltotal)

depl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=depl;

printf(,z**********按女团体总分排序**********\ri〃);

printf(,z**系别编号**\t\t**总分**\n〃);

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

,,,,

printf(\t%d\t\t\r\t%d\nJdep[i].departmentnum,dep[i].girltotal)

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf&q);

while(q=0|1q=l)

if(q=0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

(六)按系别编号查询某个项目状况:voidfunct6()

分析:首先输入所要查询的系别编号以及项目编号,最终输出

该系别在该项目中所获得的名次。流程图如图7所示。

田、仁匚讦行木JAiM万

必、匚匚曲木二合1的不

利用循环查找该

图7:voidfunct6()流程图

该模块的详细代码如下所示。

voidfunct6()〃按系别编号查询系别某个项目状况

inti,n,m,q;

printf(**********按系别编号查询系别某个项目状况

**********\n〃);

printf(〃*******请输入所要查询的系别编号:〃);

scanf&n);

while(n!=l&&n!=2)

if(n!=l&&n!=2)

printf(〃输入错误,系别编号只能是0或1,请重新输入〃);

printf(〃*******请输入所要查询的项目编号:〃);

scanf(〃%d〃,&m);

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

if(n==dep[i].departmcntnum)

printf(〃系别编号:%d项目编

号:%d\nz,,n,m);

if(dep[i].mat[m].rank[0]==l)

printf(〃第一名(获得)〃);

if(dep[i].mat[m].rank[l]==l)

printf(〃其次名(获得)〃);

if(dep[i].mat[in].rank[2]==l)

printf(〃第三名(获得)〃);

else

printf(〃本系该项目未进入前三名〃);

printf(〃'\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目;2:返回上一级。\n〃);

printf(〃****请选择:〃);

scanf(z/%d/z,&q);

while(q==0||q==l)

if(q==0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

(七)按项目编号查询取得名次的系别:voidfunct7()

分析:首先输入所要查询的项目编号,通过查找后,输出获得

该项目前二名的系别。流程图如图8所示。

图8:voidfunct7()流程图

该模块的详细代码如下所示。

voidfunct7()〃按项目编号查询取得名次的系别

inti,t,q;

printf(〃**********按项目编号查询取得名次的系别

**********\n");

printf(〃*****请输入所要查询的项目编号:〃);

scanf(线d〃,&t);

printf(〃项目编号:%d\n",t);

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

if(dep[i].rank[O]==l)

printfC获得第一名的系别编号是:%d

\n〃,dep[i].departmentnum);

if(dep[i].mat[t-l].rank[l]==l)

printtT获得其次名的系别编号是:%d

\n〃,dep[i].departmentnum);

if(dep[i].mat[t-l].rank[2]==1)

printfC获得第三名的系别编号是:%d

\n〃,dep[i].departmentnum);

printf(/,\nz,);printf(〃\n〃);

printf(〃****0:退出;1:返回书目;2:返回上一级。\n〃);

printf(〃****请选择:");

scanf("%d",&q);

while(q==0||q==l)

if(q==0)functOO;

if(q=l)xunhuanO;

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

(八)退出系统:voidfunctOO

分析:当用户输入退出指令时,则输出结束语。流程图如图9所示。

图9:voidfunctOO流程图

该模块的详细代码如下所示。

voidfunctOO〃退出系统

printf(〃\n\t\t***********感谢运用1***********\口〃);

exit(0);

四、系统测试

(一)测试voidhuanyingni()函数,voidinput。函数

图10:测试voidhuanyingni()函数,voidinput。函数

(―)测试voidmulti。函数

图11:测试voidmulu()函数

(三)测试voidfunctlO函数

图12:测试voidfunctlO函数

(四)测试voidfunct2()函数

图13:测试voidfunct2()函数

(五)测试voidfunct3()函数

图14:测试voidfunct3()函数

(六)测试voidfunct4()函数

图15:测试voidfunct4()函数

(七)测试voidfunct5()函数

图16:测试voidfunct5()函数

(八)测试voidfunct6()函数

图17:测试voidfunct6()函数

(九)测试voidfunct7()函数

图18:测试voidfunct7()函数

(十)测试voidfunctO()函数

图19:测试voidfunctO()函数

五、总结

学生运动会成果管理系统完成了:1)可以输入各个项目的前三名的成

果;2)能统计各系别总分;3)可以按系别编号、系别总分、男女团体总

分排序输出;4)可以按系别编号查询某系某个项目的状况;5)可以按项

目编号查询取得前三名的系别。

系统有以下不足:1、设计程序时为了使程序简洁化,问题考虑的有些

不全面;2、由于结构体运用不太熟,所以结构体不能初始化不知道,导致

运动会管理系统设计耗费不必要的时间;3、在编写程序时,有的函数调用

功能太片面化,使得一些功能都不能实现;4、在程序运行阶段,没有突出

详细运算方法等而是只是显示结果。

通过本次课程设计,我驾驭了程序设计的模块化思路,并真正理解了

函数调用的可运用性,也了解了结构体的运用方法及范围;对C语言的看

法有了肯定的改观,也消退了惧怕心理,也学会了设计程序时应当使其功

能一个一个的逐步实现并测试正确性,而不是无条理的胡写尤其是大程序

更应当有清楚的条理;同时也理解了流程图的重要意义。

六、附件(代码)

#include<stdio.h>

#include<process.h>

#defineN3〃系别个数

#definebin5〃男团体个数

#definegm3〃女团体个数

voidxuanzeO;

voidxunhuanO;

structmatch〃项目

intmatchnum;

intrank[3];

}mat[bm+gm];

structdepartment〃系别

intdepartmentnum;

structmatchmat[bm+gm];

inttotal;

intboytotal;

intgirltotal;

}dep[N];

voidhuanyingni()/*起先界面,欢迎运用*/

printfC\n\n工学系2019级计算机科学及技术(网络工程

方向)班韩历英\n\n\n〃);

pri•n上t2f?/(〃、\上t*,*.*「八八八八八八八八八八八八八八八八八八八八八八八八八

]***\n\n〃);

printff欢迎运用运动会分数统计系统

\n\n〃);

printf(〃\t***................................................

-***\n\n〃);

voidinput()〃输入成果

inti,j,k;

for(i=0;i<N;i++)〃初始化分数

dep[i].total=0;

dep[i].boytotal=0;

dep[i].girltotal=0;

for(k=0;k<bm+gm;k++)

dep[i].mat[k].rank[0]=0;

dep[i].mat[k].rank[l]=0;

dep[i].mat[k].rank[2]=0;

dep[i].mat[k].matchnum=k+l;

printfC@@@@@----输入成果-----;

printf(〃

〜〜〜\n〃).

printf(〃|***输入说明:

I\n〃);

printfCI1.系别编号为1—刎;项目编号为1—%d(l-%d

为男子项目,%d-%d为女子项目).|\n”,N,bm+gm,bm,bm+1,bm+gm);

printfC|2.成果只能是‘O'或’1'('O'表示没获得该项

目的该名次,l\n|T'表示获得了该项目的该名次.以

'Tab'键前进。)l\n〃,N);

printfC

〜〜、\〃\

\n);

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

printf(〃######请输入系别编号:〃);

scanf(〃96d〃,&dep[i].departmentnum);

while(dep[i].departmentnum<0||dep[i].departmentnum>N)

if(dep[i].departmentnum<01dep[i].departmentnuni>N)

printf(〃输入错误(只能是Ifd)请重新输入:〃,N);

printf(〃项目编号〃);

for(k=0;k<bm+gm;k++)

printf(z/%d〃,dep[i].mat[k].matchnum);

printf(〃\n〃);

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

printf(〃第(%d)名:〃,j+1);

for(k=0;k<bm+gm;k++)

scanf(,z%d〃,&dep[i].mat[k].rank[j]);

for(k=0;k<bm+gm;k++)

do

while(dep[i].mat[k].rank[j]!=0&&dep[i].mat[k].rank[j]!=1)

if(dep[i].mat[k].rank[j]!=0&&dep[i].mat[k].rank[j]!=1)

{printf(〃输入错误,请重新输入,成果只能是‘O'或

}while(dep[i].mat[k].rank[j]!=0&&dep[i].mat[k].rank[j]!=l&&d

ep[i].melt[k].rank.j]!=2);

voidtotalJisuanO

inti,k,b;

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

for(k=0,b=0;k<bm+gm;k++)

b=dep[i].mat[k].rank[0]*5+dep[i].mat[k].rank[l]*3+dep[i].mat[

k].rank[2]*2;

dep[i].total=dep[i].total+b;

if(k<bm)

dep[i].boytotal=dep[i].boytotal+b;

if(k>=bm)

dep[i].girltotal=dep[i].girltotal+b;

voidmulu(){

printf(,z\n\n**系统书目**\n〃);

〃书目

printf("\t\t************************************\n");

printf1.统计各系别总分*\t\n〃);

printf(〃\t\t*2.按系别编号排序输出*\t\n〃);

printf(,z\t\t*3.按系别总分排序输出*\t\n〃);

printfC\t\t*4.按男团体总分排序输出*\t

printfC\t\t*5.按女团体总分排序输出*\t

printf(〃\t\t*6.按系别编号查询系别某个项目状况*\t\n〃);

printf(〃\t\t*7.按项目编号查询取得名次的系别*\t\n〃);

printf(,z\t\t*0.退出*\t\n〃);

printf(〃\t\t************************************\n〃);

voidfunctOO〃退出系统

printf(〃\n\t\t***********感谢运用1***********\n〃);

exit(0);

voidfunctl()〃统计各系别总分

{inti,q;

printf(,z**********统计各系别总分**********\ri〃);

printf(,z**系别编号**\1:\1\1\1**总分**\n〃);

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

printf(,z\t%d\t\t\L\t%d\nz,,dep[i].departmentnum,dcp[i].total);

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf(〃%d〃,&q);

while(q-O||q==D

if(q==O)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

voidfunct2()〃按系别编号排序

structdepartmentschl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;;i++)

if(dep[i].departmentnum>dep[i+1].departmentnum)

schl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=schl;

printf(/z**********按系别编号排序**********\n〃);

printfC**系别编号*总分**\\);

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

printf(z,\t%d\t\t\L\t%d\nz,,dep[i].departmentnum,dep[i].total);

printf(〃\n〃);printf(〃\n");

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf&q);

while(q==0||q==D

if(q=0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

voidfunct3()〃按系别总分排序

structdepartmentschl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;KN-j-l;i++)

if(dep[i].total<dep[i+l].total)

schl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=schl;

printf(,z**********按系别总分排序**********\n");

printf(z/**系别编号**\t\t\t\t**总分**\n〃);

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

printf(/,\t%d\t\t\u\t%d\n/,,dep[i].departmentnum,dep[i].total);

printf(〃\n");printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:〃);

scanf("%d〃,&q);

while(q==O||q==l)

if(q==0)functOO;

if(q==l)xunhuan();

else

printf(〃输入错误(只能是()或1),请重新输入:〃);

voidfunct4()〃按男团体总分排序

structdepartmentschl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;i<N-j-l;i++)

if(dep[i].boytotaKdep[i+1].boytotal)

schl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=schl;

printf("**********按男团体总分排序**********\n");

printfC**系别编号**、!;、!;**总分**\n〃);

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

printf(〃\t%d\t\t\t\t/d\n〃,dep[i].departmentnum,dep[i].boytotal);

printf(〃\n〃);printf(〃\n〃);

printf(〃****0:退出;1:返回书目。\n〃);

printf(〃****请选择:");

scant("%d〃,&q);

while(q==0||q==l)

if(q==0)funct0();

if(q==l)xunhuanO;

else

printf(〃输入错误(只能是。或1),请重新输入:〃);

voidfunct5()〃按女团体总分排序

structdepartmentschl;

inti,j,q;

for(j=0;j<N-l;j++)

for(i=0;i<N-j-l;i++)

if(dep[i].girltotal<dep[i+l].girltotal)

schl=dep[i];

dep[i]=dep[i+l];

dep[i+l]=schl;

printf(zz**********按女团体总分排序**********\n");

printf(/z**系别编号**总分**\n〃);

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

printf(z,\t%d\t\t\r\t%d\nz,,dep[i].departmentnum,dep[i].girltotal)

printf(〃\n〃);printf(,,\n,/);

printf("****0:退出;1:返回书目。\n");

printf(〃****请选择:");

scanf("%d〃,&q);

while(q==0|q==l)

if(q==0)functOO;

if(q==l)xunhuanO;

else

printf(〃输入错误(只能是0或1),请重新输入:〃);

voidfunct60〃按系别编号查询系别某个项目状况

inti,n,m,q;

printfC**********按系别编号查询系别某个项目状况

**********\n〃);

printf(〃*******请输入所要查询的系别编号:〃);

scanf(〃%d〃,&n):

while(n!=l&&n!=2)

if(n!=l&&n!=2)

printf(〃输入错误,系别编号只能是。或1,请重新输入〃);

printf(〃*******请输入所要查询的项目编号:");

scanf(〃%d〃,&m);

for(i=0;i<N;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论