沈阳航空航天大学
课 程 设 计 报 告
课程设计名称:数据结构课程设计 课程设计题目:小型文本编辑器的设计
院(系):计算机学院 专 业: 班 级: 学 号: 姓 名: 指导教师:
目 录
沈阳航空航天大学 ........................................................................................................... I 1 程序模块说明 ............................................................................................................ 2 1.1 程序模块 .............................................................................................................. 2 1.2 模块功能说明 ...................................................................................................... 2 2 程序流程图说明 ........................................................................................................ 3 2.1 主函数流程图 ...................................................................................................... 3 2.2 显示模块流程图 .................................................................................................. 4 2.3 查找模块流程图 .................................................................................................. 5 2.4 替换模块流程图. ................................................................................................. 6 2.5 将文本初始化 ...................................................................................................... 7 3 函数的描述 ................................................................................................................ 8 3.1 串的初始化 .......................................................................................................... 8 3.2 查找函数 .............................................................................................................. 8 3.3 替换函数 .......................................................................................................... 8 3.4 串的块链存储 .................................................................................................. 8 4 程序测试和运行的结果 ............................................................................................ 9 4.1 初始化一个串 ...................................................................................................... 9 4.1.1 ........................................................................................................................... 9 4.1.2. ....................................................................................................................... 9 4.2 查找与替换字符串 .............................................................................................. 9 4.2.1 ........................................................................................................................... 9 4.2.2 ......................................................................................................................... 10 4.2.3 ......................................................................................................................... 10 4.2.4 ......................................................................................................................... 10 4.2.5 ......................................................................................................................... 10 4.2.6 .......................................................................................................................... 11 参考文献 ........................................................................................................................ 12 附 录(关键部分程序清单) .................................................................................. 13 查找和替换函数 ......................................................................................................... 13 生成一个其值等于CHARS的串T,成功返回1,否则返回0 ............................... 15 输出字符串T ............................................................................................................. 17 源代码 ............................................................................................................................ 19
1 程序模块说明
1.1 程序模块
为了更方便地完成字符串的查找,此程序采用串的块链式存储结构存储方式。通过主模块调用四个小模块完成文本编辑的各种功能。用户可在主模块上循环对程序进行操作。
1.2 模块功能说明
1.主模块:用户可编辑任一文档,输入要在文本中查找的信息。初始化一个字符串,并用串的块链式存储结构存储。
2. 编辑文本信息:将用户编辑的文本信息分行输出来,并输出字符串的长度和行数。
3.查找模块:遍历整个文本,查找字符串在串中的位置,并输出其所在位置,直到遍历完整个文本结束。
4.替换模块:先查找你要替换的字符所在位置,然后根据用户选择是否替换该字符。
5.退出模块:退出程序,等待用户下次重行运行该程序。
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
附 录(关键部分程序清单)
查找和替换函数
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) { }
for(x=0;q->ch[c]==chars[m];x++) {
m++;c++; if(x==0) {
b=a;d=c-1; } q=q->next; a++; c=0;
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<a;a1++)
p=p->next;
q=p;
for(;c1<m;c1++)//替换后的字符chars1
{
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<a;a1++) {
p=p->next;q=p;
}
c=c+1;m=0;
}
}
}
生成一个其值等于chars的串T,成功返回int StrAssign(LString *T,char *chars) { int i,j,k,l,m=0; Chunk *p,*q;
i=strlen(chars); // i为串的长度 if(!i)
return 0;
1,否则返回0