




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东理工大学计算机学院课 程 设 计(数据结构)班 级计科0901班姓 名许山蒙学 号0911051002 指导教师张先伟二一一年一月二十日课程设计任务书及成绩评定课题名称 文章编辑、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求: 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多
2、不超过80个字符,共n行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章、设计进度及完成情况日 期内 容1.10-1.11选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1.121.14创建相关数据结构,录入源程序。1.17
3、1.19调试程序并记录调试中的问题,初步完成课程设计报告。1.201.21上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(c语言版)清华大学出版社 19992 严蔚敏 数据结构题集(c语言版)清华大学出版社 19993 谭浩强 c语言程序设计 清华大学出版社4 与所用编程环境相配套的c语言或c+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一一 年 一 月 二 十一 日目 录第一章 概述 1第二章 系统分析 2第三章 概要设
4、计 3第四章 详细设计 5第五章 运行与测试 14第六章 总结与心得 18参考文献 19第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我选择
5、的题目是文章编辑。文章编辑主要包括文章进行修改,删除,统计文章字数信息等操作,但是人工的文章编辑操作起来效率相对来说很低,也比较容易出错。但是借助计算机系统来进行文章编辑后,效率可以得到很大提升,也能降低出错率,可以使文章编辑更方便、更高效。第二章 系统分析1 文章编辑的基本功能包括:统计文章中的字数信息;查询某一个词在文章中出现的次数;删除文章中出现的某一个词。要实现上述功能,需要建立基于顺序储存结构的线性表,来存储文章的内容。2 演示程序是以用户与计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言是转化,这一模块是直接写在主程序里面的。3. 程序执行时的命令:本程序为了使用时的方
6、便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选择即可。4. 测试数据:分别对不同功能测试几组不同的数据。具体内容见运行测试。5. 程序流程图:第三章 概要设计本章主要介绍1、数据结构的设计 实验主要采用基于顺序储存结构的线性表,用一维数组表示。2、算法的设计 void count(char str)统计文章全部字母数、数字个数、空格个数、文章字符总数,并输出到屏幕上。 void strcount(char str, char temp) 统计字符串temp在文章中出现的次数。 void strdelete(char str,char temp)删除文章中的字
7、符串temp。 int kmp(int k,char str,char temp)查找模式串在主串中第k个字符后的第一个位置,若模式串不在主串中,返回-1。3、抽象数据类型的 设计 adt article数据对象:d = ai|aielemset,i=1,2,n,n0 数据关系:r1 = |ai-1,aid,i=2,n 基本操作:init( &arti )操作结果:构造一篇空文章input(&arti)初始条件:文章arti已存在操作结果:输入文章continue_input(&arti)初始条件:文章arti已存在操作结果:继续输入文章del(&arti , pos, k)初始条件:文章ar
8、ti已存在操作结果:删除文章中pos位置后的k个字符count(&arti) 初始条件:文章arti已存在操作结果:统计文章全部字母数、数字个数、空格个数、文章字符总数strcount(&arti ,temp)初始条件:文章arti已存在操作结果:统计模式串在主串中出现的次数strdelete(&arti temp,t)初始条件:文章arti已存在操作结果:在主串中删除第t个模式串相应字符,若t为0,则全删除empty(&arti)初始条件:文章arti已存在操作结果:判断文章是否为空lengh(&arti)初始条件:文章arti已存在操作结果:文章长度clear(&arti)初始条件:文章a
9、rti已存在操作结果:清空文章output(&arti)初始条件:文章arti已存在操作结果:输出文章 adt article第四章 详细设计1、 抽象数据类型对应的类定义。class article /文章private:char str1000;public:article()str0=0;void input(); /输入文章void continue_input(); /继续输入文章void del(int pos,int k); /删除文章中pos位置后的k个字符void count();/统计文章全部字母数、数字个数、空格个数、文章字符总数int strcount(char tem
10、p);/统计模式串在主串中出现的次数int strdelete(char temp,int t);/在主串中删除第t个模式串相应字符,若t为0,则全删除bool empty(); /判断文章是否为空int lengh()/文章长度return strlen(str);void clear() /清空文章str0=0;void output() /输出文章printf(%sn,str);article arti;2、 成员函数及其他子函数。/输入新文章void article:input()int i=0;char c;printf(请输入文章,以#结束:n);getchar();while(1
11、)c=getchar();if(c=#)break;stri=c;i+;if(i=0)printf(您没有输入文章!n);elsestri=0;printf(文章输入成功!n);/继续输入文章void article:continue_input()int i,j;char c;i=strlen(str);j=i;if(i=0)printf(提示:原文章为空!请输入文章,以#结束:n);elseprintf(请继续输入文章,以#结束:n);getchar();while(1)c=getchar();if(c=#)break;stri=c;i+;if(i=j)printf(您没有继续输入文章!n
12、);elsestri=0;printf(文章输入成功!n);/删除pos位置之后的k个字符void article:del(int pos,int k)int i;for(i=pos+k-1;stri!=0;i+)stri-k=stri;stri-k=0;/统计文章全部字母数、数字个数、空格个数、文章字符总数void article:count()int letter=0,number=0,blank=0,all=0;int i=0;while(stri!=0)if(isalpha(stri)letter+;else if(isdigit(stri)number+;else if(stri=
13、)blank+;if(stri!=n)all+;i+;printf(文章字符统计信息如下:n);printf(字母个数:%dn,letter);printf(数字个数:%dn,number);printf(空格个数:%dn,blank);printf(字符总数:%dn,all);/取得模式串的next值void get_next(char temp,int next)int i=0,j=-1;int len=strlen(temp);next0=-1;while(i-1|tempi=tempj)j=nextj;i+;j+;if(tempi=tempj)nexti=nextj;elsenexti
14、=j;/kmp算法,返回模式串在主串中第k个字符后的第一个位置,若模式串不在主串中,返回-1int kmp(int k,char str,char temp)int pos=-1;/模式串在主串中的位置int i,j;int len1,len2;/主串与模式串的长度int next81;/kmp算法中模式串的next值len1=strlen(str);len2=strlen(temp);get_next(temp,next);i=k;j=0;while(i-1&stri!=tempj)j=nextj;i+;j+;if(j=len2)pos=i-j+1;break;return pos;/统计模
15、式串在主串中出现的次数int article:strcount(char temp)int num=0,len=strlen(temp);int pos=0;while(1)pos=kmp(pos,str,temp);if(pos=0)num+;elsebreak;return num;/在主串中删除第t个模式串相应字符,若t为0,则全删除int article:strdelete(char temp,int t)int num=0,len=strlen(temp);int pos=0;while(1)pos=kmp(pos,str,temp);if(pos=0)num+;if(t=0)art
16、i.del(pos,len);else if(num=t)arti.del(pos,len);elsebreak;return num;/判断文章是否为空bool article:empty()if(str0=0)return true;elsereturn false;/显示菜单void order()printf(n 菜单n);printf( 1、输入新文章 | 6、统计字符串出现次数n);printf( 2、继续输入文章 | 7、删除字符串n);printf( 3、清空当前文章 | 8、查看菜单n);printf( 4、输出当前文章 | 9、查看学生信息n);printf( 5、统计文章
17、字符信息 | 0、退出nn);/输入模式串void input_temp(char temp,int t)int i=0;char c;if(t=0)printf(请输入要查询的字符串,以#结束:n);elseprintf(请输入要删除的字符串,以#结束:n);getchar();while(1)c=getchar();if(c=#)break;tempi=c;i+;if(i=0)printf(您没有输入字符串!n);elsetempi=0;printf(字符串输入成功!n);3、 主函数。int main()int num;char com81=0;/命令char temp81=0;/模式串
18、printf( -=文章编辑=-nn);order();while(1)printf(n请输入命令编号:);scanf(%s,com);if(strcmp(com,1)=0)arti.input();else if(strcmp(com,2)=0)arti.continue_input();else if(strcmp(com,3)=0)if(arti.empty()printf(您还未输入文章或文章内容已为空,请先输入文章!n);elsearti.clear();printf(文章清除成功!n);else if(strcmp(com,4)=0)if(arti.empty()printf(您还
19、未输入文章或文章内容已为空,请先输入文章!n);elsearti.output();else if(strcmp(com,5)=0)if(arti.empty()printf(您还未输入文章或文章内容已为空,请先输入文章n);elsearti.count();else if(strcmp(com,6)=0)if(arti.empty()printf(您还未输入文章或文章内容已为空,请先输入文章n);elseinput_temp(temp,0);if(strlen(temp)0)printf(该字符串在文章中共出现了%d次!n,arti.strcount(temp);else if(strcmp
20、(com,7)=0)if(arti.empty()printf(您还未输入文章或文章内容已为空,请先输入文章n);elseinput_temp(temp,1);if(strlen(temp)0)num=arti.strcount(temp);if(num=0)printf(该字符串在文章中没有出现!n);else if(num=1)arti.strdelete(temp,0);printf(该字符串在文章中共出现了1次!已成功删除!n);elseint t;printf(该字符串在文章中共出现了%d次!若要删除单一字符串,请输入字符串序号1-%d,若要全部删去,请输入0 : ,num,num)
21、;while(1)scanf(%d,&t);if(tnum)printf(您输入的编号超出范围!请重新输入:);elsearti.strdelete(temp,t);printf(删除成功!n);break;else if(strcmp(com,8)=0)order();else if(strcmp(com,9)=0)printf(n);printf(姓 名:许山蒙n);printf(班 级:计科0901班n);printf(学 号:0911051002n);printf(课 程:数据结构n);printf(指导教师:张先伟nn);else if(strcmp(com,0)=0)printf(n确认退出y/n:? );scanf(%s,com);if (strcmp(com,y)=0)printf(n感谢使用,再见!nn);break;elseprintf(n命令输入错误,请重新输入,或者输入8查看菜单。n);return 0;第五章 运行与测试1、 在调试程序的过程中遇到的问题及解决办法:开始的时候当有异常输入时便无法执行程序。现加入异常处理环节,可以判断输入数据是否合法,这一问题得到解决。2、 测试数据及测试结果:(1)程序开始运行界
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不过退款协议合同范本
- 2025年辽宁货运从业资格证考试技巧和方法
- 化工师徒合同范本
- 出让合同范本
- 买木头合同范本
- 作为甲方合同范本
- 制氢设备销售合同范本
- 农业项目施工合同范本
- 冰糖橙水果合同范本
- 上海别墅合同范本
- 2024-2025年中国锂电池隔膜行业未来发展趋势分析及投资规划建议研究报告
- 软件系统项目实施方案(共3篇)
- 2025年山东药品食品职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年恩施市福牛物业有限公司招聘笔试参考题库含答案解析
- 《滚动轴承-》课件
- 2025年中国CAR-T免疫细胞治疗行业市场发展前景研究报告-智研咨询发布
- 《化妆品包装材料相容性试验评估指南》
- 中华人民共和国保守国家秘密法实施条例
- 《环境影响评价》全套教学课件
- XX小学法治副校长(派出所民警)法制教育课讲稿
- (2024年)肺栓塞的护理课件
评论
0/150
提交评论