课程设计 JAVA 记事本_第1页
课程设计 JAVA 记事本_第2页
课程设计 JAVA 记事本_第3页
课程设计 JAVA 记事本_第4页
课程设计 JAVA 记事本_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计(大作业)报告课程名称:java语言程序设计设计题目:记事本院系:计算机与网络技术系班级:计算机科学与技术本2班设计者:*** 学号:200911012** 指导教师:*** 设计时间:2010-12-29 昆明学院昆明学院课程设计(大作业)任务书姓名:*** 院系:计算机与网络技术系专业:计算机科学与技术专业 学号:20091101***任务起止日期:2010-12课程设计题目:记事本课程设计要求:用Java编写一个记事本程序,要求能实现记事本的基本功能,并上机调试通过,该程序是一个图形界面的java文档编辑器,程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小。程序运行结果如下图。工作计划及安排:12月27日:选定本组要做的题目,对题目进行分析,上网查找相关资料12月28日至29日:画流程图,写程序12月30日:调试程序,填写报告书12月31日:上交作业一开始的时候,我们组的几乎都没有什么头绪,然后就是在网上查找记事本程序的设计步骤和用到的相应函数,了解了一些基本的步骤之后,然后就开始分工。我们统一了所有要用到的参数、变量、公共方法。杜长友设计框架,包括所有菜单及其子菜单在框架内的显示、文本域、滚动条、头文件、然后还有在菜单中加入子菜单,实现子菜单所代表的功能的方法调用,再加上主函数。潘竹比较强悍,因为她的Java学得好么,所以就承担了比较多的复杂任务了:她做了文件的新建、打开、保存、另存及其异常处理、打印、退出这一功能模块。还有就是粘贴、复制、撤销、剪切、删除、全选、转到这一部分功能模块。寸得艳这个姑娘也是很猛啦,她负责设计了查找方法,字体设置方法和帮助主题,还有就是文本域。做到周三我们各自负责的部分基本可以啦,然后组合在一起却不可以调试通过。经过相互的解释,协调了各自的功能模块,最后勉强通过了。指导教师评语:指导教师签字年月日

课程设计(大作业)成绩学号:200911012**姓名:***指导教师:课程设计题目:记事本总结:这次课程设计中,我们三人为一组,我主要设计框架,包括所有菜单及其子菜单在框架内的显示、文本域、滚动条、头文件、然后还有在菜单中加入子菜单,实现子菜单所代表的功能的方法调用,再加上主函数这一部分。其下共有十一个功能,分别是撤销、剪切、复制、粘贴、删除、查找、查找下一个、替换、转到、全选字体设置。在开始做的几天里,我又重新看了一下课本,还查找了相关的一些资料,在同组同学的帮助和指导下,最终完成了这些内容中的大部分内容,但是很不完善,最后我们组员又在一起讨论了才完善起来。通过这次课程设计,我更加深刻的体会到自己对所学的知识理解的实在是很有限,简单的作业还可以自己写出相对完整的程序代码,但是大一点、难一些的内容,似乎一点都不懂。所以一开始拿到题目的时候,根本就不知道从何处着手,还是从网上找了一些程序代码,一点一点的做实验,基本了解一些相应的函数的运用后才自己慢慢模仿着编程。这次课程设计中,我觉得有很多收获,首先通过这次课题,我了解到了自己的不足,认识到自己对哪些知识掌握了,对哪些知识还需要加倍努力,对学过的知识理解的更加透彻了,另外我觉得自己最大的收获是,我完成了自己的任务,虽然不是很成功,远远没有达到题目的要求,而且还是在同学的帮助下才完成的,但我觉得起码我尝试了,并且我尽了自己最大的努力,而且还学到了很多新知识,以后运用起来也会更容易。而且作为一个团队只有相互配合协调工作才会有所成就,所以学会与他人合作才能更好的完成任务。指导教师评语:成绩:填表时间: 指导教师签名:目录课程设计(大作业)报告1课程设计介绍 错误!未定义书签。1.1课程设计内容 错误!未定义书签。1.2课程设计要求 错误!未定义书签。2总体设计 错误!未定义书签。2.1课设题目总体设计、算法描述 错误!未定义书签。2.2功能模块图、流程图分析 错误!未定义书签。3调试与性能分析 错误!未定义书签。4参考文献 错误!未定义书签。附录(程序清单) 错误!未定义书签。课程设计介绍课程设计内容用Java程序语言设计一个具有GUI界面的记事本,事本界面要求有标题显示栏,最小化,最大化,关闭按钮和文本编辑区。含有工具栏,其中包括“文件(F)”、“编辑(E)”、“格式(O)”、“查看(V)”、“帮助(H)”菜单,菜单下还应包含有子菜单。记事本含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;能实现文件的打开、保存、另存为、查找、替换等功能。还可以实现文件的打开、文件保存异常情况处理。课程设计要求要构建的记事本程序所用语言为Java,记事本要实现的功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“查看”、“格式”、“帮助”五个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件;(4)、“格式”中有“字体换行”、“字体”分别用于字体换行和字体转换;(5)、“查看”中有“状态栏”查看当前状态;(6)、“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息;(7)、设计完成后学要调试运行通过。2总体设计2.1题目总体设计、算法描述对于此次用Java编写记事本的总体设计有:a、首先把框架和几个主按钮文件、编辑和关于定义好;b、然后在定义文件按钮下的保存、另存为、全选、关闭及打开按钮,并对这些进行更详细的设计和实现功能;c、再对编辑按钮下的剪切、复制、粘贴进行设计定义和实现功能;d、自定义类说明:类名为JNotepad;其作用:是主类,其继承的父类是JFrame类。e、定义各种监听类,用于对子菜单更能的实现。2.2功能模块图、流程图分析2.2.1功能模块图父类:JNotePad();setUpComponent();JMenuBar();JMenu("文件");JMenu("编辑");JMenu("查看");JMenu("格式");JMenu("帮助");子类:JMenuItem("新建");JMenuItem("打开");JMenuItem("保存");JMenuItem("另存为");JMenuItem("退出");JMenuItem("撤销");JMenuItem("剪切");JMenuItem("复制");JMenuItem("粘贴");JMenuItem("查找");JMenuItem("查找下一个");JMenuItem("替换");JMenuItem("转到");JMenuItem("全选");JMenuItem("时间/日期");JMenuItem("自动换行");JMenuItem("字体");JMenuItem("状态栏");JMenuItem("帮助主题");JMenuItem("关于记事本");JTextArea();openFile();isCurrentFileSaved();new():open();saveFile();saveFileAs();exitFile();undo();cut();copy();paste();del();search();searchNext();replace();turnTo();selectAll();time/Date();swapLine();font();status();helpTile();about();2.2.2流程图(手绘附报告)3调试与性能分析当程序完成以后我们就开始着手开始调试,在经过不停地修改后,程序终于通过啦!在调试过程中的错误是需要一点点的找到错误的,然后耐心的读程序,找到上下代码之间的逻辑关系,然后将程序改过来。下面是程序运行后的结果和相应的功能实现。运行后的结果(1)主界面(2)文件菜单(3)编辑菜单(4)另存为子菜单4参考文献(美)Y.DanielLiang《面向对象程序设计》5附录(程序清单)importjava.awt.*;importjava.awt.event.*;importjava.awt.datatransfer.*;importjava.io.*;importjavax.swing.*;importjavax.swing.event.*;importjavax.swing.text.*;publicclassJNotepadextendsJPanel{JTextAreajta=newJTextArea("",35,50);//定义文本区域JScrollPanejsp=newJScrollPane(jta);//定义滚动框JMenuBarjmb=newJMenuBar();//定义菜单栏JMenufile=newJMenu("文件(F)");//定义菜单JMenuedit=newJMenu("编辑(E)");JMenuformat=newJMenu("格式(O)");JMenuview=newJMenu("查看(V)");JMenuhelp=newJMenu("帮助(H)");JToolBartoolBar=newJToolBar();//定义工具栏JMenuItemjmi;//定义菜单项Clipboardclipbd=getToolkit().getSystemClipboard();Stringtext="";publicJNotepad()//构造函数{classnewLimplementsActionListener//新建文本区域jta的监听类{publicvoidactionPerformed(ActionEvente){jta.setDocument(newPlainDocument());}}classopenLimplementsActionListener//打开文件的监听类{publicvoidactionPerformed(ActionEvente){JFileChooserfc=newJFileChooser();//实现保存文件和打开文件的标准对话框intreturnVal=fc.showDialog(JNotepad.this,"Openfile");if(returnVal==JFileChooser.APPROVE_OPTION){Stringfile=fc.getSelectedFile().getPath();//用file保存文件名if(file==null){return;}try//打开文件的异常处理{Readerin=newFileReader(file);char[]buff=newchar[4096];intnch;while((nch=in.read(buff,0,buff.length))!=-1){jta.setDocument(newPlainDocument());jta.append(newString(buff,0,nch));}}catch(IOExceptionio){System.err.println("IOException:"+io.getMessage());}}else{return;}}}classsaveAsimplementsActionListener//另存为的监听类{publicvoidactionPerformed(ActionEvente){JFileChooserfc=newJFileChooser();intreturnVal=fc.showSaveDialog(JNotepad.this);if(returnVal==JFileChooser.APPROVE_OPTION){Stringsavefile=fc.getSelectedFile().getPath();if(savefile==null){return;}else{StringdocToSave=jta.getText();if(docToSave!=null){FileOutputStreamfstrm=null;BufferedOutputStreamostrm=null;try//开始保存的异常处理{fstrm=newFileOutputStream(savefile);ostrm=newBufferedOutputStream(fstrm);byte[]bytes=null;try{bytes=docToSave.getBytes();}catch(Exceptione1){e1.printStackTrace();}ostrm.write(bytes);}catch(IOExceptionio){System.err.println("IOException:"+io.getMessage());}finally{try{ostrm.flush();fstrm.close();ostrm.close();}catch(IOExceptionioe){System.err.println("IOException:"+ioe.getMessage());}}}}}else{return;}}}classprintLimplementsActionListener//打印程序的监听类{publicvoidactionPerformed(ActionEvente) { Stringprint=""; }}classexitLimplementsActionListener//退出程序的监听类{publicvoidactionPerformed(ActionEvente){System.exit(0);}}classundoLimplementsActionListener//撤销的监听类 { publicvoidactionPerformed(ActionEvente) { }}classcutLimplementsActionListener//剪切的监听类{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();StringSelectionclipString=newStringSelection(selection);clipbd.setContents(clipString,clipString);jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());}}classcopyLimplementsActionListener//复制的监听类{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();StringSelectionclipString=newStringSelection(selection);clipbd.setContents(clipString,clipString);}}classpasteLimplementsActionListener//粘贴的监听类{publicvoidactionPerformed(ActionEvente){TransferableclipData=clipbd.getContents(JNotepad.this);try{StringclipString=(String)clipData.getTransferData(DataFlavor.stringFlavor);jta.replaceRange(clipString,jta.getSelectionStart(),jta.getSelectionEnd());}catch(Exceptionex) {}}}classdeleteLimplementsActionListener//删除的监听类{publicvoidactionPerformed(ActionEvente){Stringselection=jta.getSelectedText();jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());}}classfindLimplementsActionListener//查找窗口的监听类{publicvoidactionPerformed(ActionEvente){Stringfind="";find=JOptionPane.showInputDialog("Findwhat:");}}classfindNextLimplementsActionListener//查找下一个的监听类{publicvoidactionPerformed(ActionEvente){}}classreplaceLimplementsActionListener//替换的监听类{ publicvoidactionPerformed(ActionEvente) { } }classturnToLimplementsActionListener//转到的监听类 { publicvoidactionPerformed(ActionEvente) { } }classselectAllLimplementsActionListener//全选的监听类{publicvoidactionPerformed(ActionEvente){jta.selectAll();}}classtimeDateLimplementsActionListener//时间/日期的监听类{ publicvoidactionPerformed(ActionEvente) { } }classlineWrapLimplementsActionListener//自动换行的监听类 { publicvoidactionPerformed(ActionEvente) { } }classfontLimplementsActionListener//字体的监听类 { publicvoidactionPerformed(ActionEvente) { } }classstatusLimplementsActionListener//状态栏的监听类 { publicvoidactionPerformed(ActionEvente) { } }classhelpTitleLimplementsActionListener//帮助主题的监听类 { publicvoidactionPerformed(ActionEvente) { } }classaboutLimplementsActionListener//关于的监听类{publicvoidactionPerformed(ActionEvente){ JOptionPane.showMessageDialog(null,"我们的记事本");}}classjtaLimplementsActionListener//文本区域的监听类{publicvoidactionPerformed(ActionEvente){}}file.add(jmi=newJMenuItem("新建(N)Ctrl+N",KeyEvent.VK_N));//file菜单中加入子菜单jmi.addActionListener(newnewL());//设置子菜单的监听者file.add(jmi=newJMenuItem("打开(O)Ctrl+O",KeyEvent.VK_O));jmi.addActionListener(newopenL());file.add(jmi=newJMenuItem("另存为(A)",KeyEvent.VK_A));jmi.addActionListener(newsaveAs());file.add(jmi=newJMenuItem("保存(S)Ctrl+S",KeyEvent.VK_S));file.addSeparator();file.add(jmi=newJMenuItem("打印(P)Ctrl+P",KeyEvent.VK_P));jmi.addActionListener(newprintL());file.addSeparator();file.add(jmi=newJMenuItem("退出(X)",KeyEvent.VK_X));jmi.addActionListener(newexitL());edit.add(jmi=newJMenuItem("撤销(U)Ctrl+Z",KeyEvent.VK_U));//edit菜单中加入子菜单jmi.addActionListener(newundoL());//设置子菜单的监听者edit.addSeparator();edit.add(jmi=newJMenuItem("剪切(T)Ctrl+X",KeyEvent.VK_T));jmi.addActionListener(newcutL());edit.add(jmi=newJMenuItem("复制(C)Ctrl+C",KeyEvent.VK_C));jmi.addActionListener(newcopyL());edit.add(jmi=newJMenuItem("粘贴(P)Ctrl+V",KeyEvent.VK_P));jmi.addActionListener(newpasteL());edit.add(jmi=newJMenuItem("删除(L)Del",KeyEvent.VK_L));jmi.addActionListener(newdeleteL());edit.addSeparator();edit.add(jmi=newJMenuItem("查找(F)Ctrl+F",KeyEvent.VK_F));jmi.addActionListener(newfindL());edit.add(jmi=newJMenuItem("查找下一个(N)F3",KeyEvent.VK_N));jmi.addActionListener(newfindNextL());edit.add(jmi=newJMenuItem("替换(R)Ctrl+H",KeyEvent.VK_R));jmi.addActionListener(newreplaceL());edit.add(jmi=newJMenuItem("转到(G)Ctrl+G",KeyEvent.VK_G));jmi.addActionListener(newturnToL());edit.addSeparator();edit.add(jmi=newJMenuItem("全选(A)Ctrl+A",KeyEvent.VK_A));jmi.addActionListener(newselectAllL());edit.add(jmi=newJMenuItem("时间/日期(D)F5",KeyEvent.VK_D));jmi.addActionListener(newtimeDateL());format.add(jmi=newJMe

温馨提示

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

评论

0/150

提交评论