欢迎来到天天文库
浏览记录
ID:55586997
大小:488.50 KB
页数:14页
时间:2020-05-19
《文件系统的管理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告一实验题目编制文件管理模拟程序,进行文件的操作与管理——“模拟文件管理系统”。熟悉的文件系统的基本概念。二实验要求编制文件管理模拟程序,进行文件的操作与管理1)采用两级目录进行文件管理(最多不超过5个用户)主目录(MFD):采用顺序表存储结构用户文件目录(UFD):采用链式存储结构2)采用菜单方式与用户交互,实现文件操作(使用)-―――――――――――――――――――――――1.建立文件2.打开文件3.删除文件4.关闭文件5.读文件6.写文件7.显示目录8.显示文件9.退出操作--――――――――――――――――――――――3)可反复选择不同用户,针对性实施文件操作三实验步骤(1
2、)打开文件popen()1.输入文件名=〉x未找到,返回(文件未找到)2.查用户文件目录ufd找到,转下一步3.查打开文件表找到,返回(文件已打开)afd未找到,下一步4.建立新表目,插在afd表尾复制存入文件名,文件长度,文件物理地址指针,置未修改标志(0→flag)输出“文件已打开”提示串,返回(2)关闭文件pclose()算法思想:1.输入文件名=〉x2.查打开文件表afd未找到,返回找到,下一步3.将对应文件表目从afd链中删除0,未作修改,转到第6步4.判断修改标志flagflag=1,修改,转到第5步5.用x查ufd,找到对应文件表目复制打开文件表中对应文件的长度及物理地址=
3、〉该表目6.释放afd,删除结点空间,返回(3)删除文件pdelete()算法思想:1.输入文件名=〉x找到,将其表目结点从afd中删除(先关闭)2.查打开文件表afd未找到,下一步未找到,返回(文件名不对)3.查用户文件目录ufd找到,下一步4.将对应表目从ufd中删除5.释放回收文件记录空间6释放表目结点空间free(*q2),返回(4)写文件pwrite()算法思想:1.输入文件名=〉x未找到,返回(文件未打开)2.查打开文件表afd找到,下一步3.分配记录存储空间=〉pname=〉p→name4.提示用户输入记录数据sex=〉p→sex5.将该记录插在串联文件链尾6.置修改标志1
4、=〉flag7.文件长度计数length++,返回(5)读文件pread()算法思想:1.输入文件名未找到,返回2.查打开文件表afd找到,下一步3.提示用户输入欲查找记录号=〉Ri4查找串联文件,找到第Ri个记录(未找到Ri出错返回)5输出记录号,姓名,性别等记录信息后,返回注:1.可在找到记录显示内容后,询问用户是否要修改记录值?若要修改则输入新的记录值(姓名或性别)存入记录(结点)2.若采用顺序文件结构,可用动态数组存放记录上述两函数(读/写)稍作修改即可3.可根据上述算法思想编写pread和pwrite函数(6)其它程序模块(函数)print1():显示主目录print2():显
5、示当前用户的文件目录print3():显示文件内容close():退出某用户操作时,关闭所有打开文件(注意:必要时复制打开文件的文件长度及文件物理地址到用户文件目录的对应文件表目中)四运行结果1.创建主目录2.创建文件目录23.打开文件目录4.显示文件目录5.写文件-添加姓名:lq和性别:06.写文件-添加姓名:whb和性别:17.显示所建文件内容8.读文件9.在所读文件中修改文件10.显示修改后内容五源代码#includestructlinkf/*主目录*/{charusername[16];structlinks*next;};structlinkr/*文件——记录
6、类型*/{charname[16];intsex;structlinkr*next;};structlinks/*用户文件目录*/{charfilename[16];structlinkr*headlink;intlength;structlinks*next;};structlinkt/*打开文件表*/{charfilename[16];intflag;intlength;structlinkr*headlink;structlinkt*next;};structlinkfmfd[5];structlinks*ufd,*p2,*q2;structlinkr*p,*q;structlin
7、kt*afd,*p3,*q3;charX[16],s,username[16];intr,i,w,n,m,j,t,flag;voidprint1(){inti,j;printf("MFD:");printf("----------------");for(i=0;i8、%s",mfd[i].username);printf("----------------");}}voidprin
8、%s",mfd[i].username);printf("----------------");}}voidprin
此文档下载收益归作者所有