软件编程实训1 指导书(2)

2019-05-17 12:58

2、公司职员的信息管理程序设计

①. 定义员工类包含员工姓名、职工号、部门、工资、职位等基本信息,并完成带参

的构造函数。

②. 定义公司类,包含员工数、指向员工信息地址的指针数组、指向员工类的指针,

并完成添加员工、删除员工、显示员工、查找员工等成员函数。 ③. 动态分配的空间要在析构或者其它合适的地方释放空间。 参考员工类和公司类的定义:

5

class Staff { public: };

class Company { public:

Company(); Staff();

Staff(char * name1,char *no1,char *dep,double salary1,char*work1);

char name[16]; char no[6];

char department[16]; double salary; char work[16];

~Company();

bool AddStaff(char *name,char * no,char *dep,double salary,char *work); bool DeleteStaff(char *no); bool FindStaff(char * no); void DisplayAll();

private: };

6

int count; Staff *address[30]; Staff *Sta;

运行结果图参考:

3、集合类程序设计

①. 集合的概念 在数学中,我们把具有某些共同特征的元素构成的一个整体称为集合。

一个集合就是由同一种有序类型的一组数据元素所组成的,这一种有序类型称为该集合的基类型。

②. 集合中的元素可用数组存放,也可用链表存放

用数组存放时,集合中数据成员①元素个数②数组(定义时用最大值) 用链表存放时,集合中数据成员①元素个数②*指针(定义时指向结点类型) ③. 集合类的定义:可以使用数组或其它形式存放集合的元素,设定集合元素个数的

最大值并有一个存放当前集合元素个数的变量,也可以对集合的元素动态分配空间。

部分数据成员: int count; //数序中元素的个数 int a[MAX]; //存放数序的数组

部分成员函数: void addnum(int n); //向有序数组中添加元素 void delenum(int n); //从有序数组中查找元素并删除

7

numSet( ) {count=0;} //构造函数 void disp ( ); //输出有序数组 4、特殊计算器程序设计 ①. 复数的运算法则:

加法:(a+bi)+(c+di)=(a+c)+(b+d)i 减法:(a+bi)-(c+di)=(a-c)+(b-d)i 乘法:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i

除法:(a+bi)/(c+di)=((a+bi)*(c-di))/(c*c+d*d)=((ac+bd)+(bc-ad)i)/(c*c+d*d) ②. 矩阵:

矩阵类的定义:

所要做矩阵的加、减、乘运算对矩阵行数与列数的要求不同,矩阵的行数与列数应该是动态确定的,这时就需要在构造函数里根据给定的行数和列数参数用new动态分配空间,析构函数里用delete删除分配的空间,并要重新定义拷贝构造函数和对赋值运算符=进行重载,以避免分配的资源不能拷贝造成程序错误。

对如何给矩阵元素动态分配空间有两种方法,采用第一种方法在动态分配空间相对第一种略显复杂,但在进行矩阵类运算的重载时不需要转换行与列到一维数组,采用第二种方法动态分配空间简单些,但进行运算符重载时要进行行数与列数的对应转换,亦可采用其它方法。 第一种:

double **data; //定义二维矩阵数据数组指针 int rows,cols;//矩阵的行数,列数 //下面是如何在构造函数中分配空间 data = new double*[rows] for (i=0;i

data[i]=new double[cols]; for(i=0;i

for(j=0;j

data[i][j]=0; //每个元素都初始化为零,也可保持随机值。

//在析构函数中删除动态分配的空间时: ~Matrix()//析构函数

8

{

int i;

for(i=0;i

cout<<\析构函数被调用!\

}*/

第二种:对二维数组中的数据可以通过下标的转换变成对一维数组的处理,如二维数组a[rows][cols]和一维数组b[rows*cols]可以通过如下进行对应:a[i][j]对应b[(i-1)*cols+(j-1)] 矩阵的运算法则:

矩阵相加减就是两个行数和列数相同的二维数组相加减;两个矩阵相乘,其实就是两个二维数组,其中一个的行数等于另一个的列数,按矩阵相乘的法则进行运算。 ③. 有理数:

有理数的概念:任何一个有理数都可以写成分数m/n(m,n都是整数,且n≠0)的形式。在构造有理数对象时,若分子分母是可以约分的,应该进行约分的简化运算,同为负数的应该将结果转为正数,同时要注意处理分子为零的情况。

有理数运算法则:

加法:a/b+c/d=(a*d+b*c)/(b*d) 减法:a/b-c/d=(a*d-b*c)/(b*d) 乘法: (a/b)*(c/d)=(a*c)/(b*d) 除法:(a/b)/(c/d)=(a*d)/(b*c) ④. 集合:

集合的概念:在数学中,我们把具有某些共同特征的元素构成的一个整体称为集合。 一个集合就是由同一种类型的一组数据元素所组成的,这一种类型称为该集合的基类型(注意:集合中不能有重复数据)。

集合类的定义:可以使用数组或其它形式存放集合的元素,设定集合元素个数的最大值并有一个存放当前集合元素个数的变量,也可以对集合的元素动态分配空间。 集合运算:

交集:求出两个集合中的公共元素,用运算符*实现 并集:两个集合合并,去掉重复的元素,用运算符+实现

9


软件编程实训1 指导书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年上半年江苏省土地估价师《管理法规》:土地复垦规定试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: