用字符串实现一个简单的行编辑器

上传人:平*** 文档编号:15399966 上传时间:2017-11-04 格式:DOC 页数:16 大小:341.43KB
返回 下载 相关 举报
用字符串实现一个简单的行编辑器_第1页
第1页 / 共16页
用字符串实现一个简单的行编辑器_第2页
第2页 / 共16页
用字符串实现一个简单的行编辑器_第3页
第3页 / 共16页
用字符串实现一个简单的行编辑器_第4页
第4页 / 共16页
用字符串实现一个简单的行编辑器_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《用字符串实现一个简单的行编辑器》由会员分享,可在线阅读,更多相关《用字符串实现一个简单的行编辑器(16页珍藏版)》请在金锄头文库上搜索。

1、 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 用字符串实现一个简单的行编辑器学生姓名:刘慧 指导老师:易建勋摘 要 本课程设计主要解决在文本编辑中,对行编辑的问题,通过字符串完善对文本的编辑,实现对文本的查找、替换、和修改数据。在本课程设计中,系统开发平台为 Windows2000,程序设计语言为 C 语言,程序运行平台为 Windws 98/2000/XP。在程序设计中采用了字符串的方法实现对简单的行编辑器。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。关键词 程序设计;行编辑器; C 语言; 1 引 言对于日常生活中的文本编辑来说,行编

2、器是一个很重要的问题,文本的完善关系到文件做出的完美,决定了人们在编辑文本的时效率。一个好的用字符串实现的行编辑可以大大的提高人们办公效率。1.1 课题背景行编辑器是文本编辑器的一种,针对行进行编辑。现在看来当然非常地老式,这种编辑器起源于操作员还使用电传打字机的年代,也就是一个打印机连着键盘,因为没有显示屏,也就无法在文档中移动光标。行编辑器只能从事最基本的文本输入与输出。输入、编辑、文档显示并不能同步地进行。一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令,对已有文档进行添加或编写。命令和文本,以及编辑器的相应输出,会根据他们的输入顺序,从底部开始逐一显示。虽然命令一般会显

3、示被修改的行,但如果要将行连同文档中的上下文一起显示,则需要另外单独的命令。 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 现在常见的编辑器,都是通过移动光标,来选取要编辑的文本段落,与此不同的是,行编辑器只能对“当前行”进行编辑。一般也可在行内进行上下文匹配,或者选择特定行,以决定哪部分文档将被编辑或显示。当然,这些编辑每次都只能针对一行。行编辑器就只能一行一行的编辑,不能出错,一出错就得重来。因此我们用字符串来定义,可以增强行编辑器的应用,增强可读性,加快人们编辑文本的效率,从而推进社会的发展。这就是其重要意义。1.2 课程设计目的数据结构是在整个计算机科学与技术领域上广泛被使

4、用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。 数据结构课程的主要目的是介绍一些常用的数据结构,阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种数据结构,讨论对它们实行的各种运算的实现算法。生活中的例子,比如现在

5、要做一个考试系统,要描述每个考生的信息,有姓名、性别、考号等,全部这些信息就构成一个小数据结构,每个考生有他自己的数据结构,这些结构要如何存放在计算机中,各个结构之间是什么关系,对整体需要哪些操作,比如查询、删除,怎样存储会使这样的操作效率更高,这些就是数据结构要解决的问题。如图 1 所示 (下同)。 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 字符串- -行编辑器图 1-11.3 课程设计内容本课程设计是用字符串实现一个简单的行编辑器,其中包括字符的按行录入及储存、文件内容的显示、文件内容的查找、文件内容的替换、文件的修改。如图 2 所示 :用字符串实现的行编辑器 查找数据文本

6、的输入 文本的输出替换数据 修改数据图 1-2 用字符串实现行编辑器2 设计思路与方案2.1 设计思路字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中它们可作为基本类型获得,在另一些语言中作为复合类型获得。多数高级语言的语法允许通常用某种方式引用起来的字符串来表示字符串数据类型的实例;这种元字符串叫做“文本”或“字符串文本” 。封装在一起。尽管形式字符串可以有任意有限的长度,实际语言的字符串的长度经常被限制到一 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 个人工极大值。一般的说,有两种类型的字符串数据

7、类型: “定长字符串” ,它有固定的极大长度并且不管是否达到了这个极大值都使用同样数量的内存;和“变长字符串” ,它的长度不是专断固定的并且依赖于实际的大小使用可变数量的内存。在现代编程语言中的多数字符串是变长字符串。尽管叫这个名字,所有变长字符串还是在长度上有个极限,一般的说这个极限只依赖于可获得的内存的数量。一个简单的字符串操作是“连接”:也就是说先写一个字符串 S,随后在后面再写一个 T 得到 ST 这样一个过程。 其它的常见操作包括在一个长字符串中搜索一个子串,排列一组字符串以及分析一个字符串。因为存在如此多的字符串应用方式,所以相应地有许多权衡了不同应用的相关算法。 高级的字符串算法

8、通常使用包括后向树和有限状态机在内的复杂机制和数据结构。因此我们使用字符串思想简单的行编辑器,更好地实现其可读性,从而使工作学习中更快捷更方便实现文本的编辑。行编辑器只能从事最基本的文本输入与输出。输入、编辑、文档显示并不能同步地进行。一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令,对已有文档进行添加或编写。命令和文本,以及编辑器的相应输出,会根据他们的输入顺序,从底部开始逐一显示。虽然命令一般会显示被修改的行,但如果要将行连同文档中的上下文一起显示,则需要另外单独的命令。现在常见的编辑器,都是通过移动光标,来选取要编辑的文本段落,与此不同的是,行编辑器只能对“当前行”进行编

9、辑。一般也可在行内进行上下文匹配,或者选择特定行,以决定哪部分文档将被编辑或显示。当然,这些编辑每次都只能针对一行。2.2 设计方案 为了编辑的方便,我们可以利用换页行和换行浮把文本划分成若干页,每页有若干行.我们可以把文本看成是一个字符串,称为文本串.页则是文本串的子串,行又是页的子串.比如有下列的一段源程序: 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 Main()Float a,b,max;Scanf(“%f,%f”,&a,&b);If ab max=a;Else max=b;我们可以把此程序看成是一个文本串.为了管理文本串的页和行,再进入文本编辑的时候,编辑程序先为文本串

10、建立相应的页表和行表,即建立各子串的储存映像。页表的每一项给出了页号和该页的起始行号。而行表的每一项则指示每一行的行号、起始地址和该行子串的长度。文本编辑器中设立页指针、行指针和字符指针,分别指示当前操作的页、行和字符。如果在某行内插入或删除若干字符,则要修改行表中该行的长度。3 详细实现3.1 输入文本定义行插入格式、行删除格式、活区切换格式以及活区显示格式,在执行命令前必须用 o 命令打开文件,并用 p 命令显示出来。3.2 编辑文本char string80;/ 存储每一行的元素struct text *next;/ 指向后一个节点的指针struct text *pre;/ 指向前一个节

11、点的指针int num;/ 每一行元素的长度int flat;/ 确定此行是否被删除的标志text;FILE *fp,*out;text *head;int n=0,sum,delnum,xiugai=0,page=0;操作的流程图如下图所示: 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 存储每一行的元素指向后一个节点的指针指向前一个节点的指针编辑文本确定此行是否被删除的标志NY图 3-1 编辑文本流程图3.3 文档显示本操作的流程图如下所示:查找该文档在链表中的位置判断位置是否为0NY输出文档的位置信息输出没有该文档输入要查找的文档 刘慧 用字符串实现一个简单的行编辑器 第页

12、共 17 页 图 3-2 文档的显示流程图3.4 输出文本调用单链表中的 Find 函数,查找该文件内容在单链表中的位置,如果位置异常,输出提示信息”没有该文件”,否则,调用单链表中的 Get 函数,找出该文件并输出。操作流程图如下所示:输入文本查找该文件在链表中的位置判断位置是否为0输出没有该文本输出文本YN图 3-3 输出文本流程图4 运行环境与结果4.1 运行环境 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 在本课程设计中,系统开发平台为 Windows2000,程序设计语言为 Visual C+6.0,程序的运行环境为 Visual C+ 6.0。Visual C+一般分

13、为三个版本 :学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以 Visual C+ 6.0 为编程环境。Microsoft Visual C+ 6.0 是 Microsoft 公司的 Microsoft Visual Studio 6.0 开发工具箱中的一个 C+程序开发包。Visual C+包中除包括 C+编译器外,还包括所有的库、例子和为创建 Windows 应用程序所需要的文档。自 1993 年 Microsoft 公司推出Visual C+1.0 后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发

14、的首选工具。 Visual C+从最早期的 1.0 版本,发展到最新的 7.0 版本,Visual C+已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的 7.0版本在编译器、MFC 类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所以实际中,更多的是以Visual C+6.0 为平台。Visual C+ 6.0 是 Microsoft 公司推出的目前使用最广泛的基于 Win

15、dows 平台的可视化编程环境。Visual C+ 6.0 是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的 Internet 支持,因而在各种 C+语言开发工具中脱颖而出,成为目前最为流行的 C+语言集成开发环境。Visual C+ 6.0 秉承 Visual C+以前版本的优异特性,为用户提供了一套良好的可视化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger 调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。4.2 运行结果(1)在程序开始运行时,就会显示出提示语,提示“请输入字符串” ,如下图所示。. 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 图 4-1 显示最初运行的页面(2)输入字符串。结果如下图所示:图 4-2 输入字符串 刘慧 用字符串实现一个简单的行编辑器 第页 共 17 页 (3)当输入#则可以消去一个字符,如图所示图 4-3 输入#后的运行图(3)当输入则可以消去一个字符,如图所示 刘慧 用字符串实现一个简单的行编

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号