1、 /文件长度 char fpw20; /文件保护码 struct UserFile *link;/全局变量 int shoudsave; /存储标记 int usingnum; /当前用户标记 struct MasterFile MFD20; /主目录 struct UserFile UFD2020; /用户目录 /寻找主目录空闲区 struct MasterFile*MoveMFDToLast() for(int i=0;i20;i+) if(MFDi.flag=0) usingnum=i; return &MFDi; return NULL; /查找用户 struct MasterFile
2、*SearchMFD(char str) if(strcmp(str,MFDi.username)=0) return & /寻找用户目录空闲区 struct UserFile *MoveUFDToLast() if(UFDusingnumi.flag=0) UFDusingnumi;/查找用户文件 struct UserFile *SearchUFD(int num) if(UFDusingnumi.fnum=num) /删除用户文件目录 void LeftMoveUFD(int num) if(UFDusingnumi.fnum=num) for(int j=i;jusername,str
3、1);password,str2); p-flag=1;%d,MFDusingnum.flag);next=NULL; shoudsave=1; else /旧用户登录 while(1) /输入用户名 str3); p=SearchMFD(str3); if(p=NULL) printf(对不起,你输入的用户名不存在!继续(y)还是放弃(n)? scanf(flag3); if(flag3=y) continue; else printf( exit(1); else while(1) /输入口令 scanf(str4); if(strcmp(str4,p-password)!=0) prin
4、tf(对不起,你输入的口令不正确,请重新输入.n continue; else break; break;/菜单 void menu() n*t1列文件目录ttttt2创建文件nt3删除文件ttttt4读文件nt5写文件tttttt0退出系统n*n/列文件目录 void Dir() if(MFDusingnum.next=0) 目前你不存在任何文件! else for(int i=0; if(UFDusingnumi.flag=1) 文件编号t%dt文件名t%st文件长度t%dt保护码t%sn,UFDusingnumi.fnum,UFDusingnumi.fname,UFDusingnumi.
5、flength,UFDusingnumi.fpw);/创建文件 void Create() FILE *fp; int num; struct UserFile *f; char str120,str220;请输入你要创建的文件名: /输入文件信息 请输入文件编号:num);请输入文件保护码: fp=fopen(str1,w /创建文件 f=MoveUFDToLast(); /寻找用户目录空闲区 if(&UFDusingnum0=f) /连接主目录 MFDusingnum.next=(struct MasterFile*)f; f-link=(struct UserFile*)fp; /设置用
6、户目录 MFDusingnum.next=(struct MasterFile*)&UFDusingnum0; strcpy(f-fname,str1);fpw,str2);fnum=num;flength=0; fclose(fp); shoudsave=1; /设置存储标记 文件已创建!/删除文件 void Delete() 请输入你要删除的文件编号: f=SearchUFD(num); /查找用户文件 if(f=NULL) 你要删除的文件不存在! else LeftMoveUFD(num); /删除用户文件目录 文件已删除!/读文件 void Read() char ch;请输入你要读的
7、文件的编号: /查找文件 if(f=NULL) 你输入的文件不存在! if(fp=fopen(f-fname,r)=NULL) /打开指定文件 不能打开该文件! exit(0); ch=fgetc(fp); /输出文件内容 while(ch!=EOF) putchar(ch); ch=fgetc(fp); /关闭文件 文件已读完毕!/写文件 void Write() 请输入你要写的文件的编号:wr请按字符输入内容(以#表示结束符) /写入文件 ch);= fwrite(&ch,1,1,fp);文件写入完毕!/保存 void Save() FILE *fpm,*fpu; int flag=1,c
8、ount=0; fpm=fopen(F:MasterFile.txt,wb /打开主文件 if(fpm=NULL) n提示:重新打开主文件信息文件时发生错误! exit(1);i+) MFDi,sizeof(struct MasterFile),1,fpm); /保存主文件目录信息 fclose(fpm);主文件目录信息保存完毕! fpu=fopen(UserFile.txt /打开用户文件 if(fpu=NULL) 重新打开用户目录信息文件时发生错误! for(int j=0;j+) /保存用户文件目录信息 UFDj,sizeof(struct UserFile),20,fpu); fclo
9、se(fpu);用户文件目录信息保存完毕!/主函数 int main() nntt*ttntttt实验四 文件管理ntt*ttnnnnttttt计算机1206nttttt王成义nttttt1030412612nttttt完成时间:2015/5/28nnnnttttWelcomenn /文件指针 int sel; char jian;tttt文件管理系统nttttnD:rb /打开主文件目录信息文件 if(fpm=NULL) 主文件目录信息文件还不存在,是否创建?(y/n)njian); if(jian=|jian=Y) fpm=fopen( /创建主文件目录的文件 else exit(0);
10、/打开用户文件目录信息文件 用户文件目录信息文件还不存在,是否创建? fpu=fopen( /创建用户文件目录的文件 文件正在打开,请稍等.i+) /读取主文件目录信息 fread(& /将文件的内容放入接点中 / 关闭文件 while(!feof(fpu) /读取用户目录文件信息 if(fread(&UFDi0,sizeof(struct UserFile),20,fpu) /将文件的内容放入接点中 MFDi.next=(struct MasterFile*)&UFDi0;n文件已导入完毕! Login(); /用户登录 while(1) /菜单操作 menu();请你选择操作:sel);
11、if(sel=0) /保存文件信息 if(shoudsave=1) getchar();n资料已经改动,是否将改动保存到文件中(y/n)?%c if(ch=|ch= Save();n你已经退出系统,再见! break; switch(sel) case 1:Dir(); /列文件目录 case 2:Create(); case 3:Delete(); /删除文件 case 4:Read(); /读文件 case 5:Write(); /写文件 default:你输的选项有误,请重新输入! system(PAUSE return 0;5运行情况6实验体会 通过编写和调试此次文件系统,加深了对各种文件操作命令的实质内容和执行过程的了解。对文件系统有了更深的了解。教师评价 优良中及格不及格教师签名日期
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1