模拟文件管理说明书Word文档下载推荐.docx
《模拟文件管理说明书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《模拟文件管理说明书Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
目录
摘要2
正文3
1.问题描述3
2.设计目的3
3.设计要求3
4.详细设计4
4.1界面设计4
4.2算法设计4
4.2.1数据结构4
4.2.2算法设计4
4.3流程图7
5.测试8
设计总结9
参考文献10
致谢11
附录:
源程序代码12
摘要
用高级语言编写和调试一个文件字节倒写的程序。
选择一个适合长度的磁盘文件实现其字节倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
根据题目的要求,我们首先要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
关键字:
文本文件临时文件字节倒写
正文
1.问题描述
选择一个打开文件和临时文件实现其字节倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
2.设计目的
学生通过该题目的设计过程,可以初步掌握操作系统中有关磁盘文件读写的原理、软件开发方法并提高解决实际问题的能力。
通过对文件进行操作加强对文件功能及操作的深化,了解操作系统的文件工作模式。
加强学生理论联系实际的能力。
本实验借助c语言来描述文件的简单操作,实现了对文件管理机制的模拟。
3.设计要求
(1)分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。
(2)设计合适的测试用例,对得到的运行结果要有分析。
(3)设计中遇到的问题,设计的心得体会。
(4)文档:
课程设计打印文档每个学生一份,并装在统一的资料袋中,资料袋前面要贴有学校统一的资料袋封面。
(5)光盘:
每个学生文档和程序资料分别建在一个以自己学号和姓名命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级姓名命名的文件夹下,刻录成5寸光盘,并复制四份(共五张内容相同的光盘),放在一个专门的资料袋中,不必再装软盘。
4.详细设计
4.1界面设计
printf("
putdatafromfile:
%stofile%sfinished!
\n"
SRC_NAME,TMP_NAME);
deletetheoldfile:
%ssuccess!
SRC_NAME);
%sfail!
renametheoldfile:
%stonewfile:
TMP_NAME,SRC_NAME);
4.2算法设计
4.2.1数据结构
#defineSRC_NAME"
test.txt"
//目标文件
#defineTMP_NAME"
testtmp.txt"
//临时转换文件
#defineNEW_LINE_TOKEN10
FILE*fpSrc=NULL;
//文件指针指向”test.txt”
FILE*fpDst=NULL;
//文件指针指向”testtmp.txt”
longlCount;
//文件中字符串长度
intnData;
intnBakData;
4.2.2算法设计
(1)编写打开文件操作
打开“test.txt”文件:
fpSrc=fopen(SRC_NAME,"
rt"
);
if(NULL==fpSrc)
{
printf("
open%sfileerror,maybenotcreate!
return-1;
}
打开“testtmp.txt”文件:
fpDst=fopen(TMP_NAME,"
wt"
if(NULL==fpDst)
create%sfileerror,pleasecheck!
}
(2)字节倒写算法实现
本实验主要是通过对文件指针的操作,来实现对文件中字符的操作。
其主要算法如下所示:
while(lCount-->
=0)
nData=fgetc(fpSrc);
if(NEW_LINE_TOKEN==nData)
if(NEW_LINE_TOKEN==nBakData){
fseek(fpSrc,lCount,SEEK_SET);
nBakData=-1;
continue;
fputc(nData,fpDst);
nBakData=nData;
(3)临时文件的移除
if(0==remove(SRC_NAME))
else
if(0==rename(TMP_NAME,SRC_NAME))
}
4.3流程图
5.测试
1.运行程序,输入文件内容:
2.按回车,显示倒写的结果:
设计总结
本次课程设计完成了文件操作问题全部过程,结果满足设计要求,验证无误。
设计过程中也遇到不少困难,尤其是关于文件创建与输出程序的设计实现。
特别需要注意的是由于进程的数据共享会带来其他一些问题,各个循环中的循环小模块需要严格区别开来,才能使输出结果正确有序。
这些正是编写多进程程序时最需要注意的地方。
通过该题目的设计过程,初步掌握操作系统中有关磁盘文件读的原理、软件开发方法并提高解决实际问题的能力。
了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。
本次设计,我较好地掌握了通过研究Linux的进程机制和文件的各种操作的全过程,尤其是对文件管理有了更深的理解,开拓了思路,锻炼了实践动手能力,达到了课程设计目的。
在设计的过程中,通过查阅各种资料我还了解了与操作系统有关的其他知识,不仅加强了原有知识的巩固,而且扩大了知识面,积累了越来越多的知识和动手的经验,为日后的工作和学习奠定了基础。
所以,在以后的学习和生活中,我们要做个有心人,一点一滴的积累经验,储备越来越多的知识,我相信在将来的某一天我们的努力一定会得到回报,我们一定会取得骄人的成绩。
参考文献
1.汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.
2.王清,李光明.《计算机操作系统》.冶金工业出版社.
3.孙钟秀等.操作系统教程.高等教育出版社
4.曾明.
Linux操作系统应用教程.陕西科学技术出版社.
5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.
6.孟静,
操作系统教程--原理和实例分析.高等教育出版社
7.周长林,计算机操作系统教程.高等教育出版社
8.张尧学,计算机操作系统教程,清华大学出版社
9.任满杰,操作系统原理实用教程,电子工业出版社
致谢
能够完成这次操作系统课程设计,我要感谢我的指导老师在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,我的能力得到了提高,养成了科学、严谨学习习惯。
李老师在我们的日常学习中给了我们许多启发性的建议并使我们积累了大量的操作系统知识,为我们的课程设计奠定了坚实的基础。
在本次课程设计当中,有很多同学帮助我完成对程序的测试,使得我的很多疑问得到解决,进一步巩固了所学习的内容,对我的课程设计的完成也起了不小的作用,在他们的帮助下,我才能够比较好的完成着次课程设计,在此一并表示感谢。
源程序代码
#include"
stdio.h"
string.h"
intmain(void)
{
FILE*fpSrc=NULL;
fseek(fpSrc,0L,SEEK_END);
lCount=ftell(fpSrc);
lCount--;
;
//removetheEOFtoken
while(lCount-->
nData=fgetc(fpSrc);
if(NEW_LINE_TOKEN==nBakData)//removethetwoNEW_LINE_TOKEN
fclose(fpSrc);
fclose(fpDst);
if(0==remove(SRC_NAME))
return0;