1、 数数 据据 结结 构构 课课 程程 设设 计计 说说 明明 书书 学生姓名学生姓名: 学学 号:号: 学学 院院: 软件学院软件学院 专专 业业: 软件工程软件工程 题题 目目: 简易文本编辑器简易文本编辑器 成成绩绩 指 导 教指 导 教 师师 2011 年 12 月 20 日 1 1 1设计目的设计目的 简易文本编辑器 2 2设计内容和要求设计内容和要求 1) 具有图形菜单界面; 2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动 (行块,列块移动),删除 3) 可正确存盘、取盘; 4) 正确显示总行数。 3 3本设计所采用的数据结构本设计所采用的数据结构 本程序是对输
2、入的文字进行操作,故使用的数据结构为单链表操作 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。 它包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置 的域称为指针域。 另有全局变量*head,作为文章的头指针。 在文章内容创建部分中使用线性表的链式存储,并使用全局变量对文本的各 种信息进行存储; 文章的内容统计、删除、查找、插入都采用链表操作完成。 4 4功能模块详细设计功能模块详细设计 4.1 4.1 详细设计详细设计思想思想 本程序所定义函数的设计思想: CreatWord()文本内容输入函数)文本内容输入函数 定义 LinkList 指针变量*t
3、emp: LinkList *temp; 定义文本输入变量 ch,记录文本行数变量 j,记录每行字符数变量 i; 申请动态存储空间:head-next=(LinkList *)malloc(sizeof(LinkList); 首行头指针的前驱指针为空:head-pre=NULL; 利用循环进行文本输入 PrintWord()当前文本输出函数()当前文本输出函数 定义文本行数变量 j,每行字符数 i:int i,j; 2 定义指针变量:LinkList *p; 将指针 p 指向链表表头: p=head-next; 利用循环输出链表中信息: for(j=0;jdatai); p=p-next; S
4、earchWord( ) 文本内容查找函数文本内容查找函数 定义一个数组,用来记录需要查找的字符内容:char Data20; 定义定义文本行数变量 j,每行字符数 i,记录字符出现的次数变量: 利用循环进行查找操作,核心算法为: if(temp-datai)=Datak) k+;/将输入的查找字符与链表中信息比较,找到第一个相同的字 符 else if(Datak!=0) i=i-k; k=0; / /从主串第 i-k 个位置重新查找 if(Datak=0) sum+;/此字符出现的次数加 1 i=i-k+1; /i记录下该字符串出现的位置 printf(“tt 第%d 次出现在第%d 行第%d 列n“,l,j+1,i); l+; k=0; continue; temp=temp-next; /指向下一行 DeleteWord( ) 文本内容删除函数文本内容删除函数 定义一个数组用来存储需要删除的字符或者字符串:char Data20; 定义指针变量:Li