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

资源简介

这次课设是一个文件系统模拟程序模拟文件管理的工作过程,对于多用户,设计了最多有10个用户的文件系统,为了实现文件系统的管理,设置了创建用户,删除用户,创建文件,删除文件,创建文件夹,删除文件夹,读文件,写文件,执行文件,打开文件,关闭文件,显示目录等操作。对于多级目录,设置了主目录MFD,用户文件目录UFD,用户文件夹目录UDD,为打开文件设置了运行目录AFD。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define NULL 0
int num;      //当前用户个数
int choice;
int ex;

typedef struct ufd {
char filename[10];     //文件名
char procode[8];     //文件属性
char filecon[100];     //文件内容
int length;          //文件长度
struct ufd *nextfile;//指向下一个文件
}UFD;   //用户文件目录
UFD *rwpointer;//*读写指针

typedef struct udd{
 char foldername[10];    //文件夹名 
 struct ufd *clink;      //指向该文件夹的第一个文件
struct udd *cnext;      //指向该文件夹的第一个文件夹  
struct udd *link;        //指向同级文件夹 
}UDD;


typedef struct mfd {
char username[10];  //用户名
struct ufd *link;     //指向该用户的第一个文件
struct udd *clink;   //指向该用户的第一个文件夹
}MFD;   //主文件目录
MFD filesystem[10];//定义了最大的文件目录

typedef struct protect {
char code[4];
}PRO;

typedef struct afd {      //运行文件目录
char filename[10];   //打开文件名
char procode[4];    //文件属性
char filecon[100];
int rwpointer;      //读写指针
}AFD;               //运行文件目录
AFD *afd = NULL;

PRO flag[3] = {
“1“//***只读
“2“//***读写
“3“//**可执行
};


void show() //显示所有文件文件夹函数
{
int i j;
UFD *p;
UDD *q;
printf(“\t\t显示目录\n“);
printf(“\t------------------------------------------------\n“);
for (i = 0; i < num; i++)     //展示所有文件的文件名属性长度
{
j = 0;
printf(“\n用户 %s目录如下: \t\n“ filesystem[i].username);
p = filesystem[i].link;    //指向用户文件的第一个文件 
q = filesystem[i].clink;
while (p)
{
printf(“\t 文件名:%s\t||“ p->filename);
printf(“文件属性:%s\t|| “ p->procode);
p = p->nextfile;
}
while (q)
{
printf(“\t文件夹名:%s\n“ q->foldername);
q = q->link;
}

}
}



int findusername(char * username) //找到用户名字

{          //返回用户名下标当k=num时,用户不存在
int k;
k = 0;
while (k < num) {
if (!strcmp(filesystem[k].username username))
break;
k++;
}
return k;
}

UFD* findfilename(char * filename UFD *filepointer)       //返回指向特定文件
{
UFD *k;
k = filepointer;
while (k&&strcmp(filename k->filename))
k = k->nextfile;
return k;
}


UDD* findfilename(char *foldername UDD *folderpointer)  //返回指向特定文件名的指针
{
UDD *k;
k = folderpointer;
while (k&&strcmp(foldername k->foldername))
k = k->link;
return k;
}



void createuser()     //建立用户
{
int i;
char username[10];
printf(“\t---------------------------------------- - \n“);
printf(“\t\t建立用户\n“);
printf(“\t---------------------------------------- - \n“);
if (num >= 10)//用户文件目录已满,创建文件失败
{
printf(“\n用户文件目录的已满\n创建文件失败!\n“);
return;
}
printf(“输入用户名:\n“);
scanf_s(“%s“ &username9);
for (i = 0; i < num; i++)
{
if (strcpy_s(filesystem[num].username username))
{
printf(“用户已经存在,请输入新用户名!\n“);
scanf_s(“%s“ &username9);

}
}
strcpy_s(filesystem[num].username username);//创建用户目录
num++;
printf(“\n文件已创建!\n“);
}


void createfile()  //createfile()创建新的文件
{
char username[10];  //用户名
char filename[10];  //文件名
int i j;
char cx;
UFD *p1 *p2 *newfile;  //用户文件目录指针
pri

评论

共有 条评论