文档介绍:课程设计
课程名称 C语言课程设计
题目__________________
专业__________________
班级__________________
学号__________________
姓名__________________
成绩__________________
指导教师__________________
_______年_______ 月_______日
课程设计任务书
设计题目:设计比赛评分系统(给分原则:满分为10分;裁判给出分数后,去掉一个最高分和一个最低分后的平均分为选手的最后得分(精确到小数点后两位)。)
设计目的:
1. 巩固和加深课堂所学知识;
2. 将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力;
3. 学会编制结构清晰、风格良好、数据结构选择恰当的C语言程序;
设计任务:(在规定的时间内完成下列任务)
功能:
设参赛人数为为裁判人数为(不少于11的奇数)位,
录入参赛人员的资料和得分情况好,统计最后得分,
按最后得分结果从高分到低分排序,
公布一、二、三等奖的得奖选手名单。
此系统能够查询选手的得分情况。
具体要求:设计报告按统一撰写格式要求,应包含以下内容:
题目:
2、设计目的:
2、设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入/输出描述等。
3、程序结构:①函数定义说明;②用到的库函数(宏)的功能说明、调用关系说明、参数传送方式说明等;③主要算法描述等(各模块功能实现)。
13、设计要求:①绘制设计系统的结构层次图,各功能实现的算法、绘制结构化流程图。②程序流程图、源程序(程序必须有简单注释,源程序若太长,可作为附录)③设计输入、输出界面。(输出)
5、(1)程序结构设计特点;(2)设计、调试程序心得、体会或不足。
设计报告:
(一)主程序的流程
程序先通过宏定义符号常量N(选手数),M(评委数),P(评分选项数)的值分别为19,17,,而且便于常量的更改,只需改变#include命令行就可以一改全改。
接着定义了评委评分,选手得分和选手姓名的数组以便最终将选手最后得分与姓名对应。
进入程序主体,要想将比赛结果完整的输出,我们必须要让程序在将评委得分与选手姓名输入时自动计算出选手最终得分以及实现名次排序与姓名的一一对应。
为了实现19位选手得分的正确录入,先用for循环嵌套通过评委数量与选手数量控制评分项的完整输入,再用scanf语句对应二维数组a[]使评分与选手结合,在k=N时跳出循环,至此评分录入完毕。评分录入后还得计算出选手最终得分。为了去掉一个最高分,一个最低分,程序调用自编函数sort将评分按大小排序,接着调用average函数去除一个最高分与最低分算出选手最终得分。最后将选手得分排序。公布获奖结果时还必须出现选手的姓名。接着再用一个for循环通过k控制姓名数量,通过scanf函数实现选手姓名的录入,在k<N是跳出循环,至此选手姓名录入结束。最终的获奖名次必须与选手姓名一一对应。调用自编函数arran,通过一维数组num[]与二维数组name[][]将上面的评分与选手姓名一一对应。最后程序用printf函数和for循环将最后的比赛名次与获奖选手姓名一一对应的完整输出,程序到此结束。
(二)各分程序模块之间的调用关系
主程序由三个程序模块构成,分别为自编函数sort,average,arran。每一个模块用来实现一个特定的功能,由主程序调用其他函数,其他函数也可以互相调用,以减少重复编写程序段的工作量。
在选手评分录入完成后,为了准确计算出选手的最终得分,程序首先调用了average函数。从六个评委的评分中先通过调用sort函数将评分按大小进行排序,然后去掉一个最低分,去掉一个最高分,用average函数算出平均数aver作为选手得分。
选手姓名录入完成以及选手最终得分名次排序后,还必须将选手得分与选手姓名一一对应,程序在此调用arran函数。arran函数通过定义一维数组num[]和二维数组name[][]实现了选手得分以及选手姓名的一一对应。函数调用至此结束。
如:
{int i,j,max;float temp1;char temp2[19];
for(i=0;i<N;i++)
{max=i;
for(j=i;j<N;j++)
{if(num[max]<num[j])
max=j;
}
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[max];
strcpy(name[i],name[max]);
num[max]=temp1