数据结构课程设计—文章编辑设计报告

上传人:jin****ng 文档编号:182299030 上传时间:2023-01-22 格式:DOCX 页数:9 大小:112.58KB
返回 下载 相关 举报
数据结构课程设计—文章编辑设计报告_第1页
第1页 / 共9页
数据结构课程设计—文章编辑设计报告_第2页
第2页 / 共9页
数据结构课程设计—文章编辑设计报告_第3页
第3页 / 共9页
点击查看更多>>
资源描述
文章编辑一、需求分析功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统 计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后 面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、 数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章;二、概要设计1、定义结构体st rue t line,文本行采用顺序存储,行与行之间采用链式存储2、主要函数:int FindString(LINE * &head,char *str) /*统计 str 在文章中出现的次数*/求在一行中Str出现的次数的流程图: .查找第一个字符,如果有第一个字符即p-datai=strO,设计数器k=0 .查找这个字符后面的字符与要查找的字符串是否匹配即p-datai+j=strj, 如果匹配k+ 重复第二步,如果k=len2,则查找到,count+;如果没查找到,重新进行 第一步 void delstringword(char *s,char *str) /*删除字符串*s 中的字符串*str*/tmpp实现思想: 从字符串s中寻找str第一次出现的位置*p=strstr(s,str); .len二strlen(s);i=len-strlen(p)即前i项恰好不含要删除的字符串,将前i 项复制到tmp中 .j=i+strlen(str)即要删除的字符串在i+1和j之间,将j之后的字符串复 制到tmp中 .将tmp赋给串s,返回s三、详细设计:#includeiostream.h#include #include /文本每行以字符串形式存储,行与行之间以链表存储*/typedef struct linechar *data;struct line *next;LINE;/创建一链表,同时向里面输入文本数据*/void Create(LINE * &head)printf (请输入一页文章,以 Ctrl+E(AE)为结尾(每行最多输入80字 符!):n);LINE *p=new LINE;首先为链表 建立一个附加表头结点*/head=p;将p/f付给 表头指针*/char tmp100;while(1)gets(tmp);输入字符串! */if(strlen(tmp)80)printfj每行最多输入80字符”); break;if(tmp0=5)break;如果发现输入E,则退出输入*/p=p-next=new LINE;p-data=new charstrlen(tmp)+1;为结点分配空间 */strcpy(p-data,tmp);if(tmpstrlen(tmp)-1=5)涂去最后一个控制符E */ p-datastrlen(tmp)-1=0; break;p-next=NULL;最后的一个指针为空*/head=head-next;/*统计字母数*/int CountLetter(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data); /计算当前data里的数据元素的个数*/ for(int i=0;iLen;i+)if(p-datai=a&p-datai=z)|(p-datai=A&p-da tai=Z)计算字母数*/count+; while(p=p-next)!=NULL);遍历 链表*/return count;返回文章的字母总数*/*统计数字数*/int CountNumber(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data); /计算当前data里的数据元素的个数*/ for(int i=0;iLen;i+)if(p-datai=48 & p-datai=57)count+;/*计算数字数,ASCII码*/ while(p=p-next)!=NULL);遍历* 链表*/return count;/*统计空格数*/int CountSpace(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data); /计算当前data里的数据元素的个数*/ for(int i=0;iLen;i+)if(p-datai=32)count+; /计算空格数,空格 ASCII 码为 32*/ while(p=p-next)!=NULL);/遍历 链表*/return count;/*统计文章的总字数*/int CountAll(LINE * &head)LINE *p=head;int count=0;docount+=strlen(p-data);while(p=p-next)!=NULL); return count;/*统计str在文章中出现的次数*/int FindString(LINE * &head,char LINE *p=head;int count=0;int h=0;int len1=0;int len2=strlen(str);int i,j,k;dolen1=strlen(p-data); for(i=0;ilen1;i+)if(p-datai=strO)*str)保存链表的首地址*/计算总字符数*/遍肪链表* /保存当前彳丁的总字符数*/ 待统计字符串的长度*/当前行的字符数*/字符匹配*/k=0;for(j=0;jlen2;j+) if(p-datai+j=strj) k+;if(k=len2) count+;i=i+k-1;while(p=p-next)!=NULL);遍历*链表*/return count;/*删除指定的字符串*/void delstringword(char *s,char *str)/* *s为输入的字符串,*str为将要删除的字符*/char *p=strstr(s,str);/从字符串s中寻找str第一次出现的位置*/char tmp80;int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=O;mi;m+)tmpcount+=sm;for(int n=j;nlen;n+)tmpcount+=sn; tmpcount=0;strcpy(s,tmp);返回新的字符串*/void DelString(LINE * &head,char *str)LINE *p=head;do if(strstr(p-data,str)!=NULL)delstringword(p-data,str);while(p=p-next)!=NULL);遍历* 链表*/*向屏幕输出文章*/void OutPut(LINE * &head)LINE *p=head;doprintf(”sn,p-data);while(p=p-next)!=NULL);遍历*链表*/void main()LINE *head;Create(head);printf(输入的文章为:n);OutPut(head);printf(n);printf(全部字母数:%d n,CountLetter(head);printf(数字个数:%d n,CountNumber(head);printf(空格个数:%d n,CountSpace(head);printf(文章总字数:%d n,CountAll(head);char str120,str220; printf(n);printf (-请输入要统计的字符串:);scanf(%s,str1);printf(%s 出现的次数为:%d n,str1,FindString(head,str1); printf(n);printf (”请输入要删除的某一字符串:”);scanf(%s,str2);DelString(head,str2);printf (”删除s后的文章为:n,str2); OutPut(head);四、调试分析:1测试数据及结果青喻入一页文草,以CtrESE乘吉.尾 datastrlen(tmp)-1=0除去最后一个控制符人E。3. 算法改进:本程序的文章为用户输入的文章,只能做即时输入的统计、编辑,而不能对 已有的磁盘文件中的文章进行统计、编辑,如果引入文件流类,就可以打开磁盘 文件,对其进行统计、编辑并保存,这是有待改进的。五、总结此次课程设计使我对数据结构方面的知识有了更加深入的了解,也使我认识 到自己在学习编程方面还有很多的不足。今后我要多读一些编程方面的书籍,不 能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提 高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 机械电气


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!