沈阳理工大学通信工程C课程设计doc.docx
- 文档编号:1471619
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:26
- 大小:244.66KB
沈阳理工大学通信工程C课程设计doc.docx
《沈阳理工大学通信工程C课程设计doc.docx》由会员分享,可在线阅读,更多相关《沈阳理工大学通信工程C课程设计doc.docx(26页珍藏版)》请在冰豆网上搜索。
沈阳理工大学通信工程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类声明
//字符串一维数组
//串的长度
//外部接口
//字符串的构造
#include
{
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()//测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 沈阳 理工大学 通信工程 课程设计 doc