我的C语言课设运动会分数统计.docx

上传人:b****7 文档编号:9774484 上传时间:2023-02-06 格式:DOCX 页数:21 大小:408.27KB
下载 相关 举报
我的C语言课设运动会分数统计.docx_第1页
第1页 / 共21页
我的C语言课设运动会分数统计.docx_第2页
第2页 / 共21页
我的C语言课设运动会分数统计.docx_第3页
第3页 / 共21页
我的C语言课设运动会分数统计.docx_第4页
第4页 / 共21页
我的C语言课设运动会分数统计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

我的C语言课设运动会分数统计.docx

《我的C语言课设运动会分数统计.docx》由会员分享,可在线阅读,更多相关《我的C语言课设运动会分数统计.docx(21页珍藏版)》请在冰豆网上搜索。

我的C语言课设运动会分数统计.docx

我的C语言课设运动会分数统计

运动会分数统计系统

1、课程设计的目的

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

经过这学期对C语言的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为下一步的学习打下了坚实的基础。

通过本次课程设计,使我明白学习需要理论联系实践,从实践中得出的知识才能真正的掌握。

运动会分数统计系统是召开大型运动会必不可少的部分,人工统计分数存在很多缺陷,效率低,易出错,给运动会的顺利召开和运行带来大量的不便,而相比之下使用计算机进行文件信息管理上面的问题就不复存在了。

于是编写了一个运动会分数统计系统来解决诸多问题。

本程序具有输入、输出、排序、查询和退出功能,可以实现数据的输入、数据的排序以及数据的输出等操作。

程序的操作界面简洁美观,易于操作。

本程序运用了函数、文件、循环、数组、结构体等知识来进行设计,实现系统和数据结构设计。

 

2、设计方案论证

2.1设计思路

本程序要求模块化管理,分成菜单函数、输入函数、输出函数、查询函数、排序函数等,控制各个部分从而将程序简单化出来分析。

本程序的主要功能是:

输入数据:

输入各相关数据,例如输入各学校的名称和编号。

输出数据:

输出相关学校、运动项目的结果。

查询信息:

查询某个学校或某个运动项目的分数和排名。

退出系统:

程序编译结束后退出系统。

1、

 

图1运动会分数统计系统功能模块图

2.2程序设计

2.2.1定义数据类型

本程序首先定义了两个结构体作为项目和分数的存储媒介,一是项目结构体,定义了项目名称,前五名学校编号,二是学校结构体,定义了学校编号、学校姓名、学校总分、男子总分、女子总分。

定义如下:

【1】【2】

项目结构体

structpro//表示项目的结构体

{

stringname;//项目名称

intsnum[6];//前5名学校的编号

}p[21];

学校结构体

structschool//表示学校的结构体

{

intnum;

stringname;//学校名称

intscore;//学校总分

intmale;//男子总分

intfemale;//女子总分

}sch[21];

2.2.2主函数及其流程图

定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序的功能。

每次使用都会调用菜单函数。

主函数主要是利用for循环语句和while循环语句对数据进行处理。

[3][5]

 

图2主函数流程图

 

2.2.3输入函数及其流程图

 

 

 

 

图3输入函数流程图

2.2.4功能函数流程图

 

 

 

图4按编号排列流程图

 

 

图5输入查询项目编号流程图

 

图6按学校总分排列流程图

 

图6按学校总分排列流程图

2.3源程序:

#include

#include

#include

#include

#include

#include

usingnamespacestd;

intn;//n个学校

intm;//m个男子项目

intw;//w个女子项目

structpro//表示项目的结构体

{stringname;//项目名称

intsnum[6];//前5名学校的编号

}p[21];

structschool//表示学校的结构体

{intnum;

stringname;//学校名称

intscore;//学校总分

intmale;//男子总分

intfemale;//女子总分

}sch[21];

intintegral[5]={7,5,3,2,1};//前五名得分

voidinput()

{inti,j,y,x;

printf("输入学校数目:

");

y=0;

while

(1)

{scanf("%d",&n);

if(n>=1&&n<=20)y=1;

if(y)break;

elseprintf("输入数据有误,请重新输入:

");

}

for(i=1;i<=n;i++)

{printf("输入第%d个学校的名称:

",i);

cin>>sch[i].name;

sch[i].score=0;

sch[i].female=0;

sch[i].male=0;

sch[i].num=i;

}

printf("输入男子项目数和女子项目数:

");

y=0;

while

(1)

{scanf("%d%d",&m,&w);

if(m<=20&&m>=1&&w<=20&&w>=1)y=1;

if(y)break;

elseprintf("输入数据有误,请重新输入:

");

}

for(i=1;i<=m+w;i++)

{printf("输入第%d个项目的名称:

\n",i);

for(i=0;i<=(m+w);i++)

{scanf("%ds\n",&sch[i].name);

}

printf("输入第%d个项目的前5名的学校编号:

\n",i);

for(j=1;j<=5;j++)

{y=0;

while

(1)

{

scanf("%d",&x);

if(x>=1&&x<=20)y=1;

if(y)break;

elseprintf("输入数据有误,请重新输入:

");

}

p[i].snum[j]=x;

sch[x].score+=integral[j-1];

if(i<=m)sch[x].male+=integral[j-1];

elsesch[x].female+=integral[j-1];

}

}

}

voidprint(inti)

{printf("%d,%s,%d,%d,%d\n",i,sch[i].name,sch[i].score,sch[i].male,sch[i].female);

}

voidbianhao()//按编号排序

{inti,j;

schoolt;

for(i=1;i

{for(j=i;j<=n;j++)

if(sch[i].num>sch[j].num)

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按编号排列:

\n");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

print(i);

}

voidzongfen()//按学校总分排序

{inti,j;

schoolt;

for(i=1;i

{

for(j=i;j<=n;j++)

if(sch[i].score

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校总分排列:

\n");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

print(i);

ofstreamfout;

fout.open("运动会分数统计.txt");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

{printf("%d,%s,%d,%d,%d\n",i,t,sch[i].score,sch[i],sch[j]);}

fout.close();

}

voidmalezf()//按学校男总分排序

{

inti,j;

schoolt;

for(i=1;i

{

for(j=i;j<=n;j++)

if(sch[i].male

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校男子总分排列:

\n");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

print(i);

}

voidfemalezf()//按学校女总分排序

{

inti,j;

schoolt;

for(i=1;i

{

for(j=i;j<=n;j++)

if(sch[i].female

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校女子总分排列:

\n");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

print(i);

}

voidcxsch()//查询学校信息

{

inti,y,s;

printf("输入需要查询的学校编号:

");

y=0;

while

(1)

{

scanf("%d",&s);

if(s>=1&&s<=n)y=1;

if(y)break;

elseprintf("输入数据有误,请重新输入:

");

}

printf("该学校相关信息:

\n");

printf("编号学校名称总分男子总分女子总分\n");

for(i=1;i<=n;i++)

{

if(sch[i].num==s)

{

print(i);

break;

}

}

}

voidcxxm()//查询项目信息

{

inti,y,s;

printf("输入需要查询的项目编号:

");

y=0;

while

(1)

{

scanf("%d",&s);

if(s>=1&&s<=n)y=1;

if(y)break;

elseprintf("输入数据有误,请重新输入:

");

}

printf("前5名学校编号及名称为:

\n");

printf("名次编号学校名称\n");

for(i=1;i<=5;i++)

printf("%d,%d,%c\n",i,y,s);

}

voidsolve()//菜单函数

{intz;

while

(1)

{

printf("\n选择您需要的操作(选择序号):

\n");

printf("1.按学校编号排序输出\n");

printf("2.按学校总分排序输出\n");

printf("3.按学校男总分排序输出\n");

printf("4.按学校女总分排序输出\n");

printf("5.查询某个学校成绩\n");

printf("6.查询某个项目成绩\n");

printf("7.结束\n\n");

scanf("%d",&z);

if(z==1)bianhao();

if(z==2)zongfen();

if(z==3)malezf();

if(z==4)femalezf();

if(z==5)cxsch();

if(z==6)cxxm();

if(z==7)break;

}

}

intmain()//主函数

{

input();

solve();

return0;

}

 

3.设计结果与分析

3.1运行程序

将源程序编译、链接后生成可执行文件,运行该文件会看到如图7所示的提示信息,输入9后按回车,根据提示输入信息,如图所示:

图7输入参加运动会的学校数目和名称的界面

运行程序时,首先调用input()函数,该函数主要是利用for循环输入各个参加运动会的学校的名称。

3.2增加信息

输入如上信息,按回车,并根据提示输入运动会的项目个数和名称以及各个项目前5名的学校编号,出现如下的界面:

图8输入运动会的项目个数和名称以及各个项目前5名的学校编号的界面

输入后系统调用input()函数,并提示输入第n个项目的名称,回车提示输入获得本项目前五名的学校编号,先利用if语句判断是否满足条件,再利用for循环语句输入相关的信息。

3.3功能操作

3.3.1输入完毕按回车,出现菜单函数界面

图9菜单函数界面

输入信息结束后按回车,出现菜单函数界面,此时系统调用solve()函数,该函数主要是利用printf语句输出,其结图所示。

3.3.2按学校编号顺序输出

图10按学校编号顺序输出界面

在输入1按回车后,结果如图所示。

该部分调用bianhao()函数对学校排序,主要利用for循环语句嵌套的选择法来进行排序,用for循环语句输出结果。

3.3.3按学校总分排序输出

图11按学校总分排序界面

本部分调用zongfen()函数对各学校的总分数排序,在输入2后按回车出现如图界面。

主要是利用for循环语句嵌套的选择法来进行排序,用for循环语句输出结果。

3.3.4按学校男总分排序输出

图12按学校男子总分排序界面

本部分调用malezf()函数对各学校的女子分数排序,在输入3后按回车出现如图界面。

主要是利用for循环语句嵌套的选择法来进行排序,用for循环语句输出结果。

3.3.5按学校女总分排序输出

图13按学校女子总分排序界面

本部分调用femalezf()函数对各学校的女子分数排序,在输入2后按回车出现如图界面。

主要是利用for循环语句双层嵌套的选择法来进行排序,用for循环语句输出结果。

3.3.6查询学校编号为3的相关信息和分数

图14查询某学校的分数

本部分调用cxsch()函数对某学校的分数查询,输入5按回车后,出现提示信息“输入需要查询的学校编号:

”根据提示输入3,按回车后,结果如图所示。

该部分利用while循环语句可以实现多次查询,并利用if语句判断是否满足条件,满足则执行输出结果语句,否则提示错误信息。

3.3.7查询项目编号为6的运动项目信息和前五名学校排名

图15查询某项目成绩界面

本部分调用cxxm()函数对某项目的分数排序,输入6按回车后,出现提示信息“输入需要查询的项目编号:

”,根据提示输入6,按回车后,结果如图所示。

该部分利用while循环语句可以实现多次查询,并利用if语句判断是否满足条件,满足则执行输出结果语句,否则提示错误信息

3.3.8退出程序

图16退出程序界面

输入7按回车后,结果如图所示,此时函数执行break语句,出现“Pressanykeytocontinue”提示信息,结束程序。

四、设计体会

经过这学期对C语言的学习,我们学习了理论知识,了解了C语言程序设计的思想和方法,这些知识都为我们的下一步学习打下了坚实的基础。

本次课程设计,我的题目是运动会分数统计系统,通过这几天的上网查找资料和编译运行,我发现自己在各个方面还有很多不足,希望经过这次的实践后,不断学习,努力充实自己,开拓眼界,转换思维,不断提升自身能力,具有更好的编程能力。

在本次的课程设计中,遇见的最大的问题是对程序的编译和运行,还有一些知识不是很熟练。

而且由于是第一次接触这样长而且复杂的程序,在开始时有些胆怯,担心自己会完成不好,但经过一周时间的上网查找和翻阅资料,终于完成了课程设计。

通过此次课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力,增强了自己的动手能力,使自己的实践能力得到提高,同时也意识到自己的不足,需要在今后的道路上不断地的学习来充实自己。

 

五、参考文献

[1]梁建武、陈英VisualC++程序设计实验指导与实训[M].中国水利水电出版社,2006.7173-178

[2]李岚,李莉,金一宁.C语言程序设计与上机指导[M].北京:

清华电子工业出版社,2005.5198—202

[3]苏小红,陈惠鹏,温东新,李秀坤.教程[M].北京:

电子工业出版社,2004.1(3)123-133

[4]梁翎、李爱齐C语言程序设计实用技巧与程序实例[J]计算机科学报1996.5126-135

[5]王敬华,林萍,陈静.C语言程序设计教程[M].北京:

清华大学出版社,2005.10184

[6]胡玲洁VC++编程技术与技巧研究[J]电脑编程技巧与维护报2009年第16期198-203

[7]林秋申C/C++的编程风格与强壮性的探讨[J]莆田学院学报2002年第3期142-148

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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