设计一个linux二级文件系统,操作系统课程设计 为Linux系统设计一个简单的二级文件系统...

《操作系统课程设计 为Linux系统设计一个简单的二级文件系统》由会员分享,可在线阅读,更多相关《操作系统课程设计 为Linux系统设计一个简单的二级文件系统(24页珍藏版)》请在人人文库网上搜索。

1、操作系统课程设计报告 题目: 为Linux系统设计一个简单的二级文件系统 指导老师: 时间:2012.8.30 一 课程设计的目的 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 二 课程设计的要求 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read。

2、 读文件 write 写文件 2列目录时要列出文件名,物理地址,保护码和文件长度 3源文件可以进行读写保护 三 算法设计 本次二级文件系统主要分为五大模块,分别是用户登录模块、新建目录模块、新建文件模块、删除文件模块和读取文件模块。用户登录成功后才可以进行其他模块的操作。 1 用户登录模块 用户登录模块要求用户输入用户,当输入正确后才能进行其他模块操作,否则提示用户名不存在并询问用户是否用此名进行注册。若用户名未满,则提示注册成功,否则提示用现有注册用户,进行登录,并返回到登录界面。用户登录模块流程图如图1所示。 开始 命输入login 否 输入用户 是 用户是否存在 是否注册 否 是 进行其。

3、他模块图1 用户登录模块流程图 2新建文件模块 新建文件模块是在用户出入create指令后进行的,进入后会要求用户输入文件名,并判断文件名是否存在,若没有则在要求用户输入文件读写权限,否则重新输入新的文件名。新建文件模块流程图如图2所示。 开creat命输 输入文件文件名是否存 否 输入权限 图2 新建文件流程图 3 删除文件模块 删除文件模块是根据用户鼠标右击时选择到的节点来确定要删除节点的名字与路径,然后判断该节点是目录还是文件。若是文件则直接删除文件,若是目录则进入该目录再删除其全部文件。删除文件模块流程图如图4所示。 开始 文件名输如open 文件名是否存在 提示无此文件 否 是 输入。

4、权限4 删除文件模块流程图图 4读取文件模块 读取将磁盘中的内容读取到内存中。读取文件模块, 要求用户要在文件打开的前提下, 所示。文件流程图如图5开Open文文件输read文件是否存 文件是否已打提示文件未 显示文件内容 图5 读取文件模块流程图5 写入文件模块 写入文件模块,思路与读取文件模块将本相同,只是添加了对读写权限的判断。 6 遍历文件 遍历文件,根据在用户登陆时,记录的值,在二维数组中,找到用户的所有文件对象,将相应的必须属性全部打印出来。 四 程序源代码 1. 文件对象相关代码 package com.file; import java.io.Serializable; pub。

5、lic class FilePro implements Serializable String filename; String content ; ; usernameString ; flag int; protectint protect) flag,intpublic FilePro(String filename,String username,String content, int = filename; filename this . = username; username this.this.content = content; this.flag = flag; this。

6、. protect = protect; 2. 文件读写操作 package com.file; import java.io.*; import java.util.*; public class FileCon Object data = new Object7100; ObjectInputStream in = null; ObjectOutputStream out = null; String path = ?尺屜晜汩履 ; public FileCon() for(int i = 0;i list = new ArrayList(); ObjectInputStream in =。

7、 null; ObjectOutputStream out = null; String path = ?尺屜甥敳屲; public List readUser() try in = new ObjectInputStream(new BufferedInputStream( new FileInputStream(path); list = (List) in .readObject(); catch(EOFException e) catch (Exception e) return list ; writeUser(List list) public void try); new Fil。

8、eOutputStream(path BufferedOutputStream( ObjectOutputStream(out = newnew.writeObject(list); out .flush(); out catch (Exception e) e.printStackTrace(); 4.主程序 package com.file; import java.util.*; public class FileSystem Object data = new Object7100; FileCon fc = new FileCon(); List user = new ArrayLi。

9、st(); UserCon uc = new UserCon(); String2; new = cmdString = 0; currentuser int FileSystem() public.readData(); = datafc .readUser(); uc = user public static void main(String args) FileSystem fs = new FileSystem(); fs.help(); public void help() System.out.println( 欢迎使用该文件系统); System.out.print(捜敲瑡?);。

10、 System.out.println(创建文件 ); System.out.print(摜物?); System.out.println(列目录文件 ); System.out.println(exit 退出系统 ); System.out.println( 以下命令需加文件名); System.out.println( eg :灯湥?); System.out.print( 潜数?); System.out.println( 打开文件); System.out .print(捜潬敳?); System.out.println(关闭文件 ); System.out .print(牜慥?); 。

11、System. out.println( 读文件); System.out.print( 睜楲整?); System.out.println( 写文件 ); System.out .print( 摜汥瑥?); System.out .println(删除文件); command(); public void command() System.out .print(牜潯?尾); String comd = null ; Scanner input = input = new Scanner(System.in); comd = input.nextLine(); String cmd = new。

12、 String2; cmd = comd.split( ? ); if (cmd0.equals( 汜杯湩 ) login(); else if (cmd0.equals(捜敲瑡履) create(); else if (cmd0.equals(摜物) dir(); else if (cmd0.equals(摜汥瑥履) delete(cmd1); else if (cmd0.equals(潜数屮) open(cmd1); else if (cmd0.equals(捜潬敳) close(cmd1); else if (cmd0.equals(牜慥層 ) read(cmd1); else if (。

13、cmd0.equals( 睜楲整) write(cmd1); else if (cmd0.equals(敜楸屴) System. out.println( 退出系统!); System. exit(0); else System.out.println( 指令错误!); command(); public void login() boolean f = false; System.out.println(请输入用户名: ); Scanner input = input = new Scanner(System. in ); String username = input.next(); fo。

14、r (int i = 0; i user.size(); i+) if ( user .get(i).equals(username) System.out .println( 登陆成功! ); currentuser = i; f = true ; break ; if (!f) System.out.println(该用户不存在,是否以此用户名注册? y注册,其他返回 ); String cho = input.next(); if (cho.equals(祜 ) if ( user.size() = 7) System.out.println( 对不起用户已满, 请利用其他已注册账户登录。

15、); else user.add(username); uc .writeUser( user ); ); 注册成功!请重新登录 .println(out System. login(); command(); / 目录 dir() public void); + 文件长度用户名屜屴 + 物理地址屜屴 + 保护码屜屴屜屴System. out.println(文件名 + i = 0; i 100; i+) int for (i; currentuserdata FilePro fp1 = (FilePro) ) .equals( if (!fp1.filename 屜瑜屜瑜out.printl。

16、n(fp1.filename + + fp1.username + System. + currentuser + i + 屜瑜 + fp1. protect屜瑜 + .length(); + fp1. content command(); 创建文件/ create() public void ); innew Scanner input = input = Scanner(System. ; true f = boolean; false fl = boolean ; String filename = null do; false fl = System.out.print( 请输入文加名。

17、:); filename = input.next(); for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) data currentuser i; if (fp1. filename .equals(filename) System.out .println( 文件已存在! ); fl = true ; break ; while(fl); System.out .print(请输入权限:); int protect = input.nextInt(); FilePro fp = new FilePro(filename, user.get(。

18、 currentuser), , 1, protect); for (int i = 0; i 100; i+) i; currentuserdataFilePro fp1 = (FilePro) if (fp1.filename.equals() data currentuseri = fp; fc .writeData( data ); System.out.println( 创建成功! ); f = false ; break ; if (f) System.out.println( 磁盘已满); command(); / 删除文件 public void delete(String f。

19、ile) boolean f = true; for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuseri; if (fp1.filename .equals(file) fp1.filename = ; fp1. content = null; fp1. flag = 1; fp1.username = null ; fc.writeData( data); System.out .println( 删除成功! ); f = false ; break ; (f) if ); System. out 无此文件 .pri。

20、ntln( command(); / 打开文件 public void open(String file) boolean f = true; for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) data currentuseri; if (fp1. filename.equals(file) if (fp1. flag = 0) ); 文件已打开!.println(outSystem. else fp1. flag = 0; System.out.println( 文件打开成功! ); ; falsef = ; break if (f) Sy。

21、stem. out.println(无此文件); command(); / 关闭文件 public void close(String file) boolean f = true; for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuser i; if (fp1.filename .equals(file) if (fp1.flag = 1) System.out.println( 文件未打开! ); else fp1. flag = 1; System.out.println( 文件关闭成功! ); ; falsef。

22、 = ; break (f) if); .println( System. out 无此文件 command(); / 读文件 public void read(String file) boolean f = true ; for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) datacurrentuser i; if (fp1. filename.equals(file) if (fp1. flag = 1) ); 文件未打开!请先将文件打开!.println(outSystem. else System.out.println(fp1. c。

23、ontent ); ; falsef = ; break if (f) System.out.println( 无此文件); command(); / 写文件 public void write(String file) Scanner input = input = new Scanner(System.in); boolean f = true; for (int i = 0; i 100; i+) FilePro fp1 = (FilePro) data currentuseri; if (fp1.filename .equals(file) if (fp1. flag = 1) Sys。

24、tem. out.println( 文件未打开!请先将文件打开! ); else if (fp1.protect != 0) System.out .println( 对不起,您没有写入的权限! ); else System. out.println( 请输入要写入的内容: ); String ss = input.next(); fp1.content = fp1.content + ss; fc .writeData( data ); System.out .println( 写入成功); ; false f = ; break (f) if ); .println(out System.无此文件 command(); 五 程序运行截图 六 心得体会 对于本次操作系统课程设,由于对二级文件的内容比较陌生,刚起步阶段花了很大时间去思考,但是仍然还是比较模糊。当完成设计时,感觉还是不是太了解,总感觉得到的和要求的有些差别,不过对二级文件系统也有了进一步的了解,并且还对操作系统应用有了更深入的认识。总体来说,这次课程下来,发现自己的,语言基础掌握的一点也不好,让我遇到了许多的问题。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统课程设计设计题目】 二级文件系统设计 【开发语言及实现平台或实验环境】 C++/VC++ 【设计目的】 (1)本实验的目的是通过一个简单多用户文件系统设计,加深理解文件系统的内部功能和内部实现。 (2)结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 (3)通过分对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计要求】 理解二级目录的文件系统的组织;掌握用的数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件;使用文件模拟外存,进行数据结构设计和操作算法的设计实现一个文件系统实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、 对程序的每一部分要有详细的设计分析说明 2、 程序执行的每个步骤要有具体的提示内容或输出 3、 源代码格式规范,注释不少于四分之一 4、 设计合适的测试用例,对得到的运行结果要有分析, 5、 设计中遇到的问题,设计的心得体会 6、 提交完整程序代码、课程设计报告及相关文档 【设计原理】 对采用二级文件目录的文件系统工作的机理了如指掌,对文件系统的相关操作要掌握。 【设计内容】 一、 任务 为Linux系统设计一个简单二级文件系统要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 二、 程序设计 1. 设计思想 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 2. 主要数据结构和部分代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值