《文件管理_实验4要点.pdf》由会员分享,可在线阅读,更多相关《文件管理_实验4要点.pdf(12页珍藏版)》请在三一文库上搜索。
1、江南大学物联网工程学院实验报告 课程名称操作系统实验名称文件系统实验实验日期2015/5/28 班级计算机 1206 姓名王成义学号1030412612 仪器编号 实验报告要求1实验目的2实验要求3实验步骤4程序清单5运行情况5实验体会 1实验目的 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容 和执行过程有比较深入的了解。 2实验要求 要求设计一个n 个用户的文件系统,每次用户可保存m 个文件,用户在一次运行中只能打开一个文件,对文 件必须设置保护措施,且至少有Create、delete、open、close、read、write 等命令。
2、3实验步骤 主目录操作: 等待用户命令 输入待创建目录名输入要进入的目录名退出 存在同名目录 报错建立目录 目录存在 是 否 进入目录 是 Create cd exit 否 流程图: 4程序清单 编一个通过屏幕选择命令的文件管理系统,每屏要为用户提供足够的选择信息,不需要打入冗长 的命令。 #include #include #include / 主文件结构体 struct MasterFile char username20; / 用户名 char password20; / 用户名密码 char flag; / 标志 struct MasterFile *next; ; / 用户文件结构体
3、 struct UserFile int fnum; / 文件编号 char fname20; / 文件名 int flength; / 文件长度 char flag; / 标志 char fpw20; / 文件保护码 struct UserFile *link; ; / 全局变量 int shoudsave; / 存储标记 int usingnum; / 当前用户标记 struct MasterFile MFD20; / 主目录 struct UserFile UFD2020; / 用户目录 / 寻找主目录空闲区 struct MasterFile*MoveMFDToLast() for (
4、 int i=0;iusername,str1); strcpy(p-password,str2); p-flag=1; printf(“%d“,MFDusingnum.flag); p-next=NULL; shoudsave=1; / 存储标记 else / 旧用户登录 while (1) printf(“ 请输入你的用户名 :“ ); / 输入用户名 scanf( “%s“, p=SearchMFD(str3); if (p=NULL) printf(“ 对不起 , 你输入的用户名不存在!n“ ); printf(“ 继续 (y) 还是放弃 (n)?“ ); scanf( “%s“, i
5、f (flag3= y) continue ; else printf(“你已退出了系统 !n“); exit(1); else while (1) printf(“请输入口令 :“ ); / 输入口令 scanf( “%s“, if (strcmp(str4,p-password)!=0) printf(“ 对不起 , 你输入的口令不正确 , 请重新输入 .n“ ); continue ; elsebreak ; break ; / 菜单 void menu() printf(“n*“); printf(“t1列文件目录 ttttt2创建文件 n“ ); printf(“t3删除文件 ttt
6、tt4读文件 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 MasterFile*) strcpy(f-fname,str1); strcpy(f-fpw,str2); f-fnum=num; f-flength=0; f-flag=1; fc
7、lose(fp); shoudsave=1; / 设置存储标记 printf(“文件已创建 !n“ ); / 删除文件 void Delete() struct UserFile *f; int num; printf(“请输入你要删除的文件编号:“ ); scanf( “%d“, f=SearchUFD(num); / 查找用户文件 if (f=NULL) printf(“你要删除的文件不存在!n“ ); else LeftMoveUFD(num); / 删除用户文件目录 printf(“文件已删除 !n“ ); shoudsave=1; / 设置存储标记 / 读文件 void Read()
8、 char ch; struct UserFile *f; FILE *fp; int num; printf(“请输入你要读的文件的编号:“ ); scanf( “%d“, f=SearchUFD(num); / 查找文件 if (f=NULL) printf(“你输入的文件不存在!n“ ); else if (fp=fopen(f-fname,“r“ )=NULL) / 打开指定文件 printf(“ 不能打开该文件 !n“ ); exit(0); ch=fgetc(fp); / 输出文件内容 while (ch!=EOF) putchar(ch); ch=fgetc(fp); print
9、f(“n“ ); fclose(fp); / 关闭文件 printf(“文件已读完毕 !n“ ); / 写文件 void Write() char ch; struct UserFile *f; FILE *fp; int num; printf(“请输入你要写的文件的编号:“ ); scanf( “%d“, f=SearchUFD(num); / 查找文件 if (f=NULL) printf(“你输入的文件不存在!n“ ); else if (fp=fopen(f-fname,“wr“ )=NULL) / 打开指定文件 printf(“ 不能打开该文件 !n“ ); exit(0); pr
10、intf(“请按字符输入内容 ( 以# 表示结束符 )“ ); / 写入文件 scanf( “%s“, while (ch!= # ) fwrite( scanf( “%s“, 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(“n 提示 : 重新打开主文件信息文件时发生错误!n“
11、); exit(1); for ( int i=0;i20;i+) fwrite( / 保存主文件目录信息 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( fclose(fpu); printf(“用户文件目录信息保存完毕!n“ ); / 主函数 int main()
12、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; printf(“tttt文件管理系统 nttttn“); fpm=fopen( “D
13、:MasterFile.txt“, “rb“ ); / 打开主文件目录信息文件 if (fpm=NULL) printf(“n 提示 : 主文件目录信息文件还不存在, 是否创建 ?(y/n)n“); scanf( “%s“, 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 提示 : 用户文件目录信息文件还不存在, 是否创建
14、 ?(y/n)n“); scanf( “%s“, if (jian=y |jian=Y ) fpu=fopen( “D:UserFile.txt“, “wb“ ); / 创建用户文件目录的文件 else exit(0); printf(“文件正在打开 , 请稍等 .“); for ( int i=0;i20;i+) / 读取主文件目录信息 fread( / 将文件的内容放入接点中 fclose(fpm); / 关闭文件 while (!feof(fpu) / 读取用户目录文件信息 for (int i=0;i20;i+) if (fread( fclose(fpu); / 关闭文件 print
15、f(“n 文件已导入完毕 !n“ ); Login(); / 用户登录 while (1) / 菜单操作 menu(); printf(“请你选择操作 :“ ); scanf( “%d“, if (sel=0) / 保存文件信息 if (shoudsave=1) getchar(); printf(“n 资料已经改动 , 是否将改动保存到文件中(y/n)?n“); scanf( “%c“, if (ch=y |ch= Y ) 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实验体会 通过编写和调试此次文件系统,加深了对各种文件操作命令的实质内容和执行过程的了解。对文件系统有 了更深的了解。 教师评价优良中及 格 不 及 格 教师 签名 日 期
链接地址:https://www.31doc.com/p-5208775.html