C++课程设计字符串类的设计与实现(共21页).doc
《C++课程设计字符串类的设计与实现(共21页).doc》由会员分享,可在线阅读,更多相关《C++课程设计字符串类的设计与实现(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上封 皮(按学校要求手工填写)课 程 设 计 任 务 书学院信息科学与工程专业通信工程学生姓名*学号*设计题目字符串类的设计与实现内容及要求:计算机处理的对象分为数值数据和非数值数据,字符串是最基本的非数值数据。其应用非常广泛,它是许多软件系统(如字符编辑、情报检索、词法分析、符号处理、自然语言翻译等系统)的操作对象。其重要性不言而喻。要求采用C+语言实现进行字符串类的设计,具体要求如下:(1)使用堆分配存储表示实现字符串的存储;(2)实现串赋值操作StrAssign(&T, chars);(3)实现串比较操作StrCompare(S,T);(4)实现求串长操作StrL
2、ength(S);(5)实现串连接操作Concat(&T,S1,S2)(6)实现求子串操作SubString(&Sub,S,pos,len)(7)实现清空子串操作ClearString(&S);(8)将上述功能作为类的成员函数实现,编写主函数测试上述功能。进度安排:第17周:分析题目,查阅课题相关资料,进行类设计、算法设计;第18周:程序的设计、调试与实现;第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。指导教师(签字):年 月 日学院院长(签字)年 月 日目 录专心-专注-专业1 需求分析(1) 计算机处理的对象分为数值数据和非数值数据,字符串是最基本的非数值数据。其应用非常广泛,
3、它是许多软件系统(如字符编辑、情报检索、词法分析、符号处理、自然语言翻译等系统)的操作对象。其重要性不言而喻。(2)字符串是字符的有限集合,可记作a=a1 an。其中a是字符串的名,单括号里的字符序列是字符串的值,单引号不是字符串的成分,其作用是为了避免变量名与常量混淆。ai(0i0,如果等于0,则称a为空串,记作:a=。 2 算法基本原理(1)字符串从结构上看是一种以字符为数据元素的线性表,从存储结构的不同可分为顺序表和链式存储结构,它们都适用于字符串,但由于要求的操作不同,为了提高运算效率所选用的存储结构也是不同的。对于字符串改动较频繁的一般用链式存储结构,而顺序存储结构能够高效的读取。所
4、以各有优点。本程序由于需要大量改动数据,理所当然的选择链式存储结构,其算法结构为: Typedef structChar *ch; /*若字符串为空,则按长度分配存储区,否则为NULL */Int length; /*字符串的长度*、(2)本题字符串要求用堆来分配字符串的存储空间,采用堆分配函数malloc,它的格式为T-ch=(char *)malloc(sizeof(char)*len,就会为字符串分配内存。(3)函数是有字符串类进行调用的,通过在主函数中定义字符串类的对象,作为函数的参数,对于需要改写对象的需要进行址传递,我们可以通过函数在主函数中的反映来观察他的执行状态。3 类设计4
5、详细设计整个程序分为三个独立的文档,Linequ.h文件中包括矩阵类Matrix和线性方程组类Linequ的声明,Linequ.cpp文件中包括这两个类的成员函数实现文件;main.cpp文件包括程序的主函数,主函数中定义了一个类Linequ的对象,通过这个对象求解一个四元线性方程组。4.1 类的接口设计/Linequ.h文件,实现类的声明#include #include using namespace std;class Matrix/基类Matrix声明public:/外部接口Matrix(int dims=2);/构造函数Matrix();/析构函数void SetMatrix(dou
6、ble *rmax);/矩阵赋初值void PrintM();/显示矩阵protected:int index;/方阵的行数double* MatrixA;/矩阵存放数组首地址;class Linequ:public Matrix/公有派生类Linequ声明public:/外部接口Linequ(int dims=2);/构造函数Linequ();/析构函数void SetLinequ(double *a, double *b);/方程赋值void PrintL();/显示方程int Solve();/全选主元高斯消去法求解方程void ShowX();/显示方程的解private:/私有数据d
7、ouble *sums;/方程右端项double *solu;/方程的解;经过公有派生,Linequ类获得了除构造函数、析构函数之外的Matrix类的全部成员,由于基类的成员是公有和保护类型,因此在派生类中的成员函数中,基类继承来的成员全部可以访问,而对于建立Linequ类对象的外部模块来讲,基类的保护成员是无法访问的。通过保护访问类型和公有的继承方式,实现了基类Matrix的数据的有效共享和可靠保护。在程序中,方程的系数矩阵、解以及右端项全部采用了动态内存分配技术,这些工作都是在基类、派生类的构造函数中完成,它们的清理工作在析构函数中完成。4.2 类的实现4.3 主函数设计int main(
8、)int a=1,p,len; MyString S; MyString st1; MyString st2; MyString sub; MyString T; char ch120; char cl; cout*欢迎进入字符串操作程序*endl;while (a!=0) cout-endl;cout请选择功能操作:endl;coutn1.字符串的赋值n2.字符串的长度n3.字符串的比较n4.字符串的连接n5.求字符串的子串n6.清空字符串n0.退出a; switch(a)case 0:cout*谢谢使用!祝您工作顺利!*endl;break;case 1: cout请输入用于赋值新字符串c
9、h1; InitString(&st1); StrAssign(&st1,ch1);cout字符串被赋的值为:; PrintString(st1);break ;case 2: cout请输入新字符串Sch1; InitString(&st1); StrAssign(&st1,ch1); cout长度为:StrLength(st1)endl;break;case 3: cout请输入要比较的两个字符串S pk Tendl; cout请输入第一个字符串st1(长度ch1; InitString(&st1); StrAssign(&st1,ch1); cout请输入第二个字符串st2(长度ch1;
10、 InitString(&st2); StrAssign(&st2,ch1); StrCompare(st1,st2); int flag=StrCompare(st1,st2); if(flag=0) cout字符串st1与st2相等0) cout字符串st1比st2大endl; else cout字符串st1比st2小endl; break ; case 4:cout请输入要连接的两个字符串S1 & S2endl; cout请输入第一个字符串(长度ch1; InitString(&st1); StrAssign(&st1,ch1); cout请输入第二个字符串(长度ch1; InitStr
11、ing(&st2); StrAssign(&st2,ch1); InitString(&T);Concat(&T,st1,st2);cout连接后的新字符串:endl;PrintString(T);break; case 5:cout请输入主串S(长度20):ch1; InitString(&S); StrAssign(&S,ch1); InitString(&sub); cout请输入起始位置p:p; cout请输入子串的长度len(请考虑主串的长度)len; cout所求子串为:endl; SubString(&sub,S,p,len); PrintString(sub); break;c
12、ase 6:cout确定要清空的字符串(Y/N)cl;if(cl=y|cl=Y) ClearString(&st1); ClearString(&st2); ClearString(&sub); ClearString(&T);cout字符串操作清除成功!endl;break;default:cout操作错误!请输入正确序号!endl; ; return 0;主函数的设计思路是通过定义mystring类的对象,然后通过生成的对象去调用相应的函数从而达到调试所编写的函数功能的目的。此主函数有着演示函数的要求,为了使它能够更灵活的进行函数的调用,首先设计了一个循环体,由整型变量a控制,当a=0时就
13、结束循环。而在循环体中又由switch(a)函数来控制,通过输入不同的a的值来控制不同的操作,即函数的演示。5 DOS界面程序运行结果及分析从它运行的界面可以看出,当进入函数调试状态时我们可也通过输入相应的操作序号来选择不同的操作。例如选择输入1将进入字符串的赋值操作。下面就来看一下相应的函数。输入1点回车键就被要求输入要赋得值,函数原型为StrAssign(&T, chars),执行后就把字符串chars赋给对象T了。输入2则进入字符串的长度函数,我们要测试它的功能只要输入一个字符串就可以加以验证。例如上图所示输入字符串为:sfdffgffh,则串长为9.选择4则进行字符串的比较功能,这个函
14、数需要读取相比较的两个字符串,通过对字符串的每个字符的逐个的比较有一个返回值返给调用函数。选择4则进行字符串的连接功能,把一个字符串连在另一个字符串的后面,如上图所示:第一个字符串为dfghgh,另一个字符串为fgghf,则连接的字符串为dfghghfgghf。输入5则选择求字符串子串的功能,这个函数需要输入一个主串,起始位置p和子串长度len,输入好参数后就可输出所求的子串了。因为上述字符串操作中都给字符串赋了值,所以需要字符串,回到初始状态。选择0则结束函数演示。5.1 程序运行结果图2 程序运行结果从图2中可以看出,程序能够实现全选主元高斯消去法对于线性方程组的求解,但是,对于求解结果的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 字符串 设计 实现 21
限制150内