管理系统课程设计.doc_第1页
管理系统课程设计.doc_第2页
管理系统课程设计.doc_第3页
管理系统课程设计.doc_第4页
管理系统课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 名称:操作系统实验题目:文件管理系统 1、课程设计选题 .31.1主要设计内容 31.2主要设计思路 32、课程设计需求分析 33、概要设计 .43.1整体设计框架 43.2各模块的基本功能 44、系统实现 54.1原理 64.2各模块算法思想 64.3流程图描述 94.4代码描述 105、系统测试 115.1系统主界面 115.2子系统功能测试 116、总结 19 7、参考文献样式 191、课程设计选题1.1主要设计内容本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文件管理系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 1.2主要设计思路首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。2、课程设计需求分析 本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登陆来对文件或是文件进行操作。多用户功能可以满足不同用户不同的需求,同时也起到了很好的保密作用。文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文件。为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。因为存在着同一个目录下不能有同名文件的问题。所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。3、概要设计3.1整体设计框架系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。3.2各模块的基本功能3.21系统初始化系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户3.22用户注册模块用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。3.23用户登陆模块用户名就是每个用户进入用户目录的通行证。如果用户名存在的话,则可进入,否则提示用户名不存在,但不退出系统。3.24创建用户模块此功能只支持管理员操作,在这里可以一次性创建多个用户,设置其用户名、密码、权限,系统同时为每个用户创建个根目录。3.25删除用户模块此功能只支持管理员操作,并且只能删除根目录为空的用户。用户不能删除自己。3.26修改用户资料模块在这里可以修改用户名、用户密码。3.27创建文件模块只支持在当前目录下创建文件,一次可以创建多个文件,设置文件名,文件所需盘块(所需盘块大于空闲盘块将不能分配),文件的权限,文件内容,根据位示图找到未使用的盘块将其分配。3.28打开文件模块只支持在当前目录下操作,一次可以打开多个文件,将文件标志为运行,如果文件的执行权限是不允许的话,将不能进行此操作。3.29关闭文件模块只支持在当前目录下操作,将文件标志为没运行。3.210文件读写模块只支持在当前目录下操作,如果其读写权限是不允许的话,将不能进行相应操作。3.211删除文件、目录模块只支持在当前目录下操作,删除文件释放磁盘空间,并修改位示图。只能删除空目录。3.212创建子目录模块只支持在当前目录下操作,一次可以创建多个,目录不占磁盘空间。3.213改变当前目录模块支持进入到下一个文件夹、返回父目录、返回根目录。实现方式是依据当前目录的指向其子目录的指针和指向其父目录的指针实现。3.214列出当前目录内容模块显示出当前目录的所有子目录,以及子目录的情况,如是否为空;显示当前目录的所有文件,以及文件的相关信息。4、系统实现4.1原理本系统在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。磁盘空闲空间的管理选择了位示图,用0表示未使用,1表示已使用。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。4.2各模块算法思想4.21用户结构用来描述一个登录用户的信息,包含用户的名称、用户的密码、用户的权限(从而进入不同的用户界面)、用户所属的根目录的指针。用一条链把所有用户链接起来。struct MFD char name10;/用户名char password10; /用户密码char right; /用户权限,1表示管理员,0表示一般用户struct MFD *next;/指向用户的后继结点struct MULU *link;/指向用户根目录;4.22目录结构用来描述用户的目录,包含目录的名称、目录里的子目录指针、目录里的文件指针、目录的父目录指针。用一条链把与该目录同一父目录的目录链接起来。用一指向父目录指针来记录当前目录的路径。struct MULU char name10; /目录名struct MULU *next; /指向目录的后继结点struct MULU *link; /指向目录的子目录struct MULU *pre; /指向目录的父目录struct UFD *link1; /指向目录的文件;4.23文件结构用来描述用户的文件,包含文件的名称、文件详细情况的指针。用一条链把与该文件同一目录的文件链接起来。索引结点包括文件大小、文件的内容、文件的存取权限、文件的物理地址连接。struct UFDchar name10; /文件名struct UFD *next;/指向文件的后继结点struct AFD *link;/指向文件信息;struct AFDint size ;/文件大小char context118;/文件内容char state3;/3个状态分别代表:读、写、执行;1代表允许,0代表不允许bool Open_flag;/文件运行标识位struct DISK *link; /指向所占盘块链指针;4.24 文件在外存的分配方式文件采用链接方式,每个链接结点均存有盘块号和连接指针,即指向下一盘块号,凡是一文件的第一个盘号,均作为文件地址入口链接至文件。struct DISK/盘块结构体int disk; /盘块号struct DISK *next;/指向下一个盘块;4.25文件存储空间文件的存储管理采用位示图方法,用一个二维数组表示。0为空闲,1为己分配。盘块的分配可分四步:顺序描位示图,从中找出一个或一组其值为0的。找到其值为0的,则其盘块号计算式如下: B=n*i+j;修改位示图,令mapij=1;将盘块后放入文件盘块的链接结点盘块回收分三步: (1) 从文件的盘块链接中依次获得结点的盘块号(2) 将回收的盘块号转换成位示图的行号和列号I=(b-1) DIV n +1;J=(b-1) MOD n+1;修改位示图:令mapij=0;4.26结构图USERMFDnextnextnextlinkrootlinkrootlinkroot根目录linkLink1MulunextnextUfdnextnext第1级Mulunext第2级AfdDisklinklinknextnext子目录子文件4.3流程图描述 开始初始化用户登陆登陆成功?NY接收命令 实现命令 结束 解析命令退出?NY进入目录改变路径新建文件删除文件注销显示目录新建文件夹删除文件夹关闭文件打开文件写文件读文件用户界面区显示用户删除用户创建用户修改用户磁盘空间注销用户注册用户登陆区结束退出返回用户界面区4.4代码描述void main();/主函数/初始化void initdisk();/位示图处始化函数void inituser();/创建1个管理员函数字/登陆区void loginmenu();/登陆菜单函数void Userregister();/用户注册函数void LoginMFD();/用户登陆函数void exitMFD();/退出系统函数/用户界面区void MFDmenu();/用户界面函数void CreateMFD();/创建新用户函数void linkMFD(); /用户按创建先后进行排列函数 void DeleteMFD();/删除用户函数void EnterMULU();/进入用户根目录函数void DisplayMFD();/显示用户资料函数void ModifyMFD();/修改用户资料函数void Showdisk();/位示图情况显示函数void exitMULU();/用户注销函数/用户操作目录区void MULUmenu();/用户操作目录区显示函数void MULUpath();/当前目录路径显示函数void MULUorder();/命令输入函数void CreateUFD();/创建文件函数void linkUFD();/用户文件按创建时间先后排序void Assigndisk();/为文件分配盘块函数void linkDISK();/盘块链函数void OpenUFD();/打开文件函数void CloseUFD();/关闭文件函数void ReadUFD();/读取文件函数void WriteUFD();/文件写函数void Deletemunu();/删除选项界面函数void Delete();/删除函数 void DeleteUFD();/文件删除函数 void Recoverdisk();/回收盘块函数 void DeleteMULU();/删除目录函数 void CreateMULU();/创建子目录函数 void CdMULU();/改变当前目录函数 void Dir();/当前目录内容显示函数5、系统测试5.1系统主界面5.2子系统功能测试 5.21登陆区这里用管理员帐号登陆用户界面区5.22退出系统5.23用户界面区在这里可以进行相应选择。现在演示“创建用户” 5.24创建用户创建后,显示所有用户5.25删除用户5.26显示所有用户5.27位示图5.28修改用户资料 5.29用户目录操作区选择“2”进入目录操作区5.30创建文件输入命令”create”,然后回车所需盘块数不能大于可用盘块数,否则不能分配,同一目录文件名不能重复。其他功能的操作类似,这里不在演示,下面演示“创建目录”。5.31打开文件5.32创建目录5.34删除内容输入命令”delete”,然后回车选择“1”,删除文件a删除目录也是同样的操作,但删除目录功能只能删除空的目录。更换目录输入命令”cd”,然后回车,进入更换目录区选择“3”,进入p目录其他操作类似,这里不再演示。6、总结对这次的这个多用户多目录文件管理系统,总体来说,还算满意,基本上实现了设计任务的要求,并且还添加了一些功能,使整个系统更实用,但也有几个不足的地方,如不能删除非空目录,主要原因是我一直没有理顺它们之间的递归关系,由于时间的关系,也没能继续深入进去,其次,就是我初始化了一个二唯数组的位示图,里面有一、两个元素显示不正常,感觉好象是出现随机数,但都给其赋值,而且中间也没发现什么错误的更改,但整个位示图都能正常运行,即可以正常的分配与回收,就是显示有点问题,至今也没找到结果,这是我最大的遗憾。这次的设计给我感触还是挺深的。特别是当自己经过辛勤努力,得到正确运许的那一刻,真是有无比的成就感。虽然这个很简单,但这是收获,凝集着自己的辛勤的汗水,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论