Java课程设计报告记事本程序

上传人:仙*** 文档编号:33929018 上传时间:2021-10-19 格式:DOC 页数:27 大小:362.50KB
收藏 版权申诉 举报 下载
Java课程设计报告记事本程序_第1页
第1页 / 共27页
Java课程设计报告记事本程序_第2页
第2页 / 共27页
Java课程设计报告记事本程序_第3页
第3页 / 共27页
资源描述:

《Java课程设计报告记事本程序》由会员分享,可在线阅读,更多相关《Java课程设计报告记事本程序(27页珍藏版)》请在装配图网上搜索。

1、软 件 学 院课程设计报告书课程名称 面向对象课程设计 设计题目 记事本程序 专业班级 软件08-02 学 号 0820010202 姓 名 * 指导教师 2010 年 12 月25 目录1 设计时间12 设计目的13设计任务14 设计内容14.1 需求分析14.1.1需求说明14.1.2功能需求14.2概要设计24.2.1程序设计思路24.2.2程序运行环境及界面24.3功能模块设计34.3.1功能模块说明图34.3.2 自定义类及接口说明44.3.3 类中方法介绍54.4异常处理104.5程序运行与调试分析104.5.1.开始调试104.5.2各菜单实现114.5.3 退出155 总结与展

2、望16程序源代码:17参考文献241 设计时间2010-12-20至2010-12-312 设计目的记事本主要是对文字进行编辑处理的软件。能进行新建、打开、保存等功能。另外还可以根据用户的需要查找替换相应的文字,实现编辑功能。通过面向对象程序设计对自己所学过的的知识加以掌握和运用。巩固面向对象设计理念的理解,熟练Java设计语言的运用。3设计任务记事本程序。要求如下:(1)使用图形用户界面实现。(2)必须有菜单、弹出式对话框组件的实现。(3)能实现文字编辑、保存、另存为、查找、替换功能,其它功能可自行丰富。(4)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。提示:使用文件

3、输入输出流。4 设计内容 4.1 需求分析4.1.1需求说明现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,Word。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的实现特定功能的记事本程序。4.1.2功能需求本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1).菜单中有“文件”,“

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

5、一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能。在设计类的时候,考虑到简单明了,就用了三个类,一个主类、一个类设计构造函数实现监听接口作为程序的整体框架,一个类设计构造函数实现查找替换功能。所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。4.2.2程序运行环境及界面1.操作系统:Windows XP2.开发语言: JAVA3.开发工具: MyEclipse4.运行界面: 如图4

6、-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 MyFindDialog extends Dialog implements ActionListener定义查找和替换的标签和

7、文本域 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 实现ActionListener接口l 作为程序的整体框架class Note extends Frame implements Act

8、ionListener定义菜单,菜单项,对话框等。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 MenuItem(作者信息);MyFindDialog findDlg=new MyFindDialog(this,tf);3.N

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

10、 add(bReplace); setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(this); 实现关闭对话框时的监听。 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog.this.dispose(); );(2)显示查找和替换的对话框方法:showFind()和showReplace()方法部分内容如下:调用时显示查找对话框, public void s

11、howFind() 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(); int end=text.length(); int len=str.length(); int start=ta.g

12、etSelectionEnd();/获取此文本组件中选定文本的结束位置。 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);(4)替换方法: private void repla

13、ce()方法部分内容如下: 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()=bRepla

14、ce) 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(this);setVisible(true); addWindowListener(new WindowAdapter()

15、(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.exit(0); else return; );(3)发生操作时调用该方法:public void actionPerform

16、ed(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()=subitem21) findDlg.showFind(); /-替换- if(e.getSource()=subitem22) f

17、indDlg.showReplace(); /-日期- if(e.getSource()=subitem23) /-作者- if(e.getSource()=subitem31) tf.setText(课程名称: java课程设计 +n+学院: 软件工程学院 +n+班级: 嵌入式系08-02班 +n+姓名: 冯雪连 +n+学号: 0820010202); 3.NoteBook类主类包含main方法,实例化news Note();显示界面。public static void main(String args)new Note();4.4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为

18、了避免这种情况,就需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块捕获异常“ex.printStackTrace();”语句在命令行打印异常信息在程序中出错的位置及原因。例如“打开”监听中运用到异常处理。其它的地方于此类似。tryFile file=jc.getSelectedFile();FileInputStream fis=new FileInputStream(file);byte buf=new byte10*1024;int len=fis.read(buf);tf

19、.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 编辑菜单(1) 查找界面。如图4-9图4-9 查找对话框(2)替换界面。如图4-10图4-10超找替换对

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

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

22、mport 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;/查找 替换 类MyFindDialogclass MyFindDialog extends Dialog implements

23、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 MyFindDialog(Frame owner,TextArea ta) super(owner,查找);/构造一个初始时

24、不可见、无模式的 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); add(lFind); add(tFind); add(bFind); add(lReplace)

25、; 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); setVisibl

26、e(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

27、-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

28、(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(); /Note类 class Note extends Frame

29、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, false);MenuItem subitem13=new MenuItem(保存,new MenuShortc

30、ut(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(KeyEvent.VK_H, false);MenuItem subitem23=new MenuIte

31、m(时间日期);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(this);item1.add(subitem12);subitem12.addActionListene

32、r(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(item2);item2.add(subitem21);subitem21.addActionList

33、ener(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 WindowAdapter() public void windowClosing(WindowEvent e)

34、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.getSource()=subitem11) tf.setText(); /打开 if(e.getSour

35、ce()=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(Exception ex)ex.printStackTrace(); /保存 if(e.getSource()=subi

36、tem13) 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 FileWriter(f2); BufferedWriter bw = new BufferedWriter(fw)

37、; 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_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.

38、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,文件已被改变,是否要保存?,提示,JOptionPane.YES_NO_CANC

39、EL_OPTION); if(a=1) this.dispose(); else if(a=0) File f2 = null; JFileChooser jfc2 = new JFileChooser(); int num2 = jfc2.showSaveDialog(this); if(num2=JFileChooser.APPROVE_OPTION) f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); try FileWriter fw = new FileWriter(f2); BufferedWriter bw = new B

40、ufferedWriter(fw); bw.write(tf.getText(); bw.close(); fw.close(); catch(IOException e2) e2.printStackTrace(); this.dispose(); /查找if(e.getSource()=subitem21) findDlg.showFind(); /替换 if(e.getSource()=subitem22) findDlg.showReplace(); /日期 if(e.getSource()=subitem23) Calendar c1 =Calendar.getInstance();

41、 int y = c1.get(Calendar.YEAR); int m = c1.get(Calendar.MONTH); int d = c1.get(Calendar.DATE); int h = c1.get(Calendar.HOUR); int m1 = c1.get(Calendar.MINUTE); int m2 = m+1; tf.setText(y+年+m2+月+d+日+h+:+m1); /作者 if(e.getSource()=subitem31) tf.setText(课程名称: java课程设计 +n+学院: 软件工程学院 +n+班级: 嵌入式系08-02班 +n+

42、姓名: 冯雪连 +n+学号: 0820010202); public class NoteBookpublic static void main(String args)new Note();参考文献1刘万军.Java 6 程序设计M.第1版.北京:清华大学出版社,2009.2腾灵灵,仲婷. 面向对象设计原理与模式(Java版) M.第1版.北京:清华大学出版社,2009.3霍顿.Java2入门经典M.第2版.北京: 机械工业出版社,2006.4李茏怡. Java编程实例讲解M.第2版.北京:高等教育出版社,2005.11 成绩评定成绩 教师签字说明:1、 不许去掉文字外边框,且每页外边框保持大小一致2、 参考文献和成绩评定为一页,不许改变格式和分开。3、 页面设置,页边距上下左右都是2.5厘米

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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