文件管理系统源代码

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

文件管理系统

一、实验目的

通过设计一个多用户文件系统,了解操作系统中文件的组织与管理,熟悉文件管理所用的数据结构,加深对文件系统内部功能实现过程的理解。

二、实验内容

1.用C语言或C++语言设计一个最多包括N个用户的多用户文件系统,约定每个用户最多保存M个文件。同时限制一个用户在进入系统后,最多打开L个文件。

2.系统应具备一定的健壮性。即能够检查用户所输入命令的正确性,出错时显示出必要的信息。另外,对文件需设置必要的保护措施。

3.文件目录结构采用两级目录结构:主文件目录和用户文件目录

#include"io.h"

#include"conio.h"

#include"stdio.h"

#include"stdlib.h"

#include"malloc.h"

#include"string.h"

#include"ctype.h"

#define N 30 /*用户数*/

#define M 20 /*一个用户可保存M个文件*/

#define L 5 /*用户只能一次打开L个文件*/

typedef struct MFD /*主文件目录*/

{

char username[100];

char password[100];

FILE fp; /*文件指针*/

}MFD;

///////////

typedef struct UFD /*用户文件目录*/

{

char filename[256];

char protect; /*保护码*/

int length; /*文件长度*/

}UFD;

//////////

typedef struct OFD /*打开文件目录*/

{

char filename[256];

char opencode; /*打开保护码*/

int fp; /*读写指针*/

}OFD;

//////////

typedef struct COMM /*命令串*/

{

char string[256]; /*命令*/

struct COMM *next;/*后继指针*/

}COMM;

////////////

MFD mainfd[N]; /*主文件目录数组*/

UFD userfd[M]; /*用户文件目录数组*/

OFD openfd[L]; /*打开文件目录数组*/

////////

COMM*command; /*命令串指针*/

char username[10];

int usernum,savenum,opennum;

int workfile;

void init();

void init_ufd(char *username);/*初始化用户文件目录*/ void mesg(char *str); /*消息*/

char *getpass(); /*设置口令函数声明*/ char *getuser(); /*设置用户函数声明*/ COMM *readcommand(); /*读命令串函数声明*/ void login(); /*用户登录*/

void logout(); /*用户注销*/

void setpass(); /*设置口令*/

void create(); /*创建文件*/

void mydelete(); /*删除文件*/

void myread(); /*读文件*/

void myopen(); /*打开文件*/

void myclose(); /*关闭文件*/

void mywrite(); /*写文件*/

void help(); /*帮助*/

void dir(); /*列文件目录*/

void mycopy(); /*复制文件*/

void myrename(); /*重命名文件名*/

/////////////

void main()

{

init();

for(;;)

{

readcommand();

if(strcmp(command->string,"create")==0)

create();

else if(strcmp(command->string,"delete")==0)

mydelete();

else if(strcmp(command->string,"open")==0)

myopen();

else if(strcmp(command->string,"close")==0)

myclose();

else if(strcmp(command->string,"read")==0)

myread();

else if(strcmp(command->string,"write")==0)

mywrite();

else if(strcmp(command->string,"copy")==0)

mycopy();

else if(strcmp(command->string,"rename")==0)

myrename();

else if(strcmp(command->string,"login")==0)

login();

else if(strcmp(command->string,"setpass")==0)

setpass();

else if(strcmp(command->string,"logout")==0)

logout();

else if(strcmp(command->string,"help")==0)

help();

else if(strcmp(command->string,"dir")==0)

dir();

else if(strcmp(command->string,"exit")==0)

break;

else

mesg("Bad command!");

}

}

///////////////////

void init()

{

FILE *fp;

char tempname[20],temppass[20];

int i=0;

usernum=0;

savenum=0;

opennum=0;

strcpy(username,"");

if((fp=fopen("mainfile.txt","r"))!=NULL)

{

while(!feof(fp))

{

相关文档
最新文档