文件管理系统设计.docx

上传人:聆听****声音 文档编号:2008571 上传时间:2023-05-02 格式:DOCX 页数:19 大小:65.52KB
下载 相关 举报
文件管理系统设计.docx_第1页
第1页 / 共19页
文件管理系统设计.docx_第2页
第2页 / 共19页
文件管理系统设计.docx_第3页
第3页 / 共19页
文件管理系统设计.docx_第4页
第4页 / 共19页
文件管理系统设计.docx_第5页
第5页 / 共19页
文件管理系统设计.docx_第6页
第6页 / 共19页
文件管理系统设计.docx_第7页
第7页 / 共19页
文件管理系统设计.docx_第8页
第8页 / 共19页
文件管理系统设计.docx_第9页
第9页 / 共19页
文件管理系统设计.docx_第10页
第10页 / 共19页
文件管理系统设计.docx_第11页
第11页 / 共19页
文件管理系统设计.docx_第12页
第12页 / 共19页
文件管理系统设计.docx_第13页
第13页 / 共19页
文件管理系统设计.docx_第14页
第14页 / 共19页
文件管理系统设计.docx_第15页
第15页 / 共19页
文件管理系统设计.docx_第16页
第16页 / 共19页
文件管理系统设计.docx_第17页
第17页 / 共19页
文件管理系统设计.docx_第18页
第18页 / 共19页
文件管理系统设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

文件管理系统设计.docx

《文件管理系统设计.docx》由会员分享,可在线阅读,更多相关《文件管理系统设计.docx(19页珍藏版)》请在冰点文库上搜索。

文件管理系统设计.docx

**大学

计算机科学与技术学院

课程设计报告

(2006 ~2007 学年度 第2学期)

课程名称 操作系统课程设计项目名称 文件管理系统设计

姓名 学号

专业 班级

地点 教师

xx计算机科学与技术学院

课程设计报告

1.题目内容:

文件管理系统设计:

设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件管理,对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法.

2.设计任务及主要技术:

设计任务:

1.设计一个支持n个用户的文件系统,每个用户可拥有多个文件.

2.采用二级或二级以上的多级文件目录管理.

主要技术:

1.对文件应设置存取控制保护方式,如“允许读”、“允许写”等.

2.系统的外部特征应接近于真实系统,可设置下述文件操作命令:

建立文件、修改属性、删除文件、读文件、写文件、复制文件、查询目录.

3.通过键盘使用该文件系统,系统应显示操作命令的执行结果.

3.设计方案及论证结果

设计方案:

本系统一共建立了Administrator 和Guest两个用户,每个用户拥有一个结构体数

组为structFliefa[8]和structFliefg[8]每个用户最多可一建立8个文件,每个文件对应一个文件模块;

文件模块:

structFlie

{

inted; //判断是否正存放文件charf_name[8]; //文件名

charf_c[8]; //存放文件内容

intatt; //文件属性0为只读1为只写

};

文件模块示意图:

ed

f_name[8]

att

f_c[8]

函数设计和功能分析:

系统调用原型

功能

主要参数说明

voidcheck()

密码认证

admin为函数出口

intinit()

初始化操作界面

返回i执行相应的操作

voidcreatefile()

创建文件

name[]为文件名->fa[].f_name[]

voiddeletefile()

删除文件

voidopenfile()

打开文件

voidexit()

退出系统

voidwritefile()

书写文件

c[]为文件内容->fa[].f_c[]

voidcopyfile()

复制文件

voidmodifyfile()

修改属性

a为文件属性->fa[].att

voidcatalogue()

目录管理

Main()函数的流程图:

开始

Y

退出

N

N

成功?

Y

N

消注?

结束

解析命令

接收命令

用户登陆

实现命令

选择用户

Y

Administrator

Guest

4.系统的原理框图:

flie1

flie2

flie1

flie2

ed

f_name[]

att

f_c[]

ed

f_name[]

att

f_c[]

文件名

文件属性

文件内容

判断存储状

5.设计程序:

#include

#include /*不容易归类的标准函数库*/#include

structFlie

{

inted; //判断是否正存放文件charf_name[8]; //文件名

charf_c[8]; //存放文件内容

intatt; //文件属性0为只读1为只写 //用于指向文件内容模块

}fa[8],fg[8];

intx; //全局钥匙voidcheck()//密码认证

{

intcheck,a=1;

charpin1[]="admin";//此处设定用户口令charpin[20];

while(a)

{

printf("****************************\n");printf(" * 文件管理系统用户登录*\n");printf("****************************\n");

printf("请选择用户:

\n");

printf(" 1.Administrator 2.Guest 3.退出系统\n");scanf("%d",&x);

getchar();if(x==3)

{

system("cls");break;

}

printf("密 码:

");

scanf("%s",pin);

check=strcmp(pin,pin1);if(check!

=0)

{

}

else

{

}

}

system("cls");

printf("\n密码错误!

请重新输入:

\n");

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");scanf("%s",name);

if(x==1)

{

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)pin[j]=fa[i].f_name[j];

check=strcmp(pin,name);if(check!

=0){}

else

{

printf("\n创建错误!

文件已经存在!

");

handle=0;

getchar();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;

break;

}

else

printf("错误!

请重新输入:

\n");

}

}

getchar();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)

{

}

else



fg[h].att=a;

printf("\n创建文件成功.\n");fg[h].ed=1;

getchar();break;

}

break;

}

printf("错误!

请重新输入:

\n");

}

break;

}

}

}

voiddeletefile() /*删除文件的操作*/

{

intstatus=0,j=0,i,check,choice;charname[8],pin[8];

while

(1)

{

system("cls");

printf("****************************\n");printf(" * 删除文件*\n");

printf("****************************\n");

if(x==1)

{

printf("请输入所要删除的文件名称:

\n");

scanf("%s",name); /*输入要删除的文件名*/

printf("\n请确认(0-1):

");scanf("%d",&choice);

getchar();if(choice==1)

{

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)pin[j]=fa[i].f_name[j];

check=strcmp(pin,name);if(check!

=0){}

else

{

status=1;

if(fa[i].att==0) /*获取文件的状态,是否存在并且是否只读*/j=1;

if(j==1)

{

printf("\n删除错误!

文件为只读文件!

");//只读文件

}

elseif(j!

=0) //从目录中删除一个文件

{

strcpy(fa[i].f_name," ");

strcpy(fa[i].f_c," ");fa[i].ed=0;

printf("\n删除文件成功.");

}

getchar();break;

}

}

if(status!

=1)

{

printf("\n删除错误!

所要删除的文件不存在!

\n");/*文件不存在*/

getchar();

}

}

break;

}

if(x==2)

{

printf("请输入所要删除的文件名称:

\n");

scanf("%s",name); /*输入要删除的文件名*/

printf("\n请确认(0-1):

");scanf("%d",&choice);

getchar();if(choice==1)

{

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

{

status=1;

if(fg[i].att==0) /*获取文件的状态,是否存在并且是否只读*/j=1;

if(j==1)

{

printf("\n删除错误!

文件为只读文件!

");//只读文件

}

elseif(j!

=0) //从目录中删除一个文件函数

{

strcpy(fg[i].f_name," ");

strcpy(fg[i].f_c," ");fg[i].ed=0;

printf("\n删除文件成功.");

break;

}

getchar();break;

}

}

if(status!

=1)

{

printf("\n删除错误!

所要删除的文件不存在!

");/*文件不存在*/

getchar();

}

}

}

break;

}

}

voidopenfile() /*打开文件操作*/

{

inti,a=0,j,check;charname[8],pin[8];

printf("****************************\n");printf(" * 打开文件*\n");

printf("****************************\n");

printf("请输入您所要打开文件的名称:

\n");scanf("%s",name);

getchar();if(x==1)

{

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)pin[j]=fa[i].f_name[j];check=strcmp(pin,name);if(check!

=0){}

else

{

}

}

if(a!

=1)

printf("%s",fa[i].f_c);a=1;

printf("文件不存在!

");

getchar();

}

elseif(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

{

}

}

if(a!

=1)

printf("%s",fg[i].f_c);a=1;

printf("文件不存在!

");

getchar();

}

}

voidwritefile()/*书写文件*/

{

inti,j,check,b=1;

charch=0,a=0,name[8],c[8],pin[8];while(b)

{

printf("****************************\n");printf(" * 书写文件*\n");

printf("****************************\n");

printf("请输入要书写的文件的名称:

\n");scanf("%s",name);

if(x==1)

{

for(i=0;i<8;i++) /*获取文件的状态,是否存在

*/

{

for(j=0;j<8;j++)pin[j]=fa[i].f_name[j];check=strcmp(pin,name);

if(check!

=0){}else

{

if(fa[i].att==0)

{

printf("书写错误!

只读文件!

\n");

a=1;

getchar();getchar();break;

}

printf("请输入文件的内容:

\n");

scanf("%s",c);

strcpy(fa[i].f_c,c);

printf("书写文件成功.\n");a=1;

b=0;

getchar();getchar();break;

}

break;

}

if(a!

=1)

{

printf("文件不存在!

");

getchar();

getchar();break;

}

break;

}

getchar();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

{

if(fa[i].att==0)

{

printf("书写错误!

只读文件!

\n");

a=1;

getchar();break;

}

printf("请输入文件的内容:

\n");

scanf("%s",c);

strcpy(fg[i].f_c,c);

printf("书写文件成功.\n");a=1;

getchar();getchar();break;

}

}

if(a!

=1)

{

printf("文件不存在!

");

break;

}

}

break;

}

}

voidcopyfile()//复制文件操作

{

inti,j,k,l,check,p;

charname[8],name1[8],pin[8];

printf("****************************\n");printf(" * 复制文件*\n");

printf("****************************\n");

if(x==1)

{

printf("请输入要复制的文件的名称:

\n");

scanf("%s",name);

getchar();

printf("请输入要复制到的文件的名称:

\n");scanf("%s",name1);

getchar();

for(i=0;i<8;i++) //获取文件的状态,是否存在

{

for(j=0;j<8;j++)

pin[j]=fa[i].f_name[j];check=strcmp(pin,name);

if(check!

=0){}else

{

for(k=0;k<8;k++) //获取文件的状态,是否存在

{

for(l=0;l<8;l++)pin[l]=fa[k].f_name[l];

check=strcmp(pin,name1);if(check!

=0){}

else

{

for(p=0;p<8;p++)

{

fa[k].f_c[p]=fa[i].f_c[p];

}

printf("复制成功\n");

}

}

}

}

}

if(x==2)

{

printf("请输入要复制的文件的名称:

\n");

scanf("%s",name);

getchar();

printf("请输入要复制到的文件的名称:

\n");scanf("%s",name1);

getchar();

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

{

for(k=0;k<8;k++) //获取文件的状态,是否存在

{

for(l=0;l<8;l++)pin[l]=fg[k].f_name[l];

check=strcmp(pin,name1);if(check!

=0){}

else

{

for(p=0;p<8;p++)

{

fa[k].f_c[p]=fa[i].f_c[p];

}

printf("复制成功\n");

getchar();

}

}

}

}

}

getchar();

}

voidmodifyfile()/*修改属性操作*/

{

intstatus=0,a,i,j,check;charchoice,name[8],pin[8];while

(1)

{

printf("****************************\n");printf(" * 修改属性*\n");

printf("****************************\n");

if(x==1)

{

printf("请输入所要修改属性的文件的名称:

\n");

scanf("%s",name);

getchar();

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)pin[j]=fa[i].f_name[j];

check=strcmp(pin,name);if(check!

=0){}

else

{

printf("<0.只读--1.只写>\n");

printf("请选择文件属性:

");while

(1)

{

scanf("%d",&a);getchar();if(x==1||x==2)break;

else

printf("错误!

请重新输入:

\n");

}

fa[i].att=a;

printf("修改属性成功.\n");status=1;

break;

}

} /*获取文件的状态*/

if(status!

=1)

{

printf("错误!

文件不存在!

");

getchar();

printf("是否重新输入?

(Y-N)\n");scanf("%c",&choice);

getchar();if(choice=='N'||choice=='n')

break;

}

getchar();break;

}

if(x==2)

{

printf("请输入所要修改属性的文件的名称:

\n");

scanf("%s",name);

getchar();

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("<0.只读--1.只写>\n");

printf("请选择文件属性:

");while

(1)

{

scanf("%d",&a);getchar();if(x==1||x==2)break;

else

printf("错误!

请重新输入:

\n");

}

fg[i].att=a;

printf("修改属性成功.\n");break;

}

if(i==7)

{

status=1;break;

}

} /*获取文件的状态*/

if(status=1)

{

printf("错误!

文件不存在!

");

getchar();

printf("是否重新输入?

(Y-N)\n");scanf("%c",&choice);

getchar();if(choice=='N'||choice=='n')

break;

}

getchar();

}

}

}

voidcatalogue() /*目录管理子程序*/

{

intx,a=1;charname[8];

while(a) /*目录管理操作*/

{

printf("**************

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2