文件字节倒写实验说明书.docx
- 文档编号:27965840
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:18
- 大小:59.58KB
文件字节倒写实验说明书.docx
《文件字节倒写实验说明书.docx》由会员分享,可在线阅读,更多相关《文件字节倒写实验说明书.docx(18页珍藏版)》请在冰豆网上搜索。
文件字节倒写实验说明书
《操作系统》课程设计任务书
题目:
文件字节倒写实验
学生姓名:
秦文延学号:
11730116
班级:
11计算机科学与技术1班
题目类型:
软件工程(R)指导教师:
郭文娟
一、设计目的
学生通过该题目的设计过程,可以初步掌握操作系统中有关磁盘文件读写的原理、软件开发方法并提高解决实际问题的能力。
二、设计任务
1、了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。
2、用高级语言编写和调试一个文件字节倒写的程序。
选择一个适合长度的磁盘文件实现其字节倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
三、设计要求
1、分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。
2、设计合适的测试用例,对得到的运行结果要有分析。
3、设计中遇到的问题,设计的心得体会。
4、文档:
课程设计打印文档每个学生一份,并装在统一的资料袋中。
5、光盘:
每个学生的文档和程序资料建在一个以自己学号和姓名命名的文件夹下,刻录一张光盘,装入资料袋中。
四、提交的成果
1.设计说明书一份,内容包括:
1)中文摘要100字;关键词3-5个;
2)设计思想;
3)各模块的伪码算法;
4)函数的调用关系图;
5)测试结果;
6)源程序(带注释);
7)设计总结;
8)参考文献、致谢等。
2.刻制光盘一张。
五主要参考文献
1.汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.
2.王清,李光明.《计算机操作系统》.冶金工业出版社.
3.孙钟秀等.操作系统教程.高等教育出版社
4.曾明. Linux操作系统应用教程.陕西科学技术出版社.
5.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.
6.孟静, 操作系统教程--原理和实例分析.高等教育出版社
7.周长林,计算机操作系统教程.高等教育出版社
8.张尧学,计算机操作系统教程,清华大学出版社
9.任满杰,操作系统原理实用教程,电子工业出版社
六各阶段时间安排(共2周)
周次
日期
内容
地点
第1周
星期一~二
教师讲解设计要求
查找参考资料
教室
图书馆
星期三~五
算法设计,编程实现
教室
第2周
星期一~三
算法设计,编程实现
教室
星期四~五
检查程序,答辩
教室
2013年12月9日
摘要
用高级语言编写和调试一个文件字节倒写的程序。
选择一个适合长度的磁盘文件实现其字节倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节。
根据题目的要求,我首先要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
关键词:
文本文件;磁盘文件;字节倒写
目录
1绪论2
1.1概述2
1.2设计思想2
2伪码算法4
2.1数据结构4
2.2各模块的伪码算法4
3测试结果6
3.1调试分析6
3.2运行结果6
4总结8
参考文献9
致谢10
附录源程序代码11
1绪论
在现代计算机系统中,计算机系统由硬件和软件两部分组成。
操作系统是配置在计算机硬件上的第一次软件,是对硬件系统的首次扩充,在计算机系统中占据了特别重要的地位。
操作系统已成为现代计算机系统、多处理机系统、计算机网络、多媒体系统以及嵌入式系统中都必须配置的、最重要的系统软件。
用户的程序和数据,操作系统自身的程序和数据,甚至各种输入输出设备都是以文件形式出现的。
尽管文件有多种存储介质可以使用,如磁盘、软盘、光盘、闪存、记忆棒等,但是,它们都以文件的形式出现在操作系统的管理者和用户面前。
一个文件中所存储的可能是数据,也可能是程序的执行码,不同格式的文件通常都会有不同的操作。
对文件的操作可分为两类:
一是对文件自身的操作,主要实现文件的创建、删除、复制等;二是对记录的操作,例如在文件中查找一个记录。
而文件字节倒写实验即是实现对文件的具体操作,该设计首先需要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
1.1概述
随着计算机技术发展,计算机已经应用的各个领域,促进了各行各业的发展。
与此同时,人们对计算机的要求也越来越高,其中就包括对计算机操作系统的要求。
人们希望操作系统更加合理配置计算机硬件系统的有限资源,更方便操作计算机硬件系统。
计算机中大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。
如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。
显然,这是用户所不能胜任、也不愿意承担的工作。
于是,取而代之的便是在操作系统中又增加了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。
这不仅方便了用户,保证了文件的安全性,还可有效地提高系统资源的利用率。
文件字节倒写实验即是实现对文件的具体操作,该设计首先需要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
1.2设计思想
根据题目的要求,我首先要创建一个文本文件,在文件中输入要进行操作的内容。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误。
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,从而实现其字节倒写。
因此,我们首先编写一个程序实现创建一个文本文件,在此程序中我
用到了文件的读写生成操作
if((fp=fopen("test","w+"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
利用循环实现字节的输入
do{gets(str);
strcat(str,"\n");
fputs(str,fp);}
while(*str!
='\n');}
当输入空字节时循环结束并退出操作。
然后将文件中的内容按原有的顺序输出以检查文件内容是否有误,在此用到了文件的读打开操作
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
循环输出文件内容
while(!
feof(fp))
{fgets(str,8,fp);
printf("%s",str);}
最后将文件倒写,使该文件的最后一个字节成为第一个字节,而第一个字节成为最后一个字节,文件读打开
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
倒写输出while(!
feof(fp))
{str[i]=fgetc(fp);
i++;}
for(i=80;i>=0;i--)
printf("%c",str[i]);
2伪码算法
2.1数据结构
1、程序中用到的头文件有:
#include
#include
#include
#include
#include
#include
#include
2、采用的相关数据类型有:
char;int
2.2各模块的伪码算法
1.创建原始文件
charstr[80];/*定义文件长度*/
voidmain1();/*创建原始文件*/
voidmain2();/*显示文件内容*/
voidmain3();/*倒向显示文件内容*/
voidmain1(void)/*创建原始文件*/
{inti=0;
if((fp=fopen("test","w+"))==NULL)/*读写生成文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do
{scanf("%c",&str[i]);/*输入文件内容*/
strcat(str,"\n");/*加上一个新行符'\n'*/
fputs(str,fp);/*将字符串的内容写到文件中*/
i++;}
while(str[i-1]!
='\n');/*输入空串时结束*/
printf("\n");
}
2.显示文件内容算法
voidmain2(void)/*显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=0;i<80;i++)/*正向输出*/
printf("%c",str[i]);
printf("\n");}
voidmain3(void)/*倒向显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=80;i>=0;i--)/*反向输出*/
printf("%c",str[i]);}
main()/*主函数*/
{charstr[80];
/*各个单元函数依次执行,实现以下功能*/
printf("Input:
\n");
main1();/*执行函数
(1),创建test文件*/
printf("Outputinorder:
\n");
main2();/*显示文本内容*/
printf("Pourtowrite:
\n");
main3();/*倒向显示文件内容*/
}
3.倒向显示文件内容算法
#include
#include
#include
FILE*fp;/*声明文件结构体类型指针变量*/
charstr[80];/*定义文件长度*/
voidmain1();/*创建原始文件*/
voidmain2();/*显示文件内容*/
voidmain3();/*倒向显示文件内容*/
voidmain1(void)/*创建原始文件*/
{inti=0;
if((fp=fopen("test","w+"))==NULL)/*读写生成文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do
{scanf("%c",&str[i]);/*输入文件内容*/
strcat(str,"\n");/*加上一个新行符'\n'*/
fputs(str,fp);/*将字符串的内容写到文件中*/
i++;}
while(str[i-1]!
='\n');/*输入空串时结束*/
printf("\n");
}
voidmain2(void)/*显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=0;i<80;i++)/*正向输出*/
printf("%c",str[i]);
printf("\n");}
voidmain3(void)/*倒向显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=80;i>=0;i--)/*反向输出*/
printf("%c",str[i]);}
main()/*主函数*/
{charstr[80];
/*各个单元函数依次执行,实现以下功能*/
printf("Input:
\n");
main1();/*执行函数
(1),创建test文件*/
printf("Outputinorder:
\n");
main2();/*显示文本内容*/
printf("Pourtowrite:
\n");
main3();/*倒向显示文件内容*/
}
3测试结果
3.1调试分析
程序运行调试分析如图3.1
图3.1程序结构图
程序实现过程中遇到很多问题,从简单的c++语言到数据结构类型的定义以及算法设计,都有很多疑惑。
在不断地查询资料后终于解决了这些问题。
其中在查询过程中选择了快速查找和分类查找,通过对比可以选择最优的查询算法
3.2运行结果
1.运行程序,输入文件内容,显示结果如图3.2;
2.按回车,显示正写与倒写的结果,结果如图3.3。
图3.2
图3.3
4总结
本次课程设计完成了文件操作问题全部过程,结果满足设计要求,验证无误。
设计过程中也遇到不少困难,尤其是关于文件创建与输出程序的设计实现。
特别需要注意的是由于进程的数据共享会带来其他一些问题,各个循环中的循环小模块需要严格区别开来,才能使输出结果正确有序。
这些正是编写多进程程序时最需要注意的地方。
通过该题目的设计过程,初步掌握操作系统中有关磁盘文件读的原理、软件开发方法并提高解决实际问题的能力。
本次设计,我较好地掌握了进程机制和文件的各种操作的全过程,尤其是对文件管理有了更深的理解,开拓了思路,锻炼了实践动手能力,达到了课程设计目的。
在设计的过程中,通过查阅各种资料我还了解了与操作系统有关的其他知识,不仅加强了原有知识的巩固,而且扩大了知识面,积累了越来越多的知识和动手的经验,为日后的工作和学习奠定了基础。
所以,在以后的学习和生活中,我们要做个有心人,一点一滴的积累经验,储备越来越多的知识,我相信在将来的某一天我们的努力一定会得到回报,我们一定会取得骄人的成绩。
参考文献
[1]汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社,2001.
[2]王清,李光明.《计算机操作系统》.冶金工业出版社,2003.
[3]孙钟秀等.操作系统教程.高等教育出版社,2003.
[4]曾明.Linux操作系统应用教程.陕西科学技术出版社,2005.
[5]张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社,2006.
[6]孟静,操作系统教程--原理和实例分析.高等教育出版社,2000.
[7]周长林,计算机操作系统教程.高等教育出版社,2011.
[8]张尧学,计算机操作系统教程,清华大学出版社,2000.
[9]任满杰,操作系统原理实用教程,电子工业出版社,2006.
[10]张坤.操作系统实验教程,清华大学出版社,2006.
致谢
能够完成这次操作系统课程设计,感谢我的指导老师郭文娟和贾娟娟老师。
郭老师在我们的日常学习中给了我们许多启发性的建议并使我们积累了大量的操作系统知识,为我们的课程设计奠定了坚实的基础。
在本次课程设计当中,有很多同学帮助我完成对程序的测试,使得我的很多疑问得到解决,进一步巩固了所学习的内容,对我的课程设计的完成也起了不小的作用,在他们的帮助下,我才能够比较好的完成这次课程设计,在此一并表示感谢。
附录源程序代码
1.创建文本文件源代码
#include
#include
voidmain(void)
{charstr[80];
FILE*fp;
if((fp=fopen("test","w+"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do{gets(str);
strcat(str,"\n");
fputs(str,fp);}
while(*str!
='\n');}
2.显示文本文件内容源代码
#include
#include
#include
voidmain(void)
{charstr[80];
FILE*fp;
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
while(!
feof(fp))
{fgets(str,8,fp);
printf("%s",str);}}
3.倒写文本文件内容源代码
#include
#include
#include
voidmain(void)
{charstr[80];inti=0;
FILE*fp;
if((fp=fopen("test","r"))==NULL)
{printf("cannotopenfile\n");
exit
(1);}
while(!
feof(fp))
{str[i]=fgetc(fp);
i++;}
for(i=80;i>=0;i--)
printf("%c",str[i]);}
完整程序如下:
#include
#include
#include
FILE*fp;/*声明文件结构体类型指针变量*/
charstr[80];/*定义文件长度*/
voidmain1();/*创建原始文件*/
voidmain2();/*显示文件内容*/
voidmain3();/*倒向显示文件内容*/
voidmain1(void)/*创建原始文件*/
{inti=0;
if((fp=fopen("test","w+"))==NULL)/*读写生成文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);}
printf("Enterastring(CRtoquit):
\n");
do
{scanf("%c",&str[i]);/*输入文件内容*/
strcat(str,"\n");/*加上一个新行符'\n'*/
fputs(str,fp);/*将字符串的内容写到文件中*/
i++;}
while(str[i-1]!
='\n');/*输入空串时结束*/
printf("\n");
}
voidmain2(void)/*显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=0;i<80;i++)/*正向输出*/
printf("%c",str[i]);
printf("\n");}
voidmain3(void)/*倒向显示文件内容*/
{inti;
if((fp=fopen("test","r"))==NULL)/*读打开文本文件*/
{printf("Cannotopenfile\n");/*文件打开失败*/
exit
(1);
}
for(i=80;i>=0;i--)/*反向输出*/
printf("%c",str[i]);}
main()/*主函数*/
{charstr[80];
/*各个单元函数依次执行,实现以下功能*/
printf("Input:
\n");
main1();/*执行函数
(1),创建test文件*/
printf("Outputinorder:
\n");
main2();/*显示文本内容*/
printf("Pourtowrite:
\n");
main3();/*倒向显示文件内容*/
}
/*输入文件内容后依次按回车,将顺序执行正向显示.倒向显示.退出等操作*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 字节 实验 说明书