还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计(论文)题目文章编辑院(系)专业班级姓名学号指导教师2013年9月20日西安建筑科技大学华清学院课程设计(论文)任务书专业班级计算机2011学生姓名指导教师(签名)
一、课程设计(论文)题目文章编辑
二、本次课程设计(论文)应达到的目的数据结构是实践性很强的课程课程设计是加强学生实践能力的一个强有力手段课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用目的熟练字符串表在链式存储结构上的实现提示用双向链表实现
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)静态存储一页文章,每行最多不超过80个字符,共N行可以输入大写、小写的英文字母、任何数字及标点符号输入数据大写、小写的英文字母、任何数字及标点符号(每行字数=80);⒈分别统计出其中英文字母数和空格数及整篇文章总字数;⒉统计某一字符串在文章中出现的次数,并输出该次数;⒊删除某一子串,并将后面的字符前移;⒋分行输出用户输入的各行字符;⒌分4行输出全部字母数、数字个数、空格个数、文章总字数; ⒍输出删除某一字符串后的文章
四、应收集的资料及主要参考文献由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上机练习了“线性表”的基本操作参考文献
1.本年级使用的教材:数决结构与算法分析C++版电子工业出版社
2005.7CliffordA.Shaffer编著
2.数据结构与算法科学出版社
2005.08赵文静祁飞等编著
3.数据结构-C++语言描述,西安交通大学出版社,
1999.01,赵文静编著
4.VC++深入详解电子工业出版社
2007.7孙鑫于安萍编著
5.C++程序设计清华大学出版社
2005.8COHOONDAVIDSON编著
五、审核批准意见教研室主任(签字)设计总说明本次课程设计是利用我们数据结构这门课程中所学习的线性表及与其相关的一些知识所完成的通过使用双向链表来实现文章编辑的各项功能文章编辑需要统计文章中的所有文字信息,需要分行显示,涉及到很多方面的知识,要使用链表来存储文章文章编辑程序的主要功能是统计文章中的全部字母数、数字个数、空格个数和文章总字数,并且能准确的查找、删除字符串主要应用的函数和语句有循环,查找,删除等由程序开始运行后进行字符串的录入,之后进行字符的输出,然后是利用循环和查找,进行字符的统计并输出已经找到的字符(包括字母、数字、空格)出现的次数以及总共的字符数在这些运行完之后,根据要求还有一项功能--删除,对指定的字符进行删除,同样,这里也需应用到循环,查找和删除关键字C,链表,遍历,函数,指针目录TOC\o1-3\h\z\u
1.设计目的
12.问题描述
23.需求分析
23.1数据需求
23.2基本功能需求
23.3非功能性需求
34.概要设计
34.1数据结构
34.2系统包含的函数
44.3函数间的关系
64.4系统功能模块图
65.详细设计
75.1结构体的详细定义
75.2系统函数详细介绍
75.3系统功能模块介绍
85.4具体模块设计
86.调试分析
107.使用说明
127.1输入一段文字
127.2统计文章中各字符串个数
127.3删除某一字符串
138.设计总结
139.参考文献14《数据结构》课程设计-文章编辑
1.设计目的“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题课程设计是加强学生实践能力的一个强有力手段课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用
2.问题描述文章编辑用于输入一段文字,并统计这段文章中字母、数字、空格、某一字符串的个数以及文章的总字数,查找文章的某一特定字符串、删除某一特定字符串并输出删除这一特定字符串后的文章
3.需求分析
3.1数据需求输入大写、小写的英文字母、任何数字及标点符号
3.2基本功能需求此系统主要实现了以下功能静态存储一页文章,每行最多不超过80个字符,共N行可以输入大写、小写的英文字母、任何数字及标点符号要求
1、分别统计出其中英文字母数和空格数及整篇文章总字数;
2、统计某一字符串在文章中出现的次数,并输出该次数;
3、删除某一子串,并将后面的字符前移;存储结构使用线性表,分别用几个子函数实现相应的功能输入数据的形式和范围可以输入大写、小写的英文字母、任何数字及标点符号输出形式
1、分行输出用户输入的各行字符;
2、分4行输出全部字母数、数字个数、空格个数、文章总字数;
3、输出删除某一字符串后的文章在编辑过程中,遇到的问题有对字符的统计过程中需要用ASCII码,在自已开始直接用的是字母或者数字不知道怎么结束文章输入操作,最后在查找ASCII码时发现可以用ASCII码中的end控制符结束文章的输入
3.3非功能性需求用户界面需求简洁、易用、易懂、友好的用户界面硬件要求装有VisualC++
6.0的计算机可靠性需求保证用户在正常使用本系统时,用户的操作或误操作不会产生数据的丢失
4.概要设计
4.1数据结构由程序开始运行后进行字符串的录入,之后进行字符的输出,然后是利用循环和查找,进行字符的统计并输出已经找到的字符(包括字母、数字、空格)出现的次数以及总共的字符数在这些运行完之后,根据要求还有一项功能--删除,对指定的字符进行删除,同样,这里也需应用到循环,查找和删除
4.2系统包含的函数主要函数包括intFindStringLINE*headchar*str/*统计str在文章中出现的次数*/求在一行中Str出现的次数的流程图,如图4-1所示图4-1统计str出现次数流程图
①.查找第一个字符,如果有第一个字符即p-data[i]==str
[0],设计数器k=0
②.查找这个字符后面的字符与要查找的字符串是否匹配即p-data[i+j]==str[j],如果匹配k++
③.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步voiddelstringwordchar*schar*str/*删除字符串*s中的字符串*str*/图4-2删除某一特定字符串实现思想
①.从字符串s中寻找str第一次出现的位置*p=strstrsstr;
②.len=strlens;i=len-strlenp即前i项恰好不含要删除的字符串,将前i项复制到tmp中
③.j=i+strlenstr即要删除的字符串在i+1和j之间,将j之后的字符串复制到tmp中
④.将tmp赋给串s,返回s
4.3函数间的关系整个程序主要包括统计各个字符串个数函数、删除某特定字符串函数以及主函数,主函数调用实现各功能所用的函数
4.4系统功能模块图图4-1系统功能模块图
5.详细设计
5.1结构体的详细定义定义结构体structline文本采用顺序存储,行与行之间采用链式存储typedefstructline{char*data;structline*next;}LINE;/*创建一链表,同时向里面输入文本数据*/voidCreateLINE*head{printf请输入一页文章,以Ctrl+E^E为结尾每行最多输入80字符!:\n;
5.2系统函数详细介绍
1、统计字母数intCountLetterLINE*head
2、统计数字数intCountNumberLINE*head
3、统计空格数intCountSpaceLINE*head
4、统计文章的总字数intCountAllLINE*head
5、统计str在文章中出现的次数intFindStringLINE*headchar*str
6、删除指定的字符串voiddelstringwordchar*schar*str
7、向屏幕输出文章voidOutPutLINE*head
5.3系统功能模块介绍图5-4主程序设计流程图
5.4具体模块设计
(1)统计字符个数算法流程图图5-1统计字符个数算法流程图2查找某一字符串出现的次数算法流程图图5-2查找某一字符串出现的次数算法流程图3删除某一字符串算法流程图图5-3删除某一字符串算法流程图
6.调试分析本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行调试前须做好准备工作1需要安装VisualC++
6.0的计算机一台;配置好之后,在VisualC++
6.0环境下进行软件的调试2测试数据输入文字并统计这段文字中各字符串的个数在“输入文字”模块中,根据提示输入一段文字,按提示的方式确定后将会输出这段文章中的全部字母数、数字个数、空格字数以及文章总字数例如输入文字“Onlyifweholdontoourdreamcanweturnitintoreality!只有坚持自己的梦想,我们才能梦想成真!”程序将会输出全部字母数46数字个数0空格个数12文章总字数9统计某一特定字符串的个数在输入的文章中统计出某一特定字符串的个数例如统计“Onlyifweholdontoourdreamcanweturnitintoreality!只有坚持自己的梦想,我们才能梦想成真!”这段文字中“i”出现的次数,结果为i出现的次数为4删除某一字符串在输入的文章中删除某一特定字符串;例如删除“Onlyifweholdontoourdreamcanweturnitintoreality!只有坚持自己的梦想,我们才能梦想成真!”这段文字中“自己”这两个字,输出为Onlyifweholdontoourdreamcanweturnitintoreality!只有坚持的梦想,我们才能梦想成真!3算法改进设计本程序的文章为用户输入的文章,只能做即时输入的统计、编辑,而不能对已有的磁盘文件中的文章进行统计、编辑,如果引入文件流类,就可以打开磁盘文件,对其进行统计、编辑并保存,这是有待改进的
7.使用说明
7.1输入一段文字按提示输入以下一段文字“Onlyifweholdonourdreamcanweturnitintoreality!只有坚持自己的理想,我们才能梦想成真!”输出如图7-1所示图7-1输入文章信息
7.2统计文章中各字符串个数图7-2统计特定字符串
7.3删除某一字符串图7-3删除特定字符串
8.设计总结回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这两个多星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力在设计的过程中遇到的问题颇多,可以说是困难重重例如,设计之初就遇到一个问题输入文章时,计算机怎样识别文章是否结束?输出文章时,怎样处理表示结束的字符?后来通过查阅资料,询问同学,最终找到了解决方法输入文章时,以Ctrl+E^E为结尾,当tmp
[0]==5时,发现输入^E,则退出输入输出时文章时,如果tmp[strlentmp-1]==5即发现表示结束的字符^E,用p-data[strlentmp-1]=\0除去最后一个控制符^E毕竟还是纸上谈兵多于实际操作的学生,难免会遇到过各种各样的问题,同时我也在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固……通过这次课程设计,一定要把以前所学过的知识重新温习同时,在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明!最后,衷心地感谢老师和老师的悉心指导以及同学们的热情帮助!
9.参考文献
[1]耿国华等编著,数决结构—C语言描述第二版,西安电子科技大学出版社,
2008.7
[2]赵文静祁飞等编著,数据结构与算法,科学出版社,
2005.08
[3]赵文静编著,数据结构-C++语言描述,西安交通大学出版社,
1999.01
[4]孙鑫于安萍编著,VC++深入详解,电子工业出版社,
2007.7
[5]COHOONDAVIDSON编著,C++程序设计,清华大学出版社,
2005.8开始始count=0;h=0;len1=0;len2=strlenstr;p-data[i]==str
[0]i++k=0;j=0;p-data[i+j]==str[j]k++;j++;k=len2count++;i=i+k-1;结束YNYNNYstrpijsform=0;mi;m++tmp[count++]=s[m];forn=j;nlen;n++tmp[count++]=s[n];tmp开始菜单输入文章浏览文章统计信息统计字符串删除字符串退出i=0n=0iNi=Nj=0len=strlenwz[i]jlenj=lenifwz[i][j]=n1wz[i][j]=n2n++j++i++returnn算法结束i=0n=0iNi=Nc=strstrwz[i]sc!=0c=0c=strstrc+lenssn++i++returnn算法结束i++i=0n=0iNi=Nc=strstrwz[i]sc!=0c=0leni=strlenwz[i];lenc=strlenc;p=leni-lencreturnn算法结束fork=1;k=lens;k++{forj=p;j=leni;j++wz[i][j]=wz[i][j+1];leni=strlenwz[i]wz[i][j-1]=\0;leni=strlenwz[i];}c=strstrwz[i]s;。