




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 盒式布局等,我们需要选择合适的布局。指导教师评语: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型螺旋输送机设计09/20 16:23 p-90b型耙斗式装载机设计09/08 2
37、0: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 三层货运电梯曳引机及传动系统设计10/29 14:08 上盖的工工艺规程及
38、钻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 制定左摆动杠杆的工工艺规程及钻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 半自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度综合性医院消毒灭菌专业服务合同
- 2025年度农业土地整治土地承包合同
- 2025年度抵押车个人车辆抵押权解除后续贷合同模板
- 宠物运输司机劳务协议
- 2025年广东生态工程职业学院单招职业适应性测试题库必考题
- 2025年二手房市场分析:二手房市场降幅收窄
- 2024年三季度报重庆地区A股主营业务利润排名前十大上市公司
- 2024-2025学年福建省福州市马尾第一中学等六校高二上学期期中联考生物试卷
- 2023-2024学年湖南省衡阳市祁东县高考考前仿真联考三生物试卷
- 意见征询稿回复函
- sinamic变频器家族cu250s-操作手册
- 发证机关所在地区代码表
- 建筑垃圾回收利用统计台账
- 《不一样的你我他》(完美)课件
- 外研版一起点二年级下册英语全册课件
- 原油电脱盐电脱水技术
- XE82000--午山风电场风机定检作业指导书
- 前列腺癌临床路径(最全版)
- 奥数知识点 间隔问题
- 简易旋转倒立摆及控制装置
- 深圳大学《数字信号处理》2009年期末考试试卷A卷
评论
0/150
提交评论