文本编辑和查找.doc

文本编辑和查找.doc

ID:58453214

大小:159.00 KB

页数:15页

时间:2020-05-14

文本编辑和查找.doc_第1页
文本编辑和查找.doc_第2页
文本编辑和查找.doc_第3页
文本编辑和查找.doc_第4页
文本编辑和查找.doc_第5页
资源描述:

《文本编辑和查找.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构与算法设计课程设计报告题目:文本编辑和串查找统计学生姓名:学号:班级:指导教师:2011年6月16日目录1.需求分析说明………………………………………………………………………….22.总体设计…………………………………………………………………………33.详细设计…………………………………………………………………………4-54.实现部分…………………………………………………………………………6-115.程序调试…………………………………………………………………………11-136.总结………………………………………………………

2、……………………131.需求分析说明1.1题目与要求文本编辑和串查找统计任务:输入一页文字,程序可以统计出文字、数字、空格和其它标点符号的个数。静态存储一页文章,每行最多不超过80个字符,共N行;功能要求:1)、分别统计出其中英文字母数、空格数、标点符号及整篇文章总字数;2)、统计某一字符串在文章中出现的次数,并输出该次数;3)、删除某一子串,并将后面的字符前移。要求用菜单选择操作,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(

3、2)分5行输出"全部字母数"、"数字个数"、"空格个数"、“标点符号个数”"文章总字数"(3)输出删除某一字符串后的文章;1.2本程序涉及的知识点链串的插入,删除,查找,模式匹配(knp算法)及文件的写入与写出,用switch,case语句进行菜单的选择,用while语句进行循环,用if语句进行条件的判断等等。2总体设计2.1基本思路本文采用链式存储字符串,链串的插入采用后插法,以‘#’为字符串结束的标志。在插入字符串的同时用文件存储字符串。删除算法的基本思路:输入要删除的字符串,同样以‘#’结束,然后在文中查找该字符串,若找到了

4、则把它删除,同时长度要减少;否则,没找到不能删除。查找算法与删除算法类似;但也有不同之处,不同在于:这里是要查找某字符串在文中出现的次数,因此,当找到该字符串后还要继续往后查找,并将次数加1;直到文章的末尾才结束查找。用菜单做选择,用switch,case语句进行选择判断,并用类的对象调用类的成员函数以实现特定的功能。由于采用链式存储字符串,它是按一个一个的字符进行存储的,当遇到空隔和换行符时它会忽略不计。为了解决这一问题,本文采用替换的方法——当要输入空格时就输入‘:’,当要输入换行符时就输入’\’,在输出时,遇到‘:’就输出

5、空格,遇到‘\’就输出换行符。2.2功能设计根据提示选择是否开始yn选择操作退出调用相应函数是否继续?3.详细设计Linklist类中有一个保护成员head(指针类型);公有成员中包含一个整型变量len,用于计算字符串的长度;另外还包含5个子函数,分别是1,voidrcreat()函数,用尾插法建立链串,并将字符串存入文件,遇到#时结束;2,voidprint(link*head)函数,用于输出链串,当遇到的字符为冒号(:)时输出空格,当遇到的字符为(\)时输出换行,当遇到的字符大于等于48并且小于等于57时,数字个数加1,当

6、遇到的字符为标点符号时,相应的标点符号数加1,并输出;判断完后指针后移。3,voiddeletel(link*head,link*head2)为删除字符串的函数,其中head是指向输入的文章的第一个字符,head2是指向要删除的字符串的第一个字符,采用模式匹配的算法进行查找,若在文中找到了一个字符与要删除的第一个字符相同,则指针分别往后移,若文中的下一个字符与第二个字符不相同,则继续找文中的下一个字符与要删除的字符从第一个字符开始从新匹配,直到要删除的字符都匹配完;找到了要删除的字符串在文中的位置后,将文中与这串字符匹配的第一个字

7、符开始到最后一个匹配的这段字符删除;若没有找到该字符串则不能删除。4,voidprint2(link*head2)函数,输出要删除的字符串,其中,head2指向要删除的字符串的第一个字符。5,void*found(link*head,link*head2)函数用于查找字符串在文中出现的次数;设置一个整型变量num,用于统计出现次数,其初始值为0。同样采用模式匹配的算法,但不同的是,找到第一次在文中出现的位置后num+1,并且还要继续找文中的下一个,找到了又要num+1,直到文章的末尾,然后输出num值。部分函数模块流程图:void

8、*found(link*head,link*head2)intnum=0;link*P,*Q,*R;P=head->next;Q=head2->next;R=P;While(P!=NULL)&&(Q!=NULL)if(P->data==Q->dat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。