C语言课程设计之校运动会管理系统的设计与实现.docx
- 文档编号:2902080
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:39
- 大小:432.79KB
C语言课程设计之校运动会管理系统的设计与实现.docx
《C语言课程设计之校运动会管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《C语言课程设计之校运动会管理系统的设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。
C语言课程设计之校运动会管理系统的设计与实现
C语言课程设计之校运动会管理系统的设计与实现
————————————————————————————————作者:
————————————————————————————————日期:
一题目要求
课题:
校运动会管理系统的设计与实现
具体要求:
(1)信息初始化,依次输入:
N—参赛学校总数M—男子竞赛项目数W—女子竞赛项目总数
各项目名次取法有以下几种:
取前五名:
第一名得分7分,第二名得分5分,第三名得分3分,第四名2分,第五名得分1分。
取前三名:
第一名得分5分,第二名得分3分,第三名得分2分。
用户自定义:
各名次权值由用户定义。
(2)提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。
二需求分析
根据题目要求,将学校的信息和比赛项目等信息存放到指定的文件中,并能实现相关信息的浏览功能,故在程序中应提供输入,输出,显示,查找,排序等操作。
三总体设计
由需求分析可讲系统分为信息输入模块,比赛录入模块和查询模块三个模块,并追加一些辅助模块以增加程序的功能,方便使用。
四详细设计
1主函数
主要通过main()函数及choose()函数实现.
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);
}
图1主函数流程图
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();
}
}
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);
}
2成绩输入
当选择1时进行成绩的输入.实现的功能函数为input(),相关实现如下:
{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\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\n");
printf("3-------以前三名\n");
printf("5-------以前五名\n\n");
scanf("%d",&ac);
if(ac==3)
{
printf("\n请依次输入获胜学校代号:
");
af=5;
for(i=0;i<3;i++)
{
alq:
scanf("%d",&ae);
if(ae>a||ae<1)
{
printf("%d学校代号不存在,重新输入第%d名的学校代号\n",ae,g);
gotoalq;
}
for(b=0;b<5;b++)
{
if(ae==get[b])
{
printf("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号\n",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名的学校代号\n",ae,g);
gotoalw;
}
for(b=0;b<5;b++)
{
if(ae==get[b])
{
printf("同一个学校不能在同一项目中有两个名次,请重新输入第%d名的学校代号\n",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\n输入完成!
!
!
!
\n");
}
3成绩统计
当选择2时进行成绩的输入.实现的功能函数为each(),相关实现如下:
voideach()
{
printf("\n对应的格式为:
\n学校代号:
团体总成绩\n\n");
for(i=1;i<=a;i++)
{
printf("%2d:
%3d",i,f[i][0].num);
if(i%3==0)
printf("\n");
}
4按照各种方式输出
主要有按学校编号输出,按学校总分输出,按男团输出,按女团输出.相关实现分别如下:
voidbiaohao()
{
printf("\n项目代号");
for(i=1;i<=c+d;i++)
{
if(i>9)
printf("%4d",i);
else
printf("%5d",i);
}
printf("\n");
printf("学校代号\n");
for(i=1;i<=a;i++)
{
printf("%d",i);
for(b=1;b<=c+d;b++)
{
if(f[i][b].num>9)
printf("%4d",f[i][b].num);
else
printf("%5d",f[i][b].num);
}
printf("\n");
}
}
voidzongfen()
{
structnod
{
intke;
intnum;
};
intha;
structnod*de;
de=(structnod*)malloc(sizeof(structnod)*a+1);
printf("\n按学校编号排序输出\n\n");
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++)
{
prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 运动会 管理 系统 设计 实现