《C语言课程设计简单的行编辑器》由会员分享,可在线阅读,更多相关《C语言课程设计简单的行编辑器(13页珍藏版)》请在金锄头文库上搜索。
1、中国地质大学C语言课程设计 题目编号和名称 16 简单的行编辑器 教师姓名 学生姓名 学生学号 学生班级 所在院系 日期 2010 年 7 月 16 日简单的行编辑器目录1.题目要求2.需求分析.3.总体设计4.详细设计5.总结. 1.【题目要求】设计一个简单的行编辑器 【要求】 (1) 设置一个简单的行编辑器,每行以回车结束 (2) 数据以文件形式存储 (3) 编辑器具有查找、替换、修改数据的功能2.【需求分析】根据题目要求,行编辑器的数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;在程序运行过程中要实现查找、替换、修改数据的功能应提供查找、替换、修改数据等操作;另外还应提供键
2、盘式选择菜单功能选择。3.【总体设计】根据上面的需求分析,可以将这一系统的设计分为输入、查找、替换修改数据、退出等四个模块(系统功能模块如图1所示)简单的行编辑器输入数据修改替换数据替换 替换图换打印数据查找退出删除 图1 行编辑器功能模块图 4.【详细设计】1. 主函数主函数的设计一般较简单,一般只提供输入、功能处理和输出部分的函数调用其中各功能模块用菜单方式选择。主函数流程图如图1-1 程序如下void main()开始显示一系列功能选项coutttt 简单行编辑.n;Str s1;输入N的值Str s2; Str ss;根据N的值调用各功能模块函数Str ss1;Str ss2;结束in
3、t n;s1.input_str();int choice=-1;while(choice!=0) 图1-1 行编辑器主函数流程/system(cls);coutttt *简单行编辑*n;coutttt *n;coutttt 1: 打印字符串.n; coutttt 2: 插入字符串.n; coutttt 3: 删除字符串.n;coutttt 4: 复制整个字符串.n; coutttt 5: 替换字符串.n; coutttt 6: 查找一个字符串的位置.n;coutttt 7: 继续输入. n;coutttt 0: 退出.n;coutttt *n;coutchoice;switch(choice
4、)case 1: coutttt1: 打印出字符串.n; s1.print_str(s1);break; case 2: coutttt2: 插入字符串.n; s1.insert_str(s1,s2,ss);break; case 3: coutttt3: 删除字符串.n; s1.delete_str(s1,s2);break;case 4: coutttt4: 复制整个字符串.n; s1.copy_str(s1,s2);break; /*case 5: coutttt5: 替换字符串.n; s1.instead_str(s1,s2,ss1,ss2,n);break;*/ case 6: co
5、utttt6: 查找一个字符串的位置.n; s1.find_position(s1,ss,n);break;case 7: coutttt7: 继续输入.n; s1.go_on_input(s1);break; case 0: coutttt0: 退出.n;break;default:coutttterror.n; break;2各功能模块的设计(1)输入、打印模块该程序需要输入一段字符串作为其待处理数据,所以通过键盘输入字符串作为待处理数据,以回车进入主函数界面。选择菜单1打印出该段字符串。其程序如下,程序运行截图如图2-1 2-2void Str:input_str() coutchk,c
6、hk!=# ) k+;chk=#;len=k;/下面的程序为:显示整个字符串。void Str:print_str(Str &s1)coutnttt整个字符串为:;for(int k=0;s1.chk!=#;k+)coutchk;coutnn; 图2-1 图2-2(2)数据修改模块该功能可通过数据插入与数据修改两部分完成对数据的修改。1】插入 完成插入操作时 须先输入要插入的位置,然后输入所要插入的字符串,以#结束,回车完成插入其程序如下,运行截图如图2-3void Str:insert_str(Str &s,Str s2,Str ss) couti;i-;if(is.len) coutttt
7、 插入位置不存在.n;else coutss.chr,ss.chr!=# ) r+; ss.chr=#; ss.len=r; if(ss.lenMaxSize| ( s.len +ss.len )MaxSize) coutttt插入字符串大于最大值无法插入.n; else int p=0; for (int k=0; k=i; k+) s2.chp=s.chk;p+; for(k=0;kss.len;k+) s2.chp=ss.chk; p+; for(k=i+1;ks.len;k+) s2.chp=s.chk; p+; s2.len=p; coutttt 新字符串的长度为s2.len; s2
8、.chp=#; for(int q=0; s2.chq!=#; q+) s.chq=s2.chq; s.chq=#; s.len=s2.len ; cout 插入成功.n; print_str(s); 图2-32】删除 删除操作是作为修改模块的一部分,同插入操作共同完成修改数据的功能。进行删除操作时,输入想从字符串上开始删除的位置,再输入删除的字符串长度。回车即可完成删除。其程序如下,运行截图如图2-4void Str:delete_str(Str &s1,Str s) couti; if(is1.len) coutttt 太大无法删除.n;else coutj; if(i+js1.len)
9、coutttt 删除的太长无法删除.n; else int p=0; for (int k=0;ki;k+) s.chp=s1.chk; p+; for (k=i+j;ks1.len;k+) s.chp=s1.chk; p+; s.len=p+1; s.chp+1=#; for(int q=0; s.chq!=#; q+) s1.chq=s.chq; s1.chq-1=#; s1.len=s.len-1; coutttt 删除成功.n; s1.print_str(s1); 图2-4(3)查找模块在字符串内寻找你想要的一段字符串,显示找到的位置。选择查找功能的菜单,通过键盘输入所要查找字符串,回车即可找出其所在位置。程序如下,运行截图如图2-5void Str:find_positi