文件管理课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统课程设计报告

姓名: xxx ______

学号: xxxxxxxxxxxx __

专业年级:软件2班

指导教师: __xx_

2016年 3月1日

1 概述

目的:本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。

意义: 本系统是基于linux平台运行在终端上的虚拟二级文件管理系统。模拟真正的文件管理系统,并采用用户登录机制对文件和文件夹进行创建,修改,删除的操作。对于文件夹而言,可以进行创建删除的操作;对于文件而言,可以创建,修改,删除。删除文件夹时,同时删除相应文件夹下的文件。采用用户登录使得用户管理文件更方便,

并形成了二级的文件管理模式。

主要任务:为DOS系统设计一个简单的二级文件系统.要求做到以下几点:①可以实现下列命令:login 用户登录dir 列文件目

录create 创建文件delete 删除文件open 打开文

件close 关闭文件read 读文件write 写文件

②列目录时要列出文件名、物理地址、保护码和文件长度. ③源文件可以进行读写保护

2 系统设计

(1)设计思路

程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统.

在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为

文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“file.p”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容.

(2) 数据结构

file结构体系统文件.数据结构:

fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式 0.只读;1.可写;2.可读写;3.保护、 fname[]char,文件名; filemode结构体文件状态数据结构:

isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式 0.只读;1.可写;2.可读写。

(3)初始化

user结构体用户信息数据结构:

uname[]char,用户名、upassword[]char,用户密码; userfile结构体用户文件数据结构:

uname[]char,用户名、ufile[]file,用户拥有的文件数组

3 系统实现

#include

#include

#include

#include

#include

#define MaxUser 100 //定义最大mdf目录文件

#define MaxDisk 512*1024 // 模拟最大磁盘空间512k

#define commandAmount 12 // 对文件操作指令数

char disk[MaxDisk]; // 模拟512k磁盘空间

typedef struct distTable //磁盘块结构体

{

int maxlength;

int start;

int useFlag;

distTable *next;

}

diskNode;

diskNode *diskHead;

struct fileTable //文件块结构体 {

char fileName[10];

int strat; //文件在磁盘存储空间的起始地址

int length; //文件内容长度

int maxlength; //文件的最大长度

char fileKind[3]; //文件的属性——读写方式

struct tm *timeinfo;

bool openFlag; //判断是否有进程打开了文件

//fileTable *next;

};

//两级目录结构体

typedef struct user_file_directory //用户文件目录文件UFD {

//char fileName[10];

fileTable *file;

user_file_directory *next;

}UFD;

//UFD *headFile;

typedef struct master_file_directory //主文件目录

MFD {

char userName[10];

char password[10];

UFD *user;

}MFD;

MFD userTable[MaxUser];

int used=0; //定义MFD目录中用已有的用户数

//文件管理

void fileCreate(char fileName[],int length,char fileKind[]); //创建文件void fileWrite(char fileName[]); // 写文件

void fileCat(char fileName[]); //读文件

void fileRen(char fileName[],char rename[]); // 重命名文件

void fileFine(char fileName[]); //查询文件

void fileDir(char UserName[]); // 显示某一用户的所有文件

void fileClose(char fileName[]); // 关闭以打开的文件

void fileDel(char fileName[]); //删除文件

void chmod(char fileName[],char kind[]); //修改文件的读写方式

相关文档
最新文档