C++课程设计字符串类的设计与实现 联系客服

发布时间 : 星期四 文章C++课程设计字符串类的设计与实现更新完毕开始阅读

3 类设计 4 详细设计

整个程序分为三个独立的文档,Linequ.h文件中包括矩阵类Matrix和线性方程组类Linequ的声明,Linequ.cpp文件中包括这两个类的成员函数实现文件;main.cpp文件包括程序的主函数,主函数中定义了一个类Linequ的对象,通过这个对象求解一个四元线性方程组。

4.1 类的接口设计

//Linequ.h文件,实现类的声明 #include #include using namespace std;

class Matrix { public: };

//外部接口

//构造函数 //析构函数

//矩阵赋初值

Matrix(int dims=2); ~Matrix();

//基类Matrix声明

void SetMatrix(double *rmax); void PrintM(); int index;

//显示矩阵

protected:

//方阵的行数

//矩阵存放数组首地址

double* MatrixA;

class Linequ:public Matrix //公有派生类Linequ声明 { public: };

经过公有派生,Linequ类获得了除构造函数、析构函数之外的Matrix类的全部成员,由于基类的成员是公有和保护类型,因此在派生类中的成员函数中,基类继承来的成员全部可以访问,而对于建立Linequ类对象的外部模块来讲,基类的保护成员是无法访问的。通过保护访问类型和公有的继承方式,实现了基类Matrix的数据的有效共享和可靠保护。在程序中,方程的系数矩阵、解以及右端项全部采用了动态内存分配技术,这些工作都是在基类、派生类的构造函数中完成,它们的清理工作在析构函数中完成。

//外部接口 //构造函数 //析构函数 //显示方程 //显示方程的解 //方程右端项 //方程的解

Linequ(int dims=2); ~Linequ(); void PrintL(); int Solve();

void SetLinequ(double *a, double *b); //方程赋值

//全选主元高斯消去法求解方程 //私有数据

void ShowX(); double *sums; double *solu;

private:

4.2 类的实现 4.3 主函数设计

int main() { int a=1,p,len; MyString S; MyString st1; MyString st2; MyString sub; MyString T; char ch1[20]; char cl;

cout<<\欢迎进入字符串操作程序

****************************\ while (a!=0) { cout<<\ cout<<\请选择功能操作:\ cout<<\字符串的赋值\\n2.字符串的长度\\n3.字符串的比较\\n4.字符串的连接\\n5.求字符串的子串\\n6.清空字符串\\n0.退出\ cin >>a; switch(a) { case 0: cout<<\谢谢使用!祝您工作顺利!*****************************\ case 1: cout<<\请输入用于赋值新字符串\ cin>>ch1;

InitString(&st1); StrAssign(&st1,ch1); cout<<\字符串被赋的值为:\ PrintString(st1);break ; case 2: cout<<\请输入新字符串S\ cin>>ch1;

InitString(&st1); StrAssign(&st1,ch1); cout<<\长度为:\ case 3:{ cout<<\请输入要比较的两个字符串S pk T\ cout<<\请输入第一个字符串st1(长度<20:)\ cin>>ch1;

InitString(&st1); StrAssign(&st1,ch1); cout<<\请输入第二个字符串st2(长度<20):\ cin>>ch1;

InitString(&st2); StrAssign(&st2,ch1); StrCompare(st1,st2); int flag=StrCompare(st1,st2); if(flag==0) {

cout<<\字符串st1与st2相等\ }

else if(flag>0) {

cout<<\字符串st1比st2大\ } else

{

cout<<\字符串st1比st2小\ } } break ; case 4:cout<<\请输入要连接的两个字符串S1 & S2\ cout<<\请输入第一个字符串(长度<20):\ cin>>ch1;

InitString(&st1); StrAssign(&st1,ch1); cout<<\请输入第二个字符串(长度<20):\ cin>>ch1;

InitString(&st2); StrAssign(&st2,ch1); InitString(&T); Concat(&T,st1,st2); cout<<\连接后的新字符串:\ PrintString(T); break; case 5: cout<<\请输入主串S(长度<20):\ cin>>ch1;

InitString(&S); StrAssign(&S,ch1); InitString(&sub); cout<<\请输入起始位置p:\ cin>>p;

cout<<\请输入子串的长度len(请考虑主串的长度)\ cin>>len;

cout<<\所求子串为:\ SubString(&sub,S,p,len); PrintString(sub); break; case 6:cout<<\确定要清空的字符串(Y/N)\ cin>>cl; if(cl=='y'||cl=='Y') { ClearString(&st1); ClearString(&st2); ClearString(&sub); ClearString(&T); }; cout<<\字符串操作清除成功!\