记事本的设计与功能实现Java课程设计报告_第1页
记事本的设计与功能实现Java课程设计报告_第2页
记事本的设计与功能实现Java课程设计报告_第3页
记事本的设计与功能实现Java课程设计报告_第4页
记事本的设计与功能实现Java课程设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

PAGE湖南商学院《面向对象程序设计》课程设计报告题目记事本姓名:学号:专业:计算机科学与技术班级:计科指导教师:职称:讲师计算机与电子工程学院2009年6月课程设计评审表姓名学院计算机与电子工程学院学号专业班级计科题目记事本评审意见评审成绩指导教师签名职称评审时间年月日PAGE14目录1课程设计过程概述 12课程设计题目描述和基本设计要求 12.1课程设计题目描述 12.2基本设计要求 13系统需求分析与设计 13.1系统需求分析 13.2其他需求分析 23.3系统设计 24各功能模块设计 34.1文本编辑框模块设计 34.2菜单条模块设计 34.3文件模块设计 44.4编辑模块设计 64.5工具模块设计 104.6帮助模块设计 104.7工具条模块设计 114.8异常处理情况说明 125系统实现与测试 126课程设计总结 136.1遇到的问题及解决办法 136.2心得体会 13参考文献 14附录 14记事本1课程设计过程概述在2009年6月,学院对我们进行了为期两周的Java课程培训,要求我们在实验楼二楼网络机房进行了学年度课程设计。这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,提高用Java编程的实际动手能力并增强大家对面向对象的了解。这次课程设计的主要内容是独立用Java语言开发一个小的应用程序、网络应用程序或者是管理系统,从而深刻体会面向对象软件开发的方法。2课程设计题目描述和基本设计要求2.1课程设计题目描述我设计的是记事本。主要用到的是图形界面,可以在文本编辑框里进行编辑,在菜单选项里进行打开、保存、另存为、查找、替换、等功能。界面上的按钮有文件、编辑、工具和帮助。还添加有工具条,工具条中有按钮复制、粘贴和全选。2.2基本设计要求(1)系统安全、灵活、可靠;(2)功能齐全;(3)操作方便、简单,界面友好;3系统需求分析与设计3.1系统需求分析记事本是一个对可以文字进行简单处理的软件,既简单很容易操作又很方便用户使用,所以要求一般的功能都能满足。本系统能实现在文本框里直接进行编辑,编辑完后可以对文字进行保存和另存为,把文字存储到用户需要的地方。并且可以在编辑过程中可以对文字进行复制、全选、粘贴和剪切,使编辑变得更简洁。另外也可以直接打开计算机里的文本文档。还可以实现在打开的文档里进行查找和替换,查找文档中用户所有所需要的内容,然后再替换为要更改的内容。本系统还有计算器的功能,对数字进行一些简单的四则运算。如果要退出记事本,会提示是否对当前正在编辑的文档进行保存,然后再安全的退出。3.2其他需求分析(1)性能描述易于操作,打开、保存、查找、替换等功能要方便,要求在点击关闭编辑框的时候有提示是否保存。(2)设计约束开发工具:jdk6.0和命令提示符;能实现用户所定义的各项需求。(3)界面要求以Windows窗口形式显示,有一个编辑框可以直接进行文字编辑,菜单栏为文件、编辑、工具和帮助。在文件菜单下有按钮打开、保存、另存为、退出。编辑菜单下有按钮复制、粘贴、全选、剪切。工具菜单下有按钮计算器。帮助菜单下有按钮关于帮助。然后工具条菜单下有单独列出来的按钮复制、粘贴和全选,方便直接进行操作。3.3系统设计要求记事本用图形界面实现,并能实现编辑、保存、另存为、查找替换等功能。:系统中用到了一些基本类、调用了一些包和继承了一些类,如图1所示。图1系统类图4各功能模块设计4.1文本编辑框模块设计文本编辑框(如图2),可以方便用户直接进行编辑,及新建功能:图2文本编辑框4.2菜单条模块设计创建菜单条,添加按钮:文件、编辑、工具、帮助和工具条功能(如图3)。在TextDemo类中,实现这一功能的代码为:publicJMenuBarcreatBar(){ bar=newJMenuBar(); creatMenu(bar,"文件"); creatMenu(bar,"编辑"); creatMenu(bar,"工具"); creatMenu(bar,"帮助"); returnbar; }菜单条的结构功能如图3所示:图3菜单条的结构功能图4.3文件模块设计(1)在文件中实现打开功能,界面图形如图4,添加文件中按钮打开的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name); if(name.equals("文件")){menu.add(creatItem("打开"));}bar.add(menu);}图4打开功能界面图(2)在文件中实现保存、另存为功能,其界面图形如图5,添加文件中按钮保存、另存为的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name); if(name.equals("文件")){menu.add(creatItem("保存"));menu.add(creatItem("另存为"));}bar.add(menu);}图5保存、另存为功能界面图(3)在文件中实现退出功能,其界面图形如图6,添加文件中退出按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name); if(name.equals("文件")){menu.add(creatItem("退出"));}bar.add(menu);}图6退出功能界面图4.4编辑模块设计(1)在编辑中实现复制、粘贴功能,其界面图形如图7、8、9、10,添加编辑中复制、粘贴按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name);elseif(name.equals("编辑")){ menu.add(creatItem("复制"));menu.add(creatItem("粘贴"));}bar.add(menu);}图7实现复制、粘贴功能界面图1图8实现复制、粘贴功能界面图2图9实现复制、粘贴功能界面图3图10实现复制、粘贴功能界面图4(2)在编辑中实现全选功能,其界面图形如图11、12,添加编辑中全选按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name);elseif(name.equals("编辑")){ menu.add(creatItem("全选"));}bar.add(menu);}图11实现全选功能界面图1图12实现全选功能界面图2(3)在编辑中实现剪切功能,其界面图形如图13、14,添加编辑中剪切按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name);if(name.equals("文件")){…}elseif(name.equals("编辑")){ menu.add(creatItem("剪切"));}bar.add(menu);}图13实现剪切功能界面图1图14实现剪切功能界面图24.5工具模块设计在工具中实现计算器功能,其界面图形如图15,添加工具中计算器按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name);if(name.equals("文件")){…}elseif(name.equals("编辑")){…}elseif(name.equals("工具")){ menu.add(creatItem("计算器"));}bar.add(menu);}图15实现计算器功能界面图4.6帮助模块设计在帮助中实现关于帮助功能,其界面图形如图16,添加帮助中关于帮助按钮的方法为:publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name);if(name.equals("文件")){…}elseif(name.equals("编辑")){…}elseif(name.equals("工具")){…}elseif(name.equals("帮助")){ menu.add(creatItem("关于帮助")); }bar.add(menu);}图16实现帮助功能界面图4.7工具条模块设计在工具条中有复制、粘贴、全选和查找按钮,其在TextToolBar类中实现添加的方法为: publicJToolBarcreatToolBar(){ toolbar=newJToolBar(); toolbar.add(text.creatButton("复制")); toolbar.add(text.creatButton("粘贴")); toolbar.add(text.creatButton("全选")); toolbar.add(text.creatButton("查找")); returntoolbar; }其中查找的界面图形如图17:图17实现查找功能界面图4.8异常处理情况说明(1)打开、保存文件时的异常处理需要处理的异常:IOException(2)复制、粘贴时的异常处理图形界面如图18。图18实现异常处理功能界面图5系统实现与测试使用JDK运行程序时,将主程序TextDemo和其下的三个文件都保存在D盘中。打开一个DOS窗口,使用命令:javac*.java,将所有的java源程序进行编译。编译窗口如图19。图19编译窗口使用命令:javaTextDemo,运行程序。运行后界面图如图20。图20运行后界面图6课程设计总结6.1遇到的问题及解决办法在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。并且Java的学习过程本身就没有学踏实,经过一个学期后,更加感觉到很陌生。对于以上的问题,自己有清楚的认识,首先必须要对计算机产生兴趣,多阅读相关的书籍,多跟精通此方面的老师和同学交流、像他们学习。还有就是应该多动手编程。6.2心得体会在这次的学年度课程设计中,综合运用了Java语言。用界面实现记事本,并实现其基本功能。通过这次为时二个星期的课程设计,我学到了很多的东西,下面就这在这次课程设计中的心得体会总结如下:在这次课程设计中,主要是运用Java语言来编写,并可运用其他的技术。虽然是设计一个简单的记事本,但对我来说也存在很多困难,这让我看到了自己和身边同学的差距,激起我要认真学习的动力。在这个过程中,我学到了很多的知识,同时也非常感谢刘耀参考文献[1]朱福喜,傅建明.JAVA项目设计与开发范例[M].北京:电子工业出版社,2005.[2]王强,贾素玲.JAVA程序设计[M].北京:清华大学出版社,2007.[3]王文涛,袁海燕.JAVA实用程序设计100例[M].北京:人民邮电出版社,2005.[4]耿祥义.JAVA基础教程[M].北京:清华大学出版社,2004.[5]刘宝林.JAVA程序设计与案例[M].北京:高等教育出版社,2006附录记事本主程序TextDemo代码:importjava.awt.BorderLayout;importjava.awt.FileDialog;importjava.awt.Toolkit;importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.StringSelection;importjava.awt.datatransfer.Transferable;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JTextArea;//importorg.jvnet.substance.SubstanceLookAndFeel;//importorg.jvnet.substance.skin.CremeSkin;/***记事本的主程序**@authorAdministrator**//***@authorAdministrator**/publicclassTextDemoextendsJFrameimplementsActionListener{ privateJPanelcenterPanel;//中心面板 privateTextJMenujmenu=newTextJMenu(this);//菜单对象 privateTextToolBartoolbar=newTextToolBar(this);//工具栏 privateJTextAreajta=newJTextArea(300,300);//工作区 privateClipboardclipboard;//剪切板 privateFileDialogsaveFileDialog;//保存文件的对话框 privateSearchAndReplaceserachAndReplace;//查找和替换对象 /** *构造器 */ publicTextDemo(){ //SubstanceLookAndFeel.setSkin(newCremeSkin());//加载第三方组件 init(); } publicJTextAreagetJta(){ returnjta; } /** *创建按钮的方法 *@parambuttonname *@return:按钮 */ publicJButtoncreatButton(Stringbuttonname){ JButtonbutton=newJButton(buttonname); //向按钮中添加事件 button.addActionListener(this); returnbutton; } /** *创建中心面板 *@return */ publicJPanelcreatCenterPanel(){ centerPanel=newJPanel(); centerPanel.setLayout(newBorderLayout()); centerPanel.add(jta); returncenterPanel; } /** *初始化容器 */ publicvoidinit(){ this.setTitle("记事本"); jta.setLineWrap(true); //添加菜单 jmenu.setBar(); toolbar.setToolBar(); Toolkittoolkit=Toolkit.getDefaultToolkit(); clipboard=toolkit.getSystemClipboard(); this.setSize(500,400); this.add(creatCenterPanel(),BorderLayout.CENTER); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ intval=JOptionPane.showConfirmDialog(null,"是否保存?","退出",JOptionPane.YES_NO_CANCEL_OPTION); if(val!=JOptionPane.CANCEL_OPTION||val==JOptionPane.NO_OPTION){ System.exit(0); }elseif(val==JOptionPane.YES_OPTION){ saveFile(); } } }); //this.pack(); this.setVisible(true); } /** *保存文件 */ publicvoidsaveFile(){ saveFileDialog=newFileDialog(this,"savefile",FileDialog.SAVE); saveFileDialog.show(); Stringfilename=saveFileDialog.getDirectory() +saveFileDialog.getFile(); System.out.println(filename); newTextJMenu().saveFile(filename); } /** *main() * *@paramargs */ publicstaticvoidmain(String[]args){ TextDemotest=newTextDemo(); } publicvoidactionPerformed(ActionEvente){ Stringcmd=e.getActionCommand(); if(cmd.equals("复制")){ Stringstr=jta.getSelectedText();//获得选中的字符串 StringSelectionselection=newStringSelection(str); clipboard.setContents(selection,null); }elseif(cmd.equals("粘贴")){ Transferablecontents=clipboard.getContents(this); if(contents==null){ return; } Stringstr=""; try{ str=(String)contents .getTransferData(DataFlavor.stringFlavor); }catch(Exceptione1){ JOptionPane.showMessageDialog(null,"文件转换出错!"); } //替换选中的文件 jta.replaceRange(str, jta.getSelectionStart(), jta.getSelectionEnd()); }elseif(cmd.equals("全选")){ jta.selectAll(); }elseif(cmd.equals("查找")){ serachAndReplace=newSearchAndReplace(this); } }}(1)TextJMenu类的代码如下:importjava.awt.FileDialog;importjava.awt.Toolkit;importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.StringSelection;importjava.awt.datatransfer.Transferable;importjava.awt.datatransfer.UnsupportedFlavorException;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.image.BufferStrategy;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.Writer;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JOptionPane;/***记事本的菜单类**@authorAdministrator**/publicclassTextJMenu{ privateTextDemotext; privateJMenuBarbar;//菜单条 privateJMenumenu;//菜单 privateJMenuItemitem;//菜单项 privateFileDialogopenFileDialog;//打开文件的对话框 privateFileDialogsaveFileDialog;//保存文件的对话框 privateFileDialogsaveAsFileDialog;//另存为文件的对话框 Stringfilename;//文件名 Clipboardclipboard;//剪切板 privateToolkittoolkit;//工具 privateBufferedReaderread;//读文件 privateBufferedWriterout;//写文件 /** *无参的构造器 */ publicTextJMenu(){ } /** *重载的构造器 * *@paramtext */ publicTextJMenu(TextDemotext){ this.text=text; } /** *初始化对话框 */ publicvoidinit(){ //获得系统剪切板 toolkit=Toolkit.getDefaultToolkit(); clipboard=toolkit.getSystemClipboard(); openFileDialog=newFileDialog(text,"打开文件",FileDialog.LOAD); saveAsFileDialog=newFileDialog(text,"保存文件",FileDialog.SAVE); saveFileDialog=newFileDialog(text,"另存为",FileDialog.SAVE); } /** *创建菜单条的方法 * *@return:菜单条 */ publicJMenuBarcreatBar(){ bar=newJMenuBar(); creatMenu(bar,"文件"); creatMenu(bar,"编辑"); creatMenu(bar,"工具"); creatMenu(bar,"帮助"); returnbar; } /** *添加菜单的方法 * *@parambar *@paramname */ publicvoidcreatMenu(JMenuBarbar,Stringname){ menu=newJMenu(name); if(name.equals("文件")){ menu.add(creatItem("新建")); menu.add(creatItem("打开")); menu.addSeparator(); menu.add(creatItem("保存")); menu.add(creatItem("另存为")); menu.add(creatItem("退出")); }elseif(name.equals("编辑")){ menu.add(creatItem("复制")); menu.add(creatItem("粘贴")); menu.add(creatItem("全选")); menu.add(creatItem("剪切")); }elseif(name.equals("工具")){ menu.add(creatItem("计算器")); }elseif(name.equals("帮助")){ menu.add(creatItem("关于帮助")); } bar.add(menu); } /** *创建菜单项的方法 * *@paramname *@return */ publicJMenuItemcreatItem(Stringname){ item=newJMenuItem(name); item.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringcmd=e.getActionCommand();//获得事件 if(cmd.equals("新建")){ text.getJta().setText(""); }elseif(cmd.equals("打开")){ //显示打开文件的对话框 openFileDialog.show(); //获得文件名 filename=openFileDialog.getDirectory() +openFileDialog.getFile(); System.out.println(filename); text.getJta().setText(""); readFile(filename); }elseif(cmd.equals("保存")){ saveFileDialog.show(); filename=saveFileDialog.getDirectory() +saveFileDialog.getFile(); System.out.println(filename); saveFile(filename); }elseif(cmd.equals("另存为")){ saveAsFileDialog.show(); filename=saveAsFileDialog.getDirectory() +saveAsFileDialog.getFile(); saveFile(filename); }elseif(cmd.equals("全选")){ text.getJta().selectAll(); }elseif(cmd.equals("复制")){ Stringstr=text.getJta().getSelectedText();//获得选中的字符串 StringSelectionselection=newStringSelection(str); clipboard.setContents(selection,null); }elseif(cmd.equals("剪切")){ Stringstr=text.getJta().getSelectedText(); StringSelectionselection=newStringSelection(str); clipboard.setContents(selection,null); //全部替换选中的为空 text.getJta().replaceRange("", text.getJta().getSelectionStart(), text.getJta().getSelectionEnd()); }elseif(cmd.equals("粘贴")){ Transferablecontents=clipboard.getContents(this); if(contents==null){ return; } Stringstr=""; try{ str=(String)contents .getTransferData(DataFlavor.stringFlavor); }catch(Exceptione1){ JOptionPane.showMessageDialog(null,"文件转换出错!"); } //替换选中的文件 text.getJta().replaceRange(str, text.getJta().getSelectionStart(), text.getJta().getSelectionEnd()); }elseif(cmd.equals("退出")){ intval=JOptionPane.showConfirmDialog(null,"是否保存?", "退出",JOptionPane.YES_NO_CANCEL_OPTION); if(val!=JOptionPane.CANCEL_OPTION){ System.exit(0); } }elseif(cmd.equals("计算器")){ getCalcultor(); } } }); returnitem; } /** *读文件的方法 *@paramfile:要读的文件的路径 */ publicvoidreadFile(Stringfilename){ Filefile=newFile(filename); try{ read=newBufferedReader(newFileReader(file)); Stringstr=null; while((str=read.readLine())!=null){ System.out.println(str); text.getJta().append(str); text.getJta().append("\n"); } }catch(FileNotFoundExceptione){ JOptionPane.showMessageDialog(null,"errorfile!"); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ read.close(); }catch(IOExceptione){ e.printStackTrace(); } } } /** *保存文件的方法 *@paramfilename */ publicvoidsaveFile(Stringfilename){ Filefile=newFile(filename); try{ out=newBufferedWriter(newFileWriter(file)); //将工作区中的内容写到该文件中 Stringstr=text.getJta().getText().toString(); out.write(str); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ out.flush(); }catch(IOExceptione){ e.printStackTrace(); } try{ out.close(); }catch(IOExceptione){ e.printStackTrace(); } } } /** *获得系统的计算器 */ publicvoidgetCalcultor(){ Runtimerun=Runtime.getRuntime(); try{ run.exec("C:/WINDOWS/system32/calc.exe"); }catch(IOExceptione){ e.printStackTrace(); } } /** *对容器设置菜单 */ publicvoidsetBar(){ init(); text.setJMenuBar(creatBar()); }}(2)TextToolBar类的代码如下:importjava.awt.BorderLayout;importjavax.swing.JToolBar;publicclassTextToolBar{ privateJToolBartoolbar;//工具条 privateTextDemotext; /** *重载构造方法 */ publicTextToolBar(){ } publicTextToolBar(TextDemotext){ this.text=text; } /** *创建工具条 * *@return */ publicJToolBarcreatToolBar(){ toolbar=newJToolBar(); toolbar.add(text.creatButton("复制")); toolbar.add(text.creatButton("粘贴")); toolbar.add(text.creatButton("全选")); toolbar.add(text.creatButton("查找")); returntoolbar; } publicvoidsetToolBar(){ text.add(creatToolBar(),BorderLayout.NORTH); }}(3)SearchAndReplace类的代码如下:importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassSearchAndReplaceextendsJDialog{ privateJPanelcenterpanel;//中心面板 privateJPanelsearchPanel;//查找面板 privateJPanelreplacePanel;//替换面板 privateJTextFieldsearchField;//查找输入框 privateJTextFieldreplaceField;//替换输入框 privateJLabelsearchLabel;//计算查找个数的标签 privateJLabelreplaceLabel;//计算替换的标签 privateintnum; privateTextDemotext; /** *无参数的构造方法 */ publicSearchAndReplace(){ init(); } publicSearchAndReplace(TextDemotext){ this.text=text; init(); } /** *初始化容器 */ publicvoidinit(){ this.setTitle("查找"); this.setSize(500,150); this.setModal(true); searchField=newJTextField(20); replaceField=newJTextField(20); searchLabel=newJLabel("已成功查找个数:"+num); replaceLabel=newJLabel("已成功替换个数:"+num); this.add(creatCenterPanel()); this.addWindowListener(newWindowAdapter(){ publicvoidwindowC

温馨提示

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

评论

0/150

提交评论