ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:23.60KB ,
资源ID:17722661      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17722661.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(二级文件管理课程设计Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级文件管理课程设计Word文件下载.docx

1、#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 -1struct FatItem / size 8 int item; /存放文件下一个磁盘的指针 char em_

2、disk; /磁盘块是否空闲标志位, 0 空闲;struct Direct struct FCB char name8; /文件/目录名 8位 char property; /属性 1位目录 0位普通文件 int size; /文件/目录字节数、盘块数) int firstDisk; /文件/目录 起始盘块号 int next; /子目录起始盘块号 int sign; /1是根目录 0不是根目录 directItemMSD+2; /最大子目录 5 ;struct OpenTable struct OpenTableItem char name9; /文件名 int firstdisk; /起始

3、盘块号 /文件的大小 char open_flag; /文件打开标志:1:打开。0未打开 openitemMOFN; /最大文件打开数 5 int cur_size; /当前打文件的数目struct FatItem *fat; /FAT表struct Direct *root; /根目录struct Direct *cur_dir; /当前目录struct OpenTable user_openTable; /文件打开表int fd=-1; /文件打开表的序号char *bufferdir; /记录当前路径的名称char *fdisk; /虚拟磁盘起始地址int cur_user;int fi

4、nd_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);void dir();int login();void helpMenu();void currentPat

5、h();2、FileSystem.cpp#includestdlib.h#includeconio.h#include FileSystem.hstring.hint statue=0;char user20=li;char password20=123int main() FILE *fp; char ch;char cmd13; char name10; int i,flag; char *contect; helpMenu(); while(flag=login()!=LOGIN) printf(密码不正确!n); printf(请输入正确的用户名和密码! contect = (char

6、 *)malloc(MAX_WRITE*sizeof(char); if(fp=fopen(disk.bat,rb)=NULL) /创建一个文件 Will you initialize the disk? (y or n) scanf(%s,&ch); if(ch=y) init(); printf( Initialize Succeed! n else return 0; enter(); /分析命令 while(1)%s/,bufferdir);,cmd); if(strcmp(cmd,help) = 0 | strcmp(cmd,?) = 0) helpMenu(); else if(s

7、trcmp(cmd,model printf(需要修改密码么(y/n) scanf( if (ch= printf(请输入密码b scanf(password); printf(修改成功 else printf(退出修改密码n login while (login()!请输入正确的用户名或密码n else if(strcmp(cmd,quit free(contect); exit(1); return 0;create) = 0) scanf(,name); flag = create(name); /关于创建文件共实现四个判断 if(flag=NAME_LONG) /文件名太长Error:

8、 n 文件的名称太长 ! else if(flag=DIR_FULL) /目录下文件数超 n 该目录下的文件和目录数已满 ! else if(flag=ALREADY) /重名 n 该目录下已存在该文件 ! else if(flag=DISK_FULL) /磁盘空间满 n 磁盘空间已满! 成功创建文件!open) =0) statue=1; fd = open(name); if(fd = NOT_EXSIT) n 所要打开的文件不存在!打开成功!write statue=2; if(fd = NOT_OPEN) n 该文件没有打开,请打开后再写入 n 请输入文件的内容: ,contect);

9、 /connect为一个长度为128字节的变量值 flag=write(fd,contect,strlen(contect),name); if(flag = 0) /每个盘块可写入最多128字节 printf(已成功写入! elsen 硬盘空间不足,无法写入!read statue=3;n 不存在该文件,不能读! else if (fd = NOT_OPEN) 该文件已经打开! flag = read(fd,contect,name); if(flag = 0) for(i=0;i=MOFN)n 该文件没有打开,无需关闭! /清空该文件的用户打开表项 strcpy(user_openTabl

10、e.openitemi.name, user_openTable.openitemi.firstdisk = -1; user_openTable.openitemi.size = 0; user_openTable.openitemi.open_flag = user_openTable.cur_size-;close success! continue; else if (strcmp(cmd,rename if (statue=1)打开文件不能重命名 else%d,statue); flag=rename(); if (flag=NOT_EXIT)文件不存在n else n 指令错误!i

11、nt login() char inuser20; char inpassword20; int j=0; printf(请输入用户名n scanf(,inuser); while(strcmp(inuser,user)!=0)该用户不存在!*n请输入正确的用户名:请输入密码n while(ch=getch()!=13) /将输入的密码转换成字符* putchar(* inpasswordj=ch; j+; inpasswordj=0 /字符数组的最后一位为,故要加该语句 /printf(您输入的密码是:,inpassword); getchar(); if (strcmp(inuser,us

12、er)=0)&(strcmp(inpassword,password)=0) bufferdir=wang return LOGIN; else return 0;void init() fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char); /分配空间void format() int i; FILE *fp; fat = (struct FatItem *)(fdisk+DISKSIZE); /FAT 1M /*-初始化FAT表 fat1-fat7-*/ for(i=1;ROOT_DISK_NO-1;i+) /for(i=1;8; fati.item

13、=i+1; fati.em_disk= for(i=ROOT_DISK_NO;DISK_NUM;i+) /for(8;1024; fati.item = -1; /item为-1即表示还没有使用 fati.em_disk = root = (struct Direct *)(fdisk+DISKSIZE+FATSIZE); /根目录的地址 1k+8k root-directItem0.sign = 1;directItem0.firstDisk = ROOT_DISK_NO ; / = 9; /第9个盘块开始 strcpy(root-directItem0.name,. /定义其文件名为 .d

14、irectItem0.next = root-directItem0.firstDisk; /子目录的起始盘块是根目录所在第一个盘块,即未出 /第一块directItem0.property = /1根目录directItem0.size = ROOT_DISK_SIZE; /即一个根目录项的空间大小 196字节 /*指向上一级目录的目录项-回指指针*/directItem1.sign = 1;directItem1.firstDisk = ROOT_DISK_NO;directItem1.name,.directItem1.next = root-directItem1.property =

15、 directItem1.size = ROOT_DISK_SIZE; for(i=2;MSD+2; /子目录最大只有5个表项 root-directItemi.sign = 0;directItemi.firstDisk = -1; strcpy(root-directItemi.name,directItemi.next = -1;directItemi.property = directItemi.size = 0; if(fp = fopen(wb)=NULL)n Cant Open The File n return; /虚拟到物理 if(fwrite(fdisk,MEM_D_SIZ

16、E,1,fp)!=1) n 文件写入错误! fclose(fp);void enter() /重新回到初始空间-虚拟中操作 /申请 1M空间 /判断disk文件是否存在 if(fp=fopen(n 打开文件出错! if(!fread(fdisk,MEM_D_SIZE,1,fp) /把磁盘文件disk.dat 读入虚拟磁盘空间(内存) /回到新申请的fdisk中n 不能读文件! exit(0); /最多能打开5个文件 for(i=0; strcpy(user_openTable.openitemi.name, user_openTable.openitemi.firstdisk = -1; us

17、er_openTable.openitemi.size = 0; user_openTable.cur_size = 0; cur_dir = root; bufferdir = (char *)malloc(DIR_LENGTH*sizeof(char); strcpy(bufferdir,Root:int create(char *name) int i,j; /文件名超过8字符 if(strlen(name)8) /文件名大于 8位 return(NAME_LONG); /重名check for(j=2;jdirectItemj.name,name) & cur_dir-directItemj.pro

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1