操作系统文件系统实验

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

实验四文件系统实验

一.实验题目:

文件系统实验

二.实验目的:

阅读并调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

了解设计一个n个用户的文件系统,每个用户可以保存M个文件。用户在一次运行中只能打开一个文

件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令.

三.实验设备及环境:

1. 硬件设备:PC机一台

2. 软件环境:安装Windows操作系统,C语言软件。

四.实验内容及要求:

在阅读所给文件系统源程序的基础上,画出其实现的详细流程图,并给出有关的数据结构和说明。

五. 实验方法内容

1.算法流程图

(2)void Execute(int i,int len,int cmdset)执行命令函数流程图

(3)创建文件

(4)写文件流程图

(5)修改文件执行权限

(6

2.主要的常量变量

char cmd[64]; //存放用户输入命令

char buffer[36];

char user[32];//存放当前登陆的用户名

typedef char ALFA[12];

ALFA KWORD[keynum];

struct UFD{//用户文件管理模块

char filename[32]; //文件名

int safecode; //文件保护码

long length; //文件长度

}*curfile = NULL;

struct MFD{//用户登陆信息管理模块

char username[32]; //用户名

bool filepoint; //用户目录下的文件指针,false表示目录为空,true为该用户目录中有文件

}*curuser = NULL,*elseuser=NULL;

typedef UFD UFD;

typedef MFD MFD;

3.主要模块

void KeyWord()//初始化命令关键字

int LoginDisplay() //登陆选项操作函数

bool Login(int SELETE)//用户登陆,注册函数

void DisplayUFD()//打印用户信息,包括用户的各个文件

//名称、长度和操作权限的设置信息

void ByeFile(bool BOOL)//注销函数,调用次函数用户可以退出系统

bool ClearUserFile()//用户要将自己的注册目录从系统彻底删除

//首先将该用户目录下的全部文件删除

void ClearUserMes()//删除用户全部信息

void CreatFile()//在当前用户目录下创建文件

void DeleteFile() //删除当前目录下一个文件的操作

void ListAllFile()//显示当前用户目录下的文件信息

bool QueryModElse(bool BOOL,bool &flag)//查询其它用户目录下文件的文件

//当该文件的权限允许当前用户对其执行有关操作时,返回ture

bool QueryMod(bool BOOL)//查询权限

bool WriteRight(int len,bool BOOL)//查看是否已经正确地写入到该文件信息中

void WriteLengthToFile(int Len,bool BOOL)//将文件长度写入文件管理模块中

void WriteFile()//向文件写入信息的操作

void ReadFile()//读文件函数

void ChangeMod()//修改某文件的执行权限

void Execute(int i,int len,int cmdset)//执行命令函数

void Command()//读取用户输入的命令,并将其转换成系统能识别的命令

void main()

4.代码

/***************************************************************** * 文件名: Simple_file_system.c

* 功能: 简单文件管理系统模拟程序

*******************************************************************/

#include

#include

#include

#include

#include "conio.h"

#include

#define NULL 0

#define keynum 10

#define getspace(type) (type*)malloc(sizeof(type))

char cmd[64]; //存放用户输入命令

char buffer[36];//

char user[32];//存放当前登陆的用户名

typedef char ALFA[12];

ALFA KWORD[keynum];

//------------------------------------------------------------------------------------------------

struct UFD{//用户文件管理模块

char filename[32]; //文件名

int safecode; //文件保护码

long length; //文件长度

}*curfile = NULL;

//------------------------------------------------------------------------------------------------

struct MFD{//用户登陆信息管理模块

char username[32]; //用户名

bool filepoint; //用户目录下的文件指针,false表示目录为空,true为该用户目录中有文件

}*curuser = NULL,*elseuser=NULL;

typedef UFD UFD;

typedef MFD MFD;

void main();

//------------------------------------------------------------------------------------------------

void KeyWord()//初始化命令关键字

{

strcpy(KWORD[ 1],"bye"); strcpy(KWORD[ 2],"chmod");

strcpy(KWORD[ 3],"close"); strcpy(KWORD[ 4],"create");

strcpy(KWORD[ 5],"delete"); strcpy(KWORD[ 6],"list");

strcpy(KWORD[ 7],"open"); strcpy(KWORD[ 8],"read");

strcpy(KWORD[ 9],"write");

}

//------------------------------------------------------------------------------------------------

int LoginDisplay() //登陆选项操作函数

{

int SELETE_1 = 0;

do

{

cout<<" *****请选择操作*****\n1、用户登陆 2、用户注册 0、退出"<

cin>>SELETE_1;

}while(SELETE_1<0 || SELETE_1>2);

system("cls");

return SELETE_1;

}

//------------------------------------------------------------------------------------------------

bool Login(int SELETE)//用户登陆,注册函数

{

FILE *fp,*fp1,*fp2;

char name[12];

switch(SELETE)

{

case 1://用户登陆

if((fp = fopen("LOGIN.exe","rb")) == NULL)//打开用户注册目录管理文件

{

cout<<"\n错误:不能打开登陆文件。"<

getch();system("cls");

return false;

相关文档
最新文档