您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数据结构课程设计-文章编辑(附录中有全部代码)
课程设计任务书专业名称:计算机科学与技术(软件工程)课程名称:数据结构课程设计设计题目:文章编辑问题起止时间:2013年6月24日至2013年7月12日问题描述静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。基本要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)查找出文章中某一段文字,并用其他文字进行替换;(4)删除某一子串,并将后面的字符前移。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、数字个数、空格个数、文章总字数;(3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果;(4)输出删除某一字符串后的文章;实现提示存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。文章编辑系统1概要设计本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串统计5.指定字符串删除6.指定字符串替换7.退出系统本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。浏览输入文本模块实现了显示用户录入信息的功能。指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。指定字符串统计实现了统计用户自定义字符串个数的功能。指定字符串删除模块实现了对用户自定义字符串的删除。指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。退出系统模块实现了退出系统功能。图1.1系统功能模块图2详细设计这部分详细介绍了系统中主要部分的功能实现,以及代码功能说明。voidCreate(LINE*&head){printf(请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):\n);//以Ctrl+E结束文本录入,避免发生混淆LINE*p=newLINE;/*首先为链表建立一个附加表头结点*/head=p;/*将p付给表头指针*/charch[100];while(1){gets(ch);/*输入字符串!*/if(strlen(ch)80){文章编辑系统浏览输入文本新建文本文本字符统计指定字符串删除指定字符串替换指定字符串统计退出系统printf(每行最多输入80字符);break;}if(ch[0]==5)break;/*如果发现输入^E,则退出输入*/p=p-next=newLINE;p-data=newchar[strlen(ch)+1];/*为结点分配空间*/strcpy(p-data,ch);if(ch[strlen(ch)-1]==5)/*除去最后一个控制符^E*/{p-data[strlen(ch)-1]='\0';break;}}p-next=NULL;/*最后的一个指针为空*/head=head-next;}/**文本字数统计**/intCount_Space(LINE*&head)//统计空格数{LINE*p=head;intasc_space=32;intcount=0;inti;intLen;do{Len=strlen(p-data);for(i=0;iLen;i++)if(p-data[i]==asc_space)count++;}while((p=p-next)!=NULL);returncount;}intCount_Num(LINE*&head)//统计数字个数{LINE*p=head;intcount=0;intLen;inti;do{Len=strlen(p-data);for(i=0;iLen;i++)if(p-data[i]=48&&p-data[i]=57)count++;}while((p=p-next)!=NULL);returncount;}intCount_All_Word(LINE*&head)//统计文章的总字数{LINE*p=head;intcount=0;do{count+=strlen(p-data);}while((p=p-next)!=NULL);returncount;}intCount_Letter(LINE*&head)//统计字母数{LINE*p=head;intcount=0;intLen;inti;do{Len=strlen(p-data);for(i=0;iLen;i++)if(p-data[i]='a'&&p-data[i]='z'||p-data[i]='A'&&p-data[i]='Z')count++;//计算字母个数}while((p=p-next)!=NULL);returncount;}intFind_Word(LINE*&head,char*sch)//统计sch在文章中出现的次数{LINE*p=head;intcount=0;intlen1=0;intlen2=strlen(sch);inti,j,k;do{len1=strlen(p-data);//当前行的字符数for(i=0;ilen1;i++){if(p-data[i]==sch[0]){k=0;for(j=0;j=len2-1;j++)if(p-data[i+j]==sch[j])k=k+1;if(k==len2){count++;i=i+k-1;}}}}while((p=p-next)!=NULL);returncount;}/**特定字符串的删除**/voiddel_string_word(char*s,char*sch){char*p=strstr(s,sch);chartmp[80];intlen=strlen(s);intk,kk;inti=len-strlen(p);intj=i+strlen(sch);intcount=0;for(k=0;ki;k++)tmp[count++]=s[k];for(kk=j;kklen;kk++)tmp[count++]=s[kk];tmp[count]='\0';strcpy(s,tmp);}voidDel_String(LINE*&head,char*sch)//删除指定的字符串{LINE*p=head;do{while(strstr(p-data,sch)!=NULL)del_string_word(p-data,sch);}while((p=p-next)!=NULL);}/**特定字符串的替换**/voidreplace_string_word(char*s,char*sch,char*reh){intStringLen;charcaNewString[100];char*FindPos=strstr(s,sch);//if((!FindPos)||(!sch))//return-1;while(FindPos){memset(caNewString,0,sizeof(caNewString));StringLen=FindPos-s;strncpy(caNewString,s,StringLen);strcat(caNewString,reh);strcat(caNewString,FindPos+strlen(sch));strcpy(s,caNewString);FindPos=strstr(s,sch);}/*return0;*/}voidReplace_String(LINE*&head,char*sch,char*reh)//替换指定的字符串{LINE*p=head;do{while(strstr(p-data,sch)!=NULL)replace_string_word(p-data,sch,reh);}while((p=p-next)!=NULL);}/**打印输入的文本**/voidOutPutTxt(LINE*&head)//向屏幕输出文章{LINE*p=head;printf(文本文件输出如下:);do{printf(%s\n,p-data);}while((p=p-next)!=NULL);}voidCount(LINE*&head){printf(文章统计信息结果:\n);printf(全部字母数:%d\n,Count_Letter(head));printf(数字个数:%d\n,Count_Num(head));printf(空格个数:%d\n,Count_Space(head));printf(文章总字数:%d\n,(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_Letter(head))/2);printf(\n);}voidmain(){LINE*head;charsch[20];charreh[20];charID[10];charch;chartmp_sch[20];chartmp_rch[20];3调试报告在本次程序设计中,在编译过程中,出现了几次问题(1)错误提示:errorC2660:'search':functiondoesnottake1parameters错误类型:Search函数参数错误改正方法:将case语句后加break语句进行返回。(2)错误提示:errorC2228:leftof'.search'musthaveclass/struct/uniontype错误类型:指针符号使用错误改正方法:将s.Search(stu,s)更改为s-search(stu,s)(3)错误提示:errorC2676:binary'':'classstd::basic_ofstreamchar,structstd::char_traitschar'doesnotdefinethisoperatororaconversiontoatypeacceptabletothepredefinedoperator错误类型:文件流输入输出符号使用错误,错误使用作为文件写入操作符。改正方法:将改为。4测试结果测试项目测试数据测试结果登陆界面1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串统计5.指定字符串删除6.指定字符串替换7.退出显示:1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串统计5.指定字符串删除6.指定字符串替换7.退出新建功能输入1:新建文本Abcdefg1234567显示:Abcdefg1234567显示功能输入2:浏览输入文本显示用户录入结果:Abcdefg1234567统计功能输入3:文本字符统计文章统计信息结果:全部字母数:7数字个数:7空格个数:1文章总字数:15指定字符串统计功能输入4:指定字符串删除输入要统计字符串:Ab出现次数:1指定字符串删除功能输入5:指定字符串删除输入要删除字符串:Ab删除后文本文件如下:cdefg1234567指定字符串替换功能输入6:指定字符串替换要替换掉的字符串:cdefg要替换成的字符串:!!!!替换后文本文件如下:!!!!12345675使用说明本系统开始时显示所有选择项。选择项采用文字提示,数字选择进行选择操作。图5.1显示运行界面录入选项:输入1:新建文本图5.2新建文本界面输入2:浏览输入文本图5.3浏览输入文本界面输入3:文本字符统计图5.4文本字符统计界面输入4:指定字符串统计图5.5指定字符串统计界面输入5:指定字符串删除图5.6指定字符串删除界面输入6:指定字符串替换图5.7指定字符串替换界面输入7:退出图
本文标题:数据结构课程设计-文章编辑(附录中有全部代码)
链接地址:https://www.777doc.com/doc-5952372 .html