c语言课程设计运动会分数统计系统Word格式.docx
《c语言课程设计运动会分数统计系统Word格式.docx》由会员分享,可在线阅读,更多相关《c语言课程设计运动会分数统计系统Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
![c语言课程设计运动会分数统计系统Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/25/f44570e1-daae-4a1e-8b9f-c475c79514bc/f44570e1-daae-4a1e-8b9f-c475c79514bc1.gif)
类型
性别
项目编号
学校编号
运动员编号
3.可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。
五、选作内容:
允许用户指定某项目采取其他名次取法。
前言
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至
一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;
另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;
并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中;
7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
8.在2012年6月25日之前,请各班学习委员收齐课程设计报告和源程序软盘交王颖老师,联系电话:
8883238。
三、进度安排
第一周星期四:
课题讲解,查阅资料
第二周 星期一:
总体设计,详细设计
星期二:
编程,上机调试、修改程序
星期三:
上机调试、完善程序
星期四:
星期五:
答辩
星期六-星期天:
撰写课程设计报告
第一章问题描述
本课程设计主要解决在运动会上,将各个比赛项目所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出。
该程序用于运动会上,涉及到比赛项目成绩的录入,某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。
其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;
自己扩展的功能是“某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学校以及运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。
1.1问题描述
1.2基本要求
1.3测试数据
1.4实现提示
3.数据结构:
4.数据库结构:
1.5选作内容
第二章需求分析
2.1需求陈述
2.1.1开发语言
本课程涉及主要采用了C++。
C++语言代表着对以往语言之精华的发展和提炼,既支持面向对象的程序设计,也支持结构化的程序设计。
它修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析,提供了异常处理机制,简化了程序的出错处理,利用throw、try和catch关键字,提高了程序的可靠性和可读性。
函数重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。
提供了模板机制。
模板包括类模板和函数模板两种,它们将数据类型作为参数。
2.1.2运行环境
MicrosoftVisualC++6.0。
VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
“可视”的资源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。
利用VisualC++6.0进行Internet、数据库及多媒体等多方面的程序开发也很容易。
2.2建立对象模型
将各个比赛项目所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出封装为一个类,通过函数调用将这些对象连接起来。
2.3建立功能模型
1)可以输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分;
3)可以按学校编号、学校总分、男女团体总分排序输出;
4)可以按学校编号查询学校某个项目的情况;
5)可以按项目编号查询取得前三或前五名的学校。
第三章概要设计
3.1系统设计
3.1.1系统分析
1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)。
然后再输入第二个学校编号2,再输入成绩;
当输入其他的学校编号和成绩会提示错误输入,重新输入。
2)然后进入总目录,输入:
1统计各学校总分并输出;
3)输入:
2按学校编号排序输出;
4)输入:
3按学校总分排序输出;
5)输入:
4按男团体总分排序输出;
6)输入:
5按女团体总分排序输出;
7)输入:
6按学校编号查询学校某个项目情况;
8)输入:
7按项目编号查询取得名次的学校;
9)输入:
0退出系统;
10)输入其他数据会提示错误输入,重新输入。
3.1.2系统设计思想
本程序主要是使用顺序表来实现操作。
一个运动会包括运动项目和参加运动会的学校。
因此构造顺序表match,school。
为了操作的方便,设计了一个总目录,选择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返回目录或退出程序,对于总分的排序使用了冒泡排序。
为了使整个程序界面看起来更加惬意,又添加了背景和字体颜色设置的程序语句。
每个操作前都有操作指南,易于使用。
3.2系统类层次及结构图
启动程序
录入分数
显示主目录
统计各学校总分
按学校编号排序
按学校总分排序
按女团体总分排序
按学校编号查询学校某个项目情况查询学校某个项目情况
按男团体总分排序
按项目编号查询取得名次的学校
退出系统
用户选择某命令,产生相应的操作
显示结果,用户选择返回主目录或退出
退出程序
图3.2系统流程图
第四章详细设计
4.1类与对象的设计
详细设计:
宏定义:
#defineN2
#definebm4
#definegm3
数据类型定义:
运动项目的定义:
structmatch
{
intmatchnum;
intrank[3];
mat[bm+gm];
}
学校的定义:
structschool
{
intschoolnum;
structmatchmat[bm+gm];
inttotal;
intboytotal;
intgirltotal;
sch[N];
main
xunhuan
totaljisuan
input
huanyingni
funct4
funct6
funct5
funct3
funct2
funct1
funct0
mulu
funct7
system
函数之间的调用关系
图4.1函数调用关系图
4.1.1类属性的详细设计
类的属性包括静态属性和动态属性。
该程序用于运动会上,其中类的静态属性包括:
运动项目的编号,参加比赛的学校总数,涉及到的动态属性包括:
比赛项目成绩的录入,某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。
第五章测试与维护
<
1>
数据输入(输入成绩如图)
图5.1.1
输入:
请输入学校编号:
1
项目编号1234567
第<
名:
1001100
2>
1110010
3>
0000111
2
项目编号1234567
0110011
0001101
1111000
输入成绩后出现总目录(下图);
图5.1.2
(1)输入:
输出:
图5.1.3
(2)输入:
1返回总目录,再输入:
2
输出:
图5.1.4
(3)输入:
3
图5.1.5
(4)输入:
4
图5.1.6
(5)输入:
5
图5.1.7
(6)输入:
6,学校编号输入:
1,项目编号输入:
图5.1.8
(7)输入:
2,返回上一级,再输入学校编号:
2,项目编号:
图5.1.9
(8)输入:
1,返回总目录;
再输入:
7,输入项目编号:
7
图5.1.10
(9)如果输入提示外的数字,例如输入:
则输出错误提示:
图5.1.11
(10)输入:
图5.1.12
第六章用户手册
1、运行环境
Windows,VC++6.0
2、用户界面
图6.2.1
图6.2.2
3、操作过程
(1)用户进入运动会分数统计系统程序欢迎界面
(2)录入成绩,先输入要输入的学校编号,1或2;
再输入对应学校的1-7项目的成绩(成绩用0或1:
‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)当成绩录入错误时会有错误提示。
(3)进入总目录,按提示,输入0--7中的一个数;
输入:
0则推出系统;
然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
5按女团体总分排序输出;
6按学校编号查询学校某个项目编号;
选择学校编号1或2;
然后选择项目编号1--7;
输出项目成绩;
然后选择0或1或2(‘0’表示退出系统,‘1’表示返回总目录,‘2’表示返回上一级);
选择项目编号1--7;
输出成绩;
设计总结
本次课程设计,使我对课程设计的设计方法、步骤、思路、有一定的了解与认识。
它相当于实际设计工作的模拟。
在课程设计过程中,基本能按照规定的程序进行,先针对表达式算法为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;
收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案。
通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多宝贵的经验。
特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。
怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,达到相互协调的作用其次,我熟悉了所学的各种知识。
学会了很多关于程序设计的经验和技巧,明白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。
重要的是,通过这次设计,逐步我具备了走向程序员的基本素质。
知道应如何在困难重重中一步一步细心的发现问题,解决问题。
并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何达到相对的完美。
参考文献
[1]陈维兴,林小茶.c++面向对象程序设计教程.北京:
清华大学出版社,1996.2004.
[2]张国峰.C++程序设计实用教程.北京:
清华大学出版社,1996.
[3]张松梅.C++语言教程.电子科技大学出版社,1993.
[4]阎龙.C程序员的C++指南.北京航空航天大学出版社,1992.
[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.
[6]汪成为.面向对象分析、设计及应用.国防工业出版社,1992.
[7]江明德.面向对象程序设计.电子工业出版社,1993.
[8]吕凤翥.C++语言程序设计.电子工业出版社,2001.
致谢
首先感谢我的指导老师王颖老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
在这几节课程设计中,对课本中所学的各种知识进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。
一个人要完成所有的工作是非常困难和耗时的。
在以后的学习中我会更加注意各个方面的能力的协调发展。
在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
我的同学在我的课程设计中也给了我很多无私的帮助和支持,在此一并表示感谢。
附录:
源代码
#include<
stdio.h>
process.h>
#defineN100//学校个数
#definebm50//男团体个数
#definegm50//女团体个数
voidxuanze();
voidxunhuan();
structmatch//项目
intrank[3];
}
mat[bm+gm];
structschool//学校
intboytotal;
}sch[N];
voidhuanyingni()/*开始界面,欢迎使用*/
printf("
\n\n湖南工程学院电气1182班赵岩\n\n\n\n\n"
);
printf("
\t***^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^***\n\n"
欢迎使用运动会分数统计系统\n\n"
\t***^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^***\n\n"
voidinput()//输入成绩
inti,j,k;
for(i=0;
i<
N;
i++)//初始化分数
sch[i].total=0;
sch[i].boytotal=0;
sch[i].girltotal=0;
for(k=0;
k<
bm+gm;
k++)
{
sch[i].mat[k].rank[0]=0;
sch[i].mat[k].rank[1]=0;
sch[i].mat[k].rank[2]=0;
sch[i].mat[k].matchnum=k+1;
}
*********输入成绩**********\n"
###输入说明:
\n"
1.学校编号为1--%d;
项目编号为1--%d(1-%d为男子项目,%d-%d为女子项目).\n"
N,bm+gm,bm,bm+1,bm+gm);
2.成绩只能是'
0'
或'
1'
\n('
表示没获得该项目的该名次,'
表示获得了该项目的该名次.以'
Tab'
键前进。
)\n"
N);
i++)
printf("
******请输入学校编号:
"
loop3:
scanf("
%d"
&
sch[i].schoolnum);
if(sch[i].schoolnum<
0||sch[i].schoolnum>
N)
输入错误(只能是1-%d)请重新输入:
"
gotoloop3;
项目编号"
for(k=0;
%d"
sch[i].mat[k].matchnum);
for(j=0;
j<
3;
j++)
{
loop:
第(%d)名:
j+1);
scanf("
%d"
sch[i].mat[k].rank[j]);
if(sch[i].mat[k].rank[j]!
=0&
&
sch[i].mat[k].rank[j]!
=1)
输入错误,请重新输入,成绩只能是'
gotoloop;
voidtotaljisuan()
inti,k,b;
for(k=0,b=0;
{
b=sch[i].mat[k].rank[0]*5+sch[i].mat[k].rank[1]*3+sch[i].mat[k].rank[2]*2;
sch[i].total=sch[i].total+b;
if(k<
bm)
sch[i].boytotal=sch[i].boytotal+b;
if(k>
=bm)
sch[i].girltotal=sch[i].girltotal+b;
voidmulu(){
\n\n**系统目录**\n"
//目录
\t\t************************************\n"
\t\t*1.统计各学校总分*\t\n"
\t\t*2.按学校编号排序输出*\t\n"
\t\t*3.按学校总分排序输出*\t\n"
printf