基于Linux的模拟文件系统的设计与实现

上传人:人*** 文档编号:431140581 上传时间:2023-01-15 格式:DOC 页数:29 大小:156.50KB
返回 下载 相关 举报
基于Linux的模拟文件系统的设计与实现_第1页
第1页 / 共29页
基于Linux的模拟文件系统的设计与实现_第2页
第2页 / 共29页
基于Linux的模拟文件系统的设计与实现_第3页
第3页 / 共29页
基于Linux的模拟文件系统的设计与实现_第4页
第4页 / 共29页
基于Linux的模拟文件系统的设计与实现_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于Linux的模拟文件系统的设计与实现》由会员分享,可在线阅读,更多相关《基于Linux的模拟文件系统的设计与实现(29页珍藏版)》请在金锄头文库上搜索。

1、中北大学操作系统课程设计说 明 书学 院、系:软件学院专 业:软件工程学 生 姓 名:学 号:0921010414设 计 题 目:基于Linux的模拟文件系统的设计与实现 起 迄 日 期: 2011年12月22日- 2012年1月7日指 导 教 师:2012 年 1月 7 日1 需求分析 所要实现的功能: (1) 设计一个10个用户的文件系统。每个用户最多可以保存10个文件,一次运行用户可打开多个文件。(2) 程序采用二级文件目录。(即设置主目录(MFD)和用户文件目录(UFD)。另外,可打开文件设置指针。(3) 为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进行实

2、际的读写操作。(4) 实现的基本功能主要包括:改变目录(CD),创建目录(MD),显示目录(DIR),删除目录(RD),打开全部文件(openall),打开单个文件(open),建立一个文件(create),删除一个文件(delete),写文件(write),读文件(read),改文件的保护码(change),退出(exit)等。考虑特殊情况如:各个命令对全路径和相对路径的支持、目录不存在时,给出错误信息、不能用cd进入文件、命令之中不能有空格(如 ex it,给出错误提示)、相对路径的解析、路径中的空格剔除、新建目录或文件时的问题、重名问题、目录或文件的名字长度限制、目录或文件的名字中包含不

3、合法字符(注意空格)、删除目录或文件时的问题、删除不存在的文件或目录给出错误提示、删除目录时目录不为空(如果该目录为空,则可删除,否则给出是否做删除提示,删除操作将该目录下的全部文件和子目录都删除)、进入到某个目录下,却要删除本目录或上级目录、不能用delete删除目录、不能用RD删除文件等都要考虑在内。最终获得的成果就是:在系统中用一个文件来模拟一个磁盘;此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。实现这个文件系统。能实际演示这个文件系统。基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。2 总体设计

4、 2.1系统活动图 用户管理系统文件目录管理系统新建目录删除目录进入目录打开文件路径控制登陆退出 目录内文件管理系统新建文件读文件写文件 删除 移动登陆退出 注册 登陆 退出 2.2 头文件:#include #include #include 2.3结构体:typedef struct file char name10; struct file *next;FILE *fp;File;typedef struct contentchar name10;File *fileHead;int f_num;struct content *next;Content;typedef struct us

5、er char name10; char psw10; Content *conHead;int c_num; struct user *next;User;2.4 全局变量和函数:void registe()int login()void MenuUser()void FolderCreate()void FolderDelete()void FolderViewAllFiles()void FolderIntoFolder()void MenuFolder()void FileCreate()void FileRead()void FileWrite()void FileDelete()v

6、oid FileMove()3 详细设计用户管理系统:registe():用户注册login():用户登录目录管理系统:FolderCreate():新建目录FolderDelete():删除目录FolderIntoFolder():进入目录FolderViewAllFiles():显示所有目录内的所有文件absolutePathFileController():通过绝对路径直接读文件文件管理系统:FileCreate():新建文件FileDelete():删除文件FileMove():跨目录移动文件FileRead():读文件FileWrite():写文件3.1 用户管理系统: 截图3-1相

7、关核心代码:/step0void registe()if(user_num=10)printf(Has 10 users.You have no access to registern);return;/allocate new memory block for new userUser *add,*last;add=(User *)malloc(sizeof(User);add-next=NULL;if(user_head=NULL)user_head=add;elselast=user_head;while(last-next!=NULL)last=last-next;last-next=

8、add;user_num+;/fulfill the new userchar name10,psw10;User *check;char buffer2;fgets(buffer,2,stdin);unr:printf(now create a new user:nuser name(9,only alphabet and number can be used):n);scanf(%s,name);check=user_head;while(check!=add)if(strcmp(name,check-name)=0)printf(username exist.please re-inpu

9、t:n);goto unr;check=check-next;strcpy(add-name,name);fgets(buffer,2,stdin);printf(password(10):n);fgets(psw,10,stdin);strcpy(add-psw,psw);add-conHead=NULL;add-c_num=0;/successprintf(successn);return;/step0int login()if(user_head=NULL)printf(system has no usern);return 0;char buffer2;fgets(buffer,2,s

10、tdin);char name10,psw10;User *check;printf(press # if you wanna quitn);unl:printf(username:n);scanf(%s,name);if(name0=#)return 0;check=user_head;while(check!=NULL)if(!strcmp(check-name,name)break;elsecheck=check-next;if(check=NULL)printf(no such user.nplease re-input:n);goto unl;/match passwordfgets

11、(buffer,2,stdin);printf(password:n);fgets(psw,11,stdin);if(strcmp(psw,check-psw)!=0)printf(wrong passwordn);goto unl;printf(nn*welcome back!%s*nn,check-name);cur_user=check;return 1;void main(int argc, char* argv)user_num=0;user_head=NULL;cur_user=NULL;int choice;for(;)printf(*MAIN MENU*n);printf(1.

12、 New usern);printf(2. Loginn);printf(0. Exitn);printf(*n);printf(%d user existn,user_num);printf(Input Your Choice:);scanf(%d,&choice);switch(choice)case 1:registe();continue;case 2:if(login()MenuUser();continue;case 0:printf(Thanks for usingn);exit(0);default:printf(wrong input!n);3.2 目录管理系统: 截图3-2相关核心代码:/step0-1void MenuUser()void FolderCreate();void FolderDelete();void FolderViewAllFiles();void FolderIntoFolder();void absolutePathFileController();User *current;Content *goThrough;current=cur_user;goThrough=current-conHead;for(;)printf(*%ss Content*n,cur_user-name);prin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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