文件操作与管理Word格式.docx

上传人:b****7 文档编号:22946860 上传时间:2023-02-06 格式:DOCX 页数:28 大小:248.82KB
下载 相关 举报
文件操作与管理Word格式.docx_第1页
第1页 / 共28页
文件操作与管理Word格式.docx_第2页
第2页 / 共28页
文件操作与管理Word格式.docx_第3页
第3页 / 共28页
文件操作与管理Word格式.docx_第4页
第4页 / 共28页
文件操作与管理Word格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

文件操作与管理Word格式.docx

《文件操作与管理Word格式.docx》由会员分享,可在线阅读,更多相关《文件操作与管理Word格式.docx(28页珍藏版)》请在冰豆网上搜索。

文件操作与管理Word格式.docx

111

允许写允许读允许执行

如对应位为0,则不允许。

(3)程序中使用的主要数据结构如下:

主文件目录和用户文件目录

打开文件目录

(4)程序框图如图所示。

2、任务的设计与实现(分别给出系统总控和本人负责实现的算法流程图与说明)

1.整个程序运行过程如下:

输入用户名—>

在MFD中查找—>

显示UFD文件链表—>

初始化AFD运行文件表

—>

输入操作命令—>

执行操作命令—>

保存文件目录—>

打印文件目录—>

结束

2.voidCreate()创建一个文件

选择CREATE命令后,查看该用户的UFD链表内是否还有空闲结点:

(1)若有则设置该结点的内容,然后打开、修改AFD;

(2)若无则报错并退出。

(3)

3.voidRead()读一个文件

读文件的关键是保护码的判断。

选择了READ命令后,输入需要读的文件名,在UFD中搜索是否有该文件名:

(1)若有,但该文件没被打开,则报错;

(2)若有,且已被打开,此处要分两种情况:

●如果保护码的读位为“0”,则不能对该文件进行读操作。

●否则,就通过文件号来读文件,即通过AFD中的point指针来查找该文件。

(3)

4.VoidNowshow()显示当前用户目录

程序运行结果

3操作过程和结果分析

用户验证

创建文件

写文件

读文件

显示当前用户目录

关闭与删除

更改用户

四、《操作系统》课程设计小结(收获、不足与建议)

这次实验是写一个控制用户和用户目录下的文件的管理的程序,要求虽然很简单,但实际上要写出来其实需要很多知识,对于一个刚入门的人来说还是很有难度的,虽然项目是小组完成,但实际上还是很有难度,每个人对项目的理解不同,所以要整合程序也是一个难题,每个人只负责一小块内容,但是为了默契配合,必须在小组中进行大量的交流,但是难度也意味着收获,本次项目的过程让我对C类语言进一步理解,也让我自己了解到自己还需要学习很多很多,对于这次的项目,我们小组做的程序很好的满足了要求,但是容错能力比较差,输入的参数需要正确,保存的内容也极其有限,在我看来,我们小组还是很出色的,毕竟在那么短时间内基本完成了项目要求。

5、附录(主要源程序和运行结果的清单)

#include<

iostream>

stdio.h>

#include<

memory.h>

string>

cstring>

iomanip>

usingnamespacestd;

stringa[10]={"

a"

"

b"

c"

d"

e"

f"

g"

h"

i"

j"

};

stringcommand[9]={"

CREATE"

DELETE"

OPEN"

CLOSE"

READ"

WRITE"

CHANGE"

NOWSHOW"

BYE"

structUFD

{

stringfilename;

intpro[3];

intcodel;

UFD*next;

structMFD

stringusername;

UFD*file;

MFD*next;

structAFD

intfilenum;

charfilepro[3];

UFD*point;

AFD*next;

AFD*openfile=NULL;

MFD*user=NULL;

MFD*thisuser;

//当前用户

voidinit()//初始化函数

intx=0;

for(inti=0;

i<

10;

i++)

{

MFD*p;

p=newMFD;

p->

username=a[x];

UFD*fhead=NULL;

for(intj=0;

j<

j++)

{

UFD*q;

q=newUFD;

q->

filename="

******"

;

for(inta=0;

a<

3;

a++)

{q->

pro[a]=0;

}

codel=0;

q->

next=fhead;

fhead=q;

p->

file=fhead;

if(j==9)//变成循环链表

{

UFD*r=fhead;

while(r->

next!

=NULL)

{r=r->

next;

r->

}

}

p->

next=user;

user=p;

x++;

}

//AFD的初始化

for(intk=0;

k<

5;

k++)

AFD*f;

f=newAFD;

f->

filenum=5-k;

{f->

filepro[j]=0;

point=NULL;

next=openfile;

openfile=f;

if(i==4)//打开文件链表设为循环链表

AFD*p=openfile;

while(p->

{p=p->

intcheckUser(stringusername)

MFD*p;

for(p=user;

p!

=NULL;

p=p->

next)

if(p->

username==username){break;

if(p!

{thisuser=p;

return1;

else{return0;

voidshow()

cout<

<

"

YOURFILEDIRECTORY"

endl;

setw(20)<

setiosflags(ios:

:

left)<

setfill('

'

)<

FILENAME"

PROTECTION"

CODELENGTH"

MFD*p=thisuser;

UFD*q=p->

file;

cout<

q->

filename;

pro[0]<

pro[1]<

pro[2];

"

codel<

q=q->

voidOpenMode(UFD*p,stringname)

AFD*f=openfile;

inti;

for(i=0;

if(f->

point!

=NULL&

&

f->

point->

filename==name){cout<

THISFILEISALREADYOPENED!

return;

f=f->

f=openfile;

point==NULL)break;

if(i==5){cout<

ERROR!

YOUCAN'

TOPENTHISFILE,NUMBERMUST<

=5!

else

ENTERTHEOPENMODE?

stringprotect;

cin>

>

protect;

intj;

for(j=0;

if(p->

pro[j]!

=protect[j]-48)break;

if(j!

=3){cout<

ERROR,OPENMODEISWRONG!

else

cout<

THISFILEISOPENED,ITSOPENNUMBERIS"

filenum<

f->

point=p;

for(intj=0;

{f->

filepro[j]=p->

pro[j];

}

voidCreate()

THENEWFILESNAME(LESSTHAN9CHARS)?

stringname;

cin>

name;

THENEWFILE'

SPROTECTIONCODE?

stringprotect;

UFD*p=thisuser->

UFD*q=p;

intn;

for(n=0;

n<

n++)

if(q->

filename=="

)break;

if(n==10)

{cout<

CREATFAILED!

!

THEREISNOSPACE,FILENUMBERMUST<

=10!

filename=name;

for(inti=0;

pro[i]=protect[i]-48;

THENEWFILEISCREATED."

OpenMode(q,name);

return;

voidOpen()

FILENAMETOBEOPENED?

filename==name)break;

if(n==10){cout<

THISFILEISNOTEXISTS!

OpenMode(q,name);

voidClose1(AFD*f)

f->

{f->

filepro[i]=0;

SUCCESS!

THISFILEISCLOSED!

return;

voidClose()

CLOSETHEFILE'

SNAME:

CAN'

TFINDTHISFILE!

AFD*f=openfile;

if(f->

point==q)break;

f=f->

if(n==5){cout<

THISFILEISNOTOPENED!

}\

Close1(f);

voidDelete()

DELETEFILENAME?

inti;

point==q)

cout<

THISFILEISOPENED!

CLOSEDIT?

(Y/N)"

chary;

cin>

y;

if(y=='

Y'

){Close1(f);

break;

elsereturn;

for(intx=0;

x<

x++)

{q->

pro[x]=0;

THISFILEISBEDELETED!

voidRead()

OPENFILENUMBER?

intnum;

num;

filenum==num&

=NULL)break;

filepro[0]==1){cout<

READING!

else{cout<

THISFILECAN'

TREADWITHREADINGRIGHTLIMITED!

voidWrite()

filepro[1]==1)

HOWMANYCHARACTERSTOBEWRITTENINTOTHATFILE?

intcode;

cin>

code;

codel=code;

TWRITEWITHWRITINGRIGHTLIMITED!

voidChange()

while(x==0)

YOURNAME?

stringusername;

username;

x=checkUser(username);

if(x==0)cout<

YOURNAMEISNOTINTHEUSERNAMETABLE,TRYAGAIN."

}show();

voidNowshow(intb)

{inta=1;

intc;

c=a-b;

if(c!

=0)

show();

voidFileWork(intcom)

if(com==1){Create();

}//执行create

if(com==2){Delete();

}//执行delete

if(com==3){Open();

}//执行open

if(com==4){Close();

}//执行close

if(com==5){Read();

}//执行read

if(com==6){Write();

}//执行write

if(com==7){Change();

}//执行Change

if(com==8){inth=3;

Nowshow(h);

}//执行Nowshow

//执行bye

intmain()

RUN"

init();

//初始化

intx=1;

Nowshow(x);

Change();

intcom=0;

while(com!

=9)

COMMANDNAME?

strings;

s;

for(i=0;

9;

if(s==command[i]){com=i+1;

if(i==9)

COMMANDNAMEGIVENISWRONG!

ITSHOULDBEONEOFFOLLOWING:

CREATE,DELETE,OPEN,CLOSE,READ,WRITE,CHANGE,NOWSHOW,BYE.TRYAGAIN"

continue;

else{FileWork(com);

return0;

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

当前位置:首页 > 成人教育 > 电大

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

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