1、C语言课程设计文件合并沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:学生成绩文件合并 院(系):理学院 专 业:信息与计算科学 班 级:14140101学 号:2011041401017姓 名:彭君君 指导教师: 丛丽晖完成日期: 2012年3月16日目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 1第2章 详细设计 22.1显示模块 22.2合并模块. 2第3章 调试分析 4第4章 使用说明与执行结果 5参考文献 7附 录(程序清单) 8第1章 概要设计1.1题目的内容与要求内容:将两个班学生成绩文件合并,产生一个有序文件并演示合并过程。
2、具体内容包括:1.学生成绩输入两个有序文件。2.将两个有序文件合并成一个有序文件。3.演示归并排序后的结果。要求:1.独立完成系统设计编码和调试。2.系统利用C语言实现。3.按照课程设计规范书写课程设计报告。4.熟练掌握基本的调试方法,并将程序调试通过。 1.2总体结构 本程序主要分为三个模块:显示模块:输入信息到文件,显示文本文件的内容。合并模块:将两个文件的内容合并到一个文件。排序模块:对文件中的内容按照一定顺序排列信息。图1.1 功能模块图 第2章 详细设计2.1显示模块输入要输入的文本文件名,能显示文件的内容,并将文件内容输出,流程如图2.2所示。图2.1 显示模块PAD图注释:1.
3、定义一个文件指针变量。2. 输入文件名,打开该文件。3. 循环输入一个个结构体,判断不是结束,循环输出。2.2 合并模块. 1.输入文件A的信息。 2输入文件B的信息。 3.一个循环,根据是否到达文件信息尾部结束。 4.根据sum值进行大小比较。 5. 将信息有序输入文件C。第3章 调试分析1.在编译时,出现了不能运行程序的警告,马上发现是没有写头文件 #include stdax.h,后立马添上。2.在输出C文件信息时,由于没有按照数组形式输出,后导致输出紊乱,后根据信息输入的写法编写了信息输出编码。3.j的初值问题:因为j的初值默认为0,可能造成主模块中的while语句不执行,所以要对j赋
4、非0初值;4.复制模块的定义指针问题: 未定义文件指针*f1,*f2,*f3.5.关于合并后的文件中多出字符:因为文本文件结束后还有回车键,所以会多出字符,应该用feof语句来判断文本文件的结束。第4章 使用说明与执行结果 1.输入信息到文件A。2.输入信息到文件B。2.文件合并后的结果。 参考文献1 张长海.C语言程设计M.北京:高等教育出版社,20062 谭浩强.C程序设计M.北京:清华大学出版社,2005.73 张长海.陈娟.C程序设计M.北京:高等教育出版社,20044 严蔚敏.吴伟民.数据结构(C程序版)M.北京:清华大学出版社,5 湛为芳 高效实用 Visual C+库函数设计 清
5、华大学出版社。 .附 录(程序清单)#include stdafx.h#include stdio.h#include stdlib.hstruct studentchar name10; /建立结构体student int score3; int sum; stu20;struct filechar name10; /建立结构体file int score3; int sum; fil110;struct Filechar name10; int score3; int sum; fil210;void main() FILE *f1,*f2,*f3; int i,j,sum1; char
6、ch; for(i=0;i10;i+) printf(nFile A input score of student %d:n ,i+1); printf(Name:); scanf(%s,stui.name); sum1=0; for(j=0;j3;j+) printf(score%d:,j+1); scanf(%d,&stui.scorej); stui.sum=sum1; sum1+=stui.scorej; for(i=10;i20;i+) printf(nFile B input score of student %d:n ,i-9); /输入学生信息到数组 printf(Name:)
7、; scanf(%s,stui.name); sum1=0; for(j=0;j3;j+) printf(score%d:,j+1); scanf(%d,&stui.scorej); sum1+=stui.scorej; stui.sum=sum1; printf(n合并后C文件中学生成绩如下:n); if(f1=fopen(G:c语言File A.dat,w)=NULL) /打开文件A printf(文件打开出错); exit(0); for(i=0;i10;i+) fwrite(&stui,sizeof(struct student),1,f1); /信息输入文件A if(f2=fopen
8、(G:c语言File B.dat,w)=NULL) /打开文件B printf(文件打开出错); exit(0); for(i=10;ifil2j.sum) fwrite(&fil1i,sizeof(struct student),1,f3); fread(&fil1i+1,sizeof(struct student),1,f1);i+; else fwrite(&fil2j,sizeof(struct student),1,f3);fread(&fil2j+1,sizeof(struct student),1,f2);j+; while(!feof(f1) fwrite(&fil1i,siz
9、eof(struct student),1,f3) ; while(!feof(f2) fwrite(&fil2j,sizeof(struct student),1,f3) ; fclose(f1); fclose(f2); for(i=0;i20;i+) fread(&stui,sizeof(struct student),1,f3); printf(name:,stui.name); for(j=0;j3;j+) printf(score%d:%d,j+1,stui.scorej); fclose(f3); /输出文件C中排序后的信息课程设计总结:通过本次课程设计,进一步熟悉和了解了文件合并设计的基本设计思想,加深了对于结构体文件的认识。此程序为学生成绩文件合并,可以简单的解决一些实际生活中的学生成绩排序合并问题。学会选择合适地数据结构,并定义数据结构的结构体;学会根据程序所要完成的基本要求和程序实现提示,设计出完整的算法;学会按照格式写书课程设计说明书及任务书。遇到问题时应当端正态度,本着自己解决问题的决心。不怕困难,提高自己的专业素养。在程序的编写和实现当中,发现了自己对于数据结构的掌握还不是很全面,对两种查找的要求不明白。在今后的学习当中,应当查缺补漏,努力完善自己的实践能力。指导教师评语:指导教师(签字): 年 月 日课程设计成绩
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1