当前位置:编程学习 > C/C++ >>

诚请C++高手帮忙,非常感谢

1、设计一个Shape类,
a)Shape具有一个成员函数来计算面积,Shape具有数据成员,颜色,可通过成员函数设置和读取形状的颜色;
b)设计一个point类,用于表示点;
c)从shape类派生两个类,矩形和圆形;分别实现派生类的构造函数、析构函数和其他方法;矩形和圆形类中可使用point类来表示必要的对象;
d)创建shape的指针数组,并初始化这些指针指向不同的矩形或者圆形对象,并通过对指针数组的循环遍历,来实现对各种对象基本信息以及面积的输出;

2、设计一个员工类,
a)员工具有一个成员函数来计算薪水,员工具有数据成员,雇员号,姓名,银行账号
b)从员工类派生三个类,经理,销售职员,临时职员;分别实现派生类的构造函数、析构函数和其他方法;经理的薪水是按月固定发放;销售职员的薪水是底薪+销售额提成30%;临时职员薪水是按工作小时数*每小时工资标准;具体标准可自行定义;
c)创建员工的指针数组,并初始化这些指针指向不同的派生对象,并通过对指针数组的循环遍历,来实现对各种对象的基本信息以及薪水的输出;
答案:
第一题自已想想,很简单,主要是把类弄清了还有就是多态的问题,以及虚函数的使用,
这应该是你们作业题吧。第二题也是一样,我来回答第二题:
头文件:
class employee
{
protected:
char name[20];//姓名int individualEmpNo;//个人编号int grade;//级别float accumPay;//月薪总额static int employeeNo;//本公司职员编号目前最大值
public:employee();//构造函数~employee();//析构函数
virtual void pay()=0;//计算月薪函数(纯虚函数)
virtual void promote(int increment=0);//升级函数(虚函数)
void SetName(char *); //设置姓名函数char * GetName(); //提取姓名函数int GetindividualEmpNo(); //提取编号函数int Getgrade(); //提取级别函数float GetaccumPay(); //提取月薪函数
};
class technician:public employee{
private:
float hourlyRate;//每小时酬金
int workHours;//当月工作时数
public:
technician();//构造函数void SetworkHours(int wh); //设置工作时数函数void pay();//计算月薪函数void promote(int);//升级函数
};
class salesman:virtual public employee//兼职推销员类
{protected:
float CommRate;
float sales;
public:
salesman();
void Setsales(float sl);
void pay();//计算月薪函数
void promote(int);//升级函数
};
class manager:virtual public employee//经理类
{protected:
float monthlyPay;//固定月薪数
public:
manager();
void pay();
void promote(int);};
class salesmanager:public manager,public salesman //销售经理类
{
public:
salesmanager();//构造函数
void pay();//计算月薪函数
void promote(int);//升级函数
};
类成员方法实现:
由于规定写的字数太少,只能用图片了……
下面这个是程序入口:

void main(){manager m1;technician t1;salesmanager sm1;salesman s1;
char namestr[20]; //输入雇员姓名时首先临时存放在namestr中
employee *emp[4]={&m1,&t1,&sm1,&s1};
for(int i=0;i<4;i++){cout<<"请输下一个雇员的姓名:";cin>>namestr;
emp[i]->SetName(namestr);emp[i]->promote();}cout<<"请输入兼职技术人员"<<t1.GetName()<<"本月的工作时数:";int ww;cin>>ww;t1.SetworkHours(ww);cout<<"请输入销售经理"<<sm1.GetName()<<"所管辖部门本月的销售总额:";float sl;cin>>sl;sm1.Setsales(sl);cout<<"请输入推销员"<<s1.GetName()<<"本月的销售额:";cin>>sl;s1.Setsales(sl);
for(i=0;i<4;i++){emp[i]->pay();cout<<emp[i]->GetName()<<"编号"<<emp[i]->GetindividualEmpNo()<<"级别为"<<emp[i]->Getgrade()<<"级,本月工资"<<emp[i]->GetaccumPay()<<endl;
程序有点乱,这也是没办法的,因为只能写2000字,所以不得不挤在一起了……
有问题可以再找我……
一题可以照搬…
第一题自已想想,很简单,主要是把类弄清了还有就是多态的问题,以及虚函数的使用,这应该是你们作业题吧。第二题也是一样,我来回答第二题:头文件:class employee{protected:char name[20];//姓名int individualEmpNo;//个人编号int grade;//级别float accumPay;//月薪总额static int employeeNo;//本公司职员编号目前最大值public:employee();//构造函数~employee();//析构函数virtual void pay()=0;//计算月薪函数(纯虚函数)virtual void promote(int increment=0);//升级函数(虚函数)void SetName(char *);  //设置姓名函数char * GetName(); //提取姓名函数int GetindividualEmpNo();  //提取编号函数int Getgrade();  //提取级别函数float GetaccumPay();  //提取月薪函数};class technician:public employee{private:float hourlyRate;//每小时酬金int workHours;//当月工作时数public:technician();//构造函数void SetworkHours(int wh);  //设置工作时数函数void pay();//计算月薪函数void promote(int);//升级函数};class salesman:virtual public employee//兼职推销员类{protected:float CommRate;float sales;public:salesman();void Setsales(float sl); void pay();//计算月薪函数void promote(int);//升级函数};class manager:virtual public employee//经理类{protected:float monthlyPay;//固定月薪数public:manager();void pay();void promote(int);};class salesmanager:public manager,public salesman   //销售经理类{public:salesmanager();//构造函数void pay();//计算月薪函数void promote(int);//升级函数};类成员方法实现:由于规定写的字数太少,只能用图片了……下面这个是程序入口:void main(){manager m1;technician t1;salesmanager sm1;salesman s1;char namestr[20];           //输入雇员姓名时首先临时存放在namestr中employee *emp[4]={&m1,&t1,&sm1,&s1};for(int i=0;i<4;i++){cout<<"请输下一个雇员的姓名:";cin>>namestr;emp[i]->SetName(namestr);emp[i]->promote();}cout<<"请输入兼职技术人员"<<t1.GetName()<<"本月的工作时数:";int ww;cin>>ww;t1.SetworkHours(ww);cout<<"请输入销售经理"<<sm1.GetName()<<"所管辖部门本月的销售总额:";float sl;cin>>sl;sm1.Setsales(sl);cout<<"请输入推销员"<<s1.GetName()<<"本月的销售额:";cin>>sl;s1.Setsales(sl);for(i=0;i<4;i++){emp[i]->pay();cout<<emp[i]->GetName()<<"编号"<<emp[i]->GetindividualEmpNo()<<"级别为"<<emp[i]->Getgrade()<<"级,本月工资"<<emp[i]->GetaccumPay()<<endl;程序有点乱,这也是没办法的,因为只能写2000字,所以不得不挤在一起了……有问题可以再找我……一题可以照搬…

上一个:谁知道在哪能下Visual C++ 6.0?谢谢!
下一个:编写C++程序函数,求行列式的值

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,