操作系统课程设计文档.docx
- 文档编号:23095718
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:379.56KB
操作系统课程设计文档.docx
《操作系统课程设计文档.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计文档.docx(16页珍藏版)》请在冰豆网上搜索。
操作系统课程设计文档
《操作系统原理》课程设计报告
简单二级文件系统
学院(系):
计算机科学与工程学院
班级:
0738-3学号:
10703080326
学生姓名:
王维
同组设计人:
周晓霞
指导教师:
杨宏雨周敏王东傅由甲
时间:
从2009年6月29日到2009年7月3日
目录
一、课程设计的目的
二、课程设计的内容及要求
内容
要求
三、实现原理
四、关键算法实现流程图
流程图
关键算法
五、软件运行环境及限制
六.结果输出及分析
七.心得体会
八.参考文献
一.课程设计的目的
本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。
二.课程设计的内容及要求
内容:
为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;
else
fullPath+="\\"+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-generatedcatchblock
e.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;
else
fullPath+="\\"+str;
}
StringFileName=JOptionPane.showInputDialog("创建文件名称:
");
if(!
FileName.equals(null)){
Filef=newFile(fullPath+"\\"+FileName);
try{
f.createNewFile();
}catch(IOExceptione1){
//TODOAuto-generatedcatchblock
e1.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;
else
fullPath+="\\"+str;
}
//如果是文件,直接删除,如果是目录则调用deleteDir函数删除目录
FilecurrentFile=newFile(fullPath);
if(currentFile.isFile())
currentFile.delete();
else
deleteDir(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;
else
fullPath+="\\"+str;
}
然后传入newProper(fullPath);
属性详细实现即是Proper类。
五.软件运行环境及限制
运行环境:
JDK1.6
使用语言:
Java
编程工具:
JBuilder2007
六.结果输出及分析
登录界面:
(用户名和密码均为admin)
错误提示框
进入系统后主界面:
菜单选项:
新建目录“小小”
新建文件“小小”
删除“小小”目录及文件
删除成功
打开文件
查看文件属性
七.心得体会
操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。
比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,如何解决实现里面功能的各种问题。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
八.参考文献
[1]朱福喜,尹为民等编著.Java语言与面向对象程序设计.武汉:
武汉大学出版社,2002.12
[2]陆昌辉,Java程序设计实用案例教程.北京:
电子工业出版社,2008.5
[3]丁振凡,黎章等编著.Java语言实用教程..北京:
北京邮电大学出版社,2005.8
[4]何桥,李肃义等编著.Java程序设计简明教程.北京:
中国水利水电出版社,2004.9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 文档