数据结构课程设计小型文本编辑器的设计.docx
- 文档编号:11281087
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:24
- 大小:315.16KB
数据结构课程设计小型文本编辑器的设计.docx
《数据结构课程设计小型文本编辑器的设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计小型文本编辑器的设计.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构课程设计小型文本编辑器的设计
数据结构课程设计-小型文本编辑器的设计
沈阳航空航天大学
课程设计报告
课程设计名称:
数据结构课程设计
课程设计题目:
小型文本编辑器的设计
院(系):
计算机学院
专业:
班级:
学号:
姓名:
指导教师:
2程序流程图说明
2.1主函数流程图
图2.1.主程序流程图
用户可根据此函数输入想要进行的操作来实现其相应的编辑文本信息、查找字符在文本中的所在位置、替换文本中的字符串及查看当前文本的字符数以及行数的信息等一系列功能。
详见图2.1.
2.2显示模块流程图
图2.2显示模块流程图
此模块主要实现用户所编辑的文本信息的行数和字符总个数,以及输出文本的字符信息。
显示出用户所编辑的文本信息,并输出到屏幕上,为满足用户需求,此模块可循环操作。
详见流程图2.2。
2.3查找模块流程图
图2.3查找流程图
此模块主要是完成字符串的查找以及替换文本中的字符信息等功能。
查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,比较下一个字符,否则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且在想后移一个字符,然后再从头开始和和所查找字符穿一一比较。
查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止,详见流程图2.3。
2.4替换模块流程图.
图2.4.替换流程图
此模块主要是完成字符串的查找以及替换文本中的字符信息等功能。
查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,比较下一个字符,否则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且在想后移一个字符,然后再从头开始和和所查找字符穿一一比较。
查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止。
替换功能是在查找的基础上进行的,即也就是先查找到要替换的词的位置,然后根据用户选择在此位置是否替换,同样也是一直循环到读完整个文本信息为止。
详见流程图2。
4。
2.5将文本初始化
图2.5初始化文本信息
将文本信息初始化到用块链式存储的串中
3函数的描述
3.1串的初始化
初始化一个空串,然后将输入的文本信息存储到此串中,因为这是采用的块链式存储,用户可以自定义行的大小即一个节点存储的字符串个数,所申请的总的节点数也就是字符的行数。
3.2查找函数
查找字符串主要是通过将所查找的字符串和主串开始从第一个字符开始比较,如果相同,用for循环比较下一个字符,不同则将指向当前字符串中的字符指针向前移动已比较字符个数个单位,并且再向后移一个字符,然后再从头开始和和所查找字符穿一一比较。
查找成功则返回字符所在位置并输出,接着继续进行下一轮查找,一直循环到将文本中信息读完为止。
3.3替换函数
替换功能是在查找的基础上进行的,即也就是先查找到要替换的词的位置,然后根据用户选择在此位置是否替换,若需替换,则进入for循环完成替换,然后再通过比较查找到下一个需替换的位置,同样也是一直循环到读完整个文本信息为止。
3.4串的块链存储
采用串的块链式存储的优点是用户可根据自已的实际需要来定义每个节点的大小,这样可减少空间浪费,除此之外,链式存储还方便查找。
×
4程序测试和运行的结果
为方便查阅,所以选一串比较短的字符串为例,以英文字符“ABCDEFGHIJKLMN”为例,来实现下面的所有功能
4.1初始化一个串
4.1.1首先用户可输入用户所需要的文本信息,如“ABCDEFGHIJKLMN”
程序开始运行界面如图4.1.1所示。
截图4.1.1初始化一字符串
4.1.2.初始化“ABCDEFGHIJKLMN”后,结果如下图4.1.2所示,分行输出文本的字符信息以及文本长度和行数。
截图4.1.2初始化一字符串
4.2查找与替换字符串
4.2.1.编辑完文本后,用户可自定义查找和替换字符,选择查找和替换选项(即第二个选项),;如下图4.2.1所示。
根据说明输入指令2进行查找××××××
截图4.2.1查找字符串
4.2.2输入你要查找的字符串,以回车结束。
如图4.2.2所示。
根据提示,输入你要查找的字符,如“L”;
截图4.2.2查找字符串
4.2.3输入你需要替换后的的字符,如“S”;详见图4.2.3所示。
截图4.2.3查找字符串
4.2.4查找出所查找词在串中的第一个位置,输出该位置并弹出指令用户是否需要替换此位置的词。
如图4.2.4所示。
截图4.2.4替换字符串
4.2.5根据用户选择,如输入Y;则替换掉该位置的词并接着查找下一个所查找字符的所在位置或查找结束,如图4.2.5所示。
截图4.2.5替换字符串
4.2.6若用户不需要替换该位置的字符,输入“N”程序将跳过该位置替换直接进入下一轮查找。
如图4.2.6所示。
截图4.2.6不替换字符串
回到主程序,查找下一个字符,或继续进行下一轮操作。
参考文献
[1]高富平,张楚.电子商务法[M].北京:
北京大学出版社,2002
[2]谭浩强著.C程序设计(第三版).北京:
清华大学出版社,2005
[3]数据结构:
C语言版/严蔚敏,吴伟明编著.—北京:
清华大学出版社,2007
附录(关键部分程序清单)
查找和替换函数
voidchazhao(LString*T,char*chars,char*chars1)//所查找字符和替换后的字符
{
Chunk*p,*q;
intm=0,c=0,a=1,b=0,d=0,a1=0,c1=0,c2=0,x=0;
charu;
p=q=T->head;
while
(1)
{
if(c==CHUNKSIZE)
{
q=q->next;
a++;
c=0;
}
for(x=0;q->ch[c]==chars[m];x++)
{
m++;c++;
if(x==0)
{
b=a;d=c-1;}
if(c==CHUNKSIZE)
{
q=q->next;c=0;
}
if(chars[m]=='\0')//字符查完
{
printf("所查字符所在行位置是%d,第%d个位置开始\n",b,d+1);
printf("若需替换该字符,输入Y,否则输入N\n");
scanf("%c",&u);
fflush(stdin);
if(u!
='N')
{
p=T->head;
a=b;c=d;
for(a1=1;a1 p=p->next; q=p; for(;c1 { if(c==CHUNKSIZE) { q=q->next; c=0; } q->ch[c]=chars1[c2]; c2++;c++; } c2=0;c1=0; StrPrint(*T); }//替换完毕 c=d;a=b; } } if(! *(q->ch+c+1+m))//串查完/ { printf("查找完成,已无匹配字符\n"); break; } else { p=T->head; for(a1=1;a1 { p=p->next;q=p; } c=c+1;m=0; } } } 生成一个其值等于chars的串T,成功返回1,否则返回0 intStrAssign(LString*T,char*chars) { inti,j,k,l,m=0; Chunk*p,*q; i=strlen(chars);//i为串的长度 if(! i) return0; (*T).curlen=i; j=i/CHUNKSIZE;//j为块链的结点数,块的个数,即行数 if(i%CHUNKSIZE>0)//不足一个块的,当成一个块即块数加1 j++; printf("长度是%d\n行数是%d\n",i,j); for(k=0;k { p=(Chunk*)malloc(sizeof(Chunk)); if(! p) return0; if(k==0) (*T).head=q=p; else { q->next=p; q=p; } for(l=0;l { q->ch[l]=chars[m];m++;} if(! *chars) { (*T).tail=q; q->next=NULL; for(;l *(q->ch+l)=blank; } } return1; } 输出字符串T voidStrPrint(LStringT) { inti=0,j; Chunk*h; h=T.head; while(i { for(j=0;j if(*(h->ch+j)! =blank)//不是填补空余的字符 { printf("%c",*(h->ch+j)); i++; } printf("\n"); h=h->next; } printf("\n"); } 课程设计总结: 指导教师评语: 指导教师(签字): 年月日 课程设计成绩 源代码 #include #include #include #include #include #defineCHUNKSIZE4 #definen26 charblank='#';//全局变量,用于填补空余 typedefstructChunk { charch[CHUNKSIZE]; structChunk*next; }Chunk; typedefstruct { Chunk*head,*tail; intcurlen; }LString; voidInitString(LString*T)//初始化(产生空串)字符串T。 { (*T).curlen=0; (*T).head=NULL; (*T).tail=NULL; } intStrAssign(LString*T,char*chars)//生成一个其值等于chars的串T,成功返回1,否则返回0 { inti,j,k,l; Chunk*p,*q; i=strlen(chars);//i为串的长度 if(! i||strchr(chars,blank))//串长为0或chars中包含填补空余的字符 return0; (*T).curlen=i; j=i/CHUNKSIZE;//j为块链的结点数,块的个数 if(i%CHUNKSIZE)//不足一个块的,当成一个块即块数加1 j++; printf("长度是%d\n行数是%d\n",i,j); for(k=0;k { p=(Chunk*)malloc(sizeof(Chunk)); if(! p) return0; if(k==0)//第一个链块 (*T).head=q=p; else { q->next=p; q=p; } for(l=0;l *(q->ch+l)=*chars++; if(! *chars)//最后一个链块 { (*T).tail=q; q->next=NULL; for(;l *(q->ch+l)=blank; } } return1; } intStrEmpty(LStringS) { if(S.curlen) return0; else return1; } voidStrPrint(LStringT)//输出字符串T { inti=0,j; Chunk*h; h=T.head; while(i { for(j=0;j if(*(h->ch+j)! =blank)//不是填补空余的字符 { printf("%c",*(h->ch+j)); i++; } printf("\n"); h=h->next; } printf("\n"); } voidchazhao(LString*T,char*chars,char*chars1)///查找和替换函数/// { Chunk*p,*q; intm=0,c=0,a=1,b=0,d=0,a1=0,c1=0,c2=0,x=0; charu; p=q=T->head; while (1) { if(c==CHUNKSIZE) { q=q->next; a++; c=0; } for(x=0;q->ch[c]==chars[m];x++) { m++;c++; if(x==0) { b=a;d=c-1;} if(c==CHUNKSIZE) {q=q->next;c=0;} if(chars[m]=='\0')//字符查完 { printf("所查字符所在行位置是%d,第%d个位置开始\n",b,d+1); printf("若需替换该字符,输入Y,否则输入N\n"); scanf("%c",&u); fflush(stdin); if(u! ='N') { p=T->head; a=b;c=d;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 小型 文本 编辑器 设计