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

合集下载

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

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

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级: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菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。

数据结构课程设计_中文文本编辑(文本删除、修改、查询、统计、添加)

数据结构课程设计_中文文本编辑(文本删除、修改、查询、统计、添加)

数据结构课程设计:文本编辑(最后附完整代码)一.问题描述---------------------------------------------1二.设计思路---------------------------------------------1三.系统实现功能1.建立单链表-------------------------------------------22.显示文章内容---------------------------------------- 33.查找文章语句-----------------------------------------34.删除文章语句-----------------------------------------55.替换文章语句-----------------------------------------76.统计文章字数-----------------------------------------107.写入文本结束程序--------------------------------------10四.系统不足及需改进分------------------------------------11五.文件清单说明------------------------------------------11六:附录-------------------------------------------------12一:问题描述本次我所做的课程设计为:文本编辑,主要内容是对中文文本的显示、查找、删除、替换、统计、写入文本。

在程序选择功能后根据提示,输入任意长度中文语句即可对文章进行操作。

二:设计思路文本编辑,顾名思义就是对一遍文章进行编辑,我所设计的是对中文的编辑。

中文有两个字节(汉字、标点),通常情况下通过文件输入流仅仅可以取一个字节或者是以空格为分隔符取单词这仅仅对英文的文章适用,周六周日我从网上搜索相关方法,未找到一条切实可用的对中文字符操作的方法。

数据结构简易文本编辑器

数据结构简易文本编辑器

数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。

从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。

而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。

首先,让我们来了解一下什么是数据结构。

简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。

常见的数据结构包括数组、链表、栈、队列、树和图等。

在文本编辑器中,通常会用到多种数据结构来实现不同的功能。

对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。

一种常见的选择是使用字符数组。

字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。

但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。

为了提高插入和删除操作的效率,我们可以考虑使用链表。

链表中的每个节点存储一个字符和指向下一个节点的指针。

在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。

但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。

除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。

比如,当用户输入新的字符时,我们需要将其插入到适当的位置。

如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。

如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。

删除操作类似。

对于字符数组,需要将删除位置后的字符向前移动。

对于链表,只需修改相关指针,释放被删除的节点。

为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。

如果文本内容是有序的,二分搜索可以大大提高查找的效率。

另外,撤销和重做功能也是文本编辑器中常见的需求。

为了实现这两个功能,我们可以使用栈来保存操作的历史记录。

当执行一个操作时,将其相关信息压入撤销栈。

简单行编辑器 数据结构 课程设计

简单行编辑器 数据结构 课程设计

简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。

行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。

为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。

1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。

链表的每一个节点包含一个字符和指向下一个节点的指针。

这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。

1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。

这个指针可以指向一个字符之前、之后或者字符本身的位置。

通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。

2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。

插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。

- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。

2.2 删除操作:用户可以删除光标当前位置的字符。

删除操作包括以下步骤:- 找到光标所在节点。

- 更新链表的指针,将光标所在节点从链表中移除。

2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。

光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。

2.4 文本显示:用户可以查看当前编辑的文本内容。

通过遍历链表,将字符挨次输出即可。

3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。

- 光标位置指示器:显示光标当前位置。

- 命令输入框:接收用户输入的命令。

4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。

- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。

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

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

##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 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语言实现简易文本编译器数据结构课程设计之简易文本编译器(C语言实现)需求分析(1)具有图形菜单界面:显示实时年份,日期,星期及时间(2)查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数替换(等长,不等长):对文本中的文本实现等长及不等长替换插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本块移动(行块,列块移动):向下移动一行,向上移动一行,具体行号列号处向左移动或向右移动删除:删除一行,删除莫一行,莫列,定长的内容(3)可正确存盘、取盘;:可读取,保存文本;(4)正确显示总行数。

(行数不少于5行,每行字符数不少于80个字符)采用的数据结构1:采用的逻辑结构文本编辑器主要是针对文本进行编辑,文本的操作就是对字符的操作。

文本编辑器可以从行、列两个方向进行编辑。

每一行可以看成一个线性表,线性表是一种线性结构,线性结构的特点是数据元素之间为线性关系,据元素“一个接一个的排列”。

在一个线性表中数据元素的类型是相同的,由于每一行可以存储的最大字数是相同的,行方向所有线性表的最大长度可以设置成相同的。

行与行之间的关系也可以看成一个线性表。

2.采用的存储结构线性表的存储分为两种:顺序存储和链式存储。

顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。

在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序表的数据存储区域是再合适不过的。

链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建立数据元系之间的线性关系对每个数据元素除了存放数据元素自身的信息之外,还需要和一起存放其后继或前驱所在的存储单元的地址,这两部分信息组成一个“结点”,每个元素都如此。

存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。

只有一个存储单元地址的为单链表,有两个存储单元地址的为双链表。

考虑到实际的功能需求,每行的线性表可以用顺序存储方式,每个字符是一个节点。

文本器电子稿

文本器电子稿

数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院专业:嵌入式系统软件班级:嵌入式1091学生:陈进美指导教师:寇海洲孙成富邱军林殷路2010年12月目录一、设计目的 (1)二、设计内容 (1)三、程序设计步骤 (2)四、调试分析 (8)五、测试结果 (8)六、课程设计小结: (15)一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2、提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。

4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。

二、设计内容1、系统名称:简易文本编辑器简易文本编辑器的功能包括:删除,查找,移动,存盘,取盘,替换,求总行数,插入等。

要求有图形界面,以使上述业务可以简单操作。

2、要求:(1)编辑器可以从文件中读取数据,进行要求操作,再存入该文件中。

文件操作前后都应分行。

(2)通过此文本编辑器可以实现如下功能:①取盘功能:读入文件内容。

②查找功能:根据客户提供的内容查找首字母在文本中的位置。

②删除功能:根据客户提出的内容将文本中的该内容删除。

④插入功能:在文本中客户要求的位置插入客户要求插入的内容。

④移动功能:按客户要求将相应行移到指定位置。

④替换功能:按客户要求将指定内容替换成客户提供的内容。

④求总行数功能:求得文本中的行数。

④将改好的内容存入文本中。

三、程序设计步骤三、程序设计步骤1)功能分析说明图:2)采用主要的数据结构类型。

using System;using System.Collections.Generic; using ponentModel; using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace _1{public partial class Form1 : Form{char[] zong=new char [100];//存储文件内容的字符数组zongstring zong1;//存储文件内容的字符串zong1int danchang = 0;//文件中字符满行的行数public Form1(){InitializeComponent();}private void textBox6_TextChanged(object sender, EventArgs e) {}private void bqp_Click(object sender, EventArgs e){string a = "C:\\123\\111.txt";FileInfo f = new FileInfo(a);StreamReader reader1 = f.OpenText();string zong3 = reader1.ReadLine();//读出第一行string zong2 = reader1.ReadLine();//读出第二行int j = 2;StringBuilder sb = new StringBuilder("", 100);sb.Append(zong3);//合并一二行sb.Append(zong2);while (zong3.Length ==zong2.Length)//&&(danchang*j<zong1.Length||zong1.Length==0)){zong2 = reader1.ReadLine();//逐行读出?sb.Append(zong2);//逐行并入sbj++;}reader1.Close();zong1 = sb.ToString();//读出的内容存入zong1zong = zong1.ToCharArray();//存入zongqp.Text = zong1;//将读出的内容显示出来danchang = zong3.Length;//求出?满行字符数}private void bcz_Click(object sender, EventArgs e){int i = 0;string ab = cznr.Text;int ef = zong1.Length - ab.Length+1;//实际最多比较个数int i1 = 0;for(i=0;i<ef;i++){int j=0;if(zong1[i]==ab[0])//找到Ì查找内容的一个字符{for (j=i;j<ab.Length + i;j++)//比较后续字符{if (zong1[j] == ab[j-i] && j==(i + ab.Length - 1))//查到内容{ i1 = i;//记录索引i = ef;//跳出大循-环break;//跳出小循-环}}}}i1++;czjg.Text =i1.ToString();//输出查找内容的位置}private void bcr_Click(object sender, EventArgs e){StringBuilder sb = new StringBuilder("", 100);sb.Append(zong);string zong2 = sb.ToString();int i = int.Parse(crwz.Text);//读入插入位置StringBuilder a = new StringBuilder(zong2.Substring(0, i - 1), 100);//取出zong1中插入位置前的字符串a.Append(crnr.Text);//并入插入内容zong2 = zong2.Substring(i - 1, zong2.Length - i + 1);//取出插入位置后的Ì字符串a.Append(zong2);//并入zong1 = a.ToString();//存入zong1zong = zong1.ToCharArray();//存入zong}private void bth_Click(object sender, EventArgs e){int i = 0;string ab = yw.Text;int ef = zong1.Length - ab.Length+1;int i1 = 0;for(i=0;i<ef;i++){int j=0;if(zong1[i]==ab[0]){for (j=i;j<ab.Length + i;j++){if (zong1[j] == ab[j-i] && j==(i + ab.Length - 1)){ i1 = i;i = ef;break;}}}}//查找要替换的原文的索引//下面与插入类似?string c = zong1.Substring(0, i1);StringBuilder sb1 = new StringBuilder("", 100);sb1.Append(c);sb1.Append(tw.Text);sb1.Append(zong1.Substring (i1 + ab.Length, zong1.Length - i1 - ab.Length)); zong1=sb1.ToString ();zong = zong1.ToCharArray();}private void bsc_Click(object sender, EventArgs e){int i = 0;string ab = scnr.Text;int ef = zong1.Length - ab.Length + 1;int i1 = 0;for (i = 0; i < ef; i++){int j = 0;if (zong1[i] == ab[0]){for (j = i; j < ab.Length + i; j++){if (zong1[j] == ab[j - i] && j == (i + ab.Length - 1)){i1 = i;i = ef;break;}}}}//查删除内容的索引//类似替换,只是替文为空string c = zong1.Substring(0, i1);StringBuilder sb1 = new StringBuilder("", 100);sb1.Append(c);sb1.Append(zong1.Substring(i1 + ab.Length, zong1.Length - i1 - ab.Length)); zong1 = sb1.ToString();zong = zong1.ToCharArray();}private void bcp_Click(object sender, EventArgs e){int i = zong1.Length / danchang;int yushu=zong1.Length %danchang;if(yushu!=0)i++;string []b=new string [i];for (int j = 0; j < i - 1; j++){b[j]=zong1.Substring(j*danchang,danchang);}b[i-1]= zong1.Substring(zong1.Length-yushu, yushu);string fullPath = "C:\\123\\111.txt";File.Delete(fullPath);FileStream fs= File.Create(fullPath);fs.Close();if (File.Exists(fullPath)){using (StreamWriter sw = new StreamWriter(fullPath, true,Encoding.Default)){for(int j=0;j<i;j++)sw.WriteLine(b[j]);}}cp.Text = zong1;}private void byd_Click(object sender, EventArgs e){int i = zong1.Length / danchang;//求满行数int yushu = zong1.Length % danchang;//非满行的字符数if (yushu != 0)//确定总行数i++;string[] b = new string[i];for (int j = 0; j < i - 1; j++){b[j] = zong1.Substring(j * danchang, danchang);}b[i - 1] = zong1.Substring(zong1.Length - yushu, yushu);//以行为单位存入字符串数组int i1 = int.Parse(ydh.Text);//读入要移动的行int i2 = int.Parse(hd.Text);//读入移动的目的地string c = b[i1 - 1];//取出要移动的行if (i1 < i2)//如果后移,则将移动行与目的地间的行串前移(包括目的地的行串)ê?for (int i3 = i1; i3 < i2; i3++)b[i3 - 1] = b[i3];if (i1 > i2)//如果前移,则将移动行与目的Ì地间的Ì行串后移(包括目的地的行串)for (int i4 = i1 - 2; i4 > i2-2; i4--)b[i4 + 1] = b[i4];b[i2 - 1] = c;//在目的地存入要移动的行StringBuilder sb = new StringBuilder(b[0], 100);//b的所有元素并入sbfor (int cs = 1; cs < i; cs++)sb.Append(b[cs]);zong1 = sb.ToString();//存入zong1zong = zong1.ToCharArray();//存入zong}private void bqzhs_Click(object sender, EventArgs e){int i = zong1.Length / danchang;//求满行数int yushu = zong1.Length % danchang;//非满行D的字符数if (yushu != 0)//确定总行数i++;zhs.Text = i.ToString();//输出行数}private void ydh_TextChanged(object sender, EventArgs e){}private void Form1_Load(object sender, EventArgs e){}}sing System;}四、调试分析从本实习题的编制过程中容易看出,一个复杂的程序不是一蹴而就的,它需要无数次的调试,或者是语言的不规范,或者是考虑的情况部全面。

数据结构课程设计报告-文本编辑器参考模板

数据结构课程设计报告-文本编辑器参考模板

《数据结构》课程设计报告题目:基于顺序结构的文本编辑器的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩: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.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行。

要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

(4)插入某一字符或者子串。

(5)查找某一字符或者子串。

存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。

通过题目及其要求可知,本程序应实现以下功能:(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;2.问题分析本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。

对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。

数据结构简易文本编辑器

数据结构简易文本编辑器

数据结构简易文本编辑器Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】题目:【2】.简易文本编辑器要求:1) 具有图形菜单界面;2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3) 可正确存盘、取盘;4) 正确显示总行数。

1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。

2概要设计为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。

顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。

其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。

在编辑器的主界面中应有如下提示信息:⑴清空以前的文本信息:将用数组存的数据内容全部置为0;⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;⑻退出编辑器:显示感谢使用该软件并退出。

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

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

摘要当下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数据结构设计为实现数据的有序存储,该编辑器应该用顺序存储结构来存储输入的信息。

数据结构-课程设计-简单行编辑程序

数据结构-课程设计-简单行编辑程序
将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
(4)活区显示。格式:p<回车>
逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后各页(如果存在)。印出的每一行要前置以行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。
六、关键源程序清单和执行结果
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
const int activeMaxLen=50; //活区最大行数
const int pageRowNum=10; //每页的行数
using namespace std;
学号
数据结构课程设计
设计说明书
简单行编辑程序
起止日期:2011年12月12日至2011年12月16日
学生姓名
班级
成绩
指导教师(签字)
电子与信息工程系
2011年12月16日
天津城市建设学院
课程设计任务书
2011—2012学年第1学期
电子与信息工程系软件工程专业班级
课程设计名称:数据结构课程设计
设计题目:简单行编辑程序
完成期限:自2011年12月12日至2011年12月16日共1周
设计依据、要求及主要内容(可另加附页):
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求

文本编辑器课程设计

文本编辑器课程设计

文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。

2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。

3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。

技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。

2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。

3. 学生通过实践操作,培养解决问题的能力和团队协作能力。

情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。

2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。

3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。

课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。

学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。

通过具体的学习成果分解,为后续教学设计和评估提供依据。

二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。

教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。

教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。

教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。

教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。

教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。

教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。

数据结构-课程设计-简单行编辑程序

数据结构-课程设计-简单行编辑程序
3)测试数据
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如首行、尾行。
4)实现提示
(1) 设活区的大小用行数activemaxlen(可设为100)来描述。考虑到文本文件行长通常为正态分布,且峰值在60到70之间,用320×activemaxlen大小的字符数组实现存储将造成大量浪费。可以以标准行块为单位为各行分配存储,每个标准行块含81个字符。这些行块可以组成一个数组,也可以利用动态链表连接起来。一行文字可能占多个行块。行尾可用一个特殊的ASCII字符(如(012)8)标识。此外,还应记住活区起始行号。行插入将引起随后各行行号的顺序下推。
(2) 初始化过程包括:请用户提供输入文件名(空串表示无输入文件)和输出文件名,两者不能相同。然后尽可能多地从输入文件中读入各行,但不超过activemaxlen-x。x的值可以自定。
(3) 在执行行插入命令的过程中,每接收到一行时到要检查活区大小是否已达activemaxlen。如果是,则为了在插入这一行之后仍保持活区大小不超过activemaxlen,应将插入点之前的活区部分中第一行输出到输出文件中;若插入点为第一行之前,则只得将新覆盖后一个。然后将要插入的内容写入插入处即可。
行与行之间交换,这个比较容易实现。只需将要交换的两行的内容交换即可。
三、总体设计
程序的功能图:
程序流程图


四、详细设计
struct Row行的结构体,包含行的内容,行的编号;
class Active活区的类,包含活区内行的总数量、行的结构体;
2)基本要求
实现以下4条基本编辑命令:
(1) 行插入。格式:i<行号><回车><文本><回车>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计班级: 10计本2班姓名:邓寅森学号: 2010305202指导教师:杨老师完成日期: 2011年12月计算机科学与技术系课程设计评分表课程名称: 数据结构 简易文本编辑器教师签名:日期:一、需求分析1.1 问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。

计算机信息管理为人们的生活、工作提供了方便,提高了效率。

“简易文本编辑器”是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。

1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)查询文本中满足要求的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5) 查看所有的文本信息。

二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。

系统进入菜单运行界面如图所示:简易文本编辑器主菜单2.2 数据结构设计系统采用线性表的顺序存储结构表示和存储“简易文本编辑器”中的信息。

实现文本的输入,删除,插入,查找,显示功能。

2.3 系统功能设计运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。

每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。

三、模块设计3.1 模块设计系统主要包含主程序模块和其它操作模块。

其调用关系如图所示。

模块调用示意图3.2 系统子模块及其功能设计本系统共设计了16个子模块,各程序的函数名及功能说明如下:1、/*由模式串nextval值*/void GetNextval(SqVString T,int nextval[])2、/*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next[],SqVString T)3、/*初始化串*/void InitString(SqVString *S,char *str)4、/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)5、/*串删除*/int StrDelete(SqVString *S,int pos,int len)6、/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)7、/*串连接*/int Concat(SqVString *S,SqVString T)8、/*串赋值*/int StrAssign(SqVString *S,char *value)9、void InputString() //新建10、void DeleteString()//删除11、void DeleteSubstring()//删除12、void InsertSubstring()//查找13、void DisplayString()//显示14、void cd()//进入界面15、void ts()//主菜单16、void tc()//退出3.3 系统模块之间的调用关系系统的16个子模块之间的主要调用关系所示:系统函数调用关系图四、详细设计4.1 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。

4.2 系统主要模块设计(1)建立文本模块,由void InitString(SqVString *S,char *str)函数实现。

该模块的算法思想是:○1按照给定的线性表存储空间的初始化分配量分配存储空间,若分配成功,则往下进行;○2令线性表长为0;○3令线性表当前存储容量为给定的线性表存储空间的初始化分配量。

该模块的算法描述如下:见源程序(2)查看文本中得所有记录,需要一个模式匹配intKMPIndex(SqVString S,int pos,int next[],SqVString T)函数实现。

该模块的算法思想是:在此略该模块的算法描述如下:见源程序(其它模块设计略)五、调试分析5.1、调试方法:首先打开Microsoft Visual C++ 6.0 ,运行程序,出现错误修改再运行,直至运行结果0 error ,0 warning结束。

接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。

5.2、调试结果主菜单新建显示删除查找插入退出5.3、程序出现的问题:还有几个程序模块未能成功调用。

(其他问题见“第八项中未能解决的问题”)六、用户使用说明当用户打开程序,就会提示按【回车键】进入,按【回车键】则进入主菜单页面,进入主菜单,选择【1键】,新建文本信息,编辑好后,按照程序中的文字提示,返回到主菜单,此时在主菜单选择其他操作,当进入各项操作,均有提示。

每一操作完成,按【回车键】返回主菜单,选择【0键】,安全退出程序!七、参考文献《数据结构理论与实践》——杨永斌八、对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明。

拿到该课程题目,准备仿照电脑上的文本编辑器写该程序,由于我所学不是扎实,于是就借助课本上所学的串与数组,写好了这个程序,程序能够正确的完成,程序充分包含了本学期的所学内容,体现了数据结构的特点。

继续沿用了清屏函数,是屏幕看起来很舒服,不至于那么杂乱。

未解决的问题:○1在完成插入,查找功能的时候,出现了问题,当程序执行到此处时,程序未能进入下一步,而是直接退出了。

○2当进入主菜单后,只能选择【1键】或者退出,这是未能得到优化的。

○3块移动(行块,列块移动),正确存盘、取盘;正确显示总行数等功能未能完成。

九、程序源代码:#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define STRSIZE 100#define MAXSTRING 60#define MAXLINE 24/*存储结构*/typedef struct{char*ch;int length;}SqVString;/*由模式串nextval值*/void GetNextval(SqVString T,int nextval[]){int j=0,k=-1;nextval[0]=-1;while(j<T.length){if(k==-1||T.ch[j]==T.ch[k]){j++;k++;if(T.ch[j]==T.ch[k])nextval[j]=nextval[k];elsenextval[j]=k;}elsek=nextval[k];}}/*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next[],SqVString T) {int i=pos,j=0,r;while(i<S.length && j<T.length){if(i<S.ch[i]==T.ch[j]){++i;++j;}else if(j==0)++i;elsej=next[j];}if(j>=T.length)r=i-T.length;elser=-1;return r;}/*初始化串*/void InitString(SqVString *S,char *str){int i;char *c;int len=0;c=str;while(*c!='\n'){len++;c++;}/*求str的长度*/S->ch=(char *)malloc(len *sizeof(char));/*申请动态数组空间*/ S->length=len;/*置串的当前长度*/for(i=0;i<S->length;i++)S->ch[i]=str[i];/*赋值串值*/}/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T){int i;int len;if(pos<0 || pos>S->length){cout<<" \t\t插入位置不合法,其取值范围应该是[0,length]";return 0;}len=S->length+T.length;S->ch=(char *)realloc(S->ch,len *sizeof(char));if(!S->ch){cout<<" \t\t分配空间出错,无法完成串插入操作";return 0;}for(i=S->length-1;i>=pos;i--)S->ch[i=T.length]=S->ch[i];for(i=0;i<T.length;i++)S->ch[i+pos]=T.ch[i];S->length=len;return 1;}/*串删除*/int StrDelete(SqVString *S,int pos,int len){int i;int length;char *str;if(pos<0 || len<=0 || pos>S->length ||S->length<=0){cout<<" \t\t删除位置pos及删除长度len不合法,无法完成删除操作";return 0;}length=S->length-len;if(length<=0)length=pos;/*若pos+len大于串长,则从pos删到串尾*/str=(char *)malloc(length*sizeof(char));if(!str){cout<<" \t\t分配空间出错,无法完成串的删除操作";return 0;}for(i=0;i<pos;i++)str[i]=S->ch[i];for(i=pos+len;i<S->length;i++)str[i-len]=S->ch[i];free(S->ch);S->length=length;S->ch=str;return 1;}/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T){int i;if(S.length<=0){cout<<" \t\t空串,无法完成求子串操作";return 0;}if(pos<0 || pos>S.length || len<=0){cout<<" \t\t子串位置pos及子串长度len不合法,无法完成求子串操作";return 0;}if(pos+len>S.length)len=S.length-pos+1;/*当子串长度超过主串长度,则只取到串尾即可*/ if(T->length)free(T->ch);/*释放S的原有空间*/T->ch=(char *)malloc(len *sizeof(char));if(!T->ch)cout<<" \t\t分配空间出错,无法完成求子串操作";return 0;}for(i=0;i<len;i++)T->ch[i]=S.ch[i+pos];T->length=len;return 1;}/*串连接*/int Concat(SqVString *S,SqVString T){int i;int len;len=S->length+T.length;S->ch=(char *)realloc(S->ch,len *sizeof(char));if(!S->ch){cout<<" \t\t分配空间出错,无法完成串连接操作";return 0;}for(i=0;i<T.length;i++)S->ch[i+S->length]=T.ch[i];S->length=len;return 1;}/*串赋值*/int StrAssign(SqVString *S,char *value){int count=0;int i;char *c;//S=(SqVString *)malloc(sizeof(SqVString));if(S->length!=0)free(S->ch);/*释放S的原有空间*/c=value;while(*c!='\n'){count++;c++;}/*求value的长度*/if(!count)/*value为空串*/S->ch=NULL;S->length=0;}else{S->ch=(char *)malloc(count);if(!S->ch){cout<<"\t\t分配空间出错,无法完成串赋值操作";return 0;}for(i=0;i<count;i++)S->ch[i]=value[i];S->length=count;}return 1;}SqVString *lines[MAXLINE];void InputString(){char buffer[MAXSTRING];SqVString *tmp;int LineNum=0;flushall();cout<<"\t\t================================================"<<endl;cout<<"\t\t 新建文本 "<<endl;cout<<"\t\t================================================"<<endl;cout<<"\t\t[请输入文本,每以回车结束,一段以#结束行]"<<endl;do{cin>>buffer;tmp=(SqVString *)malloc(sizeof(SqVString));InitString(tmp,buffer);lines[LineNum]=tmp;LineNum++;}while(buffer[0]!='#');// cout<<" \t\tOK...";}void DeleteString(){int i;cout<<"\t\t================================================"<<endl;cout<<"\t\t 删除文本 "<<endl;cout<<"\t\t================================================"<<endl;cout<<" \t\t请输入要删除行的行号:";cin>>i;free(lines[i-1]);while(lines[i]->ch[0]!='#'){lines[i-1]=lines[i];i++;}lines[i-1]=lines[i];cout<<" \t\tOK..."<<endl;}void InsertSubstring(){int i=0;int pos=0;char buffer[MAXSTRING];SqVString tmp;cout<<"\t\t================================================"<<endl;cout<<"\t\t 插入子串 "<<endl;cout<<"\t\t================================================"<<endl;cout<<" \t\t请输入子串所在的行号:";cin>>i;cout<<" \t\t请输入插入位置:";cin>>pos;cout<<" \t\t请输入子串值:";cin>>buffer;InitString(&tmp,buffer);StrInsert(lines[i],pos,tmp);cout<<" \t\tOK..."<<endl;}void DeleteSubstring(){int i=0;int pos=0;int len=0;cout<<"\t\t================================================"<<endl;cout<<"\t\t 删除子串 "<<endl;cout<<"\t\t================================================"<<endl;cout<<" \t\t请输入子串所在的行号:";cin>>i;cout<<"\n\t\t请输入删除的起始位置:";cin>>pos;cout<<" \t\t请输入删除的字符数:";cin>>len;StrDelete(lines[i],pos,len);cout<<"\t\t OK..."<<endl;}void FindSubstring(){int i=0;int pos=0;char buffer[MAXSTRING];int next[MAXSTRING];SqVString tmp;cout<<"\t\t================================================"<<endl;cout<<"\t\t 查找文本 "<<endl;cout<<"\t\t================================================"<<endl;cout<<" \t\t请输入要查找的子串:";cin>>buffer;InitString(&tmp,buffer);GetNextval(tmp,next);while(lines[i]->ch[0]!='#'){if((pos=KMPIndex(* lines[i],0,next,tmp))!=-1){cout<<" \t\t[子串"<<buffer<<" 在第"<<i+1<<" 行的"<<pos<<"位置上出现]"<<endl;return;}i++;}cout<<" \t\tOK..."<<endl;}void DisplayString(){int i=0;cout<<"\t\t================================================"<<endl;cout<<"\t\t 显示文本 "<<endl;cout<<"\t\t================================================"<<endl;while(lines[i]->ch[0]!='#'){cout<<lines[i]->ch<<endl;i++;}cout<<" \t\tOK..."<<endl;}void cd()//进入界面{cout<<endl<<endl;cout<<"\t\t"<<"____________________________________________"<<endl;cout<<"\t\t"<<"--------------------------------------------"<<endl;cout<<"\t\t"<<"♀欢·迎·使·用♀"<<endl;cout<<"\t\t"<<"♂————————————————————♂"<<endl;cout<<"\t\t"<<"→简易文本编辑器←"<<endl;cout<<"\t\t"<<"······················"<<endl;cout<<"\t\t"<<"--------------------------------------------"<<endl;cout<<"\t\t"<<"↓重庆工商大学派斯学院↓"<<endl;cout<<"\t\t"<<"↑计算机科学系↑"<<endl;cout<<"\t\t"<<"♀制作人: 10计本2班邓寅森♀"<<endl;cout<<"\t\t"<<"∶ 2011年11月∶"<<endl;cout<<"\t\t"<<"♂————————————————————♂"<<endl;cout<<"\t\t"<<"____________________________________________"<<endl;cout<<"\t\t"<<"→→→点击【回车】进入←←←"<<endl;cout<<"\t\t"<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;cout<<"\t\t";}void ts(){cout<<endl;cout<<"\t\t--------------------------------"<<endl;cout<<"\t\t 主菜单 "<<endl;cout<<"\t\t--------------------------------"<<endl;cout<<"\t\t 1、输入文本"<<endl;cout<<"\t\t 2、删除一行"<<endl;cout<<"\t\t 3、插入子串"<<endl;cout<<"\t\t 4、删除子串"<<endl;cout<<"\t\t 5、查找子串"<<endl;cout<<"\t\t 6、显示文本"<<endl;cout<<"\t\t 0、退出"<<endl;cout<<"\t\t--------------------------------"<<endl;cout<<"\t\t 注:进入本程序·请首先选择 1 "<<endl;cout<<"\t\t--------------------------------"<<endl;cout<<" \t\t请输入您的选择:";}void tc(){cout<<endl;cout<<"\t\t======================================="<<endl;cout<<"\t\t 安全退出·谢谢使用 "<<endl;cout<<"\t\t======================================="<<endl; }void main(){int choice;cd();getchar();system("cls");do{ts();cin>>choice;if(choice<0||choice>6)continue;switch(choice){case 1:system("cls"); InputString();break;case 2:system("cls");DeleteString();break;case 3:system("cls");InsertSubstring();break;case 4:system("cls");DeleteSubstring();break;case 5:system("cls");FindSubstring();break;case 6:system("cls");DisplayString();break;case 0:tc();exit(0);}getchar();system("cls");}while(1);}。

相关文档
最新文档