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

上传人:206****923 文档编号:43731398 上传时间:2018-06-07 格式:DOCX 页数:34 大小:221.72KB
返回 下载 相关 举报
数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)_第1页
第1页 / 共34页
数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)_第2页
第2页 / 共34页
数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)_第3页
第3页 / 共34页
数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)_第4页
第4页 / 共34页
数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)》由会员分享,可在线阅读,更多相关《数据结构课程设计:中文文本编辑(文本删除、修改、查询、统计、添加)(34页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计:文本编辑(最后附完数据结构课程设计:文本编辑(最后附完 整代码)整代码)一一. .问题描述问题描述-1-1二二. .设计思路设计思路-1-1三三. .系统实现功能系统实现功能1.1.建立单链表建立单链表-2-22.2.显示文章内容显示文章内容- 3 33.3.查找文章语句查找文章语句-3-34.4.删除文章语句删除文章语句-5-55.5.替换文章语句替换文章语句-7-76.6.统计文章字数统计文章字数-10-107.7.写入文本结束程序写入文本结束程序-10-10四四. .系统不足及需改进分系统不足及需改进分-11-11五五. .文件清单说明文件清单说明-11-11六:附录六

2、:附录-12-12一:问题描述一:问题描述本次我所做的课程设计为:文本编辑,主要内容是对中文文本的显示、查找、删除、替换、统计、写入文本。在程序选择功能后根据提示,输入任意长度中文语句即可对文章进行操作。二:设计思路二:设计思路文本编辑,顾名思义就是对一遍文章进行编辑,我所设计的是对中文的编辑。中文有两个字节(汉字、标点) ,通常情况下通过文件输入流仅仅可以取一个字节或者是以空格为分隔符取单词这仅仅对英文的文章适用,周六周日我从网上搜索相关方法,未找到一条切实可用的对中文字符操作的方法。后因看到一种对 string 的操作灵光一闪,想到了对中文的操作。因中文是两个字节,由两部分 ASCII 码

3、组成,所以可用单链表一个节点存放一个汉字或字符,单链表的数据域是一个长度为二的 char 数组分别存汉字的两个字节。若用户从键盘输入则将其存入 string 然后遍历将其每一个字节取到 char 数组中,这样只需两个字节对比一次使 char 数组中相邻的两个字节与单链表中每一个节点的两个 char 对比即可遍历。我所用的数据结构为单链表,结构中由一个长度为 2 的 char 数组和一个指针组成具体结构如下:typedef struct LNodeElemType data2;/长度为 2 的 char 数组,char0存汉字前半部分,char1存后半部分struct LNode *next;L

4、inkList;三:系统实现的功能三:系统实现的功能1.建立单链表void CLinkList(LinkList *r=L;r-next=NULL;char temp; /存放判断变量,同时起到中间变量的作用ifstream fin(“a.txt“);/打开文件输入流while(!fin.eof() s=(LinkList *)malloc(sizeof(LinkList);/一个节点存一个汉字或字符temp=fin.get(); /从文件取一个字符if(temp!= ) /判断是否为空格、回车,若为空格回车则只存一个字符剩下一个用1代替s-data0=temp;s-data1=fin.get

5、();else if(temp= )s-data0=temp;s-data1=1;elsefin.get();s-data0=n;s-data1=1;r-next=s;r=s;r-next=NULL;fin.close();2.显示文章内容void DisList(LinkList *L)LinkList *p=L-next;while(p!=NULL)/遍历单链表依次输出if(p-data0!= )/判断是否为空格决定输入方式coutdata0data1; else coutnext;3.查找文章语句seek(LinkList *LinkList *r;while(p!=NULL)r=p;/

6、p 指针位置不变,通过 r 指针向下遍历for(i=0;idata0=ai /标识是否找到相应字符的变量r=r-next;elseflag=0; /只要又一次不相同则为 0break; if(p-data0!= )/不统计空格的个数n+;p=p-next;if(flag=1)return n;if(flag=1)return n;else return 0;void seekCall(LinkList *L)coutstr;int n=0,n2=0,m;m=str.size();char *a=new charm;/str 长度为 char 数组长度for(int i=0;inext;whil

7、e(p!=NULL)n2=seek(p,a,m);/遍历找到每个语句n+=n2;if(n0r=r-next;elseflag=0; break; n+;p=p-next;if(flag=1)return n;if(flag=1)return n;else return 0;void Ldelete2(LinkList *for(int i=0;inext;LinkList *r=p;for(int i=0;inext;p-next=r-next; /删除对应语句void LdeleteCall(LinkList *int n=0,n2=0,m;m=str.size();char *a=new

8、charm;for(int i=0;inext;/从单链表头部依次遍历,删除所有语句n2=seek2(pp,a,m);n+=n2;if(n05.替换文章语句StrToList(LinkList *L2-next=NULL;int m=0;m=str.size();char *a=new charm;for(int i=0;idata0=ai;s-data1=ai+1;r-next=s;r=s;r-next=NULL;void Lreplace(LinkList *for(int i=0;inext;LinkList *r;r=p;for(int i=0;inext;LinkList *p2=L

9、2;while(p2-next!=NULL)/p2 指向 L2 尾部p2=p2-next;p-next=L2-next;/p 指向 L2p2-next=r-next;/p2 指向 r 的下一个节点free(L2);void LreplaceCall(LinkList *coutstr1;coutstr2;LinkList *L2;int m=0;m=str1.size();char *a=new charm;for(int i=0;inext;int n=0,n2=0;while(p!=NULL)/遍历 L 替换所有语句n2=seek2(p,a,m);n+=n2;if(n0/替换一次就建立一次

10、 L2,防止形成循环表Lreplace(L,L2,n,m);n2=0;6:统计文章字数int number(LinkList *L)LinkList *p;p=L;int n=0;while(p-next!=NULL)/循环遍历统计除了空格和回车的字数if(p-data0!= p=p-next;return n;7:写入文本结束程序void end(LinkList *L)ofstream fout(“b.txt“);/文件 b,txt 不是读取时的文件是一个,为了对照而写入的新文本LinkList *p=L-next;while(p!=NULL)if(p-data0!= else if(p-

11、data0= )foutdata0;else if(p-data0=n)foutdata0;p=p-next;四:系统不足及需改进部分四:系统不足及需改进部分仅仅用单链表遍历系统效率较低,未找到一种可以用 string 直接读取文本中中文内容的方法,不能用于英文。 五:文件清单说明五:文件清单说明六:附录六:附录这是删除的第二个方法bool Ldelete1(LinkList *LinkList *q;LinkList *r;while(p!=NULL)r=p-next;if(r-data0=u0p-next=q-next;free(q);return true;p=p-next;return false;完整代码:完整代码:#include #include #include using namespace std;typedef char ElemType;typedef struct LNodeElemType data2;/长度为 2 的 char 数组,char0存汉字前半部分,char1存后半部分struct LNode *next;LinkList;void InitList(LinkList *void C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号