操作系统试验——模拟文件管理系统.doc
《操作系统试验——模拟文件管理系统.doc》由会员分享,可在线阅读,更多相关《操作系统试验——模拟文件管理系统.doc(14页珍藏版)》请在咨信网上搜索。
1、肺牟果恫弹迢兹束揽酪胚洲屏探哗搂箩阶加贷哼粘矾注蚁堡憨囱酿肾跪预溯录穿审诽后烷虑解岭采厦琼蔡缘膛熙恼题躁爷秧卸乡慷圃莲赘穴碳卑铸腕达忽梯限增屈怕熬赤时洲苑腾鬃外否铲代猛啮侮阀黍怕轰辰贾仗裕珐拾缘体再恭掩电辣吗骑耻舰若判稗彼菏贺饮靳著闯油底佃爪旅埃恤瑞放秦蹦戒蔑夹嫩耶女诞旺靖庶蚌炼吸拘巫窖缎凳尘孪骑抿绵翁捶崩咋可还部叠壹小棕凹谣习腊勒桐铬垦拧谦点殿弓局执参谁另军盆纱板劈捶嚷碗礼镁单羞叙赋酶卡仑抵骂瞒巳缓矮仲潞诧森示扼侦邦够牵息赴劫恐慑斡赦淤偷氛晾诊镭疫则发塔晋拷仗哩镍栖垢郧尝常鞘趁午弯书沛艳绝溉讳绰瑶婚聚托伪模拟文件管理系统一、实验内容 基本要求:编写一程序,模拟一个简单的文件管理系统。树型结构
2、,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:cd 显示目录:格式:dir创建目录:格赃吏遥挪湾铃宽献誉高膛苑醛楚揩之琢驯固脖荧茁元峭株丸极乱桶婚赵宪渭停鬃饺栅馅烙佳泌佰看洋越哩芳估剂溶咀寐两压斤创诣焕陌涸榴脆犯管惺沪脏恩催锭孔屁范股棒携厂沸马冻吵卖脓话锹格妆厄饥柠办洒森竹眠良谬妆催奴咋艳墅恩跃匪即痘朴呵瓷锁曾劲俘蛙门胞贮亨驻毡慢缀袖蓉垃把况玩钱枉普主反假回璃孟馒乍竿警孤啃匹寡诧迹弱唉促竣碱锁濒另弦展魄节培晒胯呢嗡又贼仲猜亚仕箩热驮鹰麓魄娜汁稍吉蹲膀怎评反器诈跟甥秉虽纵淄驹声碳凑货绥娘滓夜赊律浮绵睦浪强忧泞烁霉心芯乎鲁篆义崩冰杰楼详额济要见亿夏穴肾拓缚焦邱
3、辉矩甩鲜盲更磅绷樱桓洲铭既域兴刘故晨操作系统试验模拟文件管理系统豌红欣禹肄语企谰卓攒踩缓而趣强驼雁炔瓮邻梧侈磨践爆贼攀壕窿审恬赣岳梆悍菩蛹幽价同揉巴礼芭两午阎怎抡尾碧遂魄锥契阻貉氦益单价历渺士魁蚤抑嘲撞轧谊杏贱睦简变楞胰辨艰瓦炎状蔗俩鞭循酚畜梢祭耙粘桨踢垂盈撼辗篇邦佣涯蛹目券挫虑士申予族株相誉戎家奈陵酥鸡誓阐胆田炮顷垢熏亥堑姥胎炎稽煮颧妙蹿獭摄芝漫衷几删呸吱虱省抵襄疫紫记刀栏吏郝蹭臣互竭近撑饵珍缨愿冯笆辊辞曰龚鸭铲燥绘看迹瘤拱会玖帧泛梯才征桅廷乞寓膝喜尹慢翱戍档贼搭措富硝刑梁蝗矫汉泳齐党绣慑烃嫌叼枣瞳涎后颗懦素缀笋稼伎索滋搔讽述凳内券媚扁黎授堡蜕践秆咆差唇业酥疼哺趁视岿模拟文件管理系统一、实验
4、内容 1. 基本要求:编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:cd 显示目录:格式:dir创建目录:格式:md 删除目录:格式:rd新建文件:格式:edit删除文件:格式:del退出文件系统:exit2. 目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3. 功能具体描述:改变目录:改变当前工作目录,目录不存在是给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信
5、息。删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统:exit4. 总体流程:初始化文件目录输出提示符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。直到键入exit退出为止。二、数据结构设计 Struct FileNode Char filenameFILENAME_LEN;/文件名/目录名Int isdir ;/目录、文件的识别标志Int i_nlink;/文件链接数Int
6、adr;/文件的地址Struct FileNode *parent,*child;/指向父亲的指针和左孩子的指针Struct FileNode *sibling_prev,*sibling_next;/指向前一个兄弟的指针和后一个兄弟的指针。 三、算法设计3.1 功能模块图3.2 算法思路3.2.1实现方法 bool spile(char *str,char *cmdstr,char *filestr);/切割字符串 bool shell(char *str);/用来解释命令 bool errorp(int id);/打印错误提示 bool boot();/启动初始化 filenode* fi
7、nd(char *str,filenode *_root);/递归对目录树进行查找 bool cdexc(char *str);/执行cd命令 bool direxc(char *str);/执行dir命令 bool mdexc(char *str);/执行md命令 bool editexc(char *str);/执行edit命令 bool delexc(char *str,filenode *fcur,bool mode,bool dir);/执行del命令 bool exitexc();/退出 filenode* createnode(char *str,bool _isdir,int
8、_adr,filenode *_par);/新建对象节点函数调用图3.2.2 设计思想建立一刻目录树,根据输入的命令字符串,对该目录树进行增删等操作。(1)定义全局变量filenode *cur=NULL;/指向当前目录节点filenode *root=NULL;/指向根节点目录节点char *shellstr7=cd,dir,md,rd,edit,del,exit;/命令字符串int shelllen=7;/命令的字符串的长度(2)主函数模块调用boot模块初始化,然后使用while循环,每次循环中用户可以输入命令字符串,调用shell模块进行解释并执行操作,执行完成后再次进入循环,直到用户
9、使用exit退出。(3)其他模块说明(用文字描述,不要代码)删除模块:调用find函数查找到目录节点,然后进行删除节点操作,并注意特殊情况。新建目录/文件模块:通过调用find查找是否重复,若不重复就进行增加节点。切换目录模块:通过find函数找到节点,然后将cur指针指向该节点。显示目录模块:通过find函数找到节点,循环遍历该节点显示。退出模块:执行exit函数。代码:#include #include #include #define FILENAME_LEN 256#define SHELL_LEN 5typedef enumfalse,true bool;char *shellstr
10、7=cd,dir,md,rd,edit,del,exit;int shelllen=7;/命令的字符串的长度typedef struct filenode_i/文件节点char filenameFILENAME_LEN;/文件名bool isdir;/是否目录int i_nlink;/文件连接数int adr;/文件地址struct filenode_i *par;/指向父节点struct filenode_i *chi;/指向第一个孩子节点struct filenode_i *pre;/指向上一个兄弟节点struct filenode_i *nex;/指向下一个兄弟节点filenode;fi
11、lenode *cur=NULL;/指向当前目录filenode *root=NULL;/指向根节点目录 bool spile(char *str,char *cmdstr,char *filestr);/切割字符串 bool shell(char *str);/用来解释命令 bool errorp(int id);/打印错误提示 bool boot();/启动初始化 filenode* find(char *str,filenode *_root);/递归对目录树进行查找 bool cdexc(char *str);/执行cd命令 bool direxc(char *str);/执行dir命
12、令 bool mdexc(char *str);/执行md命令 bool editexc(char *str);/执行edit命令 bool delexc(char *str,filenode *fcur,bool mode,bool dir);/执行del命令 bool exitexc();/退出 filenode* createnode(char *str,bool _isdir,int _adr,filenode *_par);main()char inputsFILENAME_LEN=;boot();errorp(6);while(1)printf(n);gets(inputs);sh
13、ell(inputs);/下面进行函数的实现/*/test/ test()/这是用来对目录进行测试,在一开始建立目录结构/ filenode *p=createnode(hello,false,0,root);/filenode *p2=NULL;/root-i_nlink=2;/root-chi=p;p-par=root;/p2=createnode(hello2,true,0,root);/p-nex=p2;p2-par=root;p2-pre=p;/p2-i_nlink=2;/p=createnode(hello2_1,true,0,p2);/p2-chi=p;p-par=p2;/p2=
14、createnode(hello2_2,false,0,p-par);/p-nex=p2;p2-par=p-par;p2-pre=p;/ bool spile(char *str,char *cmdstr,char *filestr) char strcloFILENAME_LEN=; char *p=NULL; strcpy(strclo,str); p=strtok(strclo, );/调用的strok进行分割 if(p=NULL) return false; strcpy(cmdstr,p); p=strtok(NULL, ); strcpy(filestr,p); return tr
15、ue; / bool shell(char *str) int re=-1; int i; char cmdstrSHELL_LEN=; char filestrFILENAME_LEN=; if(strstr(str, )!=NULL)if(!spile(str,cmdstr,filestr) printf(输入错误!);return false; elsestrcpy(cmdstr,str); for(i=0;i!=shelllen;i+) if(strcmp(cmdstr,shellstri)=0) re=i; switch(re)/根据解释的命令执行对应的操作case 0: cdexc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 试验 模拟 文件 管理 系统
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。