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

2019-03-28 15:36

中北大学

操作系统课程设计

说 明 书

学 院、系: 专 业: 学 生 姓 名:

赵巍

软件学院 软件工程

学 号: 0921010414

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

起 迄 日 期: 2011年12月22日- 2012年1月7日 指 导 教 师:

康珺

2012 年 1月 7 日

1 需求分析

所要实现的功能:

(1) 设计一个10个用户的文件系统。每个用户最多可以保存10个文件,一次运行用户可打

开多个文件。

(2) 程序采用二级文件目录。(即设置主目录(MFD)和用户文件目录(UFD))。另外,可打

开文件设置指针。

(3) 为了方便实现,对文件的读写作了简化。在执行读写命令时,只需改读写指针。并不进

行实际的读写操作。

(4) 实现的基本功能主要包括:改变目录(CD),创建目录(MD),显示目录(DIR),删除目

录(RD),打开全部文件(openall),打开单个文件(open),建立一个文件(create),删除一个文件(delete),写文件(write),读文件(read),改文件的保护码(change),退出(exit)等。

考虑特殊情况如:各个命令对全路径和相对路径的支持、目录不存在时,给出错误信息、不能用cd进入文件、命令之中不能有空格(如 ex it,给出错误提示)、相对路径的解析、路径中的空格剔除、新建目录或文件时的问题、重名问题、目录或文件的名字长度限制、目录或文件的名字中包含不合法字符(注意空格)、删除目录或文件时的问题、删除不存在的文件或目录给出错误提示、删除目录时目录不为空(如果该目录为空,则可删除,否则给出是否做删除提示,删除操作将该目录下的全部文件和子目录都删除)、进入到某个目录下,却要删除本目录或上级目录、不能用delete删除目录、不能用RD删除文件等都要考虑在内。 最终获得的成果就是:

①在系统中用一个文件来模拟一个磁盘;

②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。 ③实现这个文件系统。

④能实际演示这个文件系统。基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。

2

1

总体设计

2.1系统活动图

注册 登陆 退出 用户管理系统 文件目录管理系统

新 删进打路登 建除入开径陆目目目

文控退录 录 录 件 制 出 目录内文件管理系统 新读写 登建文文删移陆 文件 件 除 动 退 件 出

2.2 头文件:

#include #include #include 2.3结构体:

typedef struct file{ char name[10]; struct file *next; FILE *fp; }File;

typedef struct content{ char name[10];

2

File *fileHead; int f_num;

struct content *next; }Content;

typedef struct user{ char name[10]; char psw[10]; 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() void FileMove()

3.详细设计 用户管理系统: registe():用户注册

login():用户登录

目录管理系统: FolderCreate():新建目录

FolderDelete():删除目录

3

FolderIntoFolder():进入目录

FolderViewAllFiles():显示所有目录内的所有文件

absolutePathFileController():通过绝对路径直接读文件

文件管理系统: FileCreate():新建文件 FileDelete():删除文件 FileMove():跨目录移动文件 FileRead():读文件

FileWrite():写文件

3.1 用户管理系统:

截图3-1

相关核心代码: //step0

void registe() {

if(user_num>=10) {

printf(\return; }

//allocate new memory block for new user User *add,*last;

add=(User *)malloc(sizeof(User)); add->next=NULL; if(user_head==NULL) user_head=add; else {

last=user_head;

while(last->next!=NULL) last=last->next; last->next=add;

4


基于Linux的模拟文件系统的设计与实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年高考数学一轮复习第十一章计数原理、概率、随机变量及其分

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: