操作系统实验三--文件管理Word格式.doc

上传人:b****1 文档编号:13084577 上传时间:2022-10-04 格式:DOC 页数:35 大小:363.50KB
下载 相关 举报
操作系统实验三--文件管理Word格式.doc_第1页
第1页 / 共35页
操作系统实验三--文件管理Word格式.doc_第2页
第2页 / 共35页
操作系统实验三--文件管理Word格式.doc_第3页
第3页 / 共35页
操作系统实验三--文件管理Word格式.doc_第4页
第4页 / 共35页
操作系统实验三--文件管理Word格式.doc_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

操作系统实验三--文件管理Word格式.doc

《操作系统实验三--文件管理Word格式.doc》由会员分享,可在线阅读,更多相关《操作系统实验三--文件管理Word格式.doc(35页珍藏版)》请在冰豆网上搜索。

操作系统实验三--文件管理Word格式.doc

(2)删除文件

当已不再需要某文件时,可将它从文件系统中删除。

在删除时,系统应该先从目录中找到要删除的文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

(3)读文件

在读一个文件时,须在相应的系统调用中给出文件名和应该读入的内存目标地址。

此时,系统同样要查找目录,找到制定的目录项,从中得到被读文件在外存中的位置。

在目录项中,还有一个指针用于对文件的读/写。

(4)写文件

在写一个文件时,须在相应的系统调用中给出该文件名及该文件在内存中的(源)地址。

为此,也同样须先查找目录,找到指定文件的目录项,在利用目录中的写指针进行写操作。

(5)截断文件

如果一个文件的内容已经陈旧而需要全部更新文件的内容时,一种方法是将此文件删除,再重新创建一个新文件。

但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或说放弃原有的文件内容。

(6)设置文件的读/写位置

前述的文件读/写操作,都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。

设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。

也正因如此,才能改顺序存取为随机存取。

3.设计实现:

1)流程图

2)详细设计

源代码

#include<

stdio.h>

string.h>

conio.h>

stdlib.h>

time.h>

#defineMaxUser100//定义最多有100个用户

#defineMaxDisk512*1024//定义磁盘空间大小

#definecommandAmount//对文件操作的指令数

//存储空间管理有关结构体和变量

chardisk[MaxDisk];

//模拟512K的磁盘存储空间

typedefstructdistTable//磁盘块结构体

{

intmaxlength;

intstart;

intuseFlag;

distTable*next;

}diskNode;

diskNode*diskHead;

typedefstructfileTable//文件快结构体

charfileName[10];

//文件在磁盘存储空间的起始地址

intlength;

//文件内容长度

//文件的最大长度

charfileKind[3];

//文件的属性--读写方式

structtm*timeinfo;

boolopenFlag;

//判断是否有进程打开了文件

};

intused=0;

//定义MFD目录中用已有的用户数

//两级目录结构体

typedefstructuser_file_directory//用户文件目录文件UFD

fileTable*file;

user_file_directory*next;

}UFD;

typedefstructmaster_file_directory//主目录文件

charuserName[10];

charpassword[10];

UFD*user;

}MFD;

MFDuserTable[MaxUser];

intuserID=-1;

//用户登录的ID号,值为-1时表示没有用户登录

//文件管理

voidfileCreate();

//创建文件

voidfileDelet();

//删除文件

voidfileWrite();

//写文件

voidfileRead();

//读文件

voidfileRename();

//重命名文件

voidfileFind();

//查询文件

voidfileDir();

//显示某一用户所有文件

voidfileClose();

//关闭已打开的文件

voidfileChange();

//修改文件的读写方式

intrequestDist(int&

stratPostion,intmaxlength);

//磁盘分配查询

voidinitDisk();

//初始化磁盘

voidfreeDisk(intstartPostion);

//磁盘空间释放

voiddiskShow();

//显示磁盘使用情况

voidinitFile();

//用户管理

voiduserCreate();

intlogin();

voiduserDelet();

voiduserFind();

//用户登陆主界面

voidwebUser();

//用户内部界面

voidwebFile();

intmain()

initDisk();

initFile();

webUser();

return0;

}

voidwebUser()

inti;

while

(1)

{

printf("

************************************************************\n"

);

1.创建用户2.登陆用户 \n"

3.删除用户4.查看用户 \n"

0.退出系统 \n"

请输入操作号\n"

scanf("

%d"

&

i);

switch(i)

{

case0:

exit(0);

break;

case1:

userCreate();

case2:

userID=login();

if(userID!

=-1)

{

webFile();

}

break;

case3:

userDelet();

case4:

userFind();

default:

printf("

您输入的命令有误,请重新选择\n"

system("

pause"

cls"

}

}

voiduserCreate()

charc;

if(used<

MaxUser)

请输入用户名:

"

for(i=0;

c=_getch();

i++)

if(c==13)break;

else

userName[i]=c;

%c"

c);

userName[i]='

\0'

;

i<

used;

if(!

strcmp(userTable[i].userName,userName))

printf("

\n"

该用户名已存在,创建用户失败\n"

system("

return;

strcpy(userTable[used].userName,userName);

请输入密码:

userTable[used].password[i]=c;

*"

userTable[userID].password[i]='

创建用户成功\n"

used++;

system("

else

创建用户失败,用户已达到上限\n"

fflush(stdin);

intlogin()

charname[10],psw[10];

inti,times;

printf("

请输入用户名:

for(i=0;

if(c==13)break;

else

name[i]=c;

name[i]='

i<

used;

if(!

strcmp(userTable[i].userName,name))

if(i==used)

\n您输入的用户名不存在\n"

return-1;

for(times=0;

times<

3;

times++)

memset(psw,'

sizeof(psw));

\n请输入密码:

psw[i]=c;

strcmp(psw,userTable[i].password))

用户登录成功\n"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

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

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