欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    文章编辑数据结构设计报告.docx

    • 资源ID:1116515       资源大小:193.56KB        全文页数:28页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    文章编辑数据结构设计报告.docx

    文章编辑设计报告一、实训目的及要求数据结构是计算机课程的一门重要的根底课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。本综合实训利用VisualStudio2008集成编程环境为实践工具,通过上机实践培养学生分析具体问题、解决实际问题的能力,训练和培养学生的数据抽象能力和程序设计的能力。数据结构是一门实践性较强的课程,以养学生的数据抽象能力和程序设计的能力为目的。在实训时应注重培养学生的实际操作能力。本综合实训安排了20学时的实验课时,完成4次上机作业。具体要求如下:1 .学习和理解每个实训题目的根本理论和方法;2 .掌握每个实验的实现步骤和关键技术;3 .准备好实验所需要的资源和文档;4 .上机实现程序,得到通过调试的正确程序。5 .根据每个实验的不同要求,完成实验报告的WOrd文档。二、实训环境WindowsXPVisualStudio2010三、实训内容文章编辑1)问题描述输入一页文字,程序可以统计出文字、数字、空格的个数。2)根本要求静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;13)删除某一子串,并将后面的字符前移。(4)替换字符串15)可以保存到文件中,也可以在文件中翻开四、算法描述及实训步骤定义一个串,可使用顺序串或者链表串。实现串的插入、删除、修改、保存在文件中选择界面输入字串统计字串删除子串替换子串保存一串F换、遍历等功能。并能够把串显示字串/*文本每行以字符串形式存储,行与行之间以链表存储*/usingnamespacestd;typedefstructlinechar*data;structline*next;LINE;/*创立一链表,同时向里面输入文本数据*intstrlength(str*s)/*统计字母数*/intCountLetterCLlNE*&head)(1.INE*p=head;intcount=0;dointLen=Strlen(P->data);/*计算当前data里的数据元素的个数*/for(inti=O;i<Len;i+)if(p->datai>='a'&&p>dataiv='z')|(p->datai>='A'&&p>dataiK=Z)/*计算字母数可count+;while(p=p->next)!=NULL);/*遍历链表*/returncount;/*返回文章的字母总数*/)/*统计数字数刃intCountNumber(LINE*&head)(1.INE*p=head;intcount=0;do(intLen=StrIen(P.>data);/*计算当前data里的数据元素的个数*/for(inti=O;i<Len;i+)if(p->datai>=48&&p->datalJ<=57)count+;产计算数字数,ASCII码号)while(p=p->next)!=NULL);/*遍历链表*/returncount;)/*统计空格数刃intCountSpaceCLINE*&head)(1.INE*p=head;intcount=0;do(intLen=StrIen(P.>data);/*计算当前data里的数据元素的个数*/for(inti=O;i<Len;i+)if(p->dataij=32)Coimt+;/*计算空格数,空格ASCII码为32*/WhiIe(P=P->next)!=NULL);/*遍历链表*/returncount;/*统计文章的总字数*/intCountAlKLINE*&head)1.INE*p=head;外保存链表的首地址木/intcount=0;d。/*计算总字符数列(count+=strlen(p->data);)While(P=P->next)!=NULL);/木遍历链表率/returncount;)/*统计str在文章中出现的次数*/intFindStringCLINE&head,char*str)(1.INE*p=head;intcount=0;inth=0;intIelII=O;/*保存当前行的总字符数率/intlen2=strlen(str);/待统计字符串的长度*/intij,k;doIenI=Strlel(p->data);/*当前行的字符数*/for(i=0;ivlenl;i+)/*字符匹配*/(if(p->datai=strOJ)(k=0;for(j=0;j<len2;j+)if(p->datai+j=strj)k+;if(k=len2)count+;i=i+k-l;)*遍历链表*/while(p=p->next)!=NULL);returncount;)*删除指定的字符串*/voiddelstringword(char*s,char*str)*s为输入的字符串,*str为将要删除的字符*/char*p=strstr(s,str);/*从字符串s中寻找str第一次出现的位置木/chartmpl80J;intlen=strlen(s);intI=Ien-Strlen(P);intj=i+strlen(str);intcount=0;for(intm=0;m<i;m+)tmpcount+=sm;for(intn=j;n<len;n+)tmpcount+=sn;tmpcountj=,0'strcpy(s,tmp);/*返回新的字符串*/)/*替换指定的字符串*/voidrepstringword(char*s,char*str,char*strb)*s为输入的字符串,*str为将要被替换的字符,Strb为替换字符阳(char*p=strstr(s,str);/*从字符串S中寻找str第一次出现的位置本/chartmp80J;intq=0;intk=strlen(strb);intlen=strlen(s);inti=len-strlen(p);intj=i+strlen(str);intcount=0;for(intm=0;m<i;m+)tmpcount+=sm;for(into=0;o<k;o+)tmplcount+J=strbq+J;for(intn=j;n<len;n+)tmpcount+sn;*返回新的字符串*/tmpcount=O'strcpy(s,tmp);)Printf("ntt*");printf(,'ntt*1一统计数据*n);printf(,'ntt*2一统计字符串”);printf(,ntt*3替换字符串*”);printf('ntt*4删除字符串*);printf(,'ntt*5一显示文章*n);printf(,'ntt*6一保存文章”);printf(,ntt*0一退出程序*”);Printf("ntt*");printf(,ntt请选择操作序号:(0-4):n);五、总结及心得体会开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想方法去设计的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。因为没有事先做过仔细的分析需求,导致很多问题。这是作为设计开发人员需要特别警惕防止的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。就比方没有注意到要换行输入所以最开始没有用链表结构,所以导致程序到最后全部否认重新开始设计。所以以后的课程设计要特别注意这一块的设计。六、实训结果I 回 tfH 'C:软件vc+6.0MSDev98MyProjects7Debug7.exe"请输入一页文章,魅'奥鬻翻越输入8。字符bdsandasndkasnkbncncSnakjnsakncansJknaskjcnJasnckasnkcSakcnkascnakU保存到文件中成功!请按任意键继续.j'Czi1vc+6.0MSDev98MyProjects7Debug7.exe'tf麴£土支文程除统薯删显会1234560*请选择操作序号:(。-4):i8nli-i½删显强1234560请选择操作序号:(。一T):0773续.继数:5总任部字亶按全工文清SJlis三筮支文程i½删显塞1234560数MHH><文程除一 K4统普删显盒请选择操作序号:(。-T):,的字符串:na为:3清按任意键继续一.bdsandasndkasnkbncncSajajkjnsaknc ansJkajajskjcn JasnckasnkcSakcnkascajajk请按任意键继续. . 一 K 'C 软件vc+6.0MSDev98MyPrQjects7Debug7,exe'请选择操作序号:(04请撤递黄搀电麦符:强请输入替换的子符:ajaj*12 3 4 5 6 0r r rUUUU UU iswi 婺XX支文程 统誉删显盒4,请选择操作序号:(。一Y):请降人寥蒯陡的某一字符串:於蒯那M后的文章为三bdsadasndkasnkbncncSaJkjnsakncansJkajskJcnSnCkaSnkCSakcnkascajk请按任意键继续.请选择操作序号:(加一4):现在的文早内谷为:bdsandasndkasnkbncncSajkJnsakncansjkajskjcnSnCkaSnkCSakcnkascaJk请按任意键继续.文件(F)漏塞(E)悟式(。)查看(V)帮助(三)insist墓工主支文程删显毒1234560请选择操作序号:(04)保存到文件中成功!请按任意趣正续.一.MsandasndkasnkbncncSajkjnsakncansjkajskjcnsnckasnkcSakcnkascajk七、源代码:#include<iostream>#include<string.h>#include<stdio.h>#include<conio.h>*文本每行以字符串形式存储,行与行之间以链表存储*/usingnamespacestd;typedefstruct1ine(char+data;structline*next;LINE;*创立一链表,同时向里面愉入文本数据*/输入文字voidCreate(LINE&head)1.INE*p=newLINE;*首先为链表建立一个附加表头结点*/head=p;/*将P付给表头指针*/chartmp1000=0;inttemp=0;printf("ntt*");printfntt*1输入文章*”);printf(*ntt*2读取文章*):printf(*ntt*);Printf("ntt请选择操作的序号:");选择输入方式,1为键盘输入,2为读取文件输入scanf(*%d*,&temp);if(temp=l)键盘输入(fflush(stdin);清空输入缓存Printf("请输入一页文章,以'H为结尾(每行最多输入80字符!):n");whiIe(I)while(l)(gets(tmp);*输入字符串!*/if(strlen(tmp)>80)Printf("每行最多输入80字符,请重新输入!n");elsebreak;)p=p->next=newLINE;p->data=newcharstrIen(tmp)+l;*为结点分配空间?*/strcpy(p->data,Imp);if(tmpstrlen(tmp)-1=t#')/*除去最后一个控制符#*/(p->datastrlen(tmp)-l三*0,:break;)p->next=NULL;/*最后的一个指针为空?*/head=head->next;FILE*fp;键盘输入保存为文件1.INE*q=head;if(fp=fopen(*d:write.txt*,"w+")=NULL)Printf("翻开文件出错!n");system(*pause*);exit(O);)whiIe(q->next!=NULL)fputs(q->data,fp);fputs(*n*,fp);q=q->next;)fputs(q->data,fp);fputs(*n*,fp):fputs(*#*,fp);fclose(fp);Printf("保存到文件中成功!”);system(*pause*);break;)elseif(temp=2)文件读取输入inti,j=0;FILE*fp;读取文件charch;if(fp=fopen(*d:write.txt*,*r*)=NULL)Printf("文件无法翻开,退出程序!n*);system(*pause*):exit(0);)WhiIe(ch=fgetc(fp);tmpj=ch;if(ch=,)break;j+;ch=fgetc(fp):p=p->next=newLINE;p->data=newcharstrlen(tmp)+l;*为结点分配空间?*/strcpy(p->data,tmp);if(lmpIstrlen(Imp)T='#')*除去最后一个控制符#*/p->datastrlen(tmp)-l三,0,;fclose(fp);break;)for(i=0;i<j;i+)tmpi=O;j=0;)p->next=NULL;/*最后的一个指针为空?*/head=head->next;break;)else其他情况处理fflush(stdin);Printf(”请输入1或2!*);)/*统计字母数*/intCountLetter(LINE*&head)1.INE*p=head;intcount=0;dointLen=StrIen(P->data);*计算当前data里的数据元素的个数*/for(inti=0;i<Len:i+)if(p->datai>=>a,½p->datai<三,z,)(p->datai>=,A,Z,)/*计算字母数*/count+;)while(p=p->next)!=NULL);*遍历链表*/returnCoUnt;*返回文章的字母总数*/)/*统计数字数*/intCountNumber(LINE*Ahead)1.INE*=head:intcount=0;do(intLen=Strlen(p->data);/*计算当前data里的数据元素的个数*/for(inti=0;i<Len;i+)if(p->datai>=48&&p->datai<=57)count+;*计算数字数,ASCII码*/)whiIe(p=p->next)!=NULL);/*遍历链表*/returncount;/*统计空格数*/intCountSpace(LINE*&head)(1.INE*p=head;intcount=0;dointLen=Strlen(p->data):*计算当前data里的数据元素的个数*/for(inti=0;i<Len;i+)if(p->datai=32)COUnt+;/*计算空格数,空格ASCn码为32*/)while(p=p->next)!=NULL);/*遍历链表*/returncount;)/*统计文章的总字数*/intCountAll(LINE&head)(1.INE*p=head;/*保存链表的首地址*/intcount=0;do/*计算总字符数*/(count+=strlen(p->data);while(p=p->next)!=NULL);/*遍历链表*/returncount;)/*统计str在文章中出现的次数*/intFindString(LINE*&head,char*str)1.INE*p=head;intcount=0;inth=0;intIenI=0;/*保存当前行的总字符数*/intlen2=strlen(str);/*待统计字符串的长度*/inti,j>k;doIenI=Strlen(P->data);/*当前行的字符数*/for(i=0;i<lenl:i+÷)/*字符匹配*/(if(p->datai=str0)k=0:for(j=0;j<len2;j+)if(p->datai+j=strj)k+;if(k=len2)(count+;i=i+k-l;)while(p=p->next)!=NULL):/*遍历链表*/returncount;I/*删除指定的字符串*/voiddeistringword(char*s,char*str)*s为输入的字符串,*str为将要删除的字符*/char*p=strstr(s,str);/*从字符串S中寻找str第一次出现的位置*/chartmp80;intIen=Strlen(s);inti=len-strlen(p);intj=i+strlen(str);intcount=0;for(intm=0;m<i;m+)tmpcount+=sm;for(intn=j;n<len;n+)tmpcount+=sn;tmpcount三,0,;strcpy(s,tmp):*返回新的字符串*/)voidDelStringdINE*&head,char*str)(1.INE*p=head;do确定所有重复字符,并调用子函数删除do(if(strstr(p->data,str)!=NULL)deistringword(p->data,str);)whi1e(strstr(p->data,str)!=NULL);while(p=p->next)!=NULL);)*向屏幕输出文章*/voidOutPut(LINE*head)1.INE*p=head;doprintf(*%sn*,p->data);while(p=p->next)!=NULL);)voidrepstringword(char*s,char*str,char*strb)*s为输入的字符串,*str为将要被替换的字符,Strb为替换字符*/(char*p=strstr(s,str);/*从字符串S中寻找str第一次出现的位置*/chartmp80:intq=0;intk=strlen(strb);intlen=strlen(s);inti=len-strlen(p);intj=i+strlen(str);intcount=0;for(intm=0;m<i;m+)tmpcount+=sm;for(into=0;o<k;o+)tmpcount+=strbq+;for(intn=j;n<len;n+)tmpcount+=sn;tmpcount=>0,;strcpy(s,tmp);*返回新的字符串*/)voidreplaceString(LINE*fthead,char*str,char*stra)(1.INE*p=head;do确定所有重复字符,并调用子函数替换doif(strstr(p->data,str)!=NULL)repstringword(p->data,str,stra);while(strstr(p->data,str)!=NULL);)while(p=p->next)!=NULL);1intmain()1.INEthead:charc;charstrl20,str220,str380,str480;Create(head);Printf("输入的文章为:n");OutPut(head);printf(*n*);fflush(stdin);while(l)SyStem("cis");printf(*ntt*)printf(*ntt*1统计数据*”)printf(*ntt*2统计字符串*")printf(*ntt*3替换字符串*")printf(*ntt*4删除字符串*")printf(*ntt*5显示文章*)printfntt*6保存文章*")printf(*ntt*O退出程序*);printf("ntt*):printf(*ntt请选择操作序号:(04):n");c=getch();if(c=f)Printf("全部字母数:%dn*,CountLetter(head);Printf("数字个数:%dn*,CountNumber(head);Printf("空格个数:%dn*,CountSpace(head);Printf("文章总字数:%dn*,CountAll(head);system("pause");)elseif(c,2,)(printf(*n*);Primf(”请输入要统计的字符串:”);gets(str1);printf(*%s出现的次数为:%dn",strl,FindString(head,strl);printf(*n*);system("pause");elseif(c=三,3,)(Printf("请输入被替换的字符:");gets(str3);Printf("请输入替换的字符:“);gets(str4);replaceString(head,str3,str4);OutPut(head);system("pause");elseif(c=三,4')(Printf("请输入要删除的某一字符串:”);gets(str2);DelString(head,str2):Prinlf("删除s后的文章为:n”,str2);OutPut(head);system(*pause*);)elseif(c=t5,)Printf("现在的文章内容为:”);OutPut(head);system("pause");)elseif(c=三*6,)FILE*fp;健盘输入保存为文件1.INE*q=head;NULL)if(fp=fopen(*d:write.txt*,"w+")=Printf("翻开文件出错!n:system(*pause*);exit(0);)whiIe(q->next!=NULL)fputs(q->data,fp);fputs(*n*,fp);q=q->next;)fputs(q->data,fp);fputs(z,n*,fp);fputs(*,fp);fclose(fp);Printf("保存到文件中成功!”);system("pause");elseif(c='O')break;)

    注意事项

    本文(文章编辑数据结构设计报告.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开