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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统课程设计.docx

1、操作系统课程设计计算机系课程设计实 验 报 告 课程名称 操作系统课程设计 实验学期 2012 至 2013 学年 第 1 学期 学生所在系部 计算机与信息管理系 年级 2010 专业班级 计算机002 学生姓名 牛子 学号 100000 任课教师 实验成绩 计算机系制一个简单的文件系统的详细设计一、实验目的(1)阅读并调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。(2)了解设计一个n个用户的文件系统,每个用户可以保存M个文件。用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有create、delete、open、c

2、lose、read、write等命令。二、实验要求1、阅读所给文件系统源程序,并加注释(注释量达60%),2、修改、完善该系统,画出所设计的文件系统的详细流程图。三、文件系统功能设计1. 功能设计该文件系统是一个多用户、多任务的文件系统。对用户和用户的文件数目并没有上限。也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目并不做任何的限制。该系统可以支持的操作命令如下: bye用户注销命令。当使用该命令时,用户退出系统,注销该用户功能设计并回到登陆界面。 命令格式: bye close删除用户注册信息命令。执行该命令后,用户在系统中的所有信息,包括该用户目录下的所有文件都被删除。命令执

3、行完成后返回登陆界面。命令格式:close create在当前目录下创建一个文件,且该文件不能跟当前已有的文件重名。该文件的管理信息登记在用户文件信息管理模块中。执行完该命令后回到执行命令行。命令格式:createfile1其中:“”符为提示符,file1为要创建的文件名。 delete删除当前用户目录下的一个文件,命令执行完毕返回至命令行。命令格式:deletefile1 其中:file1为要删除的文件名。 list显示当前注册目录下的所有文件信息,包括文件名、文件长度、文件操作权限。命令格式:list chmod改变某个文件的执行权限,但前提是该文件是该用户目录下的文件。命令格式:chmo

4、dfile1。其中:file1为要授权的文件名。 open在window界面下打开某个文件。执行该命令后,文件file1将用在windows界面下的文件形式打开。用户可以在这个方式中对文件进行修改,并将修改后的内容保存。命令格式:openfile1其中:file1为要打开的文件名。 read读文件信息。将文件信息读入并显示在终端上。命令格式:readfile1其中:file1为要读的文件名。 write向某个文件写入新的信息。用户可以选择用覆盖原来内容的方式或和在文件的末尾追加新信息的方式写入信息。 当要退出时输入“#”即可。(2)系统采用二级文件目录。设置主目录(MFD)和用户文件目录(UF

5、D),分别以文件的方式保存在磁盘中。在主目录中有注册用户的用户名和另一标志该用户目录下是否有文件的指针标记。用户文件目录采用用户名作为文件名保存于磁盘,以便检索时方便对应。在用户文件目录中保存着该目录下所有文件的文件名称、保护码、文件长度。(3)该系统大量使用高级语言中的文件操作函数,所以能实际看到文件的创建、写入、读出、删除等效果。2. 功能设计实现总体流程3. 主要数据结构 4. 主要功能模块四、文件系统功能模块详细设计流程图1. int LoginDisplay() /登陆选项操作函数2. bool Login(int SELETE)/用户登陆,注册函数3. void DisplayUF

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

7、 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. void Execute(int i,int len,int cmdset)/执行命令函数答:1

8、8. void Command()/读取用户输入的命令,并将其转换成系统能识别的命令五、实验运行结果1.登陆界面2.用户注册3.用户登陆4创建用户文件5显示当前注册用户目录下的所有文件信息6.在windows界面下打开文件7向文件中写入信息(1)以覆盖的模式写入(2)在原文件末尾写入7.读取文件信息8.改变该文件的权限修改读权限后另一用户yinhuanwen读取该文件显示为其他用户无法读取改文件9.删除当前用户下的一个文件10删除用户信息11.注销用户,返回登陆界面六、系统改进的设想与实现1、修改内容说明(1)用户注销功能无法正常实现,缺少调用函数。(2)系统完善补充:(3)漏洞补充2、实现程

9、序(用小六字体打印)。修改了不对称的花括号;修改前:case 1: /退出 ByeFile(true); system(cls); 修改后: case 1: /退出 ByeFile(true); while(1) int SELETE = LoginDisplay();/用户登录选项函数 if(SELETE=0)/如果用户输入命令是0则,退出系统 exit(0); bool BOOL = Login(SELETE); /用户登陆,或者注册函数 if(BOOL) KeyWord(); /初始化命令关键字 DisplayUFD(); /打印用户目录下的文件目录 Command(); /命令行操作

10、注:Command函数需要在开头声明。 (2)修改前:do cout *请选择操作*n1、用户登陆 2、用户注册 0、退出SELETE_1; while(SELETE_12);修改后:do cout *请选择操作*n1、用户登陆 2、用户注册 0、退出SELETE_1; if(SELETE_12) cout 请输入0-2之间的数字!endl; while(SELETE_12);七、实验成绩成绩分配:1. 实验报告:共 60分(内容正确 40分,流程图规范20分 ),发现雷同,抄者和被抄者一律都不给分。2. 实验检查:共 40分(抽答2题,每题10分,改进20分)。3. 两人一组,彼此要了解对方

11、的内容。成绩不及格者给一次补的机会。详细程序:w /* * 文件名: 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;/存放当前登陆的用户名 char cf; typed

12、ef 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 M

13、FD;/ void main(); void KeyWord(); int LoginDisplay(); bool Login(int SELETE); void DisplayUFD(); void ByeFile(bool BOOL); bool ClearUserFile(); void ClearUserMes(); void DeleteUser(); void CreatFile(); void DeleteFile(); void ListAllFile(); void WriteLengthToFile(int Len,bool BOOL); void OpenFile();

14、 bool QueryModElse(bool BOOL,bool &flag); bool QueryMod(bool BOOL); bool WriteRight(int len,bool BOOL); void WriteFile(); void ReadFile(); void ChangeMod(); void Execute(int i,int len,int cmdset); void Command(); void main() while(1) int SELETE = LoginDisplay(); if(SELETE=0) exit(0); bool BOOL = Log

15、in(SELETE); /用户登陆,或者注册函数 if(BOOL) KeyWord(); /初始化命令关键字 DisplayUFD(); /打印用户目录下的文件 Command(); /命令行操作 /- void KeyWord()/初始化命令关键字 strcpy(KWORD 1,bye); strcpy(KWORD 2,chmod); /将命令字符放入字符数组kword中 strcpy(KWORD 3,close); strcpy(KWORD 4,create); strcpy(KWORD 5,delete); strcpy(KWORD 6,list); strcpy(KWORD 7,ope

16、n); strcpy(KWORD 8,read); strcpy(KWORD 9,write); /- int LoginDisplay() /登陆选项操作函数 int SELETE_1 = 0; do cout *请选择操作*n1、用户登陆 2、用户注册 0、退出SELETE_1;if(SELETE_12) cout 请输入0-2之间的数字!endl; while(SELETE_12); /当输入数非0,1,2进行循环 system(cls); /清屏 return SELETE_1; /- bool Login(int SELETE)/用户登陆,注册函数 FILE *fp,*fp1,*fp

17、2; char name12; switch(SELETE) case 1:/用户登陆 if(fp = fopen(LOGIN.exe,rb) = NULL)/打开用户注册目录管理文件 coutn错误:不能打开登陆文件。endl; coutn输入任意键继续endl; getch();system(cls); return false; curuser = getspace(MFD); /curuser申请等同于MFD结构所占大小的空间 coutname; /输入用户登陆名 while(!feof(fp) /检查该用户是否合法 fread(curuser,sizeof(MFD),1,fp); /

18、从fp中读取MFD空间大小的1个元素放入curuser中的username if(strcmp(curuser-username,name)=0) /比较curuser中的username和name,如果相同返回 break; if(feof(fp) /如果没有找到跟当前登陆用户名相同的管理信息,提示出错 coutn错误:该用户不存在。endl; fclose(fp); return false; else /如果找到跟当前登陆用户名相同的管理信息,返回 true fclose(fp); return true; break; case 2: /新用户注册 if(fp=fopen(LOGIN.

19、exe,ab)=NULL)/如果登陆信息管理文件不存在 fp=fopen(LOGIN.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该用户已

20、经存在,按任意键重新输入!username,name); /将输入的名称放入curuser-username curuser-filepoint = NULL; /初始化当前MFD指针 fwrite(curuser,sizeof(MFD),1,fp); /给文件写入当前输入的名称 strcpy(user,curuser-username); /生成用户文件管理模块 strcat(user,.exe); /用于管理用户目录下的各个文件 fp2=fopen(user,wb+); fclose(fp2); coutn注册成功!endl; /提示注册成功 fclose(fp1); fclose(fp)

21、; break; if(cf=#) cf=#; system(cls); return 0; 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); if(fp=fopen(filename,rb)=NULL) /打开用

22、户文件信息管理模块 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; fclose(fp); /- void ByeFile(bool BOOL)/注销函数,调用次函数用户可以退出系统 FILE *infile,*outfile; char out50; strcpy(out,outfilelocate.exe); /将要注销后的内容放入out数组中 if(infile=fopen(LOGIN.exe,rb)=NULL) /如果用户为空输出保存错误并返回 coutn保存错误。; /fcl

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

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