版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、11摘 要本程序将模拟一个很简单的文件系统,实现对文件的管理和控制功能,文件系统向用户提供了一整套的文件体统调用命令,在用户程序中用户可通过使用文件系统提供的一系列命令对文件进行操作。其功能对文件的增加、删除、显示、修改,以及对文件目录的查询(显示)、改变、创建、删除、等操作文件采用的物理结构为连续。程序是采用二级文件目录。(即设置主目录(MFD)和用户文件目录(UFD)。另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实际的读写操作。关键词: 文件系统 文件指针 模拟 管理信息正 文1. 设计思想程序是采用二级文件目录。(即设置主目录(
2、MFD)和用户文件目录(UFD)。另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实际的读写操作。框图如下: (用户“1”文件目录)(用户目录)1文件名 保护码 文件长度 文件指针MFD2 用户1(名字)3用户24用户35用户4678910 (用户“2”文件目录) 1 文件名保护码 文件长度 文件指针 2 3 4 5 6 7 8 9 10图1 目录框图实验开始,先进入MFD表,初值为空。输入用户名字,需要保存用户名字,同时也有了有个新文件目录表。接着是文件的一系列的基本操作:1、 打印所有文件名。2、 打开一个文件。3、 添加一个文件。4
3、、 删除一个文件。5、 改文件的保护码。6、 写文件。7、 读文件。8、 退出。2. 函数调用关系图:在MFD中找到该用户输入用户名开始输入操作命令初始化运行文件表AFD显示该用户目录表UFD中的所有文件是什么命令打开全部文件打开一个文件创建一个文件删除文件读文件写文件改变保护码退出结束图2 流程图3. 算法用到的主要数据结构/结构体,用户变量struct user char name10; user10;/结构体,文件变量struct link struct file char name10; /文件名int lenght;/文件长度int write; /读文件int read; /写文件
4、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(,”cin<<name”);linkin.used=0;in+;打开所有文件openall()If :file p=0 ,file is empty;else :cout<<"文件名读保护写保护执保护"&l
5、t;<endl;cout<<、相、关、值、打开单个文件openfile() if :cin>>name;int i=find();cannot find;file not exist else :cout<<"文件名读保护写保护执保护文件长度”<<endl; cout <<、相、关、值、 建立文件createfile()cin>>file name; write=0;read=0;exe=0;lenght=0;删除文件deletefile()cin>>file nameUse function
6、find() If cannot find;cout<<"此文件不存在!"else deletefile and some filepointers;写文件write() cin>>file name Function find();If:cannot findcout<<"此文件不存在!"else : cin>>length file.lenght+=l;读文件 read() cin>>file name;Function find();If :cannot findcout<<此
7、文件不存在!else :cout<<文件已经打开cout<<"文件长度为 :file.length查找 find()for(int i=0;i<10;i+)a=strcmp(“cin <<name”,);if :a=0 ,return i;5. 调试分析调试中遇到的问题及对问题的解决方法:由于文件管理系统相对于本人来说不是那么容易就可以轻易实现的,在设计之前,我先做了些准备工作,首先设计在实现程序中要用到的数据结构模型,使用了结构体数据结构,然后将各个功能模块化,依次编写,调试。在设计过程中遇到的问题主要有两大方面:1.以前
8、C语言相关知识的淡忘,特别是在定义结构体时候,刚开始甚至都没想到结构体这个概念,还在一味思考着如何用链表实现一个包含相当多数据信息的数据表,直到在参考以前课本的时候,偶然瞥见结构体的部分,顿时恍然大悟,就像一下子找到了救星一样,结果将每个教师的相关信息定义成一个结构体,以及链表的结构体,很轻松的解决了问题,回想一下,这个课题本来就必须用到结构体的知识,但是自己却把它忘记得干干净净,往后去还应该好好复习旧知识。2.自己不注意细节而造成的问题;程序感觉一切OK,操作运行时发现第一次输入用户名后就在无法再添加用户,于是改添了主菜单和判断条件,使程序可以转入主菜单进行添加用户操作;不过还因有时操作不当
9、使程序陷入死循环,原来是goto功能的使用,使程序的跳转有些乱,修改后就Ok了。虽然goto的使用可能是程序显得有些乱,但在此程序中使用,使程序的编写容易了很多。6. 测试结果进入Vc+6.0。运行源代码,结果如下图所示:图3 开始界面选择”2”添加用户,输入用户名,选择”1”进行文件,如下图所示:图4 用户进入文件选择”3”添加文件后,选”6”写文件,如下图所示:图5 文件操参考文献1. 汤子瀛,哲凤屏.计算机操作系统.西安电子科技大学学出版社.2. 王清,李光明.计算机操作系统.冶金工业出版社.3.孙钟秀等. 操作系统教程. 高等教育出版社4.曾明. Linux操作系统应用教程
10、. 陕西科学技术出版社. 5. 张丽芬,刘利雄.操作系统实验教程. 清华大学出版社.6. 孟静, 操作系统教程原理和实例分析. 高等教育出版社7. 周长林,计算机操作系统教程. 高等教育出版社8. 张尧学,计算机操作系统教程,清华大学出版社9. 任满杰,操作系统原理实用教程,电子工业出版社附录源程序:#include <iostream.h>#include <string.h>#include <stdio.h>#include<iomanip.h>struct user char name10;user10;int in=0;str
11、uct link struct file char name10;int lenght;int write;int read;int exe;file10;int used;link10;char name10;int p;/检测用户返回值/*以下是函数声明*int checkuser();/检测用户是否存在void createuser();/创建用户void openall();/打开所有文件void openfile();/打开某一文件void createfile();/添加文件void deletefile();/删除文件void changeprotect();/执行保护void
12、write();/写文件void read();/读文件int find();/查找文件void main() int n;int ch;char c;cout<<"*文件管理统*"<<endl<<endl<<endl;str: cout<<"请选择操作:"<<endl; cout<<"-"<<endl; cout<<"- 1 用户操作-"<<endl;cout<<"- 2
13、添加用户-"<<endl;cout<<"- 3 退出 -"<<endl;cout<<"-"<<endl;cin>>n; if(n!=1&&n!=2&&n!=3) cout<<"输入有误请从新输入." else if(n=1)cout<<"用户名:" cin>>name;p=checkuser();if(p=10) cout<<"用户不存在!&qu
14、ot;<<endl;cout<<"是否加为用户(y/n):"cin>>c;if(c='y')createuser();elsegoto str;cout<<"请输入操作:"<<endl;menu:cout<<"-"<<endl; cout<<"1.打开所有文件"<<endl;cout<<"2.打开某一文件"<<endl;cout<<&qu
15、ot;3.添加文件"<<endl;cout<<"4.删除文件"<<endl;cout<<"5.修改文件保护位"<<endl;cout<<"6.写文件"<<endl;cout<<"7.读文件"<<endl;cout<<"8.退出"<<endl;cout<<"选择1,2,3,4,5,6,7,8进行操作:"<<endl
16、;cout<<"-"<<endl;cin>>ch; if(ch=1)openall();if(ch=2)openfile();if(ch=3)createfile();if(ch=4)deletefile();if(ch=5)changeprotect();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<
17、<"请输入用户名:" cin>>name; createuser(); goto str;else cout<<"拜拜"<<endl;int checkuser()int s;for(int i=0;i<10;i+)s=strcmp(name,); /与输入的用户名逐个比较,看用户是否存在if(s=0) return i;return 10;void createuser()strcpy(,name); /将输入的用户名复制到用户名里linkin.used=0;in
18、+;void openall()if(linkp.used=0)cout<<"此文件夹为空!"<<endl;elsecout<<"文件名读保护写保护执保护"<<endl;for(int i=0;i<linkp.used;i+)cout<<<<setw(12)<<linkp.filei.write<<setw(12)<<linkp.filei.read<<setw(12)<<linkp.f
19、ilei.exe<<endl;void openfile()cout<<"输入文件名:"cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"<<endl;elsecout<<"文件名读保护写保护执保护文件长度"<<endl;cout<<<<setw(12)<<linkp.filei.write<<setw(12)<<lin
20、kp.filei.read<<setw(12)<<linkp.filei.exe<<setw(12)<<linkp.filei.lenght<<endl;void createfile()int a=linkp.used;linkp.used+;cout<<"输入文件名:"cin>>;linkp.filea.write=0;linkp.filea.read=0;linkp.filea.exe=0;linkp.filea.lenght=0;void delete
21、file()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=linkp.filei+1.read;linkp.filei.exe=linkp.filei+1.exe;linkp.used-;void changeprotect()cout<<"输入文件名:"<<endl;cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"else cout<<"改变保护值:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度国际农产品交易佣金代理合同
- 2025年度旅游服务合同违约金赔偿标准及游客权益保障
- 二零二五年度店面装修与室内噪音控制承包合同3篇
- 二零二五年度农业生态公园绿化景观施工监理合同4篇
- 2025年度冷链食品加工基地1#生产线冷链食品冷链配送服务合同4篇
- 二零二五版美术馆东馆馆舍租赁消防安全管理合同3篇
- 二零二五年度模特形象代言人合同
- 二零二五年度互联网数据中心运维人员聘用合同范本4篇
- 二零二五年度安置房买卖合同集锦:安置房维修基金管理规范3篇
- 二零二五年度应急救援驾驶员聘用合同4篇
- (完整版)高考英语词汇3500词(精校版)
- 我的家乡琼海
- (2025)专业技术人员继续教育公需课题库(附含答案)
- 《互联网现状和发展》课件
- 【MOOC】计算机组成原理-电子科技大学 中国大学慕课MOOC答案
- 2024年上海健康医学院单招职业适应性测试题库及答案解析
- 2024年湖北省武汉市中考语文适应性试卷
- 2024-2025学年广东省大湾区40校高二上学期联考英语试题(含解析)
- 非新生儿破伤风诊疗规范(2024年版)解读
- 2024-2030年电炒锅项目融资商业计划书
- EDIFIER漫步者S880使用说明书
评论
0/150
提交评论