资源简介

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

资源截图

代码片段和文件信息

/*
title: 文件管理
Author: 王婷(20083560)
Date: 2010/11/01
*/
#include 
#include 
#include 
#include 
using namespace std;

typedef struct UNode
{ // UFD结点
    char FileName[12]; // 文件名
    char ProCode[4]; // 保护码
    int length; // 文件长度
    int Open_RW; // 文件打开关闭读写指针
    struct UNode *next; // 后向指针
    struct UNode *prior; // 前向指针
}* UFD;

typedef struct MNode
{ // MDF结点
    char UserName[12]; // 用户名
    char Password[12]; // 密码
    struct UNode *FileMenu; // 文件目录指针
    struct MNode *next; // 后向指针
}* MDF;

MDF H=(MDF)malloc(sizeof(MNode)); // 全局变量指向MDF头结点(数据项为空)
MDF CurrUser; // 全局变量当前操作用户指针

//---------------------------函数声明------------------------------

void Welcome(); 
void InitSystem(); 
UFD InitUFD(MDF p); 
void DispMDF(); 
void DispMDF(); 
void DispUFD(MDF L);
int LoginCheck(); 
void Create(); 
void Delete(); 
void Open();   
void Close(); 
void Read();  
void Write();
void Bye(); 

//-----------------------------------------------------------------

void InitSystem() // 从文件将默认MDF和UFD组织起来进入内存
{
    //“InitInfo.txt“ 所有初始化信息都已写入该文件这里未使用文件流
    H->FileMenu=NULL;
    H->next=NULL;
    MDF p=H;
    int UserNum; // 初始化时用户个数和文件个数
    cout<<“系统初始化开始请输入用户名个数: “;
    cin>>UserNum;
    for (int i=1; i<=UserNum; i++)
    {
        p=p->next=(MDF)malloc(sizeof(MNode));
        cout<<“\n请输入第 “<        cin>>p->UserName;
        cin>>p->Password; // 初始化MDF结点

        p->FileMenu=InitUFD(p);
        p->next=NULL;
    }
    cout<<“\n初始化完毕按任意键清屏并开始文件管理!\n“;
    system(“pause“);
    char c;
    cin.get(c);
    system(“cls“);
}

UFD InitUFD(MDF p) //首次创建用户的文件
{
    UFD srL=(UFD)malloc(sizeof(UNode)); // 初始化当前用户的所有文件UFD
    L->next=NULL;
    r=L;
    int FileNum;
    cout<<“请输入用户 “<UserName<<“ 将要创建的文件个数: “;
    cin>>FileNum;
    cout<<“请输入用户 “<UserName<<“ 的所有文件名保护码和长度: “;
    for (int j=1; j<=FileNum; j++)
    {
        s=(UFD)malloc(sizeof(UNode));
        cin>>s->FileName; //读取文件名
        cin>>s->ProCode; // 读取保护码
        cin>>s->length; //文件长度
        s->Open_RW=0;
        r->next=s;
        s->prior=r;
        r=s;
    }
    r->next=NULL; // UFD是双向链表,便于删除
    return L->next;
}

void DispMDF() // 显示用户名列表
{
    cout<<“现有用户名列表: “;
    MDF p=H->next;
    while (p)
    {
        cout<<“\t“<UserName;
        p=p->next;
    }
    cout<}

void DispUFD(MDF L) // 显示UFD里的各个文件名
{
    cout<        <<“   “<UserName<        <<“---------\n“;
    UFD p=L->FileMenu;
    if (!p)
    {
        cout<UserName<<“ 用户无文件现在创建文件吗? (y/n)“;
        char c; cin.get(c); // 为无文件用户第一次创建文件
        if (c==‘y‘) L->FileMenu=InitUFD(L);
        else return;
    }
    while (p)
    {
        cout<<“   “<FileName<        p=p->next;
    }
    cout<<“---------\n“;
}

int LoginCheck() // 搜索用户名是否存在
{
    char UserName[12]PassWord[12];
    

评论

共有 条评论