




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简单的行编辑器 1.1题目要求 ()设置一个简单的行编辑器,每行以回车结束。()数据以文件形式存储。()编辑器具有查找,替代,修改数据的功能。提示把一行字符调入数组处理。1.2需求分析根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作。还需要具有查找,替换,修改数据的功能。1.3总体设计根据上面的需求分析,可以将这个系统的设计分为如下七大模块:编辑,查找,修改,删除,替换,保存,退出。图1.3 系统功能模块图简单的行编辑器系统编辑替换删除修改保存退出查找1.4详细设计 主函数 为了各模块的独立性,主函数一般设计得比较简单,本系统主要用主函数打开上次保存的数据和进入主菜单函数打
2、开上次保存文件流程图:进入主菜单函数程序:/*主函数*/main() FILE *pfile; pfile=fopen("Linedit.txt","a+"); readfile(lines,pfile); fclose(pfile); menu(lines);int readfile(char (*lines)MAXC,FILE *pfile) int i=0;while(!feof(pfile)fgets(linesi,MAXC,pfile); /*if(!strstr(linesi,"n") return 1;*/i+;retu
3、rn 0;1 主菜单函数流程图:显示一系列功能选项输入n,判断n是否是0-6根据n的值调用各功能模块函数是否程序void menu(char (*lines)MAXC)int selection;dosystem("cls");puts("tt*MUNU*nn");puts("tt1.Edit new line");puts("tt2.Replace line");puts("tt3.Delete line");puts("tt4.Search line");puts(&qu
4、ot;tt5.Modify data");puts("tt6.Save");puts("tt0.Exit");puts("nntt*n");printf("Please select a number: bb");doscanf("%d",&selection);if(selection<0|selection>6) printf("Invalid selection!Please try again ");printf("and se
5、lect a number:bbn");else break;while(true);switch(selection) case 1:edit(lines);break;case 5:modify(lines);break;case 3:mydelete(lines);break;case 4:search(lines);break;case 2:replace(lines);break;case 6:savetofile(lines);break;case 0:myexit(lines); while(true);2 各功能模块设计(1) 编辑模块流程图:程序/*编辑*/void
6、 edit(char (*lines)MAXC) int i,index; /*system("cls");*/ clrscr(); for(i=0,index=0;i<MAXL;i+) if(linesi0!=0) index+; printf("%d: %s",index,linesi); printf("nnPlease type a new line:n"); fflush(stdin); for(i=0;i<MAXL;i+) if(linesi0='0') /*每行第一个字符作为标志位 空行可写入
7、*/ fgets(linesi,MAXC,stdin); return; else continue; (2) 替换模块流程图程序/*替换*/void replace(char (*lines)MAXC) int i; int indline; int j,k; do /*system("cls"); */ clrscr(); /*打印所有 */ for(i=0;i<MAXL;i+) if(linesi0!=0) printf("%d: %s",i+1,linesi); printf("nnWhich line do you prefer
8、 to replace?(To quit please input 0) bb"); scanf("%d",&indline); if(indline=0) return; else for(j=0,k=0;j<MAXL;j+) if(linesj0!=0) k+; if(k=indline) printf("nnThe line to be replaced is: n%s",linesj); printf("Please type your new line:n"); memset(linesj,0,MAX
9、C); fflush(stdin); fgets(linesj, MAXC, stdin); break; while(true); (3) 删除模块流程图:删除即在查找到某行的基础上再删掉,其具体流程图可参照查找的流程图查找行删除行程序/*删除*/void mydelete(char (*lines)MAXC) int i,index; int indline; int j,k; do /*system("cls");*/ clrscr(); for(i=0,index=0;i<MAXL;i+) if(linesi0!=0) index+; printf("
10、;%d: %s",index,linesi); printf("nnWhich line do you prefer to delete?(To quit please input 0) bb"); scanf("%d",&indline); if(indline=0)return; else for(j=0,k=0;j<MAXL;j+) if(linesj0!=0) k+; if(k=indline) printf("The line to be deleted is: n%sn",linesj); mems
11、et(linesj,0,MAXC); system("pause"); break; while(true);(4) 查找模块流程图:程序/*查找*/void search(char (*lines)MAXC) int i,index; int indline; int j,k; do /*system("cls");*/ clrscr(); for(i=0,index=0;i<MAXL;i+) if(linesi0!=0) index+; printf("%d: %s",index,linesi); printf("
12、nnWhich line do you want to search?(To quit please input 0) bb"); scanf("%d",&indline); if(indline=0)return; else for(j=0,k=0;j<MAXL;j+) if(linesj0!=0) k+; if(k=indline) printf("The line to be searched is: n%sn",linesj); system("pause"); break; while(true);(
13、5) 修改模块流程图:删除模块的流程图也是在查找模块的基础上稍加改动,在此不再赘述其流程图可简单写为查找行修改行程序/*修改*/*在sSrc中用sReplaceStr替换sMatchStr */int modifystr(char *sSrc,char *sMatchStr,char *sReplaceStr) int StringLen; char caNewStringMAXC; char *FindPos = strstr(sSrc,sMatchStr); if(!FindPos)|(!sMatchStr) return -1; while(FindPos) memset(caNewSt
14、ring,0,sizeof(caNewString); StringLen=FindPos-sSrc; strncpy(caNewString,sSrc,StringLen); strcat(caNewString,sReplaceStr); strcat(caNewString,FindPos+strlen(sMatchStr); strcpy(sSrc,caNewString); FindPos = strstr(sSrc,sMatchStr); return 0;void modify(char (*lines)MAXC) int i,indline; char bufMAXC; int
15、 k; int j; char* token=0; char searchMAXC,replaceMAXC; do /*system("cls"); */ clrscr(); for(i=0;i<MAXL;i+) if(linesi0!='0') printf("%d: %s",i+1,linesi); printf("nnWhich line do you prefer to modify?(To quit please input 0) bb"); scanf("%d",&indl
16、ine); if(indline=0) return; else for(j=0,k=0;j<MAXL;j+) if(linesj0!=0) k+; if(k=indline) printf("nnThe line to be replaced is: n%s",linesj); printf("nnInput the search string and the replace ");printf("(To quit please input q):"); memset(buf,0,MAXC); fflush(stdin); f
17、gets(buf, MAXC, stdin); k= strlen(buf)-1; if(bufk='n') bufk='0' if(*buf='q'&&*(buf+1)='0') return; memset(search,0,MAXC); memset(replace,0,MAXC); token =strtok(buf, " "); strcpy(search,token); token =strtok(NULL, " "); strcpy(replace,token)
18、; modifystr(linesj,search,replace); break; while(true); (6) 保存模块流程图:程序void savetofile(char (*lines)MAXC) FILE *pfile; int i; pfile=fopen("Linedit.txt","w+"); for(i=0;i<MAXL;i+) if(linesi0!='0') fputs(linesi,pfile); fclose(pfile); printf("nThe lines has been saved.n"); system("pause");(7) 退出模块流程图:提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程排架方案设计
- 建筑作业空间构建方案设计
- 吸附解析塔拆除施工方案
- 电焊培训课件
- 物业管理多元化服务质量监督评估方案
- 数字化赋能连锁餐饮:2025年运营与管理效率提升实践报告
- 泵的原理培训课件
- 数字化展示技术在文化创意产品市场推广2025年应用效果评估报告
- 消防水箱间施工方案
- 农用浅井施工方案编制
- 2025年江苏省农垦集团有限公司招聘笔试备考及答案详解(新)
- 生物安全培训试题(答案)
- 陪玩团基本知识培训课件
- 2025年公证处聘用制书记员招聘考试要点及面试模拟题解析
- 2025江西吉安庐陵新区招聘社区工作者(专职网格员)招聘22人考试参考试题及答案解析
- 芯片研发流程管理办法
- 2025-2026学年广美版(2024)小学美术二年级上册教学计划及进度表
- 电子工程师知识培训课件
- 2025年手电筒行业研究报告及未来行业发展趋势预测
- 设备使用与保养培训课件
- 兵团连队职工考试试题及答案解析
评论
0/150
提交评论