2022年java课程设计文本编辑器 .pdf
1 湖南人文科技学院计算机系课程设计报告课 程 名 称: Java程序设计课 程 代 码: 408026 题目: 文本编辑器年级 / 专业 / 班: 07 级计算机科学与技术1 班学 生 姓 名: 肖毅、陈耀学号: 07408131、07408145指 导 老 师: 郭 广 军开 题 时 间: 2008 年 12月 22 日完 成 时 间: 2009 年 01月 03 日2009 年 1 月 5 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告I 前 言Java 课程设计是计算机科学与技术专业学生的专业实践必修课程,是学习 Java 程序设计课程非常重要的综合性实践教学环节。课程设计是检验学生是否掌握相关专业课程知识的重要手段,同时课程设计应充分体现“教师指导下的以学生为中心”的教学模式,以学生为认知主体,充分调动学生的积极性和能动性,重视学生实践应用能力和自学能力的培养。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告II 课程设计任务书及成绩评定课 程 名 称: Java 程序设计完成者: 肖毅、陈耀1 、设计的目的与要求(1)设计的目的:Java课程设计是计算机科学与技术专业学生的专业实践必修课程,是学习Java程序设计课程非常重要的综合性实践教学环节。课程设计是检验学生是否掌握相关专业课程知识的重要手段,同时课程设计应充分体现“教师指导下的以学生为中心”的教学模式,以学生为认知主体,充分调动学生的积极性和能动性,重视学生实践应用能力和自学能力的培养。通过设计文本编辑器并实现其功能来熟练掌握JAVA语言基础,初步掌握软件开发中系统分析、系统设计、系统实现和系统测试等阶段的基本方法与技术,培养学生的创新意识,提高实践应用能力,为培养应用型人才服务。(2)做文本编辑器的要求: 菜单要求:要求有新建、保存、另存为、退出、拷贝、剪切、粘贴、帮助等功能。要求其操作简单、界面清晰、灵活、实用、方便。要求程序须经调试,并添加异常处理和代码注释,同时在功能实现后,要将代码进行优化。最好能响应键盘和鼠标事件,同时可添加快捷键。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告III 2 、设计进度及完成情况日期内容2008年12月22日准备和审题、接受任务,开发环境配置等2008年12月2324日查找相关资料,系统调查,需求分析2008年12月25日系统建模2008年12月26日概要设计2008年12月2728日详细设计2008年12月2931日编码测试2008年01月01日部署、配置、运行2009年01月0203日撰写课程设计报告2009年01月04日课程设计总结2009年01月05日正式提交课程设计报告和系统源程序3、成绩评定设计成绩:(教师填写)指导老师:(签字)2009 年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告I 目录1 引言 . 1 2设计任务与目的. 1 4 系统设计 . 2 4.1 总体设计 . 错误!未定义书签。4.1.1 系统类图 . 错误!未定义书签。4.2 详细设计 . 3 6 系统实现 . 6 6.1 系统主要用例的实现. 6 6.1.1 运行用例运行效果. 6 6.1.2 打开文档用例运行效果. 6 6.1.3 关于用例运行效果. 7 7 结束语 . 7 参考文献 . 8 致谢 . 8 附录 A:系统源程序. 8 附录 B :编码规范 . 错误!未定义书签。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告1 文本编辑器1引言计算机的普及发展,软件行业在社会占着举足轻重的作用。现今市场中存在的文本编辑器已不是少数几种,而且功能已相对齐全,但我们作为未来从事软件行业的专业人士,借着软件发展的周期,研究这个课题,在学习过程掌握文本编辑器以及JAVA的相关知识很有必要,既随科技发展的前沿,又方便了我们的生活。事实上,因为暂时知识的限制性,我们只能做一个比较简单的文本编辑器,通过一学期对 JAVA 的了解和课程设计培训,以及对文本编辑器主要功能的详细研究,我们将其功能转化为了程序代码。 主要分为编辑区、 输入区等, 此文本编辑器含有保存、退出、查找、拷贝、剪切、粘贴等简要功能,其操作简单、界面清晰、灵活、实用、方便等优点,适用于简便的存档及撰写文稿。2设计任务与目的1)设计一个简单的文本编辑器, 可以实现以下功能: 1 :文件的新建,打开,保存和另存; 2 :对文件的编辑,如全选,复制,剪切,粘贴; 3 :执行完操作后,能够顺利关闭记事本。 2 )通过这次设计,可以帮助学生:1:提高对 Java 语言设计的掌握能力; 2 :理论联系实际,进一步提高学生的软件开发技术; 3 :培养学生分析、解决问题的能力。3. 需求分析在科学技术飞速发展的今天,计算机科学日渐成熟 , 其强大的功能已为人们深刻认识 , 它已进入人类社会的各个领域并发挥着越来越重要的作用。应用 JAVA技术实现学生学习实践是可行而必要的工作。在社会生活中我们经常需要用电脑编写一些文档来保存文件,本课程设计是运用了JAVA软件开发工具开发的应用软件。适合编写记录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告2 文件。 训练学生灵活应用所学Java 语言的基本知识, 熟练的完成问题分析、 算法设计、编写程序,求解出指定的问题;训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养严谨的科学态度和良好的工作作风;提高综合运用所学的理论知识和方法独立分析和解决问题的能力运行要求: 由于本程序是运用JAVA语言编成的,所以首先必须在电脑上安装JAVA虚拟机,并对环境变量进行设置。完成JAVA的环境设置后,在集成环境Eclipse中进行编程。4 系统设计4.1 总体设计4.1.1 系统类图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告3 图 4-1 系统类图4.2 详细设计(1) 类或包的加载import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.text.*; (2). 设计一个主类,变量的定义public class EditorDemo extends JFrame JTextPane textPane = new JTextPane(); /文本窗格,编辑窗口JLabel statusBar = new JLabel(); / 状态栏JFileChooser filechooser = new JFileChooser(); / 文件选择器public EditorDemo() / 构造函数super(简单的文本编辑器 ); /调用父类构造函数Action actions = /Action 数组,各种操作命令 new NewAction(), new OpenAction(), new SaveAction(), new CutAction(), new CopyAction(), new PasteAction(), new AboutAction(), new ExitAction(); setJMenuBar(createJMenuBar(actions); /设置菜单栏Container container = getContentPane(); / 得到容器container.add(createJToolBar(actions), BorderLayout.NORTH); / 增加工具栏container.add(textPane, BorderLayout.CENTER); / 增加文本窗格container.add(statusBar, BorderLayout.SOUTH); / 增加状态栏setSize(330, 200); / 设置窗口尺寸setVisible(true); /设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /关闭窗口时退出程序 private JMenuBar createJMenuBar(Action actions) /创建菜单栏JMenuBar menubar = new JMenuBar(); / 实例化菜单栏JMenu menuFile = new JMenu( 文件); /实例化菜单JMenu menuEdit = new JMenu( 编辑); JMenu menuAbout = new JMenu( 帮助 ); menuFile.add(new JMenuItem(actions0); /增加新菜单项menuFile.add(new JMenuItem(actions1); menuFile.add(new JMenuItem(actions2); menuFile.add(new JMenuItem(actions7); menuEdit.add(new JMenuItem(actions3); menuEdit.add(new JMenuItem(actions4); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告4 menuEdit.add(new JMenuItem(actions5); menuAbout.add(new JMenuItem(actions6); menubar.add(menuFile); / 增加菜单menubar.add(menuEdit); menubar.add(menuAbout); return menubar; / 返回菜单栏 private JToolBar createJToolBar(Action actions) /创建工具条JToolBar toolBar = new JToolBar(); /实例化工具条for (int i = 0; i actions.length; i+) JButton bt = new JButton(actionsi); /实例化新的按钮bt.setRequestFocusEnabled(false); / 设置不需要焦点toolBar.add(bt); /增加按钮到工具栏 return toolBar; /返回工具栏(3).文件操作功能的实现class NewAction extends AbstractAction /新建文件命令public NewAction() super(新建); public void actionPerformed(ActionEvent e) textPane.setDocument(new DefaultStyledDocument(); / 清空文档 class OpenAction extends AbstractAction /打开文件命令public OpenAction() super(打开); public void actionPerformed(ActionEvent e) int i = filechooser.showOpenDialog(EditorDemo.this); /显示打开文件对话框if (i = JFileChooser.APPROVE_OPTION) / 点击对话框中打开选项File f = filechooser.getSelectedFile(); / 得到选择的文件try InputStream is = new FileInputStream(f); /得到文件输入流textPane.read(is, d); / 读入文件到文本窗格 catch (Exception ex) ex.printStackTrace(); /输出出错信息 class SaveAction extends AbstractAction /保存命令public SaveAction() super(保存); public void actionPerformed(ActionEvent e) int i = filechooser.showSaveDialog(EditorDemo.this); /显示保存文件对话框if (i = JFileChooser.APPROVE_OPTION) /点击对话框中保存按钮File f = filechooser.getSelectedFile(); / 得到选择的文件try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告5 FileOutputStream out = new FileOutputStream(f); /得到文件输出流out.write(textPane.getText().getBytes(); / 写出文件 catch (Exception ex) ex.printStackTrace(); /输出出错信息 class ExitAction extends AbstractAction /退出命令public ExitAction() super(退出); public void actionPerformed(ActionEvent e) System.exit(0); /退出程序 class CutAction extends AbstractAction /剪切命令public CutAction() super(剪切); public void actionPerformed(ActionEvent e) textPane.cut(); /调用文本窗格的剪切命令 class CopyAction extends AbstractAction /拷贝命令public CopyAction() super(拷贝); public void actionPerformed(ActionEvent e) textPane.copy(); /调用文本窗格的拷贝命令 class PasteAction extends AbstractAction /粘贴命令public PasteAction() super(粘贴); public void actionPerformed(ActionEvent e) textPane.paste(); /调用文本窗格的粘贴命令 class AboutAction extends AbstractAction /关于选项命令public AboutAction() super(关于); public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(EditorDemo.this, 简单的文本编辑器演示); /显示软件信息 public static void main(String args) new EditorDemo(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告6 6 系统实现6.1 系统主要用例的实现6.1.1 运行用例运行效果图 6-1 运行用例运行效果图6.1.2 打开文档用例运行效果图 6-2 打开文件用例运行效果图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告7 6.1.3 关于用例运行效果图 6-3 用例演示运行效果7 结束语作为计算机科学与技术大二的学生,我觉得能做类似的课程设计是十分有意义,而且是十分必要的。在已度过的大二的时间里我们大多数接触的是专业基础课。我们在课堂上掌握的仅仅是专业基础课的理论面,如何去锻炼我们的实践面?如何把我们所学到的专业基础理论知识用到实践中去呢?我想做类似的大作业就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当数查阅大量的书籍了。为了让自己的设计更加完善,更加符合软件工程标准,一次次翻阅各种参考资料是十分必要的,同时也是必不可少的。我们是在作设计,但我们不是艺术家。他们可以抛开实际,尽情在幻想的世界里翱翔,我们是软件设计师,一切都要有据可依. 有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。作为一名专业学生掌握一门或几门程序设计语言是必不可少的,由于本次课程设计要求用java 进行开发,在这过程中我对各种的开发环境进行了探索,这使我对java 的集成开发环境有了更深刻的理解虽然去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率好高,记得大一学c 语言好难就是因为我们没有把自己放在使用者的角度,单单是为了学而学,这样效率当然不会高。边学边用这样才会提高效率,这是我作本次课程设计的第二大收获。但是由于水平有限,难免会有错误,还望老师批评指正。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告8 参考文献 1 张广彬 , 孟红蕊 , 张永宝.Java 课程设计案例精编 M. 北京: 清华大学出版社,2007,1. 2 黄晓东 .Java 课程设计案例精编 M. 北京: 中国水利水电出版社 ,2004,5. 3 求是科技 . Java 信息管理系统开发实例导航M. 北京 : 人民邮电出版社,2005,4. 4 求是科技 .Java 数据库系统开发实例导航M. 北京 : 人民邮电出版社 ,2004,9. 5 java 编程思想,机械工业出版社,1999 年 4 月6 java 项目设计与开发范例,电子工业出版社,2005年 4 月,唐小军等7 标准 java 2 使用手册,电子工业出版社,2005 年 1 月,魏海萍8 java 开放源码编程,电子工业出版社,2005 年 1 月,沃纳斯致谢非常感谢郭广军老师对我们的指导,让我们能学会这门课程并且成功地完成了本次课程设计,还有设计过程中给予我们帮助的同学、朋友,有了大家的共同努力才有今天的成果。附录 A:系统源程序package Wenben; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.text.*; /简单的文本编辑器public class EditorDemo extends JFrame JTextPane textPane = new JTextPane(); /文本窗格,编辑窗口JLabel statusBar = new JLabel(); / 状态栏JFileChooser filechooser = new JFileChooser(); / 文件选择器public EditorDemo() / 构造函数super(简单的文本编辑器 ); /调用父类构造函数Action actions = /Action 数组,各种操作命令 new NewAction(), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告9 new OpenAction(), new SaveAction(), new CutAction(), new CopyAction(), new PasteAction(), new AboutAction(), new ExitAction(); setJMenuBar(createJMenuBar(actions); /设置菜单栏Container container = getContentPane(); / 得到容器container.add(createJToolBar(actions), BorderLayout.NORTH); / 增加工具栏container.add(textPane, BorderLayout.CENTER); / 增加文本窗格container.add(statusBar, BorderLayout.SOUTH); / 增加状态栏setSize(330, 200); / 设置窗口尺寸setVisible(true); /设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /关闭窗口时退出程序 private JMenuBar createJMenuBar(Action actions) /创建菜单栏JMenuBar menubar = new JMenuBar(); / 实例化菜单栏JMenu menuFile = new JMenu( 文件); /实例化菜单JMenu menuEdit = new JMenu( 编辑); JMenu menuAbout = new JMenu( 帮助 ); menuFile.add(new JMenuItem(actions0); /增加新菜单项menuFile.add(new JMenuItem(actions1); menuFile.add(new JMenuItem(actions2); menuFile.add(new JMenuItem(actions7); menuEdit.add(new JMenuItem(actions3); menuEdit.add(new JMenuItem(actions4); menuEdit.add(new JMenuItem(actions5); menuAbout.add(new JMenuItem(actions6); menubar.add(menuFile); / 增加菜单menubar.add(menuEdit); menubar.add(menuAbout); return menubar; / 返回菜单栏 private JToolBar createJToolBar(Action actions) /创建工具条JToolBar toolBar = new JToolBar(); /实例化工具条for (int i = 0; i actions.length; i+) JButton bt = new JButton(actionsi); /实例化新的按钮bt.setRequestFocusEnabled(false); / 设置不需要焦点toolBar.add(bt); /增加按钮到工具栏 return toolBar; /返回工具栏 class NewAction extends AbstractAction /新建文件命令public NewAction() super(新建); public void actionPerformed(ActionEvent e) textPane.setDocument(new DefaultStyledDocument(); / 清空文档 class OpenAction extends AbstractAction /打开文件命令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告10 public OpenAction() super(打开); public void actionPerformed(ActionEvent e) int i = filechooser.showOpenDialog(EditorDemo.this); /显示打开文件对话框if (i = JFileChooser.APPROVE_OPTION) / 点击对话框中打开选项File f = filechooser.getSelectedFile(); / 得到选择的文件try InputStream is = new FileInputStream(f); /得到文件输入流textPane.read(is, d); / 读入文件到文本窗格 catch (Exception ex) ex.printStackTrace(); /输出出错信息 class SaveAction extends AbstractAction /保存命令public SaveAction() super(保存); public void actionPerformed(ActionEvent e) int i = filechooser.showSaveDialog(EditorDemo.this); /显示保存文件对话框if (i = JFileChooser.APPROVE_OPTION) /点击对话框中保存按钮File f = filechooser.getSelectedFile(); / 得到选择的文件try FileOutputStream out = new FileOutputStream(f); /得到文件输出流out.write(textPane.getText().getBytes(); / 写出文件 catch (Exception ex) ex.printStackTrace(); /输出出错信息 class ExitAction extends AbstractAction /退出命令public ExitAction() super(退出); public void actionPerformed(ActionEvent e) System.exit(0); /退出程序 class CutAction extends AbstractAction /剪切命令public CutAction() super(剪切); public void actionPerformed(ActionEvent e) textPane.cut(); /调用文本窗格的剪切命令 class CopyAction extends AbstractAction /拷贝命令public CopyAction() super(拷贝); public void actionPerformed(ActionEvent e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - 湖南人文科技学院Java 课程设计报告11 textPane.copy(); /调用文本窗格的拷贝命令 class PasteAction extends AbstractAction /粘贴命令public PasteAction() super(粘贴); public void actionPerformed(ActionEvent e) textPane.paste(); /调用文本窗格的粘贴命令 class AboutAction extends AbstractAction /关于选项命令public AboutAction() super(关于); public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(EditorDemo.this, 简单的文本编辑器演示); /显示软件信息 public static void main(String args) new EditorDemo(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -