付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件学陝课程设计报告书课程名称面向对象课程设计设计题目记事本程原专业班级 软件0802学 号 0820010202姓 名 二指导教师2010年12月目录1设计时间12设计目的13设计任务14设计内容14. 1需求分析4. 1. 1需求说明4.2功能需求4. 2概要设计4. 2. 1程序设计思路4. 2. 2程序运行环境及界面4. 3功能模块设计4. 3. 1功能模块说明图4.3.2自定义类及接口说明4. 3. 3类中方法介绍 1 1 2 244异常处理104. 5程序运行与调试分析104. 5.1 开始调试104. 5. 2各菜单实现114. 5. 3 退出155总结与展望16程序源代码:17
2、24参考文献1设计时间2010-12-20 至 2010-12-312设计目的记事本主要是对文字进行编辑处理的软件。能进行新建、打开、保存等功能。另外还可 以根据用户的需要查找替换相应的文字,实现编辑功能。通过面向对象程序设计对自己所学过的的知识加以掌握和运用。巩固面向对象设计理念 的理解,熟练兀眩设计语言的运用。3设计任务记事本程序。要求如下:(1)使用图形用户界面实现。(2)必须有菜单、弹出式对话框组件的实现。(3)能实现文字编辑、保存、另存为、查找、替换功能,其它功能可自行丰富。(4)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。提示:使用文件输入输出流。4设计内容
3、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类来实现。由于Ja
5、va的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为 模仿对象,根据实现情况删减了其中的一些功能。在设计类的时候,考虑到简单明了,就用了三个类,一个主类、一个类设计构造函数实 现监听接口作为程序的整体框架,一个类设计构造函数实现查找替换功能。所有的对象和方 法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中 实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修 改。这样设计的缺点是:不利于共拿类中的方法。4. 2. 2程序运行坏境及界面1 操作系统:Windows XP2. 开发语言:JAVA3. 开发工具:My
6、Eclipse4. 运行界面:如图4-1所示EJ回区)文件编辐作者图4-1运行界而4. 3功能模块设计4. 3.1功能模块说明图首先创建一个名为NoteBook的类并继承Frame类实现监听接口作为最底层的容器(具 体过程在“4.3.2自定义类及接口说明”作说明)。菜单栏中有“文件”、“编辑”、“作 者”三项菜单,分别添加的相应的项,各实现其功能。如图4-2所示作者卩时 间 日 期心替 换Q打退 出门查 找*新 建亠文件#编辑屮作若信M<另存初图42功能模块说明图4. 3.2自定义类及接口说明1. MyFindDialog 类继承Dialog类实现 ActionListene 接口实现查
7、找替换功能class MyFindDialog extends Dialog implements ActionListener 定义查找和替换的标签和文本域Label lFind=new Label("查找字符串”);Label lReplace=new Label("替换字符串”);TextField tFind=new TextField(lO);TextField tReplace=new TextField(lO);Button bFind=new Button(M查找”);Button bReplace=new Button(H替换");TextAre
8、a ta;2. Note 类继承Frame类实现 ActionListener 接口作为程序的整体框架class Note extends Frame implements ActionListener.定义菜单,菜单项,对话框等。Menu Bar mb = new MenuBar();Menu iteml=new Menu(M文件”);Menu Item subitem 1 l=new Menuitem(” 新 建 *new MenuShortcut(KeyEvent.VK_A, false);Menu Item subitem23=new Menultem(n 时间日期”);Menu it
9、em3=new Menu(H作者”);Menu Item subitem31=new Menultem(n 作者信息”);MyFindDialog findDlg=new MyFindDialog(this,tf);3. NoteBook 类主类,完成对象的实例化及显示public class NoteBookMain方法中实例化news Note();显示界面。4. 3.3类中方法介绍1. MyFindDialog 类(1) 构造方法:MyFindDialog(Frame owner,TextArea ta)设计构造函数,带有指定的所有者框架和标题。方法部分内容如下: 设置大小,并添加类中定
10、义的各个组件。super(owner,"查找”);this.ta=ta;setLayout(null);lFind.setBounds( 10,30,80,20);!Replace.setBounds( 10,70.80,20);add(bRepIace);setResizable(false);bFind.addActionListener(this);bReplace.addActionListener(this);实现关闭对话框时的监听。addWindowListener(new WindowAdapter() public void windowClosing(WindowE
11、vent e) MyFindDiaIog.this.dispose(););(2) 显示查找和替换的对话框方法:showFind()和showReplace()方法部分内容如下:调用时显示查找对话框,public void showFind() setTitle("查找”); setSize(280,60); setVisible(true);调用时显示查找替换对话框public void showReplace()sefRtle(喳找替换”);setSize(280J 10);setVisible(true);(3) 查找方法:private void find()方法部分内容如下
12、:String text=ta.getText();String sti-tFind.getText();int end=text.length();int len=str.length();int start=ta.getSelectionEnd();获取此文本组件中选定文本的结束位置。if(start=end) start=O;for(;start<=end-len;start+)if(text.substring(start,start+len).equals(str)ta.setSelectionStart(start);ta.setSelectionEnd(start+len)
13、;return;)/若找不到待查字符串,则将光标置于末尾 ta.setSelectionStart(end);ta.setSelectionEnd(end);(4) 替换方法:private void replace() 方法部分内容如下:String str=tReplace.getText();if(ta.getSelectedText().equals(tFind.getText()用指定替换文本替换指定开始位置与结束位置之间的文本ta.replaceRange(str4a.getSelectionStart(),ta.getSeIectionEnd(); else find();pub
14、lic void actionPerfornied(ActionEvent e) if(e.getSource()=bFind)find();else if(e.getSource()=bReplace)replace();2. Note 类(1) 构造方法:Note ()方法部分内容如下:设置标题,大小super("记事本”);setBounds(l 00,100,600,400);添加组件add(tf);setMenuBar(mb);mb.add(iteml);item l.add(subitem 11);添加指定的操作侦听器,以从此菜单项接收操作事件。subitem 11 .a
15、ddActionListener(this);subitem31 .addActionListener(this);setVisible(true);addWindowListener(new WindowAdapter() (2) 窗口关闭监听方法:void windowClosing(WindowEvent e)方法部分内容如下:关闭时提示是否退出。int option=JOptionPane.showConfirmDialog(Note.this, ”确定退出程序? ”,”提示",JOptionPane.YES_NO_CANCEL_OPTION);if(option=JOpti
16、onPane.YES_OPTION)if(e.getWindow()=Note.this) System.exit(O); else return; );(3) 发生操作时调用该方法:public void actionPerformed(ActionEvent e) 方法部分内容如下:/新建if(e.getSource()=subitem 11)tf.setText("");)/打开if(e.getSource()=subitem 12)/保存if(e.getSource()=subitem 13)/另存为if(e.getSource()=subitem 14)/退出if
17、(e.getSource()=subitem 15)/查找if(e.getSource()=subitem21) findDlg.showFind();/替换if(e.getSource()=subitem22) findDlg. sho wReplace();/日期if(e.getSource()=subitem23)/作者if(e.getSource()=subitem31)tf.setText(“课程名称:java课程设计”+W+"学院:软件工程学院”+W+”班级:嵌入式系08-02班"+W+”姓名:冯雪连"+'n'+u学号:08200102
18、02");)3. NoteBook 类主类包含mai n方法,实例化news Note();显示界面。public static void main(String args)new Note();4. 4异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程 序中用到Java异常处理机制。本程序中选用的异常处理机制是try, catch。捕获处理异常的 第一步是用try选定要监控的异常范围,try后跟随catch代码块捕获异常 “ex.printStackTrace。;”语句在命令行打印异常信息在程序中出错的位置及原因。例如“打 开”监听中运用到异常处理
19、。其它的地方于此类似。tryFile file=jc.getSelectedFi!e();FilelnputStream fis=new FilelnputStream(file);byte buf=new byte 10*1024;int len=fis.read(buf);tf.append(new String(buf,OJen);catch(Exception ex)ex.printStackTrace();4. 5程序运行与调试分析 4. 5.1.开始调试出现记事本界面并输入儿行文字。如图4-3图4-3调试运行界而4.5. 2各菜单实现1.文件菜单。如图4-4所示记事本1编辑作者新建
20、Ctrl+A翰,并坚住打开c刃+a凤1量/:?日锻Ctrl+0相信一天点保存Ctrl + S另存为退出图4-4文件菜单(1)打开文件界面。如图4-5图4-5 “打开”对话框(2)保存文件界面。如图4-6d件<.保存冈B My Documents保存: 口 My Documents 叵Q 回 | 器 | g二 |文件名:|文件类型:所有文件所有文件M CFSystem5 Ren Ren口 Favorites口 Tencent FilesrH MetrowerksCutest 10匚3 Wly M"icPotest 8口 My Picturesritest9L3 My Videos
21、Q Visual Sludio 2005Q QQPetBear美图图库保存 擂消图4-6保存对话框(3)退出程序界面。如图4-7文件编辑作者回凶1在原地绕圈圈丿并坚强地保持凤度.1ISI詹婆驅力没有白塞图4-7退岀对话框2编辑菜单。如图4-8垄记事本文件编辑作若查找CtrHF替换Ctrl*H时间日期图4-8编借菜单(1)查找界面。如图4-9旦凶蓉;并坚强地保持斑度。曹记事本黄昏,我们看到相同的风最及日落。夜晚I我们安慰自己相信一天的勢力没有白贾。 清晨图4-9查找对话框(2) 替换界面。如图4-10文件编辑作者我我我我 3d J 3d : I 早正黄祓渚1在原也號圈蔺,并坚强地保持凤度。1看到
22、相同的区員及日落。1安慰自己,相信一天的努力没有白寥图4-10超找替换对话框(3) 显示当时时间。如图4-11i记事本文件编辑作者2010年 12月 29 日1:0图4-11显示实践3作者菜单。如图4-12垒记事本一晨午昏.Itt作者信息我们看到稲同的同景忌 我们安慰自己相信一天I4-12作者菜单(1)显示作者信息。如图4-13急园蘇文件编辑作者谍程名称;课程设计 学院:软件工程学院班级;嵌入式系08-02班姓名:冯雪连学号:0820010202图4-13显示作者信息4.5.3退出提示是否确定退出。如图4T4層记事本叵12010122901:16图4-14退出程序5总结与展望经过差不多两个星期
23、的努力,基本上完成我的Java课程设计一简单的记事本程序,基 本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的 理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到 Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好 这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。 在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能 力。但是,设计过程中也存在一些问题,例如java程序设计的封装性在个人的设计中没有 足以体现,更为理想的是将各个模块封装成类,
24、方便共享调用,但是由于本人知识浅陋以及 时间等其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。程序源代码:import java.awt.*;import java.awt.event.*;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FilelnputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter
25、;import java.io.IOException;import java.util.Calendar;import javax.swing. JFileChooser;import javax.swing. JOptionPane;查找替换类MyFindDialogclass MyFindDialog extends Dialog implements ActionListenerLabel lFind=new Label("查找字符串”);Label lReplace=new Label("替换字符串”);TextField tFind=new TextField(
26、lO);TextField tReplace=new TextField(lO);Button bFind=new Button(M查找”);Button bReplace=new Button(H§换");TextArea ta;构造函数public MyFindDialog(Frame owner,TextArea ta)super(owner;喳找”);构造一个初始时不可见、无模式的Dialog,带有指定的所有 者框架和标题。this.ta=ta;setLayout(null);lFind.setBounds(l 0,30,80,20);lReplace.setBou
27、nds( 10,70,80,20);tFind.setBounds(90,30,90,20);tReplace.setBounds(90J0,90,20);bFind.setBounds( 190,30.80,20);bReplace.setBounds( 190570,80520);add(lFind);add(tFind);add(bFind);add(lReplace);add(tReplace);add(bRepIace);setResizable(false); bFind.addActionListener(this); bReplace.addActionListener(thi
28、s); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) MyFindDialog. this, dispose。;);构造函数结束public void showFind()setTitle(n 查找”);setSize(280,60);setVisible(true);public void showReplace()setTitle(喳找替换”);setSize(280J 10);setVisible(true);private void find()查找方法String text
29、=ta.getText();String str=tFind.getText();int end=text.length();int len=str.length();int start=ta.getSelectionEnd();获取此文本组件中选定文本的结束位置。if(start=end) start=O;for(;start<=end-len;start+)if(text.substring(start,start+len).equals(str) ta.setSelectionStart(start); ta.setSelectionEnd(start+len); return;若
30、找不到待查字符串,则将光标置于末尾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(strJa.getSelectionStart(),ta.getSelectionEnd();else f
31、ind();public void actionPerfornied(ActionEvent e) if(e.getSource()=bFind)find();else if(e.getSource()=bReplace) replace();/Note 类class Note extends Frame implements ActionListenerfTextArea tf=new TextArea();MenuBar mb = new MenuBar();Menu itenil=new Menu(H文件”);Menu Item subitem 11 =new Menuitem(” 新建
32、'new MenuShortcut(KeyEvent. VK_A, false);Menu Item subitem 12=new Menuitem(” 打开 H,new MenuShortcut(KeyEvent. VKjO. false);Menu Item subitem 13=new Menuitem(” 保存 H,new Menu S hortcu t( Key Even t. VK_Sy false); Menu Item subitem 14=new Menultem(” 另存为”);Menu Item subitem 15=new MenuItem(H 退出”);Men
33、u item2=new Menu(H编辑”);Menu Item subiteni21=new Menuitem(” 查找 M,new MenuShortcut(KeyEvent. VKJF, false); Menu Item subitem22=new Menultem("替换'new MenuShortcut(KeyEvent. VK_H, false); Menu Item subitem23=new Menultem("时间日期”);Menu item3=new Menu(n作者”);Menu Item subitem31=new MenuItem(H 作
34、者信息");MyFindDialog findDlg=new MyFindDialog(thisJf);Note()superC* 记事本”);setBounds(l 00,100,600,400);add(tf);setMenuBar(mb);mb.add(iteml);item l.add(subiteml 1);subitem 11 .addActionListener(this);item I .add(subitem 12);subitem 12.addActionListener(this);iteml.add(H-H);item 1 add(subitem 13);su
35、bitem 13.addActionListener(this); iteml .add(subiteml4);subitem 14.addActionListener(this);iteml.add(M-H);item 1 .add(subitem 15);subitem 15.addActionListener(this);/subitem 15.addActionListener(new Monitor();mb.add(item2);item2.add(subitem21);subitem21 .addActionListener(this);iteni2.add(subitem22)
36、; subitem22.addActionListener(this);item2.add(H-H); item2.add(subitem23);subitem23.addActionListener(this);mb.add(item3); item3.add(subitem31); subiteni31 .addActionListener(this);setVisible(true);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int option=JO)tionPane.s
37、howConfirmDialog( Note.this, ”确定退出程序? ”, ”提示 MOptionPane. YES_NO_CANCEL_OPTIOg if(option=JOptionPane.yES_OP77OA) if(e.getWindow()=Note.this) System./7(0);)elsereturn;);)public void actionPerformed(ActionEvent e) 新建if(e.getSource()=subitem 11) tf.setText(HH);)打开if(e.getSource()=subitem 12)JFileChoose
38、r jc=new JFiIeChooser(); jc.showOpenDialog(this);tryFile file=jc.getSelectedFile();FilelnputStream fis=new FilelnputStream(file);byte buf=new byte 10*1024;int len=fis.read(buf);tf.append(new String(buf,OJen);catch(Exception ex)ex.printStackTrace();保存if(e.getSource()=subitem 13) jFile f2 = null;JFile
39、Chooser jfc2 = new JFileChooser();int num2 = jfc2.showSaveDialog(this); 弹出一个"Save File"文件选择器对话 框if(nuni2=JFileChooser.APP/?OVEOPT/OAr)f2=jfc2.getSelectedFile(); this.setTitle(f2.getName(); tryFileWriter fw = new FileWriter(f2);BufferedWriter bw 二 new BufferedWriter(fw);bw.write(tf.getText(
40、);bw.close();fw.close();catch(IOException e2)e2.printStackTrace(); 另存为if(e.getSource()=subiteml4)File f2 = null;JFileChooser jfc2 = new JFileChooser();int num2 = jfc2.showSaveDialog(this);if(num2=:JFileChooser.APPROVE_OP77ON)f2=j fc2. getSelectedFile(); this.setTitle(f2.getName();tryFileWriter fw = new FileWriter(f2);Buffered Writer bw = new BufferedWriter(fw);bw.write(tf.getText();bw.close();fw.close();catch(IOException e2)e2.printStackTrace(); )退出if(e.getSource()=subit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统计与成对数据的统计分析课件-2026届高三数学二轮复习
- 海南护师考试试题及答案
- 2026年湖南中考试卷及答案英语
- 2026三年级数学上册 乘法解决问题
- 2026三年级数学上册 测量的实际操作
- 保安员岗位责任制度
- 中国水利知识试题及答案
- 企业园区保安岗位制度
- 人福危险辨识与风险评价、控制制度
- 小组讨论奖惩制度及细则
- 山东高考英语语法单选题100道及答案
- 职业道德与法治知识点总结中职高教版
- 2025年绿色低碳先进技术示范工程实施方案-概述及范文模板
- 2025上半年广西现代物流集团社会招聘校园招聘149人笔试参考题库附带答案详解
- 事故后企业如何进行危机公关与赔偿管理
- 2025年春新人教PEP版英语三年级下册全册教案
- OptixOSN3500智能光传输设备业务配置手册
- 【浙科综合实践】四上第四课项目一、美味的中秋月饼
- 深圳大学《算法设计与分析》2021-2022学年期末试卷
- 西泠印社三年级下册书法教案
- 大客户经理招聘笔试题及解答
评论
0/150
提交评论