处理简单的数据文件.docx
《处理简单的数据文件.docx》由会员分享,可在线阅读,更多相关《处理简单的数据文件.docx(11页珍藏版)》请在冰豆网上搜索。
处理简单的数据文件
沈阳航空工业学院
课程设计
学号
班级
姓名
指导教师
年月日
沈阳航空工业学院
课程设计任务书
一、课程设计题目:
处理简单的数据文件
二、课程设计工作时间:
三、课程设计内容:
用C语言编写软件完成以下任务:
已知一个文件(file08.dat,由指导教师提供)中有10个整型数据,请把这些数据读入到数组中,按照由小到大的顺序排列后,再写入到另外一个文件myfile.dat中。
四、课程设计要求:
◆贯彻结构化程序设计思想。
◆用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
◆用户界面中的菜单至少应包括“显示file08.dat数据”、“生成myfile.dat文件”、“显示myfile.dat数据”、“退出”4项。
◆代码应适当缩进,并给出必要的注释,以增强程序的可读性
程序质量:
五、课程设计说明书
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
◆封面
◆课程设计任务书
◆目录
◆需求分析(分析题目的要求)
◆程序流程图(总体流程图和主要功能模块流程图)
◆核心技术的实现说明及相应程序段
◆个人总结
◆参考资料
◆源程序及适当的注释
指导教师:
学生签名:
目录
一、需求分析1
二、程序流程图1
三、核心技术的实现说明及相应程序段1
四、个人总结1
五、参考文献1
六、源程序1
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
从内存中读取file08.dat数据,并显示出来(xiansfile08);从file08.dat里读出数据,按照从小到大的顺序排列,再存入myfile.dat文件中(shengcmyfile);从myfile.dat中读取排列好的数据,显示出来(xiansmyfile).
1、显示file08.dat数据:
主要实现程序从内存中读取指定的数据,并把这些数据显示出来.
2、生成myfile.dat文件:
先从file08文件中读取数据,再将这些数据按从小到大的顺序排列,再将排列好顺序的数据写到新生成的myfile文件中去.
3、显示myfile.dat数据:
从myfile文件中把数据显示出来。
除了上述三个函数外,在主函数中还有菜单程序,按1表示显示file08.dat数据,按2表示生成myfile.dat文件,按3表示显myfile.dat数据,按4表示结束程序.
二、程序流程图
1、程序总体结构图
当
(1)
输入n=1?
是否
显示
xiansshuju
输入n=2?
是否
生成
shengc
输入n=3?
是否
显示
xians
n=4
退出
图1程序总体结构图
定义10个整形数据结构体数组
inti;
FILE*fp
for(“F:
\\课设\\相关数据\\file08.dat”,“rb”)
是否
for(i=0;i<0;i++)
fread(&a[i],2,1,fp)
关闭指针fp指向的文件
2、具体功能框图
(1)显示file08.dat数据
图2显示file08.dat数据
(2)生成myfile.dat文件
inti=0,t,j;
FILE*fp
Fp=fopen(“F:
课设\\相关数据\\file08.dat”,”rb”)==NULL
是否
输出cannotopen
Exit(0)
for(I=0;i<10;i++)
fread(&a[i],2,1,fp)
关闭文件
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
a[i].n>a[i+1].n
是否
t=a[i].n
a[i].n=a[i+1].n
a[i+1].n=t
Fp=fopen(“myfile.dat”,”wb”)==NULL
是否
输出
Cannotopen
j=0;j<10
fwrite(&a[j],2,1,fp)
Exit(0)
关闭文件
图3生成myfile.dat文件
(3)显示myfile.dat数据
inti;
FILE*fP
fp=fopen("myfile.dat”,”rb”)==NULL
是否
i=0;i<10;
fwrite(&a[i],2,1,fp)
i=0;i<10;
输出a[i].n
关闭指针fp指向
图4显示myfile.dat数据
三、核心技术的实现说明及相应程序段
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,显示file08.dat数据,生成myfile.dat文件,显示myfile.dat数据,为核心的部分,下面分别进行说明。
1、显示file08.dat数据
{
inti;/*定义一个整型变量*/
FILE*fp;/*定义指针函数*/
fp=fopen("F:
\\课设\\相关数据文件\\file08.dat","rb");/*以二进制读的形式打开文件*/
for(i=0;i<10;i++)
fread(&a[i],2,1,fp);
for(i=0;i<10;i++)
printf("%d\n",a[i].n);
fclose(fp);/*关闭文件*/
}
2、生成myfile.dat文件
该函数的核心内容是采用冒泡法排序,具体程序如下:
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i].n>a[i+1].n)/*比较前后两个数*/
{
t=a[i].n;
a[i].n=a[i+1].n;
a[i+1].n=t;/*进行数据交换,小的放在前面*/
}
3、显示myfile.dat数据
{
inti;
FILE*fp;
fp=fopen("myfile.dat","rb+");{
for(i=0;i<10;i++)
fwrite(&a[i],2,1,fp);
for(i=0;i<10;i++)
printf("%d\n",a[i].n);;
fclose(fp);
}
四、个人总结
为期一周的课程设计很快就结束了,其实我们是在上学期期末就拿到自己的题目的,整个假期也没有什么头绪,只是又重新温习了一下C语言的内容,从看到题目就感觉原来C语言也可以这样应用而并不是简单的编程设计,它的每一步,每一个程序,甚至每一个函数都是变幻莫测的,而自己原来只是懂得一点皮毛而已,通过这次的课程设计使我加深了对C语言的了解,也提高了对C语言的应用能力。
我这次的课程设计内容,主要是应用文件的打开和数据的读取等多方面的知识,其中也运用到冒泡排序法,完成由小到大的排列,刚开始自己的思路还是不怎么清晰,在老师和同学的帮助下和自己看书查资料之后,终于完成了整个任务。
通过这次的课程设计我发现自己掌握的知识还是不扎实,一些的细小的方面平时没有注意,导致应用时出错,从而完成任务的同时也检验了我们将所学知识应用于实践的能力,增强了自己对克服困难的信心和坚持,使我收获颇多。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
structnumber
{intn;
}
a[10];
voidxiansshuju()
{
inti;
FILE*fp;
fp=fopen("F:
\\课设\\相关数据文件\\file08.dat","rb");
for(i=0;i<10;i++)
fread(&a[i],2,1,fp);
for(i=0;i<10;i++)
printf("%d\n",a[i].n);
fclose(fp);
}
voidshengc()
{
inti=0,t,j;
FILE*fp;
if((fp=fopen("F:
\\课设\\相关数据文件\\file08.dat","rb"))==NULL)
{
printf("can'topen\n");
exit(0);
}
for(i=0;i<10;i++)
fread(&a[i],2,1,fp);
fclose(fp);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)/*运用冒泡排序法,完成从小到大的排序*/
if(a[i].n>a[i+1].n)
{
t=a[i].n;
a[i].n=a[i+1].n;
a[i+1].n=t;
}
if((fp=fopen("myfile.dat","wb"))==NULL)
{
printf("can'topen\n");
exit(0);
}
for(j=0;j<10;j++)
fwrite(&a[j],2,1,fp);
fclose(fp);
printf("shengcmyfile\n");
}
voidxians()
{
inti;
FILE*fp;
fp=fopen("myfile.dat","rb+");
for(i=0;i<10;i++)
fwrite(&a[i],2,1,fp);
for(i=0;i<10;i++)
printf("%d\n",a[i].n);;
fclose(fp);
}
voidmain()
{
intch;
while
(1)
{
printf("1-显示file08.dat数据\n");
printf("2-生成myfile.dat文件\n");
printf("3-显示数据\n");
printf("4-退出\n");
printf("enteranumber(1-4):
\n");
scanf("%d",&ch);
switch(ch)
{
case1:
xiansshuju();break;
case2:
shengc();break;
case3:
xians();break;
case4:
exit(0);
}
}
}