版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【实验报告正文】一、实验目的和要求(必填)实验目的:通过在VC平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命 令的执行,来模拟文件系统对文件及目录的管理。实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。二、实验容(必填)文件管理:实现一个简单的文件系统装 三、实验原理或实验方法(必填)订原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实 线现整个文件系统中目录和文件的相关操作。- 方法:学生两人结对进行实验,分别实现对文件和目录的操作。:对文件的操作包括:创建文件 create、读文件read、写文件write、删除文件del
2、ete- 对目录的操作包括:创建目录 mkdir、切换目录cd、展示目录容dir、删除目录rm。四、主要仪器设备或实验条件jWindows操作系统,VC开发环境. 五、实验步骤(含实验数据记录处理)或操作设计过程记录#i nclude stdio.h#i nclude iostream.h#in clude stri ng.h #defi ne FILENAME_LENGTH 10 / 文件名称长度: #define COMMAND_LENGTH 10/ 命令行长度j #define PATH_LENGTH 30/ 参数长度struct file nodechar file nameFILEN
3、AME_LENGTH;int isdir;char conten t255;file node *pare nt;file node *child;file node *prev;file node *n ext;file node *in it no de(char file name,i nt isdir);void createroot();in t ru n();in t fin dpath(char *topath);void help();int mkdir();int create();int read();int write();int del();in t rm();int
4、cd();int dir();file node *root,*rece nt,*temp,*ttemp,*temp_child;charpathPATH_LENGTH,comma ndCOMMAND_LENGTH,temppathPATH_LENGTH ,rece ntpathPATH_LENGTH;/创建文件或目录的存储节点file no de* in it no de(char file name,i nt isdir) file node *node=new file no de;strcpy (no de-file name,file name);no de-isdir=isdir;
5、no de-pare nt=NULL;n ode-child=NULL;no de-prev=NULL;no de-n ext=NULL;retur n no de;/初始化文件系统根结点void createroot ()recen t=root=i nitno de(/,1); root-pare nt=NULL; root-child=NULL;root-prev=root- n ext=NULL; strcpy(path,/);void help()coute ndl;coutcreate:建立文件。e ndl;coutread:读取文件。e ndl;coutwrite:写入文件。e
6、ndl;coutdelete:删除文件。e ndl;coutrm:删除目录。e ndl;coutmkdir:建立目录。e ndl;专业资料coutcd:切换目录。coutvdir:显示目录。coutlogout:退出登录。e ndl;e ndl;e ndl;int dir()int i=O,j=O;temp=new file no de;temp=rece nt;if(temp=root)coutif(temp!=root)coutif(temp-child=NULL)coutTotal: directorschild;while(temp)if(temp-isdir)coutfile nam
7、ee ndl;i+;elsecouttemp=temp-n ext;coutTotal: directors.e ndl; .e ndl;i+;vvivvfilesfile namee ndl;j+;vvivvfiles jvv j file name;if(rece nt-child=NULL)cout 文件不存在!child-file name,file name)=0) coutrece nt-child-c onten tchild;while(temp-n ext)if(strcmp(temp-n ext-file name,file name)=0)couttemp-n ext-c
8、 onten te ndl;return 0;cout 文件不存在! file name;if(rece nt-child=NULL)cout 文件不存在!child-file name,file name)=0) cin rece nt-child-c ontent;cout文件写入成功!child;while(temp-n ext)if(strcmp(temp-n ext-file name,file name)=0)cin temp-n ext-c ontent;cout文件写入成功!endl;return 0;cout文件不存在! file name;temp=new file no
9、de;if(rece nt-child)temp=rece nt-child;while(temp-n ext& (strcmp(temp-file name,file name)!=0|temp-isdir!=O)temp=temp-n ext;if(strcmp(temp-filename,filename)!=0 | temp-isdir!=0)cout 不存在该文件! e ndl;return 0;elsecout 不存在该文件! pare nt=NULL)temp-prev- n ext=temp-n ext; if(temp-n ext)temp-n ext-prev=temp-p
10、rev; temp-prev=temp-n ext=NULL;elseif(temp-n ext)temp-n ext-pare nt=temp-pare nt; temp-pare nt-child=temp-n ext;delete temp;cout 文件已删除! file name;temp=new file no de;if(rece nt-child)&(strcmp(temp-file name,file name)!=0|temp=rece nt-child; while(temp-n ext temp-isdir!=1)temp=temp-n ext;if(strcmp(te
11、mp-filename,filename)!=0 | temp-isdir!=1)专业资料cout 不存在该目录! e ndl;return 0;elsecout 不存在该目录! pare nt=NULL)temp-prev- n ext=temp-n ext;if(temp-n ext)temp-n ext-prev=temp-prev; temp-prev=temp-n ext=NULL;elseif(temp-n ext)temp-n ext-pare nt=temp-pare nt;temp-pare nt-child=temp-n ext;delete temp;cout目录已删除!
12、 topath;if(strcmp(topath,.)=0)return 0;if(strcmp(topath,.)=0)int i;while(rece nt-prev)rece nt=rece nt-prev; /向前回溯,找到第一次创建的目录if(rece nt-pare nt)rece nt=rece nt-pare nt;i=strle n(path);/ prin tf(%d %sn,i,path);while(pathi!=/ & i0)i-; /找到最右边的/if(i!=0)pathi=0;中不止有一个/prin tf(%s,path); /pathelsepathi+1=0;
13、elsefin dpath(topath);return 0;int fin dpath(char *topath)un sig ned int i=0;int sig n=1;if(strcmp(topath,/)=0) /如果命令是 cd /rece nt=root;strcpy(path,/);return 0;temp=rece nt;strcpy(temppath,path);if(topath0=/) /cd命令以 cd / 开始rece nt=root-child;i+;strcpy(path,/);/ prin tf(n%s,path);elseif(rece nt!=NULL
14、 & recen t!=root)strcat(path,/);/ prin tf(n%sn,path);if(rece nt & rece nt-child)if(rece nt-isdir)rece nt=rece nt-child;elseprintf(路径错误! n);return 1;while(ichild)i+;if(rece nt-isdir)rece nt=rece nt-child;elseprintf(路径错误 n); return 1;strcat(path,/);while(topathi!=/ & iisdir!=1)&recen tpathj=0;while(st
15、rcmp(rece nt-file name,rece ntpath)!=0recen t- next!=NULL)专业资料rece nt=rece nt-n ext;if(strcmp(rece nt-file name,rece ntpath)=O)if(rece nt-isdir=O)strcpy(path,temppath);rece nt=temp;prin tf( 是文件不是目录。n);return 1;strcat(path,rece nt-file name);if(strcmp(rece nt-file name,rece ntpath)!=O | rece nt=NULL)
16、 strcpy(path,temppath);recen t=temp;printf(输入路径错误n);return 1;return 0; int mkdir()temp=in it no de( ,1); cin temp-file name; if(rece nt-child=NULL)temp-pare nt=rece nt;temp-child=NULL;rece nt-child=temp;temp-prev=temp-n ext=NULL;printf(目录建立成功!n);elsettemp=rece nt-child;if(strcmp(ttemp-file name,temp
17、-file name)=0&ttemp-isdir=1)printf(目录已存在!n);return 1;while(ttemp-n ext)ttemp=ttemp-n ext;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=1) printf(目录已存在!n);return 1;ttemp-n ext=temp;temp-pare nt=NULL;temp-child=NULL;temp-prev=ttemp;temp-n ext=NULL;printf(目录建立成功!n);return 0; int create()temp=
18、in it no de( ,0);cin temp-file name;if(rece nt-child=NULL)temp-pare nt=rece nt;temp-child=NULL;rece nt-child=temp;temp-prev=temp- n ext=NULL;cout 文件创建成功!child;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=O) printf(文件已存在!n);return 1;while(ttemp-n ext) ttemp=ttemp-n ext;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=0)printf(文件已存在!n);return 1;ttemp-n ext=temp; temp-pare nt=NULL; temp-child=NULL; temp-prev=ttemp; temp-n ext=NULL; cout 文件建立成功!endl;return 0; int run()coutvfilesystem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村自来水项目投资合作合同协议(2025年度)
- 二零二五年度宠物店线上线下全渠道运营权转让合同3篇
- 2025年度木材行业竞业禁止模板木方销售合同样本3篇
- 二零二五年度著作权许可及影视改编合同2篇
- 二零二五年度环保材料研发公司职工招聘与知识产权合同3篇
- 二零二五年度兼职翻译服务合同2篇
- 2025年度养殖场市场营销劳动合同3篇
- 2025年度技术转让合同:新能源技术研发与授权2篇
- 2024年中国甘氨酸乙酯盐酸盐市场调查研究报告
- 二零二五年度养老产业市场拓展营销策划合同3篇
- 史记·秦始皇本纪课件
- 化妆品产品召回模拟演练记录表格
- 痤疮示意图课件
- 机电拆除及施工方案0829
- 综合管理部负责人(部长)岗位职责
- 肿瘤放射治疗技术-总论课件
- 人才培养方案汇报课件
- 检验科15项质量控制指标(检验科质控小组活动记录)
- 5S评分基准模板
- 外研社小学英语三起点五年级上册(中英文对照)
- 重大行政执法法制审核流程图
评论
0/150
提交评论