沈阳理工大学通信工程C课程设计doc.docx

上传人:b****4 文档编号:1471619 上传时间:2022-10-22 格式:DOCX 页数:26 大小:244.66KB
下载 相关 举报
沈阳理工大学通信工程C课程设计doc.docx_第1页
第1页 / 共26页
沈阳理工大学通信工程C课程设计doc.docx_第2页
第2页 / 共26页
沈阳理工大学通信工程C课程设计doc.docx_第3页
第3页 / 共26页
沈阳理工大学通信工程C课程设计doc.docx_第4页
第4页 / 共26页
沈阳理工大学通信工程C课程设计doc.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

沈阳理工大学通信工程C课程设计doc.docx

《沈阳理工大学通信工程C课程设计doc.docx》由会员分享,可在线阅读,更多相关《沈阳理工大学通信工程C课程设计doc.docx(26页珍藏版)》请在冰豆网上搜索。

沈阳理工大学通信工程C课程设计doc.docx

沈阳理工大学通信工程C课程设计doc

封皮

(按学校要求手工填写)

成绩评定表

学生姓名

班级学号

专业

通信工程

课程设计题目

字符串类的设计与实现

组长签字:

成绩

日期

20年月曰

课程设计任务书

学院

信息科学与工程

专业

通信工程

学生姓名

班级学号

课程设计题目

字符串类的设计与实现

实践教学要求与任务

进行字符串类的设计,具体要求如下:

(1)使用堆分配存储表示实现字符串的存储;

(7)实现清空子串操作ClearString(&S);

(8)将上述功能作为类的成员函数实现,编写主函数测试上述功能

工作计划与进度安排

第17周:

分析题目,查阅课题相关资料,进行类设计、算法设计;

第18周:

程序的设计、调试与实现;

第19周:

程序测试与分析,撰写课程设计报告,进行答辩验收。

指导教师:

专业负责人:

学院教学副院长:

201年月曰

201年月曰

201年月曰

摘要

类是C++中十分重要的概念,它是实现面向对象程序设计的基础。

C++对C的改进,最重要的就是增加了“类”这样一种类型。

类是对象的抽象,而对象则是类的具体实例,如果一种计算机语言中不包含类,它就不能称为面向对象的语言。

一个有一定规模的C++程序是由许多类所构成的。

本文进行了对字符串类的设计与实现,该程序实现的主要目的是对串赋值操作、串比较操作、求串长操作、串连接操作、求子串操作和清空子串操作进行功能测试。

本文采用VisualC++6.0的控制台工程和MFC工程分别实现了对字符串的相应操作功能的测试,通过对两种程序的测试结果对比分析,表明:

本文字符串类的设计思想正确,两种程序均能正确执行对所需功能的测试操作。

关键词:

类;字符串类的设计与实现;控制台工程;MFC工程

1需求分析1..

2算法基本原理1...

3类设计1..

4基于控制台的应用程序3..

4.1类的接口设计3..

4.2类的实现4..

4.3主函数设计1..1.

4.4基于控制台的应用程序测试1..2

5基于MFC的应用程序15

5.1基于MFC勺应用程序设计15

5.1.1MFC程序界面设计15

5.1.2MFC程序代码设计17

5.2基于MFC勺应用程序测试22

结论2..4..

参考文献2..5..

1需求分析

(1)类是C++中十分重要的概念,它是实现面向对象程序设计的基础。

C++对C的改进,最重要的就是增加了“类”这样一种类型。

(2)类是对象的抽象,而对象则是类的具体实例,如果一种计算机语言中不包含类,它就不能称为面向对象的语言。

一个有一定规模的C++程序是由许多类所构成的。

(3)类是C++的灵魂,如果不真正掌握类,就不能真正掌握C++。

2算法基本原理

图2-1基本原理图

3类设计

从上面的算法分析可以看到,本设计的关键是类的成员函数的定义。

可以定

义一个字符数组类string,然后在类内声明类的成员函数。

字符数组类的各成员函数负责对输入的字符串进行按要求处理,输入的字符串用一个一维数组来存放,字符数组类string的数据成员包括数组str[N]和len。

字符数组类string的功能需要有实现串赋值操作StrAssign(&T,chars)、实现串比较操作StrCompare(S,T)实现求串长操作StrLength(S)、实现串连接操作Concat(&T,S1,S2)、实现求子串操作SubString(&Sub,S,pos,len和实现清空子串操作ClearString(&S)。

从问题的需要来看,字符数组类string的功能需要有实现串赋值操作

StrAssign(&T,chars)、实现串比较操作StrCompare(S,T)、实现求串长操作StrLength(S)、实现串连接操作Concat(&T,S1,S2)、实现求子串操作SubString(&Sub,S,pos,len和实现清空子串操作ClearString(&S)。

字符数组类string的组成如图1所示。

string

#str[N]:

char

#len:

int

+string(char*p)

+string()

+copy(char*s1,char*s2):

void

+copy(char*s):

void

+strset():

void+strout():

void+length():

int+StrAssign(char*s):

void+StrCompare(char*s):

int+StrLengh():

int+Concat(char*s):

void+SubString(char*s,inta,intb):

void土ClearString(char*s):

int图1string类的UML图形表示

在字符串类的设计与实现过程中,在字符数组类string的成员函数StrAssign(char*s)、StrCompare(char*s)、StrLengh()、Concat(char*s)、SubString(char*s,inta,intb)和ClearString(char*s)中,实现对所选择的测试功能进行测试的操作。

4基于控制台的应用程序

整个程序分为三个独立的文档,string.h文件中是字符数组类string的声明,string.cpp文件中包括类的成员函数实现文件;main.cpp文件包括程序的主函数,

主函数中定义了一个类string的对象,通过这个对象对字符串类的实现进行功能测试操作。

4.1类的接口设计

//string.h文件,实现类的声明

//string类声明

//字符串一维数组

//串的长度

//外部接口

//字符串的构造

#includeconstintN=200;intn,flag=0;classstring

{

private:

charstr[N];

intlen;

public:

string(char*p)

{

copy(str,p);

}

string(){};

voidcopy(char*s1,char*s2);

//字符串的输入

voidcopy(char*s);voidstrset()

{

cin>>str;

}

voidstrout()//字符串的输出

{

cout<

}

intlength();

voidStrAssign(char*s);

//串赋值

intStrCompare(char*s);

//串比较

intStrLengh();

//求串长

voidConcat(char*s);

//串连接

voidSubString(char*s,inta,intb);

//求子串

intClearString(char*s);

//清空子串

};

对字符数组类string的成员函数进行建立,类的成员是公有和私有类型,对于string类对象的外部模块来讲,类的私有成员是无法访问的。

在程序中,字符串一维数组和串的长度采用了动态内存分配技术,这些工作都是在类的构造函数中完成,它们的清理工作在析构函数中完成。

4.2类的实现

//string.cpp文件,类实现

#include"string.h"//包含类的声明头文件

//string类的实现

intstrlen(char*s)

{

inti=0;while(s[i++]!

='\0');

returni-1;

}

intstring:

:

length()

{

inti=0;

while(str[i++]!

='\0');returni-1;

}

voidstring:

:

StrAssign(char*s)

//串赋值

{

inti,k=length();

for(i=0;i

{

str[i]==s[i];

}

str[i]='\0';

}

intstring:

:

StrCompare(char*s)

//串比较

{

inti=0;

intk1,k2,t;

k1=strlen(s);k2=length();

if(k1

{t=k1;k1=k2;k2=t;}

for(i=0;i

{

if(s[i]

return1;

elseif(s[i]>str[i])

return-1;

}

return0;

}

intstring:

:

StrLengh()

{

inti=0;

while(str[i++]!

='\0');

returni-1;

}

voidstring:

:

Concat(char*s)

{

inti=0,k=length();

while(s[i]!

='\0')

{

str[k]=s[i];

k++;i++;

}

str[k]='\0';

}

voidstring:

:

SubString(char*s,inta,intb)

{

inti,k=0;

for(i=a-1;i

{

//求串长

//串连接

//求子串

str[k]=s[i];

 

k++;

str[k]='\0';

}

intstring:

:

ClearString(char*s)//清空子串

{

inti,k=strlen(s);

for(i=0;i

{s[i]=NULL;

}

return1;

}

voidshow()

{

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<<"输入有误,请重新输入"<

}

}

voidmenu()

//功能列表

{

cout<<"字符串类的设计与实现"<

cout<<"设计人:

司志磊"<

coutvv"学号:

1103060135"vvendl;

cout«"功能选择菜单:

"<

cout<<"1)串赋值\n"vv"2)串比较\n"<<"3)求串长\n"<<"4)串连接

\n"<<"5)求子串\n"<<"6)清空子串\n";

cout<<"请您输入相应功能的序号!

"<

voidc1()//测试功能1:

串赋值

{

strings;

chars1[N];

coutvv"您选择的功能是串赋值\n";

coutvv"请输入字符串,并以回车结束:

";

s.strset();

s.StrAssign(s1);

coutvv"串赋值为:

";

s.strout();

show();

}

voidc2()//测

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1