ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:147.51KB ,
资源ID:11469086      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11469086.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计小型文本编辑器的设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计小型文本编辑器的设计.docx

1、数据结构课程设计小型文本编辑器的设计沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:小型文本编辑器的设计院(系):计算机学院专 业: 班 级:学 号:姓 名:指导教师:1 程序模块说明1.1 程序模块为了更方便地完成字符串的查找,此程序采用串的块链式存储结构存储方式。通过主模块调用四个小模块完成文本编辑的各种功能。用户可在主模块上循环对程序进行操作。1.2 模块功能说明1.主模块:用户可编辑任一文档,输入要在文本中查找的信息。初始化一个字符串,并用串的块链式存储结构存储。2. 编辑文本信息:将用户编辑的文本信息分行输出来,并输出字符串的长度和行数。3.查找模块

2、:遍历整个文本,查找字符串在串中的位置,并输出其所在位置,直到遍历完整个文本结束。4.替换模块:先查找你要替换的字符所在位置,然后根据用户选择是否替换该字符。5.退出模块:退出程序,等待用户下次重行运行该程序。2 程序流程图说明2.1 主函数流程图 图2.1.主程序流程图用户可根据此函数输入想要进行的操作来实现其相应的编辑文本信息、查找字符在文本中的所在位置、替换文本中的字符串及查看当前文本的字符数以及行数的信息等一系列功能。详见图2.1.2.2 显示模块流程图图2.2 显示模块流程图此模块主要实现用户所编辑的文本信息的行数和字符总个数,以及输出文本的字符信息。显示出用户所编辑的文本信息,并输

3、出到屏幕上,为满足用户需求,此模块可循环操作。详见流程图2.2。2.3 查找模块流程图 图2.3 查找流程图此模块主要是完成字符串的查找以及替换文本中的字符信息等功能。查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,比较下一个字符,否则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且在想后移一个字符,然后再从头开始和和所查找字符穿一一比较。查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止,详见流程图2.3。2.4 替换模块流程图. 图2.4. 替换流程图此模块主要是完成字符串的查找以及替换文本中的字符信息等功能

4、。查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,比较下一个字符,否则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且在想后移一个字符,然后再从头开始和和所查找字符穿一一比较。查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止。替换功能是在查找的基础上进行的,即也就是先查找到要替换的词的位置,然后根据用户选择在此位置是否替换,同样也是一直循环到读完整个文本信息为止。详见流程图2。4。2.5 将文本初始化 图2.5 初始化文本信息将文本信息初始化到用块链式存储的串中3 函数的描述3.1 串的初始化初始化一个空串,然

5、后将输入的文本信息存储到此串中,因为这是采用的块链式存储,用户可以自定义行的大小即一个节点存储的字符串个数,所申请的总的节点数也就是字符的行数。3.2 查找函数查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,用for循环比较下一个字符,不同则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且再向后移一个字符,然后再从头开始和和所查找字符穿一一比较。查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止。3.3 替换函数替换功能是在查找的基础上进行的,即也就是先查找到要替换的词的位置,然后根据用户选择在此位置是否替换,若

6、需替换,则进入for循环完成替换,然后再通过比较查找到下一个需替换的位置,同样也是一直循环到读完整个文本信息为止。3.4 串的块链存储采用串的块链式存储的优点是用户可根据自已的实际需要来定义每个节点的大小,这样可减少空间浪费,除此之外,链式存储还方便查找。4 程序测试和运行的结果为方便查阅,所以选一串比较短的字符串为例,以英文字符“ABCDEFGHIJKLMN”为例,来实现下面的所有功能4.1 初始化一个串,如“ABCDEFGHIJKLMN”程序开始运行界面如图 截图4.1.1 初始化一字符串 ,结果如下图,分行输出文本的字符信息以及文本长度和行数。 截图4.1.2 初始化一字符串4.2 查找

7、与替换字符串,用户可自定义查找和替换字符,选择查找和替换选项(即第二个选项),;如下图 截图,以回车结束。如图,输入你要查找的字符,如“L”; 截图,如“S”;详见图 截图,输出该位置并弹出指令用户是否需要替换此位置的词。如图 截图,如输入Y;则替换掉该位置的词并接着查找下一个所查找字符的所在位置或查找结束,如图 截图,输入“N”程序将跳过该位置替换直接进入下一轮查找。如图 截图4.2.6 不替换字符串回到主程序,查找下一个字符,或继续进行下一轮操作。参考文献1 高富平,张楚 . 电子商务法M. 北京:北京大学出版社,20022谭浩强著. C程序设计( 第三版). 北京: 清华大学出版社,20

8、053数据结构: C语言版 /严蔚敏,吴伟明编著.北京:清华大学出版社,2007附 录(关键部分程序清单)查找和替换函数void chazhao(LString *T,char *chars,char *chars1)/所查找字符和替换后的字符 Chunk *p,*q; int m=0,c=0,a=1,b=0,d=0,a1=0,c1=0,c2=0,x=0; char u; p=q=T-head; while(1) if(c=CHUNKSIZE) q=q-next; a+; c=0; for(x=0;q-chc=charsm;x+) m+;c+; if(x=0) b=a;d=c-1; if(c=

9、CHUNKSIZE) q=q-next;c=0; if(charsm=0)/字符查完 printf(所查字符所在行位置是%d,第%d个位置开始n,b,d+1); printf(若需替换该字符,输入Y,否则输入Nn); scanf(%c,&u); fflush(stdin); if(u!=N) p=T-head; a=b;c=d; for(a1=1;a1next; q=p; for(;c1next; c=0; q-chc=chars1c2; c2+;c+; c2=0;c1=0; StrPrint(*T); /替换完毕 c=d;a=b; if(!*(q-ch+c+1+m)/串查完/ printf(

10、查找完成,已无匹配字符n); break; else p=T-head; for(a1=1;a1next;q=p; c=c+1;m=0; 生成一个其值等于chars的串T,成功返回1,否则返回0 int StrAssign(LString *T,char *chars) int i,j,k,l,m=0; Chunk *p,*q; i=strlen(chars); / i为串的长度 if(!i) return 0; (*T).curlen=i; j=i/CHUNKSIZE; / j为块链的结点数,块的个数 ,即行数 if(i%CHUNKSIZE0) /不足一个块的,当成一个块即块数加1 j+;

11、printf(长度是%dn行数是%dn,i,j); for(k=0;knext=p; q=p; for(l=0;lchl=charsm;m+; if(!*chars) (*T).tail=q; q-next=NULL; for(;lch+l)=blank; return 1;输出字符串Tvoid StrPrint(LString T) int i=0,j; Chunk *h; h=T.head; while(iT.curlen) for(j=0;jch+j)!=blank) / 不是填补空余的字符 printf(%c,*(h-ch+j); i+; printf(n); h=h-next; pr

12、intf(n);课程设计总结:指导教师评语:指导教师(签字): 年 月 日课程设计成绩源代码#include #include #include #include #include #define CHUNKSIZE 4 #define n 26char blank = #; / 全局变量,用于填补空余 typedef struct Chunk char chCHUNKSIZE; struct Chunk *next; Chunk;typedef struct Chunk *head,*tail; int curlen; LString;void InitString(LString *T)/

13、 初始化(产生空串)字符串T。 (*T).curlen=0; (*T).head=NULL; (*T).tail=NULL;int StrAssign(LString *T,char *chars)/ 生成一个其值等于chars的串T, 成功返回1,否则返回0 int i,j,k,l; Chunk *p,*q; i=strlen(chars); / i为串的长度 if(!i|strchr(chars,blank) / 串长为0或chars中包含填补空余的字符 return 0; (*T).curlen=i; j=i/CHUNKSIZE; / j为块链的结点数,块的个数 if(i%CHUNKSI

14、ZE) /不足一个块的,当成一个块即块数加1 j+; printf(长度是%dn行数是%dn,i,j); for(k=0;knext=p; q=p; for(l=0;lch+l)=*chars+; if(!*chars) / 最后一个链块 (*T).tail=q; q-next=NULL; for(;lch+l)=blank; return 1;int StrEmpty(LString S) if(S.curlen) return 0; else return 1;void StrPrint(LString T)/ 输出字符串T int i=0,j; Chunk *h; h=T.head; w

15、hile(iT.curlen) for(j=0;jch+j)!=blank) / 不是填补空余的字符 printf(%c,*(h-ch+j); i+; printf(n); h=h-next; printf(n);void chazhao(LString *T,char *chars,char *chars1)/查找和替换函数/ Chunk *p,*q; int m=0,c=0,a=1,b=0,d=0,a1=0,c1=0,c2=0,x=0; char u; p=q=T-head; while(1) if(c=CHUNKSIZE) q=q-next; a+; c=0; for(x=0;q-chc

16、=charsm;x+) m+;c+; if(x=0) b=a;d=c-1; if(c=CHUNKSIZE) q=q-next;c=0; if(charsm=0)/字符查完 printf(所查字符所在行位置是%d,第%d个位置开始n,b,d+1); printf(若需替换该字符,输入Y,否则输入Nn); scanf(%c,&u); fflush(stdin); if(u!=N) p=T-head; a=b;c=d; for(a1=1;a1next; q=p; for(;c1next; c=0; q-chc=chars1c2; c2+;c+; c2=0;c1=0; StrPrint(*T); /替

17、换完毕 c=d;a=b; if(!*(q-ch+c+1+m)/串查完/ printf(查找完成,已无匹配字符n); break; else p=T-head; for(a1=1;a1next;q=p; c=c+1;m=0; void main() char s1n,s2n,s3n;/char *s3=22,*s2=aa; LString t1; int k,meum=0,L,h; printf(t=说明:首先连续输入几个字符初始化串,以回车结束.= =n); printf(t=1:查看串的信息=nn); printf(t=2:查找与替换=nn); printf(t=3:退 出=nn); pri

18、ntf(请输入文本信息!n); scanf(%s,&s1);fflush(stdin); L=strlen(s1); h=L/CHUNKSIZE;h+; InitString(&t1);printf(初始化串t1后, n); k=StrAssign(&t1,s1); StrEmpty(t1); if(k=1) printf(串t1为:n ); StrPrint(t1); else printf(出错n); / 不能生成空串 while(1) printf(t请输入命令!(参照说明)n); scanf(%d,&meum);fflush(stdin); switch(meum) case 1: p

19、rintf(初始化串t1后, n); StrEmpty(t1); k=StrAssign(&t1,s1); if(k=1) printf(串t1为:n ); StrPrint(t1); else printf(出错n); / 不能生成空串 break; case 2: printf(请输入查找的字符!n); scanf(%s,&s2); fflush(stdin); printf(请输入替换后的字符!n); scanf(%s,&s3); fflush(stdin); chazhao(&t1,s2,s3); break; case 3:exit(0);break; default: printf(输入错误!请重新输入!n); break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1