1、第 1 页 共 11 页Java 课程设计报告题 目:简单记事本程序的设计年级专业:计算机科学与技术 学 号: 学生姓名: 指导老师: 完成时间:2010 年 6 月 8 日目 录第 2 页 共 11 页摘要 .1前言 .21 需求分析 21.1 需求分析 .21.2 功能设计 .32.概要设计 32.1 程序设计思路 .32.2 程序运行界面 .32.3 模块说明图 .42.4 程序流程图 .52.5 程序相关说明 .63.程序详细设计与分析 63.1.初始化组件 .63.2.构建菜单栏及其下拉菜单 .63.3.“文件 ”菜单的事件监听 .73.4.“编辑 ”菜单的事件监听 .83.5.异常
2、处理 .94测试分析 .105源程序清单 .126课程设计总结 .17参考文献 .17简单记事本程序的设计第 3 页 共 11 页前言Java 的前身是 Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的 Internet 上。1995 年,Java 语言的名字从 Oak 编程了Java。1997 年 J2SE1.1 发布。1998 年 J2SE1.2 发布,标志 Java2 的诞生。十多年来,Java 编程语言及平台成功地运用在网络计算及移动等各个领域。Java 的体系结构由 Java语言、Java class、Java API、Java 虚拟机组成。
3、它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java 支持多线程编程,Java 运行时系统在多线程同步方面具有成熟的解决方案。Java 的平台标准有 Java ME,Java SE 和 Java EE。Java 发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持 Java的开发工具中主要的 7 有 Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper 和 Eclipse 等。其中 Java Development Kit 简称 JDK 是大多开发工具的基础。以上的每种开发工具都有优缺点,对于
4、开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的 JCreator 开发工具。2.3 模块说明图图 1在图 1 中,首先创建一个名为 mynotepad 的类并继承 JFrame 类作为最底层的容器。mynotepadimplementsextendsActionListenerJFramemynotepad的构造方法初始化容器 组件 添加事件监听菜单栏 文字输入区初始化初始化第 4 页 共 11 页图 2 在图 2 中,构造一个 mynotepad 类时要做
5、三件事情,分别是初始化容器(initTextContent) 、初始化组件(initMenu、initAboutDialog) 、设置事件监听器。2.4 程序流程图False False true true true true true true true true文件 编辑 关于新建打开保存退出剪切复制粘贴颜色关于启动程序输入文字新建打开保存退出剪切复制粘贴颜色关于file=nullfile=openfilesavingSystem.exit(0)content.cut()content.copy()content.pastecolorabout.show()关闭或退出程序第 5 页 共 1
6、1 页图 33.5.异常处理在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到 Java 异常处理机制。本程序中选用的异常处理机制是 try,catch。捕获处理异常的第一步是用 try 选定要监控的异常范围,try 后跟随 catch 代码块。saving()tryFileWriter Writef=new FileWriter(file);Writef.write(content.getText();Writef.close();catch(Exception e)e.printStackTrace(); void unfold()tryFileReade
7、r Readf=new FileReader(file);int len=(int)file.length();char buffer=new charlen;Readf.read(buffer,0,len);Readf.close();content.setText(new String(buffer);catch(Exception e)e.printStackTrace();第 6 页 共 11 页6课程设计总结经过差不多两个星期的努力,基本上完成我的 Java 课程设计 简单的记事本程序,也基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了
8、实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到 Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题,本来一开始想给这个记事本程序加上一张背景图片,以及添加字体设置功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。参考文献1.孙全党 王吴迪 赵枫朝,Java 程序设计应用教程,电子工业出版社,2006.22.雷
9、之宇,Java 项目开发实践网络篇,中国铁道出版社,2005.53.赵玉阳,Java 从入门到精通,清华大学出版社,2006.84.李茏怡,Java 编程实例讲解,高等教育出版社,2005.11完整代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;class mynotepad extends JFrameFile file=null;Color color=Color.red;mynotepad()initTextContent();initMenu();initAboutDi
10、alog();第 7 页 共 11 页void initTextContent()getContentPane().add(new JScrollPane(content);JTextPane content=new JTextPane(); JFileChooser openfile=new JFileChooser();JColorChooser opencolor=new JColorChooser();JDialog about=new JDialog(this);JMenuBar menu=new JMenuBar();JMenu menus=new JMenunew JMenu(“
11、文件“),new JMenu(“编辑“),new JMenu(“关于“);JMenuItem optionofmenu=new JMenuItemnew JMenuItem(“新建“),new JMenuItem(“打开“),new JMenuItem(“保存“),new JMenuItem(“退出“),new JMenuItem(“复制“), new JMenuItem(“剪切“),new JMenuItem(“粘贴“),new JMenuItem(“颜色“),第 8 页 共 11 页new JMenuItem(“关于“);void initMenu()for(int i=0;imenus.
12、length;i+)menu.add(menusi);for(int j=0;joptionofmenui.length;j+)menusi.add(optionofmenuij);optionofmenuij.addActionListener( action );this.setJMenuBar(menu); ActionListener action=new ActionListener() public void actionPerformed(ActionEvent e)String name = e.getActionCommand();JMenuItem MI=(JMenuIte
13、m)e.getSource();if(“新建“.equals(name)content.setText(“);file=null;else if(“打开“.equals(name)if(file !=null)openfile.setSelectedFile(file);int returnVal=openfile.showOpenDialog(mynotepad.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=openfile.getSelectedFile();unfold();else if(“保存“.equals(name)第 9
14、 页 共 11 页if(file!=null) openfile.setSelectedFile(file);int returnVal=openfile.showSaveDialog(mynotepad.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=openfile.getSelectedFile();saving();else if(“退出“.equals(name)mynotepad f=new mynotepad();int s=JOptionPane.showConfirmDialog(f,“退出?“,“退出“,JOption
15、Pane.YES_NO_OPTION);if(s=JOptionPane.YES_OPTION)System.exit(0);else if(“剪切“.equals(name)content.cut();else if(“复制“.equals(name)content.copy();else if(“粘贴“.equals(name)content.paste();else if(“颜色“.equals(name)color=JColorChooser.showDialog(mynotepad.this,“,color);content.setForeground(color); else if
16、(“关于 “.equals(name)about.setSize(300,150);about.show(); ; 第 10 页 共 11 页void saving()tryFileWriter Writef=new FileWriter(file);Writef.write(content.getText();Writef.close();catch(Exception e)e.printStackTrace(); void unfold()tryFileReader Readf=new FileReader(file);int len=(int)file.length();char buf
17、fer=new charlen;Readf.read(buffer,0,len);Readf.close();content.setText(new String(buffer);catch(Exception e)e.printStackTrace();void initAboutDialog()about.setLayout(new GridLayout(3,1);about.getContentPane().setBackground(Color.white);about.getContentPane().add(new JLabel(“我的记事本程序“);about.getConten
18、tPane().add(new JLabel(“制作者:liuhui“);about.getContentPane().add(new JLabel(“2010 年 6 月“);about.setModal(true);第 11 页 共 11 页about.setSize(100,100);about.setLocation(250,170); public class Notepadpublic static void main(String args)mynotepad noted=new mynotepad();noted.addWindowListener(new WindowAdapter();noted.setTitle(“我的记事本程序“);noted.setSize(640,320);noted.show();noted.setLocation(150,100);