




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计报告题目: 为Linux系统设计一个简单的二级文件系统 指导老师: 时间:2012.8.30一 课程设计的目的课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。二 课程设计的要求 1.可以实现下列几条命令:login 用户登录dir 列目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写
2、文件2列目录时要列出文件名,物理地址,保护码和文件长度3源文件可以进行读写保护三 算法设计本次二级文件系统主要分为五大模块,分别是用户登录模块、新建目录模块、新建文件模块、删除文件模块和读取文件模块。用户登录成功后才可以进行其他模块的操作。1 用户登录模块 用户登录模块要求用户输入用户,当输入正确后才能进行其他模块操作,否则提示用户名不存在并询问用户是否用此名进行注册。若用户名未满,则提示注册成功,否则提示用现有注册用户,进行登录,并返回到登录界面。用户登录模块流程图如图1所示。开始 输入login命令 否输入用户名是否注册用户是否存在 是 否 是进行其他模块图1 用户登录模块流程图2新建文件
3、模块新建文件模块是在用户出入create指令后进行的,进入后会要求用户输入文件名,并判断文件名是否存在,若没有则在要求用户输入文件读写权限,否则重新输入新的文件名。新建文件模块流程图如图2所示。开始 输入create命令 输入文件名文件名是否存在 是 否输入权限图2 新建文件流程图3 删除文件模块开始删除文件模块是根据用户鼠标右击时选择到的节点来确定要删除节点的名字与路径,然后判断该节点是目录还是文件。若是文件则直接删除文件,若是目录则进入该目录再删除其全部文件。删除文件模块流程图如图4所示。 输如open 文件名 提示无此文件文件名是否存在 否 输入权限 是图4 删除文件模块流程图4读取文件
4、模块开始读取文件模块,要求用户要在文件打开的前提下,将磁盘中的内容读取到内存中。读取文件流程图如图5所示。 Open 文件 输如read 文件名 文件是否存在 是 提示文件未打开文件是否已打开 否显示文件内容图5 读取文件模块流程图5 写入文件模块 写入文件模块,思路与读取文件模块将本相同,只是添加了对读写权限的判断。6 遍历文件遍历文件,根据在用户登陆时,记录的值,在二维数组中,找到用户的所有文件对象,将相应的必须属性全部打印出来。四 程序源代码1. 文件对象相关代码 package com.file;import java.io.Serializable;public class File
5、Pro implements SerializableString filename;String content;String username;int flag;int protect;public FilePro(String filename,String username,String content,int flag,int protect)this.filename = filename;this.username = username;this.content = content;this.flag = flag;tect = protect;2. 文件读写操作
6、 package com.file;import java.io.*;import java.util.*;public class FileCon Object data = new Object7100;ObjectInputStream in = null;ObjectOutputStream out = null;String path = "D:file"public FileCon()for(int i = 0;i<7;i+)for(int j = 0;j<100;j+)dataij = new FilePro("",null,&
7、quot;",1,0);public Object readData()try in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path);data = (Object) in.readObject(); catch(EOFException e) catch (Exception e) return data;public void writeData(Object data)try out = new ObjectOutputStream(new BufferedOutputStream
8、(new FileOutputStream(path);out.writeObject(data);out.flush(); catch (Exception e) e.printStackTrace(); 3.用户名操作public class UserCon List<String> list = new ArrayList<String>();ObjectInputStream in = null;ObjectOutputStream out = null;String path = "D:user"public List<String&
9、gt; readUser()try in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(path);list = (List<String>) in.readObject(); catch(EOFException e) catch (Exception e) return list;public void writeUser(List<String> list)try out = new ObjectOutputStream(new BufferedOutputStream(ne
10、w FileOutputStream(path);out.writeObject(list);out.flush(); catch (Exception e) e.printStackTrace(); 4.主程序package com.file;import java.util.*;public class FileSystem Object data = new Object7100;FileCon fc = new FileCon();List<String> user = new ArrayList<String>();UserCon uc = new UserC
11、on();String cmd = new String2;int currentuser = 0;public FileSystem() data = fc.readData();user = uc.readUser();public static void main(String args) FileSystem fs = new FileSystem();fs.help();public void help() System.out.println("欢迎使用该文件系统");System.out.print("create ");System.ou
12、t.println("创建文件");System.out.print("dir ");System.out.println("列目录文件");System.out.println("exit 退出系统");System.out.println("以下命令需加文件名");System.out.println("eg:open *");System.out.print("open ");System.out.println("打开文件");
13、System.out.print("close ");System.out.println("关闭文件");System.out.print("read ");System.out.println("读文件");System.out.print("write ");System.out.println("写文件");System.out.print("delete ");System.out.println("删除文件");comman
14、d();public void command() System.out.print("root:>");String comd = null;Scanner input = input = new Scanner(System.in);comd = input.nextLine();String cmd = new String2;cmd = comd.split(" ");if (cmd0.equals("login")login();else if (cmd0.equals("create")creat
15、e();else if (cmd0.equals("dir")dir();else if (cmd0.equals("delete")delete(cmd1);else if (cmd0.equals("open")open(cmd1);else if (cmd0.equals("close")close(cmd1);else if (cmd0.equals("read")read(cmd1);else if (cmd0.equals("write")write(cmd1);
16、else if (cmd0.equals("exit")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()
17、;for (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("y") if (user.size() = 7)System.out.prin
18、tln("对不起用户已满,请利用其他已注册账户登录");else user.add(username);uc.writeUser(user);System.out.println("注册成功!请重新登录");login();command();/ 目录public void dir() System.out.println("文件名t" + "用户名t" + "物理地址t" + "保护码t" + "文件长度");for (int i = 0; i <
19、 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (!fp1.filename.equals("")System.out.println(fp1.filename + "t" + fp1.username + "t"+ currentuser + i + "t" + tect + "t"+ fp1.content.length();command();/ 创建文件public void create() Scanner in
20、put = input = new Scanner(System.in);boolean f = true;boolean fl = false;String filename = null;dofl = false; System.out.print("请输入文加名:"); filename = input.next();for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(filename) System.out.println(&
21、quot;文件已存在!");fl = true;break;while(fl);System.out.print("请输入权限:");int protect = input.nextInt();FilePro fp = new FilePro(filename, user.get(currentuser), "", 1,protect);for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals("&q
22、uot;) datacurrentuseri = fp;fc.writeData(data);System.out.println("创建成功!");f = false;break;if (f) System.out.println("磁盘已满");command();/ 删除文件public void delete(String file) boolean f = true;for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.
23、equals(file) fp1.filename = ""fp1.content = null;fp1.flag = 1;fp1.username = null;fc.writeData(data);System.out.println("删除成功!");f = false;break;if (f) System.out.println("无此文件");command();/ 打开文件public void open(String file) boolean f = true;for (int i = 0; i < 100;
24、i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 0)System.out.println("文件已打开!");else fp1.flag = 0;System.out.println("文件打开成功!");f = false;break;if (f) System.out.println("无此文件");command();/ 关闭文件public void close(String file) bool
25、ean f = true;for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 1)System.out.println("文件未打开!");else fp1.flag = 1;System.out.println("文件关闭成功!");f = false;break;if (f) System.out.println("无此文件");command();/ 读文件public void read(String file) boolean f = true;for (int i = 0; i < 100; i+) FilePro fp1 = (FilePro) datacurrentuseri;if (fp1.filename.equals(file) if (fp1.flag = 1)System.out.println("文件未打开!请先将文件打开!")
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度道路桥梁施工进度保证合同
- 2025年度白酒年份酒文化体验馆加盟与运营管理合同
- 二零二五年度车辆租赁与车辆租赁保险服务合同
- 2025年度玩具及童车经销商返利保障合同
- 酒店员工劳动合同与员工心理健康关怀服务协议2025
- 二零二五年度临床试验药物临床试验保密合同模板
- 2025年度特色餐饮品牌餐馆转让协议书
- 2025年度水利工程款代付与工程变更管理协议
- 2025年度铁矿石加工生产项目投资合作合同
- 社会资本与协同问题解决-深度研究
- 关于美国地理知识的讲课
- 浙江2024年浙江省有色金属地质勘查院选调专业技术人员笔试历年典型考点(频考版试卷)附带答案详解
- 投资银行学第4版- 课件汇 马晓军 第5-9章 债券的发行和承销-投资银行的监管
- 语文-江苏省南通市、泰州市、镇江市、盐城市(部分学校)2025届高三第一次调研测试(南通一模)试题和答案
- 2024云南红河州个旧市大红屯粮食购销限公司招聘及人员易考易错模拟试题(共500题)试卷后附参考答案
- 开门见山的作文开头和结尾摘抄
- 《化妆品用原料 (动物)脐带提取物》
- 广东中考英语2020-2024年5年真题汇编-教师版-专题01 语法选择
- 水飞蓟简介课件
- 女性盆腔炎性疾病中西医结合诊治指南
- 品管圈PDCA改善项目-提高住院患者出入量记录的准确率
评论
0/150
提交评论