操作系统课程设计文件管理二级文件系统

一.课程设计的目的

本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。

­

二.课程设计的内容及要求

内容:为LINUX 设计一个简单的二级文件系统。要求做到以下几点:

1、可以实现下列几条命令(至少4条)。

Login        用户登录

Dir          列文件目录

Create       创建文件

Delete       删除文件

Open        打开文件

Close        关闭文件

Read        读文件

Write        写文件

2、列目录时要列出文件名、物理地址、保护码和文件长度。

3、源文件可以进行读写保护。

从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:

1、鼓励并优先个人独立选题设计,可从下面设计题目中选择,也可以自拟相关题目;如要合作,每组最多两名同学,且设计文档不能相同;

2、可以在我们实验课最后布置的实验设计基础上进行完善和改进,但不能相同。

3、题目选定后报给班长,班长要注意班级内题目的平衡,根据所选题目进行协调,不要都选一样的题。

4、设计完成后报请老师答辩,答辩时不能对自己提供的设计进行讲解的同学,视为抄袭;

5、要求写出一份详细的设计报告(A4纸)。

6、每位同学在周五将自己的设计报告和电子文档(包括报告和源程序)交给学习委员,并由学习委员统一刻盘后上交。

三.实现原理

    首先,实现Login用户登录,(用户名:admin 密码:admin)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是C:\Program Files),右侧显示文件夹图标或者文件图标,选中节点鼠标右击弹出菜单,有新建目录,新建文件,删除文件,打开文件,属性菜单项,并分别实现其功能。

四.关键算法实现流程图

流程图:

 关键算法:

 1.新建目录功能的实现。

private class MenuAction2  implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			try {
				String Name=JOptionPane.showInputDialog("创建目录名称:");
				if (!Name.equals("")) {
					// 得到树状视图的被选择节点路径
					TreePath path = tree.getSelectionPath();
					// 得到树状视图的被选择节点
					MutableTreeNode node = (MutableTreeNode) path
							.getLastPathComponent();
					// 得到树状视图的模型类变量
					DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
					// 新建子节点,标题为新目录名称
					MutableTreeNode newNode = new DefaultMutableTreeNode(Name);
					// 先展开树状视图,触发展开树状视图事件,给当前节点追加下级节点
					tree.fireTreeExpanded(path);
					// 如果当前节点允许存在下级节点,则在树状视图的模型类变量中插入新子节点,位置是第一个,否则显示消息并退出该函数
					if (node.getAllowsChildren())
						model.insertNodeInto(newNode, node, 0);
					else {
						JOptionPane.showMessageDialog(null, "不能给文件追加下级目录!");
						return;
					}
					// 得到被选择节点对应文件的完整路径信息
					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;
					}
					//System.out.println("fullpath="+fullPath);
					// 生成被选择节点对应的文件类变量
					File parentDir = new File(fullPath);
					// 如果是目录,则新建相应的子目录
					if (parentDir.isDirectory()) {
						File currentFile = new File(fullPath + "\\" + Name);
						currentFile.mkdir();
					}
				}
				else{
					JOptionPane.showMessageDialog(null, "文件名不能为空!");
				}
			} catch (HeadlessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

完整代码在word文档

下载链接:完整代码下载链接

  • 4
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大臣呀~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值