
工程实践 2
项目结题报告
项目名称: 记事本之文本编辑器
班 级:
学生姓名:
学生学号:
指导教师:
成 绩:
1

2019 年 1 月 7 日
成都 XXXX 大学 计算机学院
目 录
1 问题描述................................................................................................................................................3
1.1 功能描述........................................................................................................................................3
1.2 性能描述........................................................................................................................................3
2 方案描述................................................................................................................................................4
3 项目设计................................................................................................................................................4
3.1 软件结构设计................................................................................................................................4
3.2 数据结构设计................................................................................................................................4
3.3 关键算法设计................................................................................................................................5
4 软件实现................................................................................................................................................5
4.1 文件模块........................................................................................................................................5
4.2 编辑模块......................................................................................................................................13
4.3 统计模块......................................................................................................................................16
5 软件测试..............................................................................................................................................18
6 项目总结..............................................................................................................................................21
7 参考文献..............................................................................................................................................22
2

1 问题描述
文本编辑器在 的应用中是一个非常重要的项目,在过去十数
年中,微软对 文本编辑器有多个版本的升级改进。在软件发展迅
速的背景下,更是出现了许多如 这样功能丰富、能够对文本进
行多样化编辑的文本编辑软件。
为了了解数据结构知识、 项目知识在文本编辑器开发中的应
用,我的工程实践二选了此题目。希望能够通过这次项目实践,对数据结
构的知识的巩固有大的帮助,也希望能够通过涉及这些课本外的知识,来
丰富我的专业知识。
1.1 功能描述
文本编辑器功能:
()文件操作:实现文件打开、保存、另存以及新建一个文件;
()编辑操作:撤销、剪切、复制、粘贴、删除以及全选;
(3)其他:统计总字数以及查找替换;
1.2 性能描述
3

能够处理 文件数据,能够查找到文本内容内所有目标字符,并且将
目标字符替换成预定字符。能够利用菜单或者快捷键快速实现复制剪切粘贴等
操作。
2 方案描述
主要借助 MFC 向导实现包括菜单在内的所有图形界面,通过为相应菜单选
项添加消息响应函数来调用相关函数实现功能;
在一些复杂函数,比如字符串查找替换等,利用 C++封装类先实现功能框
架,然后自定义函数实现核心算法。
一些涉及图形界面的操作,利用 C++MFC 的封装类来实现,比如对话框的
弹出、文本框大小改变、选中查找文字等。
3 项目设计
3.1 软件结构设计
图 1-1 系统功能结构图
软件功能结构如图 1-1 所示,主要分为文件、格式、帮助、编辑四大模块。
其中文件和编辑模块为主要核心部分。文件模块实现对文件打打开保存等基本
操作,编辑模块主要涉及对文本的编辑操作。
3.2 数据结构设计
4

文本编辑器的操作对象是文本,即字符内容,基本的操作都是在字符串上
面进行的,在 MFC 程序中,使用 CString 类来操作字符串。
在 CString 的数据结构中,字符串是顺序存储的结构。所以本程序的数据结
构设计以线性表的顺序存储来实现。
3.3 关键算法设计
3.3.1 字符串匹配算法:
在字符串匹配算法中,主要问题是在主串中找到模式串的位置。而这就
需要将模式串和主串比对,最简单的方法就是从主串和模式串的第一个字
符开始比对,如果相等,则往下比对主串第二个字符和模式串第二个字符,
一直往下;如果遇到不相等的,则将主串第二个字符与模式串第一个字符
比对,依次往下。但是这种方法十分耗时,其时间复杂度到达 O(m*n)。
著名的 KMP 算法十分经典,时间复杂度最多可以降低到 O(n),但是
比较晦涩难懂。
基于以上,我在网上发现了一个比较理想的算法——Sunday 算法,其
核心思想是:在匹配过程中,模式串发现不匹配时,算法能跳过尽可能多
的字符以进行下一步的匹配,从而提高了匹配效率。在 算法中,
发现失配后,是取目标串中和模式串对应部分后面的一个字符,来进行下
一次的匹配。 算法平均性能的时间复杂度为 O(n),最差情况的时
间复杂度为 O(n*m);
算法具体实现参见 :4.2.3 查找辅助函数——Sunday 算法。
4 软件实现
4.1 文件模块
4.1.1 新建文件
模块名称:OnFileNew()
初始条件:当前窗口无内容,或者已经选择是否保存当前窗口内容。
操作结果:清空当前窗口,新建文本内容。
!"
5