运动会管理系统课程设计报告Word下载.docx
《运动会管理系统课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《运动会管理系统课程设计报告Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
在各个学校之间的比赛时,需要对运动会的信息进行整理,它涉及到的数据量之大,用单纯的手写记录已经不能满足用户的需求,利用运动会管理系统及时了解各个环节中信息的变更,有利于提高管理的效率。
本项目作为《c++课程设计》课程的训练项目提出,目的是为了提高同学们系统的开发,则提高大家的实践能力。
所以开发一个符合自身运动会实际情况的工作平台是十分必要的。
系统使用对象定为由太原科技大学,太原理工大学,山西大学,中北大学联合举办的校际运动会。
系统需要建立两个结构体学校和运动员。
学校应该包含学校名,学校代码,学校总分和学校排名等信息;
运动员则要包含姓名,性别,学校,比赛成绩,比赛名次和比赛成绩等信息。
系统就是要实现学校和运动员基本信息的输入和输出,还有查询,最后再生成报表。
3.2功能模块划分
根据题目的要求及系统功能可以将系统分为学校信息录入,学生信息录入,成绩录入,查询,显示数据,输出文件,显示排名七个模块。
各个模块基本介绍如下:
学校信息录入模块:
输入学校总数,对学校名字,代码,成绩,排名等信息进行初始化。
学生信息录入模块:
输入学生总数,对运动员姓名,性别,学校,成绩,排名,得分等信息进行计算。
成绩录入模块:
录入运动员比赛成绩由系统对运动员进行排名和积分。
查询模块:
用户可以选择运动员,学校,项目三种查询方式。
显示数据模块:
显示学校信息,运动员信息和得分规则。
输出文件模块:
将文件存储。
显示排名模块:
显示学校排名和运动员排名。
我主要负责查询,显示数据,输出文件,显示排名四个模块的相关内容,黄科荣同学负责编写学校信息录入,学生信息录入,成绩录入三个模块的相关内容,最后的整体代码由两个人组合完成。
校际运动会管理系统
图3.1校际运动会管理系统功能模块图
以下输入项均为键盘输入:
得分规则选择inta(1、2、3)
选择主菜单选项intn(1、2、3、4、5、6、7、8)
学校个数intXN
学校校名stringmingzi
学校代号stringdaihao
学生数量intSN
学生姓名stringxingming
学生性别boolxingbie
参赛项目boolxiangmu[4]
成绩floatchengji
选择查询方式inta(1、2、3、4)
选择显示的信息intl(1、2、3、4)
选择现实的排名inta(1、2、3)
学校名次intmingci[4];
学校校名stringmingzi
单项得分intdefen[4]
总分intzongfen
四、系统实现与测试
4.1主菜单模块实现
图
N
NNN
Y
YYYN
N
N
Y
YY
4.1主菜单流程图
voidmenu()//菜单
{
intw1,n;
system("
cls"
);
cout<
<
"
\t\t--------------------------------------------"
endl
<
\t\t*************welcometoload****************"
\t\t※※※※※※※※※※※※※※※※※※※※※※"
\t\t※欢迎使用校运动会计分系统※"
\t\t※※"
\t\t※1.学校信息录入※"
\t\t※2.学生信息录入※"
\t\t※3.成绩录入※"
\t\t※4.查询※"
\t\t※5.显示数据※"
\t\t※6.输出文件※"
\t\t※7.显示排名※"
\t\t※8.退出※"
\t\t※制作人※"
endl;
do
{
cout<
请输入你想操作的代号(1-8):
cin>
>
n;
if(n<
1||n>
8)
{
w1=1;
cout<
您的输入有误,请重新输入!
}
elsew1=0;
}while(w1==1);
switch(n)
case1:
xuexiaoluru();
case2:
xueshengluru();
case3:
chengjiluru();
case4:
chaxun();
case5:
xianshi();
case6:
wenjian();
case7:
paimingxianshi();
}
}
主菜单运行结果如图4.2
图4.2主菜单界面
4.2查询模块实现
图4.3查询模块流程图
voidchaxun()//查询
{voidxscx();
voidxmcx();
voidxxcx();
inta;
do
{
cout<
选择查询方式:
1按姓名查询:
2按项目查询:
3按学校查询:
4退出"
请选择:
;
cin>
a;
switch(a)
case1:
xscx();
break;
case2:
xmcx();
case3:
xxcx();
}while(a<
1&
&
a>
4);
system("
pause"
menu();
voidxscx()
{inti,sb=0;
stringx;
请输入要查询的名字:
x;
for(i=0;
i<
SN;
i++)
if(xs[i].xingming==x)
{
sb++;
cout<
姓名"
xs[i].xingming<
学校"
for(intk=0;
k++)
if(xs[i].xue==xx[k].daihao)
{
cout<
setw(15)<
xx[k].mingzi;
break;
}
cout<
性别"
if(xs[i].xingbie)
setw(4)<
男"
else
女"
号码"
xs[i].haoma<
}
if(sb==0)
cout<
没找到该名字的学生"
voidxmcx()
intj;
请输入要查询的项目名:
j;
if(xs[i].xiangmu[j-1])
未找该项目的学生"
voidxxcx()
学校信息为:
endl<
学校名称"
学校代号"
XN;
xx[i].mingzi<
"
xx[i].daihao<
stringl;
请输入要查询的学校代号:
l;
if(xs[i].xue==l)
l<
if(xs[i].xingbie)
setw(6)<
else
xs[i].haoma;
}
没找到该学校的学生"
查询模块测试分为姓名查询如图4.4,项目查询如图4.5,学校查询如图4.6:
图4.4姓名查询界面
当选择数字1时界面如图4.4,输出学生姓名,学校,性别,号码.
图4.5项目查询界面
当选择数字2时界面如图4.5,输出参加要查询项目的运动员姓名,学校,性别,号码.
图4.6学校查询界面
当选择数字3时界面如图4.6,输出代表要查询学校参赛的运动员姓名,学校,性别,号码.
4.3显示模块查询
图4.7显示模块流程图
voidxianshi()//显示所有信息
{voidxsxxxx();
voidxsxsxx();
voidxsdfgz();
intl;
do
显示所有学校信息输入1"
显示所有学生信息输入2"
显示得分规则输入3"
退出输入4"
请选择:
cin>
switch(l){
xsxxxx();
xsxsxx();
xsdfgz();
}while(l>
4&
1);
voidxsxxxx()
setw(8)<
学校得分"
学校排名"
for(inti=0;
xx[i].chengji<
xx[i].mingci<
voidxsxsxx()
学校"
性别"
<
setw(12)<
项目1成绩"
项目2成绩"
项目3成绩"
项目4成绩"
for(intj=0;
j<
j++)
xs[j].xingming;
if(xs[j].xue==xx[k].daihao)
if(xs[j].xingbie)
for(intx=0;
x<
4;
x++)
xs[j].xiangmu[x]<
xs[j].chengji[x];
setw(18)<
项目1得分排名"
项目2得分排名"
项目3得分排名"
项目4得分排名"
setw(7)<
总分"
for(j=0;
for(intx=0;
setw(9)<
xs[j].defen[x]<
xs[j].mingci[x]<
setw(7);
xs[j].zongfen<
voidxsdfgz()
for(intz=0;
z++)
if(df[z]!
=0)
{
第"
z+1<
名得"
df[z]<
分"
continue;
}
其后所有人得分为0"
break;
显示模块测试分为学校显示如图4.8,所有学生显示如图4.9和得分显示如图4.10
图4.8学校信息显示界面
图4.8选择1时参赛学校的名称,代号,得分和排名的显示.
图4.9学生信息显示界面
图4.9为选择2时所有参赛学生学校,性别,参赛项目,成绩,得分和排名的信息显示.
图4.10得分规则显示界面
图4.10为选择号码3时比赛采用的积分规则的显示.
4.4输出文件模块
voidwenjian()//输出到文件
fstreams1("
输出文件.txt"
ios:
:
out);
if(!
s1)
打开失败!
s1<
学校名字学校代码学校名次学校总分"
'
\n'
for(inti=0;
s1<
int(xx[i].chengji)<
姓名学校代码性别号码项目1成绩名次项目2成绩名次项目3成绩名次项目4成绩名次总分"
for(i=0;
xs[i].xue<
xs[i].xingbie<
<
xs[i].xiangmu[0]<
xs[i].chengji[0]<
xs[i].mingci[0]<
xs[i].xiangmu[1]<
xs[i].chengji[1]<
xs[i].mingci[1]<
xs[i].xiangmu[2]<
xs[i].chengji[2]<
xs[i].mingci[2]<
xs[i].xiangmu[3]<
xs[i].chengji[3]<
xs[i].mingci[3]<
xs[i].zongfen<
s1.close();
输出成功!
menu();
图4.11输出文件
4.5显示排名
图4.12排名模块流程图
voidpaimingxianshi()//显示排名
{voidxxpm();
voidydypm();
1学校排名"
2运动员总分排名"
3退出"
xxpm();
ydypm();
voidxxpm()
stringdd[50];
for(inti=0;
dd[xx[i].mingci-1]=xx[i].mingzi;
i+1<
名为"
dd[i]<
voidydypm()
stringdd[200],te;
intss[200],mp,p,q;
dd[i]=xs[i].xingming;
ss[i]=xs[i].zongfen;
for(p=0;
p<
p++)
for(q=p+1;
q<
SN-1;
q++)
if(ss[p]<
ss[q])
{
te=dd[q];
dd[q]=dd[p];
dd[p]=te;
mp=ss[q];
ss[q]=ss[p];
ss[p]=mp;
}
显示排名测试分为学校排名如图4.13,运动员排名如图4.13
图4.13学校排名界面
图4.14运动员排名界面
五、调试错误及解决方法
在调试过程中遇到了各种各样的错误,但总结起来也就是马虎造成的,现列举一二。
如在调用函数时出现函数未声明的错误,只要在函数的开头进行声明就行了;
还有如“D:
\测试.cpp(579):
errorC2018:
unknowncharacter'
0xa3'