本文档分别包含linux和windows两套程序目录一、课程设计的目的..........................二、课程设计的内容及要求...................内容..........................................要求..........................................三、实现原理.................................四、关键算法实现流程图.....................流程图........................................关键算法......................................五、软件运行环境及限制.....................六.结果输出及分析..........................七.心得体会.................................八.参考文献.................................一.课程设计的目的本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。二.课程设计的内容及要求内容:为LINUX设计一个简单的二级文件系统。要求做到以下几点:1、可以实现下列几条命令(至少4条)。Login用户登录Dir列文件目录Create创建文件Delete删除文件Open打开文件Close关闭文件Read读文件Write写文件2、列目录时要列出文件名、物理地址、保护码和文件长度。3、源文件可以进行读写保护。从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:1、鼓励并优先个人独立选题设计,可从下面设计题目中选择,也可以自拟相关题目;如要合作,每组最多两名同学,且设计文档不能相同;2、可以在我们实验课最后布置的实验设计基础上进行完善和改进,但不能相同。3、题目选定后报给班长,班长要注意班级内题目的平衡,根据所选题目进行协调,不要都选一样的题。4、设计完成后报请老师答辩,答辩时不能对自己提供的设计进行讲解的同学,视为抄袭;5、要求写出一份详细的设计报告(A4纸)。6、每位同学在周五将自己的设计报告和电子文档(包括报告和源程序)交给学习委员,并由学习委员统一刻盘后上交。三.实现原理首先,实现Login用户登录,(用户名:admin密码:admin)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是C:\ProgramFiles),右侧显示文件夹图标或者文件图标,选中节点鼠标右击弹出菜单,有新建目录,新建文件,删除文件,打开文件,属性菜单项,并分别实现其功能。四.关键算法实现流程图流程图:开始登录验证是否成功?新建目录删除目录右键进行选择操作属性打开文件结束是否新建文件关键算法:1.新建目录功能的实现privateclassMenuAction2implementsActionListener{publicvoidactionPerformed(ActionEventarg0){try{StringName=JOptionPane.showInputDialog(创建目录名称:);if(!Name.equals()){//得到树状视图的被选择节点路径TreePathpath=tree.getSelectionPath();//得到树状视图的被选择节点MutableTreeNodenode=(MutableTreeNode)path.getLastPathComponent();//得到树状视图的模型类变量DefaultTreeModelmodel=(DefaultTreeModel)tree.getModel();//新建子节点,标题为新目录名称MutableTreeNodenewNode=newDefaultMutableTreeNode(Name);//先展开树状视图,触发展开树状视图事件,给当前节点追加下级节点tree.fireTreeExpanded(path);//如果当前节点允许存在下级节点,则在树状视图的模型类变量中插入新子节点,位置是第一个,否则显示消息并退出该函数if(node.getAllowsChildren())model.insertNodeInto(newNode,node,0);else{JOptionPane.showMessageDialog(null,不能给文件追加下级目录!);return;}//得到被选择节点对应文件的完整路径信息StringfullPath=;for(Objectobj:path.getPath()){Stringstr=obj.toString();//处理盘符根目录问题if(str.endsWith(\\))str=str.substring(0,str.length()-1);if(fullPath.equals())fullPath+=str;elsefullPath+=\\+str;}//System.out.println(fullpath=+fullPath);//生成被选择节点对应的文件类变量FileparentDir=newFile(fullPath);//如果是目录,则新建相应的子目录if(parentDir.isDirectory()){FilecurrentFile=newFile(fullPath+\\+Name);currentFile.mkdir();}}else{JOptionPane.showMessageDialog(null,文件名不能为空!);}}catch(HeadlessExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}2.新建文件功能的实现privateclassMenuAction5implementsActionListener{publicvoidactionPerformed(ActionEvente){TreePathtp=tree.getSelectionPath();//得到被选择节点对应文件的完整路径信息StringfullPath=;for(Objectobj:tp.getPath()){Stringstr=obj.toString();//处理盘符根目录问题if(str.endsWith(\\))str=str.substring(0,str.length()-1);if(fullPath.equals())fullPath+=str;elsefullPath+=\\+str;}StringFileName=JOptionPane.showInputDialog(创建文件名称:);if(!FileName.equals(null)){Filef=newFile(fullPath+\\+FileName);try{f.createNewFile();}catch(IOExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}}else{JOptionPane.showMessageDialog(null,文件名不能为空!);}}}3.删除功能的实现//内部类,响应快捷菜单的单击操作privateclassMenuActionimplementsActionListener{publicvoidactionPerformed(ActionEvente){//得到树状视图的被选择节点路径TreePathtp=tree.getSelectionPath();//得到树状视图的被选择节点DefaultMutableTreeNodenode=(DefaultMutableTreeNode)tp.getLastPathComponent();//从树状视图删除当前节点DefaultTreeModeldtm=(DefaultTreeModel)tree.getModel();dtm.removeNodeFromParent(node);//得到被选择节点对应文件的完整路径信息StringfullPath=;for(Objectobj:tp.getPath()){Stringstr=obj.toString();//处理盘符根目录问题if(str.endsWith(\\))str=str.substring(0,str.length()-1);if(fullPath.equals())fullPath+=str;elsefullPath+=\\+str;}//如果是文件,直接删除,如果是目录则调用deleteDir函数删除目录FilecurrentFile=newFile(fullPath);if(currentFile.isFile())currentFile.delete();elsedeleteDir(currentFile);}};//通过递归调用,可以删除目录的函数publicstaticbooleandeleteDir(Filedir){//判断是否为目录,如果是,则递归调用自己,如果不是,直接删除文件if(dir.isDirectory()){String[]subDir=dir.list();for(Strings:subDir){deleteDir(newFile(dir,s));}}returndir.delete();}4.打开文件的功能实现即是Open_File这个类。5.属性的功能实现取得路径名:TreePathtp=tree.getSelectionPath();//得到被选择节点对应文件的完整路径信息StringfullPath=;for(Objectobj:tp.getPath()){Stringstr=obj.toString();//处理盘符根目录问题if(str.endsWith(\\))str=str.substring(0,str.length()-1);if(fullPath.equals())fullPath+=str;elsefullPath+=\\+str;}然后传入newProper(fullPath);属性详细实现即是Proper类。五.软件运行环境及限制运行环境:JDK1.6使用语言:Java编程工具:JBuilder2007错误提示框进入系统后主界面:菜单选项:新建目录“小小”新建文件“小小”删除“小小”目录及文件删除成功打开文件查看文件属性七.心得体会操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,如何解决实现里面功能的各种问题。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。八.参考文献[1]朱福喜,尹为民等编著.Java语言与面向对象程序设计.武汉:武汉大学出版社,2002.12[2]陆昌辉,Java程序设计实用案例教程.北京:电子工业出版社,2008.5[3]丁振凡,黎章等编著.Java语言实用教程..北京:北京邮电大学出版社,2005.8[4]何桥,李肃义等编著.Java程序设计简明教程.北京:中国水利水电出版社,2004.9文件管理系统模拟1.实验目的通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现2.实验内容为Linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令(至少4条)login用户登录dir列文件目录crea