多用户多级目录文件系统的实现_课程设计

上传人:Bod****ee 文档编号:47540578 上传时间:2018-07-02 格式:DOC 页数:27 大小:650.52KB
返回 下载 相关 举报
多用户多级目录文件系统的实现_课程设计_第1页
第1页 / 共27页
多用户多级目录文件系统的实现_课程设计_第2页
第2页 / 共27页
多用户多级目录文件系统的实现_课程设计_第3页
第3页 / 共27页
多用户多级目录文件系统的实现_课程设计_第4页
第4页 / 共27页
多用户多级目录文件系统的实现_课程设计_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《多用户多级目录文件系统的实现_课程设计》由会员分享,可在线阅读,更多相关《多用户多级目录文件系统的实现_课程设计(27页珍藏版)》请在金锄头文库上搜索。

1、课课 程程 设设 计计课程名称_操作系统操作系统 _ 题目名称_多用户多级目录文件系统的实现多用户多级目录文件系统的实现 _ 学生学院_计算机学院计算机学院_文件管理系统文件管理系统一设计目的: 编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。 二设计要求:设计多用户文件系统,采用多级文件目录。 至少要有十个以上的实用命令,应设置文件保护措施。 设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息, 不需用户打入冗长的命令。 三设计内容 本程序设计了一个树形目录结构的文件管理系统,初始化系统默认根目录为 root,根 目录下为 11 个用户的注册目录,包括一个超级

2、用户 su 和十个普通用户 stud01stud10,初 始化的树形分支结构如下: rootsu stud01 stud02 stud03 stud04 stud05 stud06 stud07 stud08 stud09stud10初始化后各个用户注册目录下均为空,用户可进行创建编辑文件,显示文件内容,删 除文件,复制文件,粘贴文件,创建目录,删除目录,更改工作目录,显示当前工作目录 的全路径,显示当前目录下的全部内容,寻求帮助及用户切换等操作,当只有目录可以为 分支节点创建其目录下的子目录或者文件(这里指的文件为除目录外的终端文件) ,也可以 为叶子节点以待必要的时候在其目录下创建子目录或

3、者文件使其成为分支节点,而文件只 能是叶子节点。 程序运行时要求输入用户名及其密码,初始化时 su 和 stud01stud10 相应的密码分别 为 su,01stud,02stud,03stud,04stud,05stud,06stud,07stud,08stud,09stud,10stud,系 统将验证输入的用户名及其密码,并提示是否输入正确,错误要求重新输入。用户密码只 有超级用户 su 才能更改,普通用户没有权限进行此操作。登录后系统在每个命令提示符前 加【用户名】 ,表示当前的登录用户,若登录用户为 su 时,命令提示符为#符号,若为普通 用户,命令提示符为$符号,而且工作目录也指向

4、当前登录用户的注册目录下。而只有登录 用户为 su 时才可以访问根目录及其所有用户的注册目录下的所有目录以及文件,登录用户 为普通用户时只能访问根目录以及当前用户注册目录下的所有子目录和文件,如当前用户 为 stud01,就无权访问 su 以及 stud02stud10 目录下及其目录下的所有子目录和文件。 进入系统后,根据系统各命令的功能进行相应的操作,系统所有的命令参数及其功能 如下: su,stud01,stud02,stud03,stud04,stud05,stud06,stud07,stud08,stud09,stud10 :输入用户名进行用户切换,输入用户名后系统会要求输入用户密码

5、,只有输入正确,用 户切换才能成功; pwd:显示当前工作目录的全路径名;ls:列出当前目录下的内容,包括所有子目录以及文件,列出时在目录名后面标记“/” , 在终端文件后面标记“*”;mkdir:在当前目录下建立子目录,输入此命令后,系统提示“directory name:” ,要求 输入要建立的子目录名,倘若当前目录下已经存在同名子目录,系统会提示“directory already exist” ;rmdir:删除当前目录下已经存在的子目录,输入此命令后,系统提示“directory name:” ,即输入要删除的子目录名,倘若你要删除的子目录在当前目录下不存在,系统提 示“direct

6、ory not exist” ; vi:在当前目录下建立编辑文件,输入此命令后,系统提示“file name:” ,要求输入要 编辑的文件名,倘若当前目录下已经存在该文件,系统会显示该文件内容,进入编辑界面, 若当前目录下没有该文件创建进入编辑界面; vi 编辑状态下,提示符为“:” ,编辑命令及其功能为:i进行文本行的输入,系统 提示输入要输入文本的行,若该行已存在则清空重新等待输入;d删除指定的行,系统 提示“linenum:” ,输入行数进行删除;list显示当前编辑文本的内容;wq对文本修 改进行存储并退出,系统同时提示“Now saving the file!Press any ke

7、y and exit.” ; cat:显示当前目录下文件的内容,输入此命令后,系统提示“file name:” ,倘若你要 查看的文件不在当前目录下,系统提示“file not exist” ;rm:删除当前目录下已经存在的文件,输入此命令后,系统提示“file name:” ,倘若 你要删除的文件不在当前目录下,系统提示“file not exist” ; cd:改变当前目录,输入此命令后,系统提示“directory name or symbol:” ,要求输入 子目录名字或者父目录标识,当输入子目录名时,若存在,当前的工作目录会改到子目录, 若不存在,系统提示“subdirectory

8、not exist!” ,当输入“.”时,当前目录会返回到上一级 父目录,若当前目录已经是根目录,系统会提示“That is already root directory!” ,当输入“/” ,工作目录返回到根目录 root,当输入“.” ,当前的工作目录保持不变,当输入“” , 即直接按回车而不输入任何字符,工作目录将返回用户注册目录下; cp:复制文件内容到缓冲区以备粘贴,输入此命令后,系统提示“file name:” ,倘若你 要复制的文件不在当前目录下,系统提示“file not exist” ; paste:创建新的文件并将缓冲区的内容写进或者用缓冲区的内容覆盖已存在文件的内 容,输

9、入此命令后,系统提示“file name:” ,若当前目录下不存在此文件,则创建并写将缓 冲区的内容,若存在,系统提示“File already exist!Cover it or not?y/n:” ,输入 y 或 Y 覆盖 原有文件,输入 n 或 N 拒绝此操作。 chpw:在超级用户状态下更改用户密码,如当前用户不为 su 运行此命令,系统会提示“You have no right to change user password!” ;help:查看系统命令参数的功能; exit:退出文件管理系统。 四程序运行举例 程序运行时,当输入用户名 su 和密码 su 后系统提示登录成功,按任意

10、键进入文件管 理界面。进入用户操作界面后,由于当前的用户为 su,故命令提示符为#,提示符前也会显示 当前用户名,输入 pwd 确定当前的工作目录,登录后系统默认目录为用户注册目录 /root/su。在当前目录下创建新的目录 chaoyang 和新的文件 QQ,并编辑文件 QQ,最后用 wq 保 存并退出,用 ls 命令查看当前目录下的所有内容,目录名的后缀为/,文件为*。当输入命令为 copy 时,系统提示“command not found” ,即不存在此命令参数,当输 入 cp 而输入要复制的文件名为 chaoyang,系统提示要复制的文件不存在“file not exist” , 随后

11、复制文件 QQ 并粘贴创建新的文件 ye,用 cat 命令查看文件内容,可确定复制成功。用 ls 查看当前目录下的全部内容并用 rm 命令删除文件 QQ,用 ls 确定是否已删除该 文件。进行工作目录更改,运行命令 cd,根据提示“directory name or symbol:”输入 chaoyang,进入 chaoyang 目录下,用 pwd 查看目录路径确认,用 cd 加标志/返回根目录, 用 cd 返回用户注册目录下。用命令 cd 加标识“.”返回当前工作目录的上一级目录,如/root/su 返回到/root,在根目 录下用 cd 命令,根据要求输入用户名进入该用户的注册目录访问,若

12、当前的登录用户不为 超级用户,无权访问其他用户的注册目录及其以下所有内容。输入用户名 stud01,系统要求输入相应的密码 01stud,若验证成功命令提示符变为$, 其左边为stud01,表明当前的登录用户已切换到 stud01,返回到 root 目录下运行 cd 加目 录名 stud02,企图进入目录 stud02 进行访问,系统提示“Current user dont access other users files or dirrctory!” ,即普通用户不能访问其他用户注册目录及其一下所有文件和子目 录。在登录用户为 stud01 的情况下,输入命令 chpw,系统提示你没有权力更

13、改用户密码“You have no right to change user password!” ,重新切换到用户 su,将 stud01 用户的登录密 码改为 01,运用新的密码重新登录。返回工作目录到根目录下,进行创建目录,创建文件,删除目录,删除文件,系统会 警告“Dont allow this operation in root directory!” ,在根目录下不允许这些操作,即使在超 级用户下也不行。运行 help 参看命令参数及其功能。五设计思想 创建节点的结构属性为: struct node char name256;/*节点名称*/ char code256;/*若节点为

14、用户注册目录,保存相应的用户密码*/ int attribute;/*attribute 为 1 时表示节点为目录,为 0 表示节点为文件*/ struct node *parent,*firstchild,*nextsibling;/*定义双亲节点,孩子节点,兄弟节点*/ struct line *start,*last; *p;/*定义节点的结构属性*/ 指针 p 时刻指向当前的工作目录,fistchild 指向节点的第一个孩子,nextsibling 链接相 邻的节点以便进行访问。 文件以及目录的创建,查看,复制,粘贴,删除等所有操作都是基于结构体以及链表 的操作,同时编辑文件的操作也是

15、采用链表对编辑内容进行记忆,所以所有操作并不是实 际的磁盘操作,只有程序运行完才释放所有的内存空间。因此只要程序运行完重新运行, 原先在初始化目录下进行的相关操作结果都不会存在,这也是该程序局限性所在,有待改 善。 六程序运行环境 本程序是在 Turboc2.0 下设计和调试的,设计语言为 C 语言。 七设计感悟 在熟悉 unix 文件系统结构的基础上,通过所学的 C 语言和数据结构知识设计此文件管 理系统,深化了自己对 C 语言以及链表结构体等数据结构的理解和应用,同时加深了对操 作系统之文件系统中文件和目录相关操作与内存磁盘分配和释放的关系。 八源程序及其注释 #include“strin

16、g.h“ #include“stdio.h“ #include“stdlib.h“ #include“math.h“ #include“conio.h“ #define getnode(type)(type*)malloc(sizeof(type)char sign;/*命令提示符*/ char title256;/*当前用户名*/ int num=255; int symbol=0; int show=0;char str256; struct line char text81; int num;/*行号*/ struct line *next;/*指向下一个输入项目的指针*/ struct line *prior;/*指向前一项目的指针*/ ;/*定义文件编辑行的结构属性*/ struct line *start;/*指向表中第一项目的指针*/ struct line *last;/*指

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号