当前位置:文档之家› 记事本

记事本

目录第1章课程设计目的与要求 (1)1.1设计目的 (1)1.2实验环境 (1)1.3预备知识 (1)1.4设计要求 (1)第2章课程设计内容 (2)2.1 课题描述 (2)2.2 系统设计 (3)2.2.1功能分析 (3)2.2.2面向对象设计 (4)2.2.2类成员描述 (6)2.3程序实现 (8)2.3.1源码分析 (9)2.3.2运行结果 (14)第3章总结 (15)参考文献 (16)第1章课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握面向对象程序设计的方法。

(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

1.2实验环境硬件要求能运行Windows 操作系统的微机系统。

JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。

1.3预备知识熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。

1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。

2.积极上机调试源程序,增强编程技巧与调程能力。

3.认真书写课程设计预习报告,课程设计说明书。

4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。

第2章课程设计内容2.1 课题描述记事本只能处理纯文本文件,但是,由于多种格式源代码都是纯文本的,所以记事本也就成为了使用最多的源代码编辑器。

它只具备最基本的编辑功能,所以体积小巧,启动快,占用内存低,容易使用。

“记事本”的功能虽然连“写字板”都比不上,但它还是有它自己的独门绝技的。

下面我们就来看看记事本吧。

相对于微软的Word来说“记事本”的功能确实是太单薄了,只有:新建,保存,打印,查找,替换这几个功能。

但是“记事本”却拥有一个Word不可能拥有的优点:打开速度快,文件小。

我相信对于这一点大家一定是深有感触地,一点就打开;同样的文本文件用Word保存和用记事本保存的文件大小就大不相同,所以对于大小在64KB以下的纯文本的保存最好还是采用记事本。

记事本另一项不可取代的功能是:可以保存无格式文件。

你可以把记事本编辑的文件保存为:“.html”,“.java”,“.asp”等等任意格式。

这使得“记事本”又找到了一个新的用途:作为程序语言的编辑器。

翻开任何一本介绍一门编程语言的入门教材,里面都会建议学生在记事本中编写源程序。

21世纪,随着社会经济的迅速发展和科学技术的全面进步,人类社会已进入信息和网络时代。

为了便于对大量信息的处理,运用计算机软件实现自动管理成为了必然的趋势。

“记事本”是一个用来创建简单的文档的基本的文本编辑器。

“记事本”最常用来查看或编辑文本 (.txt) 文件,也可以作为创建 Web 页的简单工具。

所以我们需要开发一个记事本系统来实现大量信息的管理。

我们选用了Java来完成记事本系统的设计,并运用Eclipse集成开发环境。

Java 语言具有简单、面向对象、分布式、解释执行、可移植性、多线程以及动态性的特点使我们可以开发出功能强大的应用程序现在网络上各种文档编辑器数不胜数,功能也是应有尽有,有能改变字体的,有能改变字体颜色的。

但是这些软件又存在各种各样的瑕疵和问题:有的文件体积相当与一般文字编辑来说太大;有的功能太繁杂,是初级使用者一时难以掌握。

即从日常应用来说,一个文本编辑器只需一些简单使用的功能就够了。

本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。

设计一个简单的Windows记事本,可以实现以下功能:1.文件的新建,打开,保存和另存;2.对文件的编辑,如全选,复制,剪切,粘贴;3.执行完操作后,能够顺利关闭记事本。

2.2 系统设计2.2.1功能分析Java记事本程序是:图形界面、线程、流与文件等技术的综合应用。

图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。

线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。

文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。

由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。

在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。

主类完成对象的实例化及显示。

这们设计的优点是:条理清晰,容易理解,容易修改。

这样设计的缺点是:不利于共享类中的方法。

整个记事本分为两块:菜单栏和内容输入区。

本程序首先定义了一个Notepad类。

TextArea为程序文本输入区,Menu为菜单栏。

在内容上:1、监听事件的抽象方法,windowClosing(WindowEvent e),用e.getSource ()取得组件名称,然后触发相应的事件,这里对应一些编辑菜单里的事件直接调用系统的函数。

如复制,剪切等。

2、对一些事件的逻辑处理函数,包括新建文件、打开文件、保存文件、另存为、退出、关于作者,状态栏显示。

(一)界面设计在主界面中设计一个Frame容器,并在其中加入一个下拉菜单和一个文本域控件,把该容器设置为GridLayout(1,1)布局。

(二)功能设计在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。

点击不同菜单项时,显示不同界面。

(三)代码设计编写每个控件的相关代码,并进行调试。

2.2.2面向对象设计整体窗体布局包括菜单栏,工具栏,格式栏,输入部分。

类关系构造如图,共写了四个类,其中MainFrame.java是主窗体类,查找,替换,字体为JDialog窗体,他们之间的类关系是使用关系,彼此独立,可以让JDialog窗体有更好的移植性。

图2.2.2 类关系构造图这个记事本的界面没有采用NetBeans的设计界面功能,而是继承Java的awt和swing包,直接声明需要用到的组件,大的部分包括JMenuBar(菜单),两个 JToolBar(工具栏和格式栏), TextArea ta(文本区),设置系统常用功能,如复制、粘贴等。

这里专门写了一个添加菜单条MenuBar mb,调用里面的方法直接进行菜单子项的添加。

同时将菜单子项的事件监听进行了注册。

布局最后的阶段是声明JPanel组件,将各个小的组件组合起来,进行南北中的添加,保证界面的美观。

用户自定义类类名:Notepad作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame mainFrame;//主框架TextArea ta;//文本区private MenuBar mb ; //菜单条private Menu mFile , mEdit , mFormat , mHelp ; //菜单:文件,编辑,格式,帮助private MenuItem miNew , miOpen , miSave , miSaveAs , miExit ;//文件菜单项:新建,打开,保存,另存为,退出private MenuItem miCut , miCopy , miPaste , miDelete ;//编辑菜单项:剪切,复制,粘贴,删除private MenuItem miFont , miLowtoCapital, miCapitaltoLow ,miEncrypt , miDisencrypt;//格式菜单项:字体private MenuItem miAboutNotepad;//帮助菜单项:关于记事本private String tempString;//临时字符串,用于存储需要复制粘贴的字符串private boolean textValueChanged = false;private int id_font ;//字体String fileName = "";//上次保存后的文件名和地址类 Toolkitng.Objectjava.awt.Toolkitpublic abstract class Toolkitextends Object此类是 Abstract Window Toolkit 的所有实际实现的抽象超类。

Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。

主要成员方法:public void init() //初始化各部件菜单的定义和事件的监听public void displayEdit ()//显示窗体及调用Time中的schedule方法public void windowClosing () //关闭窗体public void save //保存文件方法(一)内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed()(二)内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()(三)内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()许多 GUI 操作可以异步执行。

这意味着如果设置某一组件的状态,随后立刻查询该状态,则返回的值可能并没有反映所请求的更改。

这包括但不限定于以下操作:(1)滚动到指定位置例如,如果原始请求没有被处理,那么调用 ScrollPane.setScrollPosition 并随后调用 getScrollPosition 可能返回一个不正确的值。

相关主题