操作系统课程设计说明书.docx
- 文档编号:28541763
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:16
- 大小:60.82KB
操作系统课程设计说明书.docx
《操作系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计说明书.docx(16页珍藏版)》请在冰豆网上搜索。
操作系统课程设计说明书
中北大学
操作系统课程设计
说明书
学院、系:
软件学院
专业:
软件工程
学生姓名:
陈斐润
学号:
0921010703
设计题目:
基于Linux的模拟文件系统的设计与实现
起迄日期:
2011年12月22日-2012年1月7日
指导教师:
康珺
2012年1月5日
1需求分析
1、设计一个10个用户的文件系统。
每个用户最多可以保存10个文件,一次运行用户可打开多个文件。
2、程序采用二级文件目录。
(即设置主目录(MFD)和用户文件目录(UFD))。
另外,可打开文件设置指针。
3、为了方便实现,对文件的读写作了简化。
在执行读写命令时,只需改读写指针。
并不进行实际的读写操作。
4、实现的基本功能主要包括:
改变目录(CD),创建目录(MD),显示目录(DIR),删除目录(RD),打开全部文件(openall),打开单个文件(open),建立一个文件(create),删除一个文件(delete),写文件(write),读文件(read),改文件的保护码(change),退出(exit)等。
2总体设计
1.设计方案及论证结果
设计方案:
本系统一共建立了Administrator和Guest两个用户,每个用户拥有一个结构体数组为structFliefa[8]和structFliefg[8]每个用户最多可一建立8个文件,每个文件对应一个文件模块;
文件模块:
structFlie
{
inted;//判断是否正存放文件
charf_name[8];//文件名
charf_c[8];//存放文件内容
intatt;//文件属性0为只读1为只写
};
文件模块示意图:
2.函数设计和功能分析:
系统调用原型
功能
主要参数说明
voidcheck()
密码认证
admin为函数出口
intinit()
初始化操作界面
返回i执行相应的操作
voidcreatefile()
创建文件
name[]为文件名->fa[].f_name[]
voiddeletefile()
删除文件
voidopenfile()
打开文件
voidexit()
退出系统
voidwritefile()
书写文件
c[]为文件内容->fa[].f_c[]
voidmodifyfile()
修改属性
a为文件属性->fa[].att
voidcatalogue()
目录管理
3.Main()函数的流程图:
4.系统的原理框图:
3详细设计
#include
#include
#include
structFlie
{
inted;//判断是否正存放文件
charf_name[8];//文件名
charf_c[8];//存放文件内容
intatt;//文件属性0为只读1为只写//用于指向文件内容模块
}fa[8],fg[8];
intx;
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;
}
}
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();
}
}
}
intinit()/*初始化操作界面函数*/
{
inti;
printf("****************************\n");
printf("*文件管理系统*\n");
printf("****************************\n");
printf("1.创建文件2.删除文件3.打开文件4.书写文件\n");
printf("5.复制文件6.修改属性7.目录管理8.消注\n");
printf("****************************\n");
printf("请您选择:
");
scanf("%d",&i);
return(i);/*选择相应的序号,执行相应的操作*/
}
voidmain()
{
intflag=1,i;
check();
while(flag)/*初始化系统界面*/
{
if(x==3)
{
exit(0);
}
i=init();
getchar();
switch(i)
{
case1:
/*创建文件*/
{
system("cls");
createfile();
system("cls");
break;
}
case2:
/*删除文件*/
{
system("cls");
deletefile();
system("cls");
break;
}
case3:
/*打开文件*/
{
system("cls");
openfile();
system("cls");
break;
}
case4:
/*写文件*/
{
system("cls");
writefile();
system("cls");
break;
}
case5:
//拷贝文件
{
system("cls");
copyfile();
system("cls");
break;
}
case6:
//修改文件属性
{
system("cls");
modifyfile();
system("cls");
break;
}
case7:
/*文件目录管理*/
{
system("cls");
catalogue();
system("cls");
break;
}
case8:
{
system("cls");
check();
system("cls");
break;/*退出文件管理系统程序*/
}
default:
printf("\n\n错误!
请重新输入:
\n");
getchar();
break;
}
}
4心得体会
通过这次课程设计,我熟悉了Linux操作系统,掌握了Linux的一些基本操作,并加深了对C语言的理解,了解了文件系统的构造。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 说明书