资源描述:
《C语言课程设计实习报告--简单的行编辑器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C语言课程设计实习报告学院:工程学院班级:052086学号:20081002557姓名:黄沛骋指导老师:刘文中设计题目:简单的行编辑器简单的行编辑器一、题目要求(1)设置一个简单的行编辑器,每行一回车结束(2)数据以文件形式存储;(3)编辑器具有查找、替换、修改数据的功能;[提示]把一行字符调入数组处理二、需求分析根据题目要求,由于数据以文件形式存储,因此应该提供文件的输入和输出等操作;在程序中需要浏览文件内容,提供查找、替换、修改、删除等操作;另外还应该提供保存、读取的功能。三、总体设计根据需求分
2、析,可以将这个行编辑器的设计分为8个模块:读取、保存、查找、显示、输入、修改、替换。行编辑器删除替换读取修改输入查看检索保存四、详细设计1.主函数主函数比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用命令方式选择。主菜单显示键入help得到帮助菜单,并显示目前文本所有的行数。[流程图]显示键入帮助输入指令,判断指令是否存在N根据指令调用个功能模块函数Y将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,便于系统执行完每部分功能模块后能够方便返回到系统界面。[程序]in
3、tmain(intargc,char*argv[]){L*lines=0;charline[szLINE]="";inta=0,b=0,i=0;FUNCfun=0;printf("Command[help]isavailable.");/*如果带主函数带参数,则可以用于打印帮助,或者根据该参数加载一个文本文件*/if(argc>1){a=strcmp(argv[1],"--help");b=strcmp(argv[1],"/h");if(a&&b)load(&lines,argv[1]);els
4、e{exec_help(0,0);return0;}/*endif*/}/*endif*//*主命令循环*/for(;;){/*命令提示符中间是表示当前载入的文档总共有多少行的意思*/printf("<%d>",view(lines,0,0,0));/*从键盘输入一个命令行*/memset(line,0,szLINE);gets(line);/*根据命令行扫描关键词代码表,根据代码表取得执行函数的地址,再根据执行函数地址调用行编辑命令*/for(i=0;i5、fied(line,keywords[i])){fun=functions[i];(*fun)(&lines,line);break;}/*endif*/}/*next*/}/*next*/return0;}/*endmain*/1.各功能模块设计(1)输入模块[需求分析]该模块的功能是输入新的行,编辑器自动行号加一。采用追加的方式保存。输入以回车结束。[分析]编辑器输入一行,便行号加一,以回车结束。[流程图]调用输入函数记录个数n回车结束输入字符[程序]/*执行文本插入命令*/voidexec_i
6、nsert(L**lines,char*line){charcmd[szLINE]="",text[szLINE]="";Uindex=0;/*从命令行提取目标插入点的行号*/sscanf(line,"%s%d",cmd,&index);/*在命令之后另起新行用于录入文本*/gets(text);strcat(text,"");/*执行文本插入命令*/insert(lines,text,index);}/*endinsert*/(2)修改模块[需求分析]该模块的修改已存在的行,就是把新的字符置换
7、旧的字符,并以回车结束。[流程图]调用编辑函数输入编辑的行数查找要编辑的行是否找到此行找到的行返回菜单YN调用编辑函数,修改行内容Y回车结束[程序]/*执行文本编辑命令*/voidexec_edit(L**lines,char*line){charcmd[szLINE]="",text[szLINE]="";Uindex=0;/*从命令行提取目标行号*/sscanf(line,"%s%d",cmd,&index);/*在命令之后另起新行用于录入文本*/gets(text);strcat(text,"
8、");/*执行文本编辑命令*/edit(*lines,text,index);}/*endedit*/(3)查看模块[需求分析]该模块的功能有查看所有行记录,[流程图]调用查看函数输入查看的行数显示行记录回车结束[程序]/*执行文本查看命令*/voidexec_view(L**lines,char*line){charcmd[szLINE]="";Ufrom=0,to=0;/*分析命令行,提取目标要查看的起始行号和终止行号*/sscanf(line,"%s%u%u