简易文本编辑器课程设计报告.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简易文本编辑器课程设计报告

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

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档