• 大小: 14KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签:

资源简介

一个简单的文件系统(操作系统课程设计)主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。文件管理具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护功能。从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录应实现“按名存取”,“按名存取”是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。目录管理中有多种实现机制,其中二级目录机制可以解决多用户之间的文件重名问题,文件系统可以在目录上实现访问限制。

资源截图

代码片段和文件信息

#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

评论

共有 条评论

相关资源