资源简介
模拟一个简单二级文件管理系统
设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
设计内容:模拟一个简单二级文件管理系统
代码片段和文件信息
#include
#include
#include
#include
#include
#define MaxUser 100 //定义最大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; //判断是否有进程打开了该文件
//fileTable *next;
};
//两级目录结构体
typedef struct user_file_directory //用户文件目录文件UFD
{
//char fileName[10];
fileTable *file;
user_file_directory *next;
}UFD;
//UFD *headFile;
typedef struct master_file_directory //主文件目录MFD
{
char userName[10];
char password[10];
UFD *user;
}MFD;
MFD userTable[MaxUser];
int used=0; //定义MFD目录中用已有的用户数
//文件管理
void fileCreate(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 fileDel(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时表示没有用户登录
int main()
{
char order[commandAmount][10];
strcpy(order[0]“create“);
strcpy(order[1]“rm“);
strcpy(order[2]“cat“);
strcpy(order[3]“write“);
strcpy(order[4]“fine“);
strcpy(order[5]“chmod“);
strcpy(order[6]“ren“);
strcpy(order[7]“dir“);
strcpy(order[8]“close“);
strcpy(order[9]“return“);
strcpy(order[10]“exit“);
strcpy(order[11]“df“);
char command[50]command_str1[10]command_str2[10]command_str3[5]command_str4[3];
int ikj;
int length;
initDisk(); //初始化磁盘
for(i=0;i {
userTable[i].user=(UFD *)malloc(sizeof(UFD));
userTable[i].user->next=NULL;
}
while(1)
{
printf(“********************************************\n“);
printf(“ 1、Creat user\n“);
printf(“ 2、login\n“);
printf(“********************************************\n“);
printf(“Please chooce the function key:>“);
int choice;
scanf(“%d“&choice);
if(choice==1) userCreate();
else if(choice==2) u
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16129 2010-04-21 16:15 二级文件管理系统\c.cpp
文件 4235 2010-04-17 20:24 二级文件管理系统\cc.dsp
文件 510 2010-04-17 18:46 二级文件管理系统\cc.dsw
文件 58368 2010-04-21 16:15 二级文件管理系统\cc.ncb
文件 48640 2010-04-21 16:15 二级文件管理系统\cc.opt
文件 619 2010-04-21 16:15 二级文件管理系统\cc.plg
文件 41757 2010-04-21 16:15 二级文件管理系统\Debug\c.obj
文件 237620 2010-04-21 16:15 二级文件管理系统\Debug\cc.exe
文件 301836 2010-04-21 16:15 二级文件管理系统\Debug\cc.ilk
文件 238940 2010-04-19 21:50 二级文件管理系统\Debug\cc.pch
文件 582656 2010-04-21 16:15 二级文件管理系统\Debug\cc.pdb
文件 41984 2010-04-21 16:15 二级文件管理系统\Debug\vc60.idb
文件 53248 2010-04-21 16:15 二级文件管理系统\Debug\vc60.pdb
目录 0 2010-04-21 16:15 二级文件管理系统\Debug
目录 0 2010-04-21 16:15 二级文件管理系统
----------- --------- ---------- ----- ----
1626542 15
- 上一篇:《C程序设计语言》第二版 中文高清非扫描pdf
- 下一篇:航空无线电导航
评论
共有 条评论