資源簡介
操作系統 課程設計 C++ 模擬文件系統 源代碼,寫實驗報告必備良品,代碼無錯,直接運行VC
代碼片段和文件信息
#include?“stdafx.h“
#include?“stdafx.h“
#include?“stdio.h“?
#include?“string.h“?
#include?“iostream.h“?
#include?“math.h“?
#include?“stdlib.h“?
#include?“iomanip.h“?
//?******************目錄和文件的結構定義******?
typedef?struct?node{?
char?name[50];?/*目錄或文件的名字*/?
int?type;?/*0代表目錄,1代表普通文件*/?
struct?node?*next;?/*指向下一個兄弟結點的指針*/?
struct?node?*sub;?/*指向第一個子結點的指針*/?
struct?node?*father;?/*指向父結點的指針*/?
int?size;?/*如果是文件則表示文件的大小*/?
}dirNode;?
dirNode?*workDir;?//定義當前工作目錄?
dirNode?root;?//定義根目錄?
char?path[100];?//定義路徑信息?
//初始化函數?
void?initial()?
{?
strcpy(root.name“root“);?
root.type=0;?
root.next=NULL;?
root.sub=NULL;?
root.father=NULL;?
root.size=0;?
workDir=&root;?
strcpy(path“root“);?
}?
//初始化新結點函數?
dirNode?*init()?
{?
dirNode?*p;?
p=new?dirNode;?
strcpy(root.name““);?
root.type=0;?
root.next=NULL;?
root.sub=NULL;?
root.father=NULL;?
root.size=0;?
return?p;?
}?
//改變目錄?
void?CD(char?dirName[])?
{?
dirNode?*p;?
int?flag=0;?
p=workDir->sub;?
if(p==NULL)
{?
cout<<“錯誤\““< }?
else
{?
while(p)
{?
if(p->type==0)
{?
if(!strcmp(p->namedirName))
{?
flag=1;?
break;?
}?
}?
p=p->next;?
}?
if(flag==1)
{?
workDir=p;?
strcat(path“\\?“);?
strcat(pathp->name);?
cout<<“工作目錄已進入\““< }?
else
{?
cout<<“錯誤\““< }?
}?
}?
//創建文件?
void?CREATE(char?fileName[]int?fileSize)?
{?
int?flag;?
dirNode?*p*q;?
q=new?dirNode;?
strcpy(q->namefileName);?
q->sub=NULL;?
q->type=1;?
q->next=NULL;?
q->father=workDir;?
q->size=fileSize;?
p=workDir->sub;?
if(p==NULL)
{?
workDir->sub=q;?
cout<<“\““< }?
else
{?
flag=0;?
while(p)
{?
if(p->type==1)
{?
if(!strcmp(p->namefileName))
{?
flag=1;?
cout<<“錯誤\““< }?
}?
p=p->next;?
}?
if(flag==0)
{?
p=workDir->sub;?
while(p->next)
{?
p=p->next;?
}?
p->next=q;?
cout<<“\““< }?
}?
}?
//刪除文件?
void?DEL(char?fileName[])?
{?
dirNode?*p*q;?
int?flag=0;?
p=workDir->sub;?
if(p==NULL)
{?
cout<<“錯誤\““< }?
else
{?
while(p)
{?
if(p->type==1)
{?
if(!strcmp(p->namefileName))
{?
flag=1;?
break;?
}?
}?
p=p->next;?
}?
if(flag==1)
{?
if(p==workDir->sub)
{?
workDir->sub=p->next;?
}?
else
{?
q=workDir->sub;?
while(q->next!=p)
{?
q=q->next;?
}?
q->next=p->next;?
delete?p;?
}?
cout<<“\““< }?
else
{?
cout<<“錯誤\““< }?
}?
}?
//顯示所有目錄?
//顯示本目錄下所有兄弟目錄和文件?
void?dir(dirNode?*p)?
{?
while(p)
{?
if(p->type==0)
{?
cout.setf(2);?
cout<name<“< }?
else
{?
cout.setf(2);?
cout<name<
評論
共有 條評論