字符串处理系统C++课程设计实验报告.docx
《字符串处理系统C++课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《字符串处理系统C++课程设计实验报告.docx(50页珍藏版)》请在沃文网上搜索。
1、目录第一章 概述11.1任务及思路介绍11.2思路流程4第二章 详细设计72.1关于类72.2 关于主函数20第三章 调试及结果243.1调试243.2 运行结果27第四章 结论39第一章 概述1.1任务及思路介绍1.1.1任务介绍分析 1.题目内容字符串处理系统运用面向对象程序设计知识,利用C+语言设计和实现一个字符串处理系统,要求具备如下主要功能:(1) 字符串的输入与输出(2) 求字符串的长度(3) 判断字符串是否为空(4) 将字符串置空(5) 字符串比较(6) 字符串赋值(7) 求指定位置的字符(8) 字符串合并(9) 字符串截取(10) 在指定的字符串中1,查找或替换字符串1.1.2
2、任务分析 1.关于类程序需要体现出C+语言关于类、数据成员与成员函数封装的核心概念,故需定义一个字符串类,需要实现的功能为其的成员函数。而两个字,符串可以作为类的数据成员放入私有部分,仅以成员函数为端口可调用改变。字符串的输入输出为基础,可采用很多方式,cin和cout,但可能需要重载运算符,也可尝试getline或别的方式。字符串长度应该可直接调用函数,但可能不能使用也需要重新编写,但难度不大。至于判断是否为空与比较也需直接调用该段,其他像求指定位置的字符串或查找截取之类的应该也是要通过长度来定位的,都要调用此处。置空字符串可以用直接赋值或清除存储初始化之类的方法,可与字符串赋值一样简单。而
3、合并也一样,用上+就可以了,分下顺序即可。求指定位置的字符串则要分清使用者代表位置的数字与编程者代表位置数字起始不同,只要调用一个函数输出指定位置的字符即可,而截取则是在输出指定位置字符的基础上加一个循环结构。在字符串一中查找或替换字符串二,因为替换必定要查找,所以这个功能应该只需判断是否要替换。此处由于需要同时搜寻并对比两个字符串,所以必须要用到if语句的嵌套以及双for循环,这是一个较难的逻辑结构。2.关于主函数主函数需要一个专门的输出函数来提示功能选项指导选择,可定义一个display函数完成,为使程序清晰方便阅读选择主函数内声明,主函数定义。功能选择自然是能使人自由选择功能顺序,又功能
4、较多,需要用switch语句完成多支选择。但自由选择功能顺序也意味着在选择点完成选择实现完功能后要可以跳回选择点,故而需要一个循环结构来使其不断选择,设置一个判断语句,在输出特定值时可退出循环。3细节考虑程序逻辑结构运用要求比较熟练,所以细节方面必须考虑清楚。功能函数中第十个的双for循环,此处if语句嵌套会很多,且需要安排好报错提醒。第一次判断可为两个字符串的长度,根据要求可知,字符串一的长度必须大于或等于字符串二的长度。此处是放在最开始的判断,接下来是将字符串一中的字符挨个与字符串二的第一个字符对比,看是否相等。需要注意的是,此处查询的变量不必自增到字符串一本身的长度,若无法在字符串一比字
5、符串二多出来的字符的后一位中找到和字符串二第一个字符相等的字符,则可以说是字符串一种不存在字符串二了。此处for语句查找不到字符串二的第一个字符则会结束输出不存在,第二个for语句发生在字符串一中找到字符串二第一个字符,此时将比较对象转为字符串二的第二个字符,而字符串一处变量自增得到此处字符串一的字符与之对比,于是这样完成查找。主函数中,输出函数需要简洁明了便于使用者参看,故格式需考虑,而清屏函数放入的位置也需要考虑,在循环内还是循环外,循环内该怎么考虑结构,使其不会与之前的输出函数冲突矛盾,当然,最好是作为功能项供使用者调用,可作为swtich语句的另一分支选择。1.2思路流程1.2.1模块
6、关系 1.模块关系主函数类 String使用者返回进入功能选择输入结果调用不同函数数据成员str1 str2成员函数10个功能调用结束图1.1 模块关系图 2.结构分析如图1.1 模块关系图可知,程序结构较为封闭,给使用者留下的端口仅仅是刚好使其输入需求,程序内部结构并不外露。使用者根据提示输入功能选项后,程序自动根据选项找到分支,调用类中的指定成员函数,调用类的私有的数据成员,然后返回结果给使用者,使用者继续进行输入,选择功能选项。直到使用者选择退出程序,程序才结束。程序主函数的结构有些像被扎住两端的许多绳子,每一根绳子都有代码可以自动触发另一封装中的功能得到返回值,这么多绳中只有一根是不会
7、触发返回值给使用者,那就是退出项,这一分支会给系统返回零值结束程序运行。1.2.2 流程思路程序开始 1流程图输入功能选项前的数字0退出程序功能十一 清屏 功能十在字符串一中功能二求字符串的长度功能一字符串的输入数据图1.2 流程图 2.流程分析 进入界面后给出功能选项前的数字,通过循环结构进入类的公有成员函数的调用,返回结果后循环回到选择点,继续给出功能选项数字,直到给出0值才跳出循环。这是程序运行的基本过程,事实上,选择功能后就调用了类的公有成员函数对类的私有数据成员进行了操作,最开始是赋值,然后是对其的各种计算,计算只需使用数据并不发生改变。但成员函数除了输入输出那一功能外也有置空和赋值
8、具备这种功能可改变私有数据成员的函数,所以使用者输入的功能选项前的数字也就相当于一种对数据成员的间接操作。第二章 详细设计2.1关于类2.1.1私有成员数据关于类的私有成员数据,可以访问类中的私有成员数据的有:1、类体的成员函数2、类体的成员函数中的形参中的该类的对象、对象引用或者对象指针,以及函数体中定义的局部对象、对象引用或者对象指针。3、类的友元函数中的形参中的该类的对象、对象引用或者对象指针,以及函数体中定义的局部对象、对象引用或者对象指针。4、类的友元类的成员函数中形参中的该类的对象、对象引用或者对象指针,以及函数体中定义的局部对象、对象引用或者对象指针。本程序的私有成员数据为两个字
9、符串,str1,str2,初始为空。2.1.2公有成员函数 1.声明 本程序的公有成员函数较多,分别对应实现一个系统功能,且相互之间有所联系,本可在函数体中直接互相调用,但考虑到逻辑关系及运行时间,只是采取直接复制函数体。类中关于公有成员函数声明的代码如下:public: /公有部分int fun1();int fun2();int fun3();int fun4(); int fun5();int fun6();int fun7();int fun8();int fun9();int fun10(); /十个成员函数的声明 2.fun1函数介绍功能为字符串的输入与输出,代码如下:int St
10、ring:fun1() /类外定义fun1函数cout输入两个字符串:str1str2; /输入两个字符串cout字符串1为:str1endl; /输出显示所赋值cout字符串2为:str2endl;return 0; /返回0值 3.fun2函数介绍该函数功能为求字符串长度,代码如下:int String:fun2() /类外定义fun2函数int m,n; /定义两个整形变量分别储存两个字符串的长度m=str1.size(); /调用函数将字符串一的长度赋给mn=str2.size(); /调用函数将字符串二的长度赋给ncout字符串1的长度为:mendl; /输出字符串一的长度cout字
11、符串2的长度为:nendl; /输出字符串二的长度return 0; /返回0值 4.fun3函数介绍该函数的功能为判断字符串是否为空,代码如下:int String:fun3() /类外定义fun3函数int m,n; /定义两个整形变量分别储存两个字符串的长度m=str1.size(); /调用函数将字符串一的长度赋给mn=str2.size(); /调用函数将字符串的长度赋给nif(m=0) cout字符串1为空!endl; /用if语句判断是否为空else cout字符串1不为空。endl; /用if语句判断是否为空if(n=0) cout字符串2为空!endl; /用if语句判断是否
12、为空else cout字符串2不为空。endl; /用if语句判断是否为空return 0; /返回0值 5.fun4函数介绍该函数功能为置空字符串,代码如下:int String:fun4() /类外定义fun4函数cout置空字符串1则输入1,置空字符串2则输入2。a; /输入aif(a=1) str1=; /用if语句根据选择赋空值给字符串else str2=;cout字符串1现为:endl; /输出字符串一的现值coutstr1endl;cout字符串2现为:endl; /输出字符串二的现值coutstr2str2) cout字符串1大于字符串2。endl; /用if语句直接比较然后输
13、出结果else if(str1str2) cout字符串1小于字符串2。endl;else cout字符串1等于字符串2。endl;return 0; /返回0值 7.fun6函数介绍该函数功能为给指定字符串重新赋值,代码如下:int String:fun6() /类外定义fun6函数cout给字符串1赋值则输入1,给字符串2赋值则输入2。a; /输入acout输入值:str3; /输入新的字符串if(a=1) str1=str3; /用if语句根据输入选择将新的字符串赋给1或2else str2=str3;cout字符串1的值现为:endl; /输出字符串现值coutstr1endl;cou
14、t字符串2的值现为:endl;coutstr2endl;return 0; /返回0值 8.fun7函数介绍该函数功能为求字符串指定位置字符,代码为:int String:fun7() /类外定义fun7函数char p; /定义一个字符型变量int a,m,n; /定义三个整型变量m=str1.size(); /调用函数将字符串一的长度赋给mn=str2.size(); /调用函数将字符串二的长度赋给ncout输入相应数字1、2选择字符串1或2进行地位字符查询:a; /输入aif(a=1) /用if语句判断选择后查询字符串1int i; /定义一个整型变量icout选择查询第几位:i; /输
15、入i if(i=m-1) /用if语句判断是否超出范围p=str1i-1; /将查询处的字符赋值给pcout此处字符为:pendl; /输出p else cout超出范围!endl; /报错提示if(a=2) /此处if语句与查询字符串一的是相同的int r;cout选择查询第几位:r; if(r=n-1)p=str2r-1;cout此处字符为:pendl;else cout超出范围!endl;return 0; /返回0值 9.fun8函数介绍该函数功能为合并两个字符串,代码为:int String:fun8() /类外定义fun8函数string str3,str4; /定义两个字符串变量
16、str3=str1+str2; /将字符串一字符串二按顺序连接赋给str3str4=str2+str1; /将字符串二字符串一按顺序连接赋给str4int a; /定义一个整型变量acout输入1、2选择字符串1或2的合并顺序:a; /输入aif(a=1) /用if语句判断选择输出哪个顺序连接的字符串 cout合并字符串的值为:endl;coutstr3endl;elsecout合并字符串的值为:endl;coutstr4endl;return 0; /返回0值 10.fun9函数介绍该函数功能为截取指定字符串,代码如下:int String:fun9() /类外定义fun9函数cout输入1
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 处理 系统 C+ 课程设计 实验 报告
