1、操作系统课程设计 -指导书一、题目编制文件管理模拟程序,进行文件的操作与管理“模拟文件管理系统”。二、算法功能与要求 1)采用两级目录进行文件管理(最多不超过 5个用户)主目录(MFD):采用顺序表存储结构 用户文件目录(UFD):采用链式存储结构Zhang Wang 用户名用户目录指针Z1Z2Z5W5W42)采用菜单方式与用户交互,实现文件操作(使用)1.建立文件2.打开文件 3.删除文件 4.关闭文件5.读文件6.写文件 7.显示目录8.显示文件 9.退出操作3)可反复选择不同用户,针对性实施文件操作三、数据结构用户文件目录用户文件目录(link s)文件名文件名 filename 文件长
2、度文件长度 length串联文件链接指针(头指针)串联文件链接指针(头指针)headlink表目链表指针表目链表指针 next链表链表主目录主目录(link f)用户名用户名用户文件目录指针用户文件目录指针username next结构体数组结构体数组记录记录文件文件记录类型记录类型 (link r)姓名姓名 name 性别性别 sex串联文件链接指针串联文件链接指针 next串串联联文文件件或或顺序文件顺序文件文件名文件名 filename 文件长度文件长度 length(记录数)(记录数)修改标志修改标志 flag =0 未修改未修改1 修改过修改过串联文件头指针串联文件头指针 headl
3、ink表目链表指针表目链表指针 next链表链表 打开文件表打开文件表(link t)usernamenextmfd0Zhang1Wang234文件名文件名文件长度文件长度Z10 Z2nZ5m 姓名姓名性别性别R1R2Rn姓名姓名性别性别第一个记录第一个记录动态分配动态分配静态分配静态分配afd文件名文件名长度长度修改标志修改标志文件文件文件文件四、算法流程 1)主程序 main()初始化用户文件目录及打开文件表指针(NULL=ufd,afd)初始化主目录(空格串=mfdi.username,NULL=mfdi.next)提示用户输入用户数=n建立主目录(不允许重名)最多输入五个用户名输入用户
4、名,查子目录若无同名用户,建立新表目,填入用户名(不同名标志w=0)显示主目录(调用print1()函数)提示用户输入欲操作的用户名=username用username查主目录找到对应用户?YN(其表目下标在i中)i=flag(置当前用户标记)对应主目录(链表)首表目地址=ufd显示命令菜单,提示用户输入命令代码 =S根据代码S转相应处理程序,直到代码S=9继续下一用户?YN结束操作 2)建立新文件 pcreate()提示用户输入欲建立文件名 =x用x查用户文件目录(ufd 所指链表)有同 名文件?找到同名文件输出“文件已建立”提示串,返回YN分配新的表目结点空间 =P2文件目录空?(ufd=
5、NULL)P2所指结点插在链首YNP2所指结点插在链尾存入文件名到新结点置文件长度为0置文件物理地址指针为NULL置表目链指针为NULL输出“完成文件建立”提示串,返回置入表目数据3)打开文件 popen()算法思想:未找到,返回(文件未找到)找到,转下一步找到,返回(文件已打开)未找到,下一步输入文件名=x查用户文件目录 ufd查打开文件表 afd建立新表目,插在 afd 表尾复制存入文件名,文件长度,文件物理地址指针,置未修改标志(0flag)输出“文件已打开”提示串,返回注:任何文件必须先打开后使用(包括读、写和查看显示)4)关闭文件 pclose()算法思想:输入文件名=x查打开文件表
6、afd将对应文件表目从afd 链中删除判断修改标志flag flag =用x查ufd,找到对应文件表目复制打开文件表中对应文件的长度及物理地址=该表目释放afd,删除结点空间,返回未找到,返回找到,下一步0 未修改,转第步1 修改,转第步 5)删除文件 pdelete()算法思想:输入文件名=x查打开文件表afd查用户文件目录ufd将对应表目从ufd中删除释放回收文件记录空间释放表目结点空间 free(*q2),返回找到,将其表目结点从afd中删除(先关闭)未找到,下一步未找到,返回(文件名不对)找到,下一步6)写文件 pwrite()算法思想:输入文件名=x查打开文件表afd分配记录存储空间
7、=p提示用户输入记录数据将该记录插在串联文件链尾置修改标志 1=flag文件长度计数 length+返回未找到,返回(文件未打开)找到,下一步name =pname sex =psex 7)读文件 pread()算法思想:输入文件名查打开文件表afd提示用户输入欲查找记录号=Ri查找串联文件,找到第Ri个记录(未找到Ri出错返回)输出记录号,姓名,性别等记录信息后,返回未找到,返回找到,下一步注:可在找到记录显示内容后,询问用户是否要修改记录值(或删除)?若要修改则输入新的记录值(姓名或性别)存入记录(结点),或删除记录。若采用顺序文件结构,可用动态数组存放记录上述两函数(读/写)稍作修改即可
8、根据上述算法思想编写 pread和pwrite函数 8)其它程序模块(函数)print1():显示主目录print2():显示当前用户的文件目录print3():显示文件内容close():退出某用户操作时,关闭所有打开文件(注意:必要时复制打开文件的文件长度及文件物理地址到用户文件目录的对应文件表目中)五、课设内容及步骤消化课设算法思想及样本程序给出对应模块(函数)的流程图编制pclosepclose()()、pdeletepdelete()()、preadpread()及()及pwritepwrite()()函数。准备调试数据(至少两个用户,若干文件),能实施多个命令操作。上机编辑、编译源程序,并进行调试。利用准备好的调试数据,运行测试程序,观察运行结果,并作记录和分析。六、书写课程设计总结报告统一格式封面目录课设名称及题目算法思想及功能算法流程图,算法程序调试运行情况收获与体会(包括算法改进的讨论,注意点等)报告内容必须清楚,且独立完成