1、rundelete返回命令行。5、 list-显示当前注册目录下的所有文件信息,包括文件名、文件长度、文件操作权限。runlist。6、 chmod-改变某个文件的执行权限,但前提是该文件是该用户目录下的文件。runchmod7、 open-在window界面下打开某个文件。命令格:runopen执行该命令后,文件file1将用在windows界面下的文件形式打开。用户可以在这个方式中对文件进行修改,并将修改后的容保存。8、 read-读文件信息。将文件信息读入并显示在终端。runread9、 write-向某个文件写入新的信息。用户可以选择用覆盖原来容的方式和在文件的末尾插入新信息的方式写入
2、信息。2)_系统采用二级文件目录。设置主目录(MFD)和用户文件目录(UFD),分别以文件的方式保存在磁盘中。在主目录中又注册用户的用户名和另一标志该用户目录下是否有文件的指针标记。用户文件目录用用户名作为文件名保存在磁盘,以便检索时方便对应。在用户文件目录中保存着该目录下所有的文件的文件名称、保护码、文件长度。3) 该系统大量使用高级语言中的文件操作函数,所以能实际看到文件的创建写入、读出、删除等效果。4) 实验流程图1创建文件删除文件打开文件读文件写文件改变权限显示文件保存当前主目录删除用户返回主界面输入命令5)源程序: #include#includestdlib.hstring.h#i
3、nclude conio.hdos.h#define NULL 0#define keynum 10#define getspace(type) (type*)malloc(sizeof(type)char cmd64; /存放用户输入命令char buffer36;/char user32;/存放当前登陆的用户名typedef char ALFA12;ALFA KWORDkeynum;struct UFD/用户文件管理模块 char filename32; /文件名 int safecode; /文件保护码 long length; /文件长度*curfile = NULL;struct M
4、FD/用户登陆信息管理模块 char username32; /用户名 bool filepoint; /用户目录下的文件指针,false表示目录为空*curuser = NULL,*elseuser=NULL;typedef UFD UFD;typedef MFD MFD;void main();void KeyWord()/初始化命令关键字 strcpy(KWORD 1,bye); strcpy(KWORD 2,chmod strcpy(KWORD 3,close strcpy(KWORD 4,create strcpy(KWORD 5,delete strcpy(KWORD 6,list
5、 strcpy(KWORD 7,open strcpy(KWORD 8,read strcpy(KWORD 9,writeint LoginDisplay() /登陆选项操作函数 int SELETE_1 = 0; do coutSELETE_1; while(SELETE_12); system(cls return SELETE_1;bool Login(int SELETE)/用户登陆,注册函数 FILE *fp,*fp1,*fp2; char name12; switch(SELETE) case 1:/用户登陆 if(fp = fopen(LOGIN.exe,rb) = NULL)/
6、打开用户注册目录管理文件 coutn错误:不能打开登陆文件。 getch();system( return false; curuser = getspace(MFD); coutusername,name)=0) break; if(feof(fp) /如果没有找到跟当前登陆用户名相同的管理信息,提示出错该用户不存在。 fclose(fp); return false; else fclose(fp); return true; break; case 2: /新用户注册 if(fp=fopen(ab)=NULL)/如果登陆信息管理文件不存在 fp=fopen(wb+ /创建该信息管理文件
7、char name12; while(1)n *新用户注册*用户名: cin /输入用户注册名 fp1 = fopen( while(!feof(fp1)/查看该用户名是否被别的用户占用 fread(curuser,sizeof(MFD),1,fp1); if(strcmp(curuser-username,name) = 0)/该名称已经被使用 coutusername,name); curuser-filepoint = NULL; fwrite(curuser,sizeof(MFD),1,fp); strcpy(user,curuser-username);/生成用户文件管理模块 str
8、cat(user,.exe /用于管理用户目录下的各个文件 fp2=fopen(user, fclose(fp2); coutusernamefilepoint = false)/当前用户目录下没有任何文件存在n用户 文件夹是空的 else /存在文件,将所有文件信息打印在终端 FILE *fp; char filename12; strcpy(filename,curuser- strcat(filename, if(fp=fopen(filename,)=NULL)/打开用户文件信息管理模块n无法打开用户: 的文件! return; /读入并将用户全部文件信息打印在终端用户:目录下的文件:
9、 UFD *ufd; int i=0; ufd = getspace(UFD); /申请存放用户文件模块的空间 while(1) fread(ufd,sizeof(UFD),1,fp); if(feof(fp)/全部输出完毕,结束 else/打印信息ufd-filenametlengthsafecodeusername,curuser-username)=0) if(BOOL)/更新当前用户信息的操作 fwrite(curuser,sizeof(MFD),1,outfile); else continue;/如果用户想把自己的注册目录从系统中彻底删除 /则执行该操作 else fwrite(m
10、fd,sizeof(MFD),1,outfile);/写入新的模块fclose(outfile); remove(/将旧的该用户的文件管理模块删除 rename(out,/将新的用户的文件管理模块重命名为用户目录下的管理模块 main();bool ClearUserFile()/用户要将自己的注册目录从系统彻底删除/首先将该用户目录下的全部文件删除 FILE *fp; char file50; strcpy(file,curuser- strcat(file, if(fp=fopen(file,)=NULL) /打开用户文件信息管理模块 / fclose(fp);n操作失败。return t
11、rue; /将该用户目录下的文件逐个从磁盘删除 UFD *ufd = getspace(UFD); fread(ufd,sizeof(UFD),1,fp); else remove(ufd-filename);/删除文件void ClearUserMes()/删除用户全部信息 char name50; strcpy(name,curuser- strcat(name, remove(name); /从磁盘中删除用户文件信息管理模块 ByeFile(false);/更新系统的用户登陆信息管理模块void DeleteUser()/删除用户注册目录的操作 char ch;coutch; switc
12、h(ch)/提示用户确认删除 case Y:y if(ClearUserFile()/如果用户的全部文件已经删除了 /则可以将该用户的文件信息管理模块也从磁盘中删除 /以免在没完全删除文件却删了该文件信息管理模块 /使得这些文件无法再进行管理造成磁盘空间的浪费 ClearUserMes();/删除文件信息管理模块n你取消了此操作!void CreatFile()/在当前用户目录下创建文件 curuser-filepoint=true; if(fp=fopen(buffer,r)=NULL)/如果没有跟用户输入文件名相同的文件 if(fp=fopen(buffer,wn创建文件失败! / fcl
13、ose(fp); /用户要创建的文件已经存在n该文件已经存在,创建另一个文件? char ch; switch(ch) case n输入新文件名:buffer; strcat(buffer,.txt / fclose(fp); break; default: strcpy(user,curuser- strcat(user, curfile = getspace(UFD); strcpy(curfile-filename,buffer);/文件名 curfile-length=0; /该文件长度为零safecode=30; /设置该文件的默认权限 /11 00,文件主有读和写权,其他用户没有读
14、写权 if(fp=fopen(user,你可能不是合法用户。 getch(); fwrite(curfile,sizeof(UFD),1,fp);/将该文件信息写入用户文件信息管理模块中n文件 curfile- 创建成功! fclose(fp);void DeleteFile()/删除当前目录下一个文件的操作n确定要删除文件:buffer strcat(in, if(infile=fopen(in,)=NULL)/打开该用户的文件信息管理模块 /fclose(infile); return; UFD *ufd = getspace(UFD); fread(ufd,sizeof(UFD),1,i
15、nfile);/从旧模块读出信息 if(strcmp(ufd-filename,buffer)=0)/要进行更新的信息 continue; fwrite(ufd,sizeof(UFD),1,outfile);/写入新模块 remove(in);/在磁盘移除就模块 rename(out,in); /新模块命名为当前用户文件信息管理模块 remove(buffer);/从磁盘中删除该文件void ListAllFile()/显示当前用户目录下的文件信息 DisplayUFD();void OpenFile()/在window模式下打开该文件 system(buffer);/buffer为文件名,如:file1.txtbool QueryModElse(bool BOOL,bool &flag)/查询其它用户目录下文件的文件/当该文件的权限允许当前用户对其执行有关操作时,返回ture char user50; UFD *ufd = getspace(UFD);/elseuser表示除当前用户外的所有用户注册目录 strcpy(user,elseuser-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1