运动会成绩管理系统课程设计.docx
- 文档编号:1985615
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:20
- 大小:73.41KB
运动会成绩管理系统课程设计.docx
《运动会成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《运动会成绩管理系统课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
运动会成绩管理系统课程设计
一概述
1.问题描述
1.数据类型结构体数组的定义如下:
structnode
{
intnum;
};
structnode*f[22];/*指针数组变量名*/
voidexit0()//输出到文件函数
voidinput()//输入函数
void(*g[])()={input,each,biaohao,zongfen,nanzong,nvzong,
xuexiao,xiangmu,exit0}
2.结构体的有关算法
结构体把一组变量从逻辑上和内存位置上组合起来。
结构体变量的长度是各成员变量的长度之和。
与数组不同,数组要求所有元素的数据类型是一致的,而结构体则没有这个要求,它可以依编程者的需要,把数据类型截然不同的一些元素组成一个整体,而每个元素就称为这个结构体的一个成员。
2.系统分析
运动会成绩管理系统,涉及到比赛项目成绩的录入,某个学院在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除,以及某个学院所有获得成绩的得分报表以及团体成绩的得分报表。
其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;自己扩展的功能是“某个学院在某个项目中获得成绩的查询,某个学院在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学院以及运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。
二总体方案设计
1.整体设计思路
系统共分五个子系统:
输入系统,修改系统,排序系统,查询系统,保存系统。
在相应的系统内可完成相应的功能。
各模块相对独立,每个模块用一个大型的函数来处理数据。
本程序包括5个模块:
a.主程序模块:
Voidmain()
{Do
{接受命令;
处理命令;
}while(“命令”=退出);
}
b.信息输入模块——实现信息的输入;
c.信息查询模块——实现信息的查询;
d.信息排序查询模块——实现各种的有序输出;
e.信息存盘模块——实现输出到文件。
各模块的关系如下:
主程序模块——信息输入模块——信息查询——信息排序查询模块—信息存盘模块.
2.算法的整体思路
本系统涉及到比赛项目成绩的录入,某个学院在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除,以及某个学院所有获得成绩的得分报表以及团体成绩的得分报表。
主要采用数组,指针,结构体类型。
各个模块相对独立,退出一个子系统后可以进入其他系统。
算法简单易行,时间复杂度大部分都是O(l)级的,运行速度快。
3.工作内容
系统设计,详细设计,编写代码,结果测试与分析。
4.关键问题
对于获得名次的同学在存储其成绩的时候采用了链表的结构,有利于数据的存储与查找。
程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。
三详细设计
1.输入系统
功能:
1.按输入方式输入后按回车键就可以输入信息,并且返回“输入完成!
”提示
2.但若输入的学院代码,项目代码与已有记录雷同或不存在,则不能输入。
3若同一个项目中输入的学院代码雷同,则不能输入,并且返回“同一个学院不能在同一项目中有两个名次,请重新输入第%d名的学院代号!
!
!
”的提示信息。
2.修改系统
功能:
若发现输入的数据有误可以重新输入项目代码,以前的该项目成绩将被删除。
3.排序系统
4.查询系统
5.程序流程图
四程序的调试与运行结果说明
1.调试步骤
附录A原程序清单
#include
#include
#include
#include
#include
#include
intn,b,m,w,i,j;
structnode
{
intnum;
};
structnode*f[22];
voidexit0()
{
FILE*fp;
intk;
alp:
if((fp=fopen("sore.txt","w"))==NULL)
{
printf("创建文件失败\n");
printf("1*****重试\n");
printf("2*****强制退出(数据将不会保存到文件)\n");
printf("3*****回到主菜单\n");
alj:
scanf("%d",&k);
if(k==1)
gotoalp;
elseif(k==2)
exit(0);
elseif(k==3)
return;
else
{
printf("输入错误,请重新输入:
");
gotoalj;
}
}
fprintf(fp,"\n\n");/*fprintf:
传送格式化输出到一个文件中*/
fprintf(fp,"运动会分数统计表\n\n\n");/*用法:
intfprintf(FILE*stream,char*format[,argument,...]);*/
fprintf(fp,"项目代号");
for(i=1;i<=m+w;i++)
fprintf(fp,"%5d",i);
fprintf(fp,"");
fprintf(fp,"\n学院代号\n");
for(i=1;i<=n;i++)
{
fprintf(fp,"%10d",i);
for(b=1;b<=m+w;b++)
{
fprintf(fp,"%5d",f[i][b].num);
}
fprintf(fp,"\n");
}
fprintf(fp,"\n\n");
fprintf(fp,"注:
本次运动会有%d个学院参赛\n\n",n);
fprintf(fp,"其中1~%d组是男子组,%d~%d组是女子组\n",m,m+1,m+w);
printf("\n比赛成绩已保存到当前路径下的sore.txt文件中\n\n");
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>m+w||ab<1)
{
printf("\n此项目代号不存在,重新输入\n");
gotoale;
}
ae=0;
for(i=0;i<=n;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<=n;i++)
{
if(f[i][ab].num!
=0)
{
f[i][0].num=f[i][0].num-f[i][ab].num;
if(ab<=m)
f[i][m+w+1].num=f[i][m+w+1].num-f[i][ab].num;
else
f[i][m+w+2].num=f[i][m+w+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>n||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<=m)
f[ae][m+w+1].num=f[ae][m+w+1].num+af;
else
f[ae][m+w+2].num=f[ae][m+w+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>n||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]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 成绩管理系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)