文件管理_实验.doc

上传人:rrsccc 文档编号:8877513 上传时间:2021-01-22 格式:DOC 页数:12 大小:231KB
返回 下载 相关 举报
文件管理_实验.doc_第1页
第1页 / 共12页
文件管理_实验.doc_第2页
第2页 / 共12页
文件管理_实验.doc_第3页
第3页 / 共12页
文件管理_实验.doc_第4页
第4页 / 共12页
文件管理_实验.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《文件管理_实验.doc》由会员分享,可在线阅读,更多相关《文件管理_实验.doc(12页珍藏版)》请在三一文库上搜索。

1、江南大学物联网工程学院实验报告课程名称 操作系统 实验名称 文件系统实验 实验日期 2015/5/28 班级 计算机1206 姓名 王成义 学号 1030412612 仪器编号 实验报告要求 1实验目的 2实验要求 3实验步骤 4程序清单 5运行情况 5实验体会1实验目的用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2实验要求要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、writ

2、e等命令。 3实验步骤主目录操作:流程图:4程序清单编一个通过屏幕选择命令的文件管理系统,每屏要为用户提供足够的选择信息,不需要打入冗长的命令。#include #include #include /主文件结构体 struct MasterFile char username20; /用户名 char password20; /用户名密码 char flag; /标志 struct MasterFile *next; ; /用户文件结构体 struct UserFile int fnum; /文件编号 char fname20; /文件名 int flength; /文件长度 char fla

3、g; /标志 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 MasterF

4、ile*SearchMFD(char str) for(int i=0;i20;i+) if(strcmp(str,MFDi.username)=0) usingnum=i; return &MFDi; return NULL; /寻找用户目录空闲区 struct UserFile *MoveUFDToLast() for(int i=0;i20;i+) if(UFDusingnumi.flag=0) return &UFDusingnumi; return NULL; /查找用户文件 struct UserFile *SearchUFD(int num) for(int i=0;i20;i+

5、) if(UFDusingnumi.fnum=num) return &UFDusingnumi; return NULL; /删除用户文件目录 void LeftMoveUFD(int num) for(int i=0;i20;i+) if(UFDusingnumi.fnum=num) for(int j=i;jusername,str1); strcpy(p-password,str2); p-flag=1; printf(%d,MFDusingnum.flag); p-next=NULL; shoudsave=1; /存储标记 else /旧用户登录 while(1) printf(请输

6、入你的用户名:); /输入用户名 scanf(%s,&str3); p=SearchMFD(str3); if(p=NULL) printf(对不起,你输入的用户名不存在!n); printf(继续(y)还是放弃(n)?); scanf(%s,&flag3); if(flag3=y) continue; else printf(你已退出了系统!n); exit(1); else while(1) printf(请输入口令:); /输入口令 scanf(%s,&str4); if(strcmp(str4,p-password)!=0) printf(对不起,你输入的口令不正确,请重新输入.n);

7、 continue; else break; break; /菜单 void menu() printf(n*); printf(t1列文件目录ttttt2创建文件n); printf(t3删除文件ttttt4读文件n); printf(t5写文件tttttt0退出系统n); printf(*n); /列文件目录 void Dir() if(MFDusingnum.next=0) printf(目前你不存在任何文件!n); else for(int i=0;ilink=(struct UserFile*)fp; /设置用户目录 MFDusingnum.next=(struct MasterFi

8、le*)&UFDusingnum0; strcpy(f-fname,str1); strcpy(f-fpw,str2); f-fnum=num; f-flength=0; f-flag=1; fclose(fp); shoudsave=1; /设置存储标记 printf(文件已创建!n); /删除文件 void Delete() struct UserFile *f; int num; printf(请输入你要删除的文件编号:); scanf(%d,&num); f=SearchUFD(num); /查找用户文件 if(f=NULL) printf(你要删除的文件不存在!n); else Le

9、ftMoveUFD(num); /删除用户文件目录 printf(文件已删除!n); shoudsave=1; /设置存储标记 /读文件 void Read() char ch; struct UserFile *f; FILE *fp; int num; printf(请输入你要读的文件的编号:); scanf(%d,&num); f=SearchUFD(num); /查找文件 if(f=NULL) printf(你输入的文件不存在!n); else if(fp=fopen(f-fname,r)=NULL) /打开指定文件 printf(不能打开该文件!n); exit(0); ch=fge

10、tc(fp); /输出文件内容 while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n); fclose(fp); /关闭文件 printf(文件已读完毕!n); /写文件 void Write() char ch; struct UserFile *f; FILE *fp; int num; printf(请输入你要写的文件的编号:); scanf(%d,&num); f=SearchUFD(num); /查找文件 if(f=NULL) printf(你输入的文件不存在!n); else if(fp=fopen(f-fname,wr)=NULL)

11、 /打开指定文件 printf(不能打开该文件!n); exit(0); printf(请按字符输入内容(以#表示结束符); /写入文件 scanf(%s,&ch); while(ch!=#) fwrite(&ch,1,1,fp); scanf(%s,&ch); fclose(fp); /关闭文件 shoudsave=1; /设置存储标记 printf(文件写入完毕!n); /保存 void Save() FILE *fpm,*fpu; int flag=1,count=0; fpm=fopen(F:MasterFile.txt,wb); /打开主文件 if(fpm=NULL) printf(

12、n提示:重新打开主文件信息文件时发生错误!n); exit(1); for(int i=0;i20;i+) fwrite(&MFDi,sizeof(struct MasterFile),1,fpm); /保存主文件目录信息 fclose(fpm); printf(主文件目录信息保存完毕!n); fpu=fopen(F:UserFile.txt,wb); /打开用户文件 if(fpu=NULL) printf(n提示:重新打开用户目录信息文件时发生错误!n); exit(1); for(int j=0;j20;j+) /保存用户文件目录信息 fwrite(&UFDj,sizeof(struct

13、UserFile),20,fpu); fclose(fpu); printf(用户文件目录信息保存完毕!n); /主函数 int main() printf(nntt*ttn);printf(tttt实验四 文件管理n);printf(tt*ttn);printf(nnnttttt计算机1206n);printf(ttttt王成义n);printf(ttttt1030412612n);printf(ttttt完成时间:2015/5/28nnnn);printf(ttttWelcomenn);FILE *fpm,*fpu; /文件指针 int sel; char ch; char jian; p

14、rintf(tttt文件管理系统nttttn); fpm=fopen(D:MasterFile.txt,rb); /打开主文件目录信息文件 if(fpm=NULL) printf(n提示:主文件目录信息文件还不存在,是否创建?(y/n)n); scanf(%s,&jian); if(jian=y|jian=Y) fpm=fopen(D:MasterFile.txt,wb); /创建主文件目录的文件 else exit(0); fpu=fopen(D:UserFile.txt,rb); /打开用户文件目录信息文件 if(fpu=NULL) printf(n提示:用户文件目录信息文件还不存在,是否

15、创建?(y/n)n); scanf(%s,&jian); if(jian=y|jian=Y) fpu=fopen(D:UserFile.txt,wb); /创建用户文件目录的文件 else exit(0); printf(文件正在打开,请稍等.); for(int i=0;i20;i+) /读取主文件目录信息 fread(&MFDi,sizeof(struct MasterFile),1,fpm); /将文件的内容放入接点中 fclose(fpm); / 关闭文件 while(!feof(fpu) /读取用户目录文件信息 for(int i=0;i20;i+) if(fread(&UFDi0,

16、sizeof(struct UserFile),20,fpu) /将文件的内容放入接点中 MFDi.next=(struct MasterFile*)&UFDi0; fclose(fpu); /关闭文件 printf(n文件已导入完毕!n); Login(); /用户登录while(1) /菜单操作 menu(); printf(请你选择操作:); scanf(%d,&sel); if(sel=0) /保存文件信息 if(shoudsave=1) getchar(); printf(n资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y

17、) Save(); printf(n你已经退出系统,再见!n); break; switch(sel) case 1:Dir(); break; /列文件目录 case 2:Create();break; /创建文件 case 3:Delete();break; /删除文件 case 4:Read(); break; /读文件 case 5:Write(); break; /写文件 default: printf(你输的选项有误,请重新输入!n);break; system(PAUSE);return 0;5运行情况6实验体会 通过编写和调试此次文件系统,加深了对各种文件操作命令的实质内容和执行过程的了解。对文件系统有了更深的了解。教师评价 优良 中及格不及格教师签名日期

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1