操作系统课程设计 为LINUX 设计一个简单的二级文件系统 java实现界面_操作系统课程设计完整

其他范文 时间:2020-02-27 22:39:36 收藏本文下载本文
【www.daodoc.com - 其他范文】

操作系统课程设计 为LINUX 设计一个简单的二级文件系统 java实现界面由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“操作系统课程设计完整”。

仲恺农业工程学院

为LINUX 设计一个简单的二级文件系统

菜鸟程序员

院(系)

计算机科学与工程学院 专业班级 学

指导教师

课程设计日期 2011年 6月2 日至7月1日

目 录

1题目分析..........................................................1 2算法设计..........................................................1 2.1 用户登录模块..................................................1 2.2 新建目录模块..................................................2 2.3新建文件模块..................................................3 2.4 删除文件模块..................................................4 2.5 读取文件模块..................................................5 3 设计实现..........................................................6 3.1登录界面外观布局..............................................6 3.2树状显示目录..................................................7 3.3新建目录实现主要代码:.......................................10 3.4新建文件实现.................................................12 3.5删除文件实现.................................................14 3.6读取文件实现.................................................16 4设计总结.........................................................17 5参考文献.........................................................18

1题目分析

为Linux设计一个简单的二级文件系统,可以实现用户登录、列出文件目录、创建目录、创建文件、删除目录、删除文件、读取文件的功能。本次设计采用的开发语言是Java,通过Java来实现整体布局和实现相关的功能。

2算法设计

本次二级文件系统主要分为五大模块,分别是用户登录模块、新建目录模块、新建文件模块、删除文件模块和读取文件模块。用户登录成功后才可以进行其他模块的操作。

2.1 用户登录模块

用户登录模块要求用户输入账号与密码,当输入正确后进入主视图并能进行其他模块操作,否则提示账号密码错误并要求用户重新输入(默认的账号和密码都是“123”)。用户登录模块流程图如图1所示。

开始输入账号和密码账号和密码都正确?否是显示默认目录的所有文件与目录提示输入错误结束 图1 用户登录模块流程图

2.2 新建目录模块

新建目录模块是根据用户鼠标右击时选择到的节点来确定节点的名字与路径,然后判断该节点是否可以拥有子节点,若拥有则根据用户输入的目录名称新建一个目录,否则提示不能新增目录。新建目录模块流程图如图2所示。

开始获得右击时选择到的节点的路径与名字被选择的节点是否可以拥有子节点?否是用户输入新建目录的名字提示不能创建目录在本地硬盘新建一文件夹,在树型视图新增一节点结束 图2 新建目录流程图

2.3新建文件模块

新建文件模块是根据用户鼠标右击时选择到的节点来确定节点的名字与路径,然后判断该节点是否可以拥有子节点,若拥有则根据用户输入的文件名称新建一个文件,否则提示不能新增文件。新建文件模块流程图如图3所示。

开始获得右击时选择到的节点的路径与名字被选择的节点是否可以拥有子节点?否是用户输入新建文件的名字提示不能创建文件在本地硬盘新建改文件,在树型视图新增一节点结束 图3 新建文件流程图

2.4 删除文件模块

删除文件模块是根据用户鼠标右击时选择到的节点来确定要删除节点的名字与路径,然后判断该节点是目录还是文件。若是文件则直接删除文件,若是目录则进入该目录再删除其全部文件。删除文件模块流程图如图4所示。

开始获得右击时选择到的节点的路径与名字在树状视图上删除该节点否该节点是一目录?是进入该目录并遍历所有文件删除该文件删除所有被遍历的文件结束 图4 删除文件模块流程图

2.5 读取文件模块

读取文件模块是根据FileDialog类中事先设定的默认路径而打开一个选择对话框,然后根据用户选择的文件而获取文件的名字与路径。最后通过输入流而把读取到的数据显示在一个文本域中。读取文件流程图如图5所示。

开始新建一个空的文本区域生成FileDialog选择框根据用户的选择而获得文件的路径和名字运用输入输出流读取文件的数据把读取到的数据显示到文本域中结束 图5 读取文件模块流程图设计实现

3.1登录界面外观布局

登录界面主要代码:

JLabel labelID=null,labelPaword=null,title=null;JTextField id,paword;JButton conform=new JButton(“确认”);JButton cancle=new JButton(“取消”);LoginWindow(){ init();this.setTitle(“登录界面”);this.setBounds(400,200,550,400);this.setResizable(false);

this.setVisible(true);

}

void init(){

this.setLayout(null);

labelID=new JLabel(“请输入账号:”);labelID.setBounds(50, 100, 100, 30);this.add(labelID);

labelPaword=new JLabel(“请输入密码:”);labelPaword.setBounds(50, 200, 100, 30);this.add(labelPaword);

id=new JTextField(20);id.setBounds(170, 100, 300,30);this.add(id);

paword=new JTextField(20);paword.setBounds(170, 200, 300, 30);this.add(paword);title=new JLabel(“登录界面”);conform.setBounds(100, 280, 80, 30);cancle.setBounds(250, 280, 80, 30);

conform.addActionListener(new LoginListener());cancle.addActionListener(new LoginListener());

this.add(conform);this.add(cancle);} 登录界面如图6所示

图6 登录界面

3.2树状显示目录

登录成功后显示默认路径的树状文件目录的主要代码:

void getRoot(DefaultMutableTreeNode superroot, File f){

File files[] = f.listFiles();

for(int i = 0;i

DefaultMutableTreeNode de = new DefaultMutableTreeNode(files[i].getName());

if(files[i].isDirectory()){

de.setAllowsChildren(true);

} else {

de.setAllowsChildren(false);

System.out.println(“不是目录的有:” + de.toString());

}

superroot.add(de);

} }

private cla TreeListener implements TreeExpansionListener { // 重写两个方法

public void treeCollapsed(TreeExpansionEvent event){

}

public void treeExpanded(TreeExpansionEvent event){

DefaultMutableTreeNode node =(DefaultMutableTreeNode)(event

.getPath()).getLastPathComponent();

if(node.getChildCount()== 0){

DefaultMutableTreeNode originalNode = node;

String fileName = node.toString();

while(node.getParent()!= null){

node =(DefaultMutableTreeNode)node.getParent();

fileName = node.toString()+ “” + fileName;System.out.println(“当前展开路径名” + fileName);

} if(originalNode!= null){

File f = new File(fileName);

if(f.isDirectory()){

File files[] = f.listFiles();

if(files!= null)

for(int i = 0;i

DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(files[i].getName());

if(files[i].isDirectory())

dmtn.setAllowsChildren(true);

else

dmtn.setAllowsChildren(false);

dtm.insertNodeInto(dmtn, originalNode,originalNode.getChildCount());

}

}

}

} }

树状目录显示如图7所示:

图7 树状显示目录

3.3新建目录实现主要代码:

private cla NewMenuAction implements ActionListener {

public void actionPerformed(ActionEvent e){

TreePath path = tree.getSelectionPath();

MutableTreeNode node =(MutableTreeNode)path

.getLastPathComponent();

DefaultTreeModel model =(DefaultTreeModel)tree.getModel();

if(node.getAllowsChildren()){

String Name = JOptionPane.showInputDialog(null, “创建目录名称:”);

if(!Name.equals(“”)){ MutableTreeNode newNode = new

DefaultMutableTreeNode(Name);// 建立新节点

1);

+ Name);

tree.fireTreeExpanded(path);model.insertNodeInto(newNode, node, 0);String fullPath = “”;

for(Object obj : path.getPath()){ String str = obj.toString();if(str.endsWith(“”))

str = str.substring(0, str.length()1);if(fullPath.equals(“”))

fullPath += str;else

fullPath += “” + str;} String FileName = JOptionPane.showInputDialog(null, “创建文件名称:”);

if(!FileName.equals(null)){ File f = new File(fullPath + “” + FileName);try {

f.createNewFile();} catch(IOException e1){

e1.printStackTrace();} } else { JOptionPane.showMeageDialog(null, “不能添加文件!”);return;

}

}

} }

新建文件如图9所示,图9 新建文件

3.5删除文件实现

删除文件主要代码:

private cla DeleteAction implements ActionListener{

public void actionPerformed(ActionEvent e){

TreePath tp = tree.getSelectionPath();

DefaultMutableTreeNode node =(DefaultMutableTreeNode)tp.getLastPathComponent();

DefaultTreeModel dtm =(DefaultTreeModel)tree.getModel();

dtm.removeNodeFromParent(node);

String fullPath = “”;

for(Object obj : tp.getPath()){

String str = obj.toString();

if(str.endsWith(“”))

str = str.substring(0, str.length()-1);

if(fullPath.equals(“”))

fullPath += str;

else

fullPath += “” + str;

}

File currentFile = new File(fullPath);

if(currentFile.isFile())

currentFile.delete();

else

deleteDir(currentFile);

} } public static boolean deleteDir(File dir){

if(dir.isDirectory()){

String[] subDir = dir.list();

for(String s : subDir){

deleteDir(new File(dir, s));

}

}

return dir.delete();}

删除文件如图10所示:

图10 删除文件

3.6读取文件实现

读取文件主要代码: void readFile(){

fileDialog = new JFileChooser(“F:”);

int state = fileDialog.showOpenDialog(null);

if(state == JFileChooser.APPROVE_OPTION){

try {

File dir = fileDialog.getCurrentDirectory();

String name = fileDialog.getSelectedFile().getName();File file = new File(dir, name);// 创建一新文件

fw = new FileReader(file);

br = new BufferedReader(fw);

String s = null;

this.setTitle(name);

jta.setText(“ ”);// 清空文本区的内容

while((s = br.readLine())!= null){

jta.append(s + “n”);

}

br.close();

} catch(Exception e1){

e1.printStackTrace();

}

} } 读取文件如图11所示:

图11 读取文件

4设计总结

对于本次操作系统课程设,由于对树状显示目录这样面的内容比较陌生,刚起步阶段花了很大时间去查阅各种资料。当完成设计时,感觉掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,熟练Java布局的使用,如何解决实现里面功能的各种问题。本次设计集树、监听器、布局、输入输出流、文件系统这几方面的知识而成,具有一定挑战性。

5参考文献

[1] 李刚.疯狂Java讲义.电子工业出版社出版社,2008.[2] 耿祥义,张跃平.Java面向对象程序设计.清华大学出版社出版社,2009.

下载操作系统课程设计 为LINUX 设计一个简单的二级文件系统 java实现界面word格式文档
下载操作系统课程设计 为LINUX 设计一个简单的二级文件系统 java实现界面.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文