




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE21河南城建学院《面向对象程序设计》课程设计报告书设计题目:字符串测试系统指导老师:学号: 姓名:同组人员:时间:年1月11日目录TOC\o"1-3"\h\z第1章选题 11.1题目背景 11.2系统实现的具体分工 11.2.1标题 11.3开发环境 1第2章设计内容 22.1实现功能 22.2概要设计(涉及类的框图) 22.3界面设计 2第3章系统实现 43.1涉及知识点 43.2系统运行(主要运行界面抓图) 43.3源程序清单(关键代码) 8第4章结束语 17第1章选题1.1题目背景随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类信息的管理已经成为一种高效、快捷的方式。本课程设计就是要求完成一个字符串类的设计,使所设计出的字符串类有包括加法、复制、查找、交换等7大功能。1.2系统实现的具体分工系统仅设string类以及各种调用函数,其功能是通过设置string的成员函数,然后通过函数调用来实现,用户在选择编号来实现对应的功能,main()函数实现对程序主界面的引导。此次设计,我主要负责功能中的前两个:1字符串加法2字符串复制。为了实现这两个功能,在网上和图书馆找了各种资料,其中在实现字符串加法时,我主要设置了string的成员函数append然后通过scl()调用append成员函数来实现字符串的家加法,字符串的复制也是通过csl2()来调用string的find成员函数,这也是我们整个程序的宗旨之处,通过这次课程设计,让我有了很大的收获,特别是在函数调用方面。1.2.1标题字符串类的设计1.3开发环境VisualC++6.0机型:方正电脑 处理器名称:Intel(R)Core(TM)2DuoCPUE7200@2.53GHz 硬盘驱动器:WDCWD1600AAJS-22WAAO 系统内存: 金士顿内存2GB 显示卡: NVIDIAGeFORCE9400GT 显示器: 方正科技FG981-W9
第2章设计内容2.1实现功能我们此次做的字符串类课程设计将要完成以下功能:1字符串加法;2.字符串复制;3.字符串查找;4.字符串交换;5.求子串6.字符串长度;7.字符串比较大小。2.2概要设计(涉及类的框图)字符串字符串类的设计字符串加法字符串复制字符串查找求子串字符串比较大小字符串长度字符串交换2.3界面设计界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。结构设计StructureDesign结构设计也称概念设计(ConceptualDesign),是界面设计的骨架。该字符串操作系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1字符串的加法、2字符串的复制、3字符串的查找、4字符串的交换、5求子串、6字符串的比较、7字符串的长度。其中没实现一个功能,都会自动提示使用者是否需要退出系统,如果选择y就会退出系统,若选择n就可以继续使用。交互设计InteractiveDesign交互设计的目的是使产品让用户能简单使用。任何产品功能的实现都是通过人和机器的交互来完成的。该字符串操作系统中包含1)清楚的错误提示,误操作后,系统提供有针对性的提示。例如输入功能选项错误时,系统会给出相应的提示,以指导读者进行正确的操作。2)使用用户的语言,而非技术的语言。3)方便退出。人的因素被作为设计的核心体现出来。视觉设计VisualDesign该管理系统界面清晰明了,在结构设计的基础上,参照目标群体的心理模型和任务达成进行了视觉设计。第3章系统实现3.1涉及知识点类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等3.2系统运行(主要运行界面抓图)主界面1.加法:2.复制:3.查找:4.字符串交换:5.求字符串:6.字符串的长度:7.字符串大小比较:8.退出:3.3源程序清单(关键代码)#include<iostream.h>constintN=200;intn,flag=0;classstring{ private: charstr[N]; public: string(char*p){copy(str,p);} //字符串的构造 string(){}; voidcopy(char*s1,char*s2); voidcopy(char*s); voidstr_set(){cin>>str;} //字符串的输入 voidstr_out(){cout<<str<<endl;} //字符串的输出 voidappend(char*s); voidword_str(char*s,intn1,intn2); voidswap(char*s1,char*s2); intlength();voidStrcmp();intlength(chars[]); intfind(chars); };voidtishi(){ charyorn; cout<<"\n是否退出系统[Y/N]:"; cin>>yorn; cout<<endl; if(yorn=='y'||yorn=='Y')flag=1; else if(yorn=='n'||yorn=='N'){flag=0;cout<<"请再次输入功能序号\n";} else { flag=0; cout<<"输入有误,请重新输入"<<endl; }}intstring::length()//字符串长度{ inti=0; while(str[i++]!='\0'); returni-1; }intstring::length(chars[])//字符串长度{ inti;for(i=0;i<200;i++){if(s[i]=='\0'){returni;}}}voidstring::Strcmp()//比较字符串大小{ chars1[N];//定义长度为200的一维字符数组 chars2[N]; cout<<"你选择测试的功能是比较大小\n"; cout<<"请输入一串字符串字符串1:"<<endl;cin>>s1;cout<<"请输入另一串字符串字符串2:"<<endl;cin>>s2; char*p1=s1; char*p2=s2; cout<<"输出两个字符串大小的比较结果:"<<endl;for(;*p1!='\0'||*p2!='\0';++p1,++p2){if((*p1-*p2)<0){ cout<<"字符串1小于字符串2"<<endl; break;} elseif((*p1-*p2)>0){ cout<<"字符串1大于于字符串2"<<endl; break;} } if(*p1=='\0'&&*p2=='\0') cout<<"两个字符串大小相等!"<<endl;}intstring::find(chars)//字符串查找{intk=length(); for(inti=0;i<k;i++) if(str[i]==s) returni; return-1;}voidstring::swap(char*s1,char*s2)//字符串交换{ copy(str,s1); copy(s1,s2); copy(s2,str);}voidstring::copy(char*s1,char*s2) //字符串复制{ inti=0; while(s2[i]!='\0') { s1[i]=s2[i]; i++; } s1[i]='\0';}voidstring::copy(char*s) //字符串复制~{ inti=0; while(str[i]!='\0') { s[i]=str[i]; i++; } s[i]='\0';}voidstring::append(char*s)//加法{ inti=0,k=length(); while(s[i]!='\0') { str[k]=s[i]; k++;i++; } str[k]='\0';}voidstring::word_str(char*s,intn1,intn2)//求子串{ inti,k=0; for(i=n1-1;i<n2;i++) { str[k]=s[i]; k++; } str[k]='\0';} //功能列表voidmenu(){cout<<"\n*************欢迎使用四人组字符串测试系统***********\n";cout<<"下面是功能选择菜单"<<endl;cout<<"**************************\n";cout<<"1)字符串加法*\n";cout<<"2)字符串复制*\n";cout<<"*3)字符串查找*\n";cout<<"*4)字符串交换*\n";cout<<"*5)求子串*\n";cout<<"*6)字符串的长度*\n";cout<<"*7)字符串比较大小*\n"; cout<<"**************************\n"; cout<<"请你输入测试相应功能的序号:"<<endl; }voidcs1()//测试功能1:加法{ chars1[N]; strings; cout<<"你选择测试的功能是加法\n"; cout<<"请你随意输入一串字符并以回车结束:\n"; s.str_set(); cout<<"请你输入一串你想连接的字符并以回车结束:\n"; cin>>s1; s.append(s1); cout<<"连接后的新字符串为:\n"; s.str_out(); tishi();}voidcs2() //测试功能2:复制{ strings; chars1[N]; cout<<"你选择测试的功能是复制\n"; cout<<"请你随意输入一串字符以回车结束\n"; cout<<"你输入的字符串:\n"; s.str_set(); cout<<"复制的字符串为:\n"; s.copy(s1); cout<<s1<<endl; tishi();}voidcs3() //测试功能3:查找{ strings; chars1[N];chars3; cout<<"你选择测试的功能是查找\n"; cout<<"请输入一串字符并以回车结束:\n"; cin>>s1; s=s1; cout<<"请输入你要查找的字符并以回车结束:\n"; cin>>s3; if(s.find(s3)!=-1) cout<<"你所查字符下标为:"<<s.find(s3)<<endl; elsecout<<"没有找到你要查找的字符!\n"; tishi(); }voidcs4() //测试功能4:交换{ strings; chars1[N],s2[N]; cout<<"你选择测试的功能是交换\n"; cout<<"请输入第一个字符串s1:\n"; cin>>s1; cout<<"请输入第二个字符串s2:\n"; cin>>s2; s.swap(s1,s2); cout<<"交换结果为:\n"; cout<<"s1="<<s1<<endl; cout<<"s2="<<s2<<endl; tishi();}voidcs5() //测试功能5:求子串{ strings; intn1,n2; chars1[N]; cout<<"你选择测试的功能是求子串\n"; cout<<"请输入母串并以回车结束:\n"; cin>>s1; cout<<"请输入子串的始位置:\n"; cin>>n1; cout<<"请输入子串的末位置:\n"; cin>>n2; cout<<endl; s.word_str(s1,n1,n2); cout<<"所取子串为:"; s.str_out();tishi(); }voidcs6(){strings;chars1[N];inta;cout<<"你选择的测试是求字符串的长度:\n";cout<<"请输入一串字符并以回车结束:\n";cin>>s1;a=s.length(s1);cout<<"此字符串的长度为:\n"<<a<<endl;tishi();}voidcs7(){ strings; s.Strcmp(); tishi();}voidcs(char&n1)//开\关{ n=n1-'0'; switch(n) { case1: cs1();break; case2: cs2();break; case3: cs3();break; case4: cs4();break; case5: cs5();break; case6: cs6();break;case7: cs7();break; default:cout<<"你输入的功能序号有误,请重新输入!!"<<endl; }}intmain(){ charn1; menu(); while(1) { if(flag) {cout<<"谢谢你的使用!欢迎再次使用呦!!\n";break;} cin>>n1; cs(n1); } return0;}第4章结束语这次课程设计历经一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,理解实践的能力急需提高。课程设计是培养学生综合运用所学知识、发现、提出分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生运用所学知识解决实际问题的能力。这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。刚开始的时候,大家就按照分配好了的任务进行,并且经常聚在一起讨论各个方案的可行性。在课程设计中只有一个人的知识是远远不够的,必须要结合每个人的知识,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。而这次设计也正好锻炼我们这一点,这也是非常宝贵的。
回顾起此次课程设计,至今我仍感慨颇多,起初在选题时,做出决定是非常困难的,若选择简单的题目,很有可能会很早就做完了,那样岂不是浪费了许多宝贵的时间;若选择比较难的题目,感觉自己的能力可能不够,不能完成课程设计,最后,在我们组的商量之下选了字符串测试系统这个课题。定下了我们的目标。接着我们都开始做了,我们明确的分工任务,然后每个人都去完成自己的任务,对于不会的,不太清楚的我们都会在一起讨论,研究。通过本次课程设计,我深刻认识到了“理论联系实际”的这句话的重要性,我不但知道了以前不知道的理论知识,而且也巩固了以前的知识。最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。也明白老师为什么要求我们做好这个课程设计的原因。他是为了教会我们如何运用所学的知识去解决实际的问题,提高我们的动手能力。在整个设计到按各种功能输出以及调试过程中,我个人感觉调试部分是最
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司工会干部管理制度
- 学校军训安全管理制度
- 在建油库安全管理制度
- 土地报批部门管理制度
- 工程监理资料管理制度
- 单位资料拷贝管理制度
- 公司社保缴费管理制度
- 基地人员日常管理制度
- 利用机器视觉提升嵌入式应用效率试题及答案
- 小学食堂工友管理制度
- 高中化学物质俗名大全
- DB5133T 69-2022 高寒退化草地生态修复技术规范
- 公园景区安全生产
- 中药五味子简介
- 热轧工艺流程
- 马工程管理学自测题
- 可燃及易燃易爆危险品管理制度模版(4篇)
- (完整版)一般现在时-现在进行时-一般过去时练习题及答案
- 2024年10月自考15040习概试题及答案含评分参考
- 2024年心衰治疗指南解读
- TSGD7002-2023-压力管道元件型式试验规则
评论
0/150
提交评论