您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 数据结构简易文本编辑器
..题目:【2】.简易文本编辑器要求:1)具有图形菜单界面;2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3)可正确存盘、取盘;4)正确显示总行数。1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2概要设计为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息:⑴清空以前的文本信息:将用数组存的数据内容全部置为0;⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;..⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;⑻退出编辑器:显示感谢使用该软件并退出。3详细设计voidmenu();voidshuru(chartext[]);voidbc(chartext[]);voiddakai(chartext[]);voiddayin(chartext[]);voidchazhao(chartext[],intl);voidtihan(chartext[],intl);intstrindex(chartext[],chart[],inti2,intl);voidshanchu(charp[],intl);voidcs(chartext[]);voidcharu(chartext[],intl);voidtuichu(intstatus);chartext[MAX]=;//文本编辑域charname[20]=;//文件保存的位置intstatus=0;//显示是否保存过的状态intntext;//文本编辑的位置4用户使用说明⑴清空以前的文本信息:将用数组存的数据内容全部置为0;⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;..⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;⑻退出编辑器:显示感谢使用该软件并退出。5调试分析/测试结果文本编辑器主界面主界面功能,如图2—2所示。图2—2文本编辑器主界面..系统功能⑴输入文本信息功能,如图2—3所示。图2—3输入界面..⑵查找文本信息,如图2—4所示。图2—4查到功能界面..⑶显示文本信息,如图2—5。图2—5..{4}删除操作,如图2--6图2—6(删除123)功能..{5}插入操作如图2—7所示。图2—7(在789前插入123)界面..{6}替换文本内容,如图2—8所示。图2—8(替换456为abc)的内容..6心得体会程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。7程序#includestdio.h#includestdlib.h#includetime.h#includestring.h#defineMAX10000#define_CRT_SECURE_NO_DEPRECATE//在vs中取消warning的警告voidmenu();voidshuru(chartext[]);voidbc(chartext[]);voiddakai(chartext[]);voiddayin(chartext[]);voidchazhao(chartext[],intl);voidtihan(chartext[],intl);intstrindex(chartext[],chart[],inti2,intl);voidshanchu(charp[],intl);voidcs(chartext[]);voidcharu(chartext[],intl);voidtuichu(intstatus);chartext[MAX]=;//文本编辑域charname[20]=;//文件保存的位置intstatus=0;//显示是否保存过的状态intntext;//文本编辑的位置voiddakai(chartext[]){system(cls);FILE*fp;charpd,ch;charname[30];inti=0;printf(输入A:确定打开文件(未保存的数据将会丢失)M:返回主菜单);fflush(stdin);pd=getchar();if(pd=='A'||pd=='a')..{printf(请输入要打开文件名字(例如c:\\a.txt));scanf(%s,name);while((fp=fopen(name,r))==NULL){printf(\n打开文件失败,请重新输入要打开的文件名:);scanf(%s,name);}cs(text);while(!feof(fp)){ch=fgetc(fp);text[i]=ch;i++;}text[i]='\0';ntext=i;fclose(fp);printf(\n文件读取成功\n文件内容为\n);dayin(text);}if(pd=='M'||pd=='m')menu();}voidbc(chartext[]){system(cls);FILE*fp;charpd;chartmp;inti;printf(\n输入【A】保存;任意键返回主菜单不保存\n);fflush(stdin);pd=getchar();if(!(pd=='A'||pd=='a')){menu();}else{if(name[20]==NULL){printf(\n请输入保存文件名(例如:c:\\a.txt):);scanf(%s,name);..}while((fp=fopen(name,w+))==NULL){printf(文件不存在,请重新输入文件名:);scanf(%s,name);}printf(\nA:确定;B:取消:);while(scanf(%c,&tmp)!=EOF){if(tmp=='A'||tmp=='a'){for(i=0;intext;i++)fprintf(fp,%c,text[i]);fclose(fp);status=1;printf(\n文件保存成功\n);break;}if(tmp=='B'||tmp=='b'){break;}}}}voidcs(chartext[]){inti;for(i=0;intext;i++){text[i]='\0';}ntext=0;status=0;}intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配){inti1=l,j=0;while(i1ntext&&ji2){if(text[i1]==t[j])//继续匹配下一个字符{..j++;i1++;//主串和子串依次匹配下一个字符}else//主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1;//主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if(j=i2){return(i1-i2);}//返回匹配的第一个字符的下标elsereturn(-1);//模式匹配不成功}voidmenu(){system(cls);time_ttimep;time(&timep);printf(%s,ctime(&timep));printf(\n\n\n\n\n\n\n\n\n\t\t\tWelcomtouseourTXTeditionsystem!\n);printf(\n\n\t\t\t欢迎您使用文本编辑器软件!\n);printf(\n\n\n\n\n\n\n\n\npressEntertocontinue...\n);getchar();loop:system(cls);printf(\n\n\n\n\t\t******************简易文本编辑器*****************\n\n);printf(\t\t\t\t----0.清空内容--\n);printf(\t\t\t\t----1.打开文件--\n);if(ntext==0){printf(\t\t\t\t----2.输入内容--\n);}else{printf(\t\t\t\t----2.继续输入--\n);}printf(\t\t\t\t----3.查找------\n);printf(\t\t\t\t----4.插入------\n);printf(\t\t\t\t----5.删除------\n);..printf(\t\t\t\t----6.替换------\n);printf(\t\t\t\t----7.显示内容--\n);printf(\t\t\t\t----8.保存------\n);printf(\t\t\t\t----9.退出------\n);printf(\n\t\t*********************选项************************\n);printf(\n\t\t\t\t输入选项0-9:);charn;fflush(stdin);n=getchar();if(n='0'&&n='9'){switch(n){case'0':cs(text);break;case'1':dakai(text);break;case'2':shuru(text);break;case'3':chazhao(text,0);break;case'4':charu(text,1);break;case'5':shanchu(text,0);break;case'6':tihan(text,0);break;case'7':dayin(text);break;case'8':bc(text);break;case'9':tuichu(status);default:break;}}else{printf(\n输入有误,请重新输入:);fflush(stdin);n=getchar();}system(pause);gotoloop;}voidchazhao(chart
本文标题:数据结构简易文本编辑器
链接地址:https://www.777doc.com/doc-5755617 .html