文件系统实验说明书(含代码)_第1页
文件系统实验说明书(含代码)_第2页
文件系统实验说明书(含代码)_第3页
文件系统实验说明书(含代码)_第4页
文件系统实验说明书(含代码)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要本程序将模拟一个很简单的文件系统,实现对文件的管理和控制功能,文件 系统向用户提供了一整套的文件体统调用命令,在用户程序中用户可通过使用文 件系统提供的一系列命令对文件进行操作。其功能对文件的增加、删除、显示、 修改,以及对文件目录的查询(显示)、改变、创建、删除、等操作文件采用的物 理结构为连续。程序是采用二级文件目录。(即设置主目录(MFD和用户文件目录(UFD。另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。 在执行读写命令时,只需改读写指针。并不进行实际的读写操作。关键词:文件系统 文件指针 模拟管理信息111.设计思想程序是采用二级文件目录。(即设置主目录(MFD和

2、用户文件目录(UFD 另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实际的读写操作。框图如下:(用户“1”文件目录)图1目录框图实验开始,先进入 MFD表,初值为空。输入用户名字,需要保存用户名字, 同时也有了有个新文件目录表。接着是文件的一系列的基本操作:1、打印所有文件名。2、打开一个文件。3、添加一个文件。4、删除一个文件。5、改文件的保护码。6、写文件。7、读文件。8、退出。2.函数调用关系图:3.算法用到的主要数据结构/结构体,用户变量struct user char name10;user10;/结构体,文件变量struct

3、 link struct file char name10;/ 文件名int lenght;/文件长度int write;/读文件int read;/写文件int exe; file10;int used;link10;4.相关的各模块的伪码算法检测用户函数checkuser()for(int i=0;i<10;i+),s=strcmp( "cin<< name ,);if(s=0) return i;建立用户函数createuser()strcpy(user. .name," cin<<name");linkin.

4、used=0;in+;打开所有文件openall()If : file p=0, file is empty ;else : 执保护"<<endl;、值、cout<<”文件名 读保护 写保护cout<<、力目、关;、打开单个文件open巾le() if : cin>>name;int i=find();cannot find ;file not existelse : 文件长cout<<”文件名 读保护 写保护 执保护 度” <<endl;cout<< 、相、关、值、 建立文件createfile()

5、cin>>file name;write=0;read=0;exe=0;lenght=0;删除文件delete巾le() cin>>file nameUse function find()If cannot find;cout<<"此文件不存在!”;else deletefile and some filepointers;写文件write() cin>>file name Function find();If : cannot findcout<<"此文件不存在!"else : cin>>l

6、ength file.lenght+=l;读文件read() cin>>file name;Function find();If : cannot findcout<<此文件不存在!else : cout<<文件已经打开cout<<”文件长度为:file.length查找 find()for(int i=0;i<10;i+)“,a=strcmp( "cin <<name",); if : a=0, return i; 5 .调试分析调试中遇到的问题及对问题的解决方法:由于文件管理系统相对于本

7、人来说不是那么容易就可以轻易实现的,在设计之前,我先做了些准备工作,首先设计在实现程序中要用到的数据结构模 型,使用了结构体数据结构,然后将各个功能模块化,依次编写,调试。在设 计过程中遇到的问题主要有两大方面:1.以前c语言相关知识的淡忘,特别是 在定义结构体时候,刚开始甚至都没想到结构体这个概念,还在一味思考着如何用链表实现一个包含相当多数据信息的数据表,直到在参考以前课本的时 候,偶然瞥见结构体的部分,顿时恍然大悟,就像一下子找到了救星一样,结 果将每个教师的相关信息定义成一个结构体,以及链表的结构体,很轻松的解决了问题,回想一下,这个课题本来就必须用到结构体的知识,但是自己却把 它忘记

8、得干干净净,往后去还应该好好复习旧知识。2.自己不注意细节而造成 的问题;程序感觉一切 OK操作运行时发现第一次输入用户名后就在无法再 添加用户,于是改添了主菜单和判断条件,使程序可以转入主菜单进行添加用 户操作;不过还因有时操作不当使程序陷入死循环,原来是goto功能的使用,使程序的跳转有些乱,修改后就Ok了。虽然goto的使用可能是程序显得有些 舌L,但在此程序中使用,使程序的编写容易了很多。6 .测试结果进入VC+6.0。运行源代码,结果如下图所示:图3开始界面选择“ 2”添加用户,输入用户名,选择“ 1”进行文件,如下图所示:'D:国件Wku+C + +6.0 ( jwin7

9、"Microsoft Visual £tu di oMy Project 式课程,2.加用户.用户操作2 .播讪用户请选择;1, 26, 7, 8进行操作!3,护 文文二二保 有一开开加文出,图4用户进入文件6”写文件,如下图所示:选择“ 3”添加文件后,选”3,1, 2,文件将要写的长度,6俞入文件名请选择:1-请选择,hD:5X4iVi5ual -C f + + 6.0 () Microsoft Visual Stu ioMyProjects1位 护 保名堂已件 人作文 4即哭匕f 开 打 经、有一 A-M社 , 开开加文出u? 若添在,ft# 护 8 文文to7, 有

10、-生,件忙 , ><文文珏6 开文出“ ,添祗 1TW . * * * , -4 -12345678* 3图5文件操10参考文献1 .汤子瀛,哲凤屏.计算机操作系统.西安电子科技大学学出版社2 .王清,李光明.计算机操作系统.冶金工业出版社.3 .孙钟秀等.操作系统教程.高等教育出版社4 .曾明.Linux操作系统应用教程.陕西科学技术出版社.5 .张丽芬,刘利雄.操作系统实验教程.清华大学出版社.6 .孟静, 操作系统教程-原理和实例分析.高等教育出版社7 .周长林,计算机操作系统教程.高等教育出版社8 .张尧学,计算机操作系统教程,清华大学出版社9 .任满杰,操作系统原理实用教

11、程,电子工业出版社19附录源程序:#include <iostream.h>#include <string.h>#include <stdio.h>#include<iomanip.h>struct user char name10;user10;int in=0;struct link struct file char name10;int lenght;int write;int read;int exe;file10;int used;link10;char name10;int p; /检测用户返回值/*以下是函数声明*int chec

12、kuser();/检测用户是含存在void createuser();/创建用户void openall();/打开所有'文件void openfile();/打开某一文件void createfile();/添加文件void deletefile();/删除文件void changeprotect();/执行保护void write();/写文件void read();/读文件int find();/查找文件void main() int n;int ch;char c;cout<<"*”<<endl<<endl<<endl;

13、str:cout<<"请选择操作:"<<endl;cout<<" "<<endl;cout<<"- 1用户操作-"<<endl;cout<<"- 2添加用户-"<<endl;cout<<" - 3 退出 -"<<endl; cout<<" "<<endl;cin>>n;if(n!=1&&n!=2&&

14、amp;n!=3)cout<<"输入有误请从新输入else if(n=1)cout<<"用户名:";cin>>name;p=checkuser();if(p=10) cout<<"用户不存在! "<<endl;cout<<"是否加为用户(y/n):"cin>>c;if(c='y')createuser();else goto str;cout<<"请输入操作:"<<endl;menu

15、: cout<<""<<endl;cout<<"1.打开所有文件"<<endl;cout<<"2.打开某一文件"<<endl;cout<<"3.添加文件"<<endl;cout<<"4.删除文件"<<endl;cout<<"5.修改文件保护位"<<endl;cout<<"6.写文件"<<en

16、dl;cout<<"7.读文件"<<endl;cout<<"8.退出"<<endl;cout<<"选择 1,2,3,4,5,6,7,8进行操作:"<<endl;cout<<""<<endl;cin>>ch;if(ch=1) openall();if(ch=2) openfile();if(ch=3)createfile();if(ch=4)delete巾le();if(ch=5) changeprotect(

17、);if(ch=6) write();if(ch=7) read();if(ch=8) printf("是否退出操作(y/n):");cin>>c;if(c='y') goto str;goto menu;else if(n=2)cout<<"请输入用户名:";cin>>name;createuser(); goto str;else cout<<"拜拜"<<endl;int checkuser()int s;for(int i=0;i<10;i+)s=

18、strcmp(name,); /与输入的用户名逐个比较,看用户是否存在if(s=0) return i; return 10;void createuser()strcpy(,name); /将输入的用户名复制到用户名里linkin.used=0;in+;void openall()if(linkp.used=0) cout<<”此文件夹为空! "<<endl;elsecout<<”文件名读保护写保护执保护"<<endl;for(int i=0;i<linkp.used;i+)c

19、out<<<<setw(12)<<linkp.filei.whte<<setw (12)<<linkp.filei.read<<setw(12)<<linkp.filei.exe<<endl;void openfile()cout<<"输入文件名:";cin>>name;int i=find();if(i=10)cout<<”此文件不存在!"<<endl;elsecout<<”文

20、件名读保护写保护执保护文件长度”<<endl;cout<<<<setw(12)<<linkp.filei.whte<<setw (12)<<linkp.filei.read<<setw(12)<<linkp.filei.exe<<setw(12)<< linkp.filei.lenght<<endl;void createfile()int a=linkp.used;linkp.used+;cout<<"输入文

21、件名:"; cin>>; linkp.filea.write=0;linkp.filea.read=0;linkp.filea.exe=0;linkp.filea.lenght=0;void deletefile()cout<<"输入文件名:";cin>>name;int i=find();if(i=10)cout<<"此文件不存在!”;else for(int j=i;j<9;j+)strcpy(,linkp.filei+1.name);linkp.filei.write=linkp.filei+1.write;linkp.filei.read=linkpfilei+1.read;linkp.filei.exe=linkp.filei+1.exe;linkp.used-;void changeprotect()cout<<"输入文件名:"<<endl;cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论