49处理简单的数据文件.docx
- 文档编号:7621044
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:121.89KB
49处理简单的数据文件.docx
《49处理简单的数据文件.docx》由会员分享,可在线阅读,更多相关《49处理简单的数据文件.docx(12页珍藏版)》请在冰豆网上搜索。
49处理简单的数据文件
沈阳航空工业学院
课程设计
学号200704033049
班级7403302
姓名关善龙
指导教师王晓岩
2009年3月5日
沈阳航空工业学院
课程设计任务书
院系:
航空宇航工程学院专业:
飞行器设计与工程班级:
7403302
学号:
200704033049题目:
处理简单的数据文件
一、课程设计时间
2008~09第2学期第1周,共计1周,20学时。
二、课程设计内容:
用C语言编写程序完成以下任务:
已知文件file10.dat(由教师提供)中有5个加密后的整型数据,编程序实现如下功能:
(1)把这些数据读入到数组中,解密并显示。
(2)将解密后的数据按照由大到小的顺序排列,并显示出来。
(3)将解密后的数据写入到另外一个文件myfile.txt中。
提示:
一个整数与另一个整数“异或”运算2次,结果还是原来的整数,即:
若A^K的值为T,则T^K的值必为A。
请参考教材中有关“位运算”的内容。
课程设计要求:
1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“显示file10.dat数据”、“生成myfile.txt文件”、“显示myfile.txt数据”、“退出”4项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段6
四、课设总结11
五、参考文献11
六、源程序12
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
显示file10.dat数据(Printdate),
排序并生成myfile.dat文件(save),
显示myfile.dat数据(printxt)。
在这些函数当中,每个函数的实现严格按照题目的要求。
1、显示file10.dat数据主要实现程序最初运行时打开此文件,并把文件中的7个整形数据读入到数组中;
2、生成myfile.dat文件实现的功能是将数组中的数据按由小到大的顺序排列后,写入myfile.dat文件中,并在屏幕上显示数据是否写入文件;
3、显示myfile.dat数据实现的功能是将myfile.dat文件中的数据显示出来。
除上面介绍的功能之外,程序还具有清屏,退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)显示file10.dat数据(printdat)
图2显示file10.dat数据
(2)生成myfile.dat文件(save)
图3读取学生数据
(3)显示myfile.dat数据(printtxt)
图4显示myfile.dat数据
三、核心技术的实现说明及相应程序段
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,显示file10.dat数据、生成myfile.dat文件、显示myfile.dat数据是程序中较为核心的部分,下面分别进行说明。
1、显示file10.dat数据
该函数的核心内容是将文件file10.dat中的数据显示到屏幕上。
该函数执行时,先在I盘中找到file10.dat文件,然后将此文件以只读方式打开。
再将文件中的7个整型数据读入到数组中。
运行时,在屏幕上显示出了这7个数据。
具体的程序段如下:
voidprinttxt()/*定义函数printtxt,将文件中的数据显示到屏幕上*/voidPrintdate(shortm,short*p)//解码子函数
{intj,i;
shortn[6];
for(j=0;j<6;j++)
n[j]=*(p+j+1)^m;//异或运算解码
printf("解码后的数据是:
\n");
{for(i=0;i<6;i++)
printf("%7d",n[i]);
}
printf("\n");
2、生成myfile.dat文件
该函数的核心内容是将数据按照由小到大的顺序排列后,放入myfile.dat文件中。
该函数执行时,首先将文件file10.dat以只读方式打开,再将文件myfile.dat以只写方式打开,这样才可以保证以前已经存在的数据不丢失。
然后把文件file10.dat中的数据读出,并用起泡法进行由小到大排序,再将排序后的数据写入文件myfile.dat中,并将该文件保存在D盘中。
运行时,若文件存在则在屏幕上显示出“此文件在D盘中”,若文件不存在则在屏幕上显示出“filewriteerror”。
具体程序段如下:
voidsave(shortm,short*p)//排序保存子函数
{
intj,i,k;
shortn[6],b;
for(i=0;i<6;i++)
n[i]=*(p+i+1)^m;
{for(j=0;j<5;j++)//冒泡法排序
for(k=0;k<5-j;k++)
if(n[k] b=n[k], n[k]=n[k+1], n[k+1]=b; } printf("文件数据排序完成! \n"); FILE*fp; if((fp=fopen("d: \\myfile.txt","wb"))==NULL) {printf("cannotopenfile\n"); return; } intt; for(t=0;t if(fwrite(&n[t],sizeof(n[t]),1,fp)==1)//写入myfile.txt程序 printf("文件数据%d已存入myfile.txt中.\n",n[t]); fclose(fp); } 3、显示myflie.dat文件 该函数的核心内容是将文件myfile.dat中的数据显示到屏幕上。 该函数执行时,先在D盘中找到myfile.dat文件,然后将此文件以只读方式打开,最后执行时在屏幕上显示新的数据。 具体的程序段如下: voidprinttxt() {shortnum[6],re; inti,j; FILE*fp=fopen("d: \\myfile.txt","r"); for(i=0;i<6;i++) {re=fread(&num[i],sizeof(num[i]),1,fp);//读出mffile.txt文件的数据 if(re==EOF)break; } printf("解码并由大到小排列的数据是: \n"); for(j=0;j<6;j++) printf("%5d",num[j]); printf("输出完成! \n"); fclose(fp); } 四、课设总结 C语言是国内地外广泛使用的一种计算机语言。 学习C语言课程可以准确掌握设计程序的思路,并且会用计算机语言编写程序,以实现所需处理的任务。 通过一周的课程设计,我对C语言课程有了更深的了解。 首先,我了解了C语言是一门有趣的课程。 通过上课时所学的内容,将它应用到编程中,再每编译程序时都会自己思考,思考程序的实际方法。 动手编程,上机调试,将书本内容活学活用,让我觉得C语言是一门充满乐趣的学科。 其次,我学会了编译较长的程序。 通常编译长程序时,可以把程序分成若干条调用函数进行编译,掌握其中规律,这样使我条理更清晰,易编程。 最后,在课程设计中,我对自己的学习也进行了查缺补漏。 查资料、翻书,纠正自己在编程时的错误,并且牢记自己不知道或忘记的知识点。 在这次编译程序中,我对自己的程序完成得比较满意。 我会在今后的学习中不断提高自己的编程能力,充实自己的知识。 在这次课程设计中,我还加入了自己的创新,将程序运行的过程显示出来,这样更加清晰明了。 如下: 1.程序运行时,首先在屏幕上出现菜单如下: 2.选择要查看的内容。 1)若要查看“显示file10.dat数据”,则在屏幕上输入1。 则屏幕上显示 2)若要查看“生成myfile.dat文件”,则在屏幕上输入2。 屏幕显示 (3)若要查看“显示myfile.dat数据”,则在屏幕上输入3。 屏幕上显示: 五、参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 六、源程序 #include"stdio.h" #include"conio.h"//其中定义了getch()函数。 #include"stdlib.h"//其中定义了system()函数。 #defineSIZE6 voidmenu() {puts("****************欢迎使用数据解密排序系统********************"); puts("1.解码并显示file10.dat数据"); puts("2.由大到小排序生成myfile.txt文件"); puts("3.显示myfile.txt数据(请先生成文件! )"); puts("4.清屏"); puts("5.退出程序"); } voidPrintdate(shortm,short*p)//解码子函数 {intj,i; shortn[6]; for(j=0;j<6;j++) n[j]=*(p+j+1)^m;//异或运算解码 printf("解码后的数据是: \n"); {for(i=0;i<6;i++) printf("%7d",n[i]); } printf("\n"); } voidsave(shortm,short*p)//排序保存子函数 { intj,i,k; shortn[6],b; for(i=0;i<6;i++) n[i]=*(p+i+1)^m; {for(j=0;j<5;j++)//冒泡法排序 for(k=0;k<5-j;k++) if(n[k] b=n[k], n[k]=n[k+1], n[k+1]=b; } printf("文件数据排序完成! \n"); FILE*fp; if((fp=fopen("d: \\myfile.txt","wb"))==NULL) {printf("cannotopenfile\n"); return; } intt; for(t=0;t if(fwrite(&n[t],sizeof(n[t]),1,fp)==1)//写入myfile.txt程序 printf("文件数据%d已存入myfile.txt中.\n",n[t]); fclose(fp); } voidprinttxt() {shortnum[6],re; inti,j; FILE*fp=fopen("d: \\myfile.txt","r"); for(i=0;i<6;i++) {re=fread(&num[i],sizeof(num[i]),1,fp);//读出mffile.txt文件的数据 if(re==EOF)break; } printf("解码并由大到小排列的数据是: \n"); for(j=0;j<6;j++) printf("%5d",num[j]); printf("输出完成! \n"); fclose(fp); } voidclear()//清屏子函数 {system("cls"); } voidmain() {menu(); shortnum[7]; shortm; inti,j,re; FILE*fp=fopen("d: \\file10.dat","r");//打开file.dat for(i=0;i<9;i++) {re=fread(&num[i],sizeof(num[i]),1,fp);//读取file.dat数据 if(re==EOF)break; } fclose(fp); m=num[0]; //for(j=0;j<7;j++)//可显示未解码前的数据 //printf("%9d",num[j]); intchoice; scanf("%d",&choice); while (1) { switch(choice) { case1: Printdate(m,num);break; case2: save(m,num);break; case3: printtxt();break; case4: clear();break; case5: return; } menu(); scanf("%d",&choice); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 49 处理 简单 数据文件