资源简介
一个简单的文件系统(操作系统课程设计)主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。文件管理具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护功能。从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录应实现“按名存取”,“按名存取”是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。目录管理中有多种实现机制,其中二级目录机制可以解决多用户之间的文件重名问题,文件系统可以在目录上实现访问限制。
代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
//宏定义
#define MaxUser 20 //定义最大MDF主目录文件
#define MaxDisk 512*1024 //模拟最大磁盘空间
#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; //判断是否有进程打开了该文件
};
//两级目录结构体
typedef struct userFileDirectory //用户文件目录文件UFD
{
fileTable *file;
userFileDirectory *next;
}UFD;
typedef struct master_file_directory //主文件目录MFD
{
char userName[10];
char password[10];
UFD *user;
}MFD;
MFD userTable[MaxUser];
int used=0; //定义MFD目录中用已有的用户数
//文件管理
//void createFile(char fileName[]int lengthchar 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 delFile(char fileName[]); //删除文件
void chmod(char fileName[]char kind[]); //修改文件的读写方式
int requestDist(int &startPostionint maxLength); //磁盘分配查询
void initDisk(); //初始化磁盘
void freeDisk(int startPostion); //磁盘空间释放
void diskShow(); //显示磁盘使用情况
//用户管理
void userCreate();
int login();
int userID=-1; //用户登录的ID号,值为-1时表示没有用户登录
void userCreate()
{
char c;
char userName[10];
int i;
if(used {
cout<<“请输入用户名:“;
for(i=0;c=getch();i++)
{
if(c==13) break;
else
userName[i]=c;
printf(“%c“c);
}
userName[i]=‘\0‘;
for(i=0;i {
if(!strcmp(userTable[i].userNameuserName))
{
cout<<“\n“;
cout<<“该用户名已存在创建用户失败\n“;
system(“pause“);
return;
}
}
strcpy(userTable[used].userNameuserName);
cout<<“\n“;
cout<<“请输入密码:“;
for(i=0;c=getch();i++)
{
if(c==13) break;
else
userTable[used].password[i]=c;
printf(“*“);
}
userTable[userID].password[i]=‘\0‘;
cout<<“\n“;
cout<<“用户创建成功\n“;
used++;
system(“pause“);
}
else
{
cout<<“创建用户失败,用户已达到上限\n“;
system(“pause“);
}
fflush(stdin);
}
int login()
{
char name[10]psw[10];
char c;
int itimes;
cout<<“请输入用户名:“;
for(i=0;c=getch();i++)
{
if(c==13) break;
else
name[i]=c;
printf(“%c“c);
}
name[i]=‘\0‘;
for(i=0;i {
if(!strcmp(user
评论
共有 条评论