字符串实现一个简单的行编辑器(数据结构课程设计参考样本)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用字符串实现一个简单的行编辑器
学生姓名:OOO 指导老师:XXX
摘要:本课程设计主要解决在文本编辑中,对行编辑的问题,通过字符串完善对文本的编辑,实现对文本的查找、替换、和修改数据。在本课程设计中,系统开发平台为Windows2000,程序设计语言为C语言,程序运行平台为Windws 98/2000/XP。在程序设计中采用了字符串的方法实现对简单的行编辑器。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。
关键词:程序设计;行编辑器;C语言;
1 引言
对于日常生活中的文本编辑来说,行编器是一个很重要的问题,文本的完善关系到文件做出的完美,决定了人们在编辑文本的时效率。一个好的用字符串实现的行编辑可以大大的提高人们办公效率。
1.1 课题背景
行编辑器是文本编辑器的一种,针对行进行编辑。现在看来当然非常地老式,这种编辑器起源于操作员还使用电传打字机的年代,也就是一个打印机连着键盘,因为没有显示器,也就无法在文档中移动光标。行编辑器只能从事最简单的输入输出。输入、编辑、文档显示并不能同步地进行。一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令,对已有的文档进行添加或编写。命令和文本,以及编辑器的相应输出,会根据他们的输入顺序,从底部开始逐一显示。虽然命令一般会显示被修改的行,但如果要将行连同文档中的上下文显示,则需要另外单独的命令。
现在常见的编辑器,都是通过移动光标,来选取要编辑的文本段落,与此不同的是,行编辑只能对“当前行”进行编辑。一般也可以在行内进行上下文匹配,或者选择特定行,以决定哪部分文档将被编辑或显示。当然,这些编辑每次都只能针对一行。行编辑器就只能一行一行的编辑,不能出错,一出错就得重来。
因此我们用字符串来定义,可以增强行编辑器的应用,增强可读性,加快人们的编辑文本的效率,从而推进社会的发展。这就是其重要意义。
1.2 课程设计目的
数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
数据结构课程的主要目的是介绍一些常用的数据结构,阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种数据结构,讨论对它们实行的各种
运算的实现算法。
生活中的例子,比如现在要做一个考试系统,要描述每个考生的信息,有姓名、性别、考号等,全部这些信息就构成一个小数据结构,每个考生有他自己的数据结构,这些结构要如何存放在计算机中,各个结构之间是什么关系,对整体需要哪些操作,比如查询、删除,怎样存储会使这样的操作效率更高,这些就是数据结构要解决的问题。如图1-1。
图1.1 实现的数据结构
1.3课程设计内容
本课程设计是用字符串实现一个简单的行编辑器,其中包括字符的按行录入、修改、替换、查询。如图1-2所示:
图1.2行编辑器功能框架图
2 设计思路与方案
2.1设计思路
栈是一种先进后出的线性表。它只允许在表的一端进行插入和删除元素,而在另一端不进行任何操作。比如假设栈为q=(a1,a2,…an),那么a1就是栈低元素,an则是栈顶元素。栈中的元素是按照a1,a2,…an的顺序进入的,出栈是可以按照这个次序依次退出。如图2-1
图2-1 C栈元素进栈
图2-2 C栈元素出栈后进入D栈
最后D栈出栈的元素序列是:a1,a2,…an。与输入序列完全一致。
2.2数据结构设计(还必须写详细些)
栈是一种先进后出的线性表,为了能按照原来的输入顺序输出元素,我在程序中设计了两个栈,第一个栈用来存储输入的字符,然后把第一个栈的元素出栈,并且把出栈的元素放入第二个栈中,这样就实现了出栈是元素的顺序和最开始输入的顺序是一致的了。
首先,构造一个空栈函数InitStack(SqStack &S);然后设计输入函数push(SqStack &S,char e)和出栈函数pop(SqStack &S,char &e);在这两个函数里,我们通过顶指针的增加(*S.top++=e)和指针的减少来实现元素的进栈和出栈(e=*--S.top)。
我们通过设计函数DestroyStack(SqStack &S)来清空栈中所有的元素,通过使用free()函数来释放*S.top的地址。通过函数PrintStack(SqStack &S)来输出显示输入的所有元素。
3 详细实现
3.1输入文本
定义一个输入函数,显示“请输入字符串”,从而可以输入字符。
3.2 编辑字符
图3.1 编辑文本流程图
3.3修改字符
本操作的流程图如下所示:
图3-2 文档的显示流程图
3.4输出文本
调用单链表中的Find函数,查找该文件内容在单链表中的位置,如果位置异常,输出提示信息”没有该文件”,否则,调用单链表中的Get函数,找出该文件并输出。
操作流程图如下所示:
图3-3输出文本流程图
4 运行环境与结果
4.1运行环境
在本课程设计中,系统开发平台为Windows2000,程序设计语言为Visual C++6.0,程序的运行环境为Visual C++ 6.0。Visual C++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以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++已成为专业程序员进行软件开发的首选工具。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公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。Visual C++ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种C++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
Visual C++ 6.0秉承Visual C++以前版本的优异特性,为用户提供了一套良好的可视化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。
用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。
4.2运行结果
(1)在程序开始运行时,就会显示出提示语,提示“请输入字符串”,如下图所示。.