C语言 智能评分系统程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《建筑环境与设备工程专业》C程序设计
课
程
设
计
姓名:xxx
学号:00000
专业:建筑环境与设备工程
设计课题:智能化比赛评分系统
时间:2010.6.22—2010.6.26
指导老师:xxx
本组人员:xxxxx
目录
一、设计目的和内容 (1)
(1)设计背景与目的 (1)
(2)课程设计内容 (4)
(3)课程设计有四个阶段组成 (5)
二、算法的基本思想 (5)
(1)主程序的流程 (6)
(2)各分程序模块之间的调用关系 (6)
三、测试数据 (8)
四、源程序及系统文件使用说明 (9)
五、实习体会...............................................
参考文献..............................................
智能化比赛评分系统
一.设计目的与内容
(1) 设计背景与目的:
北大社团创刊号上写道:“大学之大,并不仅仅在于它的物质条件,而在于它的高水准的学者和优秀的学生,以及他们所带来的独特的人文环境。”是的,独特的人文环境的塑造必然离不开学生活动,学生活动作为校园文化的重要组成部分,丰富了同学们的校园生活的同时,也作为一个窗口,对外展示出同学们的特长,同时也给同学们提供了一个锻炼的平台,最终达到育人的最高思想。
在各高校举行的学生活动中比赛类的活动颇多,如各类的演讲比赛、校园歌手大赛、挑战主持人大赛、校园明星选拔大赛等等,繁复的成绩计算给主办方带来了极大地不变,而且手工单项计算还容易出错,我们组就实际情况出发,根据学习的需要所以编制了一个智能化比赛评分系统的程序,既可以在学习之后复习自己学习的成绩,也方便了以后学校举行的各类比赛类活动,实现了双赢的目的。
我们组通过对8位选手参加演讲比赛,6位评委打分,共100分(演讲内容50分、语言表达50分。),评出一等奖1名,二等奖2名,三等奖2名的应用程序的设计过程,基本掌握简单C语言应用程序的编写与调试方法,掌握C语言的基本程序设计方法,并按要求编写实习报告。通过输出结果:1、每个选手的最终成绩评算办法:去掉一个最高分,去掉一个最低分,剩余评委的平均分。2、输出每位选手的姓名和分数,最终评出一、二、三等奖。3、输出8位选手的比赛名次的实践能力和设计操作要求学生熟练掌握C语言的基本知识和编程技能并基本掌握结构化程序设计的基本思路和方法。
(2)课程设计内容
设计课题:智能化比赛评分系统
1、评分系统基本要求:
设计一个评分系统,使之能提供以下功能:
①评委给每个演讲者评分——输入。
②输入每位选手的姓名、成绩并有相应的提示语;
③对每一位选手的成绩进行处理(去掉一个最高分,去掉一个最低分,剩余评委的平均分,为防止重分现象平均分取小数点后两位);
④对8位选手的成绩进行排序评名次,并且分出一、二、三等奖分别1、2、2个名额;
⑤评分结果浏览功能(每位选手的姓名、成绩、名次、一、二、三等奖及所有选手成绩的排序)——输出;
⑥查询或排序功能。
2、创新之处:
①智能化:输入参赛选手的姓名和对应的成绩后,系统自动对参赛选手的成
绩进行处理,对评委的分项分进行求和运算,去掉求和后各评委
的最高分和最低分,求剩余评委的平均分,即是此位选手的最终
得分,系统会自动评出选手的奖项;
②公平性:为防止出现重分的现象,我们对每位选手最终分数取小数点后三
位;
③灵活性:程序的开头我们定义的三个符号常量即:N(选手数),M(评委
数),P(评分项数),针对比赛的选手数、评委数、评分项数的
变化,可以相应的调整符号常量的值,达到了“一改全改”的效
果。
(3)课程设计有四个阶段组成:
1、分析设计数据的结构:学生首先选定题目、收集资料、用进行功能模块的
分析,控制模块分析正确,系统设计要实用,然后确定模块,写出函数原型。
2、编程:根据函数原型及其功能,填充相应的算法。编程简练,可用性强,
功能全面。
3、调试程序:上机调试程序,解决编译的错误,直至运行成功。
4、撰写报告:按格式写出完整、规范的报告并打印。其中模块图.流程图要
清楚、规范,不能有错别字。
5、答辩:程序运行通过,报告打印出来后,通知知道老师检查,经提问回答
大部分提问,即可通过。
二、算法的基本思想
(一)主程序的流程
程序先通过宏定义符号常量N(选手数),M(评委数),P(评分选项数)的值分别为8,6,2.这样不仅简单不易出错,而且便于常量的更改,只需改变#include命令行就可以一改全改。
接着定义了评委评分,选手得分和选手姓名的数组以便最终将选手最后得分与姓名对应。
进入程序主体,要想将比赛结果完整的输出,我们必须要让程序在将评委得
分与选手姓名输入时自动计算出选手最终得分以及实现名次排序与姓名的一一对应。
为了实现8位选手得分的正确录入,先用for循环嵌套通过评委数量与选手数量控制评分项的完整输入,再用scanf语句对应二维数组a[]使评分与选手结合,在k=N时跳出循环,至此评分录入完毕。评分录入后还得计算出选手最终得分。为了去掉一个最高分,一个最低分,程序调用自编函数sort将评分按大小排序,接着调用average函数去除一个最高分与最低分算出选手最终得分。最后将选手得分排序。公布获奖结果时还必须出现选手的姓名。接着再用一个for循环通过k控制姓名数量,通过scanf函数实现选手姓名的录入,在k (二)各分程序模块之间的调用关系 主程序由三个程序模块构成,分别为自编函数sort,average,arran。每一个模块用来实现一个特定的功能,由主程序调用其他函数,其他函数也可以互相调用,以减少重复编写程序段的工作量。 在选手评分录入完成后,为了准确计算出选手的最终得分,程序首先调用了average函数。从六个评委的评分中先通过调用sort函数将评分按大小进行排序,然后去掉一个最低分,去掉一个最高分,用average函数算出平均数aver作为选手得分。