操作系统课程设计文件管理系统设计.doc

上传人:laozhun 文档编号:2711814 上传时间:2023-02-23 格式:DOC 页数:19 大小:149.50KB
返回 下载 相关 举报
操作系统课程设计文件管理系统设计.doc_第1页
第1页 / 共19页
操作系统课程设计文件管理系统设计.doc_第2页
第2页 / 共19页
操作系统课程设计文件管理系统设计.doc_第3页
第3页 / 共19页
操作系统课程设计文件管理系统设计.doc_第4页
第4页 / 共19页
操作系统课程设计文件管理系统设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《操作系统课程设计文件管理系统设计.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计文件管理系统设计.doc(19页珍藏版)》请在三一办公上搜索。

1、*大学计算机科学与技术学院课程设计报告 ( 2006 2007 学年度 第 2 学期 )课程名称操作系统课程设计项目名称文件管理系统设计姓名学号专业班级地点教师1.题目内容:文件管理系统设计:设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件管理,对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法.2.设计任务及主要技术:设计任务:1.设计一个支持n个用户的文件系统,每个用户可拥有多个文件.2.采用二级或二级以上的多级文件目录管理. 主要技术:1.对文件应设置存取控制保护方式,如“允许读”、“允许写”等.2.系统的外部特征应接近于真实系统,可设置下述文

2、件操作命令:建立文件、修改属性、删除文件、读文件、写文件、复制文件、查询目录.3.通过键盘使用该文件系统,系统应显示操作命令的执行结果.3.设计方案及论证结果 设计方案: 本系统一共建立了Administrator 和Guest两个用户,每个用户拥有一个结构体数组为struct Flie fa8和 struct Flie fg8每个用户最多可一建立8个文件,每个文件对应一个文件模块; 文件模块: struct Flie int ed; /判断是否正存放文件 char f_name8; /文件名 char f_c8; /存放文件内容 int att ; / 文件属性 0为只读 1为只写 ; 文件

3、模块示意图:ed f_name8 att f_c8函数设计和功能分析:系统调用原型功能主要参数说明void check()密码认证admin为函数出口int init()初始化操作界面返回i执行相应的操作void createfile()创建文件name为文件名-fa.f_namevoid deletefile()删除文件void openfile()打开文件void exit()退出系统void writefile()书写文件c为文件内容-fa.f_cvoid copyfile()复制文件void modifyfile()修改属性a为文件属性-fa.attvoid catalogue()目录

4、管理Main()函数的流程图:消注?成功? 开始用户登陆NY接收命令 解析命令实现命令 结束N选择用户退出NYY 4.系统的原理框图:AdministratorGuestflie1 flie2 flie1 flie2 ed f_name att f_c文件名文件属性文件内容判断存储状态ed f_name att f_c5.设计程序:#include #include /*不容易归类的标准函数库*/#include struct Flieint ed; /判断是否正存放文件char f_name8; /文件名char f_c8; /存放文件内容int att ; / 文件属性 0为只读 1为只写

5、 /用于指向文件内容模块fa8,fg8;int x; /全局钥匙void check() /密码认证int check,a=1;char pin1=admin; /此处设定用户口令char pin20; while(a)printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 文件管理系统用户登录 *n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请选择用户:n);printf( 1.Administr

6、ator 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);elsesystem(cls);a=0;void createfile() /*创建文件操作*/int handle=1,a,check,i,j,h;char name8,pin8;while(1) printf(* * * * * * * * * * * *

7、* * * * * * * * * * * * * * * *n);printf( * 创建文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请输入所要创建的文件名称:n);scanf(%s,name);if(x=1)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) else printf(n创建错误!文件已经存在!);handle=0;getchar();break

8、; if(handle=1)for(h=0;h8;h+)if(fah.ed=0)strcpy(fah.f_name,name); while(1) printf(n请选择文件属性(0.只读 - 1.只写):); scanf(%d,&a); getchar(); if(a=0|a=1) fah.att=a; printf(n创建文件成功.n);fah.ed=1; break; else printf(错误! 请重新输入:n);break;getchar();break;if(x=2)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fgi.f_namej;check=strc

9、mp(pin,name); if (check!=0) else printf(n创建错误!文件已经存在!);handle=0;break; if(handle=1) for(h=0;h8;h+)if(fah.ed=0)strcpy(fgh.f_name,name); while(1) printf(n请选择文件属性(0.只读 - 1.只写):); scanf(%d,&a); getchar(); if(a=0|a=1) fgh.att=a; printf(n创建文件成功.n); fgh.ed=1; getchar(); break; else printf(错误! 请重新输入:n); bre

10、ak;break;void deletefile() /*删除文件的操作*/int status=0,j=0,i,check,choice;char name8,pin8;while(1)system(cls);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 删除文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);if(x=1)printf(请输入所要删除的文件名称:n); scanf(%s,name

11、); /*输入要删除的文件名*/ printf(n请确认(0 - 1):);scanf(%d,&choice); getchar();if(choice=1) for( i=0;i8;i+) for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0) else status=1;if(fai.att=0) /*获取文件的状态,是否存在并且是否只读*/ j=1; if(j=1) printf(n删除错误! 文件为只读文件!); /只读文件 else if(j!=0) /从目录中删除一个文件 strcpy(fai.f

12、_name, ); strcpy(fai.f_c, );fai.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;i8;i+) for(j=0;j8;j+) pinj

13、=fgi.f_namej; check=strcmp(pin,name); if (check!=0) else status=1;if(fgi.att=0) /*获取文件的状态,是否存在并且是否只读*/ j=1; if(j=1) printf(n删除错误! 文件为只读文件!); /只读文件 else if(j!=0) /从目录中删除一个文件函数 strcpy(fgi.f_name, ); strcpy(fgi.f_c, );fgi.ed=0; printf(n删除文件成功.);break; getchar(); break; if(status!=1)printf(n删除错误! 所要删除的文

14、件不存在!);/*文件不存在*/getchar();break;void openfile() /*打开文件操作*/int i,a=0,j,check;char name8,pin8;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 打开文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请输入您所要打开文件的名称: n);scanf(%s,name);getchar();if(x=1)

15、for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) else printf(%s,fai.f_c);a=1;if(a!=1)printf(文件不存在!);getchar();else if(x=2)for( i=0;i8;i+)for(j=0;j8;j+) pinj=fgi.f_namej;check=strcmp(pin,name); if (check!=0) else printf(%s,fgi.f_c);a=1;if(a!=1)printf(文件不存在!);getcha

16、r();void writefile() /*书写文件*/int i,j,check,b=1;char ch=0,a=0,name8,c8,pin8;while(b) printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 书写文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请输入要书写的文件的名称:n);scanf(%s,name);if(x=1)for( i=0;i8;i+) /*获取文

17、件的状态,是否存在*/ for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0) elseif(fai.att=0) printf(书写错误!只读文件!n);a=1;getchar();getchar(); break; printf(请输入文件的内容: n); scanf(%s,c); strcpy(fai.f_c,c); printf(书写文件成功.n); a=1;b=0;getchar();getchar();break;break;if(a!=1)printf(文件不存在!);getchar();get

18、char();break;break;getchar(); if(x=2)for( i=0;i8;i+) /*获取文件的状态,是否存在*/ for(j=0;j8;j+) pinj=fgi.f_namej; check=strcmp(pin,name); if (check!=0) elseif(fai.att=0) printf(书写错误!只读文件!n);a=1;getchar(); break; printf(请输入文件的内容: n); scanf(%s,c); strcpy(fgi.f_c,c); printf(书写文件成功.n); a=1;getchar();getchar(); bre

19、ak;if(a!=1)printf(文件不存在!);break; break;void copyfile() / 复制文件操作int i,j,k,l,check,p;char name8,name18,pin8;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( * 复制文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);if(x=1) printf(请输入要复制的文件的名称:n); scanf(%s,nam

20、e); getchar(); printf(请输入要复制到的文件的名称:n); scanf(%s,name1); getchar();for( i=0;i8;i+) /获取文件的状态,是否存在for(j=0;j8;j+) pinj=fai.f_namej; check=strcmp(pin,name); if (check!=0)elsefor( k=0;k8;k+) /获取文件的状态,是否存在 for(l=0;l8;l+) pinl=fak.f_namel; check=strcmp(pin,name1); if (check!=0)elsefor(p=0;p8;p+)fak.f_cp=fa

21、i.f_cp;printf(复制成功n);if(x=2) printf(请输入要复制的文件的名称:n); scanf(%s,name); getchar(); printf(请输入要复制到的文件的名称:n); scanf(%s,name1); getchar();for( i=0;i8;i+) /获取文件的状态,是否存在for(j=0;j8;j+) pinj=fgi.f_namej; check=strcmp(pin,name); if (check!=0)elsefor( k=0;k8;k+) /获取文件的状态,是否存在 for(l=0;l8;l+) pinl=fgk.f_namel; ch

22、eck=strcmp(pin,name1); if (check!=0)elsefor(p=0;p8;p+)fak.f_cp=fai.f_cp;printf(复制成功n);getchar();getchar();void modifyfile() /*修改属性操作*/int status=0,a,i,j,check;char choice,name8,pin8;while(1)printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 修改属性 *n); printf(* * * * * * * * *

23、 * * * * * * * * * * * * * * * * * * *n);if(x=1) printf(请输入所要修改属性的文件的名称:n); scanf(%s,name); getchar();for( i=0;i8;i+)for(j=0;j8;j+) pinj=fai.f_namej;check=strcmp(pin,name); if (check!=0) elseprintf(n); printf(请选择文件属性:);while(1) scanf(%d,&a);getchar(); if(x=1|x=2) break; else printf(错误! 请重新输入:n);fai.

24、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;i8;i+)for(j=0;j8;j+) pinj=fgi.f_nam

25、ej;check=strcmp(pin,name); if (check!=0) elseprintf(n); printf(请选择文件属性:);while(1) scanf(%d,&a);getchar(); if(x=1|x=2) break; else printf(错误! 请重新输入:n);fgi.att=a;printf(修改属性成功.n);break;if(i=7)status=1;break; /*获取文件的状态*/if(status=1)printf(错误! 文件不存在!);getchar();printf(是否重新输入?(Y - N)n);scanf(%c,&choice);

26、getchar();if(choice=N|choice=n)break;getchar();void catalogue() /*目录管理子程序*/int x,a=1;char name8;while(a) /*目录管理操作*/ printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 目录管理 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( 1.显示目录 6.退出目录n);printf(*

27、* * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请选择:);scanf(%d,&x);while(x2)printf(n错误! 请重新输入:);scanf(%d,&x);switch(x) case 1: /*显示目录操作*/ system(cls);printf(n请输入所要显示的文件目录:n);scanf(%s,name);printf(n%s的文件目录为:n,name);if(x=1)printf(n Administrator/%s 文件,name);if(x=2)printf(n Guest/%s 文件,n

28、ame);a=0;getchar();break;case 2: /*退出目录管理操作*/system(cls);getchar();a=0;break; getchar();break;int init() /*初始化操作界面函数*/int i;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); /*选择相应的序号,执行相应的操作*/void main()int flag=1,i;check(); while(flag) /*初始化系统界面*/if(x=3) exit(0)

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号