操作系统文件系统管理实验.docx
- 文档编号:12898965
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:29
- 大小:230.33KB
操作系统文件系统管理实验.docx
《操作系统文件系统管理实验.docx》由会员分享,可在线阅读,更多相关《操作系统文件系统管理实验.docx(29页珍藏版)》请在冰豆网上搜索。
操作系统文件系统管理实验
昆明理工大学信息工程与自动化学院学生实验报告
(2010—2011学年第二学期)
课程名称:
操作系统开课实验室:
信自楼4442011年5月28日
年级、专业、班
学号
姓名
成绩
实验项目名称
文件系统管理实验
指导教师
教师评语
教师签名:
年月日
一、实验目的
通过编写文件管理系统的算法,设计多用户,以密码进入。
在每个用户下建立文件,根据其结构体的元素有属性,名字,内容。
利用这些元素去模拟文件的创建,删除,打开,修改属性。
达到提高编程能力的目的。
二、实验原理及基本技术路线图(方框原理图)
用C语言或C++语言开发。
在设计该文件管理系统时,设计多用户,以密码进入。
在每个用户下建立文件,根据其结构体的元素有属性,名字,内容。
利用这些元素去模拟文件的创建,删除,打开,修改属性。
系统设计
voidcheck()//密码认证
voidcreatefile()/*创建文件操作*/
voiddeletefile()//删除文件
voidopenfile()//打开文件
voidmodifyfile()/修改文件
voidcopyfile()//复制
voidcatalogue()/*目录管理子程序*/
intinit()/*初始化操作界面函数*/
数据结构说明
本系统一共建立了Administrator和Guest两个用户,每个用户拥有结构体数组为structFliefa[8]和structFliefg[8]每个用户最多可建立8个文件,每个文件对应一个文件模块;
文件模块:
structFlie
{
inted;//判断是否正存放文件
charf_name[8];//文件名
charf_c[8];//存放文件内容
intatt;//文件属性0为只读1为只写//用于指向文件内容模块
}fa[8],fg[8];
各核心模块设计及实现主函数
通过switch(i),
当case1:
/*创建文件*/case2:
/*删除文件*/
case3:
//打开文件
case4:
//修改文件
case5:
//复制、粘贴文件
case6:
/*文件目录管理*/
三、所用仪器、材料(设备名称、型号、规格等)。
所用仪器:
计算中心201;操作系统:
MicrosoftVisualC++;软件平台:
MicrosoftVisualC++
四、实验方法、步骤
#include
#include
#include
#include
#include
structFlie{
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)
{
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()/*创建文件操作*/
{
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;i<8;i++)
{
for(h=0;h<8;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)
{printf("已经超过8个文件!
");
break;}
if(handle==1)
{
for(h=0;h<8;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;
}
else
printf("错误!
请重新输入:
\n");
}
printf("请输入文件内容:
");
scanf("%s",fa[h].f_c);
printf("输入内容成功!
\n");
break;
}
}
break;
}
if(x==2)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;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;h<8;h++)
if(fa[h].ed==0)
{
strcpy(fg[h].f_name,name);
while
(1)
{
printf("\n请选择文件属性(0.只读-1.只写):
");
scanf("%d",&a);
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;
}
else
printf("错误!
请重新输入:
\n");
}
printf("请输入文件内容:
");
scanf("%s",fg[h].f_c);
printf("输入内容成功!
");
break;
}
}
break;
}
}
}
voiddeletefile()//删除文件;
{
charname[8],same[8];
inti,check,h;
while
(1)
{
if(x==1)
{
printf("请输入要删的文件名:
");
scanf("%s",name);
for(i=0;i<8;i++)
{
for(h=0;h<8;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);
for(i=0;i<8;i++)
{
for(h=0;h<8;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)
{
printf("请输入K的值:
");
scanf("%d",&i);
if(i<=k)
printf("文件%s:
%s\n",fa[i].f_name,fa[i].f_c);
else
printf("请重新输入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);
else
printf("请重新输入I");
break;
}
}
getchar();
}
voidmodifyfile()//修改文件;
{
inti,h,j;
charname[8],name1[8];
printf("1.修改文件名称\n2.修改文件属性\n");
scanf("%d",&i);
if(x==1)
{
for(h=0;h printf("文件名为: %s\n",fa[h].f_name); printf("文件属性: %d\n",fa[h].att); if(i==1) { printf("请输入要修改的文件名称: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fa[h].f_name)==0) { printf("请输入新的文件名: "); scanf("%s",name1); strcpy(fa[h].f_name,name1); printf("修改成功! \n"); Sleep(1000); break; } else printf("没找到相应的文件! "); } } if(i==2) { printf("请输入要修改的文件名称: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fa[h].f_name)==0) {Sleep(1000); printf("请选择: 1.只读/2.只写\n"); scanf("%d",&j); if(j==1) fa[h].att=0; else fa[h].att=1; printf("修改成功! \n"); Sleep(1000); break; } } } } if(x==2) { for(h=0;h printf("文件名为: %s\n",fg[h].f_name); printf("文件属性: %d\n",fg[h].att); if(i==1) { printf("请输入要修改的文件名称: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fg[h].f_name)==0) {printf("请输入新的文件名: "); scanf("%s",name1); strcpy(fg[h].f_name,name1); printf("修改成功! \n"); Sleep(1000); break; } else printf("没找到相应的文件! \n"); } } if(i==2) { printf("请输入要修改的文件名称: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fg[h].f_name)==0) { printf("请选择: 1.只读/2.只写\n"); scanf("%d",&j); if(j==1) fg[h].att=0; else fg[h].att=1; printf("修改成功! \n"); Sleep(1000); break; } else printf("没找到相应的文件! \n"); } } } } voidcopyfile()//复制//粘贴文件; { inth,j; charname[8]; if(x==1) { for(h=0;h { printf("文件名为: %s\n",fa[h].f_name); printf("文件属性: %d\n",fa[h].att); printf("文件内容: %s\n",fa[h].f_c); printf("*********************************\n"); } printf("请输入需要复制的文件名: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fa[h].f_name)==0) printf("复制文件成功! \n"); if(k<8) {printf("进行粘贴吗? 请选择: 1.YES2.N0T\n"); scanf("%d",&j); if(j==1) { fa[k].att=fa[h].att; fa[k].ed=fa[h].ed; strcpy(fa[k].f_c,fa[h].f_c); strcpy(fa[k].f_name,fa[h].f_name); printf("粘贴成功: \n"); k=k+1; Sleep(1000); for(h=0;h { printf("文件名为: %s\n",fa[h].f_name); printf("文件属性: %d\n",fa[h].att); printf("文件内容: %s\n",fa[h].f_c); printf("文件状态: %d\n",fa[h].ed); printf("------------------------------\n"); Sleep(2000); } break; } } } } if(x==2) { for(h=0;h { printf("文件名为: %s\n",fg[h].f_name); printf("文件属性: %d\n",fg[h].att); printf("文件内容: %s\n",fg[h].f_c); printf("**********************************\n"); } printf("请输入需要复制的文件名: "); scanf("%s",name); for(h=0;h {if(strcmp(name,fg[h].f_name)==0) printf("复制文件成功! \n"); if(k<8) {printf("进行粘贴吗? 请选择: 1.YES2.N0T\n"); scanf("%d",&j); if(j==1) { fg[k].att=fg[h].att; fg[k].ed=fg[h].ed; strcpy(fg[k].f_c,fg[h].f_c); strcpy(fg[k].f_name,fg[h].f_name); printf("粘贴成功: \n"); Sleep(1000); k=k+1; for(h=0;h { printf("文件名为: %s\n",fg[h].f_name); printf("文件属性: %d\n",fg[h].att); printf("文件内容: %s\n",fg[h].f_c); printf("文件状态: %d\n",fg[h].ed); printf("-------------------------------\n"); Sleep(3000); } break; } } } } } voidcatalogue()/*目录管理子程序*/ { intx,a=1,h; while(a)/*目录管理操作*/ { printf("-----------------------------\n"); printf("*目录管理*\n"); printf("*****************************\n"); printf("1.显示目录2.退出\n"); printf("-----------------------------\n"); printf("请选择: "); scanf("%d",&x); while(x<1||x>2) { printf("\n错误! 请重新输入: "); scanf("%d",&x); } switch(x) { case1: /*显示目录操作*/ { system("cls"); printf("\n文件目录为: \n"); for(h=0;h {if(x==1) printf("文件Administrator/%s\n",fa[h].f_name); printf("..........."); if(x==2) printf("\nGuest/%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 文件系统 管理 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)