《java课程设计--制作一个简易的记事本.docx》由会员分享,可在线阅读,更多相关《java课程设计--制作一个简易的记事本.docx(13页珍藏版)》请在第壹文秘上搜索。
1、第1章课题概述21.1 课题的目的21.2 课题的要求21.2.1 主界面的要求21.2.2 程序实现的功能要求2第2章概要设计32.1 整个程序的模块结构及流程32.2 主界面的设计3第3章程序功能的实现53.1 主函数的实现53.2 主要功能模块的实现53.2.1保存的实现53.2.2另存为的实现62.4.3打开的实现72.4.4查找的实现72.4.5替换的实现92.4.6字体的实现10第4章调试及发现问题的解决11第5章程序测试及分析12第6章总结14参考文献15第1章课题概述本次JAVA课程设计的题目是制作一个简易的记事本程序(包括保存、另存为、查找、替换等功能)。1.1 课题的目的记
2、事本程序是日常生活中常用的记录文字的程序。人们往往会通过在本子上手写去记录下一些事件,然而文字数量一旦增加,或者随着时间推移纸张的变质,手写便成了一种负担。由于计算机的存储量较大,操作又比较简便,因此,采用特定的方法,通过编写计算机程序的方式来实现输入文字、保存、另存为、打开、查找、替换和字体设置等功能,这无疑是具有较大的实际意义。1.2 课题的要求1.2. 1主界面的要求(1)程序运行后应首先屏幕上显示出一个主界面,左上角标有记事本三字,赋有窗口缩小放大和关闭和文本输入的功能,并将文件、编辑、格式等功能罗列在主菜单上供用户进行选择,以便进行相应的操作。(2)文本文字应能够从键盘输入,并且输入
3、过程中可以不断更新输入文字信息。(3)主界面右侧应有一个滚动条。当鼠标移到主菜单上各选项时,应下拉出相应的子功能。1.2.2程序实现的功能要求(1)文本的输入通过建立一个文本域来进行。(2)选择路径后,输入的文本通过节点流放入缓存中,通过不断写入刷新,以实现保存和另存为的功能。(4)通过事件响应,弹出打开对话框,选择要打开的文档,通过节点流放入一个数组中,读取数组中的内容并且将读取的字符串拼接,以此实现打开功能。(5)确定光标位置,根据选择是否要区分大小写,使用SeleCt方法在整个文档中查找需要的内容。(6)根据选择是否要区分大小写,输入查找内容后和要替换的内容,利用replaceAll方法
4、或replaceFirst方法来实现替换和全部替换功能。(7)创建JDiaIOg对话框,将字体设置的要求放入列表中并添加滚动条,通过点击做出事件回应,调用SetFont方法加以实现字体设置功能。第2章概要设计2.1整个程序的模块结构及流程根据课题要求,整个程序按功能可划分为保存、另存为、打开、查找、替换、字体这六个主要模块。除上述主要功能模块之外,为更好地提供程序的人机交互能力,程序还应提供退出程序的助模块。程序各功能模块的划分,及主要流程如图2-1整个程序各功能模块间的流程2.2主界面的设计由于用户的入需要一个界面来完成,这个界面除了要有窗口缩小、放大和关闭的功能,其本身的大小不随输入的过程
5、而改变,这时,就需要一个图形界面来完成这些功能。首先,通过调用系统的JFranIe来构造一个框架,设置标题,窗口的大小以及使窗口可见,this.SetDefau1tCIoseOperation(JFrame.DISPOSE_ON_CLOSE)这个方法的使用可以在点击窗口右上角的小红叉时关闭窗口,这样就完成了一个简易的图形界面。其次,为了实现记事本的各功能,要创建一个容器。还需在图形界面上添加菜单栏,使用川enuBar方法创建一个水平菜单栏,将其添加进容器并置于容器最北边,利用JMerm方法编辑出“文件”“编辑”和“格式”三部分,分别将其添加进川enuBar中,在利用JMenUItein编辑出“
6、保存”“另存为”“打开”“查找”替换和字体”,分别添加进JMenU中,并且用addSeparator()方法添加分割线。最后,也是最主要的,实现文字输入,通过JTCXtArea方法实现文本域,给这个文本域设置大小,这样就可以文字输入了。还要在文本域里添加一个滚动条,将这个滚动条添加进容器里,滚动条的功能得以实现。由此,整个主界面的设计得以完成。如图2-2所示。图2-2主界面设计第3章程序功能的实现3.1主函数的实现程序运行,从主方法入手,调用NOteBook的方法,继而进入主类执行程序,显示一个图形界面,屏幕上会显示出记事本界面。然后根据用户选择的菜单项,调用相应的功能模块,功能模块调用过程中
7、或调用结束后,输出程序功能的执行结果。publicstaticvoidmain(Stringargs)newNoteBook();)3.2主要功能模块的实现3.2.1保存的实现保存功能模块首先需要得到输入的文本信息,实现对于“保存”事件的监听。利用一个if循环,如果路径为空,调用一个JDialog方法,构造一个保存对话框,选择文件和路径后,将其放入一个节点流中,将此节点流放入缓存中,不断写入,不断刷新,直至结束,关闭此流。如果路径不为空,直接在节点流中写入新信息,不断刷新,直至结束,关闭此流。保存功能的代码实现如下:publicvoidactiOnPerformcd(ActionEvente)
8、(Strings2=jta.getText();得到文本信息if(e.getSource()=jmil)Stringfilepath=null;if(filepath=null)JFramejf=newJFramC();fd.setVisible(true);创建保存对话框FileDialogfd=newFilcDialog(jf,“保存,FileDialog.SAVE);StringfilePath=fd.getDirectory();StringfiIeName=fd.getFile();filepath=filePath+fiIeName;得到文件的绝对路径tryFileWriterfo
9、s=newFileWriter(filepath+”.txt);BuffercdWriterbw=newBuffercdWriter(fos);放入缓存中charch=s2.toCharArray();for(inti=0;in,)(bw.newLine();continue;)bw.write(chi);写入信息)bw.flush();bw.close();catch(FileNotFoundExceptionel)(el.PrintStackTrace();)catch(IOExccptionel)el.PrintStackTrace();)3.2.2另存为的实现另存为功能模块和保存功能模
10、块十分相似,与保存功能相比,另存为少了if循环的判断,直接调用一个JDialOg方法,构造一个保存对话框,选择文件和路径后,将其放入一个节点流中,将此节点流放入缓存中,不断写入,不断刷新,直至结束,关闭此流。另存为功能的代码实现如下:publicvoidactionPerformed(ActionEvente)(Strings2=jta.getText();得到文本信息if(e.getSource()=jmi2)(JFramejf2=newJFrame();fd.setVisible(true);创建另存为对话框FileDialogfd=newFiIeDialog(jf2,”另存为,FileD
11、ialog.SAVE);StringfilePath=fd.getDirectory();StringfiIeName=fd.getFile();try(FileWriterfos=newFileWriter(filePath+fiIeName+”.txt);BufferedWriterbw=newBuffercdWriter(fos);放入缓存中charch=s2.toCharArray();for(inti=0;ich.length-1;i+)if(chi=n)bw.newLine();continue;)bw.write(chi);写入信息)bw.flush();bw.close();c
12、atch(FileNotFoundExceptionel)el.PrintStackTrace();catch(IOExccptionel)el.PrintStackTrace();)2.4.3打开的实现打开功能模块的实现首先需要实现对于“打开”事件的监听。调用一个JDialOg方法,构造一个打开对话框,选择文件和路径后,将其放入一个节点流中,将此节点流里的内容放入一个长度为1024的数组中,并且定义一个空字符串,读取数组中的内容,通过While循环执行,只要没有读到最后的内容,就不断拼接读到的字符串,最后将此字符串通过SetTeXt()方法在文本域中显示。打开功能的代码实现如下:public
13、voidactionPerformed(ActionEvente)Strings2=jta.getText();得到文本域的内容if(e.getSource()=jmi3)JFramejfl=newJFrame();fd.setVisible(true);创建打开对话框FileDialogfd=newFileDialog(jf1,打开“,FileDialog.LOAD);StringfiIePath=fd.getDirectory();StringfiIeName=fd.getFile();tryFileInputStreamfis=newFileInputStream(fiIePath+fi
14、IeName);byteb=newbyte1024;Stringsi=”;while(true)inttemp=fis.read(b);读取节点流里的内容放入数组if(temp=-1)break;si+=newString(b,0,temp);拼接读取的字符串jta.setText(si);文本域中显示内容catch(FileNotFoundExceptionel)el.PrintStackTrace();catch(IOExceptionel)el.PrintStackTrace();2.4.4查找的实现查找功能模块的实现首先需要实现对于“查找”事件的监听,并且对调用一个自己构造的FindR
15、eplaceDialog方法。关于此方法的实现先要调用一个JDiaIog方法,构造一个查找和替换对话框,通过getCaretPosition()方法确定光标的位置并且通过getText()方法获得要查找的内容,通过if循环判断,如果区分大小写被选择,再进行内部的if循环,如果从光标位置开始到最后出现了要查找的内容,选中要查找的内容,否则就显示一个找不到“”(查找的内容)的对话框。如果区分大小写没有被选择,那么只需在此前的内部if循环执行前添加一个toLowerCase()方法,把要查找的内容和整个文本的内容都变成小写,其余步骤和之前一样就能实现了。查找功能的代码实现如下:publicvoidactiOnPerformed(ActionEvente)Strings2=jta.getText();获取文本域内容if(e.getSource()=jmi4)newFinClReP