数据结构课程设计简易文本编辑器
数据结构课程设计文本编辑器

山东理工大学计算机学院课程设计(数据结构)班级计科0906姓名赵利强学号0911011192指导教师孙守卿二○一一年一月二十日课程设计任务书及成绩评定课题名称文本编辑Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计………………………………………………………第四章详细设计………………………………………………………第五章运行与测试……………………………………………………第六章总结与心得……………………………………………………参考文献………………………………………………………………第一章概述在这次课程设计中我选的题目是文本编辑,文本编辑几乎是每个使用电脑的人都会遇到的问题,特别是网络小说作家们。
数据结构课程设计--简易文本编辑器

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级:2012-1 设计人:山东科技大学2015年 7 月 11 日目录1需求分析说明 (2)1.1主函数模块 (2)1.2菜单显示及输出子模块 (2)1.3查找功能子模块 (2)1.4替换功能子模块 (2)1.5插入功能子模块 (3)1.6块移动功能模块 (3)1.7删除功能模块 (3)1.8读盘功能模块 (3)1.9存盘功能模块 (3)1.10测试数据 (3)2概要设计说明 (4)2.1设计思想 (4)2.2模块调用图 (4)2.3程序代码简介 (4)3详细设计说明 (7)3.1主函数模块 (7)3.2菜单显示及输出子模块 (7)3.3查找功能子模块 (7)3.4替换子模块 (9)3.5插入子模块 (10)3.6块移动模块 (11)3.7删除模块 (12)3.8读盘功能模块 (13)3.9存盘功能模块 (15)3.10流程图 (16)4调试分析 (17)4.1遇到的问题 (17)4.2测试结果 (18)5用户使用说明 (22)6课程设计总结 (24)1需求分析说明简易文本编辑器的总体目标:在Visual Studio的开发环境下,利用所学C 语言和数据结构的相关知识,开发一个具有良好人机界面的简易文本编辑器,实现对文本的简单修改,从而达到编辑文本以及查看文本信息的目的。
基本功能如下:(1)界面友好,易与操作。
采用菜单或其它人机对话方式进行选择。
(2)能正确打开所键入的文本路径,并能够读取相应文本信息。
(3)能对打开的文本进行文本信息显示、替换、查找、块移动、删除等基本操作。
(4)能够正确对修改后的文本内容存盘。
(5)正确显示文本总行数。
以下是各功能模块的功能描述:1.1主函数模块主函数模块的主要功能是初始化菜单界面,功能按键选择并调用相关模块,实现软件功能。
1.2菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。
简单文本编辑器设计

用汇编语言编程设计一个简单的文本编辑器界面,显示文本文件的建立、编辑、退出界面。通过设计,掌握屏幕显示和下拉式菜单的工作原理,进一步提高综合运用知识的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
(1)要求一级菜单包含“FILE┃EDIT┃QUIT”,“FILE”的二级下拉式菜单包含“NEW”、“SAVE”、“OPEN”等;“EDIT”的二级下拉式菜单包含“COPY”、“PASTE、“SELECT”等;“QUIT”没有下拉菜单。
中北大学
课程设计任务书
11/12学年第二学期
学院:
信息与通信工程学院
专业:
自动化
学 生 姓 名:
学 号:课程设计Biblioteka 目:简单文本编辑器界面设计
起迄日期:
2012年6月4日~2012年6月8日
课程设计地点:
中北大学
指导教师:
张艳兵、张秀艳
系主任:
王忠庆
下达任务书日期:2012年6月1日
课 程设计任 务 书
1
2
3
4
5
6
5.设计成果形式及要求:
课程设计说明书1份
程序流程图1份
程序清单1份
6.工作计划及进度:
起迄日期
工作内容
12年6月4日~6月5 日
6月5日~6月6日
6月6日~6月7 日
6月7日~6月8日
6月17日
查阅资料,确定设计方案
画出流程图
编写并调试程序
撰写课程设计说明书
课程设计答辩
系主任审查意见:
(2)选择方案,画出流程图。
(3)编写汇编语言源程序,并调试。
(4)写出设计说明书。
数据结构简易文本编辑器

数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。
从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。
而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。
首先,让我们来了解一下什么是数据结构。
简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。
常见的数据结构包括数组、链表、栈、队列、树和图等。
在文本编辑器中,通常会用到多种数据结构来实现不同的功能。
对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。
一种常见的选择是使用字符数组。
字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。
但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。
为了提高插入和删除操作的效率,我们可以考虑使用链表。
链表中的每个节点存储一个字符和指向下一个节点的指针。
在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。
但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。
除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。
比如,当用户输入新的字符时,我们需要将其插入到适当的位置。
如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。
如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。
删除操作类似。
对于字符数组,需要将删除位置后的字符向前移动。
对于链表,只需修改相关指针,释放被删除的节点。
为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。
如果文本内容是有序的,二分搜索可以大大提高查找的效率。
另外,撤销和重做功能也是文本编辑器中常见的需求。
为了实现这两个功能,我们可以使用栈来保存操作的历史记录。
当执行一个操作时,将其相关信息压入撤销栈。
简单行编辑器 数据结构 课程设计

简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。
行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。
为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。
1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。
链表的每一个节点包含一个字符和指向下一个节点的指针。
这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。
1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。
这个指针可以指向一个字符之前、之后或者字符本身的位置。
通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。
2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。
插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。
- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。
2.2 删除操作:用户可以删除光标当前位置的字符。
删除操作包括以下步骤:- 找到光标所在节点。
- 更新链表的指针,将光标所在节点从链表中移除。
2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。
光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。
2.4 文本显示:用户可以查看当前编辑的文本内容。
通过遍历链表,将字符挨次输出即可。
3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。
- 光标位置指示器:显示光标当前位置。
- 命令输入框:接收用户输入的命令。
4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。
- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。
简单行编辑器 数据结构 课程设计

中国矿业大学徐海学院计算机系《软件认知实践》报告姓名:学号:专业:设计题目:简单行编辑器指导教师:2012年12月25目录第1章题目概述 (1)第1.1节题目要求 (1)第1.2节主要难点 (2)第2章系统流程图 (3)第3章数据结构和算法 (4)第4章核心代码分析 (6)第5章复杂度分析 (10)第6章总结 (11)参考文献 (13)第1章题目概述在这次课程设计中我选的题目是文本编辑,文本编辑几乎是每个使用电脑的人都会遇到的问题,特别是网络小说作家们。
在文本的编辑中,我们会时常遇到文本信息的统计问题、小型子串的查找问题、子串的查找和删除问题等。
如果靠人自己去观察和执行相关操作的话,不仅累人,而且很容易出错。
而使用计算机程序去实现的话,则会省力不少,而且相对来说非常精确。
本程序使用了较快速的查找算法,可以大大提高检索的效率,相信这可一极大的方便用户用电脑编辑文本文件。
第1.1节题目要求文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;实现功能(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;第1.2节主要难点本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。
数据结构课程设计之文本编辑器

##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 2011年6月20日至2011年6月30日指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:简易文本编辑器主要是针对文字编辑处理,对于如何编辑一个简易文本编辑器程序我们可以利用线性表示实现其功能,线性表便于插入删除查找功能,而文本编辑器需要用到这些功能,因此可以利用线性表实现。
对于文本编辑器应该具有插入、删除、查找等功能,并且可以显示所有输入数据,可正确存盘、取盘,正确显示编辑的文字长度。
2.基本功能:简易文本编辑器应该具有的功能:图形菜单界面:位置查找:数据查找:显示所有输入数据:插入:删除文本信息:可正确存盘、取盘:正确显示长度:3.输入输出:输入数据,数据类型为整形,且输入的字符或数字不多于100个,输出为输出输入的数据,输出输入数据的长度,输出插入元素及插入后的数据,输出查找元素的,输出的数据均为整形。
二、概要设计1.设计思路:首先构造一个线性表, 然后利用线性表的存储结构顺序存储方式,实现文本的编辑添加查找删除.2.数据结构设计:程序采取了线性结构利用顺序存储的方法,采用该结构的原因是线性表利于存储、插入、删除、查找、修改等功能,使用它可以使程序运行简单方便。
定义程序中用到的抽象数据类型;抽象数据类型线性表的定义如下:ADT SqList{数据对象:D={ai | ai∈data,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:InitList(*L)操作结果:构造一个空的线性表L。
GetLength(L)初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem( L, i,*e)初始条件:线性表L已存在,1≤i≤L.Length.操作结果:查找指定的某元素i,并将值赋给e,用e 输出。
C语言实现简易文本编译器

C语言实现简易文本编译器数据结构课程设计之简易文本编译器(C语言实现)需求分析(1)具有图形菜单界面:显示实时年份,日期,星期及时间(2)查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数替换(等长,不等长):对文本中的文本实现等长及不等长替换插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本块移动(行块,列块移动):向下移动一行,向上移动一行,具体行号列号处向左移动或向右移动删除:删除一行,删除莫一行,莫列,定长的内容(3)可正确存盘、取盘;:可读取,保存文本;(4)正确显示总行数。
(行数不少于5行,每行字符数不少于80个字符)采用的数据结构1:采用的逻辑结构文本编辑器主要是针对文本进行编辑,文本的操作就是对字符的操作。
文本编辑器可以从行、列两个方向进行编辑。
每一行可以看成一个线性表,线性表是一种线性结构,线性结构的特点是数据元素之间为线性关系,据元素“一个接一个的排列”。
在一个线性表中数据元素的类型是相同的,由于每一行可以存储的最大字数是相同的,行方向所有线性表的最大长度可以设置成相同的。
行与行之间的关系也可以看成一个线性表。
2.采用的存储结构线性表的存储分为两种:顺序存储和链式存储。
顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。
在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序表的数据存储区域是再合适不过的。
链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建立数据元系之间的线性关系对每个数据元素除了存放数据元素自身的信息之外,还需要和一起存放其后继或前驱所在的存储单元的地址,这两部分信息组成一个“结点”,每个元素都如此。
存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。
只有一个存储单元地址的为单链表,有两个存储单元地址的为双链表。
考虑到实际的功能需求,每行的线性表可以用顺序存储方式,每个字符是一个节点。
数据结构文本编辑器

数据结构课程设计报告一.需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行。
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。
(4)插入某一字符或者子串。
(5)查找某一字符或者子串。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。
通过题目及其要求可知,本程序应实现以下功能:(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;2.问题分析本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。
对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。
简易文本编辑器课程设计报告说明书

简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。
基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。
程序算法立足于书本并适当改良,能够实现文本的一些特定操作。
关键词:文本编辑 C语言程序算法Abstract:The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.Key words:Text editing C programming language Program algorithm1引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。
简易文本编辑器数据结构课设

摘要当下C++语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C++知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。
简易文本编辑器的问题就是一个例子,传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
关键词:简易文本编辑器,数据结构,顺序表。
目录一、需求分析11.1问题描述11.2基本任务1二、概要设计12.1主界面设计12.2数据结构设计1三、详细设计23.1清空内容模块23.2打开文件模块23.3输入模块23.4插入模块23.5删除模块23.6替换模块23.7显示模块23.8保存模块33.9系统层次图3四、测试结果34.1文本编辑器主界面34.2系统功能4五、调试分析7六、心得体会8七、参考文献9八、程序源代码10一、需求分析1.1问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
1.2基本任务通过用户调查分析和实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)打开文本读取已保存的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5)替换不需要的文本信息;(6)显示所有的文本信息;(7)保存所输入、插入、替换过的文本信息;(8)清空文本信息。
二、概要设计2.1主界面设计为了实现简易文本编辑器的各项功能,设计一个含有多个菜单项的主控菜单模块以操作系统的各项功能,进而方便用户使用系统。
2.2数据结构设计为实现数据的有序存储,该编辑器应该用顺序存储结构来存储输入的信息。
数据结构课程设计——简单行编辑程序

电子信息工程学院
课程设计报告
设计名称:数据结构课程设计
简单行编辑程序
姓名:学号:
专业班级:电子信息工程学院
系(院):
设计时间:
设计地点:EDA实验室
要打开的文件内容显示出来。
3.在执行“5.Open the file”时,输入想要打开文件的正确路径,回车。
如果想要打开的文件不存在,则跳出运行。
4.在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。
六测试成果
图(1):
图(2):
图(3):
图(4):
七附录(源程序清单)
#include "stdio.h"
#include "stdlib.h" #include "string.h" struct line{。
文本编辑器课程设计

文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。
2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。
3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。
技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。
2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。
3. 学生通过实践操作,培养解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。
2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。
3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。
课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。
学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。
通过具体的学习成果分解,为后续教学设计和评估提供依据。
二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。
教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。
教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。
教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。
教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。
教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。
教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。
数据结构课程设计报告-文本编辑器参考模板

《数据结构》课程设计报告题目:基于顺序结构的文本编辑器的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:2014-2015学年第一学期目录1课程设计内容 (1)1.1 设计内容 (1)1.2 设计任务 (1)1.3 具体要求 (1)2 概要设计 (1)2.1 系统的功能简介 (1)2.2 各个模块之间的主要关系 (2)3 设计过程及代码分析 (2)4 设计结果与分析 (15)5 源程序 (16)6 总结 (24)7 致谢 (24)8 参考文献 (25)1 课程设计内容1.1 设计内容《文本编辑器》主要根据课程设计要求进行设计的,本次课程设计的内容及要求是设计一个文本编辑器,能实现文本内容输入、显示、统计、处理、保存和退出文本编辑器等基本功能,主界面具有图形菜单界面、输入文本、打开文件、显示当前文本内容、进入文本内容统计菜单、进入文本内容处理菜单、保存、退出文本编辑器。
其中文本内容统计菜单包含大小写字母、数字、标点符号、空格、所有字符的统计;文本内容处理菜单包含查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
1.2 设计任务主要利用C语言的文件操作能力设计一个简单的文本编辑器,对于文本编辑器来说,数据结构相对简单,使用一个有较大长度的顺序表即可,在程序中可采用一维数组来实现。
使用数组表示的顺序表来存储文本具有简洁、访问方便、输出方便等特点。
1.3 具体要求明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用数据结构进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
2 概要设计2.1 系统的功能简介该系统的主要功能是实现文本内容输入、显示、统计、处理、保存。
首先,输入文本内容并保存;选择打开文件,打开刚才保存的文件;选择显示当前文章内容,可以预览文件内容;进入文章内容统计菜单,可以对文章中大写字母、小写字母、数字、标点符号、空格、所有字数的统计;进入文章内容处理菜单,查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
voidInsert(char insert_str[],int location);
//插入函数,在指定位置插入指定信息,//传入参量为需要插入的文本信息,以及//插入的相关位置。
1.5
本模块的主要功能是将需要插入的文本信息插入到指定的位置,并能够显示修改后的文本信息。
1.6
本模块的主要功能是将所要移动的模块移动到指定的相应位置,并能够显示修改后的文本信息。
1.7
本模块的主要功能是删除指定的文本。
1.8
本模块的主要功能是将存于磁盘内的文件读取,以便后续操作过程中使用。
1.9
本模块的主要功能是将改变后的文件存于磁盘,以便下次使用。
1.2
菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。
文本显示模块的主要功能是将所要显示的文本信息通过传入的参量传入本模块进行显示。
输出模块主要功能是输出文本所有信息。
1.3
本模块的主要功能是通过输入想要查找的文本信息,返回文本中所要查找的文本信息的所处起始位置。
1.4
本模块的主要功能是将输入的被替换的文本替换为替换的文本信息,并能够显示文本信息。
intInput(char input_string[]);//插入函数,在默认在文本末尾插入文本,//传入参量为所要插入的文本信息,返回//值为修改后的文本信息。
voidOutput();//输出函数,输出文本所包含的信息,无//传入参量,无返回值
intSearch(charsearch_str[]);//查找函数,查找相应的字符串函数传入//参量为指定的查找文本信息,返回查找//到的参数。
voidMove(char bemoved_str[],int location);
//块移动函数,将文本信息中的指定信息//移动到指定位置,传入参量为需要移动//的文本块以及指定的移动位置。
voidDelete(char delete_str[]);//删除函数,删除相应的文本信息,传入//参数为指定的被删除的文本
int Search(char search_strXSIZE];
int i=0;
int search_loc,search_len,s_len;
LNode *p;
p=L->next;
while(p)//获取修改后的文本信息
{
s[i++]=p->data;
p=p->next;
2.3
#define STRING_MAXSIZE 256//定义串的长度
#define ERR_NOMEMORY -1
charsource_str[STRING_MAXSIZE];//将文件内资源以字符串存于此变量
int len;//存储原始字符串的长度
//定义数据存储的结构,以链结构存储
typedef struct LNode{
三、设计应解决下列各主要问题:
____1、具有菜单图形界面;
2、具有查找、替换、插入、块移动、删除等功能;
3、可正确存盘、取盘;
4、正确显示总行数
四、设计说明书应附有下列图纸:
1、模块调用图
2、 程序流程图
五、小组分工说明:
六、命题发出日期:2015/7/4_设计完成日期:2015/7/11
指导教师评语
}
具体的KMP算法如下:
int KMPIndex(char *S,int n1,char *T,int n2)
//利用子串T的next函数求T在主串S中的位置
{
int i=0,j=0;
int *next=(int *)malloc(n2*sizeof(int));
if(!next) return ERR_NOMEMORY ;
(2)能正确打开所键入的文本路径,并能够读取相应文本信息。
(3)能对打开的文本进行文本信息显示、替换、查找、块移动、删除等基本操作。
(4)能够正确对修改后的文本内容存盘。
(5)正确显示文本总行数。
以下是各功能模块的功能描述:
1
主函数模块的主要功能是初始化菜单界面,功能按键选择并调用相关模块,实现软件功能。
具体的实现函数如下:
voidInsert(charinsert_str[],intlocation)
具体的实现函数如下:
int Replace(char replaced_str[],char replace_str[])
{
int j=0;
int replaced_str_loc,replaced_str_len,reped_len,source_str_len;
LNode *p,*s,*z,*w;
}
else
{
return -1;//未找到
}
}
3.4
本模块的主要调用Replace函将输入的被替换的文本转换为替换的文本信息,并显示文本信息。Replace函数通过调用for循环得到被替换的文本的前一节点的指针*p,以及被替换文本的后一节点的指针*s,调用Init函数使替换文本初始化为连式存储并返回此链的头节点指针存于*w,for循环得到替换文本最后一位节点的指针*w。通过指针的操作将被替换的文本卸下,并连接替换文本组成新链。最终打印输出此链。
//求子串T的next函数修正值并存入数组nextval
{
int j=1,k=0;
nextval[0]=-1;
while(j<n2)
{
if(k==0||T[k]==T[j])
{
nextval[j]=T[k]==T[j]?nextval[k]:k;
j++;
k++;
}
else
k=nextval[k];
}
s = s->next;
for(j = 0; j < reped_len;j++)
w = w->next;
p->next = z;
w->next = s->next;
Display();
return 0;
}
else
{
printf("**************************************\n");
}
s_len=strlen(s);
search_len=strlen(search_str);
if(search_len <= s_len)
{
search_loc = KMPIndex(s,s_len,search_str,search_len);//利用KMP算法获取查找的位置
return search_loc;
3
本模块的主要功能是通过调用Search函数实现基本功能,Search函数通过读入用户输入的想要查找的文本信息,通过调用KMP算法函数返回文本中所要查找的文本信息的所处起始位置search_loc,若找不到子串,则返回-1。
获取子串的next函数如下:
void KMPGetNext(char *T,int n2,int nextval[])
voidstatistics();//统计行数,无传入参数,无返回值。
voidKMPGetNext(char *T,int n2,int nextval[]);
intKMPIndex(char *S,int n1,char *T,int n2);//KMP算法,求文本的位置
3.1
主函数模块的主要功能是调用menu函数初始化菜单界面,并调用Openfile函数将存于本地磁盘内的文件读出到source_str[]数组中以备后续调用,并在将字符数组初始化为链表之后进入功能按键选择,通过switch语句进行相应的功能操作并调用相关模块,实现软件功能。
replaced_str_len = strlen(replaced_str); //被替换的字符的长度
reped_len = strlen(replace_str);//需要替换的字符的长度
source_str_len = strlen(source_str);//主串字符的长度
replaced_str_loc = Search(replaced_str);//被替换的字符的位置
3.2
菜单显示模块的主要功能是将菜单进行显示,本模块调用menu函数,menu函数由printf函数进行格式的输出,并通过system()函数进行颜色的改变,以及清屏等操作,主要输出内容包括本设计的介绍、小组信息、主要功能及相关代号。
输出模块主要功能是输出文本内容以及总行数,主要是调用Output函数和statistics函数将文本基本信息进行打印。Output函数主要是将changed_source_str字符数组进行输出打印,changed_source_str字符数组是存储操作后的source_str字符数组;statistics函数主要是统计文本中换行和结束符的个数,并输出打印count。
课程设计说明书
课程名称:数据结构课程设计
专业:电子信息科学与技术班级:2012-1
设计人:
山东科技大学
2015年7月11日
山 东 科 技 大 学
课 程 设 计 任 务 书
一、课程设计题目:简易文本编辑器
二、设计原始资料:[1] 严蔚敏、吴伟民,数据结构(C语言版)清华大学出版社 2012,05 [2]孙承爱、赵卫东,程序设计基础—基于C语言 科学出版社 2010,10
成绩:
指导教师(签章):
年 月 日