南邮操作系统实验之文件系统实验

您所在的位置:网站首页 文件管理系统为用户提供的功能 南邮操作系统实验之文件系统实验

南邮操作系统实验之文件系统实验

2023-09-15 18:24| 来源: 网络整理| 查看: 265

1、实验概述 实现多用户文件系统,每次用户可保存多个文件,一次运行用户可打开5个文件。实现文件的相关操作,包括创建、删除、打开、关闭以及读写功能。采用二级目录,设置主目录MFD、用户文件目录UFD。设置文件权限保护码:1-可执行,2-只读,3-只写。实现用户登录、退出、退出系统等操作。为简化程序,不对用户信息进行保存,即每次运行,文件系统都相当于初始化一次。 2、结构体设计

(1)用户users

       typedef struct users

      {

           char    name[8];    //用户名

           char    pwd[10];    //密码

      }users;

(2)主文件目录MFD

     struct MFD{ // 主文件目录

         string u_name; // 用户名

         int addr; // 指向子目录指针

     }mfd[10];

(3)用户文件目录UFD

     struct UFD{ // 用户文件目录

         File file[1000];

         string u_name;       // 用户名

         int id;              // 文件的总数

         int cnt;             // 用户文件存在的个数

         int open_cnt;        // 用户打开文件个数,最大为k

         void init() ;        //初始化数据项

         void create() ;      //创建用户文件

         void del(int pos);   //删除用户文件

         void open(int pos);  //打开文件

         void close(int pos); //关闭文件

         void read(int pos);  //读文件

         void write(int pos); //写文件

         int Find(string name);//根据文件名查找文件

     }ufd[10];

(4)文件File

     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();   //写

     };

3、文件系统的流程图

4、代码实现

(1)User.h

      头文件里新加用户信息,用于登录,这种实现方法简单,用户信息固定。

      当然,也可以尝试建立一个文件存储用户信息,登陆时将输入的账号密码与文件已有数据比较,只是考虑到这次实验的重点在于体验多用户系统,故而一切从简。

typedef struct users { char name[8]; char pwd[10]; }users; users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", };

(2)UFD.h等只是上述的结构体,无追加内容

(3)File.h

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(); }; void File::create(){ cout > name >> protect; cout > content; exist = 1; state = 0; } void File::del(){ exist = 0; } bool File::open(){ if(protect == 1) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3