资源简介
这次课设是一个文件系统模拟程序模拟文件管理的工作过程,对于多用户,设计了最多有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
- 上一篇:六子棋游戏即二打一棋C++源程序
- 下一篇:华南农业大学c语言oj答案
评论
共有 条评论