📄 模拟文件管理.cpp
字号:
#include "stdlib.h"
#include "stdio.h"
#include "iostream.h"
#include "string.h"
#define NULL 0
int count=0;
struct file{
char name[10];
int code;/* 保护码 */
int size;
char pwrite;/* 读写指针 */
};
struct user{
char name[10];
struct file *list;/* 目录指针 */
};
//////////////////////////////////////////////////////////////////////
struct file A[10]={{"a1",0,10,0},{"a2",2,10,0},{"a3",1,10,0},
{"a4",2,10,0},{"a5",2,10,0},{"a6",2,10,0},{"a7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file B[10]={{"b1",0,10,0},{"b2",2,10,0},{"b3",1,10,0},
{"b4",2,10,0},{"b5",2,10,0},{"b6",2,10,0},{"b7",2,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file C[10]={{"c1",0,10,0},{"c2",2,10,0},{"c3",1,10,0},
{"c4",2,10,0},{"c5",2,10,0},{"c6",2,10,0},{"c7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file D[10]={{"d1",0,10,0},{"d2",2,10,0},{"d3",1,10,0},
{"d4",2,10,0},{"d5",2,10,0},{"d6",2,10,0},{"d7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file E[10]={{"e1",0,10,0},{"e2",2,10,0},{"e3",1,10,0},
{"e4",2,10,0},{"e5",2,10,0},{"e6",2,10,0},{"e7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file F[10]={{"f1",0,10,0},{"f2",2,10,0},{"f3",1,10,0},
{"f4",2,10,0},{"f5",2,10,0},{"f6",2,10,0},{"f7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file G[10]={{"g1",0,10,0},{"g2",2,10,0},{"g3",1,10,0},
{"g4",2,10,0},{"g5",2,10,0},{"g6",2,10,0},{"g7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file H[10]={{"h1",0,10,0},{"h2",2,10,0},{"h3",1,10,0},
{"h4",2,10,0},{"h5",2,10,0},{"h6",2,10,0},{"h7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file I[10]={{"j1",0,10,0},{"j2",2,10,0},{"j3",1,10,0},
{"j4",2,10,0},{"j5",2,10,0},{"j6",2,10,0},{"j7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file J[10]={{"k1",0,10,0},{"k2",2,10,0},{"k3",1,10,0},
{"k4",2,10,0},{"k5",2,10,0},{"k6",2,10,0},{"k7",1,10,0},{"0",0,0,0},
{"0",0,0,0},{"0",0,0,0}};
struct file UFD[10];
struct file AFD[5]={{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0}};
////////////////////////////////////////////////////////////////////////
struct user use[10]={{"number1",A},{"number2",B},{"number3",C},{"number4",D},
{"number5",E},{"number6",F},{"number7",G},{"number8",H},{"number9",I},
{"number10",J}};
struct user MFD[1]={{"0",0}};
void running();
void delet();
void write();;
void open();
void close();
void save();
void read();
void create();
void input();
void main()
{
cout<<" ******************************************************************"<<endl;
cout<<" "<<endl;
cout<<" 模拟文件管理 "<<endl;
cout<<" "<<endl;
cout<<" ******************************************************************"<<endl;
input();
running();
cout<<"操作己结束"<<endl;
}
void running()
{ char order;
int i;
cout<<endl<<"******************************************************************************"<<endl;
cout<<"用户的所有文件如下:"<<endl;
for(i=0;i<10;i++)
{
cout<<UFD[i].name<<"\t";
}
cout<<endl<<"**************************************************************************"<<endl;
cout<<" 请选择操作命令(输入代号):"<<endl;
cout<<"c-create d-delete o-open s-close r-read w-write k-save t.exit(重选用户)"<<endl;
cout<<endl<<"***************************************************************************"<<endl;
cout<<"请输入命令:"<<endl;
cin>>order;
switch(order)
{ case 'c' : create();break;
case 'd' : delet();break;
case 'o' : open();break;
case 's' : close();break;
case 'r' : read();break;
case 'w' : write();break;
case 'k' : save();break;
case 't' : input();break;
default : cout<<"输入命令出错,请重输"<<endl<<endl;running();
}
}
void delet()
{ char name[10];
int i,flag;
do
{ cout<<"请输入文件名: "<<endl<<endl;
cin>>name;
flag=0;
for(i=0;i<10;i++)
{ if(strcmp(UFD[i].name,name))/* 如果没有这个文件 */
{
flag=1;
/* break; */
}
else
{ flag=0;
strcpy(UFD[i].name,"0");/* 清空文件 */
UFD[i].code=0;
UFD[i].pwrite=0;
UFD[i].size=0;
cout<<"该文件己被删除"<<endl;
break;
}
}
if(flag==1)
cout<<"无此文件,请重新输入"<<endl;
}while(flag==1);
cout<<endl;
running();
}
void open()
{ char name[10];
int i,j,flag;
if(count==5)
{ cout<<"运行文件队列己满"<<endl;
running();
}
else
{ do
{ cout<<"请输入文件名: "<<endl;
cin>>name;
flag=0;
for(i=0;i<10;i++)
{ if(strcmp(UFD[i].name,name))/* 如果没有这个文件 */
{
flag=1;
/* break; */
}
else
{ flag=0;
break;
}
}
if(flag==1)
cout<<"无此文件,请重新输入"<<endl;
}while(flag==1);
for(j=0;j<5;j++)
{ if(strcmp(AFD[j].name,name))/* 如果没有这个文件 */
flag=1;
else
{ flag=0;
break;
}
}
if(flag==1)
for(j=0;j<5;j++)
{ if(!strcmp(AFD[j].name,"0"))
{ AFD[j]=UFD[i];
cout<<"文件己打开"<<endl;
count++;
break;
}
}
else cout<<"该文件己经在打开队列中"<<endl;
cout<<endl;
running();
}
}
void close()
{ char name[10];
int j,flag;
cout<<"请输入文件名: "<<endl;
cin>>name;
flag=0;
for(j=0;j<5;j++)
{ if(strcmp(AFD[j].name,name))/* 如果没有这个文件 */
{
flag=1;
/* break; */
}
else
{ flag=0;
strcpy(AFD[j].name,"0");/* 清空文件 */
AFD[j].code=0;
AFD[j].pwrite=0;
AFD[j].size=0;
cout<<"运行队列中的该文件己被关闭"<<endl;
break;
}
}
if(flag==1)
cout<<"运行队列中无此打开的文件,请重新操作"<<endl;
cout<<endl;
running();
}
void save()
{ int i,j;
for(i=0;i<5;i++)
{ for(j=0;j<10;j++)
{ if(!strcmp(AFD[i].name,UFD[j].name))
{ UFD[i]=AFD[i];
break;
}
}
}
cout<<"文件目录己保存"<<endl;
cout<<endl;
}
void read()
{ char name[10];
int j,flag=0;
cout<<"请输入文件名: "<<endl;
cin>>name;
for(j=0;j<5;j++)
{
if(!strcmp(AFD[j].name,name))/* 如果AFD有这个文件 */
{ flag=1; break;
}
}
if(flag==1)
if(AFD[j].code==0||AFD[j].code==2)
{ AFD[j].pwrite='R';
cout<<"文件的状态:读"<<endl;
}
else cout<<"无权限读此文件"<<endl;
else
{ cout<<"运行队列无此文件,请先打开文件"<<endl;
}
cout<<endl;
running();
}
void write()
{ char name[10];
int j,flag=0;
cout<<"请输入文件名: "<<endl;
cin>>name;
for(j=0;j<5;j++)
{
if(!strcmp(AFD[j].name,name))/* 如果AFD有这个文件 */
{ flag=1; break;
}
}
if(flag==1)
if(AFD[j].code==1||AFD[j].code==2)
{ AFD[j].pwrite='W';
cout<<"文件的状态:写"<<endl;
}
else cout<<"无权限写此文件"<<endl;
else
{ cout<<"运行队列中无此文件,请先打开文件"<<endl;
}
cout<<endl;
running();
}
void create()
{ char name[10];
int i,j=0,flag;
for(i=0;i<10;i++)
{ if(!strcmp(UFD[i].name,"0"))
j++;
}
if(j>9)
{ cout<<"文件夹己满,请先删除"<<endl;/* cout<<j; */
running();
}
else
{
do
{ cout<<"请输入文件名: "<<endl;
cin>>name;
flag=0;
for(i=0;i<10;i++)
{ if(!strcmp(UFD[i].name,name))/* 如果有重名的文件 */
{ cout<<"文件名重复,请重新输入"<<endl;
flag=1; break;
}
}
}while(flag==1);
for(i=0;i<10;i++)
{ if(!strcmp(UFD[i].name,"0"))/* 找到第一个空的文件 */
{ strcpy(UFD[i].name,name);
do
{
cout<<"请输入保护码(选择0-2,0-可读,1-可写,2-可读写):"<<endl;
cin>>UFD[i].code;
if(UFD[i].code!=0&&UFD[i].code!=1&&UFD[i].code!=2)
cout<<"输入错误,重新输入保护码"<<endl;
}while(UFD[i].code!=0&&UFD[i].code!=1&&UFD[i].code!=2);
cout<<"请输入文件长度(选择数字):"<<endl;
cin>>UFD[i].size;
cout<<"己建立文件"<<UFD[i].name<<endl;
break;
}
}
running();
}
}
void input()
{ char name;
int i;
cout<<endl<<"*******************************************************************************"<<endl;
cout<<" 请选择以下用户名(输入数字): "<<endl;
cout<<"1.A 2.B 3.C 4.D 5.E 6.F 7.G 8.H 9.I 0.J "<<endl;
cout<<"*******************************************************************************"<<endl<<endl;
cout<<"请输入用户名:";
cin>>name;
switch(name)
{ case '1': for(i=0;i<10;i++)UFD[i]=A[i];MFD[0]=use[1];running();break;
case '2': for(i=0;i<10;i++)UFD[i]=B[i];MFD[0]=use[1];running();break;
case '3': for(i=0;i<10;i++)UFD[i]=C[i];MFD[0]=use[2];running();break;
case '4': for(i=0;i<10;i++)UFD[i]=D[i];MFD[0]=use[3];running();break;
case '5': for(i=0;i<10;i++)UFD[i]=E[i];MFD[0]=use[4];running();break;
case '6': for(i=0;i<10;i++)UFD[i]=F[i];MFD[0]=use[5];running();break;
case '7': for(i=0;i<10;i++)UFD[i]=G[i];MFD[0]=use[6];running();break;
case '8': for(i=0;i<10;i++)UFD[i]=H[i];MFD[0]=use[7];running();break;
case '9': for(i=0;i<10;i++)UFD[i]=I[i];MFD[0]=use[8];running();break;
case '0': for(i=0;i<10;i++)UFD[i]=J[i];MFD[0]=use[9];running();break;
default : cout<<"输入用户名出错"<<endl;input();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -