欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统课程设计----二级文件系统.doc

    • 资源ID:79330611       资源大小:438.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课程设计----二级文件系统.doc

    学号10225608129武汉理工大学华夏学院课 程 设 计课程名称 操作系统课程设计题目 为LINUX 设计一个简单的二级文件系统专 业 软件技术 班 级 2081班 姓 名 赵然 成 绩 指导教师 赵传斌、 司晓梅 2011年1月17日 至 2011年1月21日课程设计任务书设计题目:为LINUX 设计一个简单的二级文件系统设计目的:1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。2、提高学生的程序设计能力、 提高算法设计质量与程序设计素质 。设计任务:(在规定的时间内完成下列任务)为LINUX 设计一个简单的二级文件系统。要求做到以下几点:1、可以实现下列几条命令(至少4条)Login用户登录Dir列文件目录Create创建文件Delete删除文件Open打开文件Close关闭文件Read读文件Write写文件2、列目录时要列出文件名、物理地址、保护码和文件长度。3、源文件可以进行读写保护。时间安排: 1月 17日 布置课程设计任务;分配题目后,查阅资料、 准备程序; 1月 18日1月20 日上机调试程序、书写课程设计报告;1月21 日上午提交课程设计报告及相关文档。地点:学校机房(具体见现代教育中心大屏幕安排)具体要求:1、课程设计报告按统一通用格式书写,具体格式要求请在网络上查阅2、每位学生应独立完成各自的任务且每天至少在设计室工作半天指 导 教 师 签 名: 11年 1月 7日教研室主任(或责任教师)签名: 11年 1月 7 日1.实现原理首先,实现Login用户登录,(用户名:zhaoran 密码:1234)必须登录成功才能进入文件系统进行查看,进入后,通过树状展示文件目录(默认文件目录是C:Program Files),右侧显示文件夹图标或者文件图标,选中节点鼠标右击弹出菜单,有新建目录,新建文件,删除文件,打开文件,属性菜单项,并分别实现其功能。2.开发环境开发工具 MyEclipse 7.0开发语言 Java3.关键算法实现流程图3.1流程图登陆验证账号密码目录右键选择操作新建目录新建文件删除打开属性结束账号错误账号正确3.2具体算法代码3.2.1登陆模块public class Login 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 = 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 (jPasswordField = 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 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);Dimension 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.setBounds(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.setText("密码:");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, 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.setLayout(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 JButton 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().equals("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 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;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新建文件private 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 += 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, "文件名不能为空!");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.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;elsefullPath += "" + str;File currentFile = new File(fullPath);if (currentFile.isFile()currentFile.delete();elsedeleteDir(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 theKit = 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 = new 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);add(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.APPROVE_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(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.isDirectory() 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 && 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;public 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(getJContentPane();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 = 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);File 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() + "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.toString();return jTextArea;4软件运行过程4.1登陆记主目录界面(默认为C盘)4.2新建目录newfiles4.3新建文件file4.4删除4.5打开文件4.6查看文件属性5设计小结操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,熟练Java布局的使用,如何解决实现里面功能的各种问题。1.树形结构的实现使用tree.getSelectionPath()方法得到树形结构的节点2.删除时遍历文件夹首先判断是否为目录,如果是,则使用递归遍历3.布局管理器Java提供了许多布局管理器如:FlowLayout 流式布局、BorderLayout 方位布局、GirdLayout 网格布局、BoxLayout 盒式布局等,我们需要选择合适的布局。指导教师评语:

    注意事项

    本文(操作系统课程设计----二级文件系统.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开