河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题

上传人:ji****72 文档编号:26953398 上传时间:2018-01-04 格式:DOC 页数:18 大小:94KB
返回 下载 相关 举报
河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题_第1页
第1页 / 共18页
河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题_第2页
第2页 / 共18页
河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题_第3页
第3页 / 共18页
河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题_第4页
第4页 / 共18页
河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题》由会员分享,可在线阅读,更多相关《河南科技大学C语言课程设计-综合排序设计报告-成绩分析问题(18页珍藏版)》请在金锄头文库上搜索。

1、河南科技大学综合程序设计报告成 绩 分 析 问 题学 院: 电气工程学院年级专业: 电子 161学 号:161404110104学生姓名: 李恺指导教师:赵老师 1、题目内容和要求(重述)C 语言综合训练是为了提高学生综合使用本学期我们所学的 C 语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用 C 语言设计一个大型程序,并提供相关的设计文档和源程序,从网站提交。1、C 语言综合训练程序设计要求已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放:1001 stuname1 891002 stuname2 7

2、81003 stuname3 60.1100 stuname100 87请按照如下要求编写程序:a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;b. 将文本文件的内容读入到结构体数组中;c. 显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示) ;d. 显示平均成绩高于、低于和等于平均成绩的人数;e. 显示成绩为优秀(90 100)、良好 (8089)、中等(7079)、及格(60 69)、不及格(059) 的人数和所占百分比;f. 将以上显示的信息存放到 stuout.txt 文件中;2、C 语言综合训练设计报告要求a. 结合教材第二章的内容,写出本次综合训练的

3、分析文档;b. 文档要求以 WORD 排版,语言简练,条理清楚;c. 测试过程中遇到的主要问题及采取的解决措施;e. 文档以“设计报告 .DOC”名字保存。3、作业提交要求:a 需要提交的文件: 源程序、可执行文件以及stuin.txt、 stuout.txt 文件和设计报告.DOC 文件、设计报告txt 版。b. 所有提交文件保存在一个文件夹中,文件夹名字为“专业班级姓名” ,如“电气 162 张三” ;c 设计报告.txt使用设计报告.doc另存为 TXT类型得到, 课程设计报告.txt将用计算机做复制比检测。特别强调所有命名文件不要加空格。4、作业提交截止日期:2017/5/22 ,以班

4、级为单位提交。2、总体设计(框图请用 web 版视图查看)(1)功能设计(2)数据设计根据问题设计,进行数据设计定义一个包含学号,姓名,成绩三个成员的结构体类型,作为学生信息的储存类型;定义一个结构体的数组存放若干学生记录;(3)函数设计根据功能设计,为学生成绩分析软件设计如下函数来实现学生成绩分析软件数据的输入数据的处理数据的保存统计各分数段人数及所占比例,和分数最高的人的学号,名字和分数;低于,高于,等于,平均成绩的人数。定义一个结构体数组,然后将stuiu.txt数据输入进去将所得的数据保存到stuout.txt中程序各模块的功能。open():函数原型 void Read(),是数据输

5、入函数,从磁盘数据文件 stuin.txt 中读取学生初始信息,储存到程序中对应的结构体数组中。deal():函数原型 void solve(),显示统计各分数段学生人数及所占百分比,显示高于,等于,低于平均成绩的的人数和最高成绩同学的学号,姓名,成绩(同时显示)并且将所得到信息存储到 stuout.txt 文件中。main():函数原型 void main,是学生成绩分析系统的主函数,控制各功能函数模块的调用,实现整个程序的各项功能。(4)函数的调用关系以上函数的调用关系如图所示。3、详细设计(1) 函数的设计main 函数open 函数 deal 函数1. Void mian()函数mai

6、n 函数的模块流程图如图所示2. void open()函数流程图模块流程图如图所示开始变量定义函数声明调用 read 函数结束调用 void 函数定义函数中的所需变量成功打开磁盘文件从文件中读取学生信息输入到结构体中输出“can not open file”Y N把记录的条数记入变量 n 中,关闭数据文件函数内部定义 n=0;(3)void deal()函数模块的设计如图所示返回主函数定义下标变量 I,h,l,定义 5 个计数器变量,存放个分数段人数以只读方式打开文件成绩=90NYY求平均成绩,求最高分数,并输出最高成绩学生的信息ScoeraverageScoer=80成绩=70成绩=60成

7、绩max ) max = si.score;average += si.score; average /= n;puts(最高分的人:);fputs(最高分的人: n,fp);for(i=0;i average ) h+;else e+;if( si.score=90 ) score90_100+;else if( si.score=80 ) score80_89 +;else if( si.score=70 ) score70_79 +;else if( si.score=60 ) score60_69 +;else score0_59 +;if( si.score max ) contin

8、ue;printf(%s %s %.0lfn,si.num,si.name,si.score); fprintf(fp,%s %s %.0lfn,si.num,si.name,si.score); printf(n);fprintf(fp,n);printf(平均成绩:%lfn,average);printf(高于平均 %d 人n,h);printf(等于平均 %d 人n,e);printf(低于平均 %d 人n,l);fprintf(fp,平均成绩: %lfn,average);fprintf(fp,高于平均 %d 人n,h);fprintf(fp,等于平均 %d 人n,e);fprintf

9、(fp,低于平均 %d 人n,l);puts();fputs(,fp);printf(优秀(90100) %d 人数, 百分比;%.1f%n,score90_100,100.0*score90_100/n);printf(良好(8089 ) %d 人数, 百分比;%.1f%n,score80_89 ,100.0*score80_89 /n);printf(中等(7079 ) %d 人数, 百分比;%.1fn,score70_79 ,100.0*score70_79 /n);printf(及格(6069 ) %d 人数, 百分比;%.1f%n,score60_69 ,100.0*score60_

10、69 /n);printf(不及格(0050 ) %d 人数, 百分比;%.1f%n,score0_59 ,100.0*score0_59 /n);fprintf(fp,优秀 (90100) %d 人数, 百分比;%.1f%n,score90_100,100.0*score90_100/n);fprintf(fp,良好 (8089 ) %d 人数, 百分比;%.1f%n,score80_89 ,100.0*score80_89 /n);fprintf(fp,中等 (7079 ) %d 人数, 百分比;%.1f%n,score70_79 ,100.0*score70_79 /n);fprintf

11、(fp,及格 (6069 ) %d 人数, 百分比;%.1f%n,score60_69 ,100.0*score60_69 /n);fprintf(fp,不及格 (0050 ) %d 人数, 百分比;%.1f%n,score0_59 ,100.0*score0_59 /n);fclose(fp); printf(n 结果已经写入文件%sn,fileO); /函数的功能将最高成绩的人的信息输出,输出高于,低于,等于平均成绩的人数,求出不同分数段的人所占的比例void main( )int i=0;open();deal();getchar(); 五、 调试过程中的问题在调试的过程中出现了不少的

12、bug,警告和一些其他的问题。 (1)首先,为了进行百分比的显示,进行了一番的调试,首先需要进行百分号的显示,用两个百分号进行百分号的打印,然后再定义一下数字的输出格式,拿各分数段成绩除以总的人数再乘以 100。这样得到的组合就是一个百分比数。 (2)在定义数组存储数据的时候我只定义了存放 50 个数据的一维数组结果出现了错误,我的数据是 100个不能存放完我的所有的数据,所以我根据 vc 提供的提示将 file1 和 file2 的长度改为了 100,这样就能很好的运行。(3)对于 deal 函数的设计,deal 函数是我这个函数设计的关键也是最复杂的部分。如果不定义 typedef str

13、uct 类型的数组就会有后面无法输出,还有就是如何输出分数最高人的信息我运用了比较的方法,将最高人的信息赋予了max,再输出这个信息。 (4)对于一些警告和小的 bug,根据 vc+的反馈双击信息,然后根据提示进行逐条的修改。比如说:没有对定义的字符 int i 赋予初始值就会有一个警告等一些小的问题。六、 总结课程设计是锻炼同学们实践能力的重要环节,是对学生实践能力的考察,应用,和锻炼。对以后我们从事相关工作的能力的一次锻炼和提升,对我们未来的发展十分重要。C 语言课程设计不仅是一门理论课还是一门实践课,不仅需要扎实的理论基础,没有实践的动手能力和独立思考的能力是远远不够的,难免会遇到各种各样的问题,同时在设计之中发现了自己的不足之处,对以前的所学过的知识理解得不够深刻,掌握的不够牢固,不如说指针通过这次课程设计之后,在一定程度上我把以前的 C 语言知识重新的温故了一遍。本次课程设计用到了指针和结构体这对于我来说是一门全新的知识,开始设计难免会遇到特别大的问题,经过了很长时间通过资料的学习,和不断地实践操作我慢慢的熟悉了基本的指针和结构体的使用,能进行简单的函数操作。同时在本次课程实践中多谢我的计算机系的同学的帮助,我从同学那得到了许多的帮助,在此表示感谢。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号