课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
![课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/21/09f25558-e68a-49cf-aa99-4992d796012a/09f25558-e68a-49cf-aa99-4992d796012a1.gif)
课程设计报告
《字符串类》
程序设计基础课程设计报告
专业:
电子信息工程
班级:
2007级1班
学号:
2006081936
姓名:
指导教师:
二OO八年七月二日
目录
1课程设计目的2
2课程设计题目描述和要求2
2.1课程题目2
2.2课程要求2
2.3流程图2
3.课程设计报告内容3
3.1字符串类的定义3
3.2字符串的处理3
3.3控制面板的设置3
3.4主函数4
4.源文件4
5.课程设计总结8
6.参考书目:
8
1课程设计目的
通过课程设计了解自己通过一学年的学习C++这门课到底学的怎么样,验证自己的学习成果,并进一步发现自己的不足并且改正.
2课程设计题目描述和要求
2.1课程题目
字符串类(数组型)
2.2课程要求
计算字符串的长度,初始化字符串,字符串比较,查找子串(从头开始或者从尾开始),字符串连接等基本功能。
2.3流程图
3.课程设计报告内容
3.1字符串类的定义
为设计的字符串(数组型)定义类:
classCstring
{
public:
Cstring();
Cstring(char*s);
voidsetValue(char*s);
voidsetValue(strings);
voidsetValue(Cstrings);
intgetLength();
intstrComp(Cstrings);
intsubSearch(Cstringsubstr);
intstrCon(Cstrings);
stringgetValue(){returnstr;}
private:
stringstr;
intlength;
};
为字符串类功能的实现定义的构造函数、成员函数和变量。
3.2字符串的处理
Cstring:
:
Cstring(){
str="";
length=0;
}
Cstring:
:
Cstring(char*s){
str=newchar[strlen(s)+1];
strcpy(str,s);
length=strlen(s);
str[length]='\0';
}对字符串的初始化为空并初始化为指定的字符数组。
3.3控制面板的设置
voidstate(){//提示说明
cout<<"**********字符串功能测试**********"<<<"0.提示"<<<"1.初始化"<<<"2.计算长度"<<<"3.字符串比较"<<<"4.查找子串"<<<"5.字符串连接"<<<"6.退出"<<<"**********************************"<<}
在控制面板中对各个功能简单的数字输入实现各功能的连接。
voidCstring:
:
setValue(char*s){//设置字符串
str=s;
length=0;
while(*(s++)!
='\0'){
length++;
}
}
voidCstring:
:
setValue(strings){
str=s;
length=0;
while(s[length++]!
='\0');
length--;
}
voidCstring:
:
setValue(Cstrings){
str=s.getValue();
length=s.getLength();
对Cstring类员函数进行定义实现对字符串的设置功能.
3.4主函数
整个主函数是对操作面板进行的操作,在主函数中定义两个string型字符串变量,用case语句中用cin语句输入两个字符串对字符串初始化,并用case语句中通过对类的成员函数和构造函数的调用实现计算字符串的长度,字符串比较,查找子串(从头开始或者从尾开始),字符串连接等基本功能。
4.源文件
#include
#include
usingnamespacestd;
classCstring
{
public:
Cstring();
Cstring(char*s);
voidsetValue(char*s);
voidsetValue(strings);
voidsetValue(Cstrings);
intgetLength();
intstrComp(Cstrings);
intsubSearch(Cstringsubstr);
intstrCon(Cstrings);
char*getValue(){returnstr;}
private:
char*str;
intlength;
};
Cstring:
:
Cstring(){//字符串初始化为空
str="";
length=0;
}
Cstring:
:
Cstring(char*s){//字符串初始化为指定的字符数组
str=newchar[strlen(s)+1];
strcpy(str,s);
length=strlen(s);
str[length]='\0';
}
voidCstring:
:
setValue(char*s){//设置字符串
str=newchar[strlen(s)+1];
strcpy(str,s);
length=0;
while(*(s++)!
='\0'){
length++;
}
str[length]='\0';
}
voidCstring:
:
setValue(strings){//设置字符串
length=0;
while(s[length++]!
='\0');
length--;
str=newchar[length+1];
for(inti=0;s[i]!
='\0';i++)
str[i]=s[i];
str[i]='\0';
}
voidCstring:
:
setValue(Cstrings){//设置字符串
length=s.getLength();
str=newchar[length+1];
strcpy(str,s.getValue());
str[length]='\0';
}
intCstring:
:
getLength(){//获取字符串的长度
returnlength;
}
intCstring:
:
strComp(Cstrings){//字符串比较
inti=0;
while(str[i]==(s.getValue())[i]&&ii++;
if(str[i]>s.getValue()[i])return1;
elseif(str[i]elsereturn0;
}
intCstring:
:
subSearch(Cstringsubstr){//查找字串
inti=0;
for(;iintj=0;
for(;jif(str[i+j]!
=(substr.getValue())[j])break;
if(j>=substr.getLength())returni+1;
}
if(i>=length)return-1;//返回-1代表查找失败
}
intCstring:
:
strCon(Cstrings){//字符串连接,将s连接到该字符串上
length=length+s.getLength();
char*pstr=str;
str=newchar[length+1];
cout<strcpy(str,pstr);//复制第一个串
strcat(str,s.getValue());//连接第二个串
deletepstr;
str[length]='\0';
returnlength;
}
voidstate(){//提示说明
cout<<"**********字符串功能测试**********"<<<"0.提示"<<<"1.初始化"<<<"2.计算长度"<<<"3.字符串比较"<<<"4.查找子串"<<<"5.字符串连接"<<<"6.退出"<<<"**********************************"<<}
intmain(){
Cstringstr1,str2;
strings;
state();
//char*c="dfgsag";
//str1.setValue(c);
charch;
do{
cout<cout<<"请作出选择:
";
cin>>ch;
switch(ch){
case'0':
state();break;
case'1':
cout<<"串1:
";
cin>>s;
str1.setValue(s);
cout<<"串2:
";
cin>>s;
str2.setValue(s);
break;
case'2':
cout<<"串1:
"<<<"长度:
"<cout<<"串2:
"<<<"长度:
"<break;
case'3':
if(str1.strComp(str2)>0)
cout<<"串1:
"<<<"比"<<"串2:
"<<<"大"<elseif(str1.strComp(str2)<0)
cout<<"串1:
"<<<"比"<<"串2:
"<<<"小"<elsecout<<"串1:
"<<<"与"<<"串2:
"<<<"一样大"<break;
case'4':
if(str1.subSearch(str2)!
=-1)
cout<<"串2:
"<<<"在"<<"串1:
"<<<"中,位置在第"<<<"个上"<elseif(str2.subSearch(str1)!
=-1)
cout<<"串1:
"<<<"在"<<"串2:
"<<<"中,位置在第"<<<"个上"<elsecout<<"二者互不包含"<break;
case'5':
Cstringst;
st.setValue(str1);
st.strCon(str2);
cout<<"串2连接到串1上是:
"<st.setValue(str2);
st.strCon(str1);
cout<<"串1连接到串2上是:
"<break;
}
}while(ch!
='6');
return0;
}
5.课程设计总结
在这个课程设计中,我知道了自己的很多不足之处,想把这门课学好不是一朝一夕的事情,而是要长期的坚持学习。
通过一年的学习,我已经掌握了部分编程知识,并且自己可以编出一些小程序,但是这样却是不够的,通过这次课程设计,我了解到自己在C++编程方面到底存在哪些不足,在比较大的程序方面,自己根本不知道从何入手,在做这个课程设计期间,我请教了我们班学编程比较好的同学,通过他们的帮助我把程序编完,程序的调试过程中出现了很多错误,有许多低级错误,我想这是因为我平时编程很少的原因,有一些我实在找不出来的错误就让同学指导一下,很快我自己编的程序就能运行了,我的程序满足了课程设计的要求。
通过这次课程设计我懂得了很多很多,对于学习编程,一定要经常的练习,否则任你书本上的理论知识再好在编程的时候都是不行的,掌握不够熟练,程序一大就不知道怎么办了,所以我在以后的日子里一定要多多进行一些C++方面的比较大的程序的设计,锻炼自己。
6.参考书目:
[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年
[2]钱能,《C++程序设计实验指导》,北京,清华大学出版社,2003年
[3]孙一平王庆宝,《C++程序设计学习辅导》,北京,清华大学出版社,2006年