# 基于Java实现的记事本
# 摘 要
目前,很多新的技术领域都涉及到了 Java 语言,Java 语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关数据结构中操控字符串的方式。此记事本程序,使用 Java 程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,加解密文本文件,退出,复制,粘贴,剪切等功能。该程序主要用到了 Java swing 和事件监听等。
**关键词**:GUI、字符串、Java、DES
# 一、 绪论
## 1.1 引言
Java 语言程序设计是一门实践性很强的软件设计课程,是继 PASCAL 语言之后的又一门优秀的课程教学语言,并且是教学需要与实际应用相结合的一门语言。课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。通过这次课程设计可以将书本上的知识转换成实际的东西,做到学以制用。通过本次课程设计,可以帮助学生全面牢固地掌握课堂教学内容、培养学生的实践动手能力和分 Java 语言程序设计实际问题的能力,培养学生调查研究、查阅技术文献、资料的能力,培养学生良好的编程风格和优秀的程序设计技术。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了 Eclipse 开发工具。
## 1.2 目的
目前,很多新的技术领域都涉及到了 Java 语言,Java 语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。按照教学培养计划要求,学生在学习完课本中指定课时的知识后,应安排一定课时的课程设计。其主要目的是使学生深入理解并实践在本课程中所学的有关 Java 程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等。故此“记事本”应运而生。
记事本主要用于对文字进行简单编辑软件,通过自己对于 Java 的学习,通过使用 Eclipse 开发工具,编写出简单的记事本,从而提高自己对于 Java 知识的理解和运用。
## 1.3 课题意义
随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
# 二、 系统分析
## 2.1 可行性分析
### 2.1.1 技术可行性
随着互联网应用越来越丰富,我们也能见到很多各种各样的记事本用于记事。但是,一个可以用于加解密的记事本却还是很少。使用 Java Swing 来制作一个记事本,使用 IO 流进行操作,使用加密算法进行加密,也就成了可能。
### 2.1.2 经济可行性
开发本系统所用的人力、物力、技术、资金等的花费不大,所以今后获得的经济效益一定会大于开发成本。
### 2.1.3 操作可行性
本开发系统操作步骤简单,打开即用,加解密方便。
## 2.2 软件需求分析
### 2.2.1 功能需求
本程序要构建的记事本程序参照了 Windows 操作系统的记事本工具,菜单中有“文件”,“编辑”,“关于”三个主菜单:
- “文件”有“新建”、“打开”、“保存”、“另存为”、“解密打开”、“加密保存”、“加密另存为”、“退出”,分别用于新建文件,打开文件,保存文件,解密打开文件,加密保存文件,退出
- “编辑”中有“替换 | 查找”子菜单,用于替换或查找文本
- “关于”菜单中有 “关于记事本”子菜单,用于介绍记事本程序的作者等信息
### 2.2.2 假定的约束
- 开发软件运行的最短寿命不要低于 2 年,即须更新
- 进行方案选择比较的期限不要超过 2 个月
- 经费主要通过贷款以及广告商赞助,需要严格控制支出
- 法律和政策方面的限制:主要侵权以及隐私等机密问题的传播控制
- 必须在双核 CPU 频率大于 1.7GHZ,内存大于 512MB,硬盘空间必须要 500MB 以上的机子上安装运行
- 可在 WINDOWS 以及 Linux 的系统环境下运行
- 在 JDK 环境下进行开发设计
### 2.2.3 性能需求
系统响应时间要 <=10s;
### 2.2.4 安全需求
软件使用了 DES 算法作为加解密算法,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种。
### 2.2.5 运行需求
- 带有 JDK 环境的系统
- window/linux/unix 通用
# 三、 系统设计与实现
## 3.1 程序设计思路
在本程序中,设计了一个菜单栏和文本内容区。设计过程中用到了 JFrame,JScrollPane,JMenu,JMenuItem,JTextArea,JFileChooser 等。JMenu 用来制作菜单,菜单包括“文件”“编辑”“关于”。JTextArea 主要用来输入文本。
## 3.2 概要设计
### 3.2.1 模块设计
本应用软件是简单的记事本,其能实现文件的新建、打开、保存、另存为、加密保存、解密打开、退出;剪切、复制、粘贴、删除、全选、查找、替换。为实现这些功能,需要设置以下模块:
**主模块**

**文件相关功能模块**

**文档编辑模块**

**菜单设计有如下的一般性原则**:
- 按照系统的功能来组织菜单
- 要选用广而浅的菜单树,而不是窄而深的菜单树
- 根据菜单选项的含义进行分组;并且按一定的规则排序
- 菜单选项的标题要力求文学简短、含义明确,并且最好以关键词开始
- 常用选项要设置快捷键
### 3.2.2 系统模块结构图

如图所示,首先创建一个名为继承 JFrame 类作为最底层的容器。

构造一个类要做三件事情,分别是初始化容器、初始化组件、设置事件监听器。
### 3.2.3 系统流程描述

## 3.3 界面设计
### 3.3.1 主界面设计




具体实现代码如下:
```java
public Main() {
setTitle("Java\u8BB0\u4E8B\u672C");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 924, 587);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu menu = new JMenu("\u6587\u4EF6");
menuBar.add(menu);
JMenuItem menuItem = new JMenuItem("\u65B0\u5E