2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告12012-2013年第二学期计算机学院软件工程专业程序设计综合实习报告班级:软件工程123学号:129074243姓名:余文杰指导老师:胡增涛2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告2题目学生试卷分析统计课程设计内容简介高校老师对班级试卷的分析和研究是很有必要的,程序主要对班级某单科成绩按照平时分数和期末分数进行比例运算后,计算出总评成绩后进行计算最高分、最低分、及格率、标准差、平均分、和各分数段人数分布等内容设计者姓名余文杰指导老师意见2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告3目录一:问题定义—————————————————————5二:可行性研究1:项目的由来——————————————————52:可选方案———————————————————53:可行性———————————————————54:结论————————————————————6三:需求规格说明1:目标———————————————————72:数据需求——————————————————83:功能需求—————————————————8四:总体设计1:软件的结构:(HIPO图)————————9五:详细设计:各个模块的伪代码和流程图和盒型图1:编译预处理模块——————————————102:主函数模块————————————————103:函数acceptdate()模块———————————114:函数showdate()模块————————————122012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告45:函数showdate2()模块———————————126:函数count()模块——————————————137:函数draw()模块—————————————14六:程序源代码:—————————————————15七:程序测试:1:测试抓图————————————————192:测试内容————————————————21八:总结1:项目评价——————————————222:不足之处——————————————223:心得体会——————————————232012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告5一:问题定义:某高校需对学生成绩进行分析,观察学生的考试情况,包括平时成绩、期末成绩、总评成绩,最高分数、最低分数、标准差以及各个分数段的人数等相应标准。成绩某单科成绩的相应情况;二:可行性研究1:项目的由来:高校教师或辅导员及班长需要对班级的期末考试成绩和平时成绩进行比例得到相应的总评成绩后对班级的分数进行平均分,标准差,最高分,最低分以及个分数段的人数统计和分析2:可选方案:①:可选用学生考试成绩自动折合相应比例后进行折算后成绩,计算相应的平均分数、最高分数、最低分数、平均数、标准差;画出相应的各个分数段人数的人数,比较直观明了;②:可选用人工折算后,计算机计算相应的最高分数、最低分数、平均分数、标准差,直接输出各个分数段的人数3:可行性①:技术可行性:每个班级对教师来说都有着几百人以上,用于手2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告6工计算分析十分困难,出错概率,而采用计算机进行计算只需要输入分数后快速的计算相应的标准;得知班级成绩的如何,对辅导员或班长岁班级人数不超过半百,但是手工计算起来还是比较慢,出左概率比较大,效率比较低,所以采用将计算机计算比较方便,省时省力;②:经济可行性:开发学生分析统计管理系统,可以在以后都可以使用,利用计算机工作节时节力,不容易出现错误,对学生教育工作有利很有必要;③:操作可行性:操作使用计算机时,简单方便,而且不需要花费太大人力需求;④:法律可行性:建立该系统有力学生管理,不违背法律;4:结论;面对高校考试的巨大的计算工作量,采用计算机计算很有必要,采用方案①的方法不仅能够省事,节约时间,出错率低等,减少教师的工作量,另外更能直观的观察出班级的考试成绩的整体水平,更好掌握学生状况,有利于下一学年做好有效的工作计划,更有利于对学生的2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告7教育管理工作。三:需求规格说明:1:目标:教师输入学生的信息系统对数据处理学生期末成绩平时成绩和期末成绩比例学生学号学生平时成绩计算比例折算后成绩计算最高分数、最低分数、及格率计算平时成绩平均分数、标准差计算期末成绩平均分数、标准差计算总评成绩平均分数、标准差计算各个分数段的人数画直方图学生成绩分析统计结果的输出输出平时成绩、期末成绩和总评成绩输出成绩的最高分数、最低分数、及格率输出平时成绩的平均分数、表准差输出总评成绩的平均分数、标准差输出期末成绩的平均分数、标准差输出各个分数段的人数直方图教师对成绩分析结果进行观察和了解2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告82:数据需求:①:数据量:学号,成绩,平均分,标准差,各个分数段人数,最高分数,最低分数,及格率。②:数据定义和结构⑴:学号=学生在校给安排的学生号码⑵:成绩=平时成绩X比例+期末成绩X比例(=总评成绩)⑶:平均分=平时成绩平均分数+期末成绩平均分数+总评成绩平均分数⑷:标准差=平时成绩标准差+期末成绩标准差+总评成绩标准差⑸:各个分数段的人数=按照十分为间隔统计每个间隔的人数⑹:最高分数=年级中期末成绩最高的分数⑺:最低分数=年级中期末成绩最低的分数⑻:及格率=年级中成绩高于六十分数的人数与总人数的百分比3:功能需求:①:性能:响应快,界面美观,使用起来方便,容易操作,但是对于特大数据量可能处理起来有些缓慢,如果有特殊要求还需还需定量2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告9②:功能:(IPO图)四:总体设计:1:软件的结构:(HIPO图)学生学号和成绩的输入计算及格率、最高分数、最低分数计算平均分数计算标准差计算各个分数段人数输出及格率、最高分数、最低分数输出平均分数输出标准差画出各个分数段的人数分布直方图输入处理输出学生试卷分析统计系统1.文件2.计算前的处理3.计算相关要求4.信息的输出1.2退出1.1初始化2.1输入平时成绩和期末成绩的比例2.2输入学生的学号2.3输入学生的平时成绩和期末成绩3.1计算最高分数最低分数和及格率3.2计算每个平均分数3.3计算么个标准差3.4计算各个分数段人数4.1输出最高分数最低分数和及格率4.3输出每个标准差4.4画出各个分数段的直方图4.2输出每个平均数2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告10五:详细设计:各个模块的伪代码和流程图和盒型图:1:编译预处理模块2:主函数模块:定义整型数总人数sum,最大分数max,最小分数min,定义浮点数及格率pass,定义平均分数组ave[]标准差数组f[]sum=accept_date(stu,grade)调用数据输入函数accept_date调用show_date(stu,sum,grade)输出所有学生的序号,平时成绩和总评成绩调用count(&max,&min,&pass,ave,f,stu,sum)计算期末成绩及格率,最高分数,最低分数,以及平时成绩、期末成绩、总评成绩的平均分数和标准差调用show_date2(max,min,pass,ave,f)显示期末成绩最高分数,最低分数以及平时、期末、总评成绩的平均分数和标准差调用drawe(grade),画模拟直方图使用的函数库:stdio.hstring.h,conio.hmath.h学生数据结构体的声明typedefstructstudent枚举定义typedefenumboolen输入函数声明intaccp_date()输出函数声明voidshow_date()数据计算函数声明voidcount显示函数声明voidshow_date2()画直方图函数声明voidgrade()2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告113:函数acceptdate()模块:i=0sum=0temp,a1,a2flag输入平时成绩与期末成绩的比例,&a1,&a2输入学号&stu[i].numberif(&stu[i].number=0)TFsum=ibreak;While(iSIZE)flage=TrueWhile(flage==True)输入平时成绩和期末成绩&stu[i].score[0]&stu[i].score[1]输入的成绩是否在1-100之间的数TFflag=False输入数合理输出“请重新输入成绩”计算总评成绩temp=(int)(1.0*a1/100*stu[i].score[0]+1.0*a2/100*stu[i].score[1])/总评成绩存入数组stu[i].score[2]=temp;if(temp==10)TFgrade[10]++grade[temp++]++i++返回总人数returnsum2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告124:函数showdate()模块:5:函数showdate2()模块inti,j输出所有学号和平时、期末、总评成绩for(i=0;isum;i++)for(j=0;j3;j++)输出三个成绩for(i=0;i=10;i++)输出各个分数段人数intjcharstr1[3][20]={平时成绩分,期末平均分,总评成绩平均分};charstr2[3][20]={平时成绩标准差,期末成绩标准差,总成绩标准差};For(j=0;j3;j++)输出平时成绩平均分数和标准差输出期末成绩平均分数和标准差输出总评成绩平均分数和标准差printf(\n%s=%6.2f%s=%6.2f%s=6.2f\n,str1[j],ave[j],str2[j],f[j]);2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告136:函数count()模块:intijp_sum=0inttotal[3]doubletempt*max=*min=stu[0].score[1]If(stu[0].score[1]=60)TFP_sum++For(i=0;isum;i++)If(stu[i].score[1]*max)TF*max=stu[i].score[1]If((stu[i].score[1]*min)TF*min=stu[i].score[1]If(stu[i].score[1]=60)TFP_sum++For(i=0;i=2;i++)total[i]=0For(j=0;j3;j++)For(i=0;isum;i++)total[j]=total[j]+stu[i].score[j];}For(j=0;j3;j++)ave[i]=total[j]/sumFor(j=0;j3;j++)f[i]=0For(i=0;isum;i++)temp=stu[i].score[j]-ave[j];f[j]=f[j]+temp*temp;f[i]=sqrt(fabs(f[j])/sum)2012-2013安徽工业大学计算机学院软件工程专业C语言程序设计报告147:函数draw()模块:Max=0For(i=0;i=10;i++)If(grade[i]max)TFmax=grade[i]For(i=1;i=10;i++)grade[i]=(int)(20.0*grade[i]/max+0.5)For(j=0;j=41)screen[i][j]=0For(i=0;i=41;i++)Screen[21][i]=’-‘Screen[21][41]=’X’Screen[0][0]=’Y’For(i=0;i=21;i++)Screen[i][0]=’|’k=1for(x=1;x