操作系统课程设计为LINUX设计一个简单的二级文件系统

上传人:仙*** 文档编号:29980372 上传时间:2021-10-08 格式:DOC 页数:20 大小:416.50KB
收藏 版权申诉 举报 下载
操作系统课程设计为LINUX设计一个简单的二级文件系统_第1页
第1页 / 共20页
操作系统课程设计为LINUX设计一个简单的二级文件系统_第2页
第2页 / 共20页
操作系统课程设计为LINUX设计一个简单的二级文件系统_第3页
第3页 / 共20页
资源描述:

《操作系统课程设计为LINUX设计一个简单的二级文件系统》由会员分享,可在线阅读,更多相关《操作系统课程设计为LINUX设计一个简单的二级文件系统(20页珍藏版)》请在装配图网上搜索。

1、理工大学华夏学院课 程 设 计课程名称 操作系统课程设计题目 为LINUX 设计一个简单的二级文件系统专 业 软件技术 班 级 姓 名 成 绩 指导教师 2011年1月17日 至 2011年1月21日课程设计任务书设计题目:为LINUX 设计一个简单的二级文件系统设计目的:1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。2、提高学生的程序设计能力、 提高算法设计质量与程序设计素质 。设计任务:(在规定的时间内完成下列任务)为LINUX 设计一个简单的二级文件系统。要求做到以下几点:1、可以实现下列几条命令(至少4条)Login用户登录Dir列文件目录Create创建

2、文件Delete删除文件Open打开文件Close关闭文件Read读文件Write写文件2、列目录时要列出文件名、物理地址、保护码和文件长度。3、源文件可以进行读写保护。时间安排: 1月 17日 布置课程设计任务;分配题目后,查阅资料、 准备程序; 1月 18日1月20 日上机调试程序、书写课程设计报告;1月21 日上午提交课程设计报告及相关文档。地点:学校机房(具体见现代教育中心大屏幕安排)具体要求:1、课程设计报告按统一通用格式书写,具体格式要求请在网络上查阅2、每位学生应独立完成各自的任务且每天至少在设计室工作半天指 导 教 师 签 名: 11年 1月 7日教研室主任(或责任教师)签名:

3、 11年 1月 7 日1.实现原理首先,实现Login用户登录,(用户名:zhaoran 密码:1234)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是C:Program Files),右侧显示文件夹图标或者文件图标,选中节点鼠标右击弹出菜单,有新建目录,新建文件,删除文件,打开文件,属性菜单项,并分别实现其功能。2.开发环境开发工具 MyEclipse 7.0开发语言 Java3.关键算法实现流程图3.1流程图登陆验证账号密码目录右键选择操作新建目录新建文件删除打开属性结束账号错误账号正确3.2具体算法代码3.2.1登陆模块public class Log

4、in extends JFrame private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JLabel jLabel1 = null;private JLabel jLabel2 = null;private JLabel jLabel = null;private JTextField jTextField1 = null;private JPasswordField jPasswordField = null;private JButton jButton1 =

5、null;private JButton jButton2 = null;private JTextField getJTextField1() if (jTextField1 = null) jTextField1 = new JTextField();jTextField1.setPreferredSize(new Dimension(10, 25);jTextField1.setBounds(new Rectangle(183, 59, 169, 30);return jTextField1;private JPasswordField getJPasswordField() if (j

6、PasswordField = null) jPasswordField = new JPasswordField();jPasswordField.setBounds(new Rectangle(183, 99, 169, 30);jPasswordField.addKeyListener(new java.awt.event.KeyAdapter()public void keyPressed(java.awt.event.KeyEvent e)if(e.getKeyChar()=KeyEvent.VK_ENTER)test(););return jPasswordField;public

7、 static void main(String args) SwingUtilities.invokeLater(new Runnable() public void run() Login thisClass = new Login();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true););public Login() super();initialize();private void initialize() this.setSize(400, 250);Dimensio

8、n d=Toolkit.getDefaultToolkit().getScreenSize();Dimension fsize=this.getSize();this.setLocation(d.width-fsize.width)/2, (d.height-fsize.height)/2);this.setContentPane(getJContentPane();this.setTitle(二级文件系统);private JButton getJButton2() if (jButton2 = null) jButton2 = new JButton();jButton2.setBound

9、s(new Rectangle(218, 167, 90, 32);jButton2.setText(取消);jButton2.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) System.exit(0););return jButton2;private JPanel getJContentPane() if (jContentPane = null) jLabel = new JLabel();jLabel.setT

10、ext(密码:);jLabel.setHorizontalAlignment(SwingConstants.CENTER);jLabel.setBounds(new Rectangle(27, 101, 132, 29);jLabel2 = new JLabel();jLabel2.setText(用户名:);jLabel2.setBounds(new Rectangle(27, 59, 133, 29);jLabel2.setHorizontalAlignment(SwingConstants.CENTER);jLabel2.setPreferredSize(new Dimension(10

11、, 15);jLabel1 = new JLabel();jLabel1.setText(登陆界面);jLabel1.setFont(new Font(u534eu6587u5b8bu4f53, Font.BOLD, 24);jLabel1.setBounds(new Rectangle(0, 0, 389, 32);jLabel1.setForeground(new Color(255, 0, 54);jLabel1.setHorizontalAlignment(SwingConstants.CENTER);jContentPane = new JPanel();jContentPane.s

12、etLayout(null);jContentPane.add(jLabel1, null);jContentPane.add(jLabel2, null);jContentPane.add(jLabel, null);jContentPane.add(getJTextField1(), null);jContentPane.add(getJPasswordField(), null);jContentPane.add(getJButton1(), null);jContentPane.add(getJButton2(), null);return jContentPane;private J

13、Button getJButton1() if (jButton1 = null) jButton1 = new JButton();jButton1.setBounds(new Rectangle(79, 168, 84, 33);jButton1.setText(确定);jButton1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) test(););return jButton1;public void test()if(jTextField1.getText().equ

14、als(zhaoran)&String.valueOf(jPasswordField.getPassword().equals(1234)String aa=aa,bb;Contents.main(aa); setVisible(false);elseJOptionPane.showMessageDialog(Login.this, 输入错误!请重新输入!);3.2.2新建文件目录private class newMenuAction implements ActionListener public void actionPerformed(ActionEvent arg0) try Stri

15、ng 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); t

16、ree.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 (

17、fullPath.equals()fullPath += str;elsefullPath += + str;File parentDir = new File(fullPath);if (parentDir.isDirectory() File currentFile = new File(fullPath + + Name);currentFile.mkdir(); else JOptionPane.showMessageDialog(null, 文件名不能为空!); catch (HeadlessException e) e.printStackTrace();3.2.3新建文件priv

18、ate class newFileAction implements ActionListener public void actionPerformed(ActionEvent e) TreePath tp = tree.getSelectionPath();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 +=

19、 str;elsefullPath += + str;String FileName = JOptionPane.showInputDialog(创建文件名称:);if (!FileName.equals(null) File f = new File(fullPath + + FileName);try f.createNewFile(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(); else JOptionPane.showMessageDialog(null, 文件名不能为空!

20、);3.2.4删除功能private class MenuAction implements ActionListener public void actionPerformed(ActionEvent e) TreePath tp = tree.getSelectionPath();DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent();DefaultTreeModel dtm = (DefaultTreeModel) tree.getModel();dtm.removeNodeFrom

21、Parent(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;elsefullPath += + str;File currentFile = new File(fullPath);if (currentFile.isFile()currentFile.delete();elsedele

22、teDir(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();3.2.5打开文件public class Open_File public static void main(String args) DemoWindow2 dw = new DemoWindow2(打开文件);Toolkit the

23、Kit = dw.getToolkit();Dimension wndSize = theKit.getScreenSize();dw.setBounds(wndSize.width/3,wndSize.height/3,wndSize.width/3,wndSize.height/3);dw.setVisible(true);class DemoWindow2 extends JFrame implements ActionListener, Runnable private static final long serialVersionUID = 1L;JTextArea jta = ne

24、w JTextArea();int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp = new JScrollPane(jta, v, h);JPanel jp1 = new JPanel();JButton jb = new JButton(打开文件);public DemoWindow2(String title) super(title);jp1.add(jb);add(jsp);a

25、dd(jp1, BorderLayout.SOUTH);jb.addActionListener(this);public void actionPerformed(ActionEvent e) new Thread(this).start();public void run() jta.setText();JFileChooser jfc = new JFileChooser(System.getProperty(user.home);jfc.setFileFilter(new TXTFilter();if (jfc.showOpenDialog(this) = JFileChooser.A

26、PPROVE_OPTION) File file = jfc.getSelectedFile();if (file != null) try FileInputStream fis = new FileInputStream(file);ProgressMonitorInputStream pmis = new ProgressMonitorInputStream(this, 读取进度, fis);ProgressMonitor pm = pmis.getProgressMonitor();pm.setMillisToDecideToPopup(10);pm.setMillisToPopup(

27、0);byte readbyte = new byte10;while (pmis.read(readbyte) 0) jta.append(new String(readbyte, GB2312);Thread.sleep(10);if (pm.isCanceled() jta.append(nn终止读取文件!);pmis.close(); catch (Exception e) System.out.println(e.getMessage();class TXTFilter extends FileFilter public boolean accept(File f) if (f.is

28、Directory() return true;String filePostfix = txt ;for (String str : filePostfix) if (getExtension(f).equals(str)return true;return false;public String getDescription() return TXT文件(*.txt);public static String getExtension(File f) String ext = ;String s = f.getName();int i = s.lastIndexOf(.);if (i 0

29、& i s.length() - 1) ext = s.substring(i + 1).toLowerCase();return ext;3.2.6查看文件属性public class Proper extends JFrame private static final long serialVersionUID = 1L;private JPanel jContentPane = null; private String fullPath;private JTextArea jTextArea = null;private JScrollPane jScrollPane = null;pu

30、blic Proper(String fullPath) super();this.fullPath=fullPath;initialize();private void initialize() this.setSize(332, 221);Dimension d=Toolkit.getDefaultToolkit().getScreenSize();Dimension fsize=this.getSize();this.setLocation(d.width-fsize.width)/2, (d.height-fsize.height)/2);this.setContentPane(get

31、JContentPane();this.setTitle(查看文件属性);this.setVisible(true);private JPanel getJContentPane() if (jContentPane = null) jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJScrollPane();return jContentPane;private JScrollPane getJScrollPane() if (jScrollPane = null) jScrollPane

32、 = new JScrollPane();jScrollPane.setBounds(new Rectangle(3, 1, 319, 185);jScrollPane.setViewportView(getJTextArea();return jScrollPane;private JTextArea getJTextArea() if (jTextArea = null) jTextArea = new JTextArea();jTextArea.setBounds(new Rectangle(3, 1, 319, 185);jTextArea.setEditable(false);Fil

33、e currentFile = new File(fullPath);StringBuffer sb = new StringBuffer();if (currentFile.isDirectory()sb.append(文件夹路径: + currentFile.getAbsolutePath() + n);elsesb.append(文件路径: + currentFile.getAbsolutePath() + n);sb.append(是否可读: + currentFile.canRead() + n);sb.append(是否可写: + currentFile.canWrite() +

34、n);if (!currentFile.isDirectory()sb.append(文件长度: + currentFile.length() / (1024 * 1024) + Mn);SimpleDateFormat s = new SimpleDateFormat(yyyy年MM月dd日HH小时mm分钟ss秒);sb.append(文件上次修改时间: + s.format(new Date(currentFile.lastModified()+ n);sb.append(文件是否被隐藏: + currentFile.isHidden() + n);jTextArea.setText(sb

35、.toString();return jTextArea;4软件运行过程4.1登陆记主目录界面(默认为C盘)4.2新建目录newfiles4.3新建文件file4.4删除4.5打开文件4.6查看文件属性5设计小结操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,熟练Java布局的使用,如何解决实现里面功能的各种问题。1.树形结构的实现使用tree.getSelectionPath()方法得到树形结构的节点2.删除时遍历文件夹首先判断是否为

36、目录,如果是,则使用递归遍历3.布局管理器Java提供了许多布局管理器如:FlowLayout 流式布局、BorderLayout 方位布局、GirdLayout 网格布局、BoxLayout 盒式布局等,我们需要选择合适的布局。指导教师评语:10/30 17:12 C620轴拨杆的工艺规程及钻2-16孔的钻床夹具设计09/21 13:39 CA6140车床拨叉零件的机械加工工艺规程及夹具设计83100308/30 15:37 CPU风扇后盖的注塑模具设计09/20 16:19 GDC956160工业对辊成型机设计08/30 15:45 LS型螺旋输送机的设计10/07 23:43 LS型螺旋

37、输送机设计09/20 16:23 P-90B型耙斗式装载机设计09/08 20:17 PE10自行车无级变速器设计10/07 09:23 话机机座下壳模具的设计与制造09/08 20:20 T108吨自卸车拐轴的断裂原因分析及优化设计09/21 13:39 X-Y型数控铣床工作台的设计09/08 20:25 YD5141SYZ后压缩式垃圾车的上装箱体设计10/07 09:20 ZH1115W柴油机气缸体三面粗镗组合机床总体及左主轴箱设计09/21 15:34 ZXT-06型多臂机凸轮轴加工工艺及工装设计10/30 16:04 三孔连杆零件的工艺规程及钻35H6孔的夹具设计08/30 17:57

38、 三层货运电梯曳引机及传动系统设计10/29 14:08 上盖的工工艺规程及钻6-4.5孔的夹具设计10/04 13:45 五吨单头液压放料机的设计10/04 13:44 五吨单头液压放料机设计09/09 23:40 仪表外壳塑料模设计09/08 20:57 传动盖冲压工艺制定及冲孔模具设计09/08 21:00 传动系统测绘与分析设计10/07 23:46 保护罩模具结构设计09/20 15:30 保鲜膜机设计10/04 14:35 减速箱体数控加工工艺设计10/04 13:20 凿岩钎具钎尾的热处理工艺探索设计09/08 21:33 分离爪工艺规程和工艺装备设计10/30 15:26 制定

39、左摆动杠杆的工工艺规程及钻12孔的夹具设计10/29 14:03 前盖板零件的工艺规程及钻8-M16深29孔的工装夹具设计10/07 08:44 加油机油枪手柄护套模具设计09/20 15:17 加热缸体注塑模设计10/07 09:17 动模底板零件的工艺规程及钻52孔的工装夹具设计10/08 20:23 包缝机机体钻孔组合机床总体及夹具设计09/21 15:19 升板机前后辅机的设计09/09 22:17 升降式止回阀的设计09/22 18:52 升降杆轴承座的夹具工艺规程及夹具设计09/09 16:41 升降杠杆轴承座零件的工艺规程及夹具设计08/30 15:59 半自动锁盖机的设计(包装

40、机机械设计)08/30 15:57 半轴零件的机械加工工艺及夹具设计10/29 13:31 半轴零件钻6-14孔的工装夹具设计图纸09/26 13:53 单吊杆式镀板系统设计08/30 16:20 单级齿轮减速器模型优化设计08/30 16:24 单绳缠绕式提升机的设计09/09 23:08 卧式加工中心自动换刀机械手设计09/08 22:10 厚板扎机轴承系统设计09/18 20:56 叉杆零件的加工工艺规程及加工孔20的专用夹具设计08/30 19:32 双卧轴混凝土搅拌机机械部分设计09/09 22:33 双模轮胎硫化机机械手控制系统设计09/09 22:32 双辊驱动五辊冷轧机设计09

41、/08 20:36 变位器工装设计-0.1t普通座式焊接变位机09/28 16:50 叠层式物体制造快速成型机机械系统设计09/08 22:41 可急回抽油机速度分析及机械系统设计09/08 22:42 可移动的墙设计及三维建模10/04 13:25 右出线轴钻2-8夹具设计10/04 13:23 右出线轴钻6-6夹具设计09/08 22:36 咖啡杯盖注塑模具设计10/07 08:33 咖啡粉枕式包装机总体设计及横封切断装置设计09/09 16:15 啤酒贴标机的设计(总体和后标部分的设计)10/29 13:58 喷油泵体零件的工艺规程及钻14通孔的工装夹具设计08/30 19:39 四工位

42、的卧式组合机床设计及其控制系统设计09/21 13:39 四方罩模具设计08/30 19:42 四组调料盒注塑模具设计10/07 23:55 固定座的注塑模具设计09/09 23:52 圆柱坐标型工业机器人设计09/09 23:48 圆珠笔管注塑模工艺及模具设计10/13 16:36 圆盘剪切机设计09/21 13:25 基于PLC变频调速技术的供暖锅炉控制系统设计09/08 22:20 基于pro-E的减速器箱体造型和数控加工自动编程设计08/30 18:00 基于PROE的果蔬篮注塑模具设计08/30 19:37 基于UG的TGSS-50型水平刮板输送机-机头段设计09/21 15:16

43、塑料油壶盖模具设计09/09 22:41 塑料胶卷盒注射模设计10/07 09:25 多功能推车梯子的设计09/08 21:25 多功能齿轮实验台的设计08/30 16:32 多层板连续排版方法及基于控制系统设计08/30 16:30 多层板连续排版方法毕业设计08/30 16:42 多用角架搁板的注塑模具设计及其仿真加工设计08/30 16:39 多绳摩擦式提升机的设计09/08 21:05 大型矿用自卸车静液压传动系统设计09/20 16:27 大型耙斗装岩机设计09/08 21:01 大批生产的汽车变速器左侧盖加工工艺及指定工序夹具设计10/30 15:42 套筒的机械加工工艺规程及攻6-M8-6H深10的夹具设计10/30 15:38 套筒的机械加工工艺规程及钻40H7孔的夹具设计10/29 14:13 套筒零件的工艺规程及钻3-10孔的工装夹具设计

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!