• 大小: 120KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签: code  

资源简介

包括实验题目,代码及运行结果
实验8 文件管理(2学时)
一、实验目的
理解文件系统的主要概念及文件系统内部功能和实现过程。
二、实验内容
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。
三、实验要求
1、设计一个有m个用户的文件系统,每个用户最多可保存一个文件。
2、规定用户在一次运行中只能打开K个文件。
3、系统能检查键入命令的正确性,出错时应能显示出错原因。
4、对文件应能设置保护措施,如只能执行、允许读、允许写等。
5、对文件的操作设计提供一套文件操作:
CREATE建立文件;
DELETE删除文件;
OPEN打开文件;
CLOSE关闭文件;
READ读文件;
WRITE写文件。
6、二级目录结构如下图所示。
用户名 用户文件目录地址

主文件目录MFD

文件名 状态(打开/建立) 指针

用户文件目录UFD

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
using namespace std;

struct MFD{ // 主文件目录
    string u_name; // 用户名
    int addr; // 指向子目录指针
}mfd[10];
int mfdcnt; // 用户数
int k; // 每个用户最多打开的文件数
struct File{
    string name; // 文件名
    bool exist; // 0表示文件已经删除,1表示文件存在
    bool state; // 0表示文件处于关闭状态,1表示打开状态
    int protect; // 1表示只执行,2表示只读,3表示只写,4表示可读可写
    string content; // 文件内容

    void create();
    void del();
    bool open();
    bool close();
    void read();
    void write();
};
struct UFD{ // 用户文件目录
    File file[1000];
    string u_name; // 用户名
    int id; // 文件的总数
    int cnt; // 用户文件存在的个数
    int open_cnt; // 用户打开文件个数,最大为k
    void init() { cnt=0; open_cnt=0; id=0;}
    void create() { file[id].create(); cnt++; id++;}
    void del(int pos) { file[pos].del(); cnt--;}
    void open(int pos) {
        if(open_cnt == k) cout<<“您已经打开了“<        else {
            if(file[pos].open() == 1) open_cnt++;
        }
    }
    void close(int pos) { if(file[pos].close() == 1) open_cnt--; }
    void read(int pos) { file[pos].read(); }
    void write(int pos) { file[pos].write(); }
    int Find(string name) {
        int pos = -1;  // 需要操作文件的位置
        for(int i=0; i            if(file[i].exist==1 && file[i].name==name) return pos=i;
        cout << “找不到该文件,请检查文件名\n“;
        return pos;
    }
}ufd[10];


void see(string u_name){
    int addr = -1;
    for(int i=0; i        if(mfd[i].u_name == u_name) addr = mfd[i].addr;
    }
    if(addr == -1) { cout << “没有该用户“ << endl;}
    else{
        UFD user = ufd[addr];
        cout << “********************用户名“ << u_name << “********************\n“;
        cout << “文件个数: “ << user.cnt << “\t文件打开数: “ << user.open_cnt << endl;
        cout << “文件名\t文件状态\t文件权限\t文件内容\n“;
        for(int i=0; i            File f = user.file[i];
            if(f.exist == 0) continue;
            cout << f.name << “\t“;
            if(f.state == 0) cout << “关闭\t\t“;
            else cout << “打开\t\t“;
            if(f.protect == 1) cout << “只执行\t\t“;
            else if(f.protect == 2) cout << “只读\t\t“;
            else if(f.protect == 3) cout << “可写\t\t“;
            cout << f.content << endl;
        }
        cout << “*************************************************\n“;
    }
}

void File::create(){
    cout << “请输入文件名与文件权限(1只执行 2只读 3可写): “; cin >> name >> protect;
    cout << “请输入文件内容: “; cin >> content;
    exist = 1;
    state = 0;
}
void File::del(){
    exist = 0;
}
bool File::open(){
    if(protect == 1) { cout << “打开失败,该文件为只执行文件!“ << endl; return 0;}
    else if(state == 1) { cout << “该文件已处于打开状态“ << endl; return 0;}
    else { state = 1; cout << “打开成功“ << endl; return 1;}
}
bool File::close(){
    if(state == 0) { cout << “该文件已处于关闭状态“ << endl; return 0;}
    else { state = 0; cout << “关闭成功“ << endl; return 1;}
}
void File::read(){
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5170  2018-06-13 20:36  main.cpp
     文件       35840  2018-06-13 15:08  实验题目8.doc
     文件      124818  2018-06-13 20:40  新建 Microsoft Word 文档.docx

评论

共有 条评论