⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟文件管理.cpp

📁 采用二级目录实现的简单模拟文件管理系统。普通文件的目录项包括文件名
💻 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 + -