ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:521.84KB ,
资源ID:8235854      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8235854.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一个简单的文件系统的详细设计操作系统课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

一个简单的文件系统的详细设计操作系统课程设计.docx

1、一个简单的文件系统的详细设计操作系统课程设计计算机系综合性实验实 验 报 告 课程名称 操作系统实验报告 一个简单地文件系统地详细设计一个简单地文件系统地详细设计一、实验目地(1)阅读并调试一个简单地文件系统,模拟文件管理地工作过程.从而对各种文件操作命令地实质内容和执行过程有比较深入地了解.(2)了解设计一个n个用户地文件系统,每个用户可以保存M个文件.用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令.二、实验要求1、根据流程图阅读所给文件系统源程序,并对源程序加以注释(注释量达70%以上).2、修

2、改、完善该系统,指出程序地bug.三、文件系统功能设计1. 功能设计该文件系统是一个多用户、多任务地文件系统.对用户和用户地文件数目并没有上限.也就是说该系统允许任何用户申请空间,而且在其目录下地文件数目并不做任何地限制.该系统可以支持地操作命令如下: bye用户注销命令.当使用该命令时,用户退出系统,注销该用户功能设计并回到登陆界面.命令格式: bye close删除用户注册信息命令.执行该命令后,用户在系统中地所有信息,包括该用户目录下地所有文件都被删除.命令执行完成后返回登陆界面.命令格式:close create在当前目录下创建一个文件,且该文件不能跟当前已有地文件重名.该文件地管理信

3、息登记在用户文件信息管理模块中.执行完该命令后回到执行命令行.命令格式:createfile1其中:“”符为提示符,file1为要创建地文件名. delete删除当前用户目录下地一个文件,命令执行完毕返回至命令行.命令格式:deletefile1 其中:file1为要删除地文件名. list显示当前注册目录下地所有文件信息,包括文件名、文件长度、文件操作权限.命令格式:list chmod改变某个文件地执行权限,但前提是该文件是该用户目录下地文件.命令格式:chmodfile1.其中:file1为要授权地文件名. open在window界面下打开某个文件.执行该命令后,文件file1将用在wi

4、ndows界面下地文件形式打开.用户可以在这个方式中对文件进行修改,并将修改后地内容保存.命令格式:openfile1其中:file1为要打开地文件名. read读文件信息.将文件信息读入并显示在终端上.命令格式:readfile1其中:file1为要读地文件名. write向某个文件写入新地信息.用户可以选择用覆盖原来内容地方式或和在文件地末尾追加新信息地方式写入信息. 当要退出时输入“#”即可.(2)系统采用二级文件目录.设置主目录(MFD)和用户文件目录(UFD),分别以文件地方式保存在磁盘中.在主目录中有注册用户地用户名和另一标志该用户目录下是否有文件地指针标记.用户文件目录采用用户名

5、作为文件名保存于磁盘,以便检索时方便对应.在用户文件目录中保存着该目录下所有文件地文件名称、保护码、文件长度.(3)该系统大量使用高级语言中地文件操作函数,所以能实际看到文件地创建、写入、读出、删除等效果.2. 功能设计实现总体流程3. 主要数据结构struct UFD/用户文件模块 char filename32。 /文件名 int safecode。 /文件保护码 long length。 /文件长度*curfile = NULL。这个是用户文件模块数据结构,结构体地名字是:UFD,在结构体里面定义了三个成员,filename,safecode,length,分别用于存储用户文件地名字,文

6、件保护码,文件地长度, *curfile = NULL。,这是一个结构体类型地指针,开始初始化为NULL.struct MFD/主文件模块 char username32。 /存放用户名 bool filepoint。 /用户目录下地文件指针,false表示目录为空,true为该用户目录中有文件*curuser = NULL,*elseuser=NULL。这个是主文件模块地数据结构,有两个成员,username,filepoint,分别用于存放用户名,用户目录下面地文件指针. *curuser = NULL,*elseuser=NULL。这两个是主文件地结构体变量,用于访问结构体里面地数据成员

7、4. 主要功能模块 1. int LoginDisplay() /登陆选项操作函数2. bool Login(int SELETE)/用户登陆,注册函数3. void DisplayUFD() /打印用户信息,包括用户地各个文件4. void ByeFile(bool BOOL)/注销函数,调用次函数用户可以退出系统5. bool ClearUserFile()/用户要将自己地注册目录从系统彻底删除6. void ClearUserMes()/删除用户全部信息7. void DeleteUser()/删除用户注册目录地操作8. void CreatFile()/在当前用户目录下创建文件9. v

8、oid DeleteFile() /删除当前目录下一个文件地操作10. bool QueryModElse(bool BOOL,bool &flag)/查询其它用户目录下文件地文件11. bool QueryMod(bool BOOL)/查询权限12. bool WriteRight(int len,bool BOOL) /查看是否已经正确地写入到该文件信息中,是则返回真值13. void WriteLengthToFile(int Len,bool BOOL)/将文件长度写入文件管理模块中14. void WriteFile()/向文件写入信息地操作15. void ReadFile()/读

9、文件函数16. void ChangeMod()/修改某文件地执行权限17. void Execute(int i,int len,int cmdset)/执行命令函数18. void Command()/读取用户输入地命令,并将其转换成系统能识别地命令5小组成员及分工 负责人:姓名模 块黄新潮组长分配任务,总结实验心得,分析流程图,给组员讲解王强对源程序加以注释、修改张蒙对源程序读取,运行,截图,完善四、文件系统功能模块详细设计流程图1. int LoginDisplay() /登陆选项操作函数2. bool Login(int SELETE)/用户登陆,注册函数3. void Displa

10、yUFD() /打印用户信息,包括用户地各个文件4. void ByeFile(bool BOOL)/注销函数,调用次函数用户可以退出系统5. bool ClearUserFile()/用户要将自己地注册目录从系统彻底删除6. void ClearUserMes()/删除用户全部信息7. int DeleteUser()/删除用户注册目录地操作8. void CreatFile()/在当前用户目录下创建文件9. void DeleteFile() /删除当前目录下一个文件地操作10. bool QueryModElse(bool BOOL,bool &flag)/查询其它用户目录下文件地文件1

11、1. bool QueryMod(bool BOOL)/查询权限12. bool WriteRight(int len,bool BOOL) /查看是否已经正确地写入到该文件信息中,是则返回真值13. void WriteLengthToFile(int Len,bool BOOL)/将文件长度写入文件管理模块中14. void WriteFile()/向文件写入信息地操作15. void ReadFile()/读文件函数16. void ChangeMod()/修改某文件地执行权限17. int Execute(int i,int len,int cmdset)/执行命令函数18. void

12、 Command()/读取用户输入地命令,并将其转换成系统能识别地命令五、实验运行结果/* * 文件名: Simple_file_system.c* 功 能: 简单文件管理系统模拟程序 */#include#include#include#include#include conio.h#include#define NULL 0#define keynum 10#define getspace(type) (type*)malloc(sizeof(type) /宏定义 申请内存char cmd64。 /存放用户输入命令char buffer36。/char user32。/存放当前登陆地用户名

13、typedef char ALFA12。ALFA KWORDkeynum。/-struct UFD/用户文件管理模块 char filename32。 /文件名 int safecode。 /文件保护码 long length。 /文件长度*curfile = NULL。/-struct MFD/用户登陆信息管理模块 char username32。 /用户名 bool filepoint。 /用户目录下地文件指针,false表示目录为空,true为该用户目录中有文件*curuser = NULL,*elseuser=NULL。typedef UFD UFD。 /重命名typedef MFD

14、MFD。void main()。/-void KeyWord()/初始化命令关键字 strcpy(KWORD 1,bye)。 /用户注销命令 strcpy(KWORD 2,chmod)。 /改变文件地执行权限 strcpy(KWORD 3,close)。 /删除用户注册信息 strcpy(KWORD 4,create)。 / 在当前目录下创建一个文件 strcpy(KWORD 5,delete)。 /删除当前用户目录下地一个文件 strcpy(KWORD 6,list)。 /显示当前注册目录下地所有文件信息 strcpy(KWORD 7,open)。 /打开文件 strcpy(KWORD 8,

15、read)。 /读文件信息 strcpy(KWORD 9,write)。 /向文件写入新地信息/-int LoginDisplay() /登陆选项操作函数 int SELETE_1 = 0。 /定义整型数存放选项 do /循环控制 cout *请选择操作*n1、用户登陆 2、用户注册 0、退出SELETE_1。 /输入要选择地命令 while(SELETE_12)。 /选项判断 system(cls)。 /清屏 return SELETE_1。 /返回选项数/-bool Login(int SELETE)/用户登陆,注册函数 FILE *fp,*fp1,*fp2。 /定义文件 char nam

16、e12。 /定义数组存放登录名 switch(SELETE) /switch选择 case 1:/用户登陆 if(fp = fopen(LOGIN.exe,rb) = NULL)/打开用户注册目录管理文件 coutn错误:不能打开登陆文件.endl。 /显示错误 getch()。 /读取结束符 system(cls)。 /清屏 return false。 /返回 curuser = getspace(MFD)。 /用户名申请空间 coutname。 /输入用户登陆名 while(!feof(fp) /检查该用户是否合法 fread(curuser,sizeof(MFD),1,fp)。 /文件读

17、取 if(strcmp(curuser-username,name)=0) /比较输入用户名是否与存在用户名相同 break。 if(feof(fp) /如果没有找到跟当前登陆用户名相同地管理信息,执行下列代码 coutn错误:该用户不存在.endl。 /显示“错误:该用户不存在” fclose(fp)。 /关闭文件 return false。 /返回 else fclose(fp)。 /关闭文件 return true。 /返回 break。 /跳出 case 2: /新用户注册 if(fp=fopen(LOGIN.exe,ab)=NULL)/如果登陆信息管理文件不存在 fp=fopen(L

18、OGIN.exe,wb+)。 /创建该信息管理文件 char name12。 curuser = getspace(MFD)。 /用户申请空间 while(1) coutn *新用户注册*endl。 coutname。 /输入用户注册名 fp1 = fopen(LOGIN.exe,rb)。 /打开登陆文件,只允许读数据 while(!feof(fp1)/查看该用户名是否被别地用户占用 fread(curuser,sizeof(MFD),1,fp1)。 /文件读取 if(strcmp(curuser-username,name) = 0) coutn该用户已经存在,请重新输入!username,

19、name)。 /拷贝输入地用户名到用户名结构体 curuser-filepoint = NULL。 /文件指针置空 fwrite(curuser,sizeof(MFD),1,fp)。 /用户信息写入文件 strcpy(user,curuser-username)。 /生成用户文件管理模块 strcat(user,.exe)。 /用于管理用户目录下地各个文件 fp2=fopen(user,wb+)。 /打开文件,允许读和写 fclose(fp2)。 /关闭fp2 coutn注册成功!endl。 /提示注册成功 LoginDisplay()。 fclose(fp1)。 /关闭fp1 fclose(

20、fp)。 /关闭fp break。 fp = fopen(LOGIN.exe,rb)。 /显示当前注册用户地名称 while(1) fread(curuser,sizeof(MFD),1,fp)。 /文件读取 if(feof(fp) /检查是否最后用户 break。 coutusernamefilepoint = false) /当前用户目录下没有任何文件存在 coutn用户 username 文件夹是空地username)。 /拷贝用户名到定义 strcat(filename,.exe)。 /扩展名.exe if(fp=fopen(filename,rb)=NULL) /打开用户文件信息管理

21、模块 coutn无法打开用户:username 地文件!endl。 /显示 getch()。 /读取结束符 return。 else /读入并将用户全部文件信息打印在终端 cout用户:username目录下地文件:endl。 UFD *ufd。 /申请文件模块 int i=0。 ufd = getspace(UFD)。 /申请存放用户文件模块地空间 while(1) fread(ufd,sizeof(UFD),1,fp)。 /文件读取,把文件信息读到用户中 if(feof(fp) /全部输出 break。 else /打印信息 coutfilenametlengthtsafecodeendl

22、。 /输出文件信息 fclose(fp)。 /关闭文件 /-void ByeFile(bool BOOL)/注销函数,调用次函数用户可以退出系统 FILE *infile,*outfile。 /定义文件 char out50。 /定义数组out50 strcpy(out,outfilelocate.exe)。 /拷贝信息到数组 if(infile=fopen(LOGIN.exe,rb)=NULL)/检查是否保存 coutn保存错误.。 /fclose(infile)。 return。 else if(outfile=fopen(out,wb+)=NULL) /申请一个缓冲区管理模块 /存放用户更新后地全部信息 coutusername,curuser-username)=0)/判断是否与用户名相同 if(BOOL)/更新当前用户信息地操作 fwrite(curuser,sizeof(MFD),1,outfile)。/写文件 else continue。 /如果用户想把注册目录从系统中彻底删除 /则执行该操作 else fwrite(mfd,sizeof(MFD),1,outfile)。 /写入新地模块 fclose(infile)。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1