-1-昆明理工大学信息工程与自动化学院学生实验报告(2010—2011学年第二学期)课程名称:操作系统开课实验室:信自楼4442011年5月28日年级、专业、班学号姓名成绩实验项目名称文件系统管理实验指导教师教师评语教师签名:年月日一、实验目的通过编写文件管理系统的算法,设计多用户,以密码进入。在每个用户下建立文件,根据其结构体的元素有属性,名字,内容。利用这些元素去模拟文件的创建,删除,打开,修改属性。达到提高编程能力的目的。二、实验原理及基本技术路线图(方框原理图)用C语言或C++语言开发。在设计该文件管理系统时,设计多用户,以密码进入。在每个用户下建立文件,根据其结构体的元素有属性,名字,内容。利用这些元素去模拟文件的创建,删除,打开,修改属性。系统设计voidcheck()//密码认证voidcreatefile()/*创建文件操作*/voiddeletefile()//删除文件voidopenfile()//打开文件voidmodifyfile()/修改文件voidcopyfile()//复制voidcatalogue()/*目录管理子程序*/intinit()/*初始化操作界面函数*/-2-数据结构说明本系统一共建立了Administrator和Guest两个用户,每个用户拥有结构体数组为structFliefa[8]和structFliefg[8]每个用户最多可建立8个文件,每个文件对应一个文件模块;文件模块:structFlie-3-{inted;//判断是否正存放文件charf_name[8];//文件名charf_c[8];//存放文件内容intatt;//文件属性0为只读1为只写//用于指向文件内容模块}fa[8],fg[8];各核心模块设计及实现主函数通过switch(i),当case1:/*创建文件*/case2:/*删除文件*/case3://打开文件-4-case4://修改文件case5://复制、粘贴文件case6:/*文件目录管理*/三、所用仪器、材料(设备名称、型号、规格等)。所用仪器:计算中心201;操作系统:MicrosoftVisualC++;软件平台:MicrosoftVisualC++四、实验方法、步骤#includestdio.h#includestdlib.h/*不容易归类的标准函数库*/#includestring.h#includetime.h#includewindows.hstructFlie{inted;//判断是否正存放文件charf_name[8];//文件名charf_c[8];//文件内容模块intatt;//文件属性0为只读1为只写//用于指向文件内容模块}fa[8],fg[8];intx,k=0;//全局钥匙voidcheck()//密码认证{intcheck,a=1;charpin1[]=wangji;//此处设定用户口令charpin[20];while(a){-5-printf(****************************\n);printf(*文件管理系统用户登录*\n);printf(****************************\n);printf(请选择用户:\n);printf(1.Administrator2.Guest3.退出系统\n);scanf(%d,&x);getchar();if(x==3){system(cls);break;}printf(密码:);scanf(%s,pin);check=strcmp(pin,pin1);if(check!=0){system(cls);printf(\n密码错误!请重新输入:\n);}else{system(cls);a=0;}}}voidcreatefile()/*创建文件操作*/{-6-inthandle=1,a,check,i,j,h;charname[8],pin[8];while(1){printf(不能超过个文件!\n);printf(*****************************\n);printf(*创建文件*\n);printf(*****************************\n);printf(请输入所要创建的文件名称:);scanf(%s,name);if(x==1){for(i=0;i8;i++){for(h=0;h8;h++)pin[h]=fa[i].f_name[h];check=strcmp(pin,name);if(check!=0){}else{printf(\n创建错误!..........................文件已经存在!\n);Sleep(1000);handle=0;getchar();}break;}if(k=8)-7-{printf(已经超过8个文件!);break;}if(handle==1){for(h=0;h8;h++)if(fa[h].ed==0){strcpy(fa[h].f_name,name);while(1){printf(\n请选择文件属性(0.只读-1.只写):);scanf(%d,&a);getchar();if(a==0||a==1){fa[h].att=a;printf(\n创建文件成功!\n);fa[h].ed=1;k=k+1;printf(K=%d\n,k);break;}elseprintf(错误!请重新输入:\n);}printf(请输入文件内容:);scanf(%s,fa[h].f_c);printf(输入内容成功!\n);break;-8-}}break;}if(x==2){for(i=0;i8;i++){for(j=0;j8;j++)pin[j]=fg[i].f_name[j];check=strcmp(pin,name);if(check!=0){}else{printf(\n创建错误!文件已经存在!);handle=0;break;}}if(handle==1){for(h=0;h8;h++)if(fa[h].ed==0){strcpy(fg[h].f_name,name);while(1){printf(\n请选择文件属性(0.只读-1.只写):);scanf(%d,&a);-9-getchar();if(a==0||a==1){fg[h].att=a;printf(\n创建文件成功.\n);fg[h].ed=1;k=k+1;printf(K=%d\n,k);break;}elseprintf(错误!请重新输入:\n);}printf(请输入文件内容:);scanf(%s,fg[h].f_c);printf(输入内容成功!);break;}}break;}}}voiddeletefile()//删除文件;{charname[8],same[8];inti,check,h;while(1)-10-{if(x==1){printf(请输入要删的文件名:);scanf(%s,name);for(i=0;i8;i++){for(h=0;h8;h++)same[h]=fa[i].f_name[h];check=strcmp(same,name);if(check!=0){printf(文件不存在!\n);break;}else{strcpy(fa[i].f_name,);strcpy(fa[i].f_c,);fa[i].ed=0;printf(删除成功!\n);getchar();break;}}break;}if(x==2){printf(请输入要删的文件名:);scanf(%s,name);-11-for(i=0;i8;i++){for(h=0;h8;h++)same[h]=fg[i].f_name[h];check=strcmp(same,name);if(check!=0){printf(文件不存在!\n);break;}else{strcpy(fg[i].f_name,);strcpy(fg[i].f_c,);fg[i].ed=0;printf(删除成功!\n);getchar();break;}}}break;}}voidopenfile()//打开文件{while(1){inti;if(x==1){-12-printf(请输入K的值:);scanf(%d,&i);if(i=k)printf(文件%s:%s\n,fa[i].f_name,fa[i].f_c);elseprintf(请重新输入I);break;}if(x==2){printf(请输入i的值:);scanf(%d,&i);if(i=k)printf(文件%s:%s\n,fg[i].f_name,fg[i].f_c);elseprintf(请重新输入I);break;}}getchar();}voidmodifyfile()//修改文件;{inti,h,j;charname[8],name1[8];printf(1.修改文件名称\n2.修改文件属性\n);scanf(%d,&i);-13-if(x==1){for(h=0;hk;h++)printf(文件名为:%s\n,fa[h].f_name);printf(文件属性:%d\n,fa[h].att);if(i==1){printf(请输入要修改的文件名称:);scanf(%s,name);for(h=0;hk;h++){if(strcmp(name,fa[h].f_name)==0){printf(请输入新的文件名:);scanf(%s,name1);strcpy(fa[h].f_name,name1);printf(修改成功!\n);Sleep(1000);break;}elseprintf(没找到相应的文件!);}}if(i==2){printf(请输入要修改的文件名称:);scanf(%s,name);for(h=0;hk;h++){if(strcmp(name,fa[h].f_name)==0)-14-{Sleep(1000);printf(请选择:1.只读/2.只写\n);scanf(%d,&j);if(j==1)fa[h].att=0;elsefa[h].att=1;printf(修改成功!\n);Sleep(1000);break;}}}}if(x==2){for(h=0;hk;h++)printf(文件名为:%s\n,fg[h].f_name);printf(文件属性:%d\n,fg[h].att);if(i==1){printf(请输入要修改的文件名称:);scanf(%s,name);for(h=0;hk;h++){if(strcmp(name,fg[h].f_name)==0){printf(请输入新的文件名:);scanf(%s,name1);strcpy(fg[h].f_name,name1);printf(修改成功!\n);-15-Sleep(1000);break;}elseprintf(没找到相应的文件!\n);}}if(i==2){printf(请输入要修改的文件名称:);scanf(%s,name);for(h=0;hk;h++){if(strcmp(name,fg[h].f_name)==0){printf(请选择:1.只读/2.只写\n);scanf(%d,&j);if(j==1)fg[h].att=0;elsefg[h].att=1;printf(修改成功!\n);Sleep(1000);break;}elseprintf(没找到相应的文件!\n);}}}-16-}voidcopyfile()//复制//粘贴文件;{inth,j;charname[8];if(x==1){for(h=0;hk;h++){printf(文件名为:%s\n,fa[h].f_name);printf(文件属性:%d\n,fa[h].