二级目录文件系统

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

// 新二级文件管理系统.cpp : Defines the entry point for the console application. //

#include "stdafx.h"

#include

#include

#include

#include

#include

#define MaxUser 20 //定义最大MDF主目录文件

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

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

//存储空间管理有关结构体和变量

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 fileRead(char fileName[]); //读文件

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

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

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

int requestDist(int &startPostion,int maxLength); //磁盘分配查询

void initDisk(); //初始化磁盘

void freeDisk(int startPostion); //磁盘空间释放

void diskShow(); //显示磁盘使用情况

//用户管理

void userCreate();

int login();

int userID=-1; //用户登录的ID号,值为-1时表示没有用户登录

//主函数

int main()

{

char order[commandAmount][10];//定义一个指令二维数组,指令长度不能超过10 strcpy(order[0],"create");

strcpy(order[1],"del");

strcpy(order[2],"read");

strcpy(order[3],"write");

strcpy(order[4],"dir");

strcpy(order[5],"close");

strcpy(order[6],"return");

strcpy(order[7],"exit");

char

command[50],command_str1[10],command_str2[10],command_str3[5],command_str4[3];

int i,k,j;

int length;

initDisk(); //初始化磁盘

for(i=0;i

{

userTable[i].user=(UFD *)malloc(sizeof(UFD));

userTable[i].user->next=NULL;

}

while(1)

{

printf("********************************************\n");

printf(" 欢迎进入系统\n");

printf(" \n");

printf(" 1、Creat user\n");

printf(" \n");

printf(" 2、login\n");

printf("********************************************\n");

printf("Please chooce the function key:>");

int choice;

scanf("%d",&choice);

if(choice==1) userCreate();

else if(choice==2) userID=login();

else printf("您的输入有误,请重新选择\n");

while(userID!=-1)

{

fflush(stdin);

printf("———————————————————————————————————————\n");

printf(" create-创建格式:create a1 1000 rw---将创建名为a1,长度为1000字节可读可写的文件\n");

printf(" del-删除格式:del a1---将删除名为a1的文件\n");

printf(" read-查看文件内容格式:read a1---显示a1的内容\n");

printf(" write-写入格式:write a1\n");

printf(" dir-显示文件格式:dir aaa---将显示aaa用户的所有文件\n");

printf(" close-关闭文件格式:close a1---将关闭文件a1\n");

printf(" return-退出用户,返回登录界面\n");

printf(" exit-退出程序\n");

printf("————————————————————————————————————————\n");

printf("please imput your command:>");

gets(command);

int select;

for(i=0;command[i]!=' '&&command[i]!='\0';i++) //command_str1

相关文档
最新文档