操作系统文件系统实验Word文档下载推荐.docx
《操作系统文件系统实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统文件系统实验Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
(2)voidExecute(inti,intlen,intcmdset)执行命令函数流程图
Y
N
(3)创建文件
(4)写文件流程图
(5)修改文件执行权限
(6)删除用户注册信息或文件
2.主要的常量变量
charcmd[64];
//存放用户输入命令
charbuffer[36];
charuser[32];
//存放当前登陆的用户名
typedefcharALFA[12];
ALFAKWORD[keynum];
structUFD{//用户文件管理模块
charfilename[32];
//文件名
intsafecode;
//文件保护码
longlength;
//文件长度
}*curfile=NULL;
structMFD{//用户登陆信息管理模块
charusername[32];
//用户名
boolfilepoint;
//用户目录下的文件指针,false表示目录为空,true为该用户目录中有文件
}*curuser=NULL,*elseuser=NULL;
typedefUFDUFD;
typedefMFDMFD;
3.主要模块
voidKeyWord()//初始化命令关键字
intLoginDisplay()//登陆选项操作函数
boolLogin(intSELETE)//用户登陆,注册函数
voidDisplayUFD()//打印用户信息,包括用户的各个文件
//名称、长度和操作权限的设置信息
voidByeFile(boolBOOL)//注销函数,调用次函数用户可以退出系统
boolClearUserFile()//用户要将自己的注册目录从系统彻底删除
//首先将该用户目录下的全部文件删除
voidClearUserMes()//删除用户全部信息
voidCreatFile()//在当前用户目录下创建文件
voidDeleteFile()//删除当前目录下一个文件的操作
voidListAllFile()//显示当前用户目录下的文件信息
boolQueryModElse(boolBOOL,bool&
flag)//查询其它用户目录下文件的文件
//当该文件的权限允许当前用户对其执行有关操作时,返回ture
boolQueryMod(boolBOOL)//查询权限
boolWriteRight(intlen,boolBOOL)//查看是否已经正确地写入到该文件信息中
voidWriteLengthToFile(intLen,boolBOOL)//将文件长度写入文件管理模块中
voidWriteFile()//向文件写入信息的操作
voidReadFile()//读文件函数
voidChangeMod()//修改某文件的执行权限
voidExecute(inti,intlen,intcmdset)//执行命令函数
voidCommand()//读取用户输入的命令,并将其转换成系统能识别的命令
voidmain()
4.代码
/*****************************************************************
*文件名:
Simple_file_system.c
*功能:
简单文件管理系统模拟程序
*******************************************************************/
#include<
iostream.h>
stdio.h>
stdlib.h>
string.h>
#include"
conio.h"
dos.h>
#defineNULL0
#definekeynum10
#definegetspace(type)(type*)malloc(sizeof(type))
charcmd[64];
//
//------------------------------------------------------------------------------------------------
charusername[32];
boolfilepoint;
voidmain();
{
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"
}
intSELETE_1=0;
do
{
cout<
<
"
*****请选择操作*****\n1、用户登陆2、用户注册0、退出"
endl;
cin>
>
SELETE_1;
}while(SELETE_1<
0||SELETE_1>
2);
system("
cls"
returnSELETE_1;
FILE*fp,*fp1,*fp2;
charname[12];
switch(SELETE)
case1:
//用户登陆
if((fp=fopen("
LOGIN.exe"
"
rb"
))==NULL)//打开用户注册目录管理文件
{
cout<
\n错误:
不能打开登陆文件。
getch();
system("
returnfalse;
}
curuser=getspace(MFD);
\n*****登陆*****\n用户名:
;
name;
//输入用户登陆名
while(!
feof(fp))//检查该用户是否合法
fread(curuser,sizeof(MFD),1,fp);
if(strcmp(curuser->
username,name)==0)
break;
if(feof(fp))//如果没有找到跟当前登陆用户名相同的管理信息,提示出错
该用户不存在。
fclose(fp);
returnfalse;
else
fclose(fp);
returntrue;
break;
case2:
//新用户注册
if((fp=fopen("
ab"
))==NULL)//如果登陆信息管理文件不存在
fp=fopen("
wb+"
//创建该信息管理文件
charname[12];
while
(1)
\n*****新用户注册*****"
用户名:
cin>
//输入用户注册名
fp1=fopen("
while(!
feof(fp1))//查看该用户名是否被别的用户占用
{
fread(curuser,sizeof(MFD),1,fp1);
if(strcmp(curuser->
username,name)==0)//该名称已经被使用
{
cout<
\n该用户已经存在,请重新输入!
getch();
break;
}
}
if(feof(fp1))//该名称没有被别的用户占用
strcpy(curuser->
username,name);
curuser->
filepoint=NULL;
fwrite(curuser,sizeof(MFD),1,fp);
strcpy(user,curuser->
username);
//生成用户文件管理模块
strcat(u