版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、xx计算机科学与技术学院 课程设计报告*大学计算机科学与技术学院课程设计报告 ( 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 ; /
3、文件属性 0为只读 1为只写 ; 文件模块示意图: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.at
4、tvoid catalogue()目录管理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
5、 ; / 文件属性 0为只读 1为只写 /用于指向文件内容模块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);
6、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);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创建错误!文件已经存在!);handl
8、e=0;getchar();break; 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
9、.f_namej;check=strcmp(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 print
10、f(错误! 请重新输入:n); break;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(请输入所要删除的文件名
11、称: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=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) /从目录中
12、删除一个文件 strcpy(fai.f_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+)
13、for(j=0;j8;j+) pinj=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)p
14、rintf(n删除错误! 所要删除的文件不存在!);/*文件不存在*/getchar();break;void openfile() /*打开文件操作*/int i,a=0,j,check;char name8,pin8;printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 打开文件 *n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf(请输入您所要打开文件的名称: n);scanf(%s,name
15、);getchar();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(%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)pr
16、intf(文件不存在!);getchar();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)fo
17、r( i=0;i8;i+) /*获取文件的状态,是否存在*/ 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(文件
18、不存在!);getchar();getchar();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;getch
19、ar();getchar(); break;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(请输入要复制的文件的
20、名称:n); scanf(%s,name); 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=
21、0;p8;p+)fak.f_cp=fai.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+) p
22、inl=fgk.f_namel; check=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); print
23、f(* * * * * * * * * * * * * * * * * * * * * * * * * * * *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 print
24、f(错误! 请重新输入:n);fai.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
25、;j+) pinj=fgi.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);fgi.att=a;printf(修改属性成功.n);break;if(i=7)status=1;break; /*获取文件的状态*/if(status=1)printf(错误! 文件不存在!);getchar();printf(是否重新输入?(y - n)n)
26、;scanf(%c,&choice);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.显示目录
27、 6.退出目录n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * *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)pri
28、ntf(n guest/%s 文件,name);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
29、(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);i=init(); getchar(); switch(i) case 1: /*创建文件*/system(cls);createfile();system(cls);break; case 2: /*删除文件*/system(cls);deletefile(); system(cls);break; case 3: /*打开文件*/system(cls);openfile();system(cls); break; case 4: /*写文件*/system(cls);writefile();system(cls); break; case 5: /拷贝文件 s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基因组稳定性与衰老进程的关系研究
- 建筑项目全过程造价控制服务方案
- 创业孵化器意识形态青年培养方案
- 双减政策下特殊教育语文作业方案
- 2024至2030年中国铝塑节能窗数据监测研究报告
- 旅游行业复苏后的团体活动管理方案
- 2024至2030年中国滚塑挡泥板数据监测研究报告
- 2024至2030年中国泡椒豆干数据监测研究报告
- 2024至2030年中国栗子酱行业投资前景及策略咨询研究报告
- 2024至2030年竹锅垫项目投资价值分析报告
- 人力资源管理师(三级)课件合集
- 辽宁省抚顺市2024-2025学年人教版八年级上册数学期中模拟试题(含答案)
- 标志设计 课件 2024-2025学年人教版(2024)初中美术七年级上册
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- JT-T-617.1-2018危险货物道路运输规则第1部分:通则
- 教育新篇章:数字化转型
- 个人住房贷款提前还款月供及节省利息EXCEL计算
- GA/T 1073-2013生物样品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、异丙醇和正丁醇的顶空-气相色谱检验方法
- 成功从这里开始---自律 主持人发言稿
- 设备安装、调试、测试、验收和施工方案(完整版)
评论
0/150
提交评论