版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南科技大学综合程序设计报告成绩分析问题学院: 电气工程学院年级专业: 电子 161学号:161404110104学生姓名: 李恺指导教师:赵老师1、题目内容和要求(重述)C 语言综合训练是为了提高学生综合使用本学期我们所学的 C 语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用 C 语言设计一个大型程序,并提供相关的设计文档和源程序,从网站提交。1、C 语言综合训练程序设计要求已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放:1001 stuname1 891002 stuname2 781003 st
2、uname3 60.1100 stuname100 87请按照如下要求编写程序:a.定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;b. 将文本文件的内容读入到结构体数组中;c.显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);d. 显示平均成绩高于、低于和等于平均成绩的人数;e.显示成绩为优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(059)的人数和所占百分比;f. 将以上显示的信息存放到 stuout.txt 文件中;2、C 语言综合训练设计报告要求a.结合教材第二章的内容,写出本次综合训练的分析文档;b. 文档要求以 WOR
3、D 排版,语言简练,条理清楚;c. 测试过程中遇到的主要问题及采取的解决措施;e. 文档以“设计报告.DOC”名字保存。3、作业提交要求:a需要提交的文件:源程序、可执行文件以及stuin.txt、stuout.txt 文件和设计报告.DOC 文件、设计报告txt 版。b.所有提交文件保存在一个文件夹中,文件夹名字为“专业班级姓名”,如“电气 162 张三”;c设计报告.txt使用设计报告.doc另存为 TXT类型得到,课程设计报告.txt将用计算机做复制比检测。特别强调所有命名文件不要加空格。4、作业提交截止日期:2017/5/22,以班级为单位提交。2、总体设计(框图请用 web 版视图查
4、看)(1)功能设计(2)数据设计根据问题设计,进行数据设计定义一个包含学号,姓名, 成绩三个成员的结构体类型,作为学生信息的储存类型; 定义一个结构体的数组存放若干学生记录;(3)函数设计根据功能设计,为学生成绩分析软件设计如下函数来实现程序各模块的功能。open():函数原型 void Read(),是数据输入函数,从磁盘数据文件 stuin.txt 中读取学生初始信息,储存到程序中对应的结构体数组中。deal():函数原型 void solve(),显示统计各分数段学生人数及所占百分比,显示高于,等于,低于平均成绩的的人数和最高成绩同学的学号,姓名,成绩(同时显示)并且将所得到信息存储到
5、stuout.txt 文件中。main():函数原型 void main,是学生成绩分析系统的主函数, 控制各功能函数模块的调用,实现整个程序的各项功能。(4)函数的调用关系以上函数的调用关系如图所示。3、详细设计(1)函数的设计1. Void mian()函数main 函数的模块流程图如图所示变量定义函数声明调用 read 函数调用 void 函数2. void open()函数流程图模块流程图如图所示定义函数中的所需变量NY成功打开磁盘文件从文件中读取学生信息输入到结构体中输出“can not file”把记录的条数记入变量 n 中,关闭数据文件函数内部定义 n=0;(3)void dea
6、l()函数模块的设计如图所示定义下标变量 I,h,l,定义 5 个计数器变量,存放个分数段人数求平均成绩,求最高分数,并输出最高成绩学生的信息以只读方式打开文件NContinueYScoeraverageh 加一NYl 加一Scoer=90优秀人数加一NYY成绩=80良好人数加一N成绩=70中等人数加一NY成绩=60N及格人数加一Y成绩=60不及格人数加一输出 h.l,e除以总数,以百分比形式输出返回主函函数内部定义;int i;int h=0,e=0,l=0;intscore90_100=0,score80_89=0,score70_79= 0,score60_69=0,score0_59=
7、0;char sss81 = ;(2)结构体设计根据问题分析,进行数据的设计,定义一个包含学号,姓名,成绩三个成员的结构体类型,作为学生信息记录的存储类型;定义一个符号常量作为数组的长度。定义一个学生信息的结构体类型:typedef struct student /*定义结构体*/ char name50; char num50; double score;stu;stu student,s1000;四、 源代码#include stdio.h #include stdlib.h typedef struct student /*定义结构体*/char name50; char num50;
8、double score;stu;stu student,s1000; int n;double max; double average;char file1100 = stuin.txt; char fileO100 = stuout.txt;void open()n = 0;FILE *fp; if(fp=fopen(file1,r)=NULL) /*以只读打开文件*/printf(cannot open file); getchar();exit(0);while( fscanf(fp,%s%s%lfn,sn.num,,&sn.score)!=EOF /* 从文件读*/ )
9、n+;fclose(fp);/函数功能将文件中的数据写入结构体中void deal()int i;int h=0,e=0,l=0;int score90_100 = 0,score80_89 = 0,score70_79 = 0,score60_69=0,score0_59=0;char sss81 = ; FILE * fp;if(fp=fopen(fileO,w)=NULL) /* 以 只 读 打 开 文 件 */ printf(cannot open file);getchar(); exit(0);average = 0;max = 0; for(i=0;i max ) max = s
10、i.score; average += si.score;average /= n;puts(最高分的人:);fputs(最高分的人:n,fp); for(i=0;in;i+)if( si.score 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 +;elsescore0_59+;if( si.score max ) co
11、ntinue;printf(%s%s%.0lfn,si.num,,si.score);fprintf(fp,%s%s%.0lfn,si.num,,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); fpri
12、ntf(fp, 等 于 平 均 %d 人 n,e); fprintf(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,score6
13、0_69 ,100.0*score60_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
14、(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();五、 调试过程中的问题在调试的过程中出现了不少的 bug,警告和一些
15、其他的问题。(1)首先,为了进行百分比的显示,进行了一番的调试,首先需要进行百分号的显示,用两个百分号进行百分号的打印,然后再定义一下数字的输出格式,拿各分数段成绩除以总的人数再乘以 100。这样得到的组合就是一个百分比数。(2)在定义数组存储数据的时候我只定义了存放 50 个数据的一维数组结果出现了错误,我的数据是 100 个不能存放完我的所有的数据,所以我根据 vc 提供的提示将 file1 和 file2 的长度改为了 100,这样就能很好的运行。(3)对于 deal 函数的设计,deal 函数是我这个函数设计的关键也是最复杂的部分。如果不定义 typedefstruct 类型的数组就会有后面无法输出,还有就是如何输出分数最高人的信息我运用了比较的方法,将最高人的信息赋予了max,再输出这个信息。(4)对于一些警告和小的 bug,根据 vc+的反馈双击信息,然后根据提示进行逐条的修改。比如说:没有对定义的字符 inti 赋予初始值就会有一个警告等一些小的问题。六、 总结课程设计是锻炼同学们实践能力的重要环节,是对学生实践能力的考察,应用,和锻炼。对以后我们从事相关工作的能力的一次锻炼和提升,对我们未来的发展十分重要。C 语言课程设计不仅是一门理论课还是一门实践课, 不仅需要扎实的理论基础,没有实践的动手能力和独立思考的能力是远
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《CJ 202-2004建筑排水系统吸气阀》专题研究报告
- 2026年AI的双重价值:助力气候正向效应与推动能源转型报告-
- 山东省济南市名校联考2025-2026学年高一上学期1月阶段性检测英语试卷(含答案无听力原文及音频)
- 2025年阳江职业技术学院马克思主义基本原理概论期末考试模拟题及答案解析(必刷)
- 2024年盱眙县招教考试备考题库含答案解析(夺冠)
- 2025年晋宁县招教考试备考题库带答案解析(必刷)
- 2025年雄县招教考试备考题库带答案解析
- 2024年西安航空职工大学马克思主义基本原理概论期末考试题及答案解析(必刷)
- 2025年青县招教考试备考题库附答案解析
- 2024年西南科技大学城市学院马克思主义基本原理概论期末考试题含答案解析(必刷)
- 2025年农村电商直播基地农业产品上行解决方案报告
- 农村承包土地合同范本
- 吉利汽车开发流程
- 五年级数学下册 分层训练 2.1 因数和倍数 同步练习 (含答案)(人教版)
- 护理部主任年终述职
- 电力行业安全生产操作规程
- 螺杆压缩机PSSR检查表
- GB/T 4937.34-2024半导体器件机械和气候试验方法第34部分:功率循环
- TCALC 003-2023 手术室患者人文关怀管理规范
- 中药热奄包在呼吸系统疾病中的应用研究
- HACCP计划年度评审报告
评论
0/150
提交评论