求助!C/C++编写文件管理系统

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:24:04
文件管理系统
1.设计内容:
模拟一个简单的文件管理系统。实现下列功能:
1)建立文件
2)打开文件
3)关闭文件
4)删除文件
5)建立目录
6)显示目录内容
2.设计思路:
以一个真实的文件来模拟一块磁盘。
1)需自行定义的数据结构有:
a.目录结构
typedef struct
{
char name[3]; /*文件或目录名*/
char type[2]; /*文件类型名*/
char attribute; /*属性*/
char address; /*文件或目录的起始盘块号*/
char length; /*文件长度,以盘块为单位*/
}content; /*目录结构*/
b.已打开文件表的读写指针结构
typedef struct
{
int dnum; /*磁盘盘块号*/
int bnum; /*盘块内第几项*/
}pointer; /*已打开文件表中读写指针的结构*/
c.已打开文件表表项结构定义
typedef struct
{
char name[20]; /*文件绝对路径名*/
char attribute;/*文件的属性,用1个字节表示,所以用了char类型*/
int number; /*文件起始盘块号*/
int length; /*文件长度,文件占用的字节数*/
int flag; /*操作类型,用"0"表示以读操作方式开文件,用"1"表示写操作方式打开文件*/
pointer read; /*读文件的位置,文件刚打开时dnum为文件起始盘块号,bnum为"0"*/
pointer write;
/*写文件的位置,文件建立时dnum为文件起始盘块号,bnum为"0",打开时为文件末尾*/
}OFILE; /*已打开文件表项类型定义*/

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//主文件结构体
struct MasterFile{
char username[20]; //用户名
char password[20]; //用户名密码
char flag; //标志
struct MasterFile *next;
};
//用户文件结构体
struct UserFile{
int fnum; //文件编号
char fname[20]; //文件名
int flength; //文件长度
char flag; //标志
char fpw[20]; //文件保护码
struct UserFile *link;
};
//全局变量
int shoudsave; //存储标记
int usingnum; //当前用户标记
struct MasterFile MFD[20]; //主目录
struct UserFile UFD[20][20]; //用户目录

//寻找主目录空闲区
struct MasterFile*MoveMFDToLast(){

for(int i=0;i<20;i++){
if(MFD[i].flag==0)
usingnum=i;
return &MFD[i];
}
return NULL;
}
//查找用户
struct MasterFile*SearchMFD(char str[]){
for(int i=0;i<20;i++){
if(strcmp(str,MFD[