文章目录
- 一、类模板,创建Employee类,数据成员包括:name(const型字符串类型),salary(模板类型)。成员函数包括:构造函数——对姓名和工资做初始化,成员值设置函数——修改成员的工资,成员值获取函数——分别获取成员姓名和工资,计算平均工资函数。
- 二、教师干部类。 设计两个基类:教师类(Teacher)、干部类(Cadre),采用多重继承派生出新类:Teacher_Cadre
- 三、小型公司人员管理包含两种员工类型:销售员和经理,他们有共同属性:姓名。编号、入职时间和工资。销售员另外还包括销售品类属性和销售量属性,经理还包括级别属性,从1级到3级,并且他们的工资计算方式不同,销售员工资=工龄*100+每件商品提成(每名销售员只销售一种商品)*销售额,经理的工资=工龄*200+固定工资(一级固定工资10K,每升一级加5K)。
- 总结
一、类模板,创建Employee类,数据成员包括:name(const型字符串类型),salary(模板类型)。成员函数包括:构造函数——对姓名和工资做初始化,成员值设置函数——修改成员的工资,成员值获取函数——分别获取成员姓名和工资,计算平均工资函数。
主函数:创建虚拟类型为int类型的张三对象,输出其工资和姓名,创建虚拟类型为float类型的李四对象,并通过修改工资函数将其工资修改为12345.6,输出其工资和姓名。
创建对象数组,参数初始化值对应如下表:
姓名 工资
张丽 2000
韩丽 5000
袁丽 6500
毛丽 3500
代码如下:
#include<iostream>
#include<string>
using namespace std;
template<class type>
class Employee
{
public:
const string name;
type salary;
public:
Employee(string mingzi="liuliuliu",type gongzi=1000):name(mingzi)
{
salary=gongzi;
}
setchengyuan()
{
cout<<"输入"<<name<<"的工资:"<<endl;
cin>>salary;
}
void chengyuanhuoqu()
{
cout<<name<<" "<<salary<<endl;
}
void pjz(Employee shuzu[],int n)
{
cout<<"低于:"<<endl;
int pinjun=0;
for(int i=0;i<4;i++)
{
pinjun+=shuzu[i].salary;
}
pinjun/=4;
for(int i=0;i<4;i++)
{
if(shuzu[i].salary<pinjun)
cout<<shuzu[i].name<<" "<<shuzu[i].salary<<endl;
}
}
};
main()
{
int pinjun=0;
Employee<int> zhangsan("张三");
Employee<float> lisi("李四");
lisi.setchengyuan();
lisi.chengyuanhuoqu();
Employee<int> shuzu[4]={
Employee<int>("张丽",2000),
Employee<int>("韩丽",5000),
Employee<int>("袁丽",6500),
Employee<int>("毛丽",3500)
};
shuzu[0].pjz(shuzu,4);
}
二、教师干部类。 设计两个基类:教师类(Teacher)、干部类(Cadre),采用多重继承派生出新类:Teacher_Cadre
(a)两个基类都包含:姓名、年龄、性别、地址、电话;
在Teacher类中包含:title(职称),在Cadre类中包含:post(职务),在Teacher_Cadre
中包含:wages(工资);
(b)两个基类都包含:display()函数,分别输出本类中的成员信息;
(c)在两个基类中的姓名、年龄、性别、地址和电话数据成员使用相同名字,在派生类中引用这些数据成员时,采用指定作用域的方式;
(d)在派生类Teacher_Cadre的成员函数Show()中调用Teacher类中的display()函数;
(e)使用对象数组保存输入的对象;
代码如下:
#include<iostream>
#include<string>
using namespace std;
class teacher
{
string name;
int age;
string xingbie;
string dizhi;
int dianhua;
string title;
public:
teacher(string a,int age,string xingbie,string dizhi,int dianhua,string title)
{
this->name=a;
this->age=age;
this->xingbie=xingbie;
this->dizhi=dizhi;
this->dianhua=dianhua;
this->title=title;
}
void display()
{
cout<<"teacher类中数据:"<<name<<","<<age<<","<<xingbie<<","<<dizhi<<","<<dianhua<<","<<title<<endl;
}
};
class cadre
{
string name;
int age;
string xingbie;
string dizhi;
int dianhua;
string post;
public:
cadre(string name,int age,string xingbie,string dizhi,int dianhua,string post)
{
this->name=name;
this->age=age;
this->xingbie=xingbie;
this->dizhi=dizhi;
this->dianhua=dianhua;
this->post=post;
}
void display()
{
cout<<"teacher类中数据:"<<name<<","<<age<<","<<xingbie<<","<<dizhi<<","<<dianhua<<","<<post<<endl;
}
};
class teachercadre : public teacher,public cadre
{
int wages;
public:
teachercadre(string a,int age,string xingbie,string dizhi,int dianhua,string b,int gongzi):teacher(a,age,xingbie,dizhi,dianhua,b),cadre(a,age,xingbie,dizhi,dianhua,b)
{
wages=gongzi;
}
void show()
{
teacher::display();
}
};
main()
{
teachercadre a[3]={
teachercadre("zhang",19,"男","不知道",111,"终极教师",200),
teachercadre("zhang",19,"男","不知道",222,"高级教师",2000),
teachercadre("cheng",20,"女","嘤嘤嘤",111,"终极教师",200)
};
for(int i=0;i<3;i++)
a[i].show();
}
三、小型公司人员管理包含两种员工类型:销售员和经理,他们有共同属性:姓名。编号、入职时间和工资。销售员另外还包括销售品类属性和销售量属性,经理还包括级别属性,从1级到3级,并且他们的工资计算方式不同,销售员工资=工龄*100+每件商品提成(每名销售员只销售一种商品)销售额,经理的工资=工龄200+固定工资(一级固定工资10K,每升一级加5K)。
已知不同品类商品的单件提成不同,对应关系如下表:
| 手机 | 电脑 | 打印机 | 相机 | 平板电脑 | 外设 |
| 2% | 0.8% | 3% | 2% | 3% | 8% |
| 5K | 8K | 2K | 3K | 2K | 1K |
代码如下:
#include<iostream>
#include<string>
using namespace std;
class xiaoshouyuan
{
private:
string name;
int bianhao;
int ruzhishijian;
float gongzi;
int xiaoshoupinlei;
int xiaoshouliang;
public:
void shezhi(string name,int bianhao,int ruzhishijian,int xiaoshoupinlei,int xiaoshouliang)
{
int i;
float f;
switch(xiaoshoupinlei)
{
case(1):i=5000,f=0.02;break;
case(2):i=8000,f=0.008;break;
case(3):i=2000,f=0.03;break;
case(4):i=3000,f=0.02;break;
case(5):i=2000,f=0.03;break;
case(6):i=1000,f=0.08;break;
}
this->name=name;
this->bianhao=bianhao;
this->xiaoshoupinlei=xiaoshoupinlei;
this->ruzhishijian=ruzhishijian;
this->xiaoshouliang=xiaoshouliang;
this->gongzi=this->ruzhishijian*100+f*i*xiaoshouliang;
}
void shuchu()
{
cout<<"这个销售员的情况:"<<name<<","<<bianhao<<","<<ruzhishijian<<","<<xiaoshoupinlei<<","<<xiaoshouliang<<","<<gongzi<<endl;
}
};
class jinli
{
private:
string name;
int bianhao;
int ruzhishijian;
int gongzi;
int jibie;
public:
void shezhi(string name,int bianhao,int ruzhishijian,int jibie)
{
this->name=name;
this->bianhao=bianhao;
this->ruzhishijian=ruzhishijian;
this->jibie=jibie;
this->gongzi=this->ruzhishijian*200+10000+(jibie-1)*5000;
}
void shuchu()
{
cout<<"这个经理的情况:"<<name<<","<<bianhao<<","<<ruzhishijian<<","<<jibie<<","<<gongzi<<endl;
}
};
main()
{
xiaoshouyuan a;
jinli b;
b.shezhi("A君",101,5,1);
b.shuchu();
a.shezhi("B君",111,2,1,1);
a.shuchu();
}
总结
基础知识,第三个可以应用简单工厂模式来写,比较精炼,不过懒得再写了。
4674

被折叠的 条评论
为什么被折叠?



