二级文件管理技术交底大全报告

上传人:mg****2 文档编号:126691169 上传时间:2020-03-27 格式:DOC 页数:19 大小:118.50KB
返回 下载 相关 举报
二级文件管理技术交底大全报告_第1页
第1页 / 共19页
二级文件管理技术交底大全报告_第2页
第2页 / 共19页
二级文件管理技术交底大全报告_第3页
第3页 / 共19页
二级文件管理技术交底大全报告_第4页
第4页 / 共19页
二级文件管理技术交底大全报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《二级文件管理技术交底大全报告》由会员分享,可在线阅读,更多相关《二级文件管理技术交底大全报告(19页珍藏版)》请在金锄头文库上搜索。

1、操作系统二级文件管理课程设计课程设计名称: 二级文件管理系统 专 业班 级 : 学 生姓 名 : 学 号 指 导 老 师 : 一、 设计目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。二、设计内容为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login用户登陆 dir 列文件目录 create创建文件 delete删除文件 open 打开文件 close关闭文件 read 读文件 write写文件rename 重命名 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。

2、三、程序设计1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。2、文件物理结构可采用显式链接或其他方法。3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。5、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、重命名、退出。四、源代码1、FileSystem.h#defin

3、e DIR_LENGTH 1024 /路径最长可达100字节#define MAX_WRITE 1024*128 /写入文字可达128k字节#define MEM_D_SIZE 1024*1024 /1M磁盘空间#define DISKSIZE 1024 /磁盘块的大小 1K#define MSD 5 /最大子目录数 5#define DISK_NUM MEM_D_SIZE/DISKSIZE /磁盘块数目 1024=1M/1K#define FATSIZE DISK_NUM*sizeof(struct FatItem) /FAT表大小1024*8=8K#define MOFN 5 /最大文件打

4、开数 5 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 /根目录起始盘块号 9#define ROOT_DISK_SIZE sizeof(struct Direct) /根目录大小 196#define LOGIN 15#define NAME_LONG 1#define NOT_EXSIT -1#define NOT_OPEN -1#define DIR_FULL -2#define OPEN_FULL -3#define ALREADY -4 #define NOT_R_W -4#define DISK_FULL -5#define NOT_EXIT -1

5、struct FatItem / size 8 int item; /存放文件下一个磁盘的指针char em_disk; /磁盘块是否空闲标志位, 0 空闲;struct Directstruct FCBchar name8; /文件/目录名 8位char property; /属性 1位目录 0位普通文件int size; /文件/目录字节数、盘块数)int firstDisk; /文件/目录 起始盘块号int next; /子目录起始盘块号int sign; /1是根目录 0不是根目录directItemMSD+2; /最大子目录 5;struct OpenTable struct Ope

6、nTableItemchar name9; /文件名int firstdisk; /起始盘块号int size; /文件的大小char open_flag; /文件打开标志:1:打开。0:未打开openitemMOFN; /最大文件打开数 5int cur_size; /当前打文件的数目;struct FatItem *fat; /FAT表struct Direct *root; /根目录struct Direct *cur_dir; /当前目录struct OpenTable user_openTable; /文件打开表int fd=-1; /文件打开表的序号char *bufferdir;

7、 /记录当前路径的名称char *fdisk; /虚拟磁盘起始地址int cur_user;int find_N = 0;void init();void format();void enter();void assign();int create(char *name);int open(char *name);int close(char *name);int rename();int write(int fd,char *buf,int len,char *name);int read(int fd,char *buf,char *name);int del(char *name);vo

8、id dir();int login();void helpMenu();void currentPath();2、FileSystem.cpp#include#include#includeconio.h#include FileSystem.h#includeint statue=0;char user20=li;char password20=123;int main() FILE *fp;char ch;char cmd13;char name10;int i,flag;char *contect;helpMenu();while(flag=login()!=LOGIN) printf

9、(密码不正确!n);printf(请输入正确的用户名和密码!n);contect = (char *)malloc(MAX_WRITE*sizeof(char); if(fp=fopen(disk.bat,rb)=NULL) /创建一个文件printf( Will you initialize the disk? (y or n);scanf(%s,&ch);if(ch=y) init();printf( Initialize Succeed! n);elsereturn 0;enter(); /分析命令while(1) printf(%s/,bufferdir); scanf(%s,cmd)

10、;if(strcmp(cmd,help) = 0 | strcmp(cmd,?) = 0) helpMenu();elseif(strcmp(cmd,model) = 0) printf(需要修改密码么(y/n);scanf(%s,&ch);if (ch=y)printf(请输入密码b);scanf(%s,&password);printf(修改成功);elseprintf(退出修改密码n);elseif(strcmp(cmd,login) = 0) while (login()!=LOGIN)printf(请输入正确的用户名或密码n); elseif(strcmp(cmd,quit) = 0) free(contect);exit(1);return 0;else if(strcmp(cmd,create) = 0) scanf(%s,name);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号