版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要本程序将模拟一个很简单的文件系统,实现对文件的管理和控制功能,文件 系统向用户提供了一整套的文件体统调用命令,在用户程序中用户可通过使用文 件系统提供的一系列命令对文件进行操作。其功能对文件的增加、删除、显示、 修改,以及对文件目录的查询(显示)、改变、创建、删除、等操作文件采用的物 理结构为连续。程序是采用二级文件目录。(即设置主目录(MFD和用户文件目录(UFD。另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。 在执行读写命令时,只需改读写指针。并不进行实际的读写操作。关键词:文件系统文件指针模拟 管理信息121. 设计思想程序是采用二级文件目录。(即设置主目录(MFD和
2、用户文件目录(UFD 另外,为打开文件设置指针。为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实际的读写操作。框图如下:(用户“ 1”文件目录)(用户目录)1文件名保护码文件长度文件指针MFD2用户1 (名字)3用户2 4用户35用户4 6 8 910(用户“ 2”文件目录)文件名保护码文件长度文件指针2345678q10图1目录框图实验开始,先进入 MFD表,初值为空。输入用户名字,需要保存用户名字, 同时也有了有个新文件目录表。接着是文件的一系列的基本操作:1、打印所有文件名。2、打开一个文件。3、添加一个文件。4、删除一个文件。5、改文件的保护码。6写文件
3、。7、读文件。8、退出。2. 函数调用关系图:3. 算法用到的主要数据结构/结构体,用户变量struct user char n ame10;user10;/结构体,文件变量struct li nk struct file char n ame10;/文件名int len ght;/文件长度int write;/读文件int read;/写文件int exe;file10; int used;li nk10;4. 相关的各模块的伪码算法检测用户函数checkuser()for(i nt i=0;i<10;i+) “ ”s=strcmp( “cinvv name ,);
4、if(s=0) return i;建立用户函数createuser()strcpy(,” cin«name” );lin ki n.used=0;in+;打开所有文件openall()If : file p=0,file is empty ;else : coutvv"文件名 读保护 写保护 执保护"<<endl; coutvv、相、关、彳值、打开单个文件openfile() if : cin>>name;int i=fi nd();cannot find ;file not existelse : coutvv"
5、;文件名 读保护 写保护 执保护 文件度” <<endl;cout <<、相、关、彳值、 建立文件createfile()cin> >file n ame;write=0;read=0;exe=0;len ght=O;删除文件deletefile()cin> >file n ameUse fun cti on fin d()If cannot find;coutvv"此文件不存在!"else deletefile and some filepo in ters;写文件write() cin> >file n ame
6、Function fin d();If : cannot findcoutvv"此文件不存在!"else : cin> >le ngthfile .len ght+=l;读文件read() cin> >file n ame;Fun cti on fin d();If : cannot findcoutvv此文件不存在!else : coutvv文件已经打开coutvv"文件长度为:file.length查找 fin d()for(i nt i=0;i<10;i+) “ ”a=strcmp( “cin <<name”,fil
7、);if : a=0, return i;5. 调试分析调试中遇到的问题及对问题的解决方法:由于文件管理系统相对于本人来说不是那么容易就可以轻易实现的,在设计之前,我先做了些准备工作,首先设计在实现程序中要用到的数据结构模 型,使用了结构体数据结构,然后将各个功能模块化,依次编写,调试。在设 计过程中遇到的问题主要有两大方面:1.以前c语言相关知识的淡忘,特别是 在定义结构体时候,刚开始甚至都没想到结构体这个概念,还在一味思考着如何用链表实现一个包含相当多数据信息的数据表,直到在参考以前课本的时 候,偶然瞥见结构体的部分,顿时恍然大悟,就像一下子找到了救星一样,结 果将每个教师的相
8、关信息定义成一个结构体,以及链表的结构体,很轻松的解决了问题,回想一下,这个课题本来就必须用到结构体的知识,但是自己却把 它忘记得干干净净,往后去还应该好好复习旧知识。2.自己不注意细节而造成 的问题;程序感觉一切 0K操作运行时发现第一次输入用户名后就在无法再 添加用户,于是改添了主菜单和判断条件,使程序可以转入主菜单进行添加用 户操作;不过还因有时操作不当使程序陷入死循环,原来是goto功能的使用,使程序的跳转有些乱,修改后就Ok了。虽然goto的使用可能是程序显得有些 舌L,但在此程序中使用,使程序的编写容易了很多。6. 测试结果进入VC+6.0。运行源代码,结果如下图所示:图3开始界面
9、选择” 2”添加用户,输入用户名,选择” 1”进行文件,如下图所示:BD:lVisuall + C+ + + 6.0 ( win7 ) Microsoft Visual StudioMyProj青输入用Fa-ilaS2_6-38.请选择;1, 23,开开加文岀5,位 护 文文:一喺 W- #86, 7, &进行操乍!图4用户进入文件选择” 3”添加文件后,选”6”写文件,如下图所示:文件将要写的长度:&俞入文件名请选择:1-178请选择:1, 2r 3,MD:SiJ1iFVi5iual+C+ + + 6,0 (支持vm7 ) Microsoft Visual StudioMyP
10、rojerts''打 经、名集已件入作文位 进 护 8 : 保7r 有-4-MU- ,G 开开加文出U?位 进 ft# 护 8 文文to匕 有-M-MU>文文聲6 开文岀亦 ! _ 一 _4 -12345678 3图5文件操10参考文献1. 汤子瀛,哲凤屏计算机操作系统西安电子科技大学学出版社2. 王清,李光明计算机操作系统冶金工业出版社3. 孙钟秀等.操作系统教程.高等教育出版社4. 曾明.Linux操作系统应用教程.陕西科学技术出版社.5. 张丽芬,刘利雄.操作系统实验教程.清华大学出版社.6. 孟静,操作系统教程-原理和实例分析.高等教育出版社7. 周长林,计算机操
11、作系统教程.高等教育出版社8. 张尧学,计算机操作系统教程,清华大学出版社9. 任满杰,操作系统原理实用教程,电子工业出版社20附录源程序:#in elude <iostream.h> #i nclude <stri ng.h> #i nclude <stdio.h> #i ncludevioma nip.h>struct user char n ame10;user10;int in=0;struct link struct file char n ame10; int len ght;int write;int read;int exe;file1
12、0;int used;li nk10; char n ame10;int p; /检测用户返回值以下是函数声明*int checkuser(); void createuser(); void ope nall();void ope nfile();void createfile(); void deletefile();void cha ngeprotect();void write();void read(); int fin d();void mai n() int n;/检测用户是否存在/创建用户/打开所有文件/打开某一文件/添加文件/删除文件/执行保护/写文件/读文件/查找文件int
13、 ch; char c;cout«"*"<<e ndl«e ndl«e ndl;str:cout«"请选择操作:"<<e ndl;cout«""<<e ndl;cout«"- 1用户操作-"<<endl;cout«"- 2 添加用户-"<<endl;coutvv" - 3 退出 -"<<e ndl; cout«"&q
14、uot;<<e ndl;cin>>n;if(n !=1 &&n!=2&&n!=3)coutvv"输入有误请从新输入else if(n=1)coutvv"用户名:";cin>>n ame;p=checkuser();if(p=10) coutvv"用户不存在! "<<endl; coutvv"是否加为用户(y/n):" cin> >c;if(c='y')createuser();else goto str;coutvv&
15、quot;请输入操作:"vvendl;menu: coutvv""vvendl;coutvv"1.打开所有文件"vvendl;coutvv"2.打开某一文件"vvendl;coutvv"3.添加文件"vvendl;coutvv"4.删除文件"vvendl;coutvv"5.修改文件保护位"vve ndl;coutvv"6.写文件"vvendl;coutvv"7.读文件"vvendl;coutvv"8.退出"
16、vvendl;coutvv"选择 1,234,5,6,7,8进行操作:"vvendl;coutvv""vve ndl;cin> >ch;if(ch=1) ope nall();if(ch=2) ope nfile();if(ch=3)createfile();if(ch=4)deletefile();if(ch=5)cha ngeprotect();if(ch=6)write();if(ch=7)read();if(ch=8) printf(" 是否退出操作(y/n):"); cin> >c;if(c='
17、;y')goto str;goto menu;else if(n=2)cout<<"请输入用户名:"cin>>n ame;createuser();goto str;else cout«"拜拜"<<endl; int checkuser()int s;for(i nt i=0;i<10;i+)s=strcmp( name,useri .n ame);/与输入的用户名逐个比较,看用户是否存在if(s=0) retur n i;return 10;void createuser()strcpy(us
18、eri n.n ame, name);/将输入的用户名复制到用户名里lin ki n.used=0; in+;void ope nall()if(li nkp.used=0) coutvv"此文件夹为空! "<<endl;elsecoutvv"文件名读保护写保护执保护"<<endl;for(i nt i=0;i<li nkp.used;i+)coutvvli nkp.filei. namewsetwOZIvvIi nkp.filei.write<<setw (12)<<li 门町卩.打囘口.9&
19、;4<<$6上可(12)<<" nkp.filei.exe<<e ndl;void ope nfile()coutvv"输入文件名:";cin>>n ame;int i=fi nd();if(i=10)coutvv"此文件不存在!"<<endl;elsecoutvv"文件名读保护写保护执保护文件长度"vvendl;coutvvli nkp.filei. namevvsetw(12)vvli nkp.filei.writevvsetw (12)vvli nkp.fil
20、ei.readvvsetw(12)vvli nkp.filei.exevvsetw(12)vv lin kp.filei.le nghtvve ndl;void createfile()int a=li nkp.used;lin kp.used+;coutvv"输入文件名:"ci n> >li nkp.filea. name;lin kp.filea.write=0;lin kp.filea.read=0;lin kp.filea.exe=0;lin kp.filea.le nght=0;void deletefile()coutvv"输入文件名:&q
21、uot;; cin>>n ame;int i=fi nd();if(i=10)coutvv"此文件不存在!";else for(i nt j=i;j<9;j+)strcpy(l in kp.filei. name, lin kp.filei+1. name);lin kp.filei.write=li nkp.filei+1.write;lin kp.filei.read=li nkp.filei+1.read;lin kp.filei.exe=li nkp.filei+1.exe;lin kp.used-;void cha ngeprotect()coutvv"输入文件名:"<<endl;cin>>n ame;int i=fi nd();if(i=10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版拌合料生产设备维修与保养合同4篇
- 2025年度农业休闲观光区绿化景观建设与运营合同4篇
- 2025版安防弱电系统集成服务合同3篇
- 2025年度个人肖像摄影合同范本集4篇
- 二零二五年度南京体育健身行业劳务派遣合同
- 二零二五年度木材行业安全生产责任保险合同
- 第8~9讲 反应动力学基础知识
- 2025年度建筑幕墙工程安全质量责任合同4篇
- 二零二五年度农业生态环境保护与修复服务合同
- 二零二五年度使用知识产权许可合同
- 中国末端执行器(灵巧手)行业市场发展态势及前景战略研判报告
- 北京离婚协议书(2篇)(2篇)
- 2025中国联通北京市分公司春季校园招聘高频重点提升(共500题)附带答案详解
- 康复医学科患者隐私保护制度
- Samsung三星SMARTCAMERANX2000(20-50mm)中文说明书200
- 2024年药品质量信息管理制度(2篇)
- 2024年安徽省高考地理试卷真题(含答案逐题解析)
- 广东省广州市2024年中考数学真题试卷(含答案)
- 高中学校开学典礼方案
- 内审检查表完整版本
- 3级人工智能训练师(高级)国家职业技能鉴定考试题及答案
评论
0/150
提交评论