课程设计—文件管理系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
**大学
计算机科学与技术学院课程设计报告
(2006 ~2007 学年度第2 学期)课程名称操作系统课程设计项目名称文件管理系统设计姓名学号
专业班级
地点教师
1.题目内容:
文件管理系统设计:
设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件管理,对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法. 2.设计任务及主要技术:
设计任务:
1.设计一个支持n个用户的文件系统,每个用户可拥有多个文件.
2.采用二级或二级以上的多级文件目录管理.
主要技术:
1.对文件应设置存取控制保护方式,如“允许读”、“允许写”等.
2.系统的外部特征应接近于真实系统,可设置下述文件操作命令:建立文件、修改
属性、删除文件、读文件、写文件、复制文件、查询目录.
3.通过键盘使用该文件系统,系统应显示操作命令的执行结果.
3.设计方案及论证结果
设计方案:
本系统一共建立了Administrator 和Guest两个用户,每个用户拥有一个结构体数组为struct Flie fa[8]和struct Flie fg[8]每个用户最多可一建立8个文件,每个文件对应一个文件模块;
文件模块:
struct Flie
{
int ed; //判断是否正存放文件
char f_name[8]; //文件名
char f_c[8]; //存放文件内容
int att ; // 文件属性0为只读1为只写
};
文件模块示意图:
函数设计和功能分析:
Main()函数的流程图:
4.系统的原理框图:
5.设计程序:
#include
#include
#include
struct Flie
{
int ed; //判断是否正存放文件
char f_name[8]; //文件名
char f_c[8]; //存放文件内容
int att ; // 文件属性 0为只读 1为只写 //用于指向文件内容模块
}fa[8],fg[8];
int x; //全局钥匙
void check() //密码认证
{
int check,a=1;
char pin1[]="admin"; //此处设定用户口令
char pin[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)
{
system("cls");
printf("\n密码错误! 请重新输入:\n");
}
else
{
system("cls");
a=0;
}
}
}
void createfile() /*创建文件操作*/
{
int handle=1,a,check,i,j,h;
char name[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");
}
break;
}
}
getchar();
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);
g etchar();
if(a==0||a==1)