Java记事本程序课程设计报告(共29页).doc

上传人:飞****2 文档编号:14140858 上传时间:2022-05-03 格式:DOC 页数:29 大小:314.50KB
返回 下载 相关 举报
Java记事本程序课程设计报告(共29页).doc_第1页
第1页 / 共29页
Java记事本程序课程设计报告(共29页).doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《Java记事本程序课程设计报告(共29页).doc》由会员分享,可在线阅读,更多相关《Java记事本程序课程设计报告(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上软 件 学 院课程设计报告书课程名称 面向对象课程设计 设计题目 记事本程序 专业班级 xx 学 号 xx 姓 名 xx 指导教师 徐娇月 201x年 6 月专心-专注-专业目录1 设计时间2011-06-05至2011-06-122 设计目的记事本主要是对文字进行编辑处理的软件。能进行新建、打开、保存等功能。另外还可以根据用户的需要查找替换相应的文字,实现编辑功能。通过面向对象程序设计对自己所学过的的知识加以掌握和运用。巩固面向对象设计理念的理解,熟练Java设计语言的运用。3设计任务记事本程序。要求如下:(1)使用图形用户界面实现。(2)必须有菜单、弹出式对话框组

2、件的实现。(3)能实现文字编辑、保存、另存为、查找、替换功能,其它功能可自行丰富。(4)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。提示:使用文件输入输出流。4 设计内容 4.1 需求分析4.1.1需求说明现在网络上各种文档编辑器数不胜数,有,。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的实现特定功能的记事本程序。4.1.2

3、功能需求本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1).菜单中有“文件”,“编辑”,“作者”三个主菜单。(2).“文件”有“新建”“打开”“保存”“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。(3).“编辑菜单”有“查找、替换、时间日期”功能。(4).“作者”菜单中有关于记事本程序的作者信息。4.2概要设计4.2.1程序设计思路Java记事本程序是:图形界面、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,大部分选择了awt来完成实现,其中也有swing组件。文本编辑区就选用了TaxtArea作为主

4、要的部件。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能。在设计类的时候,考虑到简单明了,就用了三个类,一个主类、一个类设计构造函数实现监听接口作为程序的整体框架,一个类设计构造函数实现查找替换功能。所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。4.2.2程序运行

5、环境及界面1.操作系统:Windows XP2.开发语言: JAVA3.开发工具: MyEclipse4.运行界面: 如图4-1所示图4-1运行界面4.3功能模块设计4.3.1功能模块说明图首先创建一个名为NoteBook的类并继承Frame类实现监听接口作为最底层的容器(具体过程在“4.3.2自定义类及接口说明”作说明)。菜单栏中有“文件”、“编辑”、“作者”三项菜单,分别添加的相应的项,各实现其功能。如图4-2所示图4-2功能模块说明图4.3.2 自定义类及接口说明1.MyFindDialog类l 继承Dialog类l 实现ActionListene接口l 实现查找替换功能class My

6、FindDialog extends Dialog implements ActionListener定义查找和替换的标签和文本域 Label lFind=new Label(查找字符串); Label lReplace=new Label(替换字符串); TextField tFind=new TextField(10); TextField tReplace=new TextField(10); Button bFind=new Button(查找); Button bReplace=new Button(替换); TextArea ta;2.Note类l 继承Frame类l 实现Acti

7、onListener接口l 作为程序的整体框架class Note extends Frame implements ActionListener定义菜单,菜单项,对话框等。MenuBar mb = new MenuBar();Menu item1=new Menu(文件);MenuItem subitem11=new MenuItem(新建,new MenuShortcut(KeyEvent.VK_A, false);MenuItem subitem23=new MenuItem(时间日期);Menu item3=new Menu(作者);MenuItem subitem31=new Men

8、uItem(作者信息);MyFindDialog findDlg=new MyFindDialog(this,tf);3.NoteBook类l 主类,完成对象的实例化及显示public class NoteBookMain方法中实例化news Note();显示界面。4.3.3 类中方法介绍1.MyFindDialog类(1)构造方法:MyFindDialog(Frame owner,TextArea ta)设计构造函数,带有指定的所有者框架和标题。方法部分内容如下:设置大小,并添加类中定义的各个组件。super(owner,查找); this.ta=ta; setLayout(null);

9、lFind.setBounds(10,30,80,20); lReplace.setBounds(10,70,80,20); add(bReplace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); 实现关闭对话框时的监听。 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog.this.dispose(); );(2)显示查找和替换的对话

10、框方法:showFind()和showReplace()方法部分内容如下:调用时显示查找对话框, public void showFind() setTitle(查找); setSize(280,60); setVisible(true);调用时显示查找替换对话框 public void showReplace() setTitle(查找替换); setSize(280,110); setVisible(true); (3)查找方法: private void find()方法部分内容如下: String text=ta.getText(); String str=tFind.getText(

11、); 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.setSelectionS

12、tart(end); ta.setSelectionEnd(end);(4)替换方法: 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

13、) if(e.getSource()=bFind) find(); else if(e.getSource()=bReplace) replace(); 2.Note类(1)构造方法:Note()方法部分内容如下:设置标题,大小super(记事本);setBounds(100,100,600,400);添加组件add(tf);setMenuBar(mb);mb.add(item1);item1.add(subitem11);添加指定的操作侦听器,以从此菜单项接收操作事件。subitem11.addActionListener(this); subitem31.addActionListener

14、(this);setVisible(true); addWindowListener(new WindowAdapter()(2)窗口关闭监听方法: void windowClosing(WindowEvent e)方法部分内容如下:关闭时提示是否退出。 int option=JOptionPane.showConfirmDialog( Note.this, 确定退出程序? , 提示 ,JOptionPane.YES_NO_CANCEL_OPTION); if(option=JOptionPane.YES_OPTION) if(e.getWindow()=Note.this) System.e

15、xit(0); else return; );(3)发生操作时调用该方法:public void actionPerformed(ActionEvent e)方法部分内容如下: /-新建- if(e.getSource()=subitem11) tf.setText(); /-打开- if(e.getSource()=subitem12) /-保存- if(e.getSource()=subitem13) /-另存为- if(e.getSource()=subitem14) /-退出- if(e.getSource()=subitem15) /-查找-if(e.getSource()=subi

16、tem21) findDlg.showFind(); /-替换- if(e.getSource()=subitem22) findDlg.showReplace(); /-日期- if(e.getSource()=subitem23) /-作者- if(e.getSource()=subitem31) tf.setText(课程名称: java课程设计 +n+学院: 软件工程学院 +n+班级: 嵌入式系09-01班 +n+姓名: 陈 冲 +n+学号: ); 3.NoteBook类主类包含main方法,实例化news Note();显示界面。public static void main(Str

17、ing args)new Note();4.4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块捕获异常“ex.printStackTrace();”语句在命令行打印异常信息在程序中出错的位置及原因。例如“打开”监听中运用到异常处理。其它的地方于此类似。tryFile file=jc.getSelectedFile();FileInputStream fis=new FileInputStream(fil

18、e);byte buf=new byte10*1024;int len=fis.read(buf);tf.append(new String(buf,0,len);catch(Exception ex)ex.printStackTrace();4.5程序运行与调试分析4.5.1.开始调试出现记事本界面并输入几行文字。如图4-3图4-3 调试运行界面4.5.2各菜单实现1文件菜单。如图4-4所示图4-4 文件菜单(1)打开文件界面。如图4-5图4-5 “打开”对话框(2)保存文件界面。如图4-6图4-6 保存对话框(3)退出程序界面。如图4-7图4-7 退出对话框2编辑菜单。如图4-8图4-8

19、编辑菜单(1) 查找界面。如图4-9图4-9 查找对话框(2)替换界面。如图4-10图4-10超找替换对话框(3)显示当时时间。如图4-11图4-11 显示实践3作者菜单。如图4-124-12 作者菜单(1)显示作者信息。如图4-13图4-13 显示作者信息4.5.3 退出提示是否确定退出。如图4-14图4-14 退出程序5 总结与展望经过差不多一个星期的努力,基本上完成我的Java课程设计简单的记事本程序,基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同

20、时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题,例如java程序设计的封装性在个人的设计中没有足以体现,更为理想的是将各个模块封装成类,方便共享调用,但是由于本人知识浅陋以及时间等其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。程序源代码:import java.awt.*; import java.awt.event.*;import java.io.BufferedReader

21、;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Calendar;import javax.swing.JFileChooser;import javax.swing.JOptionPane;/查找 替换 类MyFin

22、dDialogclass MyFindDialog extends Dialog implements ActionListener Label lFind=new Label(查找字符串); Label lReplace=new Label(替换字符串); TextField tFind=new TextField(10); TextField tReplace=new TextField(10); Button bFind=new Button(查找); Button bReplace=new Button(替换); TextArea ta; /构造函数 public MyFindDial

23、og(Frame owner,TextArea ta) super(owner,查找);/构造一个初始时不可见、无模式的 Dialog,带有指定的所有者框架和标题。 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

24、); 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

25、 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();/获取此文

26、本组件中选定文本的结束位置。 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; */ priv

27、ate 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()=b

28、Replace) replace(); /Note类 class Note extends Frame implements ActionListenerTextArea tf=new TextArea();MenuBar mb = new MenuBar();Menu item1=new Menu(文件);MenuItem subitem11=new MenuItem(新建,new MenuShortcut(KeyEvent.VK_A, false);MenuItem subitem12=new MenuItem(打开,new MenuShortcut(KeyEvent.VK_O, fals

29、e);MenuItem subitem13=new MenuItem(保存,new MenuShortcut(KeyEvent.VK_S, false);MenuItem subitem14=new MenuItem(另存为);MenuItem subitem15=new MenuItem(退出);Menu item2=new Menu(编辑);MenuItem subitem21=new MenuItem(查找,new MenuShortcut(KeyEvent.VK_F, false);MenuItem subitem22=new MenuItem(替换,new MenuShortcut(

30、KeyEvent.VK_H, false);MenuItem subitem23=new MenuItem(时间日期);Menu item3=new Menu(作者);MenuItem subitem31=new MenuItem(作者信息);MyFindDialog findDlg=new MyFindDialog(this,tf);Note()super(记事本);setBounds(100,100,600,400);add(tf);setMenuBar(mb);mb.add(item1);item1.add(subitem11);subitem11.addActionListener(t

31、his);item1.add(subitem12);subitem12.addActionListener(this);item1.add(-);item1.add(subitem13);subitem13.addActionListener(this);item1.add(subitem14);subitem14.addActionListener(this);item1.add(-);item1.add(subitem15);subitem15.addActionListener(this);/subitem15.addActionListener(new Monitor();mb.add

32、(item2);item2.add(subitem21);subitem21.addActionListener(this);item2.add(subitem22);subitem22.addActionListener(this);item2.add(-);item2.add(subitem23);subitem23.addActionListener(this);mb.add(item3);item3.add(subitem31);subitem31.addActionListener(this);setVisible(true); addWindowListener(new Windo

33、wAdapter() public void windowClosing(WindowEvent e) int option=JOptionPane.showConfirmDialog( Note.this, 确定退出程序? , 提示 ,JOptionPane.YES_NO_CANCEL_OPTION); if(option=JOptionPane.YES_OPTION) if(e.getWindow()=Note.this) System.exit(0); else return; );public void actionPerformed(ActionEvent e) /新建 if(e.g

34、etSource()=subitem11) tf.setText(); /打开 if(e.getSource()=subitem12) JFileChooser jc=new JFileChooser();jc.showOpenDialog(this);tryFile file=jc.getSelectedFile();FileInputStream fis=new FileInputStream(file);byte buf=new byte10*1024;int len=fis.read(buf);tf.append(new String(buf,0,len);catch(Exceptio

35、n ex)ex.printStackTrace(); /保存 if(e.getSource()=subitem13) File f2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); /弹出一个 Save File 文件选择器对话框 if(num2=JFileChooser.APPROVE_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWr

36、iter(f2); BufferedWriter bw = new BufferedWriter(fw); bw.write(tf.getText(); bw.close(); fw.close(); catch(IOException e2)e2.printStackTrace(); /另存为 if(e.getSource()=subitem14) File f2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); if(num2=JFileChooser.APPROVE_

37、OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWriter(f2); BufferedWriter bw = new BufferedWriter(fw); bw.write(tf.getText(); bw.close(); fw.close(); catch(IOException e2)e2.printStackTrace(); /退出 if(e.getSource()=subitem15) int a = JOptionPane.showConfirmDialog(this,文件已被改变,是否要保

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁