当前位置:文档之家› 记事本程序说明书

记事本程序说明书

*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期Java 课程设计题目:记事本程序专业班级:计算机科学与技术四班姓名:杨大武学号:10240426指导教师:李睿成绩:____________________一、摘要 (1)二、前言 (4)三、设计分析 (5)3.1系统概述 (5)3.2系统运行环境 (5)3.3功能需求描述 (5)四、总体设计 (5)五、系统的实现 (6)5.1主界面包括 (6)5.2完成图5-1程序代码 (8)六、操作方法与试验结果 (8)6.1 操作方法 (8)6.2复制粘贴功能 (9)6.3实验结果 (10)七、设计体会 (10)八、致谢 (11)九、参考文献 (12)附录 (13)一、摘要随着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机的算法理论基础和软件设计的基础。

JAVA是实践性很强的课程。

课程设计是加强实践能力的一个强有力手段。

要求掌握JAVA的应用、编写、上机调试的基本方法。

本次课程设计实现了一个简单记事本系统所需的功能,以及具体的设计步骤。

该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,能实现编辑、保存、另存为、查找替换等功能等功能。

该程序主要用到了Java swing和事件监听等在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。

关键词:java , Java swing,事件监听,简单记事本二、前言传统记事本存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。

然而,本系程序对以上缺点设计,也是科学化、正规化的管理,与世界接轨的重要条件。

现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。

功能也是应有尽有,有能改变字体的,有能改变文字颜色的。

但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。

从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。

本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。

三、设计分析3.1系统概述记事本主要是对文字进行编辑处理的软件。

能进行新建、打开、保存等功能;并且能运用剪贴、复制、粘贴、清除功能,对文字更方便的录入。

另外还可以根据用户的需要查找相应的文字,实现编辑功能。

3.2系统运行环境●操作系统:Windows XP●开发语言: JAVA●开发工具:JCreatorPro3.3功能需求描述由于记事本是一套简单的文本编辑器。

要求记事本不但要具备完善的编辑、方便的性能,还要提供更简便的操作。

这就要求设计人员在编辑过程当中尽可能的考虑到。

包括以下内容:1、对文本进行编辑;2、用户根据不同的权限可对文本进行添加、删除、修改等操作;3、对记事本进行各种编辑(精确、简单);四、总体设计记事本采用现有的编辑,简单的记事本编辑器,充分利用大家现有的编辑,减少大家的时间,提高大家对记事本的熟练。

记事本就具备编辑功能,可以及时根据大家需求进行新建、保存操作。

记事本筐架图4-1五、系统的实现5.1主界面包括文件、编辑、查找、帮助操作界面子目录包括 复制、粘贴、新建、查找等,如图3-1显示。

图5-1.1记事本小程序文件 编辑 查找 帮助新建保存打开复制粘贴清除查 找查找 替换帮助图5-1.2 图5-1.3图5-1.45.2完成图5-1程序代码见附录六、操作方法与试验结果6.1 操作方法将需的文字录入该文本框,然后进行该程序的功能测试,以《我住在麦子里》为例。

我们要实现文本框的查找功能。

如查找文中的“大地”,将鼠标移动到查找后单击,然后输入“大地”。

图6-1.16.2复制粘贴功能选中复制内容,点击复制,然后在需要的位置点击粘贴。

图6-1.26.3实验结果输入要查找的内容时,点击“查找”,程序就能找出文中包含“大地”的这句。

并将其置于页顶。

实现了文字的查找功能。

对于所复制的内容将光标移动到相应的位置,然后点击粘贴,之后就实现了文字的复制粘贴功能。

七、设计体会通过设计记事本小程序,了解了实现该类型程序的方法,掌握了需要用到的代码、类、算法等。

有些小问题还是没有掌握,比如建立清晰的类层次、分析和定义各个类,每个类中要有各自的属性和方法、面向对象的机制(继承、派生及多态性)来实现系统功能。

我将在今后的学习过程中尽量完善自己的编程水平,使自己能够尽快的适应社会工作的需要,以求做到最好。

八、致谢在这里感谢我的指导老师王燕老师和李睿老师,她们在我的课程设计过程中提出了指导性的方案和架构:在定义类各类和分析各类的属性和方法上帮我理清了详细的类层次;在系统整体设计时要求用面向对象机制并运用继承、派生和多态性;并在设计过程中不断指引我发现错误,改正错误。

并教育我要思路开阔,发散思维,考虑问题全面细致,并指引我阅读相关的资料和书籍,不断完善自己的程序,使我的课程设计能够顺利完成。

九、参考文献[1]曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.10[2]耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6[3]明日科技.Java经典编程.北京:清华大学出版社,2012.10[4]李尊朝,苏军.Java语言程序设计.北京:中国铁道出版社,2004.2[5]王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990.附录import java.awt.*;import java.awt.event.*;import java.io.*;import java.awt.datatransfer.*;class MyMenuBar extends MenuBar{public MyMenuBar(Frame parent){parent.setMenuBar(this);}public void addMenus(String [] menus){for(int i=0;i<menus.length;i++)add(new Menu(menus[i]));}public void addMenuItems(int menuNumber,String[] items){for(int i=0;i<items.length;i++){if(items[i]!=null)getMenu(menuNumber).add(new MenuItem(items[i])); else getMenu(menuNumber).addSeparator();}}public void addActionListener(ActionListener al){for(int i=0;i<getMenuCount();i++)for(int j=0;j<getMenu(i).getItemCount();j++)getMenu(i).getItem(j).addActionListener(al);}}class MyFile{private FileDialog fDlg;public MyFile(Frame parent){fDlg=new FileDialog(parent,"",FileDialog.LOAD);}private String getPath(){return fDlg.getDirectory()+"\\"+fDlg.getFile();}public String getData() throws IOException{fDlg.setTitle("打开");fDlg.setMode(FileDialog.LOAD);fDlg.setVisible(true);BufferedReader br=new BufferedReader(new FileReader(getPath()));StringBuffer sb=new StringBuffer();String aline;while((aline=br.readLine())!=null)sb.append(aline+'\n');br.close();return sb.toString();}public void setData(String data) throws IOException{fDlg.setTitle("保存");fDlg.setMode(FileDialog.SAVE);fDlg.setVisible(true);BufferedWriter bw=new BufferedWriter(new FileWriter(getPath()));bw.write(data);bw.close();}}class MyClipboard{private Clipboard cb;public MyClipboard(){cb=Toolkit.getDefaultToolkit().getSystemClipboard();}public void setData(String data){cb.setContents(new StringSelection(data),null);}public String getData(){Transferable content=cb.getContents(null);try{return (String) content.getTransferData(DataFlavor.stringFlavor);//DataFlavor.stringFlavor会将剪贴板中的字符串转换成Unicode码形式的String对象。

//DataFlavor类是与存储在剪贴板上的数据的形式有关的类。

}catch(Exception ue){}return null;}}class MyFindDialog extends Dialog implements ActionListener{private Label lFind=new Label("查找字符串");private Label lReplace=new Label("替换字符串");private TextField tFind=new TextField(10);private TextField tReplace=new TextField(10);private Button bFind=new Button("查找");private Button bReplace=new Button("替换");private TextArea ta;public MyFindDialog(Frame owner,TextArea ta){super(owner,"查找",false);this.ta=ta;setLayout(null);lFind.setBounds(10,30,80,20);lReplace.setBounds(10,70,80,20);tFind.setBounds(90,30,90,20);tReplace.setBounds(90,70,90,20);bFind.setBounds(190,30,80,20);bReplace.setBounds(190,70,80,20);add(lFind);add(tFind);add(bFind);add(lReplace);add(tReplace);add(bReplace);setResizable(false);bFind.addActionListener(this);bReplace.addActionListener(this);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){MyFindDialog.this.dispose();}});}//构造函数结束public void showFind(){setTitle("查找");setSize(280,60);setVisible(true);}public void showReplace(){setTitle("查找替换");setSize(280,110);setVisible(true);}private void find(){String text=ta.getText();String str=tFind.getText();int end=text.length();int len=str.length();int start=ta.getSelectionEnd();if(start==end) start=0;for(;start<=end-len;start++){if(text.substring(start,start+len).equals(str)){ta.setSelectionStart(start);ta.setSelectionEnd(start+len);return;}}//若找不到待查字符串,则将光标置于末尾ta.setSelectionStart(end);ta.setSelectionEnd(end);}public Button getBFind() {return bFind;}private void replace(){String str=tReplace.getText();if(ta.getSelectedText().equals(tFind.getText()))ta.replaceRange(str,ta.getSelectionStart(),ta.getSelectionEnd());else find();}public void actionPerformed(ActionEvent e) {if(e.getSource()==bFind)find();else if(e.getSource()==bReplace)replace();}}class MyMemo extends Frame implements ActionListener{private TextArea editor=new TextArea(); //可编辑的TextAreaprivate MyFile mf=new MyFile(this);//MyFile对象private MyClipboard cb=new MyClipboard();private MyFindDialog findDlg=new MyFindDialog(this,editor);public MyMemo(String title){ //构造函数super(title);MyMenuBar mb=new MyMenuBar(this);//添加需要的菜单及菜单项mb.addMenus(new String[]{"文件","编辑","查找","帮助"});mb.addMenuItems(0,new String[]{"新建","打开","保存",null,"全选"});mb.addMenuItems(1,new String[]{"剪贴","复制","粘贴","清除",null,"全选"});mb.addMenuItems(2,new String[]{"查找",null,"查找替换"});mb.addMenuItems(3,new String[]{"我的记事本信息"});add(editor); //为菜单项注册动作时间监听器mb.addActionListener(this);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){MyMemo.this.dispose();}}); //分号不能忘了} //构造函数完public void actionPerformed(ActionEvent e){String selected=e.getActionCommand(); //获取菜单项标题if(selected.equals("新建"))editor.setText("");else if(selected.equals("打开")){try{editor.setText(mf.getData());}catch(IOException ie){}}else if(selected.equals("保存")){try{mf.setData(editor.getText());}catch(IOException ie){}}else if(selected.equals("退出")){dispose();}else if(selected.equals("剪贴")){//将选中的字符串复制到剪贴板中并清除字符串cb.setData(editor.getSelectedText());editor.replaceRange("",editor.getSelectionStart(),editor.getSelectionEnd());}else if(selected.equals("复制")){cb.setData(editor.getSelectedText());}else if(selected.equals("粘贴")){String str=cb.getData();editor.replaceRange(str,editor.getSelectionStart(),editor.getSelectionEnd());//粘贴在光标位置}else if(selected.equals("清除")){editor.replaceRange("",editor.getSelectionStart(),editor.getSelectionEnd());}else if(selected.equals("全选")){editor.setSelectionStart(0);editor.setSelectionEnd(editor.getText().length());}else if(selected.equals("查找")){findDlg.showFind();}else if(selected.equals("查找替换")){findDlg.showReplace();}}public static void main(String[] args){MyMemo memo=new MyMemo("记事本");memo.setSize(650,450);memo.setVisible(true);}}。

相关主题