文章编辑课程设计

上传人:m**** 文档编号:223777532 上传时间:2023-07-21 格式:DOCX 页数:14 大小:151.51KB
返回 下载 相关 举报
文章编辑课程设计_第1页
第1页 / 共14页
文章编辑课程设计_第2页
第2页 / 共14页
文章编辑课程设计_第3页
第3页 / 共14页
点击查看更多>>
资源描述
课程设计题 目文章编辑课 程名:算法与程序设计综合课程设计系(部):数学与计算机科学系专 业:计算机科学与技术学生姓名:学 号:指导教师:黄孝 职称(学位):完成时间:2014年 7 月 11 日一、概述1、任务描述: 输入一页文字,分别统计出其中英文字母数和空格数及整篇文章总字数;统计某一字符串 在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。2、主要功能:本程序完成的主要功能:(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。3、设计平台运行环境:pc机、windows7开发工具和编程语言:visual C+ 6.0 c/c+二、系统设计1、需求分析核心问题:字符串的匹配数据模型:(逻辑结构)每行文字用线性表存储,行用链式存储存储结构:顺序存储、链式存储核心算法:线性表的创建、线性表的查找算法以及字符串匹配算法输入数据:一段文字(英文字母),ACSII格式,以Ctrl+E结束输出数据:总字母数、空格数,文章总字数2、概要设计1)定义结构体st rue t line,文本行采用顺序存储,行与行之间采用链式存储2) 主要函数:int FindString(LINE * &head,char *str) /统计 str 在文章中出现 的次数*/3、算法思想本程序是对输入的文字进行操作,故使用静态的字符数组作为存储结构。对于文本的输入,采用头插法将文本信息存储到链表已经申请好的存储空间中; 对于文本内容的统计,使用循环对已经存储的文章进行匹配,字母数,空格数直接 通过条件比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已经存储 的文章进行匹配,判断需要查找的字符串是否与文章某部分内容相同,如果存在相 同的记录相同的个数。删除部分先使用程序的查找功能对文章中需要删除的字符串进行查找,然后对其进行删除。三、详细设计1、算法设计(1)字符串匹配算法 .查找第一个字符,如果有第一个字符即p-datai=strO,设计数器k=0 .查找这个字符后面的字符与要查找的字符串是否匹配即p-datai+j=strj,如 果匹配 k+ 重复第二步,如果k=len2,则查找到,count+;如果没查找到,重新进行第一 步(2)删除指定字符串: 从字符串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,返回s2、算法实现(1)字符串匹配及统计/*统计str在文章中出现的次数*/ int FindString(LINE * &head,char *str) 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;idatai=str0)k=0;for(j=0;jdatai+j=strj) k+; if(k=len2) count+;i=i+k-1;while(p=p-next)!=NULL);/*遍历 链表*/return count;(2)删除指定字符串算法 /*删除指定的字符串*/ 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=0;mi;m+)tmpcount+=sm;for(int n=j;ndata,str)!=NULL)delstringword(p-data,str);while(p=p-next)!=NULL);/*遍历 链表*/四、测试方案及结果1、测试方案 输入文章:123456789 Ctrl+E 预测结果:输入的文章为: 123456789全部字母数:0空格字数:0文章总字数:9 请输入要统计的字符串:11 出现的次数为:1请输入要删除的某一字符串:12删除 12 后的文章为: 3456789 输入文章:Be a yardstick of quality,some people areiftused to an environment where excellence is expected. Ctrl+E预测结果:每行最多输入80字符 输入文章: There is no shortcut to excellence.You will have to make the commitment to make excellence your priority.Use your talents,abilities,and skills in the best way possibleand get ahead of others by giving that little extra. Ctrl+E 预测结果:输入的文章为:There is no shortcut to excellence.You will have to make the commitment to make excellence your priority.Use your talents,abilities,and skills in the best way possibleand get ahead of others by giving that little extra.全部字母数: 181空格个数: 33文章总字数: 219请输入要统计的字符串: yourYour出现的次数为:2请输入要删除的某一字符串: There删除 There 后的文章为:is no shortcut to excellence.You will have to make the commitment to make excellence your priority.Use your talents,abilities,and skills in the best way possibleand get ahead of others by giving that little extra.2、结果及分析测试数据及结果 :- *C: Progra FilesBicrosoft Visual StudioByPro ject sdsf Debugdsf. exe贋输入一I文章,以CtE+ESE为结尾 datastrlen(tmp)-l=O除去最后一个控制符人E。2) 算法改进:本程序的文章为用户输入的文章,只能做即时输入的统计、编辑,而不能对已有的 磁盘文件中的文章进行统计、编辑,如果引入文件流类,就可以打开磁盘文件,对其进 行统计、编辑并保存,这是有待改进的。五、结论及体会此次课程设计使我们对数据结构方面的知识有了更加深入的了解,也使我们认识到 自己在学习编程方面还有很多的不足。今后我们要多读一些编程方面的书籍,不能只拘 泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际 动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。同时通过这次小组合作的方式完成课程设计,让我们懂得了合作的重要性。每一个 人都是一个团队的一份子,我们要凡事以团队为主,遇到事情要大家一起想办法,只要 大家团结一心,没有什么事情是解决不了的。六、任务分配及贡献度七、指导教师语言及成绩附录:程序源代码#include #include #include /*文本每行以字符串形式存储,行与行之间以链表存储*/using namespace std;typedef struct line char *data; struct line *next;LINE;/*创建一链表,同时向里面输入文本数据*/void Create(LINE * &head)printf (请输入一页文章,以Ctrl+E(AE)为结尾(每行最多输入80字符!):n);LINE *p=new LINE;/*首先为链表 建立一个附加表头结点*/head=p;/*将p付给 表头指针*/char tmp100;while(1) gets(tmp);/*输入字符串!*/if(strlen(tmp)80)printf(”每行最多输入80字符”);break;if(tmp0=5)break;/*如果发现输入AE,则退出输入*/p=p-next=new LINE;p-data=new charstrlen(tmp)+1;/*为结点分配空间 */strcpy(p-data,tmp);if(tmpstrlen(tmp)-1=5)/*除去最后一个控制符 AE */p-datastrlen(tmp)-1=0;break;p-next=NULL;/*最后的一个指针为空 */head=head-next;/*统计字母数*/int CountLetter(LINE * &head)LINE *p=head;int count=0;do int Len=strlen(p-data); /*计算当前 data 里的数据元素的个数*/ for(int i=0;idatai=a&p-dataidatai=A&p-datainext)!=NULL);/*遍历 链表*/return count;/*返回文章的字母总数*/ /*统计数字数*/int CountNumber(LINE * &head)/LINE *p=head;/int count=0;/do/int Len=strlen(p-data); /*计算当前 data 里的数据元素的个数*/for(int i=0;idatai=48 & p-datainext)!=NULL);/*遍历 链表*/return count;/ /*统计空格数*/int CountSpace(LINE * &head)LINE *p=head;int count=0;doint Len=strlen(p-data); /*计算当前 data 里的数据元素的个数*/ for(int i=0;idatai=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 *str) 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;idatai=str0) k=0;for(j=0;jdatai+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=0;mi;m+)tmpcount+=sm;for(int n=j;ndata,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,strl,FindString(head,strl); printf(n);printf(请输入要删除的某一字符串:); scanf(%s,str2);DelString(head,str2);printf(删除s后的文章为:n,str2); OutPut(head);
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


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

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


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