管理实验任务书.doc_第1页
管理实验任务书.doc_第2页
管理实验任务书.doc_第3页
管理实验任务书.doc_第4页
管理实验任务书.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 目目 录录 摘 要 1 前 言 2 正 文 3 1 1 设计思想设计思想 3 2 2 各模块伪码算各模块伪码算 4 3 3 函数调用关系图函数调用关系图 7 4 4 测试结果测试结果 10 设计总结 14 参考文献 15 致谢 16 附 源代码 17 2 摘摘 要要 文件管理是操作系统的一个极为重要的组成部分 文件系统提供给用户一 组系统调用 包括建立 打开 关闭 读 写和撤销等 通过这些系统调用用 户能获得文件系统的各种服务 对文件必须设置保护措施 如允许执行 允许 读 允许写等 在每次打开文件时 根据本次打开的要求 再次设置保护级别 即可有二级保护 关键字 文件 系统调用 保护措施 3 前前 言言 在现代计算机系统中 用户的程序和数据 操作系统自身的程序和数据 甚至各种输入输出设备都是以文件形式出现的 尽管文件有多种存储介质可以 使用 如 硬盘 软盘 光盘 闪存 记忆棒等 但是 它们都以文件的形式 出现在操作系统的管理者和用户面前 所以文件管理系统是操作系统中一项重 要的功能 文件系统就是操作系统中统一管理信息资源的一种软件 它管理文 件的存储 检索 更新 提供更安全可靠的共享和保护手段 并且方便用户使 用 4 正正 文文 1 设计思想 1 在实验中设计一个 10 个用户的文件系统 每个用户最多可保存 10 个文 件 一次运行中用户可打开 1 个文件 2 程序采用二级文件目录 即设置了主文件目录 MFD 和用户文件目录 UFD 前者应包含文件主 即用户 及他们的目录区指针 后者应给 出每个文件主占有的文件目录 即文件名 保护码 文件长度以及它们 存放的位置等 另外为打开文件设置了运行文件目录 AFD 在文件打 开时应填入打开文件号 本次打开保护码和读写指针等 3 为了便于实现 对文件的读写作了简化 在执行读写命令时 只修改读 写指针 并不实际读写 4 指令系统如表 1 所示 表 1 指令系统 序号指令说 明 1shutdown 退出文件 2dir 列出用户的文件目录 4create 建立文件 5delete 删除文件 6open 打开文件 7close 关闭文件 8read 读文件 9write 写文件 2 各模块伪码算 1 建立文件模块伪码 void CreateFiles 建立文件 char choice int i 5 int temp int for i 0 i Number Files i if UFD i Length File 1 break if i Number Files cout Error Number Files 文件已经存在 endl else Create 建立新文件 2 删除文件模块伪码 void DeleteFile 删除文件 int i string temp cout temp 查找要删除的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 没有找到这个文件名 请重新尝试 endl else 成功找到文件 UFD i Length File 1 删除文件 cout Ok UFD i File Name 文件成功删除 endl 3 打开文件模块伪码 void OpenFile 打开文件 char choice int i int temp int string temp if Number Open Files MaxNumber Open Files cout 文件已经被打开了 endl else 6 Open 4 关闭文件模块伪码 void CloseFile 关闭文件 int i int temp int string temp cout temp 查找要关闭的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 文件不存在 请重新尝试 endl else Close 5 读文件模块伪码 void ReadFile 读文件 int i int temp int string temp cout temp 查找要读的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 没有找到该文件 请重新尝试 endl else Read 6 写文件模块伪码 void WriteFile 写文件 7 int i int temp int string temp cout temp 查找要写的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 没有找到该文件 请重新尝试 endl else 找到了这个文件 Write 3 函数调用关系图 1 operation 模块流程图 如图 1 否 是 operation 输入用户名 查找用户名 输入操作指 令 判断指令 退出系统 删除文件 打开文件 啊 关闭文件 读文件 写文件 文件列表 建立文件 结束 main 初始化 Initial 8 图 1 operation 模块流程图 2 建立文件模块流程图 如图 2 否 是 图 2 建立文件模块流程图 3 打开文件模块流程图 如图 3 是 否 否 是 图 3 打开文件模块流程图 开始 判断是否有空 文件项 读入文件名 读入保护码 读入问价长度 结束 用户文件目录满 开始 文件系统是否已满 输入文件名 是否在文件目录中 打开文件 结束 不能建立文件 9 4 删除文件模块流程图 如图 4 是 否 图 4 删除文件模块流程图 5 关闭文件模块流程图 如图 5 否 是 是 否 图 5 关闭文件模块流程图 开始 输入文件名 判断文件 是否存在 删除 错误信息 结束 开始 输入文件名 文件是否存在 错误信息 文件是否处于执 行状态 不能关闭 文件关闭 结束 10 6 读 写文件模块流程图 如图 6 否 是 否 是 否 是 图 6 读 写文件模块流程图 4 测试结果 1 operation 运行结果 如图 7 开始 输入文件名 文件是否在用 户列表中 文件是否在 运行 保护码是否允 许读 写操作 读 写操作 结束 文件名错误 文件没有被打开 不允许读 写操作 11 图 7 operation 运行结果 2 创建文件测试结果 如图 8 图 8 创建文件测试结果 创建了两个文件 文件管理 文本文档 文件管理 文件可读不 可写 文本文档 文件可写不可读 两文件皆可 Execute 3 显示用户列表 如图 9 图 9 显示用户列表 4 删除文件测试结果 A 删除 文本文档 如图 10 12 图 10 删除 文本文档 B 删除后显示用户列表 如图 11 图 11 11 删除后显示用户列表 5 打开文件测试结果 如图 12 13 图 12 打开文件测试结果 6 读文件测试结果 如图 13 图 14 读文件测试结果 7 写文件测试结果 如图 15 图 15 写文件测试结果 14 设计总结设计总结 在这次操作系统课程设计过程中 我遇到了很多困难 首先是对已学基本 知识的遗忘 生疏和不理解 刚一开始面对这次的任务时的第一感觉是一头雾 水无从着手 通过对所学知识的温习 琢磨和查阅多本相关教科书 终于很艰 难地完成了本次任务 通过这次实战 我理解和掌握了很多以前本该掌握但没 有留意的相关知识 对操作系统中文件系统有了进一步的认识 在这两周的课程设计中 通过查阅相关资料和请教同学解决了很多相关的 问题 最终 设计完成了文件系统实验 它能实现一些简单 基本的要求 比 如 文件的建立 删除 打开 关闭 读与写等 但与现实需要还有很大的差 距 对于一些较高的要求未能实现 这都是由于自身能力和所掌握知识具有很 大的局限性 究其根本还是自己对专业知识的不重视以及平时学习的不认真 通过这次小小的实战演练 让我对自己有了充分的认识 在以后的学习中必须 严格地要求自己 百尺竿头更进一步 经过本次课程设计 使我更加体会了把基础知识与实际问题相联系 运用 课本中理论知识去解决一些实际问题这一道理 这样才达到了这门课的实际要 求 其次就是独立思考和不懂就问也是解决问题的必要元素 在以后的课设中 我会继续充分利用它来提高自己的知识储存量和解决问题的能力 15 参考文献参考文献 1 陈维兴 林小茶 C 面向对象程序设计教程 清华大学出版社 2 李翠霞 零基础学 VC 机械工业出版社 3 王旭阳 李睿 操作系统原理 国防工业出版社 4 汤子瀛 哲凤屏 计算机操作系统 西安电子科技大学学出版社 5 王清 李光明 计算机操作系统 冶金工业出版社 6 孙钟秀等 操作系统教程 高等教育出版社 8 张丽芬 刘利雄 操作系统实验教程 清华大学出版社 9 孟静 操作系统教程 原理和实例分析 高等教育出版社 16 致谢致谢 通过两周的课程设计学习 使我收益匪浅感慨良多 首先我要感谢学校给 我们安排的这次操作系统课程设计实习 然后我更要感谢老师们对我热心的指 导和帮助 是他们用知识哺育了我空洞而干瘪的思想 其次是感谢帮助我完成 课程设计的同学 再一次衷心的发自肺腑的感谢 17 附 源代码附 源代码 include include include using namespace std struct TYPE UFD 用户文件目录 stringFile Name 文件名 boolRead 读保护码 true 为可读 boolWrite 写保护码 true 为可写 boolExecute 执行保护码 true 为可执行 int Length File 文件长度 struct TYPE MFD 主文件目录 stringUser Name 用户名 TYPE UFD Pointer 用户文件目录指针 struct TYPE AFD 打开文件目录 int File ID 打开的文件号 boolRead 读保护码 true 为可读 boolWrite 写保护码 true 为可写 boolExecute 执行保护码 true 为可执行 int Pointer 读写指针 class FileManagement private int Number Users 用户的数量 int Number Files 每个用户可保存的文件数 int MaxNumber Open Files 每个用户在每次执行中打开的最大文件数 TYPE MFD MFD 主文件目录 TYPE UFD UFD 用户文件目录 TYPE AFD AFD 运行文件目录 public 18 void Initial Number Users 10 Number Files 10 MaxNumber Open Files 1 UFD new TYPE UFD Number Users Number Files UFD 的初始化 MFD new TYPE MFD Number Users MFD 的初始化 for int i 0 i Number Users i MFD i Pointer AFD new TYPE AFD MaxNumber Open Files AFD 的初始化 MFD 0 User Name qlx UFD 0 File Name qlx1 txt UFD 0 Length File 10 UFD 0 Read true UFD 0 Write false UFD 0 Execute true UFD 1 File Name qlx2 txt UFD 1 Length File 20 UFD 1 Read true UFD 1 Write false UFD 1 Execute false for i 2 i Number Files i UFD i File Name UFD i Length File 1 表示没有文件 UFD i Read false UFD i Write false UFD i Execute false void operation int i int User ID int Number Open Files 当前用户打开的文件数 string User Name 当前登录的有户名 TYPE UFD UFD 当前登录的用户的文件目录 19 do 用户登录 cout User Name 在 MFD 中查找该用户 for User ID 0 User ID Number Users User ID if MFD User ID User Name User Name break if User ID Number Users cout 用户名不正确 请重新输入 endl while User ID Number Users cout Ok 欢迎登录文件管理系统 User Name endl UFD MFD User ID Pointer 初始化运行文件列表 for i 0 i MaxNumber Open Files i AFD i File ID 1 Number Open Files 0 while 1 cout n cout 文件管理系统 n cout n cout 1 创建文件 2 删除文件 3 打开文件 4 关闭文件 n cout 5 读文件 6 写文件 7 显示用户列表 8 退出系统 n cout n cout i switch i case 1 CreateFiles break case 2 DeleteFiles break case 3 OpenFiles break case 4 CloseFiles break case 5 ReadFiles break case 6 WriteFiles break 20 case 7 DirUser break case 8 return default cout 选择错误 请重新选择 void CreateFiles 建立文件 char choice int i int temp int string temp for i 0 i Number Files i if UFD i Length File 1 break if i Number Files cout Error Number Files 文件已经存在 endl else cout temp UFD i File Name temp cout Read y n read do choice getch while choice y if choice y UFD i Read true else UFD i Read false cout endl cout Write y n write do choice getch while choice y if choice y 21 UFD i Write true else UFD i Write false cout endl cout Execute y n execute do choice getch while choice y if choice y UFD i Execute true else UFD i Execute false cout endl cout temp int if temp int 0 UFD i Length File temp int cout Ok 新文件 UFD i File Name 建立完成 endl void DeleteFiles 删除文件 int i string temp cout temp 查找要删除的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 没有找到这个文件名 请重新尝试 endl else 成功找到文件 22 UFD i Length File 1 删除文件 cout Ok UFD i File Name 文件成功删除 endl void OpenFiles 打开文件 char choice int i int temp int string temp int Number Open Files 0 当前用户打开的文件数 string User Name 当前登录的有户名 if Number Open Files MaxNumber Open Files cout Error Number Open Files 文件已经被打开了 endl else cout temp 查找要打开的文件名 for i 0 i Number Files i if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 文件没有找到 请重新尝试 endl else Number Open Files for temp int 0 temp int MaxNumber Open Files temp int if AFD temp int File ID 1 break AFD temp int File ID i AFD temp int Pointer 0 cout 请配置开放模式 endl if UFD i Read true read cout Read y n do 23 choice getch while choice y if choice y AFD temp int Read true else AFD temp int Read false cout endl else AFD temp int Read false if UFD i Write true write cout Write y n do choice getch while choice y if choice y AFD temp int Write true else AFD temp int Write false cout endl else AFD temp int Write false if UFD i Execute true execute cout Execute y n do choice getch while choice y if choice y AFD temp int Execute true else AFD temp int Execute false cout endl else 24 AFD temp int Execute cout Ok temp 文件成功打开 endl void CloseFiles 关闭文件 int i int temp int string temp int Number Open Files 0 当前用户打开的文件数 cout temp for i 0 i Number Files i 查找要关闭的文件名 if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 文件不存在 请重新尝试 endl else 找到了这个文件 for temp int 0 temp int MaxNumber Open Files temp int if AFD temp int File ID i break if temp int MaxNumber Open Files 该文件没有处于执行状态 cout 文件 temp 不能被打开 endl else 该文件处于执行状态 AFD temp int File ID 1 Number Open Files cout Ok temp 文件被关闭 endl 25 void ReadFiles 读文件 int i int temp int string temp cout temp for i 0 i Number Files i 查找要读的文件名 if UFD i Length File 1 if i Number Files 没找到这个文件名的文件 cout 没有找到该文件 请重新尝试 endl else 找到了这个文件 for temp int 0 temp int MaxNumber Open Files temp int if AFD temp int File ID i break if temp int MaxNumber Open Files 该文件没有处于执行状态 cout 文件 temp 不能被打开 endl else 该文件处于执行状态 if AFD temp int Read tr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论