083411127李蕊岗.docx
《083411127李蕊岗.docx》由会员分享,可在线阅读,更多相关《083411127李蕊岗.docx(18页珍藏版)》请在冰豆网上搜索。
![083411127李蕊岗.docx](https://file1.bdocx.com/fileroot1/2023-1/12/34673c2e-88d0-4cdf-b22f-f5a5ffb8ea63/34673c2e-88d0-4cdf-b22f-f5a5ffb8ea631.gif)
083411127李蕊岗
河南城建学院
《面向对象程序设计》课程设计报告书
设计题目:
字符串测试系统
目录
第1章选题1
1.1题目背景1
1.2系统实现的具体分工1
1.2.1标题1
1.3开发环境1
第2章设计内容2
2.1实现功能2
2.2概要设计(涉及类的框图)2
2.3界面设计2
第3章系统实现4
3.1涉及知识点4
3.2系统运行(主要运行界面抓图)4
3.3源程序清单(关键代码)8
第4章结束语17
第1章选题
1.1题目背景
随着人们生活水平的提高,计算机发展异常迅速。
如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。
通过计算机对各类信息的管理已经成为一种高效、快捷的方式。
本课程设计就是要求完成一个字符串类的设计,使所设计出的字符串类有包括加法、复制、查找、交换等7大功能。
1.2系统实现的具体分工
系统仅设string类以及各种调用函数,其功能是通过设置string的成员函数,然后通过函数调用来实现,用户在选择编号来实现对应的功能,main()函数实现对程序主界面的引导。
我是此次字符串测试系统课程设计的组长,因此我根据他们的特长进行了分工,其中刘强主要设计前两个功能,杨刚主要负责字符串查找与字符串交换,王金涛负责子串的求取与课程设计报告书的设计,而我主要负责字符串的比较与字符串长度两个功能的实现以及主函数的构建,我们的设计突出在函数调用方面,因此在一周的设计时间内我们主要进行函数调用的复习。
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
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<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<if(yorn=='y'||yorn=='Y')flag=1;
else
if(yorn=='n'||yorn=='N'){flag=0;cout<<"请再次输入功能序号\n";}
else
{flag=0;cout<<"输入有误,请重新输入"<}
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:
"<cin>>s1;
cout<<"请输入另一串字符串字符串2:
"<cin>>s2;
char*p1=s1;
char*p2=s2;
cout<<"输出两个字符串大小的比较结果:
"<for(;*p1!
='\0'||*p2!
='\0';++p1,++p2){
if((*p1-*p2)<0){
cout<<"字符串1小于字符串2"<break;}
elseif((*p1-*p2)>0){
cout<<"字符串1大于于字符串2"<break;}
}
if(*p1=='\0'&&*p2=='\0')
cout<<"两个字符串大小相等!
"<}
intstring:
:
find(chars)//字符串查找
{intk=length();
for(inti=0;iif(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{str[k]=s[i];
k++;
}
str[k]='\0';
}//功能列表
voidmenu()
{cout<<"\n*************欢迎使用四人组字符串测试系统***********\n";
cout<<"下面是功能选择菜单"<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<<"请你输入测试相应功能的序号:
"<}
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<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<<"你所查字符下标为:
"<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="<cout<<"s2="<tishi();
}
voidcs5()//测试功能5:
求子串
{strings;
intn1,n2;
chars1[N];
cout<<"你选择测试的功能是求子串\n";
cout<<"请输入母串并以回车结束:
\n";
cin>>s1;
cout<<"请输入子串的始位置:
\n";
cin>>n1;
cout<<"请输入子串的末位置:
\n";
cin>>n2;
cout<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"<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<<"你输入的功能序号有误,请重新输入!
!
"<}
}
intmain()
{charn1;
menu();
while
(1)
{if(flag)
{cout<<"谢谢你的使用!
欢迎再次使用呦!
!
\n";break;}
cin>>n1;
cs(n1);
}
return0;
}
第4章结束语
这次课程设计历经一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,理解实践的能力急需提高。
课程设计是培养学生综合运用所学知识、发现、提出分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生运用所学知识解决实际问题的能力。
这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
刚开始的时候,大家就按照分配好了的任务进行,并且经常聚在一起讨论各个方案的可行性。
在课程设计中只有一个人的知识是远远不够的,必须要结合每个人的知识,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们成功的一项非常重要的保证。
而这次设计也正好锻炼我们这一点,这也是非常宝贵的。
回顾起此次课程设计,至今我仍感慨颇多,起初在选题时,做出决定是非常困难的,若选择简单的题目,很有可能会很早就做完了,那样岂不是浪费了许多宝贵的时间;若选择比较难的题目,感觉自己的能力可能不够,不能完成课程设计,最后,在我们组的商量之下选了字符串测试系统这个课题。
定下了我们的目标。
接着我们都开始做了,我们明确的分工任务,然后每个人都去完成自己的任务,对于不会的,不太清楚的我们都会在一起讨论,研究。
通过本次课程设计,我深刻认识到了“理论联系实际”的这句话的重要性,我不但知道了以前不知道的理论知识,而且也巩固了以前的知识。
最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。
也明白老师为什么要求我们做好这个课程设计的原因。
他是为了教会我们如何运用所学的知识去解决实际的问题,提高我们的动手能力。
在整个设计到按各种功能输出以及调试过程中,我个人感觉调试部分是最难的,我们把运行错误和不能运行的部分一遍遍的修改直到达到预期的效果。
初拿到题目觉得很沮丧,虽然学了这么久的C++语言,但还是觉得它很深奥,对它几乎是一无所知。
如何着手?
在接下来的时间里大家集思广益,在一起认真讨论,不甚理解的问题去查阅一些资料。
然后写代码,运行调试……虽然在这个过程中遇到了很多问题,有时候甚至为某个地方而茶饭不思。
但程序编辑成功后那种激动,问题解决中遇到挑战自己亲自动手,终于解决那种成就感,几个人一起讨论,一起分析,同悲同喜那种患难与共的感觉,都使我们深深地体会到了感到学习的快乐和团结的力量,也让我们真正学习到了一些的知识,使我们感到前途是光明的、充满挑战与趣味的。
信息管理与信息系统专业是一个需要紧密合作的专业,只有在一起合作才能高做出好的程序,但在其中也有一些的问题是我们都不能理解的,有很多是我们上课没有碰到的一些的问题真的是很让人头疼的。
通过这次编程使我们认识到在以后的学习中要多做练习扩展自己的知识面才能更好的适应自己的工作,在其中由最初的沮丧中出来,充满信心地去解决问题。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说return的用法……通过这次课程设计之后,我决定一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在崔老师的辛勤指导下,以及同学们的帮助下,最终迎刃面解。
在此我向崔老师和那些帮助过我的同学们表示最衷心的感谢!
参考文献
[1]郑莉董渊何江舟.C++程序设计教程(第四版).清华大学出版社